Pārlūkot izejas kodu

feat: 按企业名称模糊搜索

zhangying 10 mēneši atpakaļ
vecāks
revīzija
a66fdf04fb

+ 11 - 4
src/main/java/com/hz/employmentsite/controller/companyService/CompanyController.java

@@ -7,12 +7,10 @@ import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.mapper.PcSiteMapper;
 import com.hz.employmentsite.mapper.PcSiteUserMapper;
-import com.hz.employmentsite.model.PcCompany;
-import com.hz.employmentsite.model.PcSite;
-import com.hz.employmentsite.model.PcSiteExample;
-import com.hz.employmentsite.model.PcSiteUserExample;
+import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.companyService.CompanyService;
+import com.hz.employmentsite.services.service.companyService.FirmService;
 import com.hz.employmentsite.util.DateUtils;
 import com.hz.employmentsite.util.ExcelHelper;
 import com.hz.employmentsite.vo.companyService.AppCompanyPostVo;
@@ -42,6 +40,9 @@ public class CompanyController {
     @Autowired
     private DateUtils dateUtils;
 
+    @Autowired
+    private FirmService firmService;
+
 
     @ResponseBody
     @GetMapping("/getList")
@@ -133,6 +134,12 @@ public class CompanyController {
         return RespGenerstor.success(companyVo);
     }
 
+    @GetMapping("/likeFirmByCompanyName")
+    public BaseResponse<List<PcCompany>> likeFirmByCompanyName(@RequestParam("companyName") String companyName) {
+        List<PcFirm> pcFirms = firmService.selectPropsByLikeName(companyName);
+        return RespGenerstor.success(pcFirms);
+    }
+
     @GetMapping("/export")
     public BaseResponse export(HttpServletResponse response, @RequestParam(required = false) Boolean isExport,
                                @RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") Integer pageSize,

+ 4 - 1
src/main/java/com/hz/employmentsite/mapper/PcFirmMapper.java

@@ -3,9 +3,10 @@ package com.hz.employmentsite.mapper;
 import com.hz.employmentsite.model.PcFirm;
 import com.hz.employmentsite.model.PcFirmExample;
 import com.hz.employmentsite.model.PcFirmWithBLOBs;
-import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface PcFirmMapper {
     long countByExample(PcFirmExample example);
 
@@ -34,4 +35,6 @@ public interface PcFirmMapper {
     int updateByPrimaryKeyWithBLOBs(PcFirmWithBLOBs row);
 
     int updateByPrimaryKey(PcFirm row);
+
+    List<PcFirm> selectByLikeName(@Param("companyName") String companyName);
 }

+ 12 - 0
src/main/java/com/hz/employmentsite/services/impl/companyService/FirmServiceImpl.java

@@ -1,6 +1,7 @@
 package com.hz.employmentsite.services.impl.companyService;
 
 import com.hz.employmentsite.mapper.PcFirmMapper;
+import com.hz.employmentsite.model.PcFirm;
 import com.hz.employmentsite.model.PcFirmExample;
 import com.hz.employmentsite.model.PcFirmWithBLOBs;
 import com.hz.employmentsite.services.service.companyService.FirmService;
@@ -24,4 +25,15 @@ public class FirmServiceImpl implements FirmService {
         }
         return pcFirms.get(0);
     }
+
+    /**
+     * 模糊查询
+     *
+     * @param companyName 企业名称
+     * @return 参数列表
+     */
+    @Override
+    public List<PcFirm> selectPropsByLikeName(String companyName) {
+        return pcFirmMapper.selectByLikeName(companyName);
+    }
 }

+ 11 - 0
src/main/java/com/hz/employmentsite/services/service/companyService/FirmService.java

@@ -1,7 +1,18 @@
 package com.hz.employmentsite.services.service.companyService;
 
+import com.hz.employmentsite.model.PcFirm;
 import com.hz.employmentsite.model.PcFirmWithBLOBs;
 
+import java.util.List;
+
 public interface FirmService {
     PcFirmWithBLOBs selectByCompanyName(String companyName);
+
+    /**
+     * 模糊查询
+     *
+     * @param companyName 企业名称
+     * @return 参数列表
+     */
+    List<PcFirm> selectPropsByLikeName(String companyName);
 }

+ 24 - 18
src/main/resources/mapping/PcFirmMapper.xml

@@ -641,24 +641,30 @@
             RegisteredCapital = #{registeredCapital,jdbcType=VARCHAR},
             PaidInCapital     = #{paidInCapital,jdbcType=VARCHAR},
             EstablishmentDate = #{establishmentDate,jdbcType=VARCHAR},
-            ExamineDate       = #{examineDate,jdbcType=VARCHAR},
-            OperatingTerm     = #{operatingTerm,jdbcType=VARCHAR},
-            HomeProvince      = #{homeProvince,jdbcType=VARCHAR},
-            HomeCity          = #{homeCity,jdbcType=VARCHAR},
-            HomeRegion        = #{homeRegion,jdbcType=VARCHAR},
-            LxMobile          = #{lxMobile,jdbcType=VARCHAR},
-            Email             = #{email,jdbcType=VARCHAR},
-            CompanyCode       = #{companyCode,jdbcType=VARCHAR},
-            RatepayerCode     = #{ratepayerCode,jdbcType=VARCHAR},
-            BusinessSignCode  = #{businessSignCode,jdbcType=VARCHAR},
-            OrgCode           = #{orgCode,jdbcType=VARCHAR},
-            InsuredCount      = #{insuredCount,jdbcType=VARCHAR},
-            FirmType          = #{firmType,jdbcType=VARCHAR},
-            Industry          = #{industry,jdbcType=VARCHAR},
-            EnterpriseName    = #{enterpriseName,jdbcType=VARCHAR},
-            SignAddress       = #{signAddress,jdbcType=VARCHAR},
-            LatestAddress     = #{latestAddress,jdbcType=VARCHAR},
-            Website           = #{website,jdbcType=VARCHAR}
+            ExamineDate      = #{examineDate,jdbcType=VARCHAR},
+            OperatingTerm    = #{operatingTerm,jdbcType=VARCHAR},
+            HomeProvince     = #{homeProvince,jdbcType=VARCHAR},
+            HomeCity         = #{homeCity,jdbcType=VARCHAR},
+            HomeRegion       = #{homeRegion,jdbcType=VARCHAR},
+            LxMobile         = #{lxMobile,jdbcType=VARCHAR},
+            Email            = #{email,jdbcType=VARCHAR},
+            CompanyCode      = #{companyCode,jdbcType=VARCHAR},
+            RatepayerCode    = #{ratepayerCode,jdbcType=VARCHAR},
+            BusinessSignCode = #{businessSignCode,jdbcType=VARCHAR},
+            OrgCode          = #{orgCode,jdbcType=VARCHAR},
+            InsuredCount     = #{insuredCount,jdbcType=VARCHAR},
+            FirmType         = #{firmType,jdbcType=VARCHAR},
+            Industry         = #{industry,jdbcType=VARCHAR},
+            EnterpriseName   = #{enterpriseName,jdbcType=VARCHAR},
+            SignAddress      = #{signAddress,jdbcType=VARCHAR},
+            LatestAddress    = #{latestAddress,jdbcType=VARCHAR},
+            Website          = #{website,jdbcType=VARCHAR}
         where id = #{id,jdbcType=INTEGER}
     </update>
+
+    <select id="selectByLikeName" resultType="com.hz.employmentsite.model.PcFirm">
+        select id, FirmName as firmName
+        from pc_firm
+        where FirmName like Concat('%', #{companyName}, '%') LIMIT 20;
+    </select>
 </mapper>

+ 10 - 0
vue/src/api/companyService/company.ts

@@ -72,3 +72,13 @@ export function normalFirmByCompanyName(companyName: string) {
     isNew: true
   })
 }
+
+export function likeFirmByCompanyName(companyName: string) {
+  return request({
+    url: 'companyService/company/likeFirmByCompanyName',
+    method: 'get',
+    params: {companyName}
+  }, {
+    isNew: true
+  })
+}

+ 59 - 6
vue/src/views/companyService/company/edit.vue

@@ -10,12 +10,32 @@
             name="companyName"
             :rules="[{ required: true, message: '请输入企业名称!' }]"
           >
-            <a-input v-model:value="dataModel.companyName" placeholder=""
-                     :class="{'companyNameIpt': operationType == 'add'}"/>
+            <a-select
+              v-if="operationType == 'add'"
+              v-model:value="dataModel.companyName"
+              :filter-option="false"
+              :not-found-content="firmNameFetching ? undefined : null"
+              show-search
+              :default-active-first-option="false"
+              :show-arrow="false"
+              placeholder="请输入企业名称"
+              :options="firmList"
+              @search="likeFindFirm"
+              :class="{'companyNameIpt': operationType == 'add'}"
+              :field-names="{
+                label:'firmName',
+                value:'firmName',
+              }"
+            >
+              <template v-if="firmNameFetching" #notFoundContent>
+                <a-spin size="small"/>
+              </template>
+            </a-select>
             <a-button v-if="operationType == 'add'" :loading="normalBtnLoading" style="margin-left: 10px"
                       :disabled="!dataModel.companyName"
                       @click="normalFirm">同步信息
             </a-button>
+            <a-input v-if="operationType == 'edit'" v-model:value="dataModel.companyName" placeholder=""/>
           </a-form-item>
         </a-col>
         <a-col :span="8">
@@ -392,13 +412,18 @@
 .ant-table-thead th:first-child{width:200px;}
 </style>
 <script lang="ts">
-import {defineComponent, reactive, ref, toRefs} from 'vue';
+import {defineComponent, reactive, ref, toRefs, watch} from 'vue';
 import {useRouter} from 'vue-router';
 import {useTabsViewStore} from '@/store/modules/tabsView';
 import type {SelectProps} from 'ant-design-vue';
 import BUploadFile from '@/components/file/uploadFile.vue';
 import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
-import {getCompanyById, normalFirmByCompanyName, saveCompany} from '@/api/companyService/company';
+import {
+  getCompanyById,
+  likeFirmByCompanyName,
+  normalFirmByCompanyName,
+  saveCompany
+} from '@/api/companyService/company';
 import {getSiteByID, getSiteList} from '@/api/baseSettings/siteInfo';
 import {getSysDictionaryList} from '@/api/system/dictionary';
 import {getInfo} from '@/api/account';
@@ -407,6 +432,7 @@ import {message} from "ant-design-vue";
 import {useUserStore} from "@/store/modules/user";
 import {get} from "@/api/common";
 import SelectLabel from "@/views/baseSettings/label/selectLabel.vue";
+import {debounce} from "lodash-es";
 
 interface FormState {
   dataModel: any;
@@ -443,6 +469,15 @@ export default defineComponent(
         {value: 0, name: '否'},
       ]);
 
+      const firmList = ref<Array<any>>([])
+      let lastFetchId = 0;
+      const firmNameFetching = ref(false)
+
+      watch(formState.dataModel.companyName, () => {
+        firmList.value = [];
+        firmNameFetching.value = false;
+      });
+
       const regionList = ref<SelectProps['options']>();
       const streetList = ref<SelectProps['options']>();
       const companyTypeList = ref<SelectProps['options']>();
@@ -670,9 +705,24 @@ export default defineComponent(
             getStreetList()
           })
         });
-
       };
 
+      // 模糊查询企业
+      const likeFindFirm = debounce(companyName => {
+        if (companyName) {
+          lastFetchId += 1;
+          const fetchId = lastFetchId;
+          firmList.value = [];
+          firmNameFetching.value = true;
+          likeFirmByCompanyName(companyName).then((result: any) => {
+            if (fetchId == lastFetchId) {
+              firmList.value = result;
+              firmNameFetching.value = false;
+            }
+          })
+        }
+      }, 500)
+
       return {
         ...toRefs(formState),
         loadData,
@@ -701,7 +751,10 @@ export default defineComponent(
         IndustryList,
         operationType,
         normalFirm,
-        normalBtnLoading
+        normalBtnLoading,
+        likeFindFirm,
+        firmNameFetching,
+        firmList
       }
     },
     mounted() {