Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/hz/employmentsite/services/impl/companyService/FirmServiceImpl.java
zhangying 10 месяцев назад
Родитель
Сommit
8ff0f4aaaf

+ 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,

+ 14 - 2
h5app/src/views/pages/company/editPost.vue

@@ -89,7 +89,7 @@
             <div class="form-select">
               <ion-label>工作性质</ion-label>
               <ion-select interface="action-sheet" placeholder="请选择工作性质" cancel-text="取消" name="workNatureID"
-                          id="workNatureID" v-model="dataModel.workNatureID" style="width: 100%;text-align: left;" @ionChange="onIsTrailChange">
+                          id="workNatureID" v-model="dataModel.workNatureID" style="width: 100%;text-align: left;" >
                 <ion-select-option v-for="(record,key) in workNatureList" :key="key"
                                    v-model:value="record.value">
                   {{ record.name }}
@@ -122,7 +122,7 @@
             <div class="form-input">
               <ion-label>试用期(月)</ion-label>
               <ion-input :disabled="!dataModel.isTrail" type="number" placeholder="请输入试用期月数" label-placement="stacked"
-                         v-model="dataModel.trailMonths" class="custom">
+                         v-model="dataModel.trailMonths" class="custom" @ionBlur="trailMonthsBlur" min="0">
               </ion-input>
             </div>
             <div class="form-input">
@@ -380,6 +380,17 @@ export default defineComponent({
       }
     }
 
+    function trailMonthsBlur() {
+      if (formState.dataModel.trailMonths!= null) {
+        if(!isStringInteger(formState.dataModel.trailMonths)){
+          formState.dataModel.trailMonths = Math.floor(formState.dataModel.trailMonths);
+          if(parseInt(formState.dataModel.trailMonths)<0){
+            formState.dataModel.trailMonths = 0;
+          }
+        }
+      }
+    }
+
     const ifInputAllValid = ()=>{
       let errorMessage = "";
       let hasMinSalary = false;
@@ -483,6 +494,7 @@ export default defineComponent({
       onOpenPost,
       onResultInfo,
       recruitCountBlur,
+      trailMonthsBlur,
       onIsTrailChange,
       onSetWorkCategoryID,
       onSave,

+ 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,

+ 87 - 65
h5app/src/views/pages/jobUserInfo/postEdit.vue

@@ -89,7 +89,7 @@
             <div class="form-select">
               <ion-label>工作性质</ion-label>
               <ion-select interface="action-sheet" placeholder="请选择工作性质" cancel-text="取消" name="workNatureID"
-                          id="workNatureID" v-model="dataModel.workNatureID" style="width: 100%;text-align: left;" @ionChange="onIsTrailChange">
+                          id="workNatureID" v-model="dataModel.workNatureID" style="width: 100%;text-align: left;" >
                 <ion-select-option v-for="(record,key) in workNatureList" :key="key"
                                    v-model:value="record.value">
                   {{ record.name }}
@@ -122,7 +122,7 @@
             <div class="form-input">
               <ion-label>试用期(月)</ion-label>
               <ion-input :disabled="!dataModel.isTrail" type="number" placeholder="请输入试用期月数" label-placement="stacked"
-                         v-model="dataModel.trailMonths" class="custom">
+                         v-model="dataModel.trailMonths" class="custom" @ionBlur="trailMonthsBlur">
               </ion-input>
             </div>
             <div class="form-input">
@@ -218,6 +218,10 @@ interface StepParams{
   loginUserID: string,
 }
 
+interface postModel {
+  dataModel: any;
+}
+
 export default defineComponent({
   name: 'PostEdit',
   components:{PostSelectionLike,WorkCategorySelection},
@@ -227,7 +231,7 @@ export default defineComponent({
     const isShow = ref<any>(false);
     const isEdit = ref<any>(false);
     const isCommit = ref<any>(false);
-    const formState = reactive({
+    const formState = reactive<postModel>({
       dataModel: {
         companyID:null,
         professionName:null,
@@ -299,6 +303,73 @@ export default defineComponent({
       formState.dataModel.workCategoryName = data.text;
     }
 
+    const onSave = async function (){
+      isCommit.value = true;
+      const isFormCorrect = await v$.value.$validate();
+      console.log("当前岗位信息",formState.dataModel);
+      if (!isFormCorrect) {
+        await presentAlert('请输入完整信息!');
+        return null;
+      }
+      ifInputAllValid();
+      formState.dataModel.loginUserID = curStepData.value.loginUserID;
+      savePost(formState.dataModel).then(result=>{
+        if(result){
+           router.push({path: "./postList", query: {reload:1,id:formState.dataModel.companyID,status: 3}});
+        }
+      })
+    }
+
+    const onResultInfo = (data: any)=>{
+      formState.dataModel.professionID = data.value;
+      formState.dataModel.professionName = data.text;
+    }
+
+    const onOpenPost = () => {
+      refPostSelectionLike.value.onOpen();
+    }
+
+    const back = () => {
+      router.push({path: "./postList", query: {reload:1,id:formState.dataModel.companyID,status: 2}});
+    }
+
+    const getWorkYearList = async function(){
+      const data :any = await getSysDictionaryList("WorkYearType");
+      workYearList.value = data;
+      console.log(workYearList.value);
+    }
+    const getCultureRankList = async function(){
+      const data:any = await getSysDictionaryList("CultureLevel");
+      cultureRankList.value = data;
+      console.log(cultureRankList.value);
+    }
+    const getWorkNationList = async function(){
+      const data:any = await getSysDictionaryList("WorkNature");
+      workNatureList.value = data;
+    }
+
+    const loadData = async (postID: any,companyID:any,loginUserID:any) => {
+      isCommit.value =false;
+      curStepData.value.loginUserID = loginUserID;
+      await getWorkYearList();
+      await getCultureRankList();
+      await getWorkNationList();
+      const reqData = await getPostByID(postID);
+      formState.dataModel = reqData;
+      formState.dataModel.companyID = companyID;
+      if(postID==null){
+        const curPostCompany :any = await getCompanyById(companyID,loginUserID);
+        formState.dataModel.welfare =  curPostCompany.bonus;
+      }
+      console.log("初始化岗位信息",formState.dataModel);
+    };
+
+    const onIsTrailChange = ()=>{
+      if(!formState.dataModel.isTrail){
+        formState.dataModel.trailMonths = 0;
+      }
+    }
+
     function isStringInteger(value: string) {
       const n = parseInt(value, 10);
       return n.toString() === value && Number.isInteger(n);
@@ -312,6 +383,17 @@ export default defineComponent({
       }
     }
 
+    function trailMonthsBlur() {
+      if (formState.dataModel.trailMonths!= null) {
+        if(!isStringInteger(formState.dataModel.trailMonths)){
+          formState.dataModel.trailMonths = Math.floor(formState.dataModel.trailMonths);
+          if(parseInt(formState.dataModel.trailMonths)<0){
+            formState.dataModel.trailMonths = 0;
+          }
+        }
+      }
+    }
+
     const ifInputAllValid = ()=>{
       let errorMessage = "";
       let hasMinSalary = false;
@@ -386,68 +468,6 @@ export default defineComponent({
       if(!isCommit.value){presentAlert(errorMessage);}
     }
 
-    const onSave = async function (){
-      isCommit.value = true;
-      const isFormCorrect = await v$.value.$validate();
-      console.log("当前岗位信息",formState.dataModel);
-      if (!isFormCorrect) {
-        await presentAlert('请输入完整信息!');
-        return null;
-      }
-      ifInputAllValid();
-      formState.dataModel.loginUserID = curStepData.value.loginUserID;
-      savePost(formState.dataModel).then(result=>{
-        if(result){
-           router.push({path: "./postList", query: {reload:1,id:formState.dataModel.companyID,status: 3}});
-        }
-      })
-    }
-
-    const onResultInfo = (data: any)=>{
-      formState.dataModel.professionID = data.value;
-      formState.dataModel.professionName = data.text;
-    }
-
-    const onOpenPost = () => {
-      refPostSelectionLike.value.onOpen();
-    }
-
-    const back = () => {
-      router.push({path: "./postList", query: {reload:1,id:formState.dataModel.companyID,status: 2}});
-    }
-
-    const getWorkYearList = async function(){
-      const data :any = await getSysDictionaryList("WorkYearType");
-      workYearList.value = data;
-      console.log(workYearList.value);
-    }
-    const getCultureRankList = async function(){
-      const data:any = await getSysDictionaryList("CultureLevel");
-      cultureRankList.value = data;
-      console.log(cultureRankList.value);
-    }
-
-    const getWorkNationList = async function(){
-      const data:any = await getSysDictionaryList("WorkNature");
-      workNatureList.value = data;
-    }
-
-    const loadData = async (postID: any,companyID:any,loginUserID:any) => {
-      isCommit.value =false;
-      curStepData.value.loginUserID = loginUserID;
-      await getWorkYearList();
-      await getCultureRankList();
-      await getWorkNationList();
-      const reqData = await getPostByID(postID);
-      formState.dataModel = reqData;
-      formState.dataModel.companyID = companyID;
-      if(postID==null){
-        const curPostCompany :any = await getCompanyById(companyID,loginUserID);
-        formState.dataModel.welfare =  curPostCompany.bonus;
-      }
-      console.log("初始化岗位信息",formState.dataModel);
-    };
-
     const reload = (postID: any,companyID:any,loginUserID:any) => {
       formState.dataModel.recruitCount = null;
       loadData(postID,companyID,loginUserID);
@@ -475,7 +495,9 @@ export default defineComponent({
       refPostSelectionLike,
       onOpenPost,
       onResultInfo,
+      onIsTrailChange,
       recruitCountBlur,
+      trailMonthsBlur,
       onSetWorkCategoryID,
       onSave,
       back,

+ 10 - 0
src/main/java/com/hz/employmentsite/controller/companyService/CompanyController.java

@@ -59,6 +59,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 - 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.*;
 import com.hz.employmentsite.model.PcFirm;
 import com.hz.employmentsite.model.PcFirmExample;
 import com.hz.employmentsite.model.PcFirmWithBLOBs;

+ 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>