Browse Source

feat: 驿站地图添加信息弹窗与驿站详情

zhangying 9 months ago
parent
commit
f0fcd1fc4c

+ 12 - 6
src/main/java/com/hz/employmentsite/controller/baseSettings/SiteInfoController.java

@@ -6,17 +6,15 @@ import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.model.SelectProps;
+import com.hz.employmentsite.services.service.AccountService;
+import com.hz.employmentsite.services.service.baseSettings.SiteInfoService;
 import com.hz.employmentsite.util.ExcelHelper;
 import com.hz.employmentsite.vo.baseSettings.SiteInfoVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import com.hz.employmentsite.services.service.baseSettings.SiteInfoService;
-import com.hz.employmentsite.services.service.AccountService;
+
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 @RestController
 @RequestMapping("/api/siteInfo/")
@@ -122,5 +120,13 @@ public class SiteInfoController {
         return RespGenerstor.success(result);
     }
 
+    /**
+     * 查询驿站的登记企业、岗位、求职者数量
+     */
+    @GetMapping("/dataCount")
+    public BaseResponse<Map> findSiteDataCount(@RequestParam String siteID){
+        Map<String, Object> result = siteInfoService.findSiteDataCount(siteID);
+        return RespGenerstor.success(result);
+    }
 
 }

+ 6 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/SiteInfoCQuery.java

@@ -4,6 +4,7 @@ import com.hz.employmentsite.vo.baseSettings.SiteInfoVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface SiteInfoCQuery {
     List<SiteInfoVo> getList(@Param("siteIDList") String siteIDList, @Param("siteCode") String siteCode,
@@ -11,4 +12,9 @@ public interface SiteInfoCQuery {
                              @Param("regionCode") String regionCode, @Param("streetCode") String streetCode);
 
     List<SiteInfoVo> getListByInstitutionID(@Param("institutionID") String institutionID);
+
+    /**
+     * 查询驿站的登记企业、岗位、求职者数量
+     */
+    Map<String, Object> findSiteDataCount(@Param("siteID") String siteID);
 }

+ 6 - 4
src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteInfoImpl.java

@@ -17,10 +17,7 @@ import com.hz.employmentsite.vo.baseSettings.SiteUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 @Service("SiteInfoService")
 public class SiteInfoImpl implements SiteInfoService {
@@ -215,4 +212,9 @@ public class SiteInfoImpl implements SiteInfoService {
         }
         return result;
     }
+
+    @Override
+    public Map<String, Object> findSiteDataCount(String siteID) {
+        return siteInfoCQuery.findSiteDataCount(siteID);
+    }
 }

+ 4 - 0
src/main/java/com/hz/employmentsite/services/service/baseSettings/SiteInfoService.java

@@ -3,7 +3,9 @@ package com.hz.employmentsite.services.service.baseSettings;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.model.SelectProps;
 import com.hz.employmentsite.vo.baseSettings.SiteInfoVo;
+
 import java.util.List;
+import java.util.Map;
 
 
 public interface SiteInfoService {
@@ -26,4 +28,6 @@ public interface SiteInfoService {
     Integer save(SiteInfoVo data, String userId);
 
     Integer delete(List<String> idList);
+
+    Map<String, Object> findSiteDataCount(String siteID);
 }

+ 7 - 0
src/main/resources/mapping/cquery/SiteInfoCQuery.xml

@@ -42,4 +42,11 @@
             and C.institutionID = #{institutionID}
         </if>
     </select>
+
+    <select id="findSiteDataCount" resultType="Map">
+        SELECT
+            (SELECT COUNT(1) FROM pc_company WHERE SiteID = #{siteID}) AS companyCount,
+            (SELECT COUNT(1) FROM pc_post post LEFT JOIN pc_company company ON post.CompanyID = company.CompanyID WHERE SiteID = #{siteID}) AS postCount,
+            (SELECT COUNT(1) FROM pc_jobuser WHERE SiteID = #{siteID}) AS jobUserCount;
+    </select>
 </mapper>

+ 13 - 0
vue/src/api/baseSettings/siteInfo.ts

@@ -100,3 +100,16 @@ export function delSite(data: any) {
     },
   );
 }
+
+export function findSiteDataCount(siteID: string) {
+  return request<object>(
+    {
+      url: 'siteInfo/dataCount',
+      method: 'get',
+      params: {siteID: siteID},
+    },
+    {
+      isNew: true,
+    },
+  );
+}

+ 49 - 32
vue/src/views/dataMap/siteDataMap.vue

@@ -83,10 +83,7 @@
                 驿站编号:{{ site.siteCode }}
               </p>
               <p class="label-text">
-                地点:{{ site.detailAddress }}
-              </p>
-              <p class="label-text">
-                站点工作人员:{{ site.siteUsers.length }}
+                所属县区:{{ site.regionName }}
               </p>
             </div>
             <!-- 驿站人员数据 -->
@@ -125,6 +122,18 @@
                         show-less-items @change="onSearch" simple :show-size-changer="false"/>
         </div>
       </div>
+      <!-- 驿站详情 -->
+      <div class="site-info-box" v-if="searchType == 'site' && nowCheckSite.siteID != -1">
+        <p class="font-size-16 font-weight-600 margin-bottom-10">{{ nowCheckSite.siteName }}</p>
+        <p class="margin-bottom-3">驿站编号:{{ nowCheckSite.siteCode }}</p>
+        <p class="margin-bottom-3">地点:{{ nowCheckSite.detailAddress }}</p>
+        <p class="margin-bottom-3">联系电话:{{ nowCheckSite.fzrMobile }}</p>
+        <p class="margin-bottom-8">站长:{{ nowCheckSite.fzrName }}</p>
+        <p class="margin-bottom-3">企业:{{ siteDataCount.companyCount }}家</p>
+        <p class="margin-bottom-3">岗位:{{ siteDataCount.postCount }}个</p>
+        <p class="margin-bottom-3">登记求职人员:{{ siteDataCount.jobUserCount }}人</p>
+        <p class="margin-bottom-3">站点工作人员:{{ nowCheckSite.siteUsers.length }}人</p>
+      </div>
       <!-- 驿站人员信息详情 -->
       <div class="site-user-info-box" v-if="searchType == 'siteUser' && nowCheckSiteUser.siteUserID != -1">
         <div class="user-info-box margin-bottom-10">
@@ -146,13 +155,13 @@
             工作情况
           </p>
           <p class="label-text font-size-14 margin-bottom-3">
-            企业登记数:{{ siteUserDataCount.companyCount }}
+            企业登记数:{{ siteUserDataCount.companyCount }}
           </p>
           <p class="label-text font-size-14 margin-bottom-3">
-            岗位登记数:{{ siteUserDataCount.postCount }}
+            岗位登记数:{{ siteUserDataCount.postCount }}
           </p>
           <p class="label-text font-size-14 margin-bottom-3">
-            求职人员登记数:{{ siteUserDataCount.jobUserCount }}
+            求职人员登记数:{{ siteUserDataCount.jobUserCount }}
           </p>
         </div>
       </div>
@@ -166,7 +175,7 @@ import {setBoundary} from "@/utils/position";
 import {onMounted, reactive, ref} from "vue";
 import type {SelectProps} from "ant-design-vue";
 import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
-import {getSiteList} from "@/api/baseSettings/siteInfo";
+import {findSiteDataCount, getSiteList} from "@/api/baseSettings/siteInfo";
 import thIcon from "@/assets/images/blueTh.png"
 import {findUserDataCount, getSiteUserDataMapList} from "@/api/baseSettings/userInfo";
 
@@ -208,6 +217,8 @@ const siteDicList = ref<any>([]);
 const nowCheckSite = ref<any>({siteID: -1})
 // 鼠标经过的站点
 const nowMouseenterSite = ref<any>({siteID: -1});
+// 驿站的业务数据
+const siteDataCount = ref<any>({})
 // 选中的站点
 const nowCheckSiteUser = ref<any>({siteUserID: -1})
 // 鼠标经过的站点
@@ -222,6 +233,8 @@ const initMap = () => {
   if (map != null) {
     // 设置地图显示中心点为惠州市人民政府
     (map as any).centerAndZoom(centerLngLat, zoom);
+    (map as any).setMinZoom(5);
+    (map as any).setMaxZoom(14);
 
     // 地图缩放监听事件
     (map as any).addEventListener("zoomend", function () {
@@ -335,26 +348,26 @@ function setSiteMarker(setCenter: boolean) {
           // 添加点击事件
           marker.addEventListener('click', () => {
             checkSite(item);
+            // marker.openInfoWindow(markerInfoWin);
+          });
+          let winHtml = `
+            <div >
+                <p style="line-height: 12px; font-size: 14px; font-weight: 600">${item.siteName}</p>
+                <span style="line-height: 12px;">驿站编号:${item.siteCode}</span>
+                <br>
+                <span style="line-height: 12px;">驿站地址:${item.detailAddress}</span>
+                <br>
+                <span style="line-height: 12px;">站点工作人员:${item.siteUsers.length}人</span>
+            </div>
+          `;
+          let markerInfoWin = new T.InfoWindow(winHtml, {autoPan: true});
+          // 添加鼠标经过事件
+          marker.addEventListener('mouseover', () => {
+            marker.openInfoWindow(markerInfoWin);
+          });
+          marker.addEventListener('mouseout', () => {
+            marker.closeInfoWindow();
           });
-          // let winHtml = `
-          //   <div >
-          //       <span style="line-height: 12px;">站点名称:${item.siteName}</span>
-          //       <br>
-          //       <span style="line-height: 12px;">驿站编号:${item.siteCode}</span>
-          //       <br>
-          //       <span style="line-height: 12px;">驿站地址:${item.detailAddress}</span>
-          //       <br>
-          //       <span style="line-height: 12px;">站点工作人员:${item.siteUsers.length}</span>
-          //   </div>
-          // `;
-          // let markerInfoWin = new T.InfoWindow(winHtml, {autoPan: true});
-          // // 添加鼠标经过事件
-          // marker.addEventListener('mouseover', () => {
-          //   marker.openInfoWindow(markerInfoWin);
-          // });
-          // marker.addEventListener('mouseout', () => {
-          //   marker.closeInfoWindow();
-          // });
           (map as any).addOverLay(marker);// 将标注添加到地图中
           markerList.value.push(marker);
         }
@@ -429,6 +442,10 @@ function computeMarkerSize(zoomLevel: any) {
 
 // 选择站点
 function checkSite(site: any) {
+  // 查询业务数据数量
+  findSiteDataCount(site.siteID).then((result: any) => {
+    siteDataCount.value = result;
+  })
   nowCheckSite.value = JSON.parse(JSON.stringify(site))
   if (site.siteLongitude && site.siteLatitude) {
     // 设置地图中心点
@@ -495,7 +512,7 @@ export default {
     width: 360px;
     position: absolute;
     top: 15px;
-    bottom: 15px;
+    bottom: 5px;
     left: 15px;
     right: 390px;
     z-index: 110;
@@ -508,8 +525,7 @@ export default {
     .select-data-box {
       height: calc(100% - 95px);
       background-color: #F8F8F8;
-      margin-bottom: 10px;
-      border-radius: 10px;
+      border-radius: 10px 10px 0 0;
       padding: 10px;
 
       .select-input-box {
@@ -545,12 +561,13 @@ export default {
     }
   }
 
-  .site-user-info-box {
+  .site-info-box, .site-user-info-box {
     width: 300px;
     position: absolute;
     top: 15px;
     left: calc(100% - 330px);
     right: 15px;
+    bottom: 15px;
     z-index: 110;
     border-radius: 10px;
     background-color: white;
@@ -562,7 +579,7 @@ export default {
     justify-content: center;
     padding: 10px 10px;
     background-color: #F8F8F8;
-    border-radius: 10px;
+    border-radius: 0 0 10px 10px;
   }
 
   .empty-box {