Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

liao-sea 8 kuukautta sitten
vanhempi
commit
1c978dad1f

+ 6 - 1
doc/待更新脚本.txt

@@ -27,4 +27,9 @@ INSERT INTO sys_dictionary_item  VALUES (uuid(), '', 'RegisteredCapitalType', 1,
        (uuid(), '', 'RegisteredCapitalType', 6, '万元(其他)', 60, 1, 0);
 
 alter table pc_company add column RegisteredCapitalType int  comment '注册资本类型' AFTER RegisteredCapital;
-update pc_company set RegisteredCapitalType =1
+update pc_company set RegisteredCapitalType =1
+
+-- 2024-6-19 求职人员服务跟进权限字典码与权限赋值
+INSERT INTO sys_function_code VALUES ('T01030108', '服务跟进', 'T010301', 8);
+insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('20afde90-a81a-11ed-a6c5-7085c2a9999e','T01030108');
+insert into sys_role_sys_function_code (`RoleID`, `FunctionCode`) values('10a12f77-0958-4220-b9ce-07b9215046f2','T01030108');

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

@@ -223,8 +223,9 @@ public class CompanyController {
                                        @RequestParam(required = false) String companyName, @RequestParam(required = false) Integer maxDistance,
                                        @RequestParam(required = false) Integer companyModel, @RequestParam(required = false) Integer recordStatus,
                                        @RequestParam(required = false) String regionCode, @RequestParam(required = false) String siteID,
-                                       @RequestParam Double latitude, @RequestParam Double longitude) {
-        PageInfo<CompanyPostMapVo> result = companyService.getDataMapList(pageIndex, pageSize, companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude);
+                                       @RequestParam Double latitude, @RequestParam Double longitude,
+                                       @RequestParam(required = false) String createTimeBy) {
+        PageInfo<CompanyPostMapVo> result = companyService.getDataMapList(pageIndex, pageSize, companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude,createTimeBy);
         return RespGenerstor.success(result);
     }
 
@@ -239,8 +240,9 @@ public class CompanyController {
                                                  @RequestParam(required = false) String companyName, @RequestParam(required = false) Integer maxDistance,
                                                  @RequestParam(required = false) Integer companyModel, @RequestParam(required = false) Integer recordStatus,
                                                  @RequestParam(required = false) String regionCode, @RequestParam(required = false) String siteID,
-                                                 @RequestParam Double latitude, @RequestParam Double longitude) {
-        PageInfo<CompanyPostMapVo> result = companyService.getDataMapListByPostName(pageIndex, pageSize, companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude);
+                                                 @RequestParam Double latitude, @RequestParam Double longitude,
+                                                 @RequestParam(required = false) String createTimeBy) {
+        PageInfo<CompanyPostMapVo> result = companyService.getDataMapListByPostName(pageIndex, pageSize, companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude,createTimeBy);
         return RespGenerstor.success(result);
     }
 

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

@@ -34,7 +34,8 @@ public interface CompanyCQuery {
     List<CompanyPostMapVo> getDataMapList(@Param("companyName") String companyName, @Param("maxDistance") Integer maxDistance,
                                           @Param("companyModel") Integer companyModel, @Param("recordStatus") Integer recordStatus,
                                           @Param("regionCode") String regionCode, @Param("siteID") String siteID,
-                                          @Param("latitude") Double latitude, @Param("longitude") Double longitude);
+                                          @Param("latitude") Double latitude, @Param("longitude") Double longitude,
+                                          @Param("createTimeBy") String createTimeBy);
 
     /**
      * 企业可视化地图查询企业-按岗位名称反向查询
@@ -52,5 +53,6 @@ public interface CompanyCQuery {
     List<CompanyPostMapVo> getDataMapListByPostName(@Param("postName") String postName, @Param("maxDistance") Integer maxDistance,
                                                     @Param("companyModel") Integer companyModel, @Param("recordStatus") Integer recordStatus,
                                                     @Param("regionCode") String regionCode, @Param("siteID") String siteID,
-                                                    @Param("latitude") Double latitude, @Param("longitude") Double longitude);
+                                                    @Param("latitude") Double latitude, @Param("longitude") Double longitude,
+                                                    @Param("createTimeBy") String createTimeBy);
 }

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

@@ -7,4 +7,6 @@ import java.util.List;
 
 public interface JobUserServiceCQuery {
     List<JobUserServiceVo> getList(@Param("jobUserID") String jobUserID, @Param("serviceID") String serviceID);
+
+    List<JobUserServiceVo> jobUserMapGetService(@Param("jobUserIDList") String jobUserIDList);
 }

+ 46 - 4
src/main/java/com/hz/employmentsite/services/impl/companyService/CompanyServiceImpl.java

@@ -25,6 +25,8 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -658,15 +660,19 @@ public class CompanyServiceImpl implements CompanyService {
      * @param recordStatus 企业状态
      * @param regionCode   所属县区
      * @param siteID       所属驿站
+     * @param createTimeBy 创建时间
      * @return 企业VO列表
      */
     @Override
     public PageInfo<CompanyPostMapVo> getDataMapList(int pageIndex, int pageSize,
                                                      String companyName, Integer maxDistance, Integer companyModel,
                                                      Integer recordStatus, String regionCode, String siteID,
-                                                     Double latitude, Double longitude) {
+                                                     Double latitude, Double longitude,
+                                                     String createTimeBy) {
         PageHelper.startPage(pageIndex, pageSize);
-        List<CompanyPostMapVo> dataMapList = companyCQuery.getDataMapList(companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude);
+        // 按要求获取到距离当前日期的时间
+        String createTime = getCreateTime(createTimeBy);
+        List<CompanyPostMapVo> dataMapList = companyCQuery.getDataMapList(companyName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude, createTime);
         PageInfo<CompanyPostMapVo> result = new PageInfo<>(dataMapList);
 
         // 获取所有的企业ID
@@ -727,10 +733,46 @@ public class CompanyServiceImpl implements CompanyService {
     public PageInfo<CompanyPostMapVo> getDataMapListByPostName(int pageIndex, int pageSize, String postName,
                                                                Integer maxDistance, Integer companyModel, Integer recordStatus,
                                                                String regionCode, String siteID, Double latitude,
-                                                               Double longitude) {
+                                                               Double longitude, String createTimeBy) {
         PageHelper.startPage(pageIndex, pageSize);
-        List<CompanyPostMapVo> dataMapList = companyCQuery.getDataMapListByPostName(postName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude);
+        // 按要求获取到距离当前日期的时间
+        String createTime = getCreateTime(createTimeBy);
+        List<CompanyPostMapVo> dataMapList = companyCQuery.getDataMapListByPostName(postName, maxDistance, companyModel, recordStatus, regionCode, siteID, latitude, longitude, createTime);
         PageInfo<CompanyPostMapVo> result = new PageInfo(dataMapList);
         return result;
     }
+
+    /**
+     * 获取指定创建日期
+     */
+    public String getCreateTime(String by){
+        if (stringUtils.IsNullOrEmpty(by) || by.equals("all")){
+            return null;
+        }
+        LocalDate currentDate = LocalDate.now();
+        LocalDate resultDate = null;
+
+        switch (by){
+            case "3Day":
+                resultDate = currentDate.minusDays(3);
+                break;
+            case "1Week":
+                resultDate = currentDate.minusWeeks(1);
+                break;
+            case "1Month":
+                resultDate = currentDate.minusMonths(1);
+                break;
+            case "3Month":
+                resultDate = currentDate.minusMonths(3);
+                break;
+            case "Year":
+                resultDate = currentDate.minusYears(1);
+                break;
+            default:
+                return null;
+        }
+
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        return resultDate.format(formatter);
+    }
 }

+ 23 - 10
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceImpl.java

@@ -6,6 +6,7 @@ import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.*;
 import com.hz.employmentsite.mapper.cquery.JobHuntCQuery;
 import com.hz.employmentsite.mapper.cquery.JobUserCQuery;
+import com.hz.employmentsite.mapper.cquery.JobUserServiceCQuery;
 import com.hz.employmentsite.mapper.cquery.LabelCQuery;
 import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.jobUserManager.JobUserService;
@@ -69,6 +70,8 @@ public class JobUserServiceImpl implements JobUserService {
     private JobHuntCQuery jobHuntCQuery;
     @Autowired
     private JobUserServiceService jobUserServiceService;
+    @Autowired
+    private JobUserServiceCQuery jobUserServiceCQuery;
 
     @Override
     public PageInfo<JobUserVo> getList(Integer pageIndex, Integer pageSize,
@@ -373,10 +376,10 @@ public class JobUserServiceImpl implements JobUserService {
             }
         }
 
-        JobUserServiceVo jobUserServiceVo = new JobUserServiceVo();
-        jobUserServiceVo.setJobUserID(data.getJobUserID());
-        jobUserServiceVo.setServiceTime(new Date());
-        jobUserServiceVo.setServiceUserID(userId);
+//        JobUserServiceVo jobUserServiceVo = new JobUserServiceVo();
+//        jobUserServiceVo.setJobUserID(data.getJobUserID());
+//        jobUserServiceVo.setServiceTime(new Date());
+//        jobUserServiceVo.setServiceUserID(userId);
 
         if (dbData == null) {
             dbData = new PcJobuser();
@@ -427,7 +430,7 @@ public class JobUserServiceImpl implements JobUserService {
             dbData.setCreateUserID(userId);
             result = pcJobuserMapper.insert(dbData);
 
-            jobUserServiceVo.setServiceContent("登记求职者个人求职信息");
+//            jobUserServiceVo.setServiceContent("登记求职者个人求职信息");
         }
         else {
             dbData.setJobuserID(data.getJobUserID());
@@ -477,7 +480,7 @@ public class JobUserServiceImpl implements JobUserService {
             dbData.setModifyUserID(userId);
             result = pcJobuserMapper.updateByPrimaryKey(dbData);
 
-            jobUserServiceVo.setServiceContent("更新求职者个人求职信息");
+//            jobUserServiceVo.setServiceContent("更新求职者个人求职信息");
         }
 
         PcLabelJobuserExample labelEmp = new PcLabelJobuserExample();
@@ -493,9 +496,9 @@ public class JobUserServiceImpl implements JobUserService {
         }
 
         // 保存服务记录
-        if (result > 0){
-            jobUserServiceService.save(jobUserServiceVo, userId);
-        }
+//        if (result > 0){
+//            jobUserServiceService.save(jobUserServiceVo, userId);
+//        }
 
         return result;
     }
@@ -867,9 +870,19 @@ public class JobUserServiceImpl implements JobUserService {
                             .filter(Objects::nonNull)
                             .collect(Collectors.groupingBy(JobHuntVo::getJobUserID))
                     : new HashMap<>();
-            // 填充求职意向数据
+            // 查询服务记录
+            List<JobUserServiceVo> jobUserServiceVos = jobUserServiceCQuery.jobUserMapGetService(stringUtils.ListToInSql(jobUserIDs));
+
             result.getList().forEach(jobUser -> {
                 if (jobUser != null && jobUser.getJobUserID() != null) {
+                    // 填充服务时间
+                    jobUser.setServiceTime(jobUserServiceVos
+                            .stream()
+                            .filter(service -> service.getJobUserID().equals(jobUser.getJobUserID()))
+                            .findFirst()
+                            .orElse(new JobUserServiceVo())
+                            .getServiceTime());
+                    // 填充求职意向数据
                     jobUser.setJobHuntList(jobHuntMap.getOrDefault(jobUser.getJobUserID(), new ArrayList<>()));
                 }
             });

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

@@ -109,7 +109,7 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
     public int addRecommend(List<RecommendMgtVo> list, String userID) {
         try {
             List<PcRecommendMgt> addList = new ArrayList<>();
-            List<JobUserServiceVo> serviceList = new ArrayList<>();
+//            List<JobUserServiceVo> serviceList = new ArrayList<>();
             final int[] result = {1};
             list.forEach(item -> {
                 PcPost curPost = pcPostMapper.selectByPrimaryKey(item.getPostID());
@@ -126,12 +126,12 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
                     model.setCreateTime(new Date());
                     addList.add(model);
 
-                    JobUserServiceVo service = new JobUserServiceVo();
-                    service.setJobUserID(item.jobuserId);
-                    service.setServiceContent("已推荐 " + item.companyName + " 的 " + item.zpProfessionName + " 岗位");
-                    service.setServiceTime(new Date());
-                    service.setServiceUserID(userID);
-                    serviceList.add(service);
+//                    JobUserServiceVo service = new JobUserServiceVo();
+//                    service.setJobUserID(item.jobuserId);
+//                    service.setServiceContent("已推荐 " + item.companyName + " 的 " + item.zpProfessionName + " 岗位");
+//                    service.setServiceTime(new Date());
+//                    service.setServiceUserID(userID);
+//                    serviceList.add(service);
                 }
             });
 
@@ -139,9 +139,9 @@ public class RecommendMgtServiceImpl implements RecommendMgtService {
                 pcRecommendMgtMapper.insert(x);
             });
 
-            serviceList.forEach(item -> {
-                jobUserServiceService.save(item, userID);
-            });
+//            serviceList.forEach(item -> {
+//                jobUserServiceService.save(item, userID);
+//            });
 
             return result[0];
         } catch (Exception e) {

+ 4 - 2
src/main/java/com/hz/employmentsite/services/service/companyService/CompanyService.java

@@ -54,7 +54,8 @@ public interface CompanyService {
                                               String companyName, Integer maxDistance,
                                               Integer companyModel, Integer recordStatus,
                                               String regionCode, String siteID,
-                                              Double latitude, Double longitude);
+                                              Double latitude, Double longitude,
+                                              String createTimeBy);
 
     /**
      * 企业可视化地图查询企业-按岗位名称反向查询
@@ -71,5 +72,6 @@ public interface CompanyService {
                                                         String postName, Integer maxDistance,
                                                         Integer companyModel, Integer recordStatus,
                                                         String regionCode, String siteID,
-                                                        Double latitude, Double longitude);
+                                                        Double latitude, Double longitude,
+                                                        String createTimeBy);
 }

+ 5 - 0
src/main/java/com/hz/employmentsite/vo/dataMap/JobUserMapVo.java

@@ -3,6 +3,7 @@ package com.hz.employmentsite.vo.dataMap;
 import com.hz.employmentsite.vo.jobUserManager.JobHuntVo;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 @Data
@@ -31,6 +32,10 @@ public class JobUserMapVo {
 
     private Integer entryState;
 
+    private Date serviceTime;
+
+    private Integer jobStatusID;
+
     // JSON格式的列表数据
     private String labelList;
     private List<JobHuntVo> jobHuntList;

+ 2 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobUserServiceVo.java

@@ -31,4 +31,6 @@ public class JobUserServiceVo {
     private String jobUserName;
 
     private String serviceUserName;
+
+    private Integer ServiceType;
 }

+ 6 - 0
src/main/resources/mapping/cquery/CompanyCQuery.xml

@@ -151,6 +151,9 @@
         <if test="siteID!='' and siteID!=null">
             and company.siteID = #{siteID}
         </if>
+        <if test="createTimeBy!='' and createTimeBy!=null">
+            and Date(company.CreateTime) <![CDATA[ >= ]]> Date(#{createTimeBy})
+        </if>
         <if test="maxDistance!=null">
             HAVING
             distance <![CDATA[ <= ]]> #{maxDistance}
@@ -219,6 +222,9 @@
         <if test="siteID!='' and siteID!=null">
             and company.siteID = #{siteID}
         </if>
+        <if test="createTimeBy!='' and createTimeBy!=null">
+            and Date(post.CreateTime) <![CDATA[ >= ]]> Date(#{createTimeBy})
+        </if>
         <if test="maxDistance!=null">
             HAVING
             distance <![CDATA[ <= ]]> #{maxDistance}

+ 1 - 0
src/main/resources/mapping/cquery/JobUserCQuery.xml

@@ -119,6 +119,7 @@
         jobuser.`Name`,
         jobuser.sex,
         jobuser.finishDate,
+        jobuser.jobStatusID,
         keytype.`Name` AS keyTypeName,
         TIMESTAMPDIFF(
         YEAR,

+ 119 - 4
src/main/resources/mapping/cquery/JobUserServiceCQuery.xml

@@ -4,12 +4,74 @@
     <select id="getList" resultType="com.hz.employmentsite.vo.jobUserManager.JobUserServiceVo">
         SELECT
             service.*,
-            jobUser.`Name` AS jobUserName,
+            jobUserTemp.`Name` AS jobUserName,
             sysUser.`Name` AS serviceUserName
         FROM
-            `pc_jobuser_service` service
-                LEFT JOIN pc_jobuser jobUser ON service.JobUserID = jobUser.JobuserID
-                LEFT JOIN sys_user sysUser ON service.ServiceUserID = sysUser.UserID
+            (
+                SELECT
+                    ServiceID,
+                    JobUserID,
+                    ServiceContent,
+                    ServiceTime,
+                    ServiceUserID,
+                    1 AS serviceType
+                FROM
+                    pc_jobuser_service UNION
+                SELECT
+                    '' AS ServiceID,
+                    JobUserID,
+                    '登记求职者个人求职信息' AS ServiceContent,
+                    CreateTime AS ServiceTime,
+                    CreateUserID AS ServiceUserID,
+                    2 AS serviceType
+                FROM
+                    pc_jobuser UNION
+                (
+                    SELECT
+                        '' AS ServiceID,
+                        jobUser.JobUserID,
+                        CONCAT(
+                        IF
+                        ( mgt.EntryState = 1, '已入职推荐的', '未入职推荐的' ),
+                        company.CompanyName,
+                        '的',
+                        prof.ProfessionName,
+                        '岗位',
+                        IF
+                        ( mgt.remark IS NOT NULL AND mgt.remark != '', CONCAT( '(', mgt.remark, ')' ), '' )
+                        ) AS ServiceContent,
+                        mgt.ModifyTime AS ServiceTime,
+                        mgt.ModifyUserID AS ServiceUserID,
+                        2 AS ServiceType
+                    FROM
+                        pc_recommend_mgt mgt
+                        LEFT JOIN pc_post post ON mgt.PostID = post.PostID
+                        LEFT JOIN pc_profession prof ON post.ProfessionID = prof.ProfessionID
+                        LEFT JOIN pc_company company ON post.CompanyID = company.CompanyID
+                        LEFT JOIN pc_jobhunt jobHunt ON mgt.JobHuntID = jobHunt.JobHuntID
+                        LEFT JOIN pc_jobuser jobUser ON jobHunt.JobUserID = jobUser.JobuserID
+                    WHERE
+                        mgt.ModifyTime IS NOT NULL
+                ) UNION
+                (
+                    SELECT
+                        '' AS ServiceID,
+                        jobUser.JobUserID,
+                        CONCAT( '已推荐', company.CompanyName, '的', prof.ProfessionName, '岗位' ) AS ServiceContent,
+                        mgt.CreateTime AS ServiceTime,
+                        mgt.CreateUserID AS ServiceUserID,
+                        2 AS ServiceType
+                    FROM
+                        pc_recommend_mgt mgt
+                        LEFT JOIN pc_post post ON mgt.PostID = post.PostID
+                        LEFT JOIN pc_profession prof ON post.ProfessionID = prof.ProfessionID
+                        LEFT JOIN pc_company company ON post.CompanyID = company.CompanyID
+                        LEFT JOIN pc_jobhunt jobHunt ON mgt.JobHuntID = jobHunt.JobHuntID
+                        LEFT JOIN pc_jobuser jobUser ON jobHunt.JobUserID = jobUser.JobuserID
+                )
+        ) AS service
+            LEFT JOIN pc_jobuser jobUserTemp ON service.JobUserID = jobUserTemp.JobuserID
+            LEFT JOIN sys_user sysUser ON service.ServiceUserID = sysUser.UserID
         WHERE
             1=1
         <if test="jobUserID != '' and jobUserID != null">
@@ -21,4 +83,57 @@
         ORDER BY
             service.ServiceTime DESC
     </select>
+
+    <select id="jobUserMapGetService" resultType="com.hz.employmentsite.vo.jobUserManager.JobUserServiceVo">
+        SELECT
+            JobUserID,
+            ServiceTime
+        FROM
+            (
+                SELECT
+                    JobUserID,
+                    ServiceTime,
+                    ROW_NUMBER() OVER ( PARTITION BY JobUserID ORDER BY ServiceTime DESC ) AS rn
+                FROM
+                    (
+                        SELECT
+                            JobUserID,
+                            ServiceTime
+                        FROM
+                            pc_jobuser_service UNION
+                        SELECT
+                            JobUserID,
+                            CreateTime AS ServiceTime
+                        FROM
+                            pc_jobuser UNION
+                        SELECT
+                            jobUser.JobUserID,
+                            mgt.ModifyTime AS ServiceTime
+                        FROM
+                            pc_recommend_mgt mgt
+                                LEFT JOIN pc_post post ON mgt.PostID = post.PostID
+                                LEFT JOIN pc_profession prof ON post.ProfessionID = prof.ProfessionID
+                                LEFT JOIN pc_company company ON post.CompanyID = company.CompanyID
+                                LEFT JOIN pc_jobhunt jobHunt ON mgt.JobHuntID = jobHunt.JobHuntID
+                                LEFT JOIN pc_jobuser jobUser ON jobHunt.JobUserID = jobUser.JobuserID
+                        WHERE
+                            mgt.ModifyTime IS NOT NULL UNION
+                        SELECT
+                            jobUser.JobUserID,
+                            mgt.CreateTime AS ServiceTime
+                        FROM
+                            pc_recommend_mgt mgt
+                                LEFT JOIN pc_post post ON mgt.PostID = post.PostID
+                                LEFT JOIN pc_profession prof ON post.ProfessionID = prof.ProfessionID
+                                LEFT JOIN pc_company company ON post.CompanyID = company.CompanyID
+                                LEFT JOIN pc_jobhunt jobHunt ON mgt.JobHuntID = jobHunt.JobHuntID
+                                LEFT JOIN pc_jobuser jobUser ON jobHunt.JobUserID = jobUser.JobuserID
+                    ) AS subquery
+            ) AS ranked_service
+        WHERE
+            rn = 1
+        <if test="jobUserIDList != '' and jobUserIDList != null">
+            and jobuserID in (${jobUserIDList})
+        </if>
+    </select>
 </mapper>

+ 16 - 0
vue/src/assets/css/common.css

@@ -61,3 +61,19 @@ button {
 .flex-box {
   display: flex;
 }
+
+.justify-between {
+  justify-content: space-between;
+}
+
+.items-center {
+  align-items: center;
+}
+
+.triangle-up {
+  width: 0;
+  height: 0;
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-bottom: 10px solid;
+}

+ 19 - 1
vue/src/views/dataMap/companyDataMap.vue

@@ -68,6 +68,14 @@
               @change="onSearch"
             >
             </a-select>
+            <a-select
+              v-model:value="companySearchParam.createTimeBy"
+              :allow-clear="true"
+              :options="createTimeByList"
+              placeholder="创建时间" size="small" style="width: 100%"
+              @change="onSearch"
+            >
+            </a-select>
           </div>
           <!-- 企业数据列表 -->
           <div class="list-box">
@@ -342,6 +350,7 @@ const companySearchParam = reactive({
   companyModel: undefined,
   siteID: undefined,
   regionCode: undefined,
+  createTimeBy: 'all',
   longitude: 114.416110,
   latitude: 23.111582
 })
@@ -370,6 +379,15 @@ const rangeList = [
   {value: 3, label: "3KM"},
   {value: 1, label: "1KM"}
 ]
+// 创建时间
+const createTimeByList = [
+  {label: '全部', value: 'all'},
+  {label: '最近三天', value: '3Day'},
+  {label: '最近一周', value: '1Week'},
+  {label: '最近一月', value: '1Month'},
+  {label: '最近三月', value: '3Month'},
+  {label: '最近半年', value: 'Year'},
+];
 // 企业规模
 const companyModelList = ref<SelectProps['options']>();
 // 所属驿站
@@ -958,7 +976,7 @@ export default {
       }
 
       .list-box {
-        max-height: calc(100% - 80px);
+        max-height: calc(100% - 95px);
         margin-top: 10px;
 
         .company-data-box {

+ 60 - 4
vue/src/views/dataMap/jobUserDataMap.vue

@@ -59,14 +59,20 @@
         <!-- 数据列表 -->
         <div class="data-box">
           <div v-if="jobUserList.length > 0" class="list-box">
-            <div class="jobUser-data-box margin-bottom-10 cursor-pointer" v-for="(jobUser,jobUserIndex) in jobUserList"
+            <div class="jobUser-data-box margin-bottom-10 cursor-pointer"
+                 v-for="(jobUser,jobUserIndex) in jobUserList"
                  :key="jobUserIndex"
-                 :class="{'check-jobUser':nowCheckJobUser.jobUserID == jobUser.jobUserID || nowMouseenterJobUser.jobUserID == jobUser.jobUserID}"
+                 :class="[
+                   (nowCheckJobUser.jobUserID == jobUser.jobUserID || nowMouseenterJobUser.jobUserID == jobUser.jobUserID) ? 'check-jobUser' : '',
+                   setColorClass(jobUser)
+                 ]"
                  @click="checkJobUser(jobUser)"
                  @mouseenter="jobUserMouseenter(jobUser)"
                  @mouseleave="jobUserMouseenter({jobUserID:-1})"
             >
-              <p class="font-size-14 font-weight-600 margin-bottom-8">{{ jobUser.name }}({{ jobUser.regionName }})</p>
+              <div class="flex-box justify-between items-center margin-bottom-8">
+                <p class="font-size-14 font-weight-600">{{ jobUser.name }}({{ jobUser.regionName }})</p>
+              </div>
               <p class="label-text">年龄:{{ jobUser.age }}</p>
               <p class="label-text">性别:{{ jobUser.sex == 1 ? '男' : '女' }}</p>
               <!-- 岗位 -->
@@ -534,6 +540,28 @@ const showSalary = (minSalary: any, maxSalary: any) => {
   }
 }
 
+// 按要求显示求职人员颜色状态
+function setColorClass(jobUser: any) {
+  if (jobUser.jobStatusID == 1) {
+    return 'jobUser-data-box-before-green'
+  }
+  // 服务时间
+  const serviceTime = dayjs(jobUser.serviceTime);
+  // 获取当前日期
+  const currentDate = dayjs();
+  // 计算1个月和3个月之前的日期
+  const oneMonthAgo = currentDate.subtract(1, 'month');
+  const threeMonthsAgo = currentDate.subtract(3, 'month');
+  // 判断指定日期是否在1-3个月内
+  if (serviceTime.isAfter(threeMonthsAgo) && serviceTime.isBefore(oneMonthAgo)) {
+    return 'jobUser-data-box-before-yellow';
+  }
+  if (serviceTime.isBefore(threeMonthsAgo)) {
+    return 'jobUser-data-box-before-red';
+  }
+  return false;
+}
+
 // 查询全部
 function searchAll() {
   searchParams.pageIndex = 1
@@ -655,9 +683,10 @@ export default {
         overflow-y: auto;
 
         .jobUser-data-box {
+          position: relative;
           width: 100%;
           background-color: white;
-          border-radius: 10px;
+          border-radius: 10px 0 10px 10px;
           padding: 10px;
           box-sizing: border-box;
           border: 1px solid white;
@@ -680,6 +709,33 @@ export default {
           }
         }
 
+        .jobUser-data-box::before {
+          border-width: 8px;
+          content: '';
+          position: absolute;
+          top: 0;
+          right: 0;
+          border-color: transparent;
+          border-style: solid;
+          border-top-color: #BEBEBE;
+          border-right-color: #BEBEBE;
+        }
+
+        .jobUser-data-box-before-green::before {
+          border-top-color: #00FF00;
+          border-right-color: #00FF00;
+        }
+
+        .jobUser-data-box-before-yellow::before {
+          border-top-color: #FFA500;
+          border-right-color: #FFA500;
+        }
+
+        .jobUser-data-box-before-red::before {
+          border-top-color: #FF0000;
+          border-right-color: #FF0000;
+        }
+
         .check-jobUser {
           border-color: #007EFF;
         }

+ 6 - 6
vue/src/views/jobUserManager/jobhunt/recommend.vue

@@ -513,9 +513,9 @@ export default defineComponent({
         jobHuntID: searchParams.jobHuntID,
         recommendType: 1,
         // 服务跟进记录需要的数据
-        jobuserId: jobUserID.value,
-        companyName: item.companyName,
-        zpProfessionName: item.professionName
+        // jobuserId: jobUserID.value,
+        // companyName: item.companyName,
+        // zpProfessionName: item.professionName
       });
       addRecommend(addRecommendList.value).then((data) => {
         if(data!=-1){
@@ -542,9 +542,9 @@ export default defineComponent({
             jobHuntID: searchParams.jobHuntID,
             recommendType: 1,
             // 服务跟进记录需要的数据
-            jobuserId: jobUserID.value,
-            companyName: item.companyName,
-            zpProfessionName: item.professionName
+            // jobuserId: jobUserID.value,
+            // companyName: item.companyName,
+            // zpProfessionName: item.professionName
           });
         }
       })

+ 2 - 2
vue/src/views/jobUserManager/jobuser/ServiceTableCom.vue

@@ -24,7 +24,7 @@
             </div>
           </template>
           <template v-if="column.key === 'operation'">
-            <div class="table-operation" v-if="userInfo.userID == record.serviceUserID">
+            <div class="table-operation" v-if="userInfo.userID == record.serviceUserID && record.serviceType == 1">
               <a-button type="link" size="small" @click="onEdit(record)">编辑</a-button>
               <a-button type="link" size="small" @click="onDel(record)">删除</a-button>
             </div>
@@ -131,7 +131,7 @@ const tableColumns = [
 ];
 // 表格分页数据
 const tablePagination = computed(() => ({
-  total: serviceRecordsTotal,
+  total: serviceRecordsTotal.value,
   current: searchParams.pageIndex,
   pageSize: searchParams.pageSize,
   showSizeChanger: true,

+ 3 - 2
vue/src/views/jobUserManager/jobuser/index.vue

@@ -158,7 +158,8 @@
               <a-button type="link" size="small" functioncode="T01030106" @click='onVitae(record)'>个人简历</a-button>
               <a-button type="link" size="small" functioncode="T01030103" @click='onEdit(record)'>编辑</a-button>
               <a-button type="link" size="small" functioncode="T01030104" @click="onDel(record)">删除</a-button>
-              <a-button type="link" size="small" @click="openServiceModal(record)">跟进</a-button>
+              <a-button type="link" size="small" functioncode="T01030108" @click="openServiceModal(record)">服务跟进
+              </a-button>
             </div>
           </template>
         </template>
@@ -243,7 +244,7 @@ export default defineComponent({
       {title: '民族', dataIndex: 'nationName', key: 'nationName', width: 80, align: "center", isDefaultClose: true},
       {title: '最高学历', dataIndex: 'cultureName', key: 'cultureName', align: "center", isDefaultClose: true},
       {title: '地址', dataIndex: 'address', key: 'address', align: "center", isDefaultClose: true},
-      {title: '操作', key: 'operation', width: 220, align: 'center', isDisabled: true},
+      {title: '操作', key: 'operation', width: 240, align: 'center', isDisabled: true},
     ];
     // 响应式表格定义
     const columns = ref<Array<any>>(originalColumns.filter(item => !item.isDefaultClose));

+ 7 - 7
vue/src/views/jobUserManager/recommendMgt/remarkAdd.vue

@@ -69,13 +69,13 @@ const onCommit =() =>{
       handleModalClosed(true);
     });
     // 保存跟进服务记录
-    let serviceData = {
-      jobUserID: thePostRecommend.value.jobuserId,
-      serviceContent: `${thePostRecommend.value.entryState == 0 ? '未入职' : '已入职'}被推荐的 ${thePostRecommend.value.companyName} 的 ${thePostRecommend.value.zpProfessionName} 岗位。${thePostRecommend.value.remark ? '备注:' + thePostRecommend.value.remark : ''}`,
-      serviceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
-      serviceUserID: userInfo.value.userID
-    }
-    save(serviceData);
+    // let serviceData = {
+    //   jobUserID: thePostRecommend.value.jobuserId,
+    //   serviceContent: `${thePostRecommend.value.entryState == 0 ? '未入职' : '已入职'}被推荐的 ${thePostRecommend.value.companyName} 的 ${thePostRecommend.value.zpProfessionName} 岗位。${thePostRecommend.value.remark ? '备注:' + thePostRecommend.value.remark : ''}`,
+    //   serviceTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
+    //   serviceUserID: userInfo.value.userID
+    // }
+    // save(serviceData);
   });
 };