zhengkaixin 3 лет назад
Родитель
Сommit
4f1a08a945
88 измененных файлов с 4654 добавлено и 1727 удалено
  1. 3 1
      .env.dev.js
  2. 3 1
      .env.js
  3. 2 1
      .env.prod.js
  4. 4 1
      .env.test.js
  5. 5 1
      App.vue
  6. 5 1
      README.md
  7. 0 111
      apis/buytickets.js
  8. 0 9
      apis/car.js
  9. 50 12
      apis/common.js
  10. 16 0
      apis/hr/index.js
  11. 66 0
      apis/hr/my.js
  12. 18 0
      apis/hr/news.js
  13. 1 69
      apis/index.js
  14. 36 0
      apis/job/index.js
  15. 62 0
      apis/job/job.js
  16. 18 0
      apis/job/resume.js
  17. 74 0
      apis/login.js
  18. 2 2
      apis/my.js
  19. 0 21
      apis/news.js
  20. 0 21
      apis/query.js
  21. 0 19
      apis/remind.js
  22. 0 39
      apis/route.js
  23. 0 88
      apis/user.js
  24. 2 10
      apis/weixin.js
  25. 5 1
      bobo-router/index.js
  26. 10 131
      components/Common.vue
  27. 1 1
      components/TabbarJob.vue
  28. 144 0
      components/hr/ResumeItem.vue
  29. 121 0
      components/job/RecruitmentItem.vue
  30. 207 0
      components/job/ResumeAuth.vue
  31. 261 0
      components/job/companyInfo.vue
  32. 472 0
      console.js
  33. 14 1
      pages.json
  34. 84 7
      pages/hr/index/index.js
  35. 8 34
      pages/hr/index/index.vue
  36. 28 0
      pages/hr/index/recruitInfo/index.js
  37. 196 0
      pages/hr/index/recruitInfo/recruitInfo.vue
  38. 11 57
      pages/hr/my/collection/collection.vue
  39. 61 6
      pages/hr/my/collection/index.js
  40. 8 38
      pages/hr/my/enroll/enroll.vue
  41. 82 17
      pages/hr/my/enroll/index.js
  42. 8 25
      pages/hr/my/follow/follow.vue
  43. 39 4
      pages/hr/my/follow/index.js
  44. 26 5
      pages/hr/my/index.js
  45. 11 11
      pages/hr/my/my.vue
  46. 83 8
      pages/hr/my/position/index.js
  47. 18 58
      pages/hr/my/position/position.vue
  48. 2 2
      pages/hr/newsIndex/index.js
  49. 2 0
      pages/hr/newsIndex/newsIndex.vue
  50. 28 5
      pages/hr/newsIndex/servicesInfo/index.js
  51. 7 6
      pages/hr/newsIndex/servicesInfo/servicesInfo.vue
  52. 51 6
      pages/hr/newsIndex/servicesList/index.js
  53. 9 5
      pages/hr/newsIndex/servicesList/servicesList.vue
  54. 401 47
      pages/index/index.js
  55. 8 4
      pages/index/index.vue
  56. 135 28
      pages/job/index/index.js
  57. 13 22
      pages/job/index/index.vue
  58. 128 8
      pages/job/index/recruitInfo/index.js
  59. 76 121
      pages/job/index/recruitInfo/recruitInfo.vue
  60. 2 1
      pages/job/newsIndex/index.js
  61. 2 0
      pages/job/newsIndex/newsIndex.vue
  62. 0 160
      pages/job/personal/my/resumeAuth/resumeAuth.vue
  63. 44 8
      pages/job/personal/my/resumeCollect/index.js
  64. 11 40
      pages/job/personal/my/resumeCollect/resumeCollect.vue
  65. 68 11
      pages/job/personal/my/resumeList/index.js
  66. 7 36
      pages/job/personal/my/resumeList/resumeList.vue
  67. 39 21
      pages/job/personal/my/resumeLook/index.js
  68. 7 36
      pages/job/personal/my/resumeLook/resumeLook.vue
  69. 341 114
      pages/job/query/index.js
  70. 32 49
      pages/job/query/query.vue
  71. 280 0
      pages/login/index.js
  72. 1 1
      pages/login/passwordLogin/index.js
  73. 6 1
      pages/login/passwordLogin/passwordLogin.vue
  74. 45 45
      pages/login/phoneLogin/index.js
  75. 7 0
      pages/login/phoneLogin/phoneLogin.vue
  76. 1 1
      pages/login/vCode/index.js
  77. 7 0
      pages/login/vCode/vCode.vue
  78. 0 45
      pages/login/wxLogin/index.js
  79. 332 17
      pages/login/wxLogin/wxLogin.vue
  80. BIN
      static/img/blankpage.png
  81. 1 3
      utils/index.js
  82. 22 29
      utils/init.js
  83. 9 1
      utils/mixin.js
  84. 56 42
      utils/request.js
  85. 5 1
      utils/request2.js
  86. 67 0
      utils/request3.js
  87. 68 0
      utils/requestSon.js
  88. 69 0
      utils/requestWhite.js

+ 3 - 1
.env.dev.js

@@ -1,8 +1,10 @@
 const UNI_APP = {  
 	
-    BASE_URL: 'https://xpgjapi.xiaoxinda.com/' ,
+    BASE_URL: 'http://192.168.33.90:8086/jp-employment-server' ,
 	NODE_ENV :"dev",
 	SIMPLE_RUN:true,// 无视权限控制跳转页面   , 用于样式人员快速访问各种功能 ,快速测试等
+	openId:"oHjCawigqi8SEAwutwkQ-VEgdp3k",//测试用openId
+	
 	//小鹏管家appid
 	VUE_APP_WXAPPID:"wx7e70eb62a8459869"
 }  

+ 3 - 1
.env.js

@@ -8,7 +8,9 @@
             ENV_VAR = require('.env.dev.js');  
         } else if (NODE_ENV === 'test') {  
 			ENV_VAR = require('.env.test.js'); 
-        }  
+        }   else if (NODE_ENV === 'uat') {  
+			ENV_VAR = require('.env.uat.js'); 
+        } 
 		
     } else if (process.env.NODE_ENV === "production") {  
 		

+ 2 - 1
.env.prod.js

@@ -1,8 +1,9 @@
 const UNI_APP = {  
 	
-	BASE_URL: 'https://xpgjapi.xiaoxinda.com/' ,
+    BASE_URL: 'http://192.168.33.90:8086/jp-employment-server' ,
 	NODE_ENV :"prod",
 	SIMPLE_RUN:false,
+	openId:"oHjCawigqi8SEAwutwkQ-VEgdp3k",//测试用openId
 	//小鹏管家appid
 	VUE_APP_WXAPPID:"wx7e70eb62a8459869"
 	

+ 4 - 1
.env.test.js

@@ -1,8 +1,11 @@
 const UNI_APP = {  
 	//BASE_URL: 'http://192.168.33.120:8087/smart-bus-server/' ,
-	BASE_URL: 'https://xpgjapi.xiaoxinda.com/' ,
+	BASE_URL: 'http://192.168.33.90:8086/jp-employment-server' ,
+	
 	NODE_ENV :"test",
 	SIMPLE_RUN:false,
+	openId:"oHjCawigqi8SEAwutwkQ-VEgdp3k",//测试用openId
+	
 	//小鹏管家appid
 	VUE_APP_WXAPPID:"wx7e70eb62a8459869"
 

+ 5 - 1
App.vue

@@ -24,8 +24,12 @@
 <style lang="scss">
 	/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
 	@import "uview-ui/index.scss";
-
+	//
 	/*每个页面公共css */
 	//@import 'static/css/style.css';
 	@import 'static/font/iconfont.css';
+	.uni-icon-success-no-circle:before {
+	    content: "" !important ;
+		display: none;
+	}
 </style>

+ 5 - 1
README.md

@@ -59,4 +59,8 @@ redirectTo
 
 u-loadmore//加载更多
 
-[在线示例 uview](https://h5.uviewui.com/)
+[在线示例 uview](https://h5.uviewui.com/)
+
+	uni.showLoading({
+					    title: '加载中'
+					});

+ 0 - 111
apis/buytickets.js

@@ -1,111 +0,0 @@
-import request from '../utils/request.js';
-import Qs from 'qs';
-
-export function test(data) {
-	return request({
-		method: 'post',
-		data: data,
-		url: '/test/post'
-	})
-}
-
-//查询班次
-export function getShiftInfo(data) {
-	return request({
-		url: '/mobile/passengerApi/getShiftInfo',
-		data: {
-			id:data
-		},
-		method: 'post',
-	})
-}
-
-//查询站点
-export function getVehicleStationInfo(data) {
-	return request({
-		url: '/mobile/passengerApi/getVehicleStationInfo',
-		data: {
-			id:data
-		},
-		method: 'post',
-	})
-}
-//查询车辆
-export function getVehicleInfo(data) {
-	return request({
-		url: '/mobile/passengerApi/getVehicleInfo',
-		data: {
-			id:data
-		},
-		method: 'post',
-	})
-}
-//车牌号查询
-export function passengerApi(data) {
-	return request({
-		url: '/mobile/passengerApi/',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//匹配照片
-export function matchFaceImage(data) {
-	return request({
-		url: '/mobile/passengerApi/matchFaceImage',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//查询车辆
-export function getPassengerInfo(data) {
-	return request({
-		url: '/mobile/passengerApi/getPassengerInfo',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//查询未购票人数
-export function upBusNoTicketList(data) {
-	return request({
-		url: '/mobile/passengerApi/upBusNoTicketList',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//创建订单
-export function createPassengerOrder(data) {
-	return request({
-		url: '/mobile/passengerApi/createPassengerOrder',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-//修改订单
-export function updatePassengerOrder(data) {
-	return request({
-		url: '/mobile/passengerApi/updatePassengerOrder',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//查询金额
-export function ticketAmount(data) {
-	return request({
-		url: '/mobile/driverApi/ticketAmount',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-// 删除订单
-export function deletePassengerOrder(data) {
-	return request({
-		url: '/mobile/passengerApi/deletePassengerOrder',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}

+ 0 - 9
apis/car.js

@@ -1,9 +0,0 @@
-import request from '../utils/request.js';
-
-export function test(data) {
-	return request({
-		method: 'post',
-		data: data,
-		url: '/test/post'
-	})
-}

+ 50 - 12
apis/common.js

@@ -1,10 +1,39 @@
 import request from '@/utils/request'
+ 
 import Qs from 'qs';
 
+
+export function getBannerInfo(formData) {
+	return request({
+		url: '/mobile/bannerInfo/getBannerInfo',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+export function getScreenList(formData) {
+	return request({
+		url: '/mobile/recruitmentApi/getScreenList',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+//字典表
+export function getData(id) {
+	return request({
+		url: '/sys/dataDictionary/queryChildrenApi',
+		data: {
+			parentId:id
+		},
+		method: 'post',
+		timeout: 60000,
+	})
+}
 //上传图片
 export function upload(formData) {
 	return request({
-		url: '/mobile/passengerApi/upload',
+		url: '/mobile/jobUserApi/upload',
 		data: formData,
 		method: 'post',
 		
@@ -13,8 +42,17 @@ export function upload(formData) {
 
 //上传图片
 export function uploadBase64(formData) {
+	var localData = formData.photoFile?formData.photoFile:formData.photoBase64Data;
+	
+	if (localData.indexOf('data:image') != 0) {
+	    //判断是否有这样的头部
+	    localData = 'data:image/jpeg;base64,' + localData
+	}
+	formData.photoBase64Data = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+	
+	
 	return request({
-		url: '/mobile/personInfoApi/uploadBase64',
+		url: '/mobile/jobUserApi/uploadBase64',
 		data: formData,
 		method: 'post',
 		timeout: 60000,
@@ -30,16 +68,7 @@ export function getSchoolServeList(params) {
 	})
 }
 
-//获取banner图片
-export function getBannerInfo(type) {
-	return request({
-		url: '/mobile/bannerInfo/getBannerInfo',
-		data: Qs.stringify({
-			type: type
-		}),
-		method: 'post',
-	})
-}
+
 
 //综合订单
 export function mergeInfo(id) {
@@ -68,3 +97,12 @@ export function validateCode(params) {
 		method: 'post',
 	})
 }
+
+//验证验证码并登录
+export function submitAuthentication(params) {
+	return request({
+		url: '/mobile/jobUserApi/submitAuthentication',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}

+ 16 - 0
apis/hr/index.js

@@ -0,0 +1,16 @@
+import request from '@/utils/request'
+ 
+import Qs from 'qs';
+
+ 
+
+export function loadAllResumes(formData) {
+	return request({
+		url: '/mobile/recruiterApi/loadAllResumes',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+
+ 

+ 66 - 0
apis/hr/my.js

@@ -0,0 +1,66 @@
+ import request from '@/utils/request'
+  
+ import Qs from 'qs';
+ 
+ 
+ export function loadOwnRecruitments(data) {
+ 	return request({
+ 		url: '/mobile/recruiterApi/loadOwnRecruitments',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+
+
+ export function loadCollectResumes(data) {
+ 	return request({
+ 		url: '/mobile/recruiterApi/loadCollectResumes',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+ export function getAboutMe(data) {
+ 	return request({
+ 		url: '/mobile/recruiterApi/getAboutMe',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+
+ export function publishRecruitment(data) {
+ 	return request({
+ 		url: '/mobile/recruiterApi/publishRecruitment',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+ export function loadInterestList(data) {
+ 	return request({
+ 		url: '/mobile/recruiterApi/loadInterestList',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+
+
+export function loadJobManagement(data) {
+	return request({
+		method: 'post',
+		data: Qs.stringify(data),
+		url: '/mobile/recruiterApi/loadJobManagement'
+		
+	})
+}
+
+
+
+export function cancelCollectResume(id) {
+	return request({
+		method: 'post',
+		data: {
+			resumeId:id
+		},
+		url: '/mobile/recruiterApi/cancelCollectResume'
+		
+	})
+}

+ 18 - 0
apis/hr/news.js

@@ -0,0 +1,18 @@
+ import request from '@/utils/request'
+  
+ import Qs from 'qs';
+ 
+ 
+ export function getLabourList(data) {
+ 	return request({
+ 		url: '/mobile/labourApi/getLabourList',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+ export function getLabourDetails(id) {
+ 	return request({
+ 		url: '/mobile/labourApi/getLabourDetails/'+id,
+ 		method: 'post',
+ 	})
+ }

+ 1 - 69
apis/index.js

@@ -19,72 +19,4 @@ export function passengerMessageNoReadNum(data) {
 		method: 'post',
 	})
 }
-export function passengerNearbyStation(data) {
-	return request({
-		method: 'post',
-		data: Qs.stringify(data),
-		
-		url: '/mobile/passengerApi/passengerNearbyStation'
-	})
-}
-export function getBannerInfo(data) {
-	return request({
-		method: 'post',
-		data: {
-			type:data
-		},
-		
-		url: '/mobile/bannerInfo/getBannerInfo'
-		
-	})
-}
-//查询当前人
-export function queryRemind(data) {
-	return request({
-		method: 'get',
-	
-		url: '/mobile/stationRemindApi/findCurrentVehicle?openId='+data
-	})
-}
-// 创建
-export function saveRemind(data) {
-	return request({
-		method: 'post',
-		data: Qs.stringify(data),
-		
-		url: '/mobile/stationRemindApi/add'
-	})
-}
-
-export function cancelRemind(data) {
-	return request({
-		method: 'post',
-		data: {
-			id:data
-		},
-		url: '/mobile/stationRemindApi/cancel'
-	})
-}
-
-export function nearbyStationInfo(data) {
-	return request({
-		method: 'post',
-		data:data,
-		url: '/mobile/passengerApi/nearbyStationInfo'
-	})
-}
-
-export function getRegionList(data) {
-	return request({
-		method: 'post',
-		data:data,
-		url: '/mobile/passengerApi/getRegionList'
-	})
-}
-export function getOwnerRegion(data) {
-	return request({
-		method: 'post',
-		data:data,
-		url: '/mobile/passengerApi/getOwnerRegion'
-	})
-}
+  

+ 36 - 0
apis/job/index.js

@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+ 
+import Qs from 'qs';
+
+// 
+ 
+
+export function getRecruitmentList(formData) {
+	return request({
+		url: '/mobile/recruitmentApi/getRecruitmentList',
+		data: formData,
+		method: 'post',
+		
+	})
+}
+
+
+
+export function authenticationStatus() {
+	return request({
+		url: '/mobile/jobUserApi/authenticationStatus',
+		method: 'post',
+		
+	})
+}
+
+export function resumeStatus() {
+	return request({
+		url: '/mobile/resumeApi/resumeStatus',
+
+		method: 'post',
+		
+	})
+}
+
+ 

+ 62 - 0
apis/job/job.js

@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+ 
+import Qs from 'qs';
+
+export function getRelevantList(id) {
+	return request({
+		url: '/mobile/recruitmentApi/getRelevantList',
+	 	data: {
+			id:id
+		},
+		method: 'post',
+		
+	})
+}
+ export function getCompanyDetails(id) {
+ 	return request({
+ 		url: '/mobile/recruitmentApi/getCompanyDetails',
+ 	 	data: {
+ 			id:id
+ 		},
+ 		method: 'post',
+ 		
+ 	})
+ }
+  
+ 
+ 
+export function getRecruitmentDetails(id) {
+	return request({
+		url: '/mobile/recruitmentApi/getRecruitmentDetails',
+	 	data: {
+			recruitmentId:id
+		},
+		method: 'post',
+		
+	})
+}
+ 
+ //collectResume
+ export function deliverResume(id) {
+ 	return request({
+ 		url: '/mobile/resumeApi/deliverResume',
+ 		data: {
+			recruitmentId:id
+		},
+ 		method: 'post',
+ 		
+ 	})
+ }
+  
+  export function collectResume(id,status) {
+  	return request({
+  		url: '/mobile/resumeApi/collectResume',
+  		data: {
+			recruitmentId:id,
+			status:status
+		},
+  		method: 'post',
+  		
+  	})
+  }
+   

+ 18 - 0
apis/job/resume.js

@@ -0,0 +1,18 @@
+ import request from '@/utils/request'
+
+//collectResume
+ export function deliveryRecord(data) {
+ 	return request({
+ 		url: '/mobile/resumeApi/deliveryRecord',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+ export function pagedLoad(data) {
+ 	return request({
+ 		url: '/mobile/userBrowseApi/pagedLoad',
+ 		data: data,
+ 		method: 'post',
+ 	})
+ }
+ 

+ 74 - 0
apis/login.js

@@ -0,0 +1,74 @@
+ import requestWhite from '../utils/requestWhite.js';
+import Qs from 'qs';
+
+ 
+export function findByOpenId(data) {
+	var url=""
+	if(data.form=="job"){
+		url='/mobile/jobUserApi/findByOpenId';
+	}else if(data.form=="hr"){
+		url='/mobile/sysUserApi/findByOpenId';
+	}else{
+		return 
+	}
+	return requestWhite({
+		method: 'post',
+		data: data,
+		url: url
+	})
+}
+
+export function wechatLogin(data) {
+	 
+	 var url=""
+	 if(data.form=="job"){
+	 	url='/mobile/jobUserApi/wechatLogin';
+	 }else if(data.form=="hr"){
+	 	url='/mobile/sysUserApi/wechatLogin';
+	 }else{
+	 	return 
+	 }
+	 
+	return requestWhite({
+		method: 'post',
+		data:data ,
+		url:url 
+	})
+} 
+export function validateCode(tel) {
+	 
+	return requestWhite({
+		method: 'post',
+		data:{
+			telephone:tel
+		} ,
+		url: '/mobile/jobUserApi/validateCode'
+	})
+} 
+
+export function getVerifyCode(data) {
+	 
+	return requestWhite({
+		method: 'post',
+		data:data ,
+		url: '/mobile/jobUserApi/getVerifyCode'
+	})
+} 
+
+export function passwordLogin(data) {
+	 
+	 var url=""
+	 if(data.form=="job"){
+	 	url='/mobile/jobUserApi/passwordLogin';
+	 }else if(data.form=="hr"){
+	 	url='/mobile/sysUserApi/passwordLogin';
+	 }else{
+	 	return 
+	 }
+	 
+	return requestWhite({
+		method: 'post',
+		data:data ,
+		url: url
+	})
+} 

+ 2 - 2
apis/my.js

@@ -64,6 +64,6 @@ export function helpCenterList() {
 		method: 'post',
 	
 		url: '/mobile/passengerApi/helpCenterList'
-		
 	})
-}
+}
+

+ 0 - 21
apis/news.js

@@ -1,21 +0,0 @@
-import request from '../utils/request.js';
-import Qs from 'qs';
-
-export function routeDetail(data) {
-	return request({
-		method: 'post',
-		data: {
-			id:data
-		},
-		
-		url: '/mobile/passengerApi/routeDetail'
-	})
-}
-
-export function passengerMessage(data) {
-	return request({
-		method: 'post',
-		data: Qs.stringify(data),
-		url: '/mobile/passengerApi/passengerMessage'
-	})
-}

+ 0 - 21
apis/query.js

@@ -1,21 +0,0 @@
-import request from '../utils/request.js';
-import Qs from 'qs';
-
-export function routeDetail(data) {
-	return request({
-		method: 'post',
-		data: {
-			id:data
-		},
-		
-		url: '/mobile/passengerApi/routeDetail'
-	})
-}
-
-export function routeList(data) {
-	return request({
-		method: 'post',
-		data: data,
-		url: '/mobile/passengerApi/routeList'
-	})
-}

+ 0 - 19
apis/remind.js

@@ -1,19 +0,0 @@
-import request from '../utils/request.js';
-import Qs from 'qs';
-
-export function passengerRemindList(data) {
-	return request({
-		method: 'post',
-		data: data,
-		
-		url: '/mobile/passengerApi/passengerRemindList'
-	})
-}
-
-export function updateStationNum(data) {
-	return request({
-		method: 'post',
-		data: Qs.stringify(data),
-		url: '/mobile/stationRemindApi/updateStationNum'
-	})
-}

+ 0 - 39
apis/route.js

@@ -1,39 +0,0 @@
-import request from '../utils/request.js';
-import Qs from 'qs';
-
-export function routeDetail(data) {
-	return request({
-		method: 'post',
-		data: {
-			id:data
-		},
-		
-		url: '/mobile/passengerApi/routeDetail'
-	})
-}
-
-export function routeShiftList(data) {
-	return request({
-		method: 'post',
-		data: data,
-		url: '/mobile/passengerApi/routeShiftList'
-	})
-}
-
-
-export function passengerShiftRemindList(data) {
-	return request({
-		method: 'post',
-		data:data,
-		url: '/mobile/passengerApi/passengerShiftRemindList'
-	})
-}
-
-
-export function vehicleStationDis(data) {
-	return request({
-		method: 'post',
-		data:data,
-		url: '/mobile/passengerApi/vehicleStationDis'
-	})
-}

+ 0 - 88
apis/user.js

@@ -1,88 +0,0 @@
-import request from '@/utils/request'
-import Qs from 'qs';
-
-//帐号密码登录
-export function loginUserName(data) {
-	return request({
-		url: '/mobile/personInfoApi/loginByPassword',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//退出登录
-export function loginOut() {
-	return request({
-		url: '/mobile/personInfoApi/logOut',
-		data: {},
-		method: 'post',
-	})
-}
-
-//获取短信验证码
-export function getVerifyCode(data) {
-	return request({
-		url: '/mobile/passengerApi/getVerifyCode',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-export function userUpdatePhone(data) {
-	return request({
-		url: '/mobile/passengerApi/userUpdatePhone',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-//验证短信验证码
-export function validateCode(data) {
-	return request({
-		url: '/mobile/passengerApi/validateCode',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//重置密码
-export function resetPassword(data) {
-	return request({
-		url: '/mobile/personInfoApi/resetPassword',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//获取基础信息
-export function getBasicInformation() {
-	return request({
-		url: '/mobile/personInfoApi/basicInformation',
-		method: 'post',
-	})
-}
-
-//提交基础信息
-export function submitBasicInformation(data) {
-	return request({
-		url: '/mobile/personInfoApi/updateBasicInformation',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}
-
-//关于企联
-export function getAboutInfo() {
-	return request({
-		url: '/mobile/enterpriseInfoApi/enterpriseInfo',
-		method: 'post',
-	})
-}
-
-//变更手机号
-export function changePhone(data) {
-	return request({
-		url: '/mobile/personInfoApi/validateCodeAndUpdatePhone',
-		data: Qs.stringify(data),
-		method: 'post',
-	})
-}

+ 2 - 10
apis/weixin.js

@@ -1,4 +1,5 @@
 import request from '@/utils/request'
+ 
 import Qs from 'qs';
 
 //微信支付
@@ -20,16 +21,7 @@ export function getDataByCode(code) {
 	})
 }
 
-//获取用户信息
-export function getDataByOpenId(openId) {
-	return request({
-		url: '/mobile/personInfoApi/findByOpenId',
-		data: Qs.stringify({
-			openId: openId
-		}),
-		method: 'post',
-	})
-}
+
 
 //获得配置
 export function getConfig() {

+ 5 - 1
bobo-router/index.js

@@ -29,7 +29,11 @@ uniCrazyRouter.afterEach((to, from) => {
 
 uniCrazyRouter['on' + 'Error']((to, from) => {
 	// 逻辑代码
-	console.log("Error")
+	console.log("Error+start")
+	console.log(to)
+	console.log(from)
+	console.log("Error+end")
+	
 })
 
 import Router from './bobo-router'

+ 10 - 131
components/Common.vue

@@ -1,28 +1,24 @@
 <template >
 	<view>
-		<u-toast ref="uToast"  />
-		<u-loading :show="false"></u-loading>
-		<u-modal v-model="show" :content="content" :confirm-text="confirmtext?confirmtext:'确定'" @confirm="confirmBtn" :title="title?title:'提示'"></u-modal>
-		<u-modal v-model="show2" :show-cancel-button="true" :content="content" :confirm-text="confirmtext?confirmtext:'确定'" :cancel-text="canceltext?canceltext:'取消'" @confirm="confirmBtn" @cancel="cancelBtn" :title="title?title:'提示'"></u-modal>
-		
+	
+	
 		<u-navbar v-if="mytitle" :title="mytitle" :is-back="noback" :border-bottom="!noback">
 				<view class="slot-wrap"></view>	
 		</u-navbar>
-		<view v-show="false"  :login="islogin()" ></view>	
  		
 	</view>
 </template>
 
 <script>
-	import * as API from '@/apis/common.js'
-	import * as API_WeiXin from '@/apis/weixin.js'
+	//import * as API from '@/apis/common.js'
+	
 	
  	export default {
 		name:"Common",
 		props:{
 			login: {
 				require: false,
-				default: false,
+				default: true,
 			},
 			noback:{
 				require: false,
@@ -35,133 +31,16 @@
 		},
 		data() {
 			return {
-				
-				isloginBl:true,
-				show:false,
-				show2:false,
-				fnc:null,
-				fncCancel:null,
-				fncBl:false,
-				content:null,
-				confirmtext:null,
-				title:null,
-				canceltext:null,
-				whiteList:[
-					
-				],
+				 
 			};
 			
 		},methods:{
-			
-			getDataByOpenId() {
-				var openId=this.carhelp.getOpenId()
-				if (process.car.SIMPLE_RUN) {
-					//测试账号
-					openId="oHjCawigqi8SEAwutwkQ-VEgdp3k"
-				}
-				if(!openId){
-					return
-				}
-				var tdate=new Date( +new Date() + 8 * 3600 * 1000 ).toJSON().substr(0,15).replace("T"," ")
-				var _this=this
-				var token=this.carhelp.get("token_tdate");//每10分钟存储一次token
-				if(token&&token[0]==tdate){
-					return
-				}
-				this.carhelp.setToken("");
-				API_WeiXin.getDataByOpenId(openId).then(response => {
-			
-					var token = response ? response.data.token : '';
-					this.carhelp.setToken(token);
-					 
-					this.carhelp.set("token_tdate",[tdate]);
-					this.$emit("getToken")
-				}).catch(error => {
-					_this.toast(error)
-				})
-			},
-			islogin(){
-				if(this.login){
-					if (!this.carhelp.getPersonInfo()) {
-						var route_path = window.location.href.split("#")[1];
-						
-						uni.reLaunch({
-							url: '/pages/car/login'
-						})
-					}
-				}
-			},
-			goError(message){
-				this.setFnc(function(){
-					uni.switchTab({
-					    url: '/pages/index/index'
-					});
-				})
-				this.alert(message?message:'访问链接异常','前往首页')
-				
-			},
-			setFnc(fnc,fncCancel){
-				
-				this.fnc=fnc;
-				this.fncCancel=fncCancel;
-				this.fncBl=true
-			},
-			alert(content,confirmtext,title){
-				this.show=true;
-				this.content=content;
-				this.confirmtext=confirmtext;
-				this.title=title;
-				 uni.hideLoading();
-			},
-			confirm(content,confirmtext,title,canceltext){
-				this.show2=true;
-				this.content=content;
-				this.confirmtext=confirmtext;
-				this.canceltext=canceltext;
-				this.title=title;
-				 uni.hideLoading();
-			},
-			cancelBtn(){
-				if(this.fncCancel){
-					this.fncCancel()
-					this.fncBl=false;	
-				}
-			},
-			confirmBtn(){
-				
-				if(this.fncBl){
-					this.fnc()
-					this.fncBl=false;	
-				}
-			},
-			showLoading(bl,message){
-				if(bl==null ||bl){
-					// request  要改同步改
-					uni.showLoading({
-						mask:true,title:'加载中...'
-					})
-				}else{
-					  uni.hideLoading();
-					  if(message){
-						  this.toast(message)
-					  }
-				}
-				
-			},
-			mes(message,fnc){
-				this.toast(message,fnc)
-			},
-			toast(message,fnc){
-				this.$refs.uToast.show({
-					title: message,
-					type:'default',
-					position:'bottom',
-					callback:fnc
-				})
-			}
+			 
+			  
 		},mounted(){
 				console.log("common-mounted")
-				this.getDataByOpenId();
+				
+				
 		},destroyed(){
 			
 		}

+ 1 - 1
components/TabbarJob.vue

@@ -39,7 +39,7 @@
 										iconPath: "account",
 										selectedIconPath: "account",
 										text: '我的',
-										pagePath2:"/pages/job/personal/personal",
+										pagePath2:"/pages/job/personal/my/my",
 										customIcon: false,
 									},
 								],

+ 144 - 0
components/hr/ResumeItem.vue

@@ -0,0 +1,144 @@
+<template>
+	<view class="jp-work-item" @click="ckBtn">
+		<view class="jp-work-name">
+			<h3>{{item.positionCategoryName}}</h3>
+			<span>{{item.dreamMoney}}</span>
+		</view>
+		<view class="jp-work-tag" >
+			<u-tag   :text="item.jobStatus" mode="dark"
+				bg-color="#f1f1f7" color="#999" size="mini" />
+
+		</view>
+		<view class="jp-work-info">
+			<view class="u-flex">
+
+				<p>{{item.sex}}|{{item.age}}岁|{{item.workExp}}|{{item.education}}</p>
+			</view>
+
+		</view>
+		<view class="jp-work-info">
+			<view class="u-flex">
+				<u-avatar :src="item.headImage" size="40"></u-avatar>
+				<p>{{item.realName}}</p>
+				<p v-if="mode==2" >{{item.address}}</p>
+			</view>
+			<p v-if="mode!=2" >{{item.address}}</p>
+			<u-button size="mini" style="margin:0;" v-if="mode==2" @click="$emit('mode2',item.resumeId)">删除</u-button>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "Common",
+		props: {
+			item: {
+				require: true,
+				default: {},
+			},
+			ck: {
+				require: false,
+				default: true
+			},
+			obj: {
+				require: false,
+				default: null
+			},
+			mode:{
+				require: false,
+				default: 1
+			},
+		},
+		data() {
+			return {
+
+			};
+
+		},
+		methods: {
+			ckBtn() {
+				if (this.ck) {
+					this.gotoUrl('pages/job/index/recruitInfo/recruitInfo?id=' + this.item.id)
+				} else {
+					this.$emit("ckItem", this.item.id)
+				}
+			},
+			spiltItem(text) {
+				if (text) {
+					return text.split(",")
+
+				} else {
+					return []
+				}
+			},
+
+		},
+		mounted() {
+			if (this.obj) {
+				var sz = this.obj.split(",");
+				for (var i in sz) {
+					var string1 = sz[i].split("=")[0];
+					var string2 = sz[i].split("=")[1];
+					this.item[string2] = this.item[string1];
+
+				}
+				this.$forceUpdate()
+			}
+
+		},
+		destroyed() {
+
+		}
+
+	}
+</script>
+
+<style scoped lang="scss">
+	.jp-work-item {
+		padding: 30rpx;
+		background-color: #fff;
+		border-bottom: 1px solid #f7f7f7;
+
+		&:last-child {
+			border-bottom: none;
+		}
+
+		.jp-work-name {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+
+			h3 {
+				font-size: 36rpx;
+			}
+
+			span {
+				font-size: 32rpx;
+				color: #FF1700
+			}
+		}
+
+		.jp-work-tag {
+			display: flex;
+			align-items: center;
+			margin-top: 10rpx;
+
+			* {
+				margin-right: 10rpx;
+			}
+		}
+
+		.jp-work-info {
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-top: 10rpx;
+
+			p {
+				color: #999;
+				font-size: 24rpx;
+				margin-left: 10rpx;
+			}
+		}
+	}
+</style>

+ 121 - 0
components/job/RecruitmentItem.vue

@@ -0,0 +1,121 @@
+<template >
+	<view class="jp-work-item"   @click="ckBtn">
+		<view class="jp-work-name">
+			<h3>{{item.title}}</h3>
+			<span>{{item.wageTypeN}}</span>
+		</view>
+		<view class="jp-work-tag" v-if="item.requirements">
+			<u-tag  v-for="(text,index) in spiltItem(item.requirements)" :key="index"  :text="text" mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
+			 
+		</view>
+		<view class="jp-work-info">
+			<view class="u-flex">
+				<u-avatar :src="item.logo" size="40"></u-avatar>
+				<p>{{item.name}} {{item.scaleName}}</p>
+			</view>
+			<p>{{item.cityName}}</p>
+		</view>
+	</view>	
+</template>
+
+<script>
+  	
+ 	
+ 	export default {
+		name:"Common",
+		props:{
+			item: {
+				require: true,
+				default: {},
+			},
+			ck:{
+				require: false,
+				default:true
+			},
+			obj:{
+				require: false,
+				default:null
+			}
+		},
+		data() {
+			return {
+				 
+			};
+			
+		},methods:{
+			ckBtn(){
+				if(this.ck){
+					this.gotoUrl('pages/job/index/recruitInfo/recruitInfo?id='+this.item.id)
+				}else{
+					this.$emit("ckItem",this.item.id)
+				}
+			},
+			 spiltItem(text){
+			 	if(text){
+			 		return text.split(",")
+			 		
+			 	}else{
+			 		return []
+			 	}
+			 },
+			  
+		},mounted(){
+			 if(this.obj){
+				 var sz=this.obj.split(",");
+				 for(var i in sz ){
+					 var string1 = sz[i].split("=")[0];
+					 var string2 = sz[i].split("=")[1];
+					 this.item[string2]=this.item[string1];
+					 
+				 }
+				this.$forceUpdate()
+			 }
+				
+		},destroyed(){
+			
+		}
+		
+	}
+</script>
+
+<style scoped lang="scss">
+	.jp-work-item{
+		padding:30rpx;
+		background-color: #fff;
+		border-bottom: 1px solid #f7f7f7;
+		&:last-child{
+			border-bottom:none;
+		}
+		.jp-work-name{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			h3{
+				font-size: 36rpx;
+			}
+			span{
+				font-size: 32rpx;
+				color:#FF1700
+			}
+		}
+		.jp-work-tag{
+			display: flex;
+			align-items: center;
+			margin-top: 10rpx;
+			*{
+				margin-right: 10rpx;
+			}
+		}
+		.jp-work-info{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-top: 10rpx;
+			p{
+				color:#999;
+				font-size: 24rpx;
+				margin-left: 10rpx;
+			}
+		}
+	}
+</style>

+ 207 - 0
components/job/ResumeAuth.vue

@@ -0,0 +1,207 @@
+<template>
+	<view>
+		<u-navbar title="实名认证" :is-back="false"></u-navbar>
+		<view class="id-input">
+			<view class="title">
+				真实姓名
+			</view>
+			<u-input v-model="authData.name" placeholder="请输入您的真实姓名" input-align="right" />
+		</view>
+		<view class="id-input">
+			<view class="title">
+				身份证号
+			</view>
+			<u-input v-model="authData.idCard" placeholder="请输入18位身份证号" input-align="right" />
+		</view>
+		<view class="id-upload">
+			<view class="title">
+				请上传身份证的正反面
+			</view>
+			<view class="id-upload-item"  @click="uploadPic('positiveUrl')">
+				<view class="id-upload-left">
+					<h4>头像面</h4>
+					<p>上传您的身份证头像面</p>
+				</view>
+				<view class="id-upload-right">
+					
+ 					
+					<u-image width="100%" height="220rpx"   :src="authData.positiveUrl?authData.positiveUrl:require('@/static/img/id2.png')"></u-image>
+					
+				</view>
+			</view>
+			<view class="id-upload-item"  @click="uploadPic('reverseUrl')">
+				<view class="id-upload-left">
+					<h4>国徽面</h4>
+					<p>上传您的身份证国徽面</p>
+				</view>
+				<view class="id-upload-right">
+					<u-image width="100%" height="220rpx"   :src="authData.reverseUrl?authData.reverseUrl:require('@/static/img/id1.png')"></u-image>
+					
+				</view>
+			</view>
+		</view>
+		<view class="jp-btn">
+			<u-button type="primary" @click="authSubmit">提交</u-button>
+		</view>
+	</view>
+</template>
+
+
+<script>
+	import * as API_Common from '@/apis/common.js'
+ 	
+ 	import * as WxJsApi from '@/utils/wxJsApi.js'
+	import {
+			checkIdCard
+		} from '@/utils'
+ 	export default {
+		name:"Common",
+		props:{
+			 
+		},
+		data() {
+			return {
+				isReady:false,
+				authData:{} 
+			};
+			
+		},methods:{
+			uploadPic(key){
+				if(!this.isReady){
+					return
+				}
+				 WxJsApi.chooseImage().then(res=>{
+					 
+					var formData = {
+						'photoName': '1.jpg',
+						'photoFile': res.localData
+					}
+					uni.showLoading({
+					  	title:"加载中"
+					  })
+					
+						API_Common.uploadBase64(formData).then(response => {
+							
+							this.authData[key]=response.data
+							console.log(this.authData);
+ 							uni.showToast({
+										title:"上传成功",
+										icon:"none"
+							})
+							this.$forceUpdate()
+						}).catch(error => {
+							uni.showToast({
+										title:error,
+										icon:"none"
+							})	
+						})
+				 })
+			 
+			},
+			authSubmit(){
+				uni.showLoading({
+				  	title:"加载中"
+				  })
+				  var checkIdCardResult = checkIdCard(this.authData.idCard);
+				  if (checkIdCardResult !== true) {
+				  	 uni.showToast({
+						 	icon:"none",
+				  	 	title:checkIdCardResult
+				  	 })
+					 
+				  } else if (!this.authData.name) {
+						uni.showToast({
+							icon:"none",
+							title:"请填写姓名"
+						})
+				  }else if (false&&!this.authData.positiveUrl) {
+						uni.showToast({
+							icon:"none",
+							title:"请上传身份证人脸面"
+						})
+				  }else if (false&&!this.authData.reverseUrl) {
+						uni.showToast({
+							icon:"none",
+							title:"请上传身份证国徽面"
+						})
+				  }else{
+					  API_Common.submitAuthentication(this.authData).then((response) => {
+					  		var obj=this.carhelp.getPersonInfo()
+							obj.isAuthentication=2;
+							this.carhelp.setPersonInfo(obj)
+							
+					  	 this.$emit("authSubmit")
+					  }).catch(error => {
+					  	uni.showToast({
+					  				title:error,
+					  				icon:"none"
+					  	})
+					  })
+				  }
+				  
+				
+			},
+			  
+			  
+		},mounted(){
+			 
+			  WxJsApi.getWxConfig(['chooseImage']).then(()=>{
+			 	 this.isReady=true;
+			  });
+				
+		},destroyed(){
+			
+		}
+		
+	}
+</script>
+
+<style>
+	page{
+		background-color: #f7f7f7;
+	}
+</style>
+ 
+<style scoped lang="scss">
+	.id-input{
+		background-color: #fff;
+		margin: 20rpx;
+		padding: 20rpx 30rpx;
+		border-radius: 20rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		.title{
+			font-size: 32rpx;
+		}
+	}
+	.id-upload{
+		margin:40rpx 20rpx;
+		.title{
+			font-size: 32rpx;
+		}
+	}
+	.id-upload-item{
+		margin-top: 20rpx;
+		background-color: #fff;
+		border-radius: 20rpx;
+		display: flex;
+		padding: 30rpx;
+		justify-content: space-between;
+		.id-upload-left{
+			h4{
+				margin-bottom: 10rpx;
+				font-size: 32rpx;
+			}
+			p{
+				color:#999;
+			}
+		}
+		.id-upload-right{
+			width: 340rpx;
+		}
+	}
+	.jp-btn{
+		margin: 20rpx;
+	}
+</style>

+ 261 - 0
components/job/companyInfo.vue

@@ -0,0 +1,261 @@
+<template>
+	<view>
+		<u-navbar title="公司详情" :custom-back="back" ></u-navbar>
+		<view class="resumeInfo">
+			<view class="resumeInfo-company">
+				<view class="resumeInfo-company-text">
+					<view class="resumeInfo-company-name">
+						<h3>{{companyInfo.name}}</h3>
+						<view class="u-flex">
+							<span>{{companyInfo.scale}}</span>
+							<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
+							<span>{{companyInfo.industry}}</span>
+						</view>
+					</view>	
+				</view>
+				<u-avatar :src="companyInfo.logo" size="100" mode="square"></u-avatar>
+			</view>
+			<view class="resumeInfo-info-foot">
+				<view class="resumeInfo-title">
+					公司地址
+				</view>
+				<view class="resumeInfo-address">
+					{{companyInfo.address}}
+				</view>
+			</view>
+		</view>
+		<view class="jp-work">
+			<view class="jp-work-title">
+				招聘岗位({{recordsTotal}})
+			</view>
+			<view class="jp-work-list">
+				  
+				 <RecruitmentItem v-for="(item ,index) in list" :key="item.id" :item="item" :ck="false" @ckItem="ckBtn" ></RecruitmentItem>
+				 
+			</view>
+		</view>
+	</view>
+</template>
+
+
+<script>
+	import * as API from '@/apis/job/job.js'
+	
+	import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
+	
+ 	export default {
+		name:"Common",
+		props:{
+			vshow: {
+				require: true,
+				default: false,
+			},
+			companyId:{
+				require: false,
+				default:""
+			},
+			companyInfo:{
+				require: false,
+				default:{}
+			}
+		},
+		components:{RecruitmentItem},
+		data() {
+			return {
+				recordsTotal:0,
+				 myCompanyId:null,
+				list:[],
+			};
+			
+		},methods:{
+			back(){
+				this.$emit("back")
+			},
+			ckBtn(id){
+				this.$emit("ckItem",id)
+			},
+			getInfo(){
+				uni.showLoading({
+					title:"加载中"
+				})
+				API.getCompanyDetails(this.companyId).then((res)=>{
+					this.myCompanyId=this.companyId
+					  this.list=res.data.data;
+					  this.recordsTotal=res.data.recordsTotal
+					  
+					 //this.list=res
+					 uni.hideLoading()		
+				 }).catch(error => {
+						uni.showToast({
+							title:error
+						})
+				})
+				
+			}
+		},mounted(){
+			 
+				
+		},destroyed(){
+			
+		},watch:{
+			vshow:function(val) {
+				
+				if(val&&this.companyId&&(!this.myCompanyId||(this.myCompanyId&&this.companyId!=this.myCompanyId))){
+					this.getInfo()
+				}
+			}
+		}
+		
+	}
+</script>
+
+<style>
+	page{
+		background-color: #F7F7F7;
+	}
+</style>
+ 
+<style scoped lang="scss">
+	
+	.resumeInfo-info{
+		padding-top: 20rpx;
+		.resumeInfo-info-head{
+			font-size: 36rpx;
+			font-weight: bold;
+		}
+		.resumeInfo-info-main{
+			padding: 20rpx 0;
+		}
+	}
+	.resumeInfo-info-foot{
+		margin-top: 40rpx;
+		.resumeInfo-title{
+			color:#999;
+		}
+		.resumeInfo-address{
+			flex: 1;
+			min-width: 0;
+			margin-top: 10rpx;
+		}
+	}
+	.resumeInfo{
+		background-color: #fff;
+		padding: 20rpx;
+		margin-bottom: 20rpx;
+		.resumeInfo-row{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-bottom: 10rpx;
+			h3{
+				font-size: 46rpx;
+			}
+			span{
+				color:#2295FF;
+				border: 1px solid #2295FF;
+				padding: 0 10rpx;
+				border-radius: 6rpx;
+			}
+			.jp-work-tag{
+				display: flex;
+				align-items: center;
+				*{
+					margin-right: 10rpx;
+				}
+			}
+			h2{
+				color:#FF6D58;
+				font-size: 36rpx;
+			}
+		}
+		
+	}
+	.resumeInfo-company{
+		display: flex;
+		align-items: center;
+		padding-top: 20rpx;
+		.resumeInfo-company-text{
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			flex: 1;
+		}
+		.resumeInfo-company-name{
+			h3{
+				margin-bottom: 10rpx;
+				font-size: 40rpx;
+			}
+			span{
+				color:#999;
+				font-size: 24rpx;
+			}
+		}
+	}
+	.resumeInfo-data{
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-top: 20rpx;
+		padding: 20rpx 0;
+		border-top: 1px solid #F7F7F7;
+		border-bottom: 1px solid #F7F7F7;
+		.resumeInfo-data-item{
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			p{
+				font-size: 24rpx;
+				color:#999;
+				margin-bottom: 10rpx;
+			}
+			span{
+				font-size: 32rpx;
+			}
+		}
+	}
+	.jp-work-title{
+		background-color: #fff;
+		border-bottom: 1px solid #F7F7F7;
+		font-size: 32rpx;
+		padding: 20rpx 20rpx;
+	}
+	.jp-work-item{
+		padding:30rpx;
+		background-color: #fff;
+		border-bottom: 1px solid #f7f7f7;
+		&:last-child{
+			border-bottom:none;
+		}
+		.jp-work-name{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			h3{
+				font-size: 36rpx;
+			}
+			span{
+				font-size: 32rpx;
+				color:#FF1700
+			}
+		}
+		.jp-work-tag{
+			display: flex;
+			align-items: center;
+			margin-top: 10rpx;
+			*{
+				margin-right: 10rpx;
+			}
+		}
+		.jp-work-info{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-top: 10rpx;
+			p{
+				color:#999;
+				font-size: 24rpx;
+				margin-left: 10rpx;
+			}
+		}
+	}
+</style>

+ 472 - 0
console.js

@@ -0,0 +1,472 @@
+ var list =[ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages	
+		
+		{
+			"name":"IndexIndex",
+			"path": "pages/index/index",
+			"style": {
+	
+				//"navigationStyle": "custom" // 隐藏系统导航栏
+			}
+		}
+
+      
+        ,{//微信登录
+            "path" : "pages/login/wxLogin/wxLogin",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "微信登录",
+                
+            }
+            
+        }
+        ,{//手机号登录
+            "path" : "pages/login/phoneLogin/phoneLogin",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "手机号登录",
+                
+            }
+            
+        }
+        ,{//填写验证码
+            "path" : "pages/login/vCode/vCode",
+            "style" :                                                                                    
+            {           
+                "navigationBarTitleText": "填写验证码",
+                
+            }
+            
+        }
+        ,{//密码登录
+            "path" : "pages/login/passwordLogin/passwordLogin",
+            "style" :                                                                                    
+            {              
+                "navigationBarTitleText": "密码登录",
+                
+            }
+            
+        }
+      
+        ,{
+            "path" : "pages/job/index/index",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "求职主页",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/index/recruitInfo/recruitInfo",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "招聘详情",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/index/companyInfo/companyInfo",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "企业详情",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/query/query",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "搜索",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/query/queryResult/queryResult",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "搜索结果",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/newsIndex/newsIndex",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "分类消息",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/newsIndex/newsList/newsList",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "消息列表",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/newsIndex/newsRecommend/newsRecommend",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "推荐职位",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/newsIndex/newsInvitationPhone/newsInvitationPhone",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "沟通邀请通知",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/newsIndex/newsInvitationBefore/newsInvitationBefore",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "面试邀请通知",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/newsIndex/newsEntry/newsEntry",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "录用意向书详情",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/personal",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "个人中心",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/my/my",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "我的",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+     
+        ,{
+            "path" : "pages/job/personal/my/resumeMy/resumeMy",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "我的简历",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/my/resumeAdd/resumeAdd",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "创建简历",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+		,{
+		    "path" : "pages/job/personal/my/resumeAdd/resumeSelect/resumeSelect",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "选择职位输入",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+		,{
+		    "path" : "pages/job/personal/my/resumeAdd/resumeEdit/resumeEdit",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "编辑自我介绍",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+		,{
+		    "path" : "pages/job/personal/my/resumeAdd/resumeSucc/resumeSucc",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "简历提交成功",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+        ,{
+            "path" : "pages/job/personal/my/resumeList/resumeList",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "投递记录",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/my/resumeLook/resumeLook",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "看过的职位",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/my/resumeCollect/resumeCollect",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "职位收藏",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/my/resumeAuth/resumeAuth",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "个人认证",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+		,{
+		    "path" : "pages/job/personal/install/install",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "设置",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
+        ,{
+            "path" : "pages/job/personal/install/myInfo/myInfo",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "个人信息",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/account",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "账号管理",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/passwordA/passwordA",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "忘记密码",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/passwordB/passwordB",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "验证码找回",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/passwordC/passwordC",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "重设密码",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/phoneA/phoneA",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "填写验证码",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/phoneB/phoneB",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "绑定手机号",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/install/account/phoneC/phoneC",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "绑定验证码 Copy",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/job/personal/about/about",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "关于我们",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/index/index",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "招聘主页",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/index/resumeInfo/resumeInfo",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "简历详情",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/query/query",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "搜索",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/query/queryResult/queryResult",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "搜索结果",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/newsIndex/newsIndex",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "消息分类",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/newsIndex/newsList/newsList",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "消息列表",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/newsIndex/newsRecommend/newsRecommend",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "推荐简历",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+       
+        ,{
+            "path" : "pages/hr/newsIndex/servicesList/servicesList",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "劳务对接列表",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/newsIndex/servicesInfo/servicesInfo",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "劳务对接详情",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/my/my",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "我的",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/my/position/position",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "职位管理",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/my/follow/follow",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "对您感兴趣",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/my/enroll/enroll",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "求职管理",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/hr/my/collection/collection",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "收藏简历",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ];
+	var my=[];
+	for(var i in list){
+		var obj=list[i];
+		my.push(obj.style.navigationBarTitleText);
+	}
+	console.log(my);

+ 14 - 1
pages.json

@@ -18,6 +18,7 @@
             "path" : "pages/login/wxLogin/wxLogin",
             "style" :                                                                                    
             {
+                "navigationBarTitleText": "微信登录"
                 
             }
             
@@ -26,6 +27,7 @@
             "path" : "pages/login/phoneLogin/phoneLogin",
             "style" :                                                                                    
             {
+                "navigationBarTitleText": "手机号登录"
                 
             }
             
@@ -34,6 +36,7 @@
             "path" : "pages/login/vCode/vCode",
             "style" :                                                                                    
             {           
+                "navigationBarTitleText": "填写验证码"
                 
             }
             
@@ -42,6 +45,7 @@
             "path" : "pages/login/passwordLogin/passwordLogin",
             "style" :                                                                                    
             {              
+                "navigationBarTitleText": "密码登录"
                 
             }
             
@@ -64,7 +68,16 @@
                 "enablePullDownRefresh": false
             }
             
-        }
+        }
+		,{
+		    "path" : "pages/hr/index/recruitInfo/recruitInfo",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "招聘详情",
+		        "enablePullDownRefresh": false
+		    }
+		    
+		}
         ,{
             "path" : "pages/job/index/companyInfo/companyInfo",
             "style" :                                                                                    

+ 84 - 7
pages/hr/index/index.js

@@ -1,11 +1,15 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API_common from '@/apis/common.js'
+
+import * as API from '@/apis/hr/index.js'
+
 import TabbarHr from '@/components/TabbarHr.vue'
+import ResumeItem from '@/components/hr/ResumeItem.vue'
 
 export default {
 		data() {
 			return {
-				islogin:false,
+				//islogin:false,
 				showpopup:false,
 				querypopup:"全部",
 				popupList:["全部","一丘之貉1","一丘之貉2","一丘之貉3","一丘之貉4","一丘之貉5","一丘之貉6"
@@ -42,22 +46,95 @@ export default {
 			}
 		},
 		components: {
-		TabbarHr
+		TabbarHr,ResumeItem
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
 		methods: {
+			getBanner(){
+				API_common.getBannerInfo({
+					type:"hr"
+				}).then((response) => {
+					var list=response.data;
+					this.bannerList=list.map((item)=>{
+						 var obj={
+							image:item.picUrl,
+							 title:item.name,
+							 url:item.linkUrl,
+						 }
+						return obj
+					})
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			ckBanner(i){
+				var obj=this.bannerList[i];
+				if(obj.url){
+					if(obj.url.indexOf("http")==0){
+						window.location.href=obj.url;
+					}
+					if(obj.url.indexOf("pages/")==0){
+						this.gotoUrl(obj.url)
+					}
+				}
+				//console.log(current);
+			},
+			loadAllResumes(i){
+				API.loadAllResumes({
+					type:parseInt(i)+1,pageSize:5
+				}).then((response) => {
+					
+					var list=response.data.data;
+					this.list[i].list=list;
+					this.list[i].isend=(response.data.totalPage>1)
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			getList(){
+				for(var i in this.list){
+					
+					this.loadAllResumes(i)
+					
+				}
+			},
+			getScreenList(){
+				
+				API_common.getScreenList().then((response) => {
+					
+					var list=response.data;
+					this.popupList=list.map((item)=>{
+						return item.name;
+					})
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
 			changeTab(i){
 				this.current=i
 				//console.log(current);
 			},
-			 ckPopup(item){
-				 this.querypopup=item;
-			 }
+			ckPopup(item){
+							//this.querypopup=item;
+							 this.showpopup=false;
+							 this.gotoUrl('pages/hr/query/query?key='+item);
+			}
 			
 		},onReady(){ 
-			this.islogin=this.carhelp.getToken();
+			this.getBanner()
+			this.getList();
+			this.getScreenList();
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 8 - 34
pages/hr/index/index.vue

@@ -2,17 +2,13 @@
 	<view>
 		<u-navbar :is-back="false">
 			<view class="jp-search">
-				<u-search placeholder="日照香炉生紫烟" :disabled="true" @click="gotoUrl('pages/hr/query/query')" :show-action="false"></u-search>
+				<u-search placeholder="输入想找的简历吧" :disabled="true" @click="gotoUrl('pages/hr/query/query')" :show-action="false"></u-search>
 			</view>
 		</u-navbar>
 		<view class="jp-banner">
-			<u-swiper :list="bannerList"></u-swiper>
-		</view>
-		<view class="jp-tips" v-if="islogin" @click="gotoUrl('pages/job/personal/my/resumeMy/resumeMy')">
-			<u-icon name="volume-fill" color="#ff6200" size="28"></u-icon>
-			<span>去完善简历,获取更符合我的职位</span>
-			<u-icon name="arrow-right" color="#ff6200" size="28"></u-icon>
+			<u-swiper :list="bannerList"  @click="ckBanner" ></u-swiper>
 		</view>
+		 
 		<view class="jp-work">
 			<view class="jp-work-tab">
 				<u-tabs :list="list" :is-scroll="false" :current="current" @change="changeTab" :item-width="100"></u-tabs>
@@ -22,34 +18,12 @@
 				</view>
 			</view>
 			<view class="jp-work-list">
-				<view class="jp-work-item" v-for="(item ,index) in list[current].list" :key="index"  @click="gotoUrl('pages/job/index/recruitInfo/recruitInfo')">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							 
-							<p>男|29岁|2年以上|高中</p>
-						</view>
-					 
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>李强</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
+				
+			 	<ResumeItem v-for="(item ,index) in list[current].list" :key="item.id" :item="item" ></ResumeItem>
+			 	
 			 	<view class="jp-work-item" style="margin-top: 6px;">
-					<view style="text-align: center;color:#101010;" @click="gotoUrl('pages/hr/query/query?query='+querypopup)" >查看更多</view>
-				</view>
+			 		<view style="text-align: center;color:#101010;"   @click="gotoUrl('pages/hr/query/query?all=1')" >查看全部</view>
+			 	</view>
 			</view>
 		</view>
 		<u-popup v-model="showpopup" mode="center" width="100%"  >

+ 28 - 0
pages/hr/index/recruitInfo/index.js

@@ -0,0 +1,28 @@
+//import * as WxJsApi from '@/utils/wxJsApi.js'
+
+import recruitInfo from '@/pages/job/index/recruitInfo/recruitInfo.vue'
+
+export default {
+		data() {
+			return {
+				 id:""
+			}
+		},
+		components: {
+			recruitInfo
+		},
+		onLoad(op){
+			this.id=op.id;
+		
+		},
+		methods: { 
+			
+		},onReady(){ 
+			this.$refs.info.setId(this.id)
+			this.isReady=true;
+		},onShow(){
+			if(this.isReady){
+				
+			}	
+		},
+	}

+ 196 - 0
pages/hr/index/recruitInfo/recruitInfo.vue

@@ -0,0 +1,196 @@
+<template>
+	<view> 
+	<recruitInfo :isHr="true" ref="info"></recruitInfo>
+	</view>
+	
+</template>
+
+<script>
+	import api from './index.js'
+	export default api;
+</script>
+
+<style>
+	page{
+		background-color: #F7F7F7;
+	}
+</style>
+ 
+<style scoped lang="scss">
+	.resumeInfo-foot{
+		height: 120rpx;
+		background-color: #fff;
+		margin-top: 20rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		padding: 0 20rpx;
+		.resumeInfo-collect{
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			background-color: #f3f4f8;
+			padding:4rpx 20rpx;
+			border-radius: 8rpx;
+			margin-right: 20rpx;
+			span{
+				font-size: 24rpx;
+			}
+		}
+		.resumeInfo-btn{
+			flex: 1;
+			
+		}
+	}
+	.resumeInfo-info{
+		padding-top: 20rpx;
+		.resumeInfo-info-head{
+			font-size: 36rpx;
+			font-weight: bold;
+		}
+		.resumeInfo-info-main{
+			padding: 20rpx 0;
+		}
+		.resumeInfo-info-foot{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			.resumeInfo-address{
+				flex: 1;
+				min-width: 0;
+				color:#999;
+			}
+			.resumeInfo-see{
+				width: 100rpx;
+				text-align: right;
+				span{
+					font-size: 24rpx;
+					color:#999;
+					margin-left: 6rpx;
+				}
+			}
+		}
+	}
+	.resumeInfo{
+		background-color: #fff;
+		padding: 20rpx;
+		margin-bottom: 20rpx;
+		.resumeInfo-row{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-bottom: 10rpx;
+			h3{
+				font-size: 46rpx;
+			}
+			span{
+				color:#2295FF;
+				border: 1px solid #2295FF;
+				padding: 0 10rpx;
+				border-radius: 6rpx;
+			}
+			.jp-work-tag{
+				display: flex;
+				align-items: center;
+				*{
+					margin-right: 10rpx;
+				}
+			}
+			h2{
+				color:#FF6D58;
+				font-size: 36rpx;
+			}
+		}
+		
+	}
+	.resumeInfo-company{
+		display: flex;
+		align-items: center;
+		border-top: 1px solid #F7F7F7;
+		padding-top: 20rpx;
+		.resumeInfo-company-text{
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			flex: 1;
+			margin-left: 20rpx;
+		}
+		.resumeInfo-company-name{
+			p{
+				margin-bottom: 10rpx;
+			}
+			span{
+				color:#999;
+				font-size: 24rpx;
+			}
+		}
+	}
+	.resumeInfo-data{
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin-top: 20rpx;
+		padding: 20rpx 0;
+		border-top: 1px solid #F7F7F7;
+		border-bottom: 1px solid #F7F7F7;
+		.resumeInfo-data-item{
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			p{
+				font-size: 24rpx;
+				color:#999;
+				margin-bottom: 10rpx;
+			}
+			span{
+				font-size: 32rpx;
+			}
+		}
+	}
+	.jp-work-title{
+		background-color: #fff;
+		border-bottom: 1px solid #F7F7F7;
+		font-size: 36rpx;
+		padding: 20rpx 20rpx;
+		font-weight: bold;
+	}
+	.jp-work-item{
+		padding:30rpx;
+		background-color: #fff;
+		border-bottom: 1px solid #f7f7f7;
+		&:last-child{
+			border-bottom:none;
+		}
+		.jp-work-name{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			h3{
+				font-size: 36rpx;
+			}
+			span{
+				font-size: 32rpx;
+				color:#FF1700
+			}
+		}
+		.jp-work-tag{
+			display: flex;
+			align-items: center;
+			margin-top: 10rpx;
+			*{
+				margin-right: 10rpx;
+			}
+		}
+		.jp-work-info{
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-top: 10rpx;
+			p{
+				color:#999;
+				font-size: 24rpx;
+				margin-left: 10rpx;
+			}
+		}
+	}
+</style>

+ 11 - 57
pages/hr/my/collection/collection.vue

@@ -3,69 +3,23 @@
 	<view>
 		<u-navbar title="收藏简历"></u-navbar>
 		<view class="jp-search">
-			<u-search placeholder="日照香炉生紫烟" v-model="keyword" :show-action="false"></u-search>
-		</view>
-		<view class="jp-tab">
-			<u-tabs :list="list" :current="current" @change="change"></u-tabs>
+			<u-search placeholder="日照香炉生紫烟" v-model="keyword"  @search="getList(true)" :show-action="false"></u-search>
 		</view>
+		 
 		<view class="jp-work">
 			<view class="jp-quantity">
-				<p>数量</p><span>2</span>
-			</view>
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>市场营销专员</h3>
-						<span>¥3000-5000/月</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="在职-考虑机会"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>周凯</p><p>开发区</p>
-						</view>
-						<u-button size="mini" style="margin:0;">删除</u-button>
-					</view>
-				</view>	
+				<p>数量</p><span>{{recordsTotal}}</span>
 			</view>
 			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>市场营销专员</h3>
-						<span>¥3000-5000/月</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="在职-考虑机会"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>周凯</p><p>开发区</p>
-						</view>
-						<u-button size="mini" style="margin:0;">删除</u-button>
-					</view>
-				</view>	
+				 <ResumeItem v-for="(item ,index) in list" :key="item.id" :item="item"
+				  obj="eduName=education"
+				  mode="2" @mode2="del"
+				  ></ResumeItem>
+				  
+				 <u-loadmore @loadmore="myLoadmore" :status="list.length<recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+				 
 			</view>
+			 
 		</view>
 	</view>
 </template>

+ 61 - 6
pages/hr/my/collection/index.js

@@ -1,24 +1,79 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/hr/my.js'
+import ResumeItem from '@/components/hr/ResumeItem.vue'
 
 export default {
 		data() {
-			return {
+			return {
+				keyword:"",
+				pageIndex:1,
+				recordsTotal:0,
+				list: [ ],
 				isReady:false,
 				src: '/static/img/head.png',
 			}
 		},
 		components: {
-		
+			ResumeItem
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
-		methods: {
-			 
+		methods: {
+			del(id){
+				uni.showLoading({
+					title:"加载中"
+				})
+				 
+			 
+				API.cancelCollectResume(id).then((res) => {
+					
+					this.getList(true); 
+					
+					uni.hideLoading()
+					 
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			 myLoadmore(){
+			 	 
+			 	this.pageIndex+=1;
+			 	this.getList()
+			 },getList(bl){
+					uni.showLoading({
+						title:"加载中"
+					})
+					 if(bl){
+						 this.list=[];
+						 this.pageIndex=1;
+					 }
+					var data={
+						positionName:this.keyword,
+						pageIndex:this.pageIndex
+					};
+					API.loadCollectResumes(data).then((res) => {
+							 
+						this.list=[
+							...this.list,
+							...res.data.data
+						];
+						this.recordsTotal=res.data.recordsTotal
+						uni.hideLoading()
+						 
+					}).catch(error => {
+							uni.showToast({
+								
+								title:error
+							})
+					})
+				}
 			
 		},onReady(){ 
-			
+			this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 8 - 38
pages/hr/my/enroll/enroll.vue

@@ -1,5 +1,3 @@
-
-
 <template>
 	<view>
 		<u-navbar title="投递记录"></u-navbar>
@@ -8,42 +6,14 @@
 				<u-tabs :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs>
 			</view>
 			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>
+				 	 
+				 	 <ResumeItem v-for="(item ,index) in list[current].list" :key="item.id" :item="item" 
+					 obj="workName=positionCategoryName,name=realName,dreamAdd=address"
+					 ></ResumeItem>
+				 	 
+				 	<u-loadmore @loadmore="myLoadmore" :status="list[current].list.length<list[current].recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+				 	
+				 
 			</view>
 		</view>
 	</view>

+ 82 - 17
pages/hr/my/enroll/index.js

@@ -1,7 +1,9 @@
 
-//import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
-
+ 
+import * as API from '@/apis/hr/my.js'
+ import ResumeItem from '@/components/hr/ResumeItem.vue'
+
+//loadJobManagement
 export default {
 		data() {
 			return {
@@ -9,36 +11,99 @@ export default {
 				src: '/static/img/head/png',
 				keyword: '遥看瀑布挂前川',
 				list: [{
-					name: '全部'
+					name: '全部',
+					list:[],
+					status:"",
+					pageIndex:1,
+					recordsTotal:0,
 				}, {
-					name: '已投递'
+					name: '已投递',
+					list:[],
+					status:"1",
+					pageIndex:1,
+					recordsTotal:0,
 				}, {
-					name: '邀沟通',
+					name: '邀沟通',
+					list:[],
+					status:"2",
+					pageIndex:1,
+					recordsTotal:0,
 				},{
-					name: '邀面试'
+					name: '邀面试',
+					list:[],
+					status:"3",
+					pageIndex:1,
+					recordsTotal:0,
 				}, {
-					name: '邀入职',
+					name: '邀入职',
+					list:[],
+					status:"4",
+					pageIndex:1,
+					recordsTotal:0,
 				},{
-					name: '已入职'
+					name: '已入职',
+					list:[],
+					status:"5",
+					pageIndex:1,
+					recordsTotal:0,
 				}, {
-					name: '不合适',
+					name: '不合适',
+					list:[],
+					status:"6",
+					pageIndex:1,
+					recordsTotal:0,
 				}],
 				current: 0
 			}
 		},
 		components: {
-		
+		ResumeItem
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
 		methods: {
-			 change(index) {
-					this.current = index;
-				}
-			
-		},onReady(){ 
-			
+			myLoadmore(){
+					var obj=this.list[this.current];
+					obj.pageIndex+=1;
+					this.getList()
+				},
+				 change(index) {
+					this.current = index;
+					var obj=this.list[this.current];
+					
+					if(obj.list.length==0){
+						this.getList()
+					}
+				},
+				getList(){
+					uni.showLoading({
+						title:"加载中"
+					})
+					var obj=this.list[this.current];
+					var data={
+						type:obj.status,
+						pageIndex:obj.pageIndex
+					};
+					API.loadJobManagement(data).then((res) => {
+							 
+						obj.list=[
+							...obj.list,
+							...res.data.data
+						];
+						obj.recordsTotal=res.data.recordsTotal
+						uni.hideLoading()
+						console.log(this.list)
+					}).catch(error => {
+							uni.showToast({
+								
+								title:error
+							})
+					})
+				}
+				
+			},onReady(){ 
+				this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 8 - 25
pages/hr/my/follow/follow.vue

@@ -2,34 +2,17 @@
 	<view>
 		<u-navbar title="对您感兴趣"></u-navbar>
 		<view class="jp-follow">
-			<view class="jp-follow-item">
+			
+			<view class="jp-follow-item" v-for="(item,i)  in list" :key="i">
 				<view class="follow-text u-flex">
-					<u-avatar :src="src" size="60"></u-avatar>
-					<span>求职者姓名</span>
+					<u-avatar :src="item.headImage?item.headImage:src" size="60"></u-avatar>
+					<span>{{item.name}}</span>
 				</view>
-				<u-icon name="arrow-right" color="#999" size="24"></u-icon>
-			</view>
-			<view class="jp-follow-item">
-				<view class="follow-text u-flex">
-					<u-avatar :src="src" size="60"></u-avatar>
-					<span>求职者姓名</span>
-				</view>
-				<u-icon name="arrow-right" color="#999" size="24"></u-icon>
-			</view>
-			<view class="jp-follow-item">
-				<view class="follow-text u-flex">
-					<u-avatar :src="src" size="60"></u-avatar>
-					<span>求职者姓名</span>
-				</view>
-				<u-icon name="arrow-right" color="#999" size="24"></u-icon>
-			</view>
-			<view class="jp-follow-item">
-				<view class="follow-text u-flex">
-					<u-avatar :src="src" size="60"></u-avatar>
-					<span>求职者姓名</span>
-				</view>
-				<u-icon name="arrow-right" color="#999" size="24"></u-icon>
+				<u-icon name="arrow-right" color="#999" size="24" v-if="item.jobUserId"></u-icon>
 			</view>
+			 <u-loadmore @loadmore="myLoadmore" :status="list.length<recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+			 
+			 
 		</view>
 	</view>
 </template>

+ 39 - 4
pages/hr/my/follow/index.js

@@ -1,9 +1,12 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/hr/my.js'
 
 export default {
 		data() {
-			return {
+			return {
+				pageIndex:1,
+				recordsTotal:0,
+				list: [ ],
 				isReady:false,
 				src: '/static/img/head.png',
 			}
@@ -15,10 +18,42 @@ export default {
 			//this.id=op.id;
 		},
 		methods: {
-			 
+			 myLoadmore(){
+			 	 
+			 	this.pageIndex+=1;
+			 	this.getList()
+			 },
+			  change(index) {
+			 		this.current = index;
+			 	},
+			 	getList(){
+			 		uni.showLoading({
+			 			title:"加载中"
+			 		})
+			 		 
+			 		var data={
+			 		 
+			 			pageIndex:this.pageIndex
+			 		};
+			 		API.loadInterestList(data).then((res) => {
+			 				 
+			 			this.list=[
+			 				...this.list,
+			 				...res.data.data
+			 			];
+			 			this.recordsTotal=res.data.recordsTotal
+			 			uni.hideLoading()
+			 			 
+			 		}).catch(error => {
+			 				uni.showToast({
+			 					
+			 					title:error
+			 				})
+			 		})
+			 	}
 			
 		},onReady(){ 
-			
+			this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 26 - 5
pages/hr/my/index.js

@@ -1,9 +1,14 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/hr/my.js'
+	import TabbarHr from '@/components/TabbarHr.vue'
 
 export default {
 		data() {
-			return {
+			return {
+				info:{
+					
+				},
+				hr:{},
 				isReady:false,
 				src: '/static/img/head.png',
 				background: {
@@ -12,16 +17,32 @@ export default {
 			}
 		},
 		components: {
-		
+		TabbarHr
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
 		methods: {
-			 
+			 getInfo(){
+			 				 uni.showLoading({
+			 				 	 title: '加载中'
+			 				 })
+			 				 API.getAboutMe().then((res)=>{
+			 					 // this.company=res.data.company
+			 					 this.info=res.data;
+								  this.hr=res.data.hr;
+			 					uni.hideLoading()
+			 								 
+			 				 }).catch(error => {
+			 						uni.showToast({
+			 							
+			 							title:error
+			 						})
+			 				})
+			 },
 			
 		},onReady(){ 
-			
+			this.getInfo()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 11 - 11
pages/hr/my/my.vue

@@ -11,33 +11,33 @@
 				<u-avatar :src="src" size="140"></u-avatar>
 			</view>
 			<view class="user-head-text">
-				<h3>方佳 人力资源经理</h3>
-				<p>湖北荆鹏软件集团有限公司</p>
+				<h3 v-text="hr.realName"></h3>
+				<p v-text="hr.companyName"></p>
 			</view>
 		</view>
 		<view class="user-main">
 			<view class="title">招聘统计</view>
 			<view class="main">
-				<view class="main-item">
+				<view class="main-item" @click="gotoUrl('pages/hr/my/position/position')">
 					<span>我的职位</span>
-					<h3>5</h3>
+					<h3>{{info.jobCount?info.jobCount:0}}</h3>
 				</view>
 				<u-line color="#ccc" length="40" direction="col" margin="0 20rpx"/>
-				<view class="main-item">
+				<view class="main-item" @click="gotoUrl('pages/hr/my/enroll/enroll')">
 					<span>看过的人才</span>
-					<h3>10</h3>
+					<h3>{{info.browseResumeCount?info.browseResumeCount:0}}</h3>
 				</view>
 				<u-line color="#ccc" length="40" direction="col" margin="0 20rpx"/>
-				<view class="main-item">
+				<view class="main-item" @click="gotoUrl('pages/hr/my/follow/follow')">
 					<span>对您感兴趣</span>
-					<h3>89</h3>
+					<h3>{{info.readTimes?info.readTimes:0}}</h3>
 				</view>
 			</view>
 		</view>
 		<u-cell-group>
-			<u-cell-item title="职位管理" value="审核中"></u-cell-item>
-			<u-cell-item title="求职管理" ></u-cell-item>
-			<u-cell-item title="收藏简历" ></u-cell-item>
+			<u-cell-item title="职位管理" @click="gotoUrl('pages/hr/my/position/position')" ></u-cell-item>
+			<u-cell-item title="求职管理" @click="gotoUrl('pages/hr/my/enroll/enroll')"></u-cell-item>
+			<u-cell-item title="收藏简历" @click="gotoUrl('pages/hr/my/collection/collection')"></u-cell-item>
 		</u-cell-group>
 		<u-cell-group class="u-m-t-20">
 			<u-cell-item title="关于我们" ></u-cell-item>

+ 83 - 8
pages/hr/my/position/index.js

@@ -1,7 +1,7 @@
 
 
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/hr/my.js'
 
 export default {
 		data() {
@@ -9,12 +9,25 @@ export default {
 				isReady:false,
 				src: '/static/img/head/png',
 				keyword: '遥看瀑布挂前川',
-				list: [{
-					name: '招聘中'
+				list: [
+					{
+					name: '招聘中',
+					list:[],
+					status:"publish",
+					pageIndex:1,
+					recordsTotal:0
 				}, {
-					name: '审核中'
+					name: '审核中',
+					list:[],
+					status:"approve",
+					pageIndex:1,
+					recordsTotal:0
 				}, {
-					name: '已下架',
+					name: '已下架',
+					list:[],
+					status:"close",
+					pageIndex:1,
+					recordsTotal:0
 				}],
 				current: 0,
 				customStyle: {
@@ -29,11 +42,73 @@ export default {
 		onLoad(op){
 			//this.id=op.id;
 		},
-		methods: {
-			 
+		methods: {
+			publish(count,id){
+				uni.showLoading({
+					title:"加载中"
+				})
+			
+				var data={
+					recruitmentId:id,
+					publishTag:count
+				};
+				API.publishRecruitment(data).then((res) => {
+					for(var i in this.list){
+						var obj=this.list[i];
+						obj.list=[]
+						obj.pageIndex=1
+					}	 
+					this.getList()
+					uni.hideLoading()
+					
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			 myLoadmore(){
+			 	var obj=this.list[this.current];
+			 	obj.pageIndex+=1;
+			 	this.getList()
+			 }, change(index) {
+				this.current = index;
+				var obj=this.list[this.current];
+				
+				if(obj.list.length==0){
+					this.getList()
+				}
+			},
+			getList(){
+				
+				uni.showLoading({
+					title:"加载中"
+				})
+				var obj=this.list[this.current];
+				var data={
+					status:obj.status,
+					pageIndex:obj.pageIndex
+				};
+				API.loadOwnRecruitments(data).then((res) => {
+						 
+					obj.list=[
+						...obj.list,
+						...res.data.data
+					];
+					obj.recordsTotal=res.data.recordsTotal
+					uni.hideLoading()
+					console.log(this.list)
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			}
 			
 		},onReady(){ 
-			
+			this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 18 - 58
pages/hr/my/position/position.vue

@@ -1,82 +1,42 @@
-
-
-
 <template>
 	<view>
 		<u-navbar title="职位管理"></u-navbar>
-		<view class="jp-search">
-			<u-search placeholder="日照香炉生紫烟" v-model="keyword" :show-action="false"></u-search>
-		</view>
+		
 		<view class="jp-tab">
 			<view class="jp-quantity">
-				<p>数量</p><span>2</span>
+				<p>数量</p><span>{{list[current].recordsTotal}}</span>
 			</view>
 			<u-tabs :list="list" :current="current" @change="change"></u-tabs>
 		</view>
 		<view class="jp-work">
 			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>招聘中</span>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<p>12月13日 23:22</p>
-						<u-button size="mini" type="error" :custom-style="customStyle" plain>下架</u-button>
-					</view>
-				</view>	
-			</view>
-			<view class="jp-work-list">
-				<view class="jp-work-item">
+				<view class="jp-work-item" v-for="(item ,index) in list[current].list" :key="index" 
+				 @click="gotoUrl('pages/hr/index/recruitInfo/recruitInfo?id='+item.recruitmentId)">
 					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>审核中</span>
+						<h3>{{item.title}}</h3>
+						<span>{{list[current].name}}</span>
 					</view>
 					<view class="jp-work-line">
-						<span></span>
+						<span>{{item.position_name}}</span>
 						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
+						<span>{{item.workYear}}</span>
 						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
+						<span>{{item.educationName}}</span>
 						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
+						<span>{{item.wageTypeName}}</span>
 					</view>
 					<view class="jp-work-info">
-						<p>12月13日 23:22</p>
-						<u-button size="mini" style="margin:0;" disabled="true">上架</u-button>
-					</view>
-				</view>	
-			</view>
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>已下架</span>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<p>12月13日 23:22</p>
-						<u-button size="mini" type="primary" :custom-style="customStyle" plain>上架</u-button>
+						<p>{{item.updateTime}}</p>
+						<u-button size="mini" type="error" v-if="current!=1&&item.status==1" :custom-style="customStyle" plain @click="publish(0,item.recruitmentId)">下架</u-button>
+						<u-button size="mini" type="primary"   v-if="current!=1&&item.status==0":custom-style="customStyle" plain @click="publish(1,item.recruitmentId)">上架</u-button>
+						<u-button size="mini" style="margin:0;"  v-if="current==1" :disabled="true">上架</u-button>
+						
 					</view>
 				</view>	
 			</view>
+			
+			<u-loadmore @loadmore="myLoadmore" :status="list[current].list.length<list[current].recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+			
 		</view>
 	</view>
 </template>

+ 2 - 2
pages/hr/newsIndex/index.js

@@ -4,7 +4,7 @@
 	
 	//import * as WxJsApi from '@/utils/wxJsApi.js'
 	import * as API from '@/apis/index.js'
-	import TabbarJob from '@/components/TabbarJob.vue'
+	import TabbarHr from '@/components/TabbarHr.vue'
 	
 	export default {
 			data() {
@@ -21,7 +21,7 @@
 				}
 			},
 			components: {
-				TabbarJob
+				TabbarHr
 			},
 			onLoad(op){
 				//this.id=op.id;

+ 2 - 0
pages/hr/newsIndex/newsIndex.vue

@@ -68,6 +68,8 @@
 				</view>
 			</view>
 		</view>
+		<Tabbar-Hr :current="1" ></Tabbar-Hr>
+		
 	</view>
 </template>
 

+ 28 - 5
pages/hr/newsIndex/servicesInfo/index.js

@@ -1,9 +1,11 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/hr/news.js'
 
 export default {
 		data() {
-			return {
+			return {
+				company:{},
+					info:{},
 				isReady:false,
 			}
 		},
@@ -11,13 +13,34 @@ export default {
 		
 		},
 		onLoad(op){
-			//this.id=op.id;
+			
+			this.id=op.id;
 		},
 		methods: {
-			 
+			 getInfo(){
+			 				 uni.showLoading({
+			 				 	 title: '加载中'
+			 				 })
+			 				 API.getLabourDetails(this.id).then((res)=>{
+			 					  this.company=res.data.company
+			 					 this.info=res.data.labourServices;
+			 					uni.hideLoading()
+								this.$nextTick(()=>{
+									var list =document.getElementsByClassName("resumeInfo-main")[0].getElementsByTagName("img");
+									for(var i=0;i<list.length;i++){
+									    list[i].style='width: 100%;height: 100%;'
+									}
+								})
+			 				 }).catch(error => {
+			 						uni.showToast({
+			 							
+			 							title:error
+			 						})
+			 				})
+			 },
 			
 		},onReady(){ 
-			
+			this.getInfo();
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 7 - 6
pages/hr/newsIndex/servicesInfo/servicesInfo.vue

@@ -3,20 +3,20 @@
 		<u-navbar title="详情"></u-navbar>
 		<view class="resumeInfo">
 			<view class="resumeInfo-company">
-				<u-avatar :src="src" size="100" mode="square"></u-avatar>
+				<u-avatar :src="company.logo" size="100" mode="square"></u-avatar>
 				<view class="resumeInfo-company-text">
 					<view class="resumeInfo-company-name">
-						<h3>湖北荆鹏软件集团有限公司</h3>
+						<h3> {{company.name}}</h3>
 						<view class="u-flex">
-							<p>我要用工</p>
+							<p>{{info.typeN}}</p>
 							<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-							<span>2021-06-30 12:00</span>
+							<span>{{info.createTime}}</span>
 						</view>
 					</view>	
 				</view>
 			</view>
-			<view class="resumeInfo-main">
-				开发区开发区开发区开发区开发区开发区开发区开发区区开发区
+			<view class="resumeInfo-main" v-html="info.content">
+				
 			</view>
 		</view>
 	</view>
@@ -28,6 +28,7 @@
 </script>
 
 <style scoped lang="scss">
+	
 	.resumeInfo{
 		background-color: #fff;
 		padding: 20rpx;

+ 51 - 6
pages/hr/newsIndex/servicesList/index.js

@@ -1,14 +1,22 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/hr/news.js'
 
 export default {
 		data() {
 			return {
 				isReady:false,
 				list: [{
-					name: '我要用人'
+					name: '我要用人',
+					list:[],
+					approvalStatus:"1",
+					pageIndex:1,
+					recordsTotal:0
 				}, {
-					name: '我有工人'
+					name: '我有工人',
+					list:[],
+					approvalStatus:"0",
+					pageIndex:1,
+					recordsTotal:0
 				}],
 				current: 0
 			}
@@ -19,11 +27,48 @@ export default {
 		onLoad(op){
 			//this.id=op.id;
 		},
-		methods: {
-			 
+		methods: {
+			change(index) {
+				this.current = index;
+				var obj=this.list[this.current];
+				
+				if(obj.list.length==0){
+					this.getLabourList()
+				}
+			},
+			myLoadmore(){
+				var obj=this.list[this.current];
+				obj.pageIndex+=1;
+				this.getLabourList()
+			},
+			 getLabourList(){
+				 uni.showLoading({
+				 	title:"加载中"
+				 })
+				 var obj=this.list[this.current];
+				 var data={
+				 	typeB:obj.approvalStatus,
+				 	pageIndex:obj.pageIndex
+				 };
+				 API.getLabourList(data).then((res) => {
+				 		 
+				 	obj.list=[
+				 		...obj.list,
+				 		...res.data.data
+				 	];
+				 	obj.recordsTotal=res.data.recordsTotal
+				 	uni.hideLoading()
+				 	console.log(this.list)
+				 }).catch(error => {
+				 		uni.showToast({
+				 			
+				 			title:error
+				 		})
+				 })
+			 }
 			
 		},onReady(){ 
-			
+			this.getLabourList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 9 - 5
pages/hr/newsIndex/servicesList/servicesList.vue

@@ -5,15 +5,17 @@
 			<u-tabs :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs>
 		</view> 
 		<view class="servicesList">
-			<view class="servicesList-item">
+			<view class="servicesList-item" v-for="(item ,index) in list[current].list" :key="index" @click="gotoUrl('pages/hr/newsIndex/servicesInfo/servicesInfo?id='+item.id)" >
 				<view class="servicesList-head">
-					<h3 class="u-line-1">消息标题消息标题消息标题消息标题题消息标题</h3>
-					<span>2021-06-30 12:00</span>
+					<h3 class="u-line-1">{{item.companyName}}</h3>
+					<span>{{item.createTime}}</span>
 				</view>
-				<view class="servicesList-main">
-					消息正文内容消息正文内容消息正文内容消息正文内容消息正文内容消息正文内容消息正文内容消息正文内容
+				<view class="servicesList-main" v-html="item.content">
+					 
 				</view>
 			</view>
+			<u-loadmore @loadmore="myLoadmore" :status="list[current].list.length<list[current].recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+			
 		</view>
 	</view>
 </template>
@@ -48,6 +50,8 @@
 			border-top: 1px solid #f7f7f7;
 			padding: 20rpx 0;
 			color:#666;
+			    height: 120px;
+			    overflow: hidden;
 		}
 	} 
 </style>

+ 401 - 47
pages/index/index.js

@@ -1,51 +1,405 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
 import * as API from '@/apis/index.js'
-
+
 export default {
-		data() {
-			return {
-				isReady:false,
-			}
-		},
-		components: {
-		
-		},
-		onLoad(op){
-			//this.id=op.id;
+	data() {
+		return {
+			list: [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages	
+
+				{
+					"name": "IndexIndex",
+					"path": "pages/index/index",
+					"style": {
+
+						//"navigationStyle": "custom" // 隐藏系统导航栏
+					}
+				}
+
+
+				, { //微信登录
+					"path": "pages/login/wxLogin/wxLogin",
+					"style": {
+						"navigationBarTitleText": "微信登录",
+
+					}
+
+				}, { //手机号登录
+					"path": "pages/login/phoneLogin/phoneLogin",
+					"style": {
+						"navigationBarTitleText": "手机号登录",
+
+					}
+
+				}, { //填写验证码
+					"path": "pages/login/vCode/vCode",
+					"style": {
+						"navigationBarTitleText": "填写验证码",
+
+					}
+
+				}, { //密码登录
+					"path": "pages/login/passwordLogin/passwordLogin",
+					"style": {
+						"navigationBarTitleText": "密码登录",
+
+					}
+
+				}
+
+				, {
+					"path": "pages/job/index/index",
+					"style": {
+						"navigationBarTitleText": "求职主页",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/index/recruitInfo/recruitInfo",
+					"style": {
+						"navigationBarTitleText": "招聘详情",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/index/companyInfo/companyInfo",
+					"style": {
+						"navigationBarTitleText": "企业详情",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/query/query",
+					"style": {
+						"navigationBarTitleText": "搜索",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/query/queryResult/queryResult",
+					"style": {
+						"navigationBarTitleText": "搜索结果",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/newsIndex/newsIndex",
+					"style": {
+						"navigationBarTitleText": "分类消息",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/newsIndex/newsList/newsList",
+					"style": {
+						"navigationBarTitleText": "消息列表",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/newsIndex/newsRecommend/newsRecommend",
+					"style": {
+						"navigationBarTitleText": "推荐职位",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/newsIndex/newsInvitationPhone/newsInvitationPhone",
+					"style": {
+						"navigationBarTitleText": "沟通邀请通知",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/newsIndex/newsInvitationBefore/newsInvitationBefore",
+					"style": {
+						"navigationBarTitleText": "面试邀请通知",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/newsIndex/newsEntry/newsEntry",
+					"style": {
+						"navigationBarTitleText": "录用意向书详情",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/personal",
+					"style": {
+						"navigationBarTitleText": "个人中心",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/my",
+					"style": {
+						"navigationBarTitleText": "我的",
+						"enablePullDownRefresh": false
+					}
+
+				}
+
+				, {
+					"path": "pages/job/personal/my/resumeMy/resumeMy",
+					"style": {
+						"navigationBarTitleText": "我的简历",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeAdd/resumeAdd",
+					"style": {
+						"navigationBarTitleText": "创建简历",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeAdd/resumeSelect/resumeSelect",
+					"style": {
+						"navigationBarTitleText": "选择职位输入",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeAdd/resumeEdit/resumeEdit",
+					"style": {
+						"navigationBarTitleText": "编辑自我介绍",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeAdd/resumeSucc/resumeSucc",
+					"style": {
+						"navigationBarTitleText": "简历提交成功",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeList/resumeList",
+					"style": {
+						"navigationBarTitleText": "投递记录",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeLook/resumeLook",
+					"style": {
+						"navigationBarTitleText": "看过的职位",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeCollect/resumeCollect",
+					"style": {
+						"navigationBarTitleText": "职位收藏",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/my/resumeAuth/resumeAuth",
+					"style": {
+						"navigationBarTitleText": "个人认证",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/install",
+					"style": {
+						"navigationBarTitleText": "设置",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/myInfo/myInfo",
+					"style": {
+						"navigationBarTitleText": "个人信息",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/account",
+					"style": {
+						"navigationBarTitleText": "账号管理",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/passwordA/passwordA",
+					"style": {
+						"navigationBarTitleText": "忘记密码",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/passwordB/passwordB",
+					"style": {
+						"navigationBarTitleText": "验证码找回",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/passwordC/passwordC",
+					"style": {
+						"navigationBarTitleText": "重设密码",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/phoneA/phoneA",
+					"style": {
+						"navigationBarTitleText": "填写验证码",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/phoneB/phoneB",
+					"style": {
+						"navigationBarTitleText": "绑定手机号",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/install/account/phoneC/phoneC",
+					"style": {
+						"navigationBarTitleText": "绑定验证码 Copy",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/job/personal/about/about",
+					"style": {
+						"navigationBarTitleText": "关于我们",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/index/index",
+					"style": {
+						"navigationBarTitleText": "招聘主页",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/index/resumeInfo/resumeInfo",
+					"style": {
+						"navigationBarTitleText": "简历详情",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/query/query",
+					"style": {
+						"navigationBarTitleText": "搜索",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/query/queryResult/queryResult",
+					"style": {
+						"navigationBarTitleText": "搜索结果",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/newsIndex/newsIndex",
+					"style": {
+						"navigationBarTitleText": "消息分类",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/newsIndex/newsList/newsList",
+					"style": {
+						"navigationBarTitleText": "消息列表",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/newsIndex/newsRecommend/newsRecommend",
+					"style": {
+						"navigationBarTitleText": "推荐简历",
+						"enablePullDownRefresh": false
+					}
+
+				}
+
+				, {
+					"path": "pages/hr/newsIndex/servicesList/servicesList",
+					"style": {
+						"navigationBarTitleText": "劳务对接列表",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/newsIndex/servicesInfo/servicesInfo",
+					"style": {
+						"navigationBarTitleText": "劳务对接详情",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/my/my",
+					"style": {
+						"navigationBarTitleText": "我的",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/my/position/position",
+					"style": {
+						"navigationBarTitleText": "职位管理",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/my/follow/follow",
+					"style": {
+						"navigationBarTitleText": "对您感兴趣",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/my/enroll/enroll",
+					"style": {
+						"navigationBarTitleText": "求职管理",
+						"enablePullDownRefresh": false
+					}
+
+				}, {
+					"path": "pages/hr/my/collection/collection",
+					"style": {
+						"navigationBarTitleText": "收藏简历",
+						"enablePullDownRefresh": false
+					}
+
+				}
+			],
+			isReady: false,
+		}
+	},
+	components: {
+
+	},
+	onLoad(op) {
+		//this.id=op.id;
+	},
+	methods: {
+		test1() {
+			uni.showLoading({
+				title: '加载中'
+			});
+			// uni.hideLoading();
 		},
-		methods: {
-			 test1(){
-				 uni.showLoading({
-				     title: '加载中'
-				 });
-				// uni.hideLoading();
-			 },
-			test2(){
-				 
-				
-				uni.showToast({
-					title: "checkPhoneResult",
-					icon: "none"
-				})
-				
-				 
-			},
-			test3(){
-			 
-				
-				uni.showModal({
-					showCancel: false,
-					title: '预登录失败',
-					content: "this.univerifyErrorMsg || err.errMsg"
-				});
-			}
-			
-		},onReady(){ 
-			
-			this.isReady=true;
-		},onShow(){
-			if(this.isReady){
-				
-			}	
-		},
-	}
+
+
+	},
+	onReady() {
+
+		this.isReady = true;
+	},
+	onShow() {
+		if (this.isReady) {
+
+		}
+	},
+}

+ 8 - 4
pages/index/index.vue

@@ -1,13 +1,17 @@
 <template>
 	<view>
-		<my-common      mytitle="公共标题"  ref="common"></my-common>
+		<my-common      mytitle="公共标题" :login="false"  ref="common"></my-common>
 		
  		<u-button type="primary"  @click="gotoUrl('pages/job/index/index')" >我要求职</u-button>
  		<u-button type="success" @click="gotoUrl('pages/hr/index/index')" >企业招聘</u-button>
+		<view  style="margin-top:50px ;">
+			<template v-for="(item,index) in list">
+				<u-button type="success"    @click="gotoUrl(item.path)" >{{item.style.navigationBarTitleText}}</u-button>
+				
+			</template>
+			 
+		</view>
 	
-		<u-button type="success" @click="test1" >test</u-button>
-		<u-button type="success" @click="test2" >test</u-button>
-		<u-button type="success" @click="test3" >test</u-button>
 		
 		
 	</view>

+ 135 - 28
pages/job/index/index.js

@@ -1,15 +1,20 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
-import TabbarJob from '@/components/TabbarJob.vue'
+import * as API from '@/apis/job/index.js'
+import * as API_common from '@/apis/common.js'
 
+import TabbarJob from '@/components/TabbarJob.vue'
+import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
+import ResumeAuth from '@/components/job/ResumeAuth.vue'
+
 export default {
 		data() {
-			return {
-				islogin:false,
-				showpopup:false,
-				querypopup:"全部",
-				popupList:["全部","一丘之貉1","一丘之貉2","一丘之貉3","一丘之貉4","一丘之貉5","一丘之貉6"
-				,"其他"],
+			return {
+				auth:false,
+				islogin:false,
+				showpopup:false,
+				querypopup:"全部",
+				popupList:["全部","一丘之貉1","一丘之貉2","一丘之貉3","一丘之貉4","一丘之貉5","一丘之貉6"
+				,"其他"],
 				
 				keyword: '遥看瀑布挂前川',
 				bannerList: [{
@@ -26,39 +31,141 @@ export default {
 					}
 				],
 				list: [{
-					name: '最新',
-					list:[{}],
-					
+					name: '最新',
+					list:[{}],
+					
 					isend:false
 				}, {
 
-					name: '最热',
-					list:[{},{},{},{}],
+					name: '最热',
+					list:[{},{},{},{}],
 					isend:false
 				}],
 				current: 0,
 				src: '/static/img/head/png',
 
 			}
-		},
-		components: {
-			TabbarJob
-		},
-		onLoad(op){
-			//this.id=op.id;
 		},
-		methods: {
-			changeTab(i){
-				this.current=i
-				//console.log(current);
+		components: {
+			TabbarJob,RecruitmentItem,ResumeAuth
+		},
+		onLoad(op){
+			//this.id=op.id;
+		},
+		methods: {
+			spiltItem(text){
+				if(text){
+					return text.split(",")
+					
+				}else{
+					return []
+				}
+			},
+			getResumeStatus(){
+				var statusInit=this.carhelp.get("resume_status_init");
+				if(statusInit&&statusInit!="未创建"){
+					return;
+				}
+				API.resumeStatus().then((response) => {
+					if("未创建"==response){
+						
+					}else{
+						this.islogin=true
+					}
+					
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			getScreenList(){
+				
+				API_common.getScreenList().then((response) => {
+					
+					var list=response.data;
+					this.popupList=list.map((item)=>{
+						return item.name;
+					})
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			getList(){
+				for(var i in this.list){
+					
+					this.getRecruitmentList(i)
+					
+				}
+			},
+			getRecruitmentList(i){
+				API.getRecruitmentList({
+					type:parseInt(i)+1,pageSize:5
+				}).then((response) => {
+					
+					var list=response.data.data;
+					this.list[i].list=list;
+					this.list[i].isend=(response.data.totalPage>1)
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			getBanner(){
+				API_common.getBannerInfo({
+					type:"job"
+				}).then((response) => {
+					var list=response.data;
+					this.bannerList=list.map((item)=>{
+						 var obj={
+							image:item.picUrl,
+							 title:item.name,
+							 url:item.linkUrl,
+						 }
+						return obj
+					})
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			ckBanner(i){
+				var obj=this.bannerList[i];
+				if(obj.url){
+					if(obj.url.indexOf("http")==0){
+						window.location.href=obj.url;
+					}
+					if(obj.url.indexOf("pages/")==0){
+						this.gotoUrl(obj.url)
+					}
+				}
+				//console.log(current);
+			},
+			changeTab(i){
+				this.current=i
+				//console.log(current);
 			},
-			 ckPopup(item){
-				 this.querypopup=item;
+			 ckPopup(item){
+				//this.querypopup=item;
+				 this.showpopup=false;
+				 this.gotoUrl('pages/job/query/query?key='+item);
 			 }
 			
-		},onReady(){ 
-			this.islogin=this.carhelp.getToken();
-			this.isReady=true;
+		},onReady(){ 
+			//this.islogin=this.carhelp.getToken();
+			this.getBanner()
+			this.getList();
+			this.getScreenList();
+			this.getResumeStatus();
+			this.isReady=true;
 		},onShow(){
 			if(this.isReady){
 				

+ 13 - 22
pages/job/index/index.vue

@@ -1,12 +1,18 @@
 <template>
 	<view>
+	<view v-show="auth">
+		<resume-auth @authSubmit="auth=false"></resume-auth>
+	</view>
+	<view  v-show="!auth">
+		<my-common     ref="common"></my-common>
+		
 		<u-navbar :is-back="false">
 			<view class="jp-search">
-				<u-search placeholder="日照香炉生紫烟" :disabled="true" @click="gotoUrl('pages/hr/query/query')" :show-action="false"></u-search>
+				<u-search placeholder="输入想找的职位吧" :disabled="true" @click="gotoUrl('pages/job/query/query')" :show-action="false"></u-search>
 			</view>
 		</u-navbar>
 		<view class="jp-banner">
-			<u-swiper :list="bannerList"></u-swiper>
+			<u-swiper :list="bannerList" @click="ckBanner"></u-swiper>
 		</view>
 		<view class="jp-tips" v-if="islogin" @click="gotoUrl('pages/job/personal/my/resumeMy/resumeMy')">
 			<u-icon name="volume-fill" color="#ff6200" size="28"></u-icon>
@@ -22,27 +28,11 @@
 				</view>
 			</view>
 			<view class="jp-work-list">
-				<view class="jp-work-item" v-for="(item ,index) in list[current].list" :key="index"  @click="gotoUrl('pages/job/index/recruitInfo/recruitInfo')">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
+				<RecruitmentItem v-for="(item ,index) in list[current].list" :key="item.id" :item="item" ></RecruitmentItem>
+				
 			 	<view class="jp-work-item" style="margin-top: 6px;">
-					<view style="text-align: center;color:#101010;" @click="gotoUrl('pages/hr/query/query?query='+querypopup)" >查看更多</view>
-				</view>
+					<view style="text-align: center;color:#101010;"   @click="gotoUrl('pages/job/query/query?all=1')" >查看全部</view>
+ 				</view>
 			</view>
 		</view>
 		<u-popup v-model="showpopup" mode="center" width="100%"  >
@@ -62,6 +52,7 @@
 			</u-popup>
 		<Tabbar-Job :current="0" ></Tabbar-Job>
 	</view>
+	</view>
 </template>
 
 <script>

+ 128 - 8
pages/job/index/recruitInfo/index.js

@@ -1,25 +1,145 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
-
+import * as API from '@/apis/job/job.js'
+import CompanyInfo from '@/components/job/companyInfo.vue'
+import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
+
 export default {
 		data() {
 			return {
+				showcompany:false,
+				info:{},
+				companyId:"",
+				company:{
+					id:"",
+					logo:""
+				},
+				list:[],
 				isReady:false,
 				src: '/static/img/head/png',
+				isDeliver:false,
+				isCollect:false,
 			}
 		},
-		components: {
-		
-		},
+		props:{
+			isHr: {
+				require: false,
+				default: false,
+			},
+		},
+		components: {
+			CompanyInfo,RecruitmentItem
+		},
 		onLoad(op){
-			//this.id=op.id;
+			debugger
+			this.id=op.id;
+		
 		},
 		methods: {
-			 
+			
+			deliverBtn(){
+				 
+				if(this.isDeliver){
+					uni.showToast({
+						title:"已投递,请勿重复投递"
+					})
+					return
+				}
+				uni.showLoading({
+				 	 title: '加载中'
+				 })
+				 API.deliverResume(this.id).then((res)=>{
+					  
+					 uni.hideLoading()
+					this.isDeliver=true;
+					
+				 }).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			collectBtn(){
+				uni.showLoading({
+				 	 title: '加载中'
+				 })
+				 this.isCollect=!this.isCollect
+				 
+				 API.collectResume(this.id,this.isCollect?1:0).then((res)=>{
+					  
+					 uni.hideLoading()
+					
+				 }).catch(error => {
+						uni.showToast({
+							title:error
+						})
+				})
+			},
+			spiltItem(text){
+				if(text){
+					return text.split(",")
+					
+				}else{
+					return []
+				}
+			},
+			getRelevantList(){
+				API.getRelevantList(this.id).then((res)=>{
+					 this.list=res.data.data;
+					 
+					 uni.hideLoading()		
+				 }).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			setId(id){
+				this.id=id;
+				
+				this.getInfo();
+			},
+			 getInfo(){
+				 uni.showLoading({
+				 	 title: '加载中'
+				 })
+				 
+				 API.getRecruitmentDetails(this.id).then((res)=>{
+					 document.body.scrollTop = 0;
+					 document.documentElement.scrollTop = 0;
+					 this.info=res.data.recruitment;
+					  this.company={
+						  id:this.info.companyId,
+						  name:this.info.companyName,
+						  scale:this.info.companyScaleN,
+						   logo:this.info.companyLogo,
+						    address:this.info.address,
+							industry:this.info.companyIndustryN
+					  };
+					  this.isDeliver=res.data.deliveryStatus;
+					  this.isCollect=res.data.collectionStatus;
+					  this.companyId=this.info.companyId;
+					//
+					this.showcompany=false;
+					if(this.isHr){
+						uni.hideLoading()
+					}else{
+						this.getRelevantList();
+					}
+					
+				 }).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			 },
 			
 		},onReady(){ 
 			
-			this.isReady=true;
+			this.getInfo();
+			this.isReady=true;
 		},onShow(){
 			if(this.isReady){
 				

+ 76 - 121
pages/job/index/recruitInfo/recruitInfo.vue

@@ -1,146 +1,101 @@
 <template>
 	<view>
-		<u-navbar title="职位详情" ></u-navbar>
-		<view class="resumeInfo">
-			<view class="resumeInfo-row">
-				<h3>JAVA开发工程师</h3>
-				<span>招聘</span>
-			</view>
-			<view class="resumeInfo-row">
-				<view class="jp-work-tag">
-					<u-tag text="包住"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					<u-tag text="男女不限"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					<u-tag text="随时上班"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-				</view>
-				<h2>¥3000-5000/月</h2>
-			</view>
-			<view class="resumeInfo-company">
-				<u-avatar :src="src" size="80" mode="square"></u-avatar>
-				<view class="resumeInfo-company-text">
-					<view class="resumeInfo-company-name">
-						<p>湖北荆鹏软件集团有限公司</p>
-						<view class="u-flex">
-							<span>1-50人</span>
-							<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-							<span>IT行业/计算机软件</span>
-						</view>
-					</view>	
-					<u-icon name="arrow-right" color="#999" size="24"></u-icon>
-				</view>
-			</view>
-			<view class="resumeInfo-data">
-				<view class="resumeInfo-data-item">
-					<p>招聘人数</p>
-					<span>1人</span>
-				</view>
-				<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-				<view class="resumeInfo-data-item">
-					<p>性别</p>
-					<span>不限</span>
-				</view>
-				<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-				<view class="resumeInfo-data-item">
-					<p>工作经验</p>
-					<span>2年</span>
-				</view>
-				<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-				<view class="resumeInfo-data-item">
-					<p>学历要求</p>
-					<span>高中</span>
-				</view>
-			</view>
-			<view class="resumeInfo-info">
-				<view class="resumeInfo-info-head">
-					职位描述
-				</view>
-				<view class="resumeInfo-info-main">
-					任职要求:18-30周岁,无须才艺,唠嗑聊天为主,有才艺最佳,有强烈的表现欲望,良好的互动能力。
-					月休四天,每天6小时。
-					福利待遇:无责保底4000起
-					月工资提成无上限!
+		<CompanyInfo v-show="showcompany" :vshow="showcompany" :companyId="companyId" :companyInfo="company" @ckItem="setId" @back="showcompany=false" ></CompanyInfo>
+		<view v-show="!showcompany" >
+			<u-navbar title="职位详情" ></u-navbar>
+			<view class="resumeInfo">
+				<view class="resumeInfo-row">
+					<h3>{{info.title}}</h3>
+					<span>招聘</span>
 				</view>
-				<view class="resumeInfo-info-foot">
-					<view class="resumeInfo-address u-line-1">
-						工作地址:开发区开发区开发区开发区开发区开发区开发区开发区
-					</view>
-					<view class="resumeInfo-see">
-						<u-icon name="a-md-visibilityCopy" custom-prefix="custom-icon" color="#999"></u-icon>
-						<span>1323</span>
+				<view class="resumeInfo-row">
+				
+					<view class="jp-work-tag" v-if="info.requirements">
+						<u-tag  v-for="(text,index) in spiltItem(info.requirements)" :key="index"  :text="text" mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
 					</view>
+					
+					<h2>{{info.wageTypeName}}</h2>
 				</view>
-			</view>
-		</view>
-		<view class="jp-work">
-			<view class="jp-work-title">
-				相关推荐
-			</view>
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="包住"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="男女不限"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="随时上班"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
+				
+				<view class="resumeInfo-company"   @click="showcompany=true">
+					<u-avatar :src="company.logo" size="80" mode="square"></u-avatar>
+					<view class="resumeInfo-company-text">
+						<view class="resumeInfo-company-name">
+							<p>{{company.name}}</p>
+							<view class="u-flex">
+								<span>{{company.scale}}</span>
+								<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
+								<span>{{company.industry}}</span>
+							</view>
+						</view>	
+						<u-icon name="arrow-right" color="#999" size="24"></u-icon>
 					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
+				</view>
+				
+				<view class="resumeInfo-data">
+					<view class="resumeInfo-data-item">
+						<p>招聘人数</p>
+						<span>{{info.positionNumber}}人</span>
 					</view>
-				</view>	
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
+					<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
+					<view class="resumeInfo-data-item">
+						<p>性别</p>
+						<span>{{info.positionSexN}}</span>
 					</view>
-					<view class="jp-work-tag">
-						<u-tag text="包住"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="男女不限"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="随时上班"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
+					<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
+					<view class="resumeInfo-data-item">
+						<p>工作经验</p>
+						<span>{{info.workYearName}}</span>
 					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
+					<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
+					<view class="resumeInfo-data-item">
+						<p>学历要求</p>
+						<span>{{info.educationName}}</span>
 					</view>
 				</view>
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
+				<view class="resumeInfo-info">
+					<view class="resumeInfo-info-head">
+						职位描述
 					</view>
-					<view class="jp-work-tag">
-						<u-tag text="包住"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="男女不限"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="随时上班"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
+					<view class="resumeInfo-info-main">
+						 {{info.positionMessage}}
 					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
+					<view class="resumeInfo-info-foot">
+						<view class="resumeInfo-address u-line-1">
+							工作地址: {{info.address}}
+						</view>
+						<view class="resumeInfo-see">
+							<u-icon name="a-md-visibilityCopy" custom-prefix="custom-icon" color="#999"></u-icon>
+							<span>{{info.readingTimes}}</span>
 						</view>
-						<p>开发区</p>
 					</view>
 				</view>
 			</view>
-			<view class="resumeInfo-foot">
-				<view class="resumeInfo-collect">
-					<u-icon name="antOutline-star" custom-prefix="custom-icon" size="36" color="#2295FF"></u-icon>
-					<span>收藏</span>
+			<view class="jp-work" v-if="!isHr">
+				
+				
+				<view class="resumeInfo-foot">
+					<view class="resumeInfo-collect" @click="collectBtn">
+						<!--custom-icon-a-fasfa-star -->
+						<u-icon :name="isCollect?'a-fasfa-star ':'antOutline-star'" custom-prefix="custom-icon" size="36" color="#2295FF"></u-icon>
+						<span>收藏</span>
+					</view>
+					<view class="resumeInfo-btn" >
+						<u-button type="primary"  @click="deliverBtn" v-text="isDeliver?'已投递':'投递简历'"></u-button>
+					</view>
+				</view>
+				
+				<view class="jp-work-title" v-show="list.length">
+					相关推荐
 				</view>
-				<view class="resumeInfo-btn">
-					<u-button type="primary">投递简历</u-button>
+				<view class="jp-work-list" v-show="list.length">
+					<RecruitmentItem v-for="(item ,index) in list" :key="index" :item="item" :ck="false" @ckItem="setId" ></RecruitmentItem>
+					
 				</view>
 			</view>
 		</view>
 	</view>
+	
 </template>
 
 <script>

+ 2 - 1
pages/job/newsIndex/index.js

@@ -1,5 +1,6 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
 import * as API from '@/apis/index.js'
+import TabbarJob from '@/components/TabbarJob.vue'
 
 export default {
 		data() {
@@ -15,7 +16,7 @@ export default {
 			}
 		},
 		components: {
-			TabbarHr
+			TabbarJob
 		},
 		onLoad(op){
 			//this.id=op.id;

+ 2 - 0
pages/job/newsIndex/newsIndex.vue

@@ -56,6 +56,8 @@
 				</view>
 			</view>
 		</view>
+		<Tabbar-Job :current="1" ></Tabbar-Job>
+		
 	</view>
 </template>
 

+ 0 - 160
pages/job/personal/my/resumeAuth/resumeAuth.vue

@@ -96,163 +96,3 @@
 		margin: 20rpx;
 	}
 </style>
-
-
-
-<template>
-	<view>
-		<u-navbar title="职位管理"></u-navbar>
-		<view class="jp-search">
-			<u-search placeholder="日照香炉生紫烟" v-model="keyword" :show-action="false"></u-search>
-		</view>
-		<view class="jp-tab">
-			<view class="jp-quantity">
-				<p>数量</p><span>2</span>
-			</view>
-			<u-tabs :list="list" :current="current" @change="change"></u-tabs>
-		</view>
-		<view class="jp-work">
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>招聘中</span>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<p>12月13日 23:22</p>
-						<u-button size="mini" type="error" :custom-style="customStyle" plain>下架</u-button>
-					</view>
-				</view>	
-			</view>
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>审核中</span>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<p>12月13日 23:22</p>
-						<u-button size="mini" style="margin:0;" >上架</u-button>
-					</view>
-				</view>	
-			</view>
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>已下架</span>
-					</view>
-					<view class="jp-work-line">
-						<span>男</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>29岁</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>2年以上</span>
-						<u-line color="#ccc" length="20" direction="col" margin="0 20rpx"/>
-						<span>高中</span>
-					</view>
-					<view class="jp-work-info">
-						<p>12月13日 23:22</p>
-						<u-button size="mini" type="primary" :custom-style="customStyle" plain>上架</u-button>
-					</view>
-				</view>	
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import api from './index.js'
-	export default api;
-</script>
-
-<style>
-	page{
-		background-color: #F7F7F7;
-	}
-</style>
-<style scoped lang="scss">
-	.jp-quantity{
-		background-color: #fff;
-		height: 80rpx;
-		display: flex;
-		align-items: center;
-		font-size: 32rpx;
-		padding-left: 30rpx;
-		margin-top: 20rpx;
-		border-bottom: 1px solid #f7f7f7;
-		p{
-			color:#666;
-		}
-		span{
-			color:#1A91EA;
-			margin-left: 10rpx;
-		}
-	}
-	.jp-search{
-		background-color: #fff;
-		padding: 20rpx;
-	}
-	.jp-work-item{
-		padding:30rpx;
-		background-color: #fff;
-		margin: 20rpx 0;
-		&:last-child{
-			border-bottom:none;
-		}
-		.jp-work-name{
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			h3{
-				font-size: 36rpx;
-			}
-			span{
-				font-size: 32rpx;
-				color:#1677FF
-			}
-		}
-		.jp-work-tag{
-			display: flex;
-			align-items: center;
-			margin-top: 10rpx;
-			*{
-				margin-right: 10rpx;
-			}
-		}
-		.jp-work-info{
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			margin-top: 10rpx;
-			
-			p{
-				color:#999;
-				font-size: 24rpx;
-			}
-		}
-	}
-	.jp-work-line{
-		display: flex;
-		align-items: center;
-		margin-top:10rpx;
-	}
-</style>

+ 44 - 8
pages/job/personal/my/resumeCollect/index.js

@@ -1,25 +1,61 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+
+import * as API from '@/apis/job/resume.js'
+import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
 
 export default {
 		data() {
 			return {
-				isReady:false,
-				src: '/static/img/head.png',
-				
+				isReady:false,
+				pageIndex:1,
+				recordsTotal:0,
+				list: [ ],
+				current: 0
 			}
 		},
 		components: {
-		
+		RecruitmentItem
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
-		methods: {
-			 
+		methods: {
+			myLoadmore(){
+				 
+				this.pageIndex+=1;
+				this.getList()
+			},
+			 change(index) {
+					this.current = index;
+				},
+				getList(){
+					uni.showLoading({
+						title:"加载中"
+					})
+					 
+					var data={
+						type:2,
+						pageIndex:this.pageIndex
+					};
+					API.pagedLoad(data).then((res) => {
+							 
+						this.list=[
+							...this.list,
+							...res.data.data
+						];
+						this.recordsTotal=res.data.recordsTotal
+						uni.hideLoading()
+						 
+					}).catch(error => {
+							uni.showToast({
+								
+								title:error
+							})
+					})
+				}
 			
 		},onReady(){ 
-			
+			this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 11 - 40
pages/job/personal/my/resumeCollect/resumeCollect.vue

@@ -2,46 +2,17 @@
 <template>
 	<view>
 		<u-navbar title="我的收藏"></u-navbar>
-		<view class="jp-work">
-			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>
-			</view>
-		</view>
+		 <view class="jp-work">
+		 	<view class="jp-work-list">
+		 		 
+		 		 <RecruitmentItem v-for="(item ,index) in list" :key="index" :item="item"
+		 		  obj="recruitmentId=id,wageTypeName=wageTypeN,companyScale=scaleName,companyName=name,companyLogo=logo"
+		 		  ></RecruitmentItem>
+		 		  
+		 		 <u-loadmore @loadmore="myLoadmore" :status="list.length<recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+		 		 
+		 	</view>
+		 </view>
 	</view>
 </template>
 

+ 68 - 11
pages/job/personal/my/resumeList/index.js

@@ -1,5 +1,6 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+import * as API from '@/apis/job/resume.js'
+import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
 
 export default {
 		data() {
@@ -7,32 +8,88 @@ export default {
 				isReady:false,
 				src: 'http://pic2.sc.chinaz.com/Files/pic/pic9/202002/hpic2119_s.jpg',
 				list: [{
-					name: '全部'
+					name: '全部',
+					list:[],
+					status:"",
+					pageIndex:1,
+					recordsTotal:0
 				}, {
-					name: '待沟通'
+					name: '待沟通',
+					list:[],
+					status:"2",
+					pageIndex:1,
+					recordsTotal:0,
 				}, {
-					name: '邀面试',
+					name: '邀面试',
+					list:[],
+					status:"3",
+					pageIndex:1,
+					recordsTotal:0,
 				},{
-					name: '邀入职',
+					name: '邀入职',
+					list:[],
+					status:"4",
+					pageIndex:1,
+					recordsTotal:0,
 				},{
-					name: '不合适',
-				}],
+					name: '不合适',
+					list:[],
+					status:"6",
+					pageIndex:1,
+					recordsTotal:0,
+				}],
+				
 				current: 0
 			}
 		},
 		components: {
-		
+			RecruitmentItem
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
-		methods: {
+		methods: {
+			myLoadmore(){
+				var obj=this.list[this.current];
+				obj.pageIndex+=1;
+				this.getList()
+			},
 			 change(index) {
-				this.current = index;
+				this.current = index;
+				var obj=this.list[this.current];
+				
+				if(obj.list.length==0){
+					this.getList()
+				}
+			},
+			getList(){
+				uni.showLoading({
+					title:"加载中"
+				})
+				var obj=this.list[this.current];
+				var data={
+					chatStatus:obj.status,
+					pageIndex:obj.pageIndex
+				};
+				API.deliveryRecord(data).then((res) => {
+						 
+					obj.list=[
+						...obj.list,
+						...res.data.data
+					];
+					obj.recordsTotal=res.data.recordsTotal
+					uni.hideLoading()
+					console.log(this.list)
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
 			}
 			
 		},onReady(){ 
-			
+			this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 7 - 36
pages/job/personal/my/resumeList/resumeList.vue

@@ -6,42 +6,13 @@
 				<u-tabs :list="list" :is-scroll="false" :current="current" @change="change"></u-tabs>
 			</view>
 			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>
+				 	<RecruitmentItem v-for="(item ,index) in list[current].list" :key="index" :item="item.jobRecruitment"
+					 obj="wageTypeName=wageTypeN,companyScaleN=scaleName,companyName=name,companyLogo=logo,areaN=cityName"
+					 ></RecruitmentItem>
+				 	 
+				 	<u-loadmore @loadmore="myLoadmore" :status="list[current].list.length<list[current].recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+				 	
+				 
 			</view>
 		</view>
 	</view>

+ 39 - 21
pages/job/personal/my/resumeLook/index.js

@@ -1,43 +1,61 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
+
+import * as API from '@/apis/job/resume.js'
+import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
 
 export default {
 		data() {
 			return {
 				isReady:false,
-				src: '/static/img/head/png',
-				keyword: '遥看瀑布挂前川',
-				list: [{
-					name: '全部'
-				}, {
-					name: '已投递'
-				}, {
-					name: '邀沟通',
-				},{
-					name: '邀面试'
-				}, {
-					name: '邀入职',
-				},{
-					name: '已入职'
-				}, {
-					name: '不合适',
-				}],
+				pageIndex:1,
+				recordsTotal:0,
+				list: [ ],
 				current: 0
 			}
 		},
 		components: {
-		
+		RecruitmentItem
 		},
 		onLoad(op){
 			//this.id=op.id;
 		},
-		methods: {
+		methods: {
+			myLoadmore(){
+				 
+				this.pageIndex+=1;
+				this.getList()
+			},
 			 change(index) {
 					this.current = index;
+				},
+				getList(){
+					uni.showLoading({
+						title:"加载中"
+					})
+					 
+					var data={
+						type:2,
+						pageIndex:this.pageIndex
+					};
+					API.pagedLoad(data).then((res) => {
+							 
+						this.list=[
+							...this.list,
+							...res.data.data
+						];
+						this.recordsTotal=res.data.recordsTotal
+						uni.hideLoading()
+						 
+					}).catch(error => {
+							uni.showToast({
+								
+								title:error
+							})
+					})
 				}
 			
 		},onReady(){ 
-			
+			this.getList()
 			this.isReady=true;
 		},onShow(){
 			if(this.isReady){

+ 7 - 36
pages/job/personal/my/resumeLook/resumeLook.vue

@@ -3,42 +3,13 @@
 		<u-navbar title="浏览记录"></u-navbar>
 		<view class="jp-work">
 			<view class="jp-work-list">
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>
+				 
+				 <RecruitmentItem v-for="(item ,index) in list" :key="index" :item="item"
+				  obj="recruitmentId=id,wageTypeName=wageTypeN,companyScale=scaleName,companyName=name,companyLogo=logo"
+				  ></RecruitmentItem>
+				  
+				 <u-loadmore @loadmore="myLoadmore" :status="list.length<recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+				 
 			</view>
 		</view>
 	</view>

+ 341 - 114
pages/job/query/index.js

@@ -1,130 +1,357 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
-
+import * as API from '@/apis/job/index.js'
+import * as API_common from '@/apis/common.js'
+
+import RecruitmentItem from '@/components/job/RecruitmentItem.vue'
+
 export default {
 		data() {
-			return {
-				nochange:false,
-				ing:false,
-				key:'',
-				record:[],
-				result:[],
-				recordsTotal:0,
-				back:false,
+			return {
+				nochange:false,
+				ing:false,
+				myfocus:true,
+				key:'',
+				record:[],
+				result:[],
+				selectShow:false,
+				selectShowTree:false,
+				
+				selectShowIndex:0,
+				selectIndexList:[[],[],[],[]],
+				pageIndex:1,
+		 
+				recordsTotal:0,
+				popupList:[],
+				back:false,
 				src:"",
 				isReady:false,
+				 whereDataInit:[
+				 	{
+				 		value:"",
+						name:"月薪范围",
+				 		label:"月薪范围"
+				 	},{
+				 		value:"",
+						name:"工作经验",
+				 		label:"工作经验"
+				 	},{
+				 		value:"",
+				 		label:"学历",
+						name:"学历",
+				 	},{
+				 		value:"",
+						name:"招聘岗位",
+				 		label:"招聘岗位"
+				 	}
+				 ],
+				whereData:[
+					
+				],
+				dataList:[
+					"b5e4a52a-9f89-4e3b-976f-79207a40587d",//月薪
+					"7724a25f-a781-46f4-b048-d9812108ff02" , //工作经验
+					"c1887d9d-e945-4875-be3f-905195cd8a8e"//学历
+				],
+				dataMap:{},
 			}
-		},
-		components: {
-		
-		},
-		onLoad(op){
-			//this.id=op.id;
 		},
-		methods: {
-			gotoLine(item){
-				 uni.redirectTo({
-					url:'/pages/route/index?id='+item.id+"&downid="+item.stationId
-				 })
-			 },
-			setHistory(){
-			    //搜索记录保存
-			    var sz=this.carhelp.get("searchHistory");
-			    if(!sz){
-			        sz=[];
-			    }
-			    var temp =[];
-			    //去重 ,后插入的,排队到最前面
-			    if(sz.length){
-			        for(var i in sz){
-			            if(i==0){
-			                temp.push(this.key);
-			            }
-			            if(sz[i]==this.key){
-			                continue;
-			            }
-			            temp.push(sz[i]);
-			
-			            if(temp.length==10){
-			                break
-			            }
-			
-			        }
-			    }else{
-			        temp.push(this.key);
-			    }
-				this.record=temp;
-			    this.carhelp.set("searchHistory",temp);
-			},
-			clearBtn(){
-				this.carhelp.set("searchHistory",[]);
-				this.record=[];
-				this.$refs.common.alert("搜索内容已清空")
-			},
-			change(){
-				if(this.nochange){
-					this.nochange=false;
-					return
-				}
-				this.ing=false;
-				document.getElementsByTagName('uni-page-wrapper')[0].style="background-color: #ffffff;"
-				
-				if(this.key==""){
-					this.result=[]
-				}
-				
+		components: {
+			RecruitmentItem
+		},
+		onLoad(op){
+			this.whereData={
+				...this.whereDataInit
+			}
+			
+			if(op.key){
+				this.key=op.key;
+			}
+			if(op.all){
+				this.myfocus=false;
+			}
+			
+		},
+		methods: {
+			
+			spiltItem(text){
+				if(text){
+					return text.split(",")
+					
+				}else{
+					return []
+				}
+			},
+		 
+			getScreenList(){
+				
+				API_common.getScreenList().then((response) => {
+					
+					var list=response.data;
+					 var tree=[];
+					 var map=new Map();
+					 var max=0;
+					 var all={
+						 extra:0,
+						 name:"全部岗位"
+					 }
+					 tree.push(all);
+					list.forEach((item)=>{
+						if(item.level>max){
+							max=item.level;
+						}
+						if(item.parentId){
+							
+						}else{
+							item.extra=tree.length,
+							tree.push(item);
+						}
+						
+						map.set(item.id,item);
+						this.setChildren(item,max,item);
+					})
+					this.setChildren(all,max,all);
+					
+					 list.forEach((item)=>{		
+					 	if(item.parentId){
+					 		var obj=map.get(item.parentId);
+							item.extra=obj.children.length
+							obj.children.push(item)
+					 	} 	
+					 })
+					
+					this.popupList=tree;
+						uni.hideLoading()
+					// .map((item)=>{
+					// 	return item.name;
+					// })
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			confirmSelect(obj){
+				var index=this.selectShowIndex;
+				var list=[];
+				if(obj[0].extra){
+					list.push(obj[0].extra);
+					
+				}else{
+					list.push(0);
+					
+				}
+				this.selectIndexList[index]=list;
+				
+				this.whereData[index]=obj[0];
+				this.submit()
+				
+			},
+			confirmSelectTree(obj){
+				console.log(obj)
+				var list=[];
+				for(var i in obj){
+					if(i==0){
+						this.whereData[3]=obj[i];
+					}
+					if(obj[i].extra){
+						list.push(obj[i].extra);
+						
+					}else{
+						list.push(0);
+						
+					}
+					if(obj[i].value){
+						this.whereData[3]=obj[i];
+					}
+				}
+				this.selectIndexList[3]=list;
+				this.submit()
+			},
+			setChildren(item,i,it){
+				
+				if(i>1){
+					var i2=i-1;
+					var myit={extra:0}
+					it.children=[myit]
+					return this.setChildren(item,i2,myit);
+				}else{
+					return	item
+				}
+				
 			},
-			 submit( ){
-				 
-				 
-			 	if(!this.key){
-			 		return
-			 	}
-			 	
-			 	this.setHistory();
-			 	 var region= this.carhelp.get("car_region");
-			 	 if(!region){
-			 		  region= this.carhelp.get("car_region_temp");
-			 	 }
-			 	var form={
-			 		name:this.key,
-			 		pageIndex:1,
-			 		pageSize:20,
-			 		regionId:region
-			 	}
-				this.ing=true;
-				this.result=[{}]
-				this.$forceUpdate()
-				return;
-			 	API.routeList(form).then((res) => {
-			 		this.ing=true;
-			 
-			 
-			 		this.result=res.data.data;
-			 		this.recordsTotal=res.data.recordsTotal
-			 		for(var i in this.result){
-			 			var item=this.result[i];
-			 			var len =item.name.indexOf(this.key)
-			 			this.result[i].name1=item.name.substring(0,len);
-			 			this.result[i].name2=item.name.substring(len+this.key.length);
-			 
-			 		}
-			 		document.getElementsByTagName('uni-page-wrapper')[0].style="background-color: #f7f7f7;"
-			 		
-			 		
-			 		
-			 	}).catch(error => {
-			 		this.$refs.common.alert( error);
-			 	})
+			getDataMap(){
+				uni.showLoading({
+				    title: '加载中'
+				});
+				API_common.getData(this.dataList.join()).then((res) => {
+					
+					 this.dataMap=res.data;
+					 
+					 for(var key in this.dataMap){
+						this.dataMap[key].forEach((item,index)=>{
+						 	item.extra=(index+1);
+						 })
+ 					 }
+					 
+					 
+					this.getScreenList();
+						
+				}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
+			},
+			gotoLine(item){
+				 uni.redirectTo({
+					url:'/pages/route/index?id='+item.id+"&downid="+item.stationId
+				 })
+			 },
+			setHistory(){
+				
+				if(!this.key){
+					return
+				}
+			    //搜索记录保存
+			    var sz=this.carhelp.get("searchHistory");
+			    if(!sz){
+			        sz=[];
+			    }
+			    var temp =[];
+			    //去重 ,后插入的,排队到最前面
+			    if(sz.length){
+			        for(var i in sz){
+			            if(i==0){
+			                temp.push(this.key);
+			            }
+			            if(sz[i]==this.key){
+			                continue;
+			            }
+			            temp.push(sz[i]);
+			
+			            if(temp.length==10){
+			                break
+			            }
+			        }
+			    }else{
+			        temp.push(this.key);
+			    }
+				this.record=temp;
+			    this.carhelp.set("searchHistory",temp);
+			},
+			clearBtn(){
+				this.carhelp.set("searchHistory",[]);
+				this.record=[];
+				//this.$refs.common.alert("搜索内容已清空")
+				uni.showToast({
+					icon:'none' ,title:"搜索内容已清空"
+				})
+			},
+			change(){
+				if(this.nochange){
+					this.nochange=false;
+					return
+				}
+				this.ing=false;
+				document.getElementsByTagName('uni-page-wrapper')[0].style="background-color: #ffffff;"
+				
+				if(this.key==""){
+					this.result=[]
+				}
+				
+			},
+			noSearch(){
+				this.ing=true;
+				this.whereData={
+					...this.whereDataInit
+				}
+				this.key="";
+				
+				this.submit()
+			},
+			myLoadmore(){
+				this.submit(true);
+			},
+			 submit( bl){
+				 
+			 	this.setHistory();
+				if(bl){
+					this.pageIndex++;				
+				}else{
+					this.pageIndex=1;				 
+									
+				}
+			 	  var form=  {
+						title:this.key,
+						pageIndex:this.pageIndex,
+						pageSize:20, 
+						monthlySalary:this.whereData[0].value,
+						workExperience:this.whereData[1].value,
+						education:this.whereData[2].value,
+						recruitmentPosition:this.whereData[3].value,
+					};
+				
+			 	
+				// this.ing=true;
+				// this.result=[{}]
+				// this.$forceUpdate()
+				// return;
+			 	API.getRecruitmentList(form).then((res) => {
+			 		this.ing=true;
+					if(bl){
+						this.result=[
+							...this.result,
+							...res.data.data
+						];
+						
+					}else{
+						this.result=res.data.data;
+						
+					}
+			 
+					
+			 		this.recordsTotal=res.data.recordsTotal
+			
+			 		document.getElementsByTagName('uni-page-wrapper')[0].style="background-color: #f7f7f7;"
+			 		
+			 		
+			 		
+			 	}).catch(error => {
+						uni.showToast({
+							
+							title:error
+						})
+				})
 			 }
 			
-		},onReady(){ 
-			this.record=this.carhelp.get("searchHistory");
+		},onReady(){ 
 			
-			this.isReady=true;
+			this.record=this.carhelp.get("searchHistory");
+			this.getDataMap();
+			this.isReady=true;
+			if(this.key||!this.myfocus ){
+				this.submit()
+			}
 		},onShow(){
 			if(this.isReady){
 				
 			}	
-		},
+		},computed:{
+			getShowDataList(){
+				
+				var list=this.dataMap[this.dataList[this.selectShowIndex]];
+				if(list){
+					list.unshift(
+						this.whereDataInit[this.selectShowIndex]
+					)
+					return list;
+				}else{
+					return [];
+				}
+				
+			},
+		}
+		
 	}

+ 32 - 49
pages/job/query/query.vue

@@ -2,9 +2,9 @@
 	<view :style="ing&&result.length==0?'':'background-color: #ffffff'">
 		<u-navbar>
 			<view class="jp-search">
-				<u-search placeholder="日照香炉生紫烟" :focus="true" v-model="key" @change="change()" @search="submit"  :show-action="false"></u-search>
+				<u-search placeholder="日照香炉生紫烟" :focus="myfocus" @focus="ing=false"  v-model="key" @change="change()"   @search="submit"  :show-action="false"></u-search>
 			</view>
-			<view class="jp-search-btn">
+			<view class="jp-search-btn" @click="noSearch">
 				<span>取消</span>
 			</view>
 		</u-navbar>
@@ -19,68 +19,51 @@
 		</view>
 		
 		<view class="jp-work" v-show="ing&&result.length" >
+			<u-select v-model="selectShow" 
+			  @confirm="confirmSelect"
+			   :default-value="selectIndexList[selectShowIndex]"
+			 label-name="name"	 :list="getShowDataList"></u-select>
+			
+			<u-select v-model="selectShowTree"
+			 mode="mutil-column-auto" value-name="id"	
+			 @confirm="confirmSelectTree"
+			 :default-value="selectIndexList[3]"
+			  label-name="name"	 :list="popupList"></u-select>
+
 			<view class="jp-work-screen">
-				<view class="screen">
-					<span>月薪范围</span>
+				<view class="screen" @click="selectShowIndex=0,selectShow=true">
+					<span v-text="whereData[0].label">月薪范围</span>
 					<u-icon name="arrow-down" color="#999" size="24"></u-icon>
 				</view>
-				<view class="screen">
-					<span>工作经验</span>
+				<view class="screen" @click="selectShowIndex=1,selectShow=true">
+					<span v-text="whereData[1].label">工作经验</span>
 					<u-icon name="arrow-down" color="#999" size="24"></u-icon>
 				</view>
-				<view class="screen">
-					<span>学历</span>
+				<view class="screen" @click="selectShowIndex=2,selectShow=true">
+					<span v-text="whereData[2].label">学历</span>
 					<u-icon name="arrow-down" color="#999" size="24"></u-icon>
 				</view>
-				<view class="screen">
-					<span>招聘岗位</span>
+				<view class="screen" @click="selectShowTree=true" >
+					<span v-text="whereData[3].label">招聘岗位</span>
 					<u-icon name="arrow-down" color="#999" size="24"></u-icon>
 				</view>
 			</view>
 			<view class="jp-work-list">
-				<view class="jp-work-item"  @click="gotoUrl('pages/job/index/recruitInfo/recruitInfo')">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
-				</view>	
-				<view class="jp-work-item">
-					<view class="jp-work-name">
-						<h3>JAVA开发工程师</h3>
-						<span>面议</span>
-					</view>
-					<view class="jp-work-tag">
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-						<u-tag text="雪月夜"  mode="dark" bg-color="#f1f1f7" color="#999" size="mini"/>
-					</view>
-					<view class="jp-work-info">
-						<view class="u-flex">
-							<u-avatar :src="src" size="40"></u-avatar>
-							<p>湖北荆鹏软件集团有限公司 1-50人</p>
-						</view>
-						<p>开发区</p>
-					</view>
+				<RecruitmentItem v-for="(item ,index) in result" :key="item.id" :item="item" ></RecruitmentItem>
+				
+				<!-- <view v-show="ing&&result.length&&result.length==recordsTotal" style="text-align:center;    padding: 10px;">
+					没有更多记录了
 				</view>
+				<template v-show="ing&&result.length&&result.length<recordsTotal" style="text-align:center;    padding: 10px;">
+				</template> -->
+				<u-loadmore @loadmore="myLoadmore" :status="result.length<recordsTotal?'loadmore':'nomore'" ></u-loadmore>
+				
 			</view>
 		</view>
-		<view v-show="ing&&result.length&&result.length==recordsTotal" style="text-align:center;margin-top: 10px;">没有更多记录了</view>
-		<view v-show="ing&&result.length&&result.length<recordsTotal" style="text-align:center;margin-top: 10px;">只展示20条数据</view>
+		
 		<view  v-show="ing&&result.length==0" style="text-align:center;margin-top: 80px;" >
-			<img src="static/img/blankpage.png" style="width: 50%;" alt="" >
-			<view>附近暂无站点信息</view>
+			<img src="/static/img/blankpage.png" style="width: 50%;" alt="" >
+			<view>暂无数据信息</view>
 		</view>
 		
 	</view>

+ 280 - 0
pages/login/index.js

@@ -0,0 +1,280 @@
+//import * as WxJsApi from '@/utils/wxJsApi.js'
+import * as API from '@/apis/login.js'
+import ResumeAuth from '@/components/job/ResumeAuth.vue'
+
+import {
+		checkPhone
+	} from '@/utils'
+export default {
+		data() {
+			return {
+				phone:"",
+				isReady:false,
+				vcode:"",
+				error:"",
+				second:"",
+				password:"",
+				maxlength:4,
+				value:"",
+				show:"",
+				isSendMsgIng: false,
+				sendMsgSecond: 60*5,
+				tel:'',
+				tab:0,
+				message:"",
+				backUrl:"",
+				form:"",
+				readme:true,
+				isReady:false,
+				auth:false,
+				authData:{
+					
+				}
+			}
+		},
+		components: {
+			ResumeAuth
+		},
+		onLoad(op){
+			this.form=op.form;
+			if(this.form=="hr"){
+				this.tab=2
+			}
+			if(this.form=="job"){
+				this.tab=0
+			}
+			this.message=op.message;
+			this.backUrl=op.back;
+			console.log(op)
+		},
+		computed: {
+			inputStyle() {
+				let style = {};
+				if(this.tel) {
+					style.color = "#fff";
+					style.backgroundColor = this.$u.color['primary'];
+				}
+				return style;
+			}
+		},
+		methods: {
+			finish(){
+				 uni.showLoading({
+				   	title:"加载中"
+				   })
+				  API.validateCode({
+					verifyCode:  this.value,
+					telephone:this.tel,
+					openId:this.carhelp.getOpenId(),
+					form:this.form
+				  }).then((response) => {
+				 		 
+				 		 this.loginOk(response);
+				 }).catch(error => {
+				 	uni.showToast({
+				 				title:error,
+				 				icon:"none"
+				 	})
+				 })
+			},
+			showphone(phone){
+				if(!phone){
+					return "";
+				}
+				if(phone.length!=11){
+					return "";
+				}
+				return phone.substring(0,3)+'****'+phone.substring(8);
+			},
+			 login2(){
+				
+				 
+				 
+				 if (!this.readme) {
+				 	uni.showToast({
+				 		title: "请阅读并同意《用户协议》《隐私政策》",
+				 		
+				 	})
+				 }
+				 var  time= this.carhelp.get("getvcodetime");
+				 
+				  if(time){
+				 	var nowtime= new Date().getTime()
+				 	var  differ=(nowtime-time)/1000
+				 	if(differ<5*60){
+				 		this.sendMsgSecond=5*60 - parseInt(differ)
+						 this.tab=4;
+				 		this.msgTimeInterval();
+				 	} 
+				 	 
+				  }
+				  if (!this.isSendMsgIng) {
+					  var checkPhoneResult = checkPhone(this.tel);
+					  
+					  if(checkPhoneResult!==true){
+					  	uni.showToast({
+					  		title: checkPhoneResult,
+					  		
+					  	})
+					  	return;
+					  }else{
+						  uni.showLoading({
+						    	title:"加载中"
+						    })
+						   API.getVerifyCode(this.tel).then((response) => {
+						  		 
+						  		this.tab=4; 
+						  		uni.hideLoading();
+						  		 this.carhelp.set("getvcodetime",new Date().getTime());
+						  		this.tab=4;
+						  		 if(!""){  //response.message
+						  		 	//倒计时
+						  		 	this.msgTimeInterval();
+						  		 }else{
+						  		 	uni.showToast({
+						  		 		title:"您的验证码已经发送[5分钟有效],请勿重复点击"
+						  		 	})
+						  		 }
+						  }).catch(error => {
+						  	uni.showToast({
+						  				title:error,
+						  				icon:"none"
+						  	})
+						  })
+						  
+					  }
+					  
+					  
+				  }
+				  
+				  
+				 
+				 
+				
+			 },
+			 //倒计时
+			 msgTimeInterval() {
+			 	this.isSendMsgIng = true;
+			 	var time = this.sendMsgSecond;
+			 	var _this = this;
+			 	this.timer = setInterval(() => {
+			 		if (time > 0) {
+			 			_this.sendMsgSecond = time--;
+			 		} else {
+			 			_this.isSendMsgIng = false;
+			 			_this.sendMsgSecond = 5*60;
+			 			clearInterval(_this.timer)
+			 		}
+			 	}, 1000)
+			 },
+			login3(){
+				//var checkPhoneResult = checkPhone(this.tel);
+				
+				// if(checkPhoneResult!== true){
+				// 	uni.showToast({
+				// 		title: checkPhoneResult,
+						
+				// 	})
+				// 	return;
+				// }
+				if(!this.password){
+					uni.showToast({
+						title: "请输入密码",
+						
+					})
+					return;
+				}
+				
+				uni.showLoading({
+				  	title:"加载中"
+				  })
+				 API.passwordLogin({
+					 phone:this.tel,
+					 password:this.password,
+					 openId:this.carhelp.getOpenId(),
+					 form:this.form
+				 }).then((response) => {
+						 
+					  this.loginOk(response)
+				}).catch(error => {
+					uni.showToast({
+								title:error,
+								icon:"none"
+					})
+				})
+				
+			},
+			
+			loginOk(response){
+			
+				var token = response ? response.data.token : '';
+				this.carhelp.setToken(token);
+				
+				if("job"==this.form){
+					this.carhelp.setPersonInfo(response.data.jobUser );
+					if(response.data.jobUser.isAuthentication=="1"||response.data.jobUser.isAuthentication=="2"){
+						this.loginBack();	
+					}else{
+						uni.hideLoading();
+						 this.auth=true;
+						
+					}
+				}
+				if("hr"==this.form){
+					this.carhelp.setPersonInfo(response.data.sysUser );
+					this.loginBack();
+				}
+			
+				
+			},
+			loginBack(){
+				if(this.backUrl){
+					window.location.href="#"+this.backUrl.split(",").find(function(item){
+						return item.indexOf("pages/login/")==-1
+					});
+				}else{
+					this.gotoUrl("pages/"+this.form+"/index/index")
+					
+				}
+			},
+			 login(){
+				 if(!this.readme){
+					 uni.showToast({
+					 	title:"请阅读并同意《用户协议》《隐私政策》",
+					 	icon:"none"
+					 })
+				 }else{
+					 uni.showLoading({
+					     title: '加载中'
+					 });
+					 API.wechatLogin({
+						 openId:this.carhelp.getOpenId(),
+						 form:this.form
+					 }).then((response) => {
+						 
+						this.loginOk(response)
+						
+					 }).catch(error => {
+							uni.showToast({
+								title:error,
+								icon:"none"
+							})
+					})
+				 }
+					 
+			 }
+			
+		},onReady(){ 
+			if(this.message){
+				uni.showToast({
+					title:this.message.split(",")[0],
+					icon:"none"
+				})
+			}
+			this.isReady=true;
+		},onShow(){
+			if(this.isReady){
+				
+			}	
+		},
+	}

+ 1 - 1
pages/login/passwordLogin/index.js

@@ -6,7 +6,7 @@ export default {
 			return {
 				phone:"",
 				password:"",
-				readme:false,
+				readme:true,
 				isReady:false,
 			}
 		},

+ 6 - 1
pages/login/passwordLogin/passwordLogin.vue

@@ -1,5 +1,7 @@
 <template>
 	<view class="wrap">
+		<my-common  :login="false"  mytitle="密码登录" ref="common"></my-common>
+		
 		<u-navbar title="密码登录" ></u-navbar>
 		<view class="wxLogin-logo">
 			<u-image width="150" height="150" src="/static/img/logo.png"></u-image>
@@ -27,7 +29,10 @@
 		</view>
 	</view>
 </template>
-
+<script>
+	import api from '@/pages/login/index.js'
+	export default api;
+</script>
 <script>
 export default {
 	data() {

+ 45 - 45
pages/login/phoneLogin/index.js

@@ -1,12 +1,12 @@
 //import * as WxJsApi from '@/utils/wxJsApi.js'
 import * as API from '@/apis/index.js'
-	import {
-		checkPhone
+	import {
+		checkPhone
 	} from '@/utils'
 export default {
 	data() {
 		return {
-			readme: false,
+			readme: true,
 			phone: "",
 			isReady: false,
 			errorType: ['message'],
@@ -46,33 +46,33 @@ export default {
 	onLoad(op) {
 		//this.id=op.id;
 	},
-	methods: {
-		 
-		loginByUniverify(provider, res) {
-			
-			const univerifyInfo = {
-				provider,
-				...res.authResult,
-			}
-			uni.request({
-				url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/univerify-login',
-				method: 'POST',
-				data: univerifyInfo,
-				success: (res) => {
-					const data = res.data
-					if (data.success) {
-						this.phone = phoneNumber;
-					} else {
-						console.log("111")
-					}
-			
-				},
-				fail: (err) => {
-					console.log("222")
-				}
-			})
-			
-			 
+	methods: {
+		 
+		loginByUniverify(provider, res) {
+			
+			const univerifyInfo = {
+				provider,
+				...res.authResult,
+			}
+			uni.request({
+				url: 'https://97fca9f2-41f6-449f-a35e-3f135d4c3875.bspapp.com/http/univerify-login',
+				method: 'POST',
+				data: univerifyInfo,
+				success: (res) => {
+					const data = res.data
+					if (data.success) {
+						this.phone = phoneNumber;
+					} else {
+						console.log("111")
+					}
+			
+				},
+				fail: (err) => {
+					console.log("222")
+				}
+			})
+			
+			 
 		},
 		getPhone() {
 			uni.login({
@@ -140,15 +140,15 @@ export default {
 				}
 			});
 		},
-		login() {
-			var checkPhoneResult = checkPhone(this.phone);
-			
-			if(checkPhoneResult){
-				uni.showToast({
-					title: checkPhoneResult,
-					icon: "none"
-				})
-				return;
+		login() {
+			var checkPhoneResult = checkPhone(this.phone);
+			
+			if(checkPhoneResult){
+				uni.showToast({
+					title: checkPhoneResult,
+					
+				})
+				return;
 			}
 			this.$refs.uForm.validate(valid => {
 				if (valid) {
@@ -161,11 +161,11 @@ export default {
 			if (!this.readme) {
 				uni.showToast({
 					title: "请阅读并同意《用户协议》《隐私政策》",
-					icon: "none"
+					
 				})
 			} else {
-				 uni.navigateTo({
-				 	url:"/pages/login/vCode/vCode?phone="+this.phone
+				 uni.navigateTo({
+				 	url:"/pages/login/vCode/vCode?phone="+this.phone
 				 })
 			}
 
@@ -173,9 +173,9 @@ export default {
 
 	},
 	onReady() {
-		//
+		//
 		this.$refs.uForm.setRules(this.rules);
-		//
+		//
 		this.getPhone()
 		this.isReady = true;
 	},
@@ -184,4 +184,4 @@ export default {
 
 		}
 	},
-}
+}

+ 7 - 0
pages/login/phoneLogin/phoneLogin.vue

@@ -1,5 +1,7 @@
 <template>
 	<view class="wrap">
+		<my-common  :login="false"   ref="common"></my-common>
+		
 		<view class="wxLogin-logo">
 			<u-image width="150" height="150" src="/static/img/logo.png"></u-image>
 			<p>荆开就业在线</p>
@@ -23,6 +25,11 @@
 	</view>
 </template>
 
+<script>
+	import api from '@/pages/login/index.js'
+	export default api;
+</script>
+
 <script>
 export default {
 	data() {

+ 1 - 1
pages/login/vCode/index.js

@@ -32,7 +32,7 @@ export default {
 						if(response.data){
 							var token = response.data ? response.data.token : '';
 							this.carhelp.setToken(token);
-							this.carhelp.setPersonInfo(response.data.userInfo)
+							this.carhelp.setPersonInfo(response.data.jobUser)
 							
 							
 						}else{

+ 7 - 0
pages/login/vCode/vCode.vue

@@ -1,5 +1,7 @@
 <template>
 	<view class="wrap">
+		<my-common  :login="false"   ref="common"></my-common>
+		
 		<view class="wxLogin-logo">
 			<u-image width="150" height="150" src="/static/img/logo.png"></u-image>
 			<p>荆开就业在线</p>
@@ -17,6 +19,11 @@
 	</view>
 </template>
 
+<script>
+	import api from '@/pages/login/index.js'
+	export default api;
+</script>
+
 <script>
 export default {
 	data() {

+ 0 - 45
pages/login/wxLogin/index.js

@@ -1,45 +0,0 @@
-//import * as WxJsApi from '@/utils/wxJsApi.js'
-import * as API from '@/apis/index.js'
-
-export default {
-		data() {
-			return {
-				readme:false,
-				isReady:false,
-			}
-		},
-		components: {
-		
-		},
-		onLoad(op){
-			//this.id=op.id;
-		},
-		methods: {
-			 login(){
-				 if(!this.readme){
-					 uni.showToast({
-					 	title:"请阅读并同意《用户协议》《隐私政策》",
-					 	icon:"none"
-					 })
-				 }else{
-					 API.getPassengerInfo().then((response) => {
-						 
-					 }).catch(error => {
-							uni.showToast({
-								title:error,
-								icon:"none"
-							})
-					})
-				 }
-					 
-			 }
-			
-		},onReady(){ 
-			
-			this.isReady=true;
-		},onShow(){
-			if(this.isReady){
-				
-			}	
-		},
-	}

+ 332 - 17
pages/login/wxLogin/wxLogin.vue

@@ -1,28 +1,69 @@
 <template>
 	<view>
-		<view class="wxLogin-logo">
-			<u-image width="150" height="150" src="/static/img/logo.png"></u-image>
-			<p>荆开就业在线</p>
+		
+		<view v-show="auth">
+			<resume-auth @authSubmit="loginBack"></resume-auth>
 		</view>
-		<view class="wxLogin-btn">
-			<u-button type="success" shape="circle">微信登录</u-button>
-		</view>
-		<view class="wxLogin-foot">
-			<view class="wxLogin-foot-btn">
-				<u-button shape="circle">手机登录</u-button>
-				<u-button shape="circle">密码登录</u-button>
-			</view>
-			<view class="wxLogin-foot-text">
-				<u-checkbox-group>
-					<u-checkbox><view class="u-flex"><p>我已阅读并同意</p><span>《用户协议》《隐私政策》</span></view></u-checkbox>
-				</u-checkbox-group>
+		<view class="wrap" v-show="!auth">
+				<my-common  :login="false"   ref="common"></my-common>
+				
+				<view class="wxLogin-logo">
+					<u-image width="150" height="150" src="/static/img/logo.png"></u-image>
+					<p>荆开就业在线</p>
+				</view>
+				<view class="wxLogin-btn" v-show="tab==0">
+					<u-button type="success" shape="circle" @click="login">微信登录</u-button>
+				</view>
+			
+				<view class="content"  v-show="tab==1">
+					<input class="u-border-bottom login-input" type="number" v-model="tel" placeholder="请输入手机号" />
+					<button  @click="login2" :style="[inputStyle]" class="getCaptcha">获取短信验证码</button>
+					<view class="tips">未注册的手机号验证后自动创建账号</view>
+				</view>
+				<view class="content"  v-show="tab==2">
+					<view class="login-input">
+						<input type="text" v-model="tel" placeholder="请输入账号\手机号" />
+					</view>
+					<view class="login-input">
+						<input type="password" v-model="password" placeholder="请输入密码" />
+					</view>
+					<button @click="login3" :style="[inputStyle]" class="getCaptcha">登录</button>
+				</view>
+				<view class="key-input" v-show="tab==4">
+					<view class="title">输入验证码</view>
+					<view class="tips">验证码已发送至 +{{showphone(tel)}}</view>
+					<u-message-input :focus="true" :value="value"   @finish="finish" mode="bottomLine" :maxlength="maxlength"></u-message-input>
+					<view class="captcha">
+						<text :class="{ noCaptcha: show }" @tap="noCaptcha">收不到验证码点这里</text>
+						<text :class="{ regain: !show }">{{ sendMsgSecond }}秒后重新获取验证码</text>
+						<text :class="{ error: error }">验证码错误,请重新输入</text>
+						<u-button shape="circle"   size="medium"  @click="tab=0">返回</u-button>
+						
+					</view>	
+					
+				</view>
+				<view class="wxLogin-foot" v-show="tab!=4">
+					<view class="wxLogin-foot-btn">
+						<u-button shape="circle" v-show="tab!=0" @click="tab=0">微信登录</u-button>
+						<u-button shape="circle" v-show="tab!=1&&form=='job'"  @click="tab=1">手机登录</u-button>
+						<u-button shape="circle" v-show="tab!=2"  @click="tab=2">密码登录</u-button>
+					</view>
+					<view class="wxLogin-foot-text">
+						<u-checkbox-group>
+							<u-checkbox v-model="readme"><view class="u-flex"><p>我已阅读并同意</p><span>《用户协议》《隐私政策》</span></view></u-checkbox>
+						</u-checkbox-group>
+					</view>
+				</view>
+				 
 			</view>
-		</view>
+		
+	 
+		 
 	</view>
 </template>
 
 <script>
-	import api from './index.js'
+	import api from '@/pages/login/index.js'
 	export default api;
 </script>
 
@@ -63,3 +104,277 @@
 		}
 	}
 </style>
+
+<style lang="scss" scoped>
+	.wxLogin-logo{
+		margin: 100rpx auto 100rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		p{
+			font-size: 40rpx;
+			margin-top: 20rpx;
+		}
+	}
+	.login-input{
+		margin: 40rpx 0;
+		border-bottom: 1px solid #F7F7F7;
+	}
+.wrap {
+	font-size: 28rpx;
+	.content {
+		width: 600rpx;
+		margin: 80rpx auto 0;
+
+		.title {
+			text-align: left;
+			font-size: 60rpx;
+			font-weight: 500;
+			margin-bottom: 100rpx;
+		}
+		input {
+			text-align: left;
+			margin-bottom: 10rpx;
+			padding-bottom: 6rpx;
+		}
+		.tips {
+			color: $u-type-info;
+			margin-bottom: 60rpx;
+			margin-top: 8rpx;
+			text-align: center;
+		}
+		.getCaptcha {
+			background-color: rgb(231, 243, 254);
+			color: $u-tips-color;
+			border: none;
+			font-size: 30rpx;
+			padding: 12rpx 0;
+			margin: 30rpx 0;
+			&::after {
+				border: none;
+			}
+		}
+		.alternative {
+			color: $u-tips-color;
+			display: flex;
+			justify-content: space-between;
+			margin-top: 30rpx;
+		}
+	}
+	.buttom {
+		.loginType {
+			display: flex;
+			padding: 350rpx 150rpx 150rpx 150rpx;
+			justify-content:space-between;
+			
+			.item {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				color: $u-content-color;
+				font-size: 28rpx;
+			}
+		}
+		
+		.hint {
+			padding: 20rpx 40rpx;
+			font-size: 20rpx;
+			color: $u-tips-color;
+			
+			.link {
+				color: $u-type-warning;
+			}
+		}
+	}
+}
+.wxLogin-foot{
+		position: fixed;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		.wxLogin-foot-btn{
+			display: flex;
+			justify-content: space-between;
+			padding: 0 40rpx;
+			*{
+				margin: 0;
+				width:280rpx;
+			}
+		}
+		.wxLogin-foot-text{
+			margin-top: 40rpx;
+			padding: 20rpx 40rpx;
+			span{
+				color:#2295FF;
+			}
+		}
+	}
+</style>
+
+<style lang="scss" scoped>
+	.wxLogin-logo{
+		margin: 100rpx auto 100rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		p{
+			font-size: 40rpx;
+			margin-top: 20rpx;
+		}
+	}
+	.login-input{
+		margin: 40rpx 0;
+		border-bottom: 1px solid #F7F7F7;
+	}
+.wrap {
+	font-size: 28rpx;
+	.content {
+		width: 600rpx;
+		margin: 80rpx auto 0;
+
+		.title {
+			text-align: left;
+			font-size: 60rpx;
+			font-weight: 500;
+			margin-bottom: 100rpx;
+		}
+		input {
+			text-align: left;
+			margin-bottom: 10rpx;
+			padding-bottom: 6rpx;
+		}
+		.tips {
+			color: $u-type-info;
+			margin-bottom: 60rpx;
+			margin-top: 8rpx;
+			text-align: center;
+		}
+		.getCaptcha {
+			background-color: rgb(231, 243, 254);
+			color: $u-tips-color;
+			border: none;
+			font-size: 30rpx;
+			padding: 12rpx 0;
+			margin: 30rpx 0;
+			&::after {
+				border: none;
+			}
+		}
+		.alternative {
+			color: $u-tips-color;
+			display: flex;
+			justify-content: space-between;
+			margin-top: 30rpx;
+		}
+	}
+	.buttom {
+		.loginType {
+			display: flex;
+			padding: 350rpx 150rpx 150rpx 150rpx;
+			justify-content:space-between;
+			
+			.item {
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				color: $u-content-color;
+				font-size: 28rpx;
+			}
+		}
+		
+		.hint {
+			padding: 20rpx 40rpx;
+			font-size: 20rpx;
+			color: $u-tips-color;
+			
+			.link {
+				color: $u-type-warning;
+			}
+		}
+	}
+}
+.wxLogin-foot{
+		position: fixed;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		.wxLogin-foot-btn{
+			display: flex;
+			justify-content: space-between;
+			padding: 0 40rpx;
+			*{
+				margin: 0;
+				width:280rpx;
+			}
+		}
+		.wxLogin-foot-text{
+			margin-top: 40rpx;
+			padding: 20rpx 40rpx;
+			span{
+				color:#2295FF;
+			}
+		}
+	}
+</style>
+
+<style lang="scss" scoped>
+.wxLogin-logo{
+	margin: 100rpx auto 100rpx;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	p{
+		font-size: 40rpx;
+		margin-top: 20rpx;
+	}
+}
+.wrap {
+	padding: 80rpx;
+}
+
+.box {
+	margin: 30rpx 0;
+	font-size: 30rpx;
+	color: 555;
+}
+
+.key-input {
+	padding: 30rpx 0;
+	text {
+		display: none;
+	}
+	.error {
+		display: block;
+		color: red;
+		font-size: 30rpx;
+		margin: 20rpx 0;
+	}
+}
+
+.title {
+	font-size: 50rpx;
+	color: #333;
+	text-align: center;
+}
+
+.key-input .tips {
+	font-size: 30rpx;
+	color: #333;
+	margin-top: 20rpx;
+	margin-bottom: 60rpx;
+	text-align: center;
+	color:#999;
+}
+.captcha {
+	color: $u-type-warning;
+	font-size: 30rpx;
+	margin-top: 40rpx;
+	text-align: center;
+	.noCaptcha {
+		display: block;
+	}
+	.regain {
+		display: block;
+	}
+}
+</style>

BIN
static/img/blankpage.png


+ 1 - 3
utils/index.js

@@ -121,9 +121,7 @@ export const parseUnixTime = (time, cFormat) => {
 export const getWeixinRedirectURI = (appid, url) =>
 	`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(url)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
 
-export const getRemind = (appid,tempid, url) =>
-	`https://mp.weixin.qq.com/mp/subscribemsg?action=get_confirm&appid=${appid}&scene=1&template_id=${tempid}&redirect_url=${encodeURIComponent(url)}#wechat_redirect`
-
+ 
 
 //支付宝获取code
 export const getAlipayRedirectURI = (appid, url) =>

+ 22 - 29
utils/init.js

@@ -10,46 +10,39 @@ var checkOpenId = true; //是否需要获取openId
 var openId = carhelp.getOpenId();
 
 var app = {
-	init: function() {
-
-		if (isWeiXin()) {
-			if (checkOpenId) {
-				if (!openId) {
-					this.getOpenId();
-				} else {
-					//this.getDataByOpenId();
-				}
-			}
-		} else {
-			if (checkOpenId) {
-				/* mui.alert('请使用微信浏览打开!', '提示', function() {
-					//info.innerText = '你刚关闭了警告框';
-				}); */
-			}
-		}
-	},
-	getDataByOpenId() {
-
-		API_WeiXin.getDataByOpenId(openId).then(response => {
-			var token = response ? response.token : '';
-			carhelp.setToken(token);
-		}).catch(error => {
-			mui.toast(error);
-		})
+	init: function() {
+		 
+		if(isWeiXin()|| !(process.env.NODE_ENV === "development") ){
+			if (isWeiXin()) {
+				if (checkOpenId) {
+					if (!openId) {
+						this.getOpenId();
+					} else {
+					 
+					}
+				}
+			} 
+		}else{
+			carhelp.setOpenId(process.car.openId)
+		}
+		
+		
 	},
+	 
 	getOpenId() {
 		const code = getUrlParam('code');
 		var openId = carhelp.getOpenId()
 		if (!openId) {
 			if (!code) {
 				var url = document.URL;
-				window.location.href = getWeixinRedirectURI(process.car.VUE_APP_WXAPPID, url);
+				var getUrl= getWeixinRedirectURI(process.car.VUE_APP_WXAPPID, url);
+				 
+				window.location.href = getUrl;
 			} else {
-			
 				API_WeiXin.getDataByCode(code).then(response => {
 					carhelp.setOpenId(response.data.openid)
 					openId = response.data.openid;
-					//this.getDataByOpenId()
+					 
 				}).catch(error => {
 					console.log(error);
 				});

+ 9 - 1
utils/mixin.js

@@ -18,7 +18,15 @@ var app = {
 	setPersonInfo : (value) => uni.setStorageSync(prefix + 'personInfo', value),
 	
 	getToken : () =>  uni.getStorageSync(prefix + 'token'),
-	setToken : (value) => uni.setStorageSync(prefix + 'token', value),
+	setToken : (value) => {
+		uni.setStorageSync(prefix + 'token', value)
+		
+		if(value){
+			var tdate=new Date( +new Date() + 8 * 3600 * 1000 ).toJSON().substr(0,15).replace("T"," ")
+			uni.setStorageSync(prefix + 'token_tdate', tdate)
+		}
+	}
+	,
 	
 	
 }

+ 56 - 42
utils/request.js

@@ -1,60 +1,74 @@
 import  carhelp from '@/utils/mixin.js'
+import requestSon from './requestSon.js';
 
-//记录请求次数和响应次数
-let reqCount = 0,
-	resCount = 0;
-var token=carhelp.getToken();
 
 const request = (options) => {
-	reqCount++;
-	 
+	//记录请求次数和响应次数
+	var tdate=new Date( +new Date() + 8 * 3600 * 1000 ).toJSON().substr(0,15).replace("T"," ")
+	var token_tdate=carhelp.get("token_tdate");//每10分钟存储一次token
+	
+	var token=carhelp.getToken();
+	
+	 if(token_tdate&&token_tdate==tdate){
+	 	return requestSon(options);
+	 }
+	 var openId=carhelp.getOpenId()
+	 var form= window.location.href.split("#/")[1].split("/")[1];
+	 if(["job","hr"].indexOf(form)==-1){
+	 	return requestSon(options);
+	 }
+	 var url="";
+	 if(form=="job"){
+	 	url='/mobile/jobUserApi/findByOpenId';
+	 }else if(form=="hr"){
+	 	url='/mobile/sysUserApi/findByOpenId';
+	 }else{
+	 	return 
+	 }
 	return new Promise((resolve, reject) => {
-		//如果特殊链接需要传入token
-		if(options&&options.token){
-			token=options.token;
-		}
+		 
 		uni.request({
-			method: options.method?options.method:'get',
-			url: process.car.BASE_URL + options.url,
-			data: options.data?options.data:{},
+			method:'post',
+			url: process.car.BASE_URL + url,
+			data: {
+				openId:openId,
+				form:form
+			},
 			
-			header: options.header?{
-				...options.header,
-				'Authorization':token
-			}:{
+			header: {
 				'Content-Type': 'application/x-www-form-urlencoded',
 				'X-Requested-With': 'XMLHttpRequest',
-				'Authorization':token
+				//'Authorization':token
 			}
 		}).then((response) => {
-			//for(var t = Date.now(); Date.now() - t <= 2000;);
-			
-			resCount++
-			//防止连续请求多个接口时loading闪现
-			let [error, res] = response;
-			
-			if (res.data.code == 415&&res.data.message=='请先注册信息') {
-				carhelp.signOut()
-				uni.redirectTo({
-					url: '/pages/car/login'
-				})
-				return;
-			}
+ 			let [error, res] = response;
+ 		  
+			if (res.data.code == 200&&res.data.data) {
+				
+				var token = res ? res.data.data.token : '';
+				if("job"==form){
+					carhelp.setPersonInfo(res.data.data.jobUser );
+				}
+				if("hr"==form){
+					carhelp.setPersonInfo(res.data.data.sysUser );
+				}
 			
-			if (res.data.code != 200) {
+				carhelp.setToken(token);
+				
+				options.token=token
+				return  requestSon(options);
+			} else  if(res.data.code == 415||(res.data.code == 200&&!res.data.data)){
+				
+				var url=window.location.href.split("#")[1]
+				window.location.href="#/pages/login/wxLogin/wxLogin?form="+form+"&message=请登录&back="+ url
+				
+			 
+				
+			}else{
 				reject(res.data.message)
-			} else {
-				if(!res.data.result){
-					uni.showToast({
-						title: res.data.message,
-						position:'bottom'
-					})
-				}
-				resolve(res.data);
 			}
 		}).catch(error => {
-			resCount++
-		
+			
 			let [err, res] = error;
 			reject(err)
 		})

+ 5 - 1
utils/request2.js

@@ -4,7 +4,11 @@ import  carhelp from '@/utils/mixin.js'
 let reqCount = 0,
 	resCount = 0;
 var token=carhelp.getToken();
+var baseUrl=process.car.BASE_URL;
 
+if (process.env.NODE_ENV === "development") {
+	//baseUrl="http://192.168.33.159:8086/jp-employment-server";
+}
 const request = (options) => {
 	reqCount++;
 	 
@@ -15,7 +19,7 @@ const request = (options) => {
 		}
 		uni.request({
 			method: options.method?options.method:'get',
-			url: process.car.BASE_URL + options.url,
+			url: baseUrl + options.url,
 			data: options.data?options.data:{},
 			
 			header: options.header?{

+ 67 - 0
utils/request3.js

@@ -0,0 +1,67 @@
+import  carhelp from '@/utils/mixin.js'
+
+//记录请求次数和响应次数
+let reqCount = 0,
+	resCount = 0;
+var token=carhelp.getToken();
+var baseUrl=process.car.BASE_URL;
+
+if (process.env.NODE_ENV === "development") {
+	baseUrl="http://192.168.33.230:8086/jp-employment-server";
+}
+const request = (options) => {
+	reqCount++;
+	 
+	return new Promise((resolve, reject) => {
+		//如果特殊链接需要传入token
+		if(options&&options.token){
+			token=options.token;
+		}
+		uni.request({
+			method: options.method?options.method:'get',
+			url: baseUrl + options.url,
+			data: options.data?options.data:{},
+			
+			header: options.header?{
+				...options.header,
+				'Authorization':token
+			}:{
+				'Content-Type': 'application/x-www-form-urlencoded',
+				'X-Requested-With': 'XMLHttpRequest',
+				'Authorization':token
+			}
+		}).then((response) => {
+			//for(var t = Date.now(); Date.now() - t <= 2000;);
+			
+			resCount++
+			//防止连续请求多个接口时loading闪现
+			let [error, res] = response;
+			
+			if (res.data.code == 415&&res.data.message=='请先注册信息') {
+				carhelp.signOut()
+				uni.redirectTo({
+					url: '/pages/car/login'
+				})
+				return;
+			}
+			
+			if (res.data.code != 200) {
+				reject(res.data.message)
+			} else {
+				if(!res.data.result){
+					uni.showToast({
+						title: res.data.message,
+						position:'bottom'
+					})
+				}
+				resolve(res.data);
+			}
+		}).catch(error => {
+			resCount++
+		
+			let [err, res] = error;
+			reject(err)
+		})
+	});
+}
+export default request

+ 68 - 0
utils/requestSon.js

@@ -0,0 +1,68 @@
+import  carhelp from '@/utils/mixin.js'
+
+//记录请求次数和响应次数
+let reqCount = 0,
+	resCount = 0;
+var baseUrl=process.car.BASE_URL;
+
+if (process.env.NODE_ENV === "development") {
+	//baseUrl="http://192.168.33.230:8086/jp-employment-server";
+}
+const request = (options) => {
+	var token=carhelp.getToken();
+	
+	reqCount++;
+	 
+	return new Promise((resolve, reject) => {
+		//如果特殊链接需要传入token
+		if(options&&options.token){
+			token=options.token;
+		}
+		uni.request({
+			method: options.method?options.method:'get',
+			url: baseUrl + options.url,
+			data: options.data?options.data:{},
+			
+			header: options.header?{
+				...options.header,
+				'Authorization':token
+			}:{
+				'Content-Type': 'application/x-www-form-urlencoded',
+				'X-Requested-With': 'XMLHttpRequest',
+				'Authorization':token
+			}
+		}).then((response) => {
+			//for(var t = Date.now(); Date.now() - t <= 2000;);
+			
+			resCount++
+			//防止连续请求多个接口时loading闪现
+			let [error, res] = response;
+			
+			if (res.data.code == 415&&res.data.message=='请先注册信息') {
+				carhelp.signOut()
+				uni.redirectTo({
+					url: '/pages/car/login'
+				})
+				return;
+			}
+			
+			if (res.data.code != 200) {
+				reject(res.data.message)
+			} else {
+				if(!res.data.result){
+					uni.showToast({
+						title: res.data.message,
+						position:'bottom'
+					})
+				}
+				resolve(res.data);
+			}
+		}).catch(error => {
+			resCount++
+		
+			let [err, res] = error;
+			reject(err)
+		})
+	});
+}
+export default request

+ 69 - 0
utils/requestWhite.js

@@ -0,0 +1,69 @@
+import  carhelp from '@/utils/mixin.js'
+
+//记录请求次数和响应次数
+let reqCount = 0,
+	resCount = 0;
+//var token=carhelp.getToken();
+var baseUrl=process.car.BASE_URL;
+
+if (process.env.NODE_ENV === "development") {
+	//baseUrl="http://192.168.33.90:8086/jp-employment-server";
+}
+const request = (options) => {
+	var token=carhelp.getToken();
+	
+	reqCount++;
+	 
+	return new Promise((resolve, reject) => {
+		//如果特殊链接需要传入token
+		if(options&&options.token){
+			token=options.token;
+		}
+		uni.request({
+			method: options.method?options.method:'get',
+			url: baseUrl + options.url,
+			data: options.data?options.data:{},
+			
+			header: options.header?{
+				...options.header,
+				'Authorization':token
+			}:{
+				'Content-Type': 'application/x-www-form-urlencoded',
+				'X-Requested-With': 'XMLHttpRequest',
+				'Authorization':token
+			}
+		}).then((response) => {
+			//for(var t = Date.now(); Date.now() - t <= 2000;);
+			
+			resCount++
+			//防止连续请求多个接口时loading闪现
+			let [error, res] = response;
+			
+			if (res.data.code == 415&&res.data.message=='请先注册信息') {
+				carhelp.signOut()
+				uni.redirectTo({
+					url: '/pages/car/login'
+				})
+				return;
+			}
+			
+			if (res.data.code != 200) {
+				reject(res.data.message)
+			} else {
+				if(!res.data.result){
+					uni.showToast({
+						title: res.data.message,
+						position:'bottom'
+					})
+				}
+				resolve(res.data);
+			}
+		}).catch(error => {
+			resCount++
+		
+			let [err, res] = error;
+			reject(err)
+		})
+	});
+}
+export default request