Rockery il y a 3 ans
Parent
commit
c431929b82

+ 12 - 0
h5_web/common/apiurl.js

@@ -77,6 +77,18 @@ const apiurl = {
     getPolicyInfoListUrl: '/policy/article/door/list',
     // 政策资讯详情
     getPolicyInfoDetailsUrl: '/policy/article/door/info'
+  },
+  
+  /**
+   * 招聘就业模块
+   */
+  recruitment: {
+    // 企业推荐列表
+    getRecommendListUrl: '/company/queryRecommendList',
+    // 招聘就业岗位列表
+    getRecruitmentJobListUrl: '/companypost/pageList',
+    // 岗位详情
+    getJobDetailsUrl: '/companypost/getDetail'
   }
 }
 

+ 12 - 1
h5_web/common/http.api.js

@@ -80,6 +80,16 @@ const install = (Vue, vm) => {
     // 政策资讯详情
     getPolicyInfoDetails: (params = {}) => vm.$u.get(apiurl.policyInfo.getPolicyInfoDetailsUrl, params)
   };
+  
+  // 招聘就业模块
+  let recruitment = {
+    // 企业推荐列表
+    getRecommendList: (params = {}) => vm.$u.get(apiurl.recruitment.getRecommendListUrl, params),
+    // 招聘就业岗位列表
+    getRecruitmentJobList: (params = {}) => vm.$u.get(apiurl.recruitment.getRecruitmentJobListUrl, params),
+    // 岗位详情
+    getJobDetails: (params = {}) => vm.$u.get(apiurl.recruitment.getJobDetailsUrl + params.id)
+  };
 	
 	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
 	vm.$u.api = {
@@ -109,7 +119,8 @@ const install = (Vue, vm) => {
 		getSchoolList,
 		school,
 		company,
-    policyInfo
+    policyInfo,
+    recruitment
 	};
 }
 

+ 8 - 7
h5_web/pages/policyInfo/policyInfo.vue

@@ -5,9 +5,9 @@
 
 <template>
   <view class="policyInfo">
-    <z-paging ref="paging"
+    <z-paging ref="policyInfoPaging"
       v-model="policyInfoList"
-      @query="queryList">
+      @query="policyInfoQueryList">
       <view class="policyInfo-banner"
         slot="top">
         <u-swiper :list="bannerList"
@@ -39,7 +39,7 @@
 
       <view class="policyInfo-list">
         <view class="list-container"
-          v-for="(item, index) in dataList"
+          v-for="(item, index) in policyInfoList"
           :key="index + 'policyInfoList'"
           @click="$u.route('/pages/policyInfo/policyInfoDetails',{artId:item.artId})">
           <view class="item">
@@ -77,8 +77,7 @@
         // 政策资讯列表
         policyInfoList: [],
         tabsList: [],
-        tabCurrent: 0,
-        dataList: []
+        tabCurrent: 0
       }
     },
     onLoad() {
@@ -160,12 +159,13 @@
           artCategoryId
         }).then(res => {
           if (res.code === 200) {
-            this.dataList = res.rows;
+            this.$refs.policyInfoPaging.complete(res.rows || []);
           } else {
             uni.showToast({
               icon: 'none',
               title: res.msg
             });
+            this.$refs.policyInfoPaging.complete([]);
           }
         }).catch(err => {
           // console.log("err: ",err);
@@ -173,6 +173,7 @@
             title: '系统异常!',
             type: 'error'
           });
+          this.$refs.policyInfoPaging.complete([]);
         });
       },
       // tab栏切换
@@ -183,7 +184,7 @@
       /**
        * 列表加载触发
        */
-      queryList(pageNo, pageSize) {
+      policyInfoQueryList(pageNo, pageSize) {
         if (this.tabsList.length > 0) {
           this.getList(this.tabCurrent, pageNo, pageSize, this.tabsList[this.tabCurrent]?.text);
         }

+ 163 - 84
h5_web/pages/recruitment/recruitment.vue

@@ -7,84 +7,96 @@
 	<view class="recruitment">
     <u-navbar title-color="#FFFFFF" :customBack="navbarCustomBack" :bpay-bottom="false" back-icon-color="#FFFFFF" :background="{background: '#3D5D4C' }" title="招聘就业" class="recruitment-unavbar" />
     
-    <!-- ###################################-- 轮播图 -- ################################### -->
-    <view class="recruitment-banner">
-      <u-swiper
-        :list="bannerList"
-        name="bannerUrl"
-        border-radius="0"
-        mode="round"
-        height="440"
-        img-mode="scaleToFill"
-        @click="swiperClick"
-      ></u-swiper>
-    </view>
-    
-    <!-- ###################################-- 请输入您关键词 -- ################################### -->
-    <view class="recruitment-usearch">
-       <u-search placeholder="请输入您关键词" v-model="headerTopKeyword" :show-action="false" bg-color="#FFFFFF"></u-search>
-    </view>
-    
-    <!-- ###################################-- 企业推荐 -- ################################### -->
-    <view class="u-card-wrap recruitment-recommend">
-    	<u-card :show-foot="false" class="recruitment-recommend-card">
-       <view slot="head">
-         <view class="recommend-card-head">
-            <view class="recommend-card-head-title">{{recommendConfigData.title}}</view>
-            <view class="recommend-card-head-subtitle" @tap="recommendCardMoreClick">
-              {{recommendConfigData.titlemore}}
-              <u-icon name="arrow-right" color="#A3A3A3" size="28"></u-icon>
-            </view>
-         </view>
-        </view>
-    		<view slot="body">
-          <view class="recommend-card-body">
-            <swiper
-            v-if="recommendListData&&recommendListData.length>0"
-            class="recommend-card-content" 
-            :display-multiple-items="5"
-            >
-              <swiper-item v-for="(item,index) in recommendListData" :key="index">
-                <view class="swiper-item" @tap="tapRecommendSwiperItem(item)" :data-id="item.id" :data-index="index">
-                  <image class="img" :src="item.img" mode="aspectFill"></image>
-                  <view class="subject">{{item.subject}}</view>
-                  <view class="post u-text-center">
-                    岗位
-                    <text class="postlink">{{item.postNumber}}</text>个
-                  </view>
-                </view>
-              </swiper-item>
-              <swiper-item v-if="recommendConfigData.listmore">
-                <view class="swiper-item lookmore" @tap="recommendCardMoreClick">
-                  <view class="moretext">查看更多</view>
-                </view>
-              </swiper-item>
-            </swiper>
+    <z-paging ref="recruitmentPaging"
+      v-model="recruitmentJobList"
+      @query="recruitmentQueryList">
+      
+      <!-- ###################################-- 轮播图 -- ################################### -->
+      <view class="recruitment-banner" slot="top">
+        <u-swiper
+          :list="bannerList"
+          name="bannerUrl"
+          border-radius="0"
+          mode="round"
+          height="440"
+          img-mode="scaleToFill"
+          @click="swiperClick"
+        ></u-swiper>
+      </view>
+      
+      <!-- ###################################-- 请输入您关键词 -- ################################### -->
+      <view class="recruitment-usearch" slot="top">
+         <u-search placeholder="请输入您关键词" v-model="headerTopKeyword" :show-action="false" bg-color="#FFFFFF" @search="searchKeyword" @clear="searchKeyword"></u-search>
+      </view>
+      
+      <!-- ###################################-- 企业推荐 -- ################################### -->
+      <view class="u-card-wrap recruitment-recommend" slot="top">
+      	<u-card :show-foot="false" class="recruitment-recommend-card">
+         <view slot="head">
+           <view class="recommend-card-head">
+              <view class="recommend-card-head-title">{{recommendConfigData.title}}</view>
+              <view class="recommend-card-head-subtitle" @tap="recommendCardMoreClick">
+                {{recommendConfigData.titlemore}}
+                <u-icon name="arrow-right" color="#A3A3A3" size="28"></u-icon>
+              </view>
+           </view>
           </view>
-    		</view>
-    	</u-card>
-    </view>
-    
-    <view class="recruitment-dataarea">
-    	<u-tabs bg-color="transparent" :list="dataAreaTabsList" @change="dataAreaTabsChange" :current="dataAreaTabsCurrent" />
-      <view class="recruitment-dataarea-card" v-for="(item,index) in recommendListData" :key="index" @tap="tapDataAreaCard(item)">
-        <view class="dataarea-card-left">
-          <image :src="item.img" mode="aspectFill" class="image"></image>
-        </view>
-        <view class="dataarea-card-content">
-          <view class="dataarea-content-left">
-            <view>{{item.postName}}</view>
-            <view class="content">{{item.postContent}}</view>
-            <view >{{item.postCompany}}</view>
+      		<view slot="body">
+            <view class="recommend-card-body">
+              <swiper
+              v-if="recommendList&&recommendList.length>0"
+              class="recommend-card-content" 
+              :display-multiple-items="5"
+              :autoplay="true"
+              >
+                <swiper-item v-for="(recommendItem, index) in recommendList" :key="recommendItem.id">
+                  <view class="swiper-item" @tap="tapRecommendSwiperItem(recommendItem)" :data-id="recommendItem.id" :data-index="index">
+                    <image class="img" :src="recommendItem.logoUrl" mode="aspectFill"></image>
+                    <view class="subject">{{recommendItem.companyName}}</view>
+                    <view class="post u-text-center">
+                      岗位
+                      <text class="postlink">{{recommendItem.postCount}}</text>个
+                    </view>
+                  </view>
+                </swiper-item>
+                <swiper-item v-if="recommendConfigData.listmore">
+                  <view class="swiper-item lookmore" @tap="recommendCardMoreClick">
+                    <view class="moretext">查看更多</view>
+                  </view>
+                </swiper-item>
+              </swiper>
+            </view>
+      		</view>
+      	</u-card>
+      </view>
+      
+      <!-- ###################################-- tabs页签 -- ################################### -->
+      <view class="recruitment-tabs" slot="top">
+        <u-tabs bg-color="transparent" :list="dataAreaTabsList" @change="dataAreaTabsChange" :current="dataAreaTabsCurrent" />
+      </view>
+      
+      
+      <!-- ###################################-- 招聘就业岗位 -- ################################### -->
+      <view class="recruitment-dataarea">
+        <view class="recruitment-dataarea-card" v-for="(item,index) in recruitmentJobList" :key="index" @tap="tapDataAreaCard(item)">
+          <view class="dataarea-card-left">
+            <image :src="item.companyLogoUrl" mode="aspectFill" class="image"></image>
           </view>
-          <view class="dataarea-content-right">
-            <view>{{item.postWage}}</view>
-            <view>&nbsp;</view>
-            <view>{{item.deadline}}</view>
+          <view class="dataarea-card-content">
+            <view class="dataarea-content-left">
+              <view>{{item.postName}}</view>
+              <view class="content">{{item.workPlace}}|{{item.workYear}}|{{item.educationBg}}</view>
+              <view >{{item.companyName}}</view>
+            </view>
+            <view class="dataarea-content-right">
+              <view>{{item.salary}}</view>
+              <view>&nbsp;</view>
+              <view>{{item.createTime}}</view>
+            </view>
           </view>
         </view>
       </view>
-    </view>
+    </z-paging>
 	</view>
 </template>
 
@@ -93,11 +105,10 @@
 		data() {
 			return {
         headerTopKeyword: '',
-				paginationConfig:{
-					  pageNo: 1,
-					  pageSize: 10
-				},
 				bannerList: [],
+        // 企业推荐列表
+        recommendList: [],
+        recruitmentJobList: [],
         recommendListData:[
         	{
         		id:1,
@@ -174,7 +185,8 @@
         dataAreaTabsCurrent: 0,
         dataAreaTabsList: [
           {
-            name: '最新'
+            name: '最新',
+            text: '1'
           }, 
           // {
           //   name:  '附近',
@@ -187,7 +199,8 @@
 		},
 		onLoad() {
 			// console.log(this.$u.config.v);
-			
+      // 获取企业推荐列表
+			this.getRecommendList();
 		},
 		onShow() {
 			this.getBannerList();
@@ -251,6 +264,76 @@
 					})
 				}
 			},
+      /**
+       * 获取企业推荐列表
+       */
+      getRecommendList() {
+        this.$u.api.recruitment.getRecommendList().then(res => {
+          if (res.code === 200) {
+            this.recommendList = res.data || [];
+          } else {
+            uni.showToast({
+              icon: 'none',
+              title: res.msg
+            });
+          }
+        }).catch(err => {
+          uni.showToast({
+            title: '系统异常!',
+            type: 'error'
+          });
+        });
+      },
+      /**
+       * 获取招聘就业岗位列表
+       * @param { Number } newest
+       * @param { Number } pageNum
+       * @param { Number } pageSize
+       * @param { String } postName
+       */
+      getRecruitmentJobList(newest, pageNum, pageSize, postName) {
+        this.$u.api.recruitment.getRecruitmentJobList({
+          pageNum,
+          pageSize,
+          postName,
+          newest
+        }).then(res => {
+          if (res.code === 200) {
+            this.$refs.recruitmentPaging.complete(res.rows || []);
+          } else {
+            uni.showToast({
+              icon: 'none',
+              title: res.msg
+            });
+            this.$refs.recruitmentPaging.complete([]);
+          }
+        }).catch(err => {
+          uni.showToast({
+            title: '系统异常!',
+            type: 'error'
+          });
+          this.$refs.recruitmentPaging.complete([]);
+        });
+      },
+			/**
+			 * @param { String } value
+			 */
+			searchKeyword(value) {
+				this.getRecruitmentJobList(this.dataAreaTabsList[this.dataAreaTabsCurrent]?.text, 1, 10, this.headerTopKeyword);
+			},
+      // tab栏切换
+      dataAreaTabsChange(index) {
+        this.dataAreaTabsCurrent = index;
+        this.getRecruitmentJobList(this.dataAreaTabsList[index]?.text, 1, 10, this.headerTopKeyword);
+      },
+      /**
+       * 列表加载触发
+       */
+      recruitmentQueryList(pageNo, pageSize) {
+        if (this.dataAreaTabsList.length > 0) {
+          this.getRecruitmentJobList(this.dataAreaTabsList[this.dataAreaTabsCurrent]?.text, pageNo, pageSize, this.headerTopKeyword);
+        }
+      },
       recommendCardMoreClick(index) {
         console.log("recommendCardMoreClick: ",index);
         this.$u.route({
@@ -261,18 +344,14 @@
         });
       },
       tapRecommendSwiperItem(param){
-        console.log("tapRecommendSwiperItem: ",param);
         this.$u.route({
         	url: 'pages/businessDetails/businessDetails',
         	params: {
+            id: param?.id,
         	  flag: 'recruitment'
         	}
         });
       },
-      dataAreaTabsChange(index) {
-        console.log("dataAreaTabsChange: ",index);
-      	this.dataAreaTabsCurrent = index;
-      },
       tapDataAreaCard(param){
         console.log("tapDataAreaCard: ",param);
         this.$u.route({

+ 14 - 2
h5_web/pages/recruitment/scss/recruitment.scss

@@ -7,11 +7,12 @@ page{background-color: #f2f2f2;}
   }
   
   &-usearch{
-    margin: 20rpx 30rpx;
+    margin: 20rpx 30rpx 0;
   }
   
   &-recommend{
     &-card{
+      margin: 20rpx 30rpx 0;
       .recommend-card-head{
         display: flex;
         flex-wrap: wrap;
@@ -36,10 +37,17 @@ page{background-color: #f2f2f2;}
         }
       }
       
+      ::v-deep .u-card__body{
+        padding: 30rpx 16px 0 !important;
+      }
+      
       .recommend-card-body{
         .recommend-card-content{
+          height: 220rpx !important;
+          // min-height: 208rpx !important;
+          
           .swiper-item{
-          	height: 101rpx;
+          	// height: 101rpx;
           	margin-right: 14rpx;
             text-align: center;
             
@@ -92,6 +100,10 @@ page{background-color: #f2f2f2;}
     }
   }
   
+  &-tabs{
+    padding: 0 30rpx 10rpx;
+  }
+  
   &-dataarea{
     padding: 0 30rpx;
     width: 100%;