Kaynağa Gözat

求职人员服务管理

pengjing 1 yıl önce
ebeveyn
işleme
8770e4506e
26 değiştirilmiş dosya ile 1147 ekleme ve 0 silme
  1. 31 0
      src/main/java/com/hz/employmentsite/controller/jobUserManager/JobhuntController.java
  2. 29 0
      src/main/java/com/hz/employmentsite/controller/jobUserManager/JobuserController.java
  3. 25 0
      src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendController.java
  4. 10 0
      src/main/java/com/hz/employmentsite/mapper/cquery/JobhuntCQuery.java
  5. 10 0
      src/main/java/com/hz/employmentsite/mapper/cquery/JobuserCQuery.java
  6. 10 0
      src/main/java/com/hz/employmentsite/mapper/cquery/RecommendCQuery.java
  7. 31 0
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobhuntServiceImpl.java
  8. 32 0
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobuserServiceImpl.java
  9. 32 0
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendServiceImpl.java
  10. 11 0
      src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobhuntService.java
  11. 8 0
      src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobuserService.java
  12. 8 0
      src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendService.java
  13. 19 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserVo.java
  14. 22 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/JobhuntVo.java
  15. 21 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/RecommendVo.java
  16. 24 0
      src/main/resources/mapping/cquery/JobhuntCQuery.xml
  17. 38 0
      src/main/resources/mapping/cquery/JobuserCQuery.xml
  18. 26 0
      src/main/resources/mapping/cquery/RecommendCQuery.xml
  19. 12 0
      vue/src/api/jobUserManager/jobhunt/index.ts
  20. 12 0
      vue/src/api/jobUserManager/jobuser/index.ts
  21. 12 0
      vue/src/api/jobUserManager/recommend/index.ts
  22. 5 0
      vue/src/router/asyncModules/jobUserManager.ts
  23. 217 0
      vue/src/views/jobUserManager/jobhunt/index.vue
  24. 286 0
      vue/src/views/jobUserManager/jobuser/index.vue
  25. 215 0
      vue/src/views/jobUserManager/recommend/index.vue
  26. 1 0
      vue/tsconfig.json

+ 31 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobhuntController.java

@@ -0,0 +1,31 @@
+package com.hz.employmentsite.controller.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.jobUserManager.JobhuntService;
+import com.hz.employmentsite.vo.jobUserManager.JobhuntVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+
+@RestController
+@RequestMapping(value = "/api/Jobusermgr/Jobhunt")
+public class JobhuntController {
+
+    @Autowired
+    private JobhuntService jobhuntService;
+
+    @ResponseBody
+    @GetMapping("/getList")
+    public BaseResponse getList(@RequestParam("page") int pageIndex, @RequestParam("limit") int pageSize,
+                                    @RequestParam(required = false) String name,
+                                    @RequestParam(required = false) Integer wantedJobId,
+                                    @RequestParam(required = false) Boolean isAccomplish) {
+
+        PageInfo<JobhuntVo> result = jobhuntService.getList(pageIndex, pageSize,name, wantedJobId, isAccomplish);
+        return RespGenerstor.success(result);
+    }
+
+}

+ 29 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobuserController.java

@@ -0,0 +1,29 @@
+package com.hz.employmentsite.controller.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.jobUserManager.JobuserService;
+import com.hz.employmentsite.vo.jobUserManager.JobUserVo;
+import com.hz.employmentsite.vo.jobUserManager.JobhuntVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping(value = "/api/Jobusermgr/Jobuser")
+public class JobuserController {
+
+    @Autowired
+    private JobuserService jobuserService;
+
+    @ResponseBody
+    @GetMapping("/getList")
+    public BaseResponse getList(@RequestParam("page") int pageIndex, @RequestParam("limit") int pageSize,
+                                @RequestParam(required = false) String name, @RequestParam(required = false) String siteId, @RequestParam(required = false) Integer jobStatus, @RequestParam(required = false) Integer sexId,
+                                @RequestParam(required = false) Integer educationTypeId, @RequestParam(required = false) Integer emphasisTypeId) {
+
+        PageInfo<JobUserVo> result = jobuserService.getList(pageIndex, pageSize, name, siteId, jobStatus,sexId,educationTypeId,emphasisTypeId);
+        return RespGenerstor.success(result);
+    }
+
+}

+ 25 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/RecommendController.java

@@ -0,0 +1,25 @@
+package com.hz.employmentsite.controller.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.services.service.jobUserManager.RecommendService;
+import com.hz.employmentsite.vo.jobUserManager.RecommendVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping(value = "/api/Jobusermgr/recommend")
+public class RecommendController {
+    @Autowired
+    private RecommendService recommendService;
+
+    @ResponseBody
+    @GetMapping("/getList")
+    public BaseResponse getList(@RequestParam("page") int pageIndex, @RequestParam("limit") int pageSize,
+                                @RequestParam(required = false) String name, @RequestParam(required = false) Integer educationTypeId, @RequestParam(required = false) Integer emphasisTypeId) {
+
+        PageInfo<RecommendVo> result = recommendService.getList(pageIndex, pageSize, name, educationTypeId, emphasisTypeId);
+        return RespGenerstor.success(result);
+    }
+}

+ 10 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/JobhuntCQuery.java

@@ -0,0 +1,10 @@
+package com.hz.employmentsite.mapper.cquery;
+
+import com.hz.employmentsite.vo.jobUserManager.JobhuntVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface JobhuntCQuery {
+    List<JobhuntVo> selectJobhuntList(@Param("name") String name, @Param("wantedJobId")Integer wantedJobId, @Param("isAccomplish")Boolean isAccomplish);
+}

+ 10 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/JobuserCQuery.java

@@ -0,0 +1,10 @@
+package com.hz.employmentsite.mapper.cquery;
+
+import com.hz.employmentsite.vo.jobUserManager.JobUserVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface JobuserCQuery {
+    List<JobUserVo> selectJobuserList(@Param("name") String name, @Param("siteId")String siteId, @Param("jobStatus")Integer jobStatus, @Param("sexId")Integer sexId, @Param("educationTypeId")Integer educationTypeId, @Param("emphasisTypeId")Integer emphasisTypeId);
+}

+ 10 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/RecommendCQuery.java

@@ -0,0 +1,10 @@
+package com.hz.employmentsite.mapper.cquery;
+
+import com.hz.employmentsite.vo.jobUserManager.RecommendVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface RecommendCQuery {
+    List<RecommendVo> selectRecommendList(@Param("name") String name, @Param("educationTypeId") Integer educationTypeId, @Param("emphasisTypeId") Integer emphasisTypeId);
+}

+ 31 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobhuntServiceImpl.java

@@ -0,0 +1,31 @@
+package com.hz.employmentsite.services.impl.jobUserManager;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.mapper.cquery.JobhuntCQuery;
+import com.hz.employmentsite.services.service.jobUserManager.JobhuntService;
+import com.hz.employmentsite.vo.jobUserManager.JobhuntVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("JobhuntService")
+public class JobhuntServiceImpl implements JobhuntService {
+
+    @Autowired
+    private JobhuntCQuery jobhuntCQuery;
+
+    @Override
+    public PageInfo<JobhuntVo> getList(Integer page, Integer rows, String name, Integer wantedJobId, Boolean isAccomplish) {
+        PageHelper.startPage(page, rows);
+
+        List<JobhuntVo> list = jobhuntCQuery.selectJobhuntList(name, wantedJobId, isAccomplish);
+
+        PageInfo<JobhuntVo> result = new PageInfo(list);
+
+        return result;
+    }
+
+}

+ 32 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobuserServiceImpl.java

@@ -0,0 +1,32 @@
+package com.hz.employmentsite.services.impl.jobUserManager;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.mapper.cquery.JobuserCQuery;
+import com.hz.employmentsite.services.service.jobUserManager.JobuserService;
+import com.hz.employmentsite.vo.jobUserManager.JobUserVo;
+import com.hz.employmentsite.vo.jobUserManager.JobhuntVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("JobuserService")
+public class JobuserServiceImpl implements JobuserService {
+
+    @Autowired
+    private JobuserCQuery jobuserCQuery;
+
+    @Override
+    public PageInfo<JobUserVo> getList(Integer page, Integer rows, String name, String siteId, Integer jobStatus, Integer sexId, Integer educationTypeId, Integer emphasisTypeId) {
+        PageHelper.startPage(page, rows);
+
+        List<JobUserVo> list = jobuserCQuery.selectJobuserList(name, siteId, jobStatus, sexId, educationTypeId, emphasisTypeId);
+
+        PageInfo<JobUserVo> result = new PageInfo(list);
+
+        return result;
+    }
+
+}

+ 32 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/RecommendServiceImpl.java

@@ -0,0 +1,32 @@
+package com.hz.employmentsite.services.impl.jobUserManager;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.mapper.cquery.RecommendCQuery;
+import com.hz.employmentsite.services.service.jobUserManager.RecommendService;
+import com.hz.employmentsite.vo.jobUserManager.JobUserVo;
+import com.hz.employmentsite.vo.jobUserManager.RecommendVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service("RecommendService")
+public class RecommendServiceImpl implements RecommendService {
+
+    @Autowired
+    private RecommendCQuery recommendCQuery;
+
+    @Override
+    public PageInfo<RecommendVo> getList(Integer page, Integer rows, String name, Integer educationTypeId, Integer emphasisTypeId) {
+        PageHelper.startPage(page, rows);
+
+        List<RecommendVo> list = recommendCQuery.selectRecommendList(name, educationTypeId, emphasisTypeId);
+
+        PageInfo<RecommendVo> result = new PageInfo(list);
+
+        return result;
+    }
+
+}

+ 11 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobhuntService.java

@@ -0,0 +1,11 @@
+package com.hz.employmentsite.services.service.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.jobUserManager.JobhuntVo;
+
+import java.util.HashMap;
+
+public interface JobhuntService {
+
+    PageInfo<JobhuntVo> getList(Integer page, Integer rows, String name, Integer wantedJobId, Boolean isAccomplish);
+}

+ 8 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobuserService.java

@@ -0,0 +1,8 @@
+package com.hz.employmentsite.services.service.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.jobUserManager.JobUserVo;
+
+public interface JobuserService {
+    PageInfo<JobUserVo> getList(Integer page, Integer rows, String name, String siteId, Integer jobStatus,Integer sexId,Integer educationTypeId,Integer emphasisTypeId);
+}

+ 8 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/RecommendService.java

@@ -0,0 +1,8 @@
+package com.hz.employmentsite.services.service.jobUserManager;
+
+import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.jobUserManager.RecommendVo;
+
+public interface RecommendService {
+    PageInfo<RecommendVo> getList(Integer page, Integer rows, String name, Integer educationTypeId, Integer emphasisTypeId);
+}

+ 19 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserVo.java

@@ -0,0 +1,19 @@
+package com.hz.employmentsite.vo.jobUserManager;
+
+import lombok.Data;
+
+@Data
+public class JobUserVo {
+    public String jobUserId;
+    public String name;
+    public String IdCard;
+    public String sexName;
+    public String nationTypeName;
+    public String mobile;
+    public String siteName;
+    public Integer age;
+    public String educationName;
+    public String address;
+    public String jobStatusName;
+    public String emphasisTypeName;
+}

+ 22 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobhuntVo.java

@@ -0,0 +1,22 @@
+package com.hz.employmentsite.vo.jobUserManager;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class JobhuntVo {
+    public String jobhuntId;
+    public String jobuserId;
+    public String name;
+    public String workCode;
+    public String workName;
+    public String workAddress;
+    public String endDate;
+    public Integer workYear;
+    public Integer wantedJobTypeId;
+    public String wantedJobTypeName;
+    public String talentsTypeName;
+    public BigDecimal salary;
+    public Boolean isAccomplish;
+}

+ 21 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/RecommendVo.java

@@ -0,0 +1,21 @@
+package com.hz.employmentsite.vo.jobUserManager;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RecommendVo {
+    public String recommendId;
+    public String jobuserId;
+    public String postId;
+    public String name;
+    public String postName;
+    public String workName;
+    public String educationName;
+    public Integer age;
+    public String emphasisTypeName;
+    public String workAddress;
+    public Date endDate;
+    public Integer positionCount;
+}

+ 24 - 0
src/main/resources/mapping/cquery/JobhuntCQuery.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.hz.employmentsite.mapper.cquery.JobhuntCQuery">
+    <select id="selectJobhuntList" resultType="com.hz.employmentsite.vo.jobUserManager.JobhuntVo">
+        select jhu.JobhuntID as jobhuntId,jhu.JobuserID as jobuserId,ju.name
+        ,jhu.WorkCode as workCode,jhu.WorkName as workName,jhu.AreaWork as workAddress,jhu.InDate as endDate,jhu.WorkYear as workYear,jhu.UchuntType as wantedJobTypeName
+        ,jhu.AbilityType as talentsTypeName,jhu.Salary as salary,jhu.CreateUserID,jhu.CreateTime,jhu.ModifyUserID,jhu.ModifyTime
+        from pc_jobhunt jhu
+        inner join pc_jobuser ju on jhu.JobuserID = ju.JobuserID
+        left join sys_dictionary_item dic_KeyPersonType on ju.KeyPersonTypeID = dic_KeyPersonType.value and
+        dic_KeyPersonType.dictionarycode='KeyPersonType'
+        <where>
+            <if test="name != '' and name != null">
+                and ju.name like Concat('%',#{name},'%')
+            </if>
+            <if test="wantedJobId != null and wantedJobId != ''">
+                and  jhu.UchuntType = #{wantedJobId}
+            </if>
+            <if test="isAccomplish != null and isAccomplish != ''">
+                and  jhu.isAccomplish = #{isAccomplish}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 38 - 0
src/main/resources/mapping/cquery/JobuserCQuery.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.hz.employmentsite.mapper.cquery.JobuserCQuery">
+    <select id="selectJobuserList" resultType="com.hz.employmentsite.vo.jobUserManager.JobUserVo">
+        select ju.jobUserId ,
+        ju.name,ju.IdentityNumber as IdCard,ju.Notion as nationTypeName, ju.UserMobile as
+        mobile,site.siteName,ju.CultureRank as educationName, ju.address,
+        dic_JobStatus.name as jobStatusName,
+        dic_KeyPersonType.name as emphasisTypeName,
+        dic_sex.Name as sexName
+        from pc_jobuser ju
+        left join pc_site site on ju.SiteID = site.SiteID
+        left join sys_dictionary_item dic_sex on ju.Sex = dic_sex.value and dic_sex.dictionarycode='Gender'
+        left join sys_dictionary_item dic_JobStatus on ju.JobStatus = dic_JobStatus.value and
+        dic_JobStatus.dictionarycode='JobStatus'
+        left join sys_dictionary_item dic_KeyPersonType on ju.KeyPersonTypeID = dic_KeyPersonType.value and
+        dic_KeyPersonType.dictionarycode='KeyPersonType'
+        where 1=1
+        <if test="name != '' and name != null">
+            and ju.name like Concat('%',#{name},'%')
+        </if>
+        <if test="siteId != null and siteId != ''">
+            and ju.siteId = #{siteId}
+        </if>
+        <if test="jobStatus != null and jobStatus != ''">
+            and ju.jobStatus = #{jobStatus}
+        </if>
+        <if test="sexId != null and sexId != ''">
+            and ju.sex = #{sexId}
+        </if>
+        <if test="educationTypeId != null and educationTypeId != ''">
+            and ju.CultureRank = #{educationTypeId}
+        </if>
+        <if test="emphasisTypeId != null and emphasisTypeId != ''">
+            and ju.KeyPersonTypeID = #{emphasisTypeId}
+        </if>
+    </select>
+</mapper>

+ 26 - 0
src/main/resources/mapping/cquery/RecommendCQuery.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.hz.employmentsite.mapper.cquery.RecommendCQuery">
+    <select id="selectRecommendList" resultType="com.hz.employmentsite.vo.jobUserManager.RecommendVo">
+        select re.RecommendID as recommendId,re.JobuserID as jobuserId,ju.name
+        ,re.IsRead,re.IsSendnotes,ju.CultureRank as educationName,ju.Notion as nationTypeName
+        ,re.CreateUserID,re.CreateTime,re.ModifyUserID,re.ModifyTime
+        ,dic_KeyPersonType.name as emphasisTypeName,jhu.AreaWork as workAddress,jhu.InDate as endDate,jhu.workName
+        from pc_recommend re
+        inner join pc_jobuser ju on re.JobuserID = ju.JobuserID
+        inner join pc_jobhunt jhu on ju.JobuserID = jhu.JobuserID
+        left join sys_dictionary_item dic_KeyPersonType on ju.KeyPersonTypeID = dic_KeyPersonType.value and
+        dic_KeyPersonType.dictionarycode='KeyPersonType'
+        <where>
+            <if test="name != '' and name != null">
+                and ju.name like Concat('%',#{name},'%')
+            </if>
+            <if test="educationTypeId != null and educationTypeId != ''">
+                and ju.CultureRank = #{educationTypeId}
+            </if>
+            <if test="emphasisTypeId != null and emphasisTypeId != ''">
+                and ju.KeyPersonTypeID = #{emphasisTypeId}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 12 - 0
vue/src/api/jobUserManager/jobhunt/index.ts

@@ -0,0 +1,12 @@
+import { request } from '@/utils/request';
+
+export function getList(query: any) {
+  return request(
+    {
+      url: 'Jobusermgr/Jobhunt/getList',
+      method: 'get',
+      params: query,
+    },
+    { isNew: true },
+  );
+}

+ 12 - 0
vue/src/api/jobUserManager/jobuser/index.ts

@@ -0,0 +1,12 @@
+import { request } from '@/utils/request';
+
+export function getList(query: any) {
+  return request(
+    {
+      url: 'Jobusermgr/Jobuser/getList',
+      method: 'get',
+      params: query,
+    },
+    { isNew: true },
+  );
+}

+ 12 - 0
vue/src/api/jobUserManager/recommend/index.ts

@@ -0,0 +1,12 @@
+import { request } from '@/utils/request';
+
+export function getList(query: any) {
+  return request(
+    {
+      url: 'Jobusermgr/recommend/getList',
+      method: 'get',
+      params: query,
+    },
+    { isNew: true },
+  );
+}

+ 5 - 0
vue/src/router/asyncModules/jobUserManager.ts

@@ -0,0 +1,5 @@
+export default {
+  'views/jobusermgr/jobuser/index': () => import('@/views/jobUserManager/jobuser/index.vue'),
+  'views/jobusermgr/jobhunt/index': () => import('@/views/jobUserManager/jobhunt/index.vue'),
+  'views/jobusermgr/recommend/index': () => import('@/views/jobUserManager/recommend/index.vue'),
+};

+ 217 - 0
vue/src/views/jobUserManager/jobhunt/index.vue

@@ -0,0 +1,217 @@
+<template>
+  <div class="card-search">
+    <a-form
+      ref="formRef"
+      name="advanced_search"
+      class="ant-advanced-search-form"
+      :model="searchParamsState"
+    >
+      <a-row :gutter="24">
+        <a-col :span="6">
+          <a-form-item label="姓名" :label-col="{ span: 8 }" name="name">
+            <a-input v-model:value="searchParamsState.name" placeholder="" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="求职类型" :label-col="{ span: 8 }" name="wantedJobId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.wantedJobId"
+              :options="wantedJobTypeList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="是否完成求职" :label-col="{ span: 8 }" name="isAccomplish">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.isAccomplish"
+              :options="isAccomplishList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6" style="text-align: left">
+          <a-button type="primary" html-type="submit" @click="onFinish">查询</a-button>
+          <a-button
+            style="margin: 0 8px"
+            @click="
+              () => {
+                formRef.resetFields();
+                loadData();
+              }
+            "
+            >重置
+          </a-button>
+        </a-col>
+      </a-row>
+      <a-row class="edit-operation">
+        <a-col :span="24" style="text-align: right"></a-col>
+      </a-row>
+    </a-form>
+    <div class="search-result-list">
+      <a-table
+        :columns="columns"
+        :data-source="dataList"
+        :scroll="{ x: '100%', y: 500 }"
+        :pagination="pagination"
+        :loading="formState.loading"
+        :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange }"
+        :row-key="(record) => record.jobHuntId"
+        bordered
+        @change="handleTableChange"
+      >
+        <!--        <template #bodyCell="{ column, text, record }">
+                  <template v-if="column.key === 'operation'">
+                    <div class="table-operation">
+                      <a-button
+                        type="link"
+                        functioncode=""
+                        @click="edit(record.jobUserId)"
+                        >修改</a-button
+                      >
+                      <a-button
+                        type="link"
+                        functioncode=""
+                        @click="delete(record.jobUserId,)"
+                        >删除</a-button
+                      >
+                    </div>
+                  </template>
+                </template>-->
+      </a-table>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+  import { reactive, ref, computed, defineComponent } from 'vue';
+  import type { FormInstance, TableColumnsType, TableProps, SelectProps } from 'ant-design-vue';
+  import { getList } from '@/api/jobUserManager/jobhunt';
+  import { getSysDictionaryList } from '@/api/system/dictionary';
+  import { getPaginationTotalTitle } from '@/utils/common';
+  import dayjs from 'dayjs';
+
+  export default defineComponent({
+    name: 'JobHuntList',
+    setup() {
+      const modalRoleUserRef = ref();
+      const modalRoleEditRef = ref();
+      const formRef = ref<FormInstance>();
+      const searchParamsState = reactive({ page: 1, limit: 20, name: '', wantedJobId: '',isAccomplish:'' });
+      const formState = reactive({
+        total: 0,
+        selectedRowKeys: [],
+        loading: false,
+      });
+      const columns: TableColumnsType = [
+        {
+          title: '序号',
+          align: 'center',
+          width: 80,
+          key: 'roleID',
+          customRender: (item) =>
+            `${searchParamsState.limit * (searchParamsState.page - 1) + item.index + 1}`,
+        },
+        { title: '姓名', dataIndex: 'name', key: 'name', width: 100 },
+        { title: '工种名称', dataIndex: 'workName', key: 'workName', width: 150 },
+        { title: '希望工作地区', dataIndex: 'workAddress', key: 'workAddress', width: 150 },
+        { title: '可到职日期', dataIndex: 'endDate', key: 'endDate', width: 100,
+          customRender: ({ record }) => dayjs(record.endDate).format('YYYY-MM-DD'), },
+        { title: '工作年限', dataIndex: 'workYear', key: 'workYear' },
+        { title: '求职类型', dataIndex: 'wantedJobType', key: 'wantedJobType' },
+        { title: '人才类型', dataIndex: 'talentsTypeName', key: 'talentsTypeName' },
+        { title: '月薪要求', dataIndex: 'salary', key: 'salary' },
+        { title: '是否完成求职', dataIndex: 'isAccomplish', key: 'isAccomplish' , customRender: ({record}) => (
+            record.isAccomplish == true ? "是" : "否"
+          )},
+        { title: '操作', key: 'operation', width: 100, align: 'center' },
+      ];
+      const pagination = computed(() => ({
+        total: formState.total,
+        current: searchParamsState.page,
+        pageSize: searchParamsState.limit,
+        showSizeChanger: true,
+        showTotal: (total) => getPaginationTotalTitle(total),
+      }));
+
+      const dataList = ref([]);
+      const wantedJobTypeList = ref<SelectProps['options']>();
+      const isAccomplishList = ref<SelectProps['options']>();
+
+      const onSelectChange = (selectedRowKeys: any) => {
+        formState.selectedRowKeys = selectedRowKeys;
+      };
+
+      const handleTableChange: TableProps['onChange'] = (pag: {
+        pageSize: number;
+        current: number;
+      }) => {
+        searchParamsState.page = pag.current;
+        searchParamsState.limit = pag.pageSize;
+        loadData();
+      };
+
+      const onFinish = () => {
+        loadData();
+      };
+
+      const loadData = async function () {
+        formState.loading = true;
+        const result: any = await getList(searchParamsState);
+
+        dataList.value = result.list;
+        formState.total = result.total;
+        formState.loading = false;
+      };
+
+      const getWantedJobTypeList = () => {
+        getSysDictionaryList('wantedJobType').then((data) => {
+          wantedJobTypeList.value = data;
+        });
+      };
+
+      const getIsAccomplishList = () => {
+        getSysDictionaryList('sexType').then((data) => {
+          isAccomplishList.value = data;
+        });
+      };
+
+      return {
+        modalRoleUserRef,
+        modalRoleEditRef,
+        formRef,
+        loadData,
+        searchParamsState,
+        formState,
+        columns,
+        pagination,
+        dataList,
+        wantedJobTypeList,
+        isAccomplishList,
+        onSelectChange,
+        handleTableChange,
+        onFinish,
+        getWantedJobTypeList,
+        getIsAccomplishList,
+      };
+    },
+    created() {
+      this.loadData();
+      this.getWantedJobTypeList();
+      this.getIsAccomplishList();
+    },
+    activated() {
+      if (history.state.params?.reload) this.loadData();
+    },
+  });
+</script>
+
+<style lang="less" scoped></style>

+ 286 - 0
vue/src/views/jobUserManager/jobuser/index.vue

@@ -0,0 +1,286 @@
+<template>
+  <div class="card-search">
+    <a-form
+      ref="formRef"
+      name="advanced_search"
+      class="ant-advanced-search-form"
+      :model="searchParamsState"
+    >
+      <a-row :gutter="24">
+        <a-col :span="6">
+          <a-form-item label="姓名" :label-col="{ span: 8 }" name="name">
+            <a-input v-model:value="searchParamsState.name" placeholder="" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="所属驿站" :label-col="{ span: 8 }" name="siteId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.siteId"
+              :options="siteList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="就业状态" :label-col="{ span: 8 }" name="jobStatus">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.jobStatus"
+              :options="jobStatusList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6" style="text-align: left">
+          <a-button type="primary" html-type="submit" @click="onFinish">查询</a-button>
+          <a-button
+            style="margin: 0 8px"
+            @click="
+              () => {
+                formRef.resetFields();
+                loadData();
+              }
+            "
+            >重置</a-button
+          >
+        </a-col>
+      </a-row>
+      <a-row :gutter="24">
+        <a-col :span="6">
+          <a-form-item label="性别" :label-col="{ span: 8 }" name="sexId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.sexId"
+              :options="sexTypeList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="文化程度" :label-col="{ span: 8 }" name="educationId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.educationTypeId"
+              :options="educationTypeList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="重点人员类别" :label-col="{ span: 8 }" name="emphasisTypeId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.emphasisTypeId"
+              :options="emphasisTypeList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+      </a-row>
+      <a-row class="edit-operation">
+        <a-col :span="24" style="text-align: right"> </a-col>
+      </a-row>
+    </a-form>
+    <div class="search-result-list">
+      <a-table
+        :columns="columns"
+        :data-source="dataList"
+        :scroll="{ x: '100%', y: 500 }"
+        :pagination="pagination"
+        :loading="formState.loading"
+        :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange }"
+        :row-key="(record) => record.jobUserId"
+        bordered
+        @change="handleTableChange"
+      >
+<!--        <template #bodyCell="{ column, text, record }">
+          <template v-if="column.key === 'operation'">
+            <div class="table-operation">
+              <a-button
+                type="link"
+                functioncode=""
+                @click="edit(record.jobUserId)"
+                >修改</a-button
+              >
+              <a-button
+                type="link"
+                functioncode=""
+                @click="delete(record.jobUserId,)"
+                >删除</a-button
+              >
+            </div>
+          </template>
+        </template>-->
+      </a-table>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+  import { reactive, ref, computed, defineComponent } from 'vue';
+  import type { FormInstance, TableColumnsType, TableProps, SelectProps } from 'ant-design-vue';
+  import { getList } from '@/api/jobUserManager/jobuser';
+  import { getSysDictionaryList } from '@/api/system/dictionary';
+  import { getPaginationTotalTitle } from '@/utils/common';
+
+  export default defineComponent({
+    name: 'JobUserList',
+    setup() {
+      const modalRoleUserRef = ref();
+      const modalRoleEditRef = ref();
+      const formRef = ref<FormInstance>();
+      const searchParamsState = reactive({ page: 1, limit: 20, name: '', siteId: '',jobStatus:'' ,sexId:'',educationTypeId:'',emphasisTypeId:''});
+      const formState = reactive({
+        total: 0,
+        selectedRowKeys: [],
+        loading: false,
+      });
+      const columns: TableColumnsType = [
+        {
+          title: '序号',
+          align: 'center',
+          width: 80,
+          key: 'jobUserId',
+          customRender: (item) =>
+            `${searchParamsState.limit * (searchParamsState.page - 1) + item.index + 1}`,
+        },
+        { title: '姓名', dataIndex: 'name', key: 'name', width: 100 },
+        { title: '公民身份号码', dataIndex: 'IdCard', key: 'IdCard', width: 150 },
+        { title: '性别', dataIndex: 'sexName', key: 'sexName', width: 80 },
+        { title: '民族', dataIndex: 'nationTypeName', key: 'nationTypeName', width: 80 },
+        { title: '联系电话', dataIndex: 'mobile', key: 'mobile' },
+        { title: '所属驿站', dataIndex: 'siteName', key: 'siteName' },
+        { title: '年龄', dataIndex: 'age', key: 'age' },
+        { title: '文化程度', dataIndex: 'educationName', key: 'educationName' },
+        { title: '地址', dataIndex: 'address', key: 'address' },
+        { title: '就业状态', dataIndex: 'jobStatusName', key: 'jobStatusName' },
+        { title: '重点人员类别', dataIndex: 'emphasisTypeName', key: 'emphasisTypeName' },
+        { title: '操作', key: 'operation', width: 100, align: 'center' },
+      ];
+      const pagination = computed(() => ({
+        total: formState.total,
+        current: searchParamsState.page,
+        pageSize: searchParamsState.limit,
+        showSizeChanger: true,
+        showTotal: (total) => getPaginationTotalTitle(total),
+      }));
+
+      const dataList = ref([]);
+      const siteList = ref<SelectProps['options']>();
+      const jobStatusList = ref<SelectProps['options']>();
+      const sexTypeList = ref<SelectProps['options']>();
+      const educationTypeList = ref<SelectProps['options']>();
+      const emphasisTypeList = ref<SelectProps['options']>();
+
+      const onSelectChange = (selectedRowKeys: any) => {
+        formState.selectedRowKeys = selectedRowKeys;
+      };
+
+      const handleTableChange: TableProps['onChange'] = (pag: {
+        pageSize: number;
+        current: number;
+      }) => {
+        searchParamsState.page = pag.current;
+        searchParamsState.limit = pag.pageSize;
+        loadData();
+      };
+
+      const onFinish = () => {
+        loadData();
+      };
+
+      const loadData = async function () {
+        formState.loading = true;
+        const result: any = await getList(searchParamsState);
+
+        dataList.value = result.list;
+        formState.total = result.total;
+        formState.loading = false;
+      };
+
+      const getSiteList = () => {
+        /*getSysDictionaryList('UserType').then((data) => {
+          siteList.value = data;
+        });*/
+      };
+
+      const getJobStatusList = () => {
+        getSysDictionaryList('jobStatus').then((data) => {
+          jobStatusList.value = data;
+        });
+      };
+
+      const getSexList = () => {
+        getSysDictionaryList('sexType').then((data) => {
+          sexTypeList.value = data;
+        });
+      };
+
+      const getEducationList = () => {
+        getSysDictionaryList('educationType').then((data) => {
+          educationTypeList.value = data;
+        });
+      };
+
+      const getEmphasisTypeList = () => {
+        getSysDictionaryList('emphasisType').then((data) => {
+          emphasisTypeList.value = data;
+        });
+      };
+
+      return {
+        modalRoleUserRef,
+        modalRoleEditRef,
+        formRef,
+        loadData,
+        getSiteList,
+        searchParamsState,
+        formState,
+        columns,
+        pagination,
+        dataList,
+        siteList,
+        jobStatusList,
+        sexTypeList,
+        educationTypeList,
+        emphasisTypeList,
+        onSelectChange,
+        handleTableChange,
+        onFinish,
+        getJobStatusList,
+        getSexList,
+        getEducationList,
+        getEmphasisTypeList
+
+      };
+    },
+    created() {
+      this.loadData();
+      this.getJobStatusList();
+      this.getSexList();
+      this.getEducationList();
+      this.getEmphasisTypeList();
+    },
+    activated() {
+      if (history.state.params?.reload) this.loadData();
+    },
+  });
+</script>
+
+<style lang="less" scoped></style>

+ 215 - 0
vue/src/views/jobUserManager/recommend/index.vue

@@ -0,0 +1,215 @@
+<template>
+  <div class="card-search">
+    <a-form
+      ref="formRef"
+      name="advanced_search"
+      class="ant-advanced-search-form"
+      :model="searchParamsState"
+    >
+      <a-row :gutter="24">
+        <a-col :span="6">
+          <a-form-item label="姓名" :label-col="{ span: 8 }" name="name">
+            <a-input v-model:value="searchParamsState.name" placeholder="" />
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="学历" :label-col="{ span: 8 }" name="educationId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.educationTypeId"
+              :options="educationTypeList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6">
+          <a-form-item label="重点人员类别" :label-col="{ span: 8 }" name="emphasisTypeId">
+            <a-select
+              ref="select"
+              v-model:value="searchParamsState.emphasisTypeId"
+              :options="emphasisTypeList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+              @change="loadData"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
+        <a-col :span="6" style="text-align: left">
+          <a-button type="primary" html-type="submit" @click="onFinish">查询</a-button>
+          <a-button
+            style="margin: 0 8px"
+            @click="
+              () => {
+                formRef.resetFields();
+                loadData();
+              }
+            "
+            >重置
+          </a-button>
+        </a-col>
+      </a-row>
+      <a-row class="edit-operation">
+        <a-col :span="24" style="text-align: right"></a-col>
+      </a-row>
+    </a-form>
+    <div class="search-result-list">
+      <a-table
+        :columns="columns"
+        :data-source="dataList"
+        :scroll="{ x: '100%', y: 500 }"
+        :pagination="pagination"
+        :loading="formState.loading"
+        :row-selection="{ selectedRowKeys: formState.selectedRowKeys, onChange: onSelectChange }"
+        :row-key="(record) => record.jobHuntId"
+        bordered
+        @change="handleTableChange"
+      >
+        <!--        <template #bodyCell="{ column, text, record }">
+                  <template v-if="column.key === 'operation'">
+                    <div class="table-operation">
+                      <a-button
+                        type="link"
+                        functioncode=""
+                        @click="edit(record.jobUserId)"
+                        >修改</a-button
+                      >
+                      <a-button
+                        type="link"
+                        functioncode=""
+                        @click="delete(record.jobUserId,)"
+                        >删除</a-button
+                      >
+                    </div>
+                  </template>
+                </template>-->
+      </a-table>
+    </div>
+  </div>
+</template>
+
+<script lang="ts">
+  import { reactive, ref, computed, defineComponent } from 'vue';
+  import type { FormInstance, TableColumnsType, TableProps, SelectProps } from 'ant-design-vue';
+  import { getList } from '@/api/jobUserManager/recommend';
+  import { getSysDictionaryList } from '@/api/system/dictionary';
+  import { getPaginationTotalTitle } from '@/utils/common';
+  import dayjs from "dayjs";
+
+  export default defineComponent({
+    name: 'JobHuntList',
+    setup() {
+      const modalRoleUserRef = ref();
+      const modalRoleEditRef = ref();
+      const formRef = ref<FormInstance>();
+      const searchParamsState = reactive({ page: 1, limit: 20, name: '', educationTypeId: '',emphasisTypeId:'' });
+      const formState = reactive({
+        total: 0,
+        selectedRowKeys: [],
+        loading: false,
+      });
+      const columns: TableColumnsType = [
+        {
+          title: '序号',
+          align: 'center',
+          width: 80,
+          key: 'roleID',
+          customRender: (item) =>
+            `${searchParamsState.limit * (searchParamsState.page - 1) + item.index + 1}`,
+        },
+        { title: '姓名', dataIndex: 'name', key: 'name', width: 100 },
+        { title: '工种名称', dataIndex: 'workName', key: 'workName', width: 150 },
+        { title: '学历', dataIndex: 'educationName', key: 'educationName', width: 150 },
+        { title: '年龄', dataIndex: 'age', key: 'age', width: 100 },
+        { title: '重点人员类别', dataIndex: 'emphasisTypeName', key: 'emphasisTypeName' },
+        { title: '希望工作地区', dataIndex: 'workAddress', key: 'workAddress' },
+        { title: '可到职日期', dataIndex: 'endDate', key: 'endDate',
+          customRender: ({ record }) => dayjs(record.endDate).format('YYYY-MM-DD'),
+        },
+        { title: '已推荐岗位数', dataIndex: 'positionCount', key: 'positionCount' },
+        { title: '操作', key: 'operation', width: 100, align: 'center' },
+      ];
+      const pagination = computed(() => ({
+        total: formState.total,
+        current: searchParamsState.page,
+        pageSize: searchParamsState.limit,
+        showSizeChanger: true,
+        showTotal: (total) => getPaginationTotalTitle(total),
+      }));
+
+      const dataList = ref([]);
+      const educationTypeList = ref<SelectProps['options']>();
+      const emphasisTypeList = ref<SelectProps['options']>();
+
+      const onSelectChange = (selectedRowKeys: any) => {
+        formState.selectedRowKeys = selectedRowKeys;
+      };
+
+      const handleTableChange: TableProps['onChange'] = (pag: {
+        pageSize: number;
+        current: number;
+      }) => {
+        searchParamsState.page = pag.current;
+        searchParamsState.limit = pag.pageSize;
+        loadData();
+      };
+
+      const onFinish = () => {
+        loadData();
+      };
+
+      const loadData = async function () {
+        formState.loading = true;
+        const result: any = await getList(searchParamsState);
+
+        dataList.value = result.list;
+        formState.total = result.total;
+        formState.loading = false;
+      };
+
+      const getEducationList = () => {
+        getSysDictionaryList('educationType').then((data) => {
+          educationTypeList.value = data;
+        });
+      };
+
+      const getEmphasisTypeList = () => {
+        getSysDictionaryList('emphasisType').then((data) => {
+          emphasisTypeList.value = data;
+        });
+      };
+
+      return {
+        modalRoleUserRef,
+        modalRoleEditRef,
+        formRef,
+        loadData,
+        searchParamsState,
+        formState,
+        columns,
+        pagination,
+        dataList,
+        educationTypeList,
+        emphasisTypeList,
+        onSelectChange,
+        handleTableChange,
+        onFinish,
+        getEducationList,
+        getEmphasisTypeList,
+      };
+    },
+    created() {
+      this.loadData();
+      this.getEducationList();
+      this.getEmphasisTypeList();
+    },
+    activated() {
+      if (history.state.params?.reload) this.loadData();
+    },
+  });
+</script>
+
+<style lang="less" scoped></style>

+ 1 - 0
vue/tsconfig.json

@@ -15,6 +15,7 @@
     "sourceMap": true,
     "esModuleInterop": true,
     "resolveJsonModule": true,
+    "isolatedModules": false,
     "noUnusedLocals": true,
     "noUnusedParameters": true,
     "experimentalDecorators": true,