Procházet zdrojové kódy

Merge remote-tracking branch 'origin/master'

liao-sea před 8 měsíci
rodič
revize
8b5c82a5f3

+ 6 - 0
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobUserServiceController.java

@@ -31,6 +31,12 @@ public class JobUserServiceController {
         return RespGenerstor.success(result);
     }
 
+    @GetMapping("/getAllList")
+    public BaseResponse getAllListByJobUserID(@RequestParam String jobUserID) {
+        List<JobUserServiceVo> result = jobUserServiceService.getAllByJobUserID(jobUserID);
+        return RespGenerstor.success(result);
+    }
+
     @GetMapping("/getByID")
     public BaseResponse<JobUserServiceVo> getByID(@RequestParam(required = false) String serviceID) {
         JobUserServiceVo result = jobUserServiceService.getById(serviceID);

+ 5 - 0
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceServiceImpl.java

@@ -36,6 +36,11 @@ public class JobUserServiceServiceImpl implements JobUserServiceService {
         return result;
     }
 
+    @Override
+    public List<JobUserServiceVo> getAllByJobUserID(String jobUserID) {
+        return jobUserServiceCQuery.getList(jobUserID, null);
+    }
+
     @Override
     public JobUserServiceVo getById(String serviceID) {
         if (stringUtils.IsNullOrEmpty(serviceID)) {

+ 2 - 0
src/main/java/com/hz/employmentsite/services/service/jobUserManager/JobUserServiceService.java

@@ -9,6 +9,8 @@ public interface JobUserServiceService {
     PageInfo<JobUserServiceVo> getList(Integer pageIndex, Integer pageSize,
                                        String jobUserID, String serviceID);
 
+    List<JobUserServiceVo> getAllByJobUserID(String jobUserID);
+
     JobUserServiceVo getById(String jobUserServiceID);
 
     int save(JobUserServiceVo data, String userID);

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

@@ -36,6 +36,8 @@ public class JobUserMapVo {
 
     private Integer jobStatusID;
 
+    private String jobStatusName;
+
     // JSON格式的列表数据
     private String labelList;
     private List<JobHuntVo> jobHuntList;

+ 3 - 13
src/main/resources/mapping/cquery/JobUserCQuery.xml

@@ -120,6 +120,7 @@
         jobuser.sex,
         jobuser.finishDate,
         jobuser.jobStatusID,
+        jobstatus.`Name` as jobStatusName,
         keytype.`Name` AS keyTypeName,
         TIMESTAMPDIFF(
         YEAR,
@@ -130,7 +131,6 @@
         site.SiteName,
         area.`Name` AS regionName,
         recommendCountData.RecommendedCount,
-        mgtEntryState.EntryState,
         (
         SELECT
         JSON_ARRAYAGG( JSON_OBJECT( 'labelID', labelTemp.LabelID, 'labelName', labelTemp.LabelName ) )
@@ -163,18 +163,8 @@
         GROUP BY
         job_user.JobUserID
         ) recommendCountData ON recommendCountData.JobUserID = jobuser.JobUserID
-        LEFT JOIN (
-        SELECT
-        job_user.JobUserID,
-        MAX(mgt.EntryState) AS EntryState
-        FROM
-        pc_jobuser job_user
-        LEFT JOIN pc_jobhunt hunt ON job_user.JobUserID = hunt.JobUserID
-        LEFT JOIN pc_recommend_mgt mgt ON hunt.JobHuntID = mgt.JobHuntID
-        AND mgt.EntryState = 1
-        GROUP BY
-        job_user.JobUserID
-        ) mgtEntryState ON mgtEntryState.JobUserID = jobuser.JobUserID
+        left join sys_dictionary_item jobstatus on jobuser.JobStatusID = jobstatus.value and
+        jobstatus.DictionaryCode='JobStatus'
         WHERE 1=1
         <if test="keyTypeValue != null">
             and keytype.`Value` = #{keyTypeValue}

+ 11 - 0
vue/src/api/jobUserManager/jobuser/jobUserService.ts

@@ -11,6 +11,17 @@ export function getList(query: any) {
   );
 }
 
+export function getAllListByJobUserID(jobUserID: any) {
+  return request(
+    {
+      url: 'jobUserServiceRecords/getAllList',
+      method: 'get',
+      params: {jobUserID},
+    },
+    {isNew: true},
+  );
+}
+
 export function getDataById(serviceID: any) {
   return request(
     {

+ 79 - 24
vue/src/views/dataMap/jobUserDataMap.vue

@@ -128,7 +128,7 @@
           <p class="label-text">年龄:{{ nowCheckJobUser.age }}岁</p>
           <p class="label-text">重点人员类别:{{ nowCheckJobUser.keyTypeName }}</p>
           <p class="label-text">已推荐岗位数量:{{ nowCheckJobUser.recommendedCount }}个</p>
-          <p class="label-text">入职情况:{{ nowCheckJobUser.entryState == 1 ? '已入职' : '未入职' }}</p>
+          <p class="label-text">就业状态:{{ nowCheckJobUser.jobStatusName }}</p>
           <!-- 标签 -->
           <div class="label-box" v-if="nowCheckJobUser.labelList.length > 0"
                :ref="el => nowCheckJobUserLabelBoxRef = el"
@@ -145,26 +145,47 @@
             </div>
           </div>
         </div>
-        <!-- 求助意向列表 -->
-        <div v-if="jobHuntList.length > 0" class="jobHunt-list-box">
-          <div class="jobHunt-box" v-for="(jobHunt, jobHuntIndex) in jobHuntList" :key="jobHuntIndex">
-            <div class="jobHunt-title">
-              <span class="font-weight-700">{{ jobHunt.professionName }}</span>
-              <span class="jobHunt-salary">{{ showSalary(jobHunt.minSalary, jobHunt.maxSalary) }}</span>
+        <a-radio-group v-model:value="dataType" button-style="solid" size="small"
+                       style="margin-bottom: 10px">
+          <a-radio-button value="jobHunt">求职意向</a-radio-button>
+          <a-radio-button value="serviceRecords">服务记录</a-radio-button>
+        </a-radio-group>
+        <div v-if="dataType == 'jobHunt'" class="dataType-box">
+          <!-- 求职意向列表 -->
+          <div v-if="jobHuntList.length > 0" class="jobHunt-list-box">
+            <div class="jobHunt-box" v-for="(jobHunt, jobHuntIndex) in jobHuntList" :key="jobHuntIndex">
+              <div class="jobHunt-title">
+                <span class="font-weight-700">{{ jobHunt.professionName }}</span>
+                <span class="jobHunt-salary">{{ showSalary(jobHunt.minSalary, jobHunt.maxSalary) }}</span>
+              </div>
+              <p class="label-text">求职类型:{{ jobHunt.jobHuntTypeStr }}</p>
+              <p class="label-text">可到职日期:{{ dayjs(jobHunt.inDate).format("YYYY-MM-DD") }}</p>
             </div>
-            <p class="label-text">求职类型:{{ jobHunt.jobHuntTypeStr }}</p>
-            <p class="label-text">可到职日期:{{ dayjs(jobHunt.inDate).format("YYYY-MM-DD") }}</p>
+          </div>
+          <div v-else class="empty-box">
+            <a-empty description="暂无求职意向"/>
+          </div>
+          <!-- 分页控件 -->
+          <div v-if="jobHuntList.length > 0" class="pagination-box">
+            <span>共{{ jobHuntTotal }}个</span>
+            <a-pagination v-model:current="jobHuntSearchParams.pageIndex" :total="jobHuntTotal"
+                          v-model:pageSize="jobHuntSearchParams.pageSize"
+                          show-less-items @change="jobHuntPaginationChange" simple :show-size-changer="false"/>
           </div>
         </div>
-        <div v-else class="empty-box">
-          <a-empty description="暂无求职意向"/>
-        </div>
-        <!-- 分页控件 -->
-        <div class="pagination-box">
-          <span>共{{ jobHuntTotal }}个</span>
-          <a-pagination v-model:current="jobHuntSearchParams.pageIndex" :total="jobHuntTotal"
-                        v-model:pageSize="jobHuntSearchParams.pageSize"
-                        show-less-items @change="jobHuntPaginationChange" simple :show-size-changer="false"/>
+        <div v-if="dataType == 'serviceRecords'" class="dataType-box">
+          <!-- 服务记录时间轴 -->
+          <div v-if="serviceRecordList.length > 0" class="serviceRecords-list">
+            <a-timeline>
+              <a-timeline-item v-for="(service, key) in serviceRecordList" :key="key" position="left">
+                <p>{{ dayjs(service.serviceTime).format('YYYY-MM-DD') }}({{ service.serviceUserName }})</p>
+                <p>服务内容:{{ service.serviceContent }}</p>
+              </a-timeline-item>
+            </a-timeline>
+          </div>
+          <div v-else class="empty-box">
+            <a-empty description="暂无服务记录"/>
+          </div>
         </div>
       </div>
     </div>
@@ -183,6 +204,7 @@ import {getDataMapList} from "@/api/jobUserManager/jobuser";
 import thIcon from "@/assets/images/blueTh.png"
 import {getJobHuntList} from "@/api/jobUserManager/jobhunt";
 import dayjs from "dayjs";
+import {getAllListByJobUserID} from "@/api/jobUserManager/jobuser/jobUserService";
 
 const T = (window as any).T;
 const zoom = 9;
@@ -234,6 +256,10 @@ const jobUserLabelBoxRef = ref<Array<any>>([]);
 const nowCheckJobUserLabelBoxRef = ref<any>(null);
 // 右侧求职人员详情的标签展开与收起开关
 const nowCheckJobUserLabelExpanded = ref(true)
+// 求职人员详情显示内容tab
+const dataType = ref("jobHunt");
+// 求职人员的服务记录列表
+const serviceRecordList = ref<Array<any>>([]);
 
 // 查询求职人员标签字典
 function getJobUserLabelDicList() {
@@ -427,6 +453,9 @@ function checkJobUser(jobUser: any) {
   jobHuntList.value = [];
   jobHuntTotal.value = 0;
   getJobHunt();
+  // 查询服务记录
+  serviceRecordList.value = [];
+  getServiceRecords();
   // 关闭地图上的其他信息弹窗
   (map as any).closeInfoWindow();
   if (jobUser.longitude && jobUser.latitude) {
@@ -436,7 +465,7 @@ function checkJobUser(jobUser: any) {
     if (jobUser.labelList && jobUser.labelList.length > 0) {
       jobUser.labelList.forEach((item: any) => {
         labelHtml += `
-          <span style="padding: 2px 5px; background-color: #eaeaea; color: #545454; margin-right: 3px;margin-bottom: 3px;">${item.labelName}</span>
+          <span style="padding: 2px 5px; background-color: #F3F6F8; color: #899099; margin-right: 3px;margin-bottom: 3px;">${item.labelName}</span>
         `
       })
     }
@@ -452,7 +481,7 @@ function checkJobUser(jobUser: any) {
         </div>
         <div style="width: 100%; margin-top: 5px;">
           <span>服务情况:已推荐${jobUser.recommendedCount}次</span><br>
-          <span>入职情况:${jobUser.entryState == 1 ? '已入职' : '未入职'}</span><br>
+          <span>就业状态:${jobUser.jobStatusName}</span><br>
           <span>${jobUser.finishDate ? '毕业时间:' + jobUser.finishDate : ''}</span>
         </div>
       </div>
@@ -473,6 +502,9 @@ function checkJobUserById(jobUserID: any) {
   jobHuntList.value = [];
   jobHuntTotal.value = 0;
   getJobHunt();
+  // 查询服务记录
+  serviceRecordList.value = []
+  getServiceRecords();
   if (nowCheckJobUser.value.longitude && nowCheckJobUser.value.latitude) {
     // 设置地图中心点
     (map as any).centerAndZoom(new T.LngLat(nowCheckJobUser.value.longitude, nowCheckJobUser.value.latitude), (map as any).getZoom());
@@ -518,7 +550,14 @@ async function getJobHunt() {
   })
 }
 
-// 求助意向分页变更事件
+// 查询服务记录
+async function getServiceRecords() {
+  await getAllListByJobUserID(nowCheckJobUser.value.jobUserID).then((result: any) => {
+    serviceRecordList.value = result;
+  })
+}
+
+// 求职意向分页变更事件
 function jobHuntPaginationChange() {
   getJobHunt();
 }
@@ -690,6 +729,7 @@ export default {
           padding: 10px;
           box-sizing: border-box;
           border: 1px solid white;
+          box-shadow: 0 5px 5px -5px rgba(0, 0, 0, 0.3);
 
           .jobHunt-box {
             width: 100%;
@@ -769,6 +809,20 @@ export default {
     border-radius: 10px;
     padding: 10px;
 
+    .dataType-box {
+      height: 75%;
+
+      .serviceRecords-list {
+        width: 100%;
+        height: 100%;
+        overflow: hidden;
+        overflow-y: auto;
+        padding: 15px;
+        background-color: white;
+        border-radius: 10px;
+      }
+    }
+
     .jobUser-data-box {
       background-color: white;
       padding: 10px;
@@ -780,15 +834,16 @@ export default {
 
     .jobHunt-list-box {
       width: 100%;
-      height: calc(100% - 210px);
+      height: calc(100% - 50px);
       overflow: hidden;
       overflow-y: auto;
 
       .jobHunt-box {
         border-radius: 10px;
-        background-color: #d5f2ff;
+        background-color: white;
         padding: 8px 10px;
         margin-bottom: 10px;
+        box-shadow: 0 5px 5px -5px rgba(0, 0, 0, 0.3);
 
         .jobHunt-title {
           display: flex;
@@ -807,7 +862,7 @@ export default {
 
     .empty-box {
       width: 100%;
-      height: calc(100% - 210px);
+      height: calc(100% - 50px);
       display: flex;
       justify-content: center;
       align-items: center;