Browse Source

Merge remote-tracking branch 'origin/master'

liao-sea 11 months ago
parent
commit
fc05a6e9da

+ 10 - 0
h5app/src/api/company/index.ts

@@ -72,6 +72,16 @@ export function getCompanyList(params:any){
         isNew:true
     })
 }
+//根据企业名称模糊查询,获取企业
+export function getFirmNameLikeList(params:any){
+    return request({
+        url:'companyService/company/getFirmNameLikeList',
+        method:'get',
+        params
+    },{
+        isNew:true
+    })
+}
 //获取企业岗位信息
 export function getCompanyPostList(params:any){
     return request({

+ 169 - 0
h5app/src/components/companySelectionLike.vue

@@ -0,0 +1,169 @@
+<template>
+  <ion-button id="companySelectionLike" style="color: #02a6f1;font-size: 15px;" fill="clear" @click="onOpen()">选择
+  </ion-button>
+  <ion-page>
+    <ion-content class="ion-padding">
+      <ion-modal trigger="companySelectionLike" :is-open="isOpen" @willPresent="onRest()">
+        <ion-header class="header-theme2">
+          <ion-toolbar>
+            <ion-buttons slot="start">
+              <ion-icon :icon="arrowBackOutline" @click="onOpen()"></ion-icon>
+            </ion-buttons>
+            <ion-title>企业名称</ion-title>
+            <ion-buttons slot="end">
+              <ion-button fill="clear" @click="onConfirm()">确定</ion-button>
+            </ion-buttons>
+          </ion-toolbar>
+        </ion-header>
+        <ion-content class="ion-padding">
+          <ion-item class="search-item" style="--border-style: unset; --inner-padding-end: 0px;--padding-start: 0px;">
+            <ion-input placeholder="请输入企业名称" class="custom"
+                       v-model="searchParams.firmName"
+                       @input="reload()" :clear-on-edit="true"
+                       style="border: 1px solid #f2f2f5;border-radius: 14px;--padding-start: 10px;height: 35px;">
+              <ion-icon slot="start" :icon="searchOutline" aria-hidden="true"></ion-icon>
+            </ion-input>
+          </ion-item>
+          <div class="bw-vue-list">
+            <div class="list-content">
+              <ion-list>
+                <ion-item v-for="(record,key) in dataList" :key="key">
+                  <ion-label @click="onSelect(record)">
+                    <span v-html="formatStr(record.firmName)"></span>
+                  </ion-label>
+                </ion-item>
+              </ion-list>
+              <b-empty v-if="dataList.length<=0" :loading="loading"/>
+              <ion-infinite-scroll threshold="100px" @ionInfinite="onScroll($event)">
+                <ion-infinite-scroll-content
+                    :loadingText="pagination.total>pagination.current*pagination.pageSize?'正在加载...':'暂无更多'"
+                    loadingSpinner="bubbles">
+                </ion-infinite-scroll-content>
+              </ion-infinite-scroll>
+            </div>
+          </div>
+        </ion-content>
+      </ion-modal>
+    </ion-content>
+  </ion-page>
+</template>
+
+<script lang="ts">
+
+import {computed, defineComponent, reactive, ref} from 'vue';
+import {arrowBackOutline, searchOutline} from 'ionicons/icons';
+import {IonIcon} from '@ionic/vue';
+import BEmpty from "@/components/empty.vue";
+import {getFirmNameLikeList} from "@/api/company";
+
+export default defineComponent({
+  name: 'companySelectLike',
+  components: {IonIcon, BEmpty},
+  props: {},
+  setup(props, context) {
+    const total = ref(20);
+    const loading = ref(true);
+    const pagination = computed(() => ({
+      total: total,
+      current: searchParams.pageIndex,
+      pageSize: searchParams.pageSize
+    }));
+    const searchParams = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      firmName: '',
+    });
+    const isOpen = ref(false);
+    const dataList = ref<any>([]);
+    const resultInfo = reactive({value: '', text: ''})
+
+    const loadData = async function () {
+      loading.value = true;
+      getFirmNameLikeList(searchParams).then(data => {
+        dataList.value = dataList.value.concat(data.list);
+        total.value = data.total;
+      })
+      loading.value = false;
+    }
+
+    const reloadBool = ref(true);
+    const reload = () => {
+      searchParams.pageIndex = 1;
+      if (reloadBool.value == false) {
+        return;
+      }
+
+      reloadBool.value = false;
+      getFirmNameLikeList(searchParams).then(data => {
+        dataList.value = data.list;
+        total.value = data.total;
+        reloadBool.value = true;
+      })
+    }
+
+    const onScroll = (e: any) => {
+      setTimeout(() => {
+        e.target.complete();
+        if (pagination.value.total.value > pagination.value.current * pagination.value.pageSize) {
+          searchParams.pageIndex += 1;
+          loadData();
+        }
+      }, 500);
+    }
+
+    const onConfirm = () => {
+      if (searchParams.firmName) {
+        resultInfo.text = searchParams.firmName;
+        context.emit("resultInfo", resultInfo);
+      }
+      onOpen();
+    }
+
+    const onSelect = (item: any) => {
+      resultInfo.text = item.firmName;
+      resultInfo.value = item.professionID;
+      context.emit("resultInfo", resultInfo);
+      onOpen();
+    }
+
+    const onOpen = () => {
+      isOpen.value = !isOpen.value;
+    }
+
+    const onRest = () => {
+      dataList.value = [];
+      searchParams.firmName = '';
+      searchParams.pageIndex = 1;
+      resultInfo.text = '';
+      resultInfo.value = '';
+    }
+
+    const formatStr = (str: any) => {
+      if (!str) {
+        return "";
+      }
+
+      return str.replace(searchParams.firmName, '<span style="color: coral">' + searchParams.firmName + '</span>');
+    }
+
+    return {
+      searchOutline,
+      arrowBackOutline,
+      total,
+      loading,
+      isOpen,
+      dataList,
+      pagination,
+      searchParams,
+      onConfirm,
+      onSelect,
+      onOpen,
+      onScroll,
+      loadData,
+      reload,
+      onRest,
+      formatStr
+    }
+  }
+});
+</script>

+ 44 - 19
h5app/src/views/pages/company/edit.vue

@@ -28,11 +28,16 @@
           <div class="form-title">基本信息</div>
           <div class="form-input">
             <ion-label>企业名称<span class="danger">*</span></ion-label>
-            <ion-input placeholder="请输入企业名称" label-placement="stacked" :clear-input="true"
-                     v-model="dataModel.companyName" class="custom" :style="isAdd?'width: 78%;':''" >
-            </ion-input>
-            <ion-label v-if="isAdd" style="float:right;width:80px;color:#02A5F0FF;position: relative;bottom:34px;left:14px;"
-                       @click="onGetFirmByCompanyName">同步</ion-label>
+            <div>
+              <ion-input placeholder="请输入企业名称" label-placement="stacked" :style="{float: 'left',width:isAdd?'78%':'100%'}"
+                         @click="onOpenCompany" v-model="dataModel.companyName" class="custom" readonly >
+              </ion-input>
+              <ion-item v-if="isAdd" style="width:22%;float: right;padding:0px;margin: 0px;">
+                <company-selection-like ref="refCompanySelectionLike" @resultInfo="onResultInfo"></company-selection-like>
+              </ion-item>
+            </div>
+<!--            <ion-label v-if="isAdd" style="float:right;width:80px;color:#02A5F0FF;position: relative;bottom:34px;left:14px;"-->
+<!--                       @click="onGetFirmByCompanyName">同步</ion-label>-->
 <!--          <ion-note slot="error">企业名称不能为空</ion-note>-->
           </div>
 
@@ -315,6 +320,7 @@ import {getSysDictionaryList} from "@/api/system/dictionary";
 import dayjs from "dayjs";
 import IndustrySelection from "@/components/industrySelection.vue";
 import {getPosition} from "@/utils/position";
+import CompanySelectionLike from "@/components/companySelectionLike.vue";
 
 interface StepParams{
   name: string,
@@ -325,7 +331,7 @@ interface StepParams{
 
 export default defineComponent({
   name: 'CompanyEdit',
-  components:{IndustrySelection},
+  components:{IndustrySelection,CompanySelectionLike},
   setup() {
     const route = useRoute();
     const router = useRouter();
@@ -407,6 +413,7 @@ export default defineComponent({
     const streetList = ref<any>([]);
     const siteList = ref<any>([]);
     const shortAgeTypeList = ref<any>([]);
+    const refCompanySelectionLike = ref();
 
     // /** 选择的区域 */
     // const regionChecked= ref<string>('');
@@ -553,30 +560,32 @@ export default defineComponent({
     const onGetFirmByCompanyName = async function() {
       if(formState.dataModel.companyName){
         await setInfoLoadingOpen(true);
-        const matchedFirmInfo :any = await normalFirm(formState.dataModel.companyName);
+        let matchedFirmInfo :any = await normalFirm(formState.dataModel.companyName);
         if(matchedFirmInfo){
-          formState.dataModel.frName = matchedFirmInfo.frName;
-          formState.dataModel.registeredCapital = matchedFirmInfo.registeredCapital;
-          formState.dataModel.companyCode = matchedFirmInfo.companyCode;
-          formState.dataModel.insuredCount = matchedFirmInfo.insuredCount;
-          formState.dataModel.userMobile = matchedFirmInfo.userMobile;
-          formState.dataModel.companyEmail = matchedFirmInfo.companyEmail;
-          formState.dataModel.companyAddress = matchedFirmInfo.companyAddress;
-          formState.dataModel.businScope = matchedFirmInfo.businScope;
-          formState.dataModel.industryID = matchedFirmInfo.industryID;
-          formState.dataModel.industryName = matchedFirmInfo.industryName;
-          formState.dataModel.signInPoliticalArea = matchedFirmInfo.signInPoliticalArea;
-          formState.dataModel.establishmentTime = matchedFirmInfo.establishmentTime;
           await setInfoLoadingOpen(false);
           infoAlterData.title = "提示";
           infoAlterData.message = "同步成功!";
           await setInfoAlertOpen(true);
         }else{
+          matchedFirmInfo = {};
           await setInfoLoadingOpen(false);
           infoAlterData.title = "错误";
           infoAlterData.message = "查找不到该企业,请核实企业名称是否正确!";
           await setInfoAlertOpen(true);
         }
+
+        formState.dataModel.frName = matchedFirmInfo.frName;
+        formState.dataModel.registeredCapital = matchedFirmInfo.registeredCapital;
+        formState.dataModel.companyCode = matchedFirmInfo.companyCode;
+        formState.dataModel.insuredCount = matchedFirmInfo.insuredCount;
+        formState.dataModel.userMobile = matchedFirmInfo.userMobile;
+        formState.dataModel.companyEmail = matchedFirmInfo.companyEmail;
+        formState.dataModel.companyAddress = matchedFirmInfo.companyAddress;
+        formState.dataModel.businScope = matchedFirmInfo.businScope;
+        formState.dataModel.industryID = matchedFirmInfo.industryID;
+        formState.dataModel.industryName = matchedFirmInfo.industryName;
+        formState.dataModel.signInPoliticalArea = matchedFirmInfo.signInPoliticalArea;
+        formState.dataModel.establishmentTime = matchedFirmInfo.establishmentTime;
       }else{
         infoAlterData.title = "提示";
         infoAlterData.message = "请输入企业名称!";
@@ -607,6 +616,19 @@ export default defineComponent({
       }
     };
 
+    const onResultInfo = (data: any)=>{
+      formState.dataModel.companyName = data.text;
+      onGetFirmByCompanyName();
+    }
+
+    const onOpenCompany = () => {
+      if(!isAdd.value){
+        return;
+      }
+
+      refCompanySelectionLike.value.onOpen();
+    }
+
     const onBack = () => {
         router.push({path: './list', query: {reload:1}});
     }
@@ -698,6 +720,9 @@ export default defineComponent({
       isAdd,
       isShow,
       v$,
+      refCompanySelectionLike,
+      onOpenCompany,
+      onResultInfo,
       isLongDate,
       curStepData,
       stepList,

+ 44 - 19
h5app/src/views/pages/jobUserInfo/companyEdit.vue

@@ -26,11 +26,16 @@
           <div class="form-title">基本信息</div>
           <div class="form-input">
             <ion-label>企业名称<span class="danger">*</span></ion-label>
-            <ion-input placeholder="请输入企业名称" label-placement="stacked" :clear-input="true"
-                       v-model="dataModel.companyName" class="custom" :style="isAdd?'width: 78%;':''">
-            </ion-input>
-            <ion-label v-if="isAdd"  style="float:right;width:80px;color:#02A5F0FF;position: relative;bottom:34px;left:14px;"
-                       @click="onGetFirmByCompanyName">同步</ion-label>
+            <div>
+              <ion-input placeholder="请输入企业名称" label-placement="stacked" :style="{float: 'left',width:isAdd?'78%':'100%'}"
+                         @click="onOpenCompany" v-model="dataModel.companyName" class="custom" readonly >
+              </ion-input>
+              <ion-item v-if="isAdd" style="width:22%;float: right;padding:0px;margin: 0px;">
+                <company-selection-like ref="refCompanySelectionLike" @resultInfo="onResultInfo"></company-selection-like>
+              </ion-item>
+            </div>
+<!--            <ion-label v-if="isAdd"  style="float:right;width:80px;color:#02A5F0FF;position: relative;bottom:34px;left:14px;"-->
+<!--                       @click="onGetFirmByCompanyName">同步</ion-label>-->
             <!--          <ion-note slot="error">企业名称不能为空</ion-note>-->
           </div>
           <div class="form-input">
@@ -305,6 +310,7 @@ import {getSysDictionaryList} from "@/api/system/dictionary";
 import dayjs from "dayjs";
 import IndustrySelection from "@/components/industrySelection.vue";
 import {getPosition} from "@/utils/position";
+import CompanySelectionLike from "@/components/companySelectionLike.vue";
 
 interface StepParams{
   loginUserID: string,
@@ -313,7 +319,7 @@ interface StepParams{
 }
 export default defineComponent({
   name: "companyInfoEdit",
-  components:{IndustrySelection},
+  components:{IndustrySelection,CompanySelectionLike},
   setup() {
     const route = useRoute();
     const router = useRouter();
@@ -397,6 +403,7 @@ export default defineComponent({
     const streetList = ref<any>([]);
     const siteList = ref<any>([]);
     const shortAgeTypeList = ref<any>([]);
+    const refCompanySelectionLike = ref();
 
     const getCompanyModelList = async function(){
       const companyModelResult :any = await getSysDictionaryList("CompanyModel");
@@ -506,30 +513,32 @@ export default defineComponent({
     const onGetFirmByCompanyName = async function() {
       if(formState.dataModel.companyName){
         await setInfoLoadingOpen(true);
-        const matchedFirmInfo :any = await normalFirm(formState.dataModel.companyName);
+        let matchedFirmInfo :any = await normalFirm(formState.dataModel.companyName);
         if(matchedFirmInfo){
-          formState.dataModel.frName = matchedFirmInfo.frName;
-          formState.dataModel.registeredCapital = matchedFirmInfo.registeredCapital;
-          formState.dataModel.companyCode = matchedFirmInfo.companyCode;
-          formState.dataModel.insuredCount = matchedFirmInfo.insuredCount;
-          formState.dataModel.userMobile = matchedFirmInfo.userMobile;
-          formState.dataModel.companyEmail = matchedFirmInfo.companyEmail;
-          formState.dataModel.companyAddress = matchedFirmInfo.companyAddress;
-          formState.dataModel.businScope = matchedFirmInfo.businScope;
-          formState.dataModel.industryID = matchedFirmInfo.industryID;
-          formState.dataModel.industryName = matchedFirmInfo.industryName;
-          formState.dataModel.signInPoliticalArea = matchedFirmInfo.signInPoliticalArea;
-          formState.dataModel.establishmentTime = matchedFirmInfo.establishmentTime;
           await setInfoLoadingOpen(false);
           infoAlterData.title = "提示";
           infoAlterData.message = "同步成功!";
           await setInfoAlertOpen(true);
         }else{
+          matchedFirmInfo = {};
           await setInfoLoadingOpen(false);
           infoAlterData.title = "错误";
           infoAlterData.message = "查找不到该企业,请核实企业名称是否正确!";
           await setInfoAlertOpen(true);
         }
+
+        formState.dataModel.frName = matchedFirmInfo.frName;
+        formState.dataModel.registeredCapital = matchedFirmInfo.registeredCapital;
+        formState.dataModel.companyCode = matchedFirmInfo.companyCode;
+        formState.dataModel.insuredCount = matchedFirmInfo.insuredCount;
+        formState.dataModel.userMobile = matchedFirmInfo.userMobile;
+        formState.dataModel.companyEmail = matchedFirmInfo.companyEmail;
+        formState.dataModel.companyAddress = matchedFirmInfo.companyAddress;
+        formState.dataModel.businScope = matchedFirmInfo.businScope;
+        formState.dataModel.industryID = matchedFirmInfo.industryID;
+        formState.dataModel.industryName = matchedFirmInfo.industryName;
+        formState.dataModel.signInPoliticalArea = matchedFirmInfo.signInPoliticalArea;
+        formState.dataModel.establishmentTime = matchedFirmInfo.establishmentTime;
       }else{
         infoAlterData.title = "提示";
         infoAlterData.message = "请输入企业名称!";
@@ -560,6 +569,19 @@ export default defineComponent({
       }
     };
 
+    const onResultInfo = (data: any)=>{
+      formState.dataModel.companyName = data.text;
+      onGetFirmByCompanyName();
+    }
+
+    const onOpenCompany = () => {
+      if(!isAdd.value){
+        return;
+      }
+
+      refCompanySelectionLike.value.onOpen();
+    }
+
     const onBack = () => {
       router.push({path:'/jobUserInfo/index', query: {userId: curStepData.value.loginUserID,openId: curStepData.value.openID}});
     }
@@ -643,6 +665,9 @@ export default defineComponent({
       isAdd,
       isShow,
       v$,
+      refCompanySelectionLike,
+      onOpenCompany,
+      onResultInfo,
       isLongDate,
       curStepData,
       stepList,

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

@@ -7,10 +7,7 @@ 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.util.DateUtils;
@@ -58,6 +55,16 @@ public class CompanyController {
         return RespGenerstor.success(result);
     }
 
+    @ResponseBody
+    @GetMapping("/getFirmNameLikeList")
+    public BaseResponse<PageInfo<PcFirm>> getFirmNameLikeList(@RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,
+                                                              @RequestParam(required = false) String firmName) {
+
+        PageInfo<PcFirm> result = companyService.getFirmNameLikeList(pageIndex, pageSize, firmName);
+
+        return RespGenerstor.success(result);
+    }
+
     @ResponseBody
     @GetMapping("/getCompanyBySiteIDList")
     public BaseResponse<List<PcCompany>> getCompanyBySiteIDList(@RequestParam(required = false) String siteID) {

+ 3 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/CompanyCQuery.java

@@ -1,5 +1,6 @@
 package com.hz.employmentsite.mapper.cquery;
 
+import com.hz.employmentsite.model.PcFirm;
 import com.hz.employmentsite.vo.companyService.CompanyVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -13,4 +14,6 @@ public interface CompanyCQuery {
                             @Param("createUserId") String createUserId, @Param("workTime") String workTime,
                             @Param("curLoginUserSiteID") String curLoginUserSiteID, @Param("siteID") String siteID,
                             @Param("startDate") Date startDate, @Param("endDate") Date endDate);
+
+    List<PcFirm> getFirmNameLikeList(@Param("firmName")String firmName);
 }

+ 10 - 0
src/main/java/com/hz/employmentsite/services/impl/companyService/CompanyServiceImpl.java

@@ -80,6 +80,16 @@ public class CompanyServiceImpl implements CompanyService {
         return result;
     }
 
+    @Override
+    public PageInfo<PcFirm> getFirmNameLikeList(Integer pageIndex, Integer pageSize, String firmName) {
+        PageHelper.startPage(pageIndex, pageSize);
+
+        List<PcFirm> dataList = companyCQuery.getFirmNameLikeList(firmName);
+        PageInfo<PcFirm> result = new PageInfo(dataList);
+
+        return result;
+    }
+
     @Override
     public List<PcCompany> getCompanyBySiteIDList(String siteID) {
         PcCompanyExample exp = new PcCompanyExample();

+ 1 - 2
src/main/java/com/hz/employmentsite/services/impl/companyService/FirmServiceImpl.java

@@ -1,8 +1,7 @@
 package com.hz.employmentsite.services.impl.companyService;
 
 import com.hz.employmentsite.mapper.PcFirmMapper;
-import com.hz.employmentsite.model.PcFirmExample;
-import com.hz.employmentsite.model.PcFirmWithBLOBs;
+import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.companyService.FirmService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;

+ 3 - 0
src/main/java/com/hz/employmentsite/services/service/companyService/CompanyService.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.service.companyService;
 
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.model.PcCompany;
+import com.hz.employmentsite.model.PcFirm;
 import com.hz.employmentsite.model.PcSite;
 import com.hz.employmentsite.vo.companyService.AppCompanyPostVo;
 import com.hz.employmentsite.vo.companyService.CompanyVo;
@@ -18,6 +19,8 @@ public interface CompanyService {
                                 String createUserId, String workTime, String loginUserID,
                                 String siteID, Date startDate, Date endDate);
 
+    PageInfo<PcFirm> getFirmNameLikeList(Integer pageIndex, Integer pageSize, String PcFirm);
+
     List<PcCompany> getCompanyBySiteIDList(String siteID);
 
     Integer save(CompanyVo data, String userId);

+ 15 - 1
src/main/resources/mapping/cquery/CompanyCQuery.xml

@@ -73,5 +73,19 @@
         </if>
         order by company.CreateTime desc,postCount desc
     </select>
-
+    <select id="getFirmNameLikeList" resultType="com.hz.employmentsite.model.PcFirm">
+        select id,FirmName
+        from pc_firm
+        <where>
+            <choose>
+                <when test="firmName!=null and firmName!=''">
+                    and FirmName like Concat('%',#{firmName},'%')
+                </when>
+                <otherwise>
+                    and 1!=1
+                </otherwise>
+            </choose>
+        </where>
+        order by id
+    </select>
 </mapper>