Parcourir la source

web-求职意向管理-岗位推荐调整

liao-sea il y a 8 mois
Parent
commit
8c8a4487fa

+ 3 - 3
src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendMgtController.java

@@ -65,9 +65,9 @@ public class RecommendMgtController {
                                                     @RequestParam("jobHuntID") String jobHuntID, @RequestParam(required = false) String professionID,
                                                     @RequestParam(required = false) String companyName,@RequestParam(required = false) String inviteProfessionName, @RequestParam("type") Integer type,
                                                     @RequestParam(required = false) String parentProfessionID, @RequestParam(required = false) Integer cultureRank,
-                                                    @RequestParam(required = false) String workYear, @RequestParam(required = false) Integer minSalary,
-                                                    @RequestParam(required = false) Integer maxSalary) {
-        PageInfo<RecommendCompanyPostVo> result = recommendMgtService.getRecommendCompanyPostList(pageIndex, pageSize, jobHuntID, professionID, companyName,inviteProfessionName, type, parentProfessionID, cultureRank, workYear, minSalary, maxSalary);
+                                                    @RequestParam(required = false) Integer workYear, @RequestParam(required = false) Integer minSalary,@RequestParam(required = false) Integer maxSalary,
+                                                    @RequestParam(required = false) List<String> regionNameList,@RequestParam(required = false) List<String>  siteNameList) {
+        PageInfo<RecommendCompanyPostVo> result = recommendMgtService.getRecommendCompanyPostList(pageIndex, pageSize, jobHuntID, professionID, companyName,inviteProfessionName, type, parentProfessionID, cultureRank, workYear, minSalary, maxSalary,regionNameList,siteNameList);
         return RespGenerstor.success(result);
     }
 

+ 2 - 2
src/main/java/com/hz/employmentsite/mapper/cquery/RecommendMgtCQuery.java

@@ -39,8 +39,8 @@ public interface RecommendMgtCQuery {
     List<RecommendCompanyPostVo> getRecommendCompanyPostList(@Param("jobHuntID") String jobHuntID, @Param("professionID") String professionID,
                                                              @Param("companyName") String companyName,@Param("inviteProfessionName")String inviteProfessionName, @Param("type") Integer type,
                                                              @Param("parentProfessionID") String parentProfessionID, @Param("cultureRank") Integer cultureRank,
-                                                             @Param("workYear") String workYear, @Param("minSalary") Integer minSalary,
-                                                             @Param("maxSalary") Integer maxSalary);
+                                                             @Param("workYear") Integer workYear, @Param("minSalary") Integer minSalary, @Param("maxSalary") Integer maxSalary,
+                                                             @Param("regionNameList") String regionNameList, @Param("siteNameList") String siteNameList);
 
     /**
      * 获取推荐求职人员信息

+ 3 - 2
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendMgtServiceImpl.java

@@ -181,9 +181,10 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
     @Override
     public PageInfo<RecommendCompanyPostVo> getRecommendCompanyPostList(Integer page, Integer rows, String jobHuntID, String professionID,
                                                                         String companyName,String inviteProfessionName, Integer type, String parentProfessionID, Integer cultureRank,
-                                                                        String workYear,Integer minSalary,Integer maxSalary) {
+                                                                        Integer workYear,Integer minSalary,Integer maxSalary,List<String>  regionNameList,List<String> siteNameList) {
         PageHelper.startPage(page, rows);
-        List<RecommendCompanyPostVo> list = recommendMgtCQuery.getRecommendCompanyPostList(jobHuntID, professionID, companyName, inviteProfessionName, type,parentProfessionID,cultureRank,workYear,minSalary,maxSalary);
+
+        List<RecommendCompanyPostVo> list = recommendMgtCQuery.getRecommendCompanyPostList(jobHuntID, professionID, companyName, inviteProfessionName, type,parentProfessionID,cultureRank,workYear,minSalary,maxSalary,stringUtils.ListToInSql(regionNameList),stringUtils.ListToInSql(siteNameList));
         list.forEach(x -> {
             if (stringUtils.IsNullOrEmpty(x.recommendMgtID)) {
                 x.recommendMgtID = UUID.randomUUID().toString();

+ 4 - 3
src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendMgtService.java

@@ -3,6 +3,7 @@ package com.hz.employmentsite.services.service.jobUserManager;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.vo.jobUserManager.*;
 
+import java.security.SecureRandom;
 import java.util.Date;
 import java.util.List;
 
@@ -42,9 +43,9 @@ public interface RecommendMgtService {
      * @return
      * */
     PageInfo<RecommendCompanyPostVo> getRecommendCompanyPostList(Integer page, Integer rows, String jobHuntID,
-                                                                 String professionID, String companyName,String inviteProfessionName, Integer type,
-                                                                 String parentProfessionID, Integer cultureRank,
-                                                                 String workYear,Integer minSalary,Integer maxSalary);
+                                                                 String professionID, String companyName, String inviteProfessionName, Integer type,
+                                                                 String parentProfessionID, Integer cultureRank, Integer workYear,
+                                                                 Integer minSalary, Integer maxSalary, List<String>  regionNameList, List<String>  siteNameList);
 
 
     /**

+ 3 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/RecommendCompanyPostVo.java

@@ -7,6 +7,7 @@ import java.math.BigDecimal;
 @Data
 public class RecommendCompanyPostVo {
     public String recommendMgtID;
+    public String companyID;
     public String postID;
     public String companyName;
     public String professionName;
@@ -21,4 +22,6 @@ public class RecommendCompanyPostVo {
     public String contactMobile;
     public String cultureRankName;
     public String workYearName;
+    public String regionName;
+    public String siteName;
 }

+ 13 - 5
src/main/resources/mapping/cquery/RecommendMgtCQuery.xml

@@ -82,13 +82,15 @@
     <!--    推荐岗位信息-->
     <select id="getRecommendCompanyPostList"
             resultType="com.hz.employmentsite.vo.jobUserManager.RecommendCompanyPostVo">
-        select a.postid,b.companyname,c.professionname,a.recruitcount,a.starttime,a.endtime,b.companyAddress,
-        case when d.recommendmgtid is null then '未推荐' else '已推荐' end as isRecommend,
-        d.recommendMgtID,a.professionid,a.maxsalary,a.minsalary,
+        select a.postid,b.companyID,b.companyname,c.professionname,a.recruitcount,a.starttime,a.endtime,b.companyAddress,
+        case when d.recommendmgtid is null then '未推荐' else '已推荐' end as isRecommend,d.recommendMgtID,
+        a.professionid,a.maxsalary,a.minsalary,area.name as regionName,site.SiteName,
         (case when (a.contactMobile is null or a.contactMobile = '') then b.userMobile else a.contactMobile end) as contactMobile,
         dic1.`name` as culturerankname, dic2.`name` as workyearname
         from pc_post a
         left join pc_company b on a.CompanyID = b.CompanyID
+        left join (select * from area_code where lv = 3) area on b.RegionCode = area.code
+        left join (select SiteID,SiteName from pc_site) site on b.SiteID = site.SiteID
         left join pc_profession c on a.ProfessionID = c.ProfessionID
         left join pc_recommend_mgt d on a.PostID = d.PostID and d.JobHuntID = #{jobHuntID}
         left join (select `Value`,`Name` from sys_dictionary_item where DictionaryCode='CultureLevel') dic1 on
@@ -138,10 +140,10 @@
                 <otherwise>and 1=1</otherwise>
             </choose>
             <if test="cultureRank!=null and cultureRank!=''">
-                and a.CultureRank <![CDATA[>=]]> #{cultureRank}
+                and a.CultureRank = #{cultureRank}
             </if>
             <if test="workYear!=null and workYear!=''">
-                and CAST(dic2.`Code` as decimal(18,2)) <![CDATA[<=]]> 3.5
+                and a.workYear = #{workYear}
             </if>
             <choose>
                 <when test="minSalary!=null and maxSalary!=null">
@@ -155,6 +157,12 @@
                 </when>
                 <otherwise>and 1=1</otherwise>
             </choose>
+            <if test="regionNameList!=null and regionNameList!=''">
+                and area.name in (${regionNameList})
+            </if>
+            <if test="siteNameList!=null and siteNameList!=''">
+                and site.siteName in (${siteNameList})
+            </if>
         </where>
         order by a.CreateTime desc
     </select>

+ 19 - 12
vue/src/views/companyService/post/edit.vue

@@ -213,7 +213,7 @@
             <a-select
               ref="select"
               v-model:value="dataModel.workYear"
-              :options="WorkYearTypeList"
+              :options="workYearTypeList"
               :field-names="{ label: 'name', value: 'value' }"
             >
             </a-select>
@@ -313,6 +313,7 @@ import SelectLabel from "@/views/baseSettings/label/selectLabel.vue";
 import dayjs from "dayjs";
 import {getProfessionLikeList} from "@/api/jobUserManager/recommendMgt";
 import {debounce} from "lodash-es";
+import {getSysDictionaryList} from "@/api/system/dictionary";
 
 interface postModel {
   dataModel: any;
@@ -332,7 +333,7 @@ export default defineComponent(
       const isEdit = ref<boolean>(false);
 
       const cultureLevelList = ref<SelectProps['options']>();
-      const WorkYearTypeList = ref<SelectProps['options']>();
+      const workYearTypeList = ref<SelectProps['options']>();
       const jobHuntList = ref<SelectProps['options']>();
       const companyList = ref<SelectProps['options']>();
       const postStatusList = [{name: '启用', value: 1}, {name: '停用', value: 0}];
@@ -453,17 +454,20 @@ export default defineComponent(
         console.log("dsd1",postCompany.dataModel);
       });
 
-      get('system/dictionary/getDictionaryItemByCodeList', {code: 'CultureLevel'}).then(result => {
-        cultureLevelList.value = result;
-      });
+      const getCultureLevelList = async function () {
+        const data: any = await getSysDictionaryList("CultureLevel");
+        cultureLevelList.value = data;
+      }
 
-      get('system/dictionary/getDictionaryItemByCodeList', {code: 'WorkYearType'}).then(result => {
-        WorkYearTypeList.value = result;
-      });
+      const getWorkYearTypeList = async function () {
+        const data: any = await getSysDictionaryList("WorkYearType");
+        workYearTypeList.value = data;
+      }
 
-      get('system/dictionary/getDictionaryItemByCodeList', {code: 'WorkNature'}).then(result => {
-        jobHuntList.value = result;
-      });
+      const getJobHuntList = async function () {
+        const data: any = await getSysDictionaryList("WorkNature");
+        jobHuntList.value = data;
+      }
 
       get('companyService/company/getList', {pageIndex: 1, pageSize: 9999}).then(result => {
         companyList.value = result.list;
@@ -529,6 +533,9 @@ export default defineComponent(
 
       const loadData = (id: any) => {
         isEdit.value = id != null;
+        getWorkYearTypeList();
+        getCultureLevelList();
+        getJobHuntList();
         getFirstWorkCategoryList();
         getFirstProfessionList();
         getPostByID(id).then(result => {
@@ -653,7 +660,7 @@ export default defineComponent(
         postStatusList,
         trialStatusList,
         cultureLevelList,
-        WorkYearTypeList,
+        workYearTypeList,
         postCompany,
         isEdit,
         jobHuntList,

+ 126 - 0
vue/src/views/jobUserManager/jobhunt/companyDetail.vue

@@ -0,0 +1,126 @@
+<template>
+    <a-modal
+      :width="1200"
+      v-model:visible="visible"
+      title="查看企业信息"
+      :closable="true"
+      :keyboard="false"
+      :mask-closable="true"
+      ok-text="确定"
+      @ok="onCommit"
+    >
+      <a-divider orientation="left">企业基础信息</a-divider>
+      <a-descriptions bordered>
+        <a-descriptions-item label="统一社会信用代码">{{ dataModel.companyCode }}</a-descriptions-item>
+        <a-descriptions-item label="企业名称">{{ dataModel.companyName }}</a-descriptions-item>
+        <a-descriptions-item label="所属驿站">{{ dataModel.SiteName }}</a-descriptions-item>
+        <a-descriptions-item :span="2" label="企业办公地址">{{ dataModel.companyAddress }}</a-descriptions-item>
+        <a-descriptions-item label="企业联系人">{{ dataModel.userName }}</a-descriptions-item>
+        <a-descriptions-item label="企业联系电话">{{ dataModel.userMobile }}</a-descriptions-item>
+        <a-descriptions-item label="企业状态">{{ dataModel.recordStatusName }}</a-descriptions-item>
+        <a-descriptions-item label="是否缺工">{{ dataModel.isShortage == 0 ? '否' : '是' }}</a-descriptions-item>
+        <a-descriptions-item label="企业所在经度">{{ dataModel.longitude }}</a-descriptions-item>
+        <a-descriptions-item label="企业所在纬度">{{ dataModel.latitude }}</a-descriptions-item>
+        <a-descriptions-item label="企业成立日期">
+          {{ dataModel.establishmentTime ? dayjs(dataModel.establishmentTime).format('YYYY-MM-DD') : '' }}
+        </a-descriptions-item>
+        <a-descriptions-item label="注册资本">
+          {{ dataModel.registeredCapital }}
+          <span v-if="dataModel.registeredCapital != null">
+          万元
+        </span>
+        </a-descriptions-item>
+        <a-descriptions-item label="注册地行政区划">{{ dataModel.signInPoliticalAreaName }}</a-descriptions-item>
+        <a-descriptions-item label="所属行业">{{ dataModel.industryName }}</a-descriptions-item>
+        <a-descriptions-item label="所属产业分类">{{ dataModel.estateCategoryName }}</a-descriptions-item>
+        <a-descriptions-item label="企业标签">{{ dataModel.tagName }}</a-descriptions-item>
+        <a-descriptions-item :span="3" label="官网网址">{{ dataModel.website }}</a-descriptions-item>
+        <a-descriptions-item :span="3" label="企业福利">{{ dataModel.bonus }}</a-descriptions-item>
+        <a-descriptions-item label="最后更新人">{{ dataModel.modifyUserName }}</a-descriptions-item>
+        <a-descriptions-item label="最后更新时间">
+          {{ dataModel.modifyTime ? dayjs(dataModel.modifyTime).format('YYYY-MM-DD') : '' }}
+        </a-descriptions-item>
+      </a-descriptions>
+
+      <a-divider orientation="left">其他信息</a-divider>
+      <a-descriptions bordered>
+        <a-descriptions-item label="法定代表人(负责人)">{{ dataModel.frName }}</a-descriptions-item>
+        <a-descriptions-item label="营业执照有效期">
+          {{ dataModel.validDate ? dayjs(dataModel.validDate).format('YYYY-MM-DD') : '' }}
+        </a-descriptions-item>
+        <a-descriptions-item label="企业邮箱">{{ dataModel.companyEmail }}</a-descriptions-item>
+        <a-descriptions-item label="经济类型">{{ dataModel.companyTypeName }}</a-descriptions-item>
+        <a-descriptions-item label="所属县区">{{ dataModel.regionName }}</a-descriptions-item>
+        <a-descriptions-item label="所属街道">{{ dataModel.streetName }}</a-descriptions-item>
+        <a-descriptions-item label="企业规模">{{ dataModel.companyModel }}</a-descriptions-item>
+        <a-descriptions-item label="用工情况(人)">{{ dataModel.workSituation }}</a-descriptions-item>
+        <a-descriptions-item label="参保人数(人)">{{ dataModel.insuredCount }}</a-descriptions-item>
+        <a-descriptions-item :span="3" label="标签">
+          <a-button style="margin: 0px 5px 5px 0px;color: black;border: 1px solid rgb(217, 217, 217);" v-for="item in dataModel.listLabel">
+            {{ item.labelName }}
+          </a-button>
+        </a-descriptions-item>
+        <a-descriptions-item :span="3" label="经营范围">{{ dataModel.businScope }}</a-descriptions-item>
+        <a-descriptions-item :span="3" label="企业简介">{{ dataModel.companyDesc }}</a-descriptions-item>
+      </a-descriptions>
+      <a-divider orientation="left">附件照片</a-divider>
+      <b-upload-file :fileRefId="dataModel.companyID" :readonly="true" :multiple="true" style="width: 100%;"
+                     :setFileList="setFileList" :accept="'.pdf,.png,.jpg'"></b-upload-file>
+    </a-modal>
+</template>
+<script lang="ts">
+import {getCompanyById} from "@/api/companyService/company";
+import {defineComponent, reactive, ref, toRefs} from "vue";
+import BUploadFile from "@/components/file/uploadFile.vue";
+import dayjs from "dayjs";
+
+interface companyModel {
+  dataModel: any;
+}
+
+export default defineComponent({
+  props: {
+    loadData: {
+      type: Function,
+      default: null
+    }
+  },
+  components:{BUploadFile},
+  setup() {
+    // 企业信息
+    const companyInfo = reactive<companyModel>({dataModel:{}});
+    // 文件数据
+    const fileList = ref();
+    const visible = ref(false);
+
+    //数据加载
+    const show = async function (id: any) {
+      getCompanyById(id, "").then(result => {
+        companyInfo.dataModel = result;
+        visible.value = true;
+      });
+    }
+
+    //设置文件列表
+    const setFileList =(files) =>{
+      fileList.value = files;
+    };
+
+    const onCommit = () => {
+      visible.value = false;
+    }
+    return {
+      ...toRefs(companyInfo),
+      visible,
+      dayjs,
+      show,
+      setFileList,
+      onCommit,
+    };
+  },
+  created() {
+
+  }
+})
+</script>
+

+ 1 - 1
vue/src/views/jobUserManager/jobhunt/index.vue

@@ -410,7 +410,7 @@ export default defineComponent({
 
     const onRecommendCompanyPost = (item) => {
       recommendRef.value.show(item.professionID, item.professionName, item.jobHuntID, item.jobUserName, 0,
-        item.parentProfessionID, item.cultureRank, item.workYear, item.minSalary, item.maxSalary, item.jobUserID, "推荐企业岗位");
+        item.parentProfessionID, item.jobUserID, "推荐企业岗位");
     }
 
     const onRecommendInfo = (item) => {

+ 139 - 0
vue/src/views/jobUserManager/jobhunt/postDetail.vue

@@ -0,0 +1,139 @@
+<template>
+  <a-modal
+    :width="1200"
+    v-model:visible="visible"
+    title="查看岗位信息"
+    :closable="true"
+    :keyboard="false"
+    :mask-closable="true"
+    ok-text="确定"
+    @ok="onCommit"
+  >
+    <a-divider orientation="left">岗位基础信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="企业名称">{{ dataModel.companyName }}</a-descriptions-item>
+      <a-descriptions-item label="岗位名称">{{ dataModel.professionName }}</a-descriptions-item>
+      <a-descriptions-item label="工种名称">{{ dataModel.workCategoryName }}</a-descriptions-item>
+      <a-descriptions-item label="招聘人数">{{ dataModel.recruitCount }}</a-descriptions-item>
+      <a-descriptions-item label="招聘日期">
+        {{ dataModel.startTime ? dayjs(dataModel.startTime).format('YYYY-MM-DD') : '' }}
+        至
+        {{ dataModel.endTime ? dayjs(dataModel.endTime).format('YYYY-MM-DD') : '' }}
+      </a-descriptions-item>
+      <a-descriptions-item :span="3" label="工作地点">{{ dataModel.jobPlace }}</a-descriptions-item>
+      <a-descriptions-item label="联系人姓名">{{ dataModel.contactName }}</a-descriptions-item>
+      <a-descriptions-item label="联系人电话">{{ dataModel.contactMobile }}</a-descriptions-item>
+      <a-descriptions-item label="联系人邮箱">{{ dataModel.contactEmail }}</a-descriptions-item>
+      <a-descriptions-item label="工作性质">{{ dataModel.workNatureName }}</a-descriptions-item>
+      <a-descriptions-item label="最后更新人">{{ dataModel.modifyUserName }}</a-descriptions-item>
+      <a-descriptions-item label="最后更新时间">
+        {{
+          dataModel.modifyTime ? dayjs(dataModel.modifyTime).format('YYYY-MM-DD') : ''
+        }}
+      </a-descriptions-item>
+    </a-descriptions>
+    <a-divider orientation="left">其他信息</a-divider>
+    <a-descriptions bordered>
+      <a-descriptions-item label="岗位月薪(元)">
+        {{ showSalary(dataModel.minSalary, dataModel.maxSalary) }}
+      </a-descriptions-item>
+      <a-descriptions-item label="是否有试用期">{{ dataModel.isTrail ? '是' : '否' }}</a-descriptions-item>
+      <a-descriptions-item label="试用期(月)">{{ dataModel.trailMonths }}</a-descriptions-item>
+      <a-descriptions-item label="试用期月薪(元)">
+        {{ showSalary(dataModel.trailMinSalary, dataModel.trailMaxSalary) }}
+      </a-descriptions-item>
+      <a-descriptions-item label="工作年限要求">{{ workYear }}</a-descriptions-item>
+      <a-descriptions-item label="学历要求">{{ dataModel.cultureLevelName }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="标签">
+        <a-button style="margin: 0px 5px 5px 0px;color: black;border: 1px solid rgb(217, 217, 217);" v-for="item in dataModel.listLabel">
+          {{ item.labelName }}
+        </a-button>
+      </a-descriptions-item>
+      <a-descriptions-item :span="3" label="福利待遇">{{ dataModel.welfare }}</a-descriptions-item>
+      <a-descriptions-item :span="3" label="其他要求">{{ dataModel.postDesc }}</a-descriptions-item>
+    </a-descriptions>
+  </a-modal>
+</template>
+
+<script lang="ts">
+import {getPostByID} from "@/api/companyService/post";
+import {computed, defineComponent, reactive, ref, toRefs} from "vue";
+import dayjs from "dayjs";
+import BUploadFile from "@/components/file/uploadFile.vue";
+
+interface postModel {
+  dataModel: any;
+}
+
+export default defineComponent({
+  props: {
+    loadData: {
+      type: Function,
+      default: null
+    }
+  },
+  components:{BUploadFile},
+  setup() {
+    const visible = ref(false);
+    // 岗位信息
+    const postInfo = reactive<postModel>({dataModel:{}});
+    // 工作年限数据
+    const WorkYearTypeList = ref<Array<any>>([])
+
+    // 获取工作年限
+    const workYear = computed(() => {
+      if (postInfo.dataModel.workYear && WorkYearTypeList.value.length > 0) {
+        const item = WorkYearTypeList.value.find(item => item.value == postInfo.dataModel.workYear)
+        if (item) {
+          return item.name;
+        }
+      }
+      return postInfo.dataModel.workYear;
+    })
+
+    // 数据加载
+    const show = async function (id: any)  {
+      getPostByID(id).then(result => {
+        postInfo.dataModel = result;
+        visible.value = true;
+      });
+    }
+
+    const showSalary = (minSalary: any, maxSalary: any) => {
+      if (minSalary != null) {
+        if (maxSalary != null) {
+          return minSalary.toString() + "-" + maxSalary.toString();
+        } else {
+          return "≥" + minSalary.toString();
+        }
+      } else {
+        if (maxSalary != null) {
+          return "≤" + maxSalary.toString();
+        } else {
+          return "";
+        }
+      }
+    }
+
+    const onCommit = ()=>{
+      visible.value = false;
+    }
+
+    return {
+      ...toRefs(postInfo),
+      visible,
+      dayjs,
+      show,
+      workYear,
+      showSalary,
+      onCommit,
+    };
+  },
+  created() {
+
+  }
+})
+</script>
+<style scoped>
+
+</style>

+ 177 - 57
vue/src/views/jobUserManager/jobhunt/recommend.vue

@@ -52,8 +52,8 @@
                 searchParams.companyName = null;
                 searchParams.inviteProfessionName = null;
                 searchParams.parentProfessionID= '';
-                searchParams.cultureRank= null;
-                searchParams.workYear= null;
+                searchParams.cultureRank = '';
+                searchParams.workYear = '';
                 searchParams.minSalary= null;
                 searchParams.maxSalary= null;
                 loadData();
@@ -71,7 +71,32 @@
             <!--          </a>-->
           </a-col>
         </a-row>
+
         <a-row :gutter="24">
+          <a-col :span="6">
+            <a-form-item label="要求学历" :label-col="{ span: 8 }" name="cultureRank">
+              <a-select
+                ref="select" :allow-clear="true"
+                v-model:value="searchParams.cultureRank"
+                :options="cultureLevelList"
+                :field-names="{ label: 'name', value: 'value' }"
+                @change="onSearch"
+              >
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="6">
+            <a-form-item label="工作年限" :label-col="{ span: 8 }" name="workYear">
+              <a-select
+                ref="select" :allow-clear="true"
+                v-model:value="searchParams.workYear"
+                :options="workYearTypeList"
+                :field-names="{ label: 'name', value: 'value' }"
+                @change="onSearch"
+              >
+              </a-select>
+            </a-form-item>
+          </a-col>
           <a-col :span="6">
             <a-form-item label="招聘岗位" :label-col="{ span: 8 }" name="inviteProfessionName">
               <a-auto-complete
@@ -89,21 +114,53 @@
               </a-auto-complete>
             </a-form-item>
           </a-col>
-          <a-col :span="12" v-if="searchParams.type===0">
-            <a-form-item label="推荐岗位筛选:" :label-col="{ span: 4 }" name="recommendPostWhere">
-              <!--              <div :style="{ borderBottom: '1px solid #E9E9E9' }">-->
-              <!--              <a-checkbox-->
-              <!--                v-model:checked="checkAll"-->
-              <!--                :indeterminate="indeterminate"-->
-              <!--                @change="onCheckAllChange">-->
-              <!--                全选-->
-              <!--              </a-checkbox>-->
-              <!--            </div>-->
+          <a-col :span="6" v-if="searchParams.type===0">
+            <a-form-item label="推荐岗位筛选:" :label-col="{ span: 8 }" name="recommendPostWhere">
               <a-checkbox-group v-model:value="checkRecommendPostWhereList" :options="recommendPostWhereList"/>
             </a-form-item>
           </a-col>
         </a-row>
+
         <a-row :gutter="24" >
+          <a-col :span="8" >
+            <a-form-item label="薪资待遇(元)" :label-col="{ span: 6 }" name="salaryProvide">
+              <a-input-group compact>
+                <a-input :min="0" :controls="false" v-model:value="searchParams.minSalary"
+                         style="width:110px;" placeholder=""/>
+                <a-input placeholder="——" disabled style="width: 30px; border-left: 0;border-right: 0;
+                       pointer-events: none;background: #fff;margin-left: 1px; "/>
+                <a-input :min="searchParams.minSalary" :controls="false" v-model:value="searchParams.maxSalary"
+                         style="width:110px;" placeholder=""/>
+              </a-input-group>
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="8" >
+            <a-form-item label="所属区县" :label-col="{ span: 4 }" name="regionCodeList">
+              <a-select
+                v-model:value="curRegionNameList"
+                :options="regionList"
+                mode="multiple"
+                size="middle"
+                @change="curRegionNameListChange"
+              >
+              </a-select>
+            </a-form-item>
+          </a-col>
+
+          <a-col :span="8" >
+            <a-form-item label="所属驿站" :label-col="{ span: 4 }" name="siteIDList">
+              <a-select
+                v-model:value="curSiteNameList"
+                :options="allSiteList"
+                mode="multiple"
+                size="middle"
+                @change="onSearch"
+              >
+              </a-select>
+            </a-form-item>
+
+          </a-col>
         </a-row>
         <a-row class="edit-operation">
           <a-col :span="24" style="text-align: right">
@@ -124,9 +181,21 @@
                 <a-button type="link" size="small" @click='onRecommend(record)'>推荐</a-button>
               </div>
             </template>
+            <template v-if="column.key === 'companyName'">
+              <div style="text-align: center;color:#3a7be0;">
+                <a  size="small" @click='onShowCompanyInfo(record)' >{{ record.companyName }}</a>
+              </div>
+            </template>
+            <template v-if="column.key === 'professionName'">
+              <div style="text-align: center;color:#3a7be0;">
+                <a size="small" @click='onShowPostInfo(record)' >{{ record.professionName }}</a>
+              </div>
+            </template>
           </template>
         </a-table>
       </div>
+      <companyDetailModel ref="modalCompanyInfoRef"></companyDetailModel>
+      <postDetailModel ref="modalPostInfoRef"></postDetailModel>
     </div>
   </a-modal>
 </template>
@@ -138,22 +207,33 @@ import {getRecommendCompanyPostList, addRecommend,getProfessionLikeList, getComp
 import {getPaginationTotalTitle} from '@/utils/common';
 import dayjs from 'dayjs';
 import {message, SelectProps} from "ant-design-vue";
-import {getSysDictionaryList} from '@/api/system/dictionary';
 import {get} from "@/api/common";
 import {debounce} from "lodash-es";
+import {getSiteList} from "@/api/baseSettings/siteInfo";
+import {getRegionCodeList } from '@/api/system/area/index';
+import {getSysDictionaryList} from "@/api/system/dictionary";
+import CompanyDetailModel from "./companyDetail.vue";
+import PostDetailModel from "./postDetail.vue";
 
 export default defineComponent({
   name: 'RecommendCompanyPostList',
+  components: { CompanyDetailModel,PostDetailModel},
   setup() {
     const visible = ref<boolean>(false);
     const confirmLoading = ref<boolean>(false);
     const formRef = ref<FormInstance>();
     const expand = ref(false);
     const title = ref<string>();
+    const modalCompanyInfoRef = ref();
+    const modalPostInfoRef = ref();
     const dataList = ref([]);
+    const allSiteList = ref<any>([]);
+    const regionList = ref<any>([]);
     const companyList = ref<SelectProps['options']>();
+    const cultureLevelList = ref<SelectProps['options']>();
+    const workYearTypeList = ref<SelectProps['options']>();
     const addRecommendList = ref([] as any);
-    const recommendPostWhereList = ref([] as any);
+    const recommendPostWhereList = ref([{label:'岗位',value:1},{label:'相关行业',value:2}] as any);
     const jobUserID = ref();
 
     get('companyService/company/getList', {pageIndex: 1, pageSize: 9999}).then(result => {
@@ -172,6 +252,41 @@ export default defineComponent({
       })
     }
 
+    const getCultureLevelList = async function () {
+      const data: any = await getSysDictionaryList("CultureLevel");
+      cultureLevelList.value = data;
+    }
+
+    const getWorkYearTypeList = async function () {
+      const data: any = await getSysDictionaryList("WorkYearType");
+      workYearTypeList.value = data;
+    }
+
+    const getRegionList = async function () {
+      const regionResult: any = await getRegionCodeList();
+      regionResult.map(x=>{
+        regionList.value.push({value:x.name});
+      });
+    };
+    const getAllSites = () => {
+      allSiteList.value = [];
+      getSiteList({pageIndex:1,pageSize:9999}).then((result :any) => {
+        result.list.map(x=>{
+          if(curRegionNameList.value.length>0){
+            curRegionNameList.value.map(m=> {
+               if(x.regionName == m){
+                 allSiteList.value.push({value:x.siteName});
+               }
+            });
+          }else{
+            allSiteList.value.push({value:x.siteName});
+          }
+        });
+      });
+    }
+
+    const curRegionNameList = ref([]);
+    const curSiteNameList = ref([]);
     const searchParams = reactive({
       pageIndex: 1,
       pageSize: 10,
@@ -184,10 +299,12 @@ export default defineComponent({
       professionID: '',
       inviteProfessionID: '',
       parentProfessionID: '',
-      cultureRank: null,
-      workYear: null,
+      cultureRank: '',
+      workYear: '',
       minSalary: null,
-      maxSalary: null
+      maxSalary: null,
+      regionNameList:'',
+      siteNameList:'',
     });
     const formState = reactive({
       total: 0,
@@ -200,10 +317,6 @@ export default defineComponent({
       checkRecommendPostWhereList: [1],
       professionID: '',
       parentProfessionID: '',
-      cultureRank: null,
-      workYear: null,
-      minSalary: null,
-      maxSalary: null
     });
     const columns: TableColumnsType = [
       {
@@ -214,7 +327,7 @@ export default defineComponent({
         customRender: (item) =>
           `${searchParams.pageSize * (searchParams.pageIndex - 1) + item.index + 1}`,
       },
-      {title: '企业名称', dataIndex: 'companyName', key: 'companyName', align: "center",},
+      {title: '企业名称', dataIndex: 'companyName', key: 'companyName',width:125, align: "center",},
       {title: '招聘岗位', dataIndex: 'professionName', key: 'professionName', align: "center",},
       {title: '要求学历', dataIndex: 'cultureRankName', key: 'cultureRankName', align: "center",},
       {title: '工作年限', dataIndex: 'workYearName', key: 'workYearName', align: "center",},
@@ -227,14 +340,13 @@ export default defineComponent({
         }
       },
       {title: '联系电话', dataIndex: 'contactMobile', key: 'contactMobile', align: "center",},
-      {title: '工作地点', dataIndex: 'companyAddress', key: 'companyAddress', align: "center",},
+      {title: '所属县区', dataIndex: 'regionName', key: 'regionName', align: "center",},
+      {title: '所属驿站', dataIndex: 'siteName', key: 'siteName', align: "center",},
+      // {title: '工作地点', dataIndex: 'companyAddress', key: 'companyAddress', align: "center",},
       {
-        title: '工作开始时间', dataIndex: 'startTime', key: 'startTime', align: "center",
-        customRender: ({record}) => record.startTime == null ? "" : dayjs(record.startTime).format('YYYY-MM-DD'),
-      },
-      {
-        title: '工作结束时间', dataIndex: 'endTime', key: 'endTime',align: "center",
-        customRender: ({record}) => record.endTime == null ? "" : dayjs(record.endTime).format('YYYY-MM-DD'),
+        title: '招聘日期', dataIndex: 'startTime', key: 'startTime', align: "center",
+        customRender: ({record}) => (record.startTime == null &&  record.endTime == null ) ? "" :
+        dayjs(record.startTime).format('YYYY-MM-DD') + "至"+dayjs(record.endTime).format('YYYY-MM-DD'),
       },
       {title: '操作', key: 'operation', width: 60, align: 'center'},
     ];
@@ -303,23 +415,26 @@ export default defineComponent({
       }
     }
 
+    const curRegionNameListChange = ()=>{
+      curSiteNameList.value = [];
+      getAllSites();
+      onSearch();
+    }
+
     const onSearch = () => {
       searchParams.professionID = state.checkRecommendPostWhereList.findIndex(x => x == 1) >= 0 ? state.professionID : "";
-      searchParams.cultureRank = state.checkRecommendPostWhereList.findIndex(x => x == 2) >= 0 ? state.cultureRank : null;
-      searchParams.workYear = state.checkRecommendPostWhereList.findIndex(x => x == 3) >= 0 ? state.workYear : null;
-      if (state.checkRecommendPostWhereList.findIndex(x => x == 4) >= 0) {
-        searchParams.minSalary = state.minSalary;
-        searchParams.maxSalary = state.maxSalary;
-      } else {
-        searchParams.minSalary = null;
-        searchParams.maxSalary = null;
-      }
-      searchParams.parentProfessionID = state.checkRecommendPostWhereList.findIndex(x => x == 5) >= 0 ? state.parentProfessionID : "";
+      searchParams.parentProfessionID = state.checkRecommendPostWhereList.findIndex(x => x == 2) >= 0 ? state.parentProfessionID : "";
+      searchParams.regionNameList  = curRegionNameList.value.join(',');
+      searchParams.siteNameList  = curSiteNameList.value.join(',');
       loadData();
     }
 
     const loadData = async function () {
       formState.loading = true;
+      await getCultureLevelList();
+      await getWorkYearTypeList();
+      await getAllSites();
+      await getRegionList();
       const result: any = await getRecommendCompanyPostList(searchParams);
       dataList.value = result.list;
       formState.total = result.total;
@@ -333,6 +448,14 @@ export default defineComponent({
       });
     };
 
+    const onShowPostInfo = (item: any) => {
+      modalPostInfoRef.value.show(item.postID);
+    };
+
+    const onShowCompanyInfo = (item: any) => {
+      modalCompanyInfoRef.value.show(item.companyID);
+    };
+
     watch(
       () => state.checkRecommendPostWhereList,
       val => {
@@ -358,8 +481,7 @@ export default defineComponent({
     }
 
     const show = (professionID: any, professionName: any, jobHuntID: any, jobUserName: any, type: any,
-                  parentProfessionID: any, cultureRank: any, workYear: any, minSalary: any, maxSalary: any,
-                  jobUserId: any, titleName: string) => {
+                  parentProfessionID: any,jobUserId: any, titleName: string) => {
       jobUserID.value = jobUserId;
 
       visible.value = true;
@@ -369,18 +491,13 @@ export default defineComponent({
       searchParams.professionName = professionName;
       searchParams.type = type;
       searchParams.parentProfessionID = '';
-      searchParams.cultureRank = null;
-      searchParams.workYear = null;
+      searchParams.cultureRank = '';
+      searchParams.workYear = '';
       searchParams.minSalary = null;
       searchParams.maxSalary = null;
       state.checkRecommendPostWhereList = [1];
       state.professionID = professionID;
       state.parentProfessionID = parentProfessionID;
-      state.cultureRank = cultureRank;
-      state.workYear = workYear;
-      state.workYear = workYear;
-      state.minSalary = minSalary;
-      state.maxSalary = maxSalary;
       title.value = titleName;
       loadData();
     }
@@ -442,11 +559,7 @@ export default defineComponent({
       });
     };
 
-    const getRecommendPostWhereList = () => {
-      getSysDictionaryList('RecommendPostWhere').then((data) => {
-        recommendPostWhereList.value = data.map((x: any) => ({label: x.name, value: x.value}));
-      });
-    };
+
 
     const handleOk = () => {
       visible.value = false;
@@ -461,6 +574,8 @@ export default defineComponent({
       visible,
       confirmLoading,
       formRef,
+      modalPostInfoRef,
+      modalCompanyInfoRef,
       expand,
       searchParams,
       ...toRefs(state),
@@ -468,10 +583,19 @@ export default defineComponent({
       columns,
       pagination,
       dataList,
+      regionList,
+      allSiteList,
       companyList,
+      curSiteNameList,
+      curRegionNameList,
+      cultureLevelList,
+      workYearTypeList,
       inviteProfessionList,
       recommendPostWhereList,
       show,
+      onShowPostInfo,
+      onShowCompanyInfo,
+      curRegionNameListChange,
       onSearch,
       formatStr,
       companyChange,
@@ -483,14 +607,10 @@ export default defineComponent({
       onSelectChange,
       handleTableChange,
       loadData,
-      getRecommendPostWhereList,
       selectInviteProfessionList,
       handleOk,
       handleCancel
     };
-  },
-  mounted() {
-    this.getRecommendPostWhereList();
   }
 });
 </script>