linwu преди 1 ден
родител
ревизия
0682d8bead
променени са 9 файла, в които са добавени 1017 реда и са изтрити 5 реда
  1. 0 1
      common/request/request.js
  2. 2 2
      main.js
  3. 23 0
      pages.json
  4. 47 2
      pages/my/my.vue
  5. 62 0
      pages/outactivity/index.vue
  6. 449 0
      pages/outactivity/resumelist.vue
  7. 143 0
      pages/partner/broker.vue
  8. 145 0
      pages/partner/index.vue
  9. 146 0
      pages/partner/user.vue

+ 0 - 1
common/request/request.js

@@ -118,7 +118,6 @@ class Request {
 					let callData = Object.assign({
 						extra
 					}, finsh,{statusCode});
-					console.log(callData);
 					if (statusCode == 200) {
 						try {
 							let verifyRes = await this.defaultReq.beforeFinsh(callData);

+ 2 - 2
main.js

@@ -22,8 +22,8 @@ app.$mount();
 import {
 	req
 } from '@/common/request/request.js';
-let baseUrl = 'http://bd.oddjob.com/';
-// let baseUrl = 'https://linggong.jinjianghc.com/';
+// let baseUrl = 'http://bd.oddjob.com/';
+let baseUrl = 'https://linggong.jinjianghc.com/';
 // let baseUrl = 'https://linggong.jiangzi.xin/';
 req.baseuUrl = baseUrl + 'mainapp.php/';
 

+ 23 - 0
pages.json

@@ -731,7 +731,30 @@
 				"enablePullDownRefresh": true,
 				"onReachBottomDistance": 50
 			}
+		},
+		
+		//就业合伙人
+		{
+			"path": "pages/partner/index",
+			"style": {
+				"navigationBarTitleText": "就业合伙人"
+			}
+		},{
+			"path": "pages/partner/user",
+			"style": {
+				"navigationBarTitleText": "我的用户",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
+		},{
+			"path": "pages/partner/broker",
+			"style": {
+				"navigationBarTitleText": "我的经纪人",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 50
+			}
 		}
+		
 	],
 	"condition": { //模式配置,仅开发期间生效
 		"current": 0, //当前激活的模式(list 的索引项)

+ 47 - 2
pages/my/my.vue

@@ -32,8 +32,8 @@
 							</view>
 							<view class="infor-bottom">
 								{{userinfo.mobile}}
-								<text class="margin-left" v-if="upper" @click="myUpper">(上级门店)</text>
-								<text class="margin-left" v-if="upper" @click="myUpper">(归属就业合伙人)</text>
+								<text class="margin-left" v-if="upper" @click="myUpper">(门店)</text>
+								<text class="margin-left" v-if="brokerall[0]['pid']" @click="myPartner">(就业合伙人)</text>
 							</view>
 						</view>
 					</view>
@@ -68,6 +68,14 @@
 			<view class="topApply-right" v-if="brokerall == null" @tap="goLPage('/pages/broker/brokerform')">立即开通</view>
 			<view class="topApply-right" v-if="brokerall != null" @tap="goLPage('/pages/broker/center')">进入工作台</view>
 		</view>
+		
+		<view class="topApply" @click="goLPage('/pages/partner/index')" v-if="brokerall != null && brokerall[0].is_partner == 1">
+			<view class="topApply-left">
+				<image class="left-icon" :src="$getImageUrl('static/images/applet/index/topApplyIcon.png')"></image>
+			</view>
+			<view class="topApply-center">就业合伙人</view>
+			<view class="topApply-right">进入工作台</view>
+		</view>
 
 		<view class="teacher" @click="goLPage('/pages/resident/resident')" v-if="resident != null">
 			<view class="teacher-left">
@@ -377,6 +385,20 @@
 			</view>
 		</view>
 
+		<view class="cu-modal" :class="modalName=='upperPartner'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white justify-end">
+					<view class="content">归属就业合伙人</view>
+					<view class="action" @tap="hideModal">
+						<text class="cuIcon-close text-red"></text>
+					</view>
+				</view>
+				<view class="padding-xl text-left text-lg">
+					<view>姓名:{{partner.title}}</view>
+					<view class="margin-top-sm">电话:{{partner.mobile}}</view>
+				</view>
+			</view>
+		</view>
 
 		<view class="padding-sm"></view>
 		<view class="padding-xl"></view>
@@ -438,6 +460,7 @@
 				upper: null,
 				modalName: null,
 				resident: null,
+				partner: null,
 				tip_num: {
 					comjobs_num: 0,
 					invite_num: 0,
@@ -694,6 +717,28 @@
 				_this.modalName = "upperModal";
 			},
 
+			myPartner: function() {
+				if (!_this.partner) {
+					_this.$req.ajax({
+						path: "broker/getMyPartner",
+						data: {
+							pid: _this.brokerall[0]['pid']
+						}
+					}).then(({ broker }) => {
+						_this.partner = broker;
+						_this.modalName = "upperPartner";
+					}).catch((err) => {
+						console.log(err);
+						uni.showModal({
+							title: '信息提示',
+							content: err,
+							showCancel: false
+						});
+					});
+				} else {
+					_this.modalName = "upperPartner";
+				}
+			}
 		}
 	}
 </script>

+ 62 - 0
pages/outactivity/index.vue

@@ -0,0 +1,62 @@
+<template>
+	<view>
+		
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				code: '',
+				userinfo: '',
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			if (JSON.stringify(option) == "{}") {
+				let code = uni.getStorageSync('out_code');
+				_this.code = code;
+			} else {
+				const q = option.q;
+				_this.code = q.replace('https%3A%2F%2Flinggong.jinjianghc.com%2Fapplet%2Foutactivity%2Findex%3Fcode%3D','');
+				uni.setStorageSync('out_code', _this.code);
+			}
+			
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			if (_this.userinfo == false) {
+				uni.redirectTo({
+					url: '/pages/login/login?backpage=/pages/outactivity/index',
+				});
+			} else {
+				//二维码校验
+				_this.$req.ajax({
+					path: "Outactivity/checkCode",
+					data: {
+						code: _this.code
+					}
+				}).then((data) => {
+					uni.redirectTo({
+						url: '/pages/outactivity/resumelist'
+					})
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false,
+						success: function() {
+							uni.removeStorageSync('out_code');
+							uni.redirectTo({
+								url: '/pages/index/index'
+							});
+						}
+					});
+				});
+			}
+		},
+	}
+</script>
+
+<style>
+</style>

+ 449 - 0
pages/outactivity/resumelist.vue

@@ -0,0 +1,449 @@
+<template>
+	<view>
+		<view class="tips-title bg-gradual-orange text-center">{{time}}秒后可获得奖励</view>
+		<view class="tips-box"></view>
+		<view class="recruit-list">
+			<view class="recruit-item" v-for="(item,index) in plist" @click="toDetail(item.id)" :key="index">
+				<view class="title">
+					<view class="title-name">{{item.title}}</view>
+					<view class="salary">
+						<image
+							style="width:20px;height:20px;"
+							:src="$getImageUrl('static/mobile/images/icon_salary.png')"
+						></image>
+						<text>{{item.salary}}</text>
+					</view>
+				</view>
+				<view class="content">
+					<view class="content-item">
+						<image
+							style="width:15px;height:15px;"
+							:src="$getImageUrl('static/mobile/images/icon_age.png')"
+						></image>
+						<text>{{item.agegroup}}</text>
+					</view>
+					<view class="content-item">
+						<image
+							style="width:15px;height:15px;"
+							:src="$getImageUrl('static/mobile/images/icon_num.png')"
+						></image>
+						<text>{{item.num}}</text>
+					</view>
+				</view>
+				<view class="tags">
+					<view class='cu-tag text-blue' v-for="(tag,tag_index) in item.tags" :key="tag_index">{{tag}}</view>
+				</view>
+				<view class="bottom">
+					<view class="company-name">
+						{{item.company_name}}
+					</view>
+					<view class="volume">
+						<image
+							style="width:15px;height:15px;"
+							:src="$getImageUrl('static/mobile/images/icon_volume.png')"
+						></image>
+						<text>{{item.volume}}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<uni-load-more :status="pstatus"></uni-load-more>
+		
+		<view class="cu-modal bottom-modal" :class="modalName=='detail'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white">
+				  <view class="action text-blue" @click="hideModal">关闭</view>
+				  <view class="action text-green" @click="apply">报名</view>
+				</view>
+				<view>
+					<view class="base-content">
+						<view class="header">
+							<view class="left">
+								<view class="salary-box">
+									<image
+										style="width:15px;height:15px;"
+										:src="$getImageUrl('static/mobile/images/icon_salary_white.png')"
+									></image>
+									<text class="text">工资:</text>
+									<text class="salary">{{info.salary}}</text>
+								</view>
+								<view class="company-name">{{info.company_name}}</view>
+							</view>
+						</view>
+						<view class="title">{{info.title}}</view>
+						<view class="tags" v-if="info.tags.length > 0">
+							<view class='cu-tag text-blue' v-for="(tag,tag_index) in info.tags" :key="tag_index">{{tag}}</view>
+						</view>
+						<view class="introduce">
+							<view class="introduce-item">
+								<image
+									style="width:15px;height:15px;"
+									:src="$getImageUrl('static/mobile/images/icon_num.png')"
+								></image>
+								<text>招聘人数:{{info.num}}</text>
+								<text class="split">|</text>
+								<van-image
+										width="15px"
+										src="__MIMAGES__/icon_age.png"
+								></van-image>
+								<text>年龄:{{info.agegroup}}</text>
+							</view>
+							<view class="introduce-item">
+								<image
+									style="width:15px;height:15px;"
+									:src="$getImageUrl('static/mobile/images/icon_address.png')"
+								></image>
+								<text>{{info.province}}{{info.city}}{{info.district}}{{info.address}}</text>
+							</view>
+						</view>
+					</view>
+					
+					<view class="describe" v-if="info.requirement">
+						<view class="header">
+							岗位要求
+						</view>
+						<view class="content">
+							<pre>{{info.requirement}}</pre>
+						</view>
+					</view>
+					
+					<view class="describe" v-if="info.comdetails">
+						<view class="header">
+							企业简介
+						</view>
+						<view class="content">
+							<pre>{{info.comdetails}}</pre>
+						</view>
+					</view>
+					
+					<view class="describe" v-if="info.remark">
+						<view class="header">
+							补充说明
+						</view>
+						<view class="content">
+							<pre>{{info.remark}}</pre>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="cu-modal bottom-modal" :class="modalName=='apply'?'show':''">
+			<view class="cu-dialog">
+				<view class="cu-bar bg-white">
+					<view class="action text-green" @tap="hideModal">关闭</view>
+				</view>
+				<view class="padding-lr bg-white">
+					<form style="text-align: left;">
+						<view class="cu-form-group">
+							<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 姓名</view>
+							<input type="text" placeholder="请输入" data-field="realname" name="realname" :value="form.realname" @input="setInput"></input>
+						</view>
+						<view class="cu-form-group">
+							<view class="title"> <text class="text-red text-bold padding-right-xs">*</text> 手机号</view>
+							<input type="text" placeholder="请输入" data-field="mobile" name="mobile" :value="form.mobile" @input="setInput"></input>
+						</view>
+						<view class="cu-form-group">
+							<view class="title">身份证号</view>
+							<input type="text" placeholder="请输入" data-field="idcard" name="idcard" :value="form.idcard" @input="setInput"></input>
+						</view>
+						<view class="cu-form-group align-start">
+							<view class="title">备注</view>
+							<view class="textareabox">
+								<textarea maxlength="-1" placeholder="请输入..." data-field="remark" name="remark" :value="form.remark" @input="setInput"></textarea>
+							</view>
+						</view>
+						<view class="padding flex flex-direction bg-white">
+							<button class="cu-btn bg-themeBtn margin-tb-sm lg" @tap="editForm">立即提交</button>
+							<view class="padding"></view>
+						</view>
+					</form>
+				</view>
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				code: '',
+				userinfo: '',
+				time: 30,
+				
+				plist: [],
+				pstatus: false,
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				
+				modalName: '',
+				id: 0,
+				info: {},
+				
+				isRotate: false,
+				form: {
+					realname: '',
+					mobile: '',
+					idcard: '',
+					remark: '',
+				},
+			}
+		},
+		onLoad: function(option) {
+			_this = this;
+			let code = uni.getStorageSync('out_code');
+			_this.code = code;
+			if (!_this.code) {
+				uni.showModal({
+					title: '信息提示',
+					content: '该活动已过期',
+					showCancel: false,
+					success: function() {
+						uni.removeStorageSync('out_code');
+						uni.redirectTo({
+							url: '/pages/index/index'
+						});
+					}
+				});
+			}
+			
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			if (_this.userinfo == false) {
+				uni.redirectTo({
+					url: '/pages/login/login?backpage=/pages/outactivity/resumelist',
+				});
+			} else {
+				//二维码校验
+				_this.$req.ajax({
+					path: "Outactivity/checkCode",
+					data: {
+						code: _this.code
+					}
+				}).then((data) => {
+					_this.getMore();
+					_this.dealTime();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false,
+						success: function() {
+							uni.removeStorageSync('out_code');
+							uni.redirectTo({
+								url: '/pages/index/index'
+							});
+						}
+					});
+				});
+				
+			}
+		},
+		onPullDownRefresh: function() {
+			_this.pageRefresh();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		onShareAppMessage: function(res) {
+			return {
+				title: "晋江人力",
+				path: "/pages/index/index"
+			}
+		},
+		methods: {
+			dealTime: function() {
+				const set = setInterval(function(){
+					if (_this.time > 0) {
+						_this.time--;
+					} else {
+						clearInterval(set);
+						_this.getMoney();
+					}
+				},1000);
+			},
+			getMore: function() {
+				_this.$req.ajax({
+					path: "outactivity/listrecruit",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			toDetail: function(id) {
+				_this.id = id;
+				_this.$req.ajax({
+					path: "outactivity/detailrecruit",
+					data: {
+						id:id
+					}
+				}).then((data) => {
+					_this.info = data;
+					_this.modalName = 'detail';
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			hideModal: function() {
+				_this.modalName = '';
+			},
+			apply: function() {
+				_this.modalName = 'apply';
+			},
+			setInput: function(e) {
+				var field = e.currentTarget.dataset.field;
+				_this.form[field] = e.detail.value;
+			},
+			editForm: function() {
+				if (_this.isRotate) {
+					return false;
+				}
+				_this.isRotate = true;
+				let form = _this.form;
+				form.recruit_id = _this.id;
+				_this.$req.ajax({
+					path: "outactivity/apply",
+					title: "正在提交信息",
+					data: _this.form
+				}).then((data) => {
+					_this.hideModal();
+					_this.isRotate = false;
+					uni.showModal({
+						title: '信息提示',
+						content: '提交成功,等待对方联系',
+						showCancel: false
+					});
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+					_this.isRotate = false;
+				});
+			},
+			getMoney: function() {
+				uni.showModal({
+					title: '信息提示',
+					content: '是否获取奖励',
+					showCancel: true,
+					success: function(res) {
+						if (res.confirm) {
+							_this.$req.ajax({
+								path: "outactivity/getmoney",
+								title: "正在提交信息",
+								data: {
+									code: _this.code,
+									userid: _this.userinfo.id,
+								},
+							}).then((data) => {
+								uni.showModal({
+									title: '信息提示',
+									content: `恭喜您,获得现金奖励${data.money}元。已直接发放至微信零钱,请注意查收!`,
+									showCancel: false,
+									success: function() {
+										uni.removeStorageSync('out_code');
+									}
+								});
+							}).catch((err) => {
+								uni.showModal({
+									title: '信息提示',
+									content: err,
+									showCancel: false,
+									success: function() {
+										uni.removeStorageSync('out_code');
+									}
+								});
+							});
+						}
+					},
+				});
+			},
+		},
+	}
+</script>
+
+<style>
+	.tips-title {height:40rpx;line-height:40rpx;position:fixed;top:0;left:0;width: 100%;}
+	.tips-box {width: 100%;height:40rpx;}
+	.recruit-list {background-color: #f0f0f0;}
+	.recruit-list .recruit-item {background:white;margin-top:10px;padding:10px 20px;}
+	.recruit-list .recruit-item .title{display:flex;padding-bottom:10px;border-bottom:1px solid #eee;}
+	.recruit-list .recruit-item .title .title-name {width:calc(100% - 110px);}
+	.recruit-list .recruit-item .title .salary {width:110px;text-align:center;color:var(--red);display: flex;align-items: center;justify-content: flex-end;}
+	.recruit-list .recruit-item .title .salary span {margin-left:5px;}
+	.recruit-list .recruit-item .content {display:flex;align-items:center;justify-content:center;padding-top:10px;}
+	.recruit-list .recruit-item .content .content-item {text-align:left;flex:1;display:flex;align-items:center;justify-content:flex-start;height:30px;}
+	.recruit-list .recruit-item .tags {padding:5px 0;}
+	.recruit-list .recruit-item .tags .cu-tag{margin-right:5px;}
+	.recruit-list .recruit-item .bottom {border-top:1px solid #eee;margin-top:10px;display:flex;padding-top:10px;font-size:14px;color:#666;}
+	.recruit-list .recruit-item .bottom .company-name{width:calc(100% - 80px);}
+	.recruit-list .recruit-item .bottom .volume{width:80px;display:flex;align-items:center;justify-content:flex-end;}
+	
+	.base-content {text-align: left;}
+	.base-content .header {background-image:url("https://linggong.jinjianghc.com/static/mobile/images/detail_header.jpg");background-repeat:no-repeat;background-size:100% 70px;width:100%;height:70px;display:flex;align-items:center;justify-content:center;padding:0 20px;}
+	.base-content .header .left {flex:1;display:flex;flex-direction:column;}
+	.base-content .header .salary-box {line-height:24px;height:24px;flex:1;}
+	.base-content .header .salary-box .salary {color:white;font-size:24px;font-weight:bold;}
+	.base-content .header .salary-box .text {color:white;font-size:14px;margin-left:5px;}
+	.base-content .header .company-name {color:white;font-size:14px;}
+	.base-content .header .phone-box {display:flex;flex-direction:column;}
+	.base-content .header .phone-box .text{color:white;}
+	.base-content .title {background:white;padding:10px 20px;color:#000;font-size:18px;}
+	.base-content .tags {background:white;padding:0 20px 10px 20px;}
+	.base-content .tags .van-tag {margin-right:5px;}
+	.base-content .introduce {background:white;}
+	.base-content .introduce .introduce-item {border-top:1px solid #f0f0f0;padding:5px 20px;display:flex;align-items:center;}
+	.base-content .introduce .introduce-item .van-image{margin-right:5px;}
+	.base-content .introduce .introduce-item .split{margin:0 15px;}
+	.describe {margin-top:10px;background:white;text-align: left;}
+	.describe .header {padding:10px 20px;font-size:16px;border-bottom:1px solid #f0f0f0;}
+	.describe .content {padding:10px 20px;}
+	.describe .content view {font-size: 14px;line-height: 20px;padding: 0;margin: 0;font-family: "Microsoft Yahei",arial,"Hiragino Sans GB","Hiragino Sans GB W3",宋体,simsun;}
+	.footer .van-button {width:50%;border-radius:0;}
+	
+	.cu-form-group{ display: flex; flex-wrap: wrap; padding: 40rpx 10rpx 0rpx 10rpx; }
+	.cu-form-group .title{ width: 100%; }
+	.cu-form-group>input{ display: block; width: 670rpx; height: 100rpx; color: #AAAAAA; }
+	
+	.cu-form-group>radio-group{ width: 670rpx; height: 100rpx; line-height: 100rpx; color: #AAAAAA; text-align: left; }
+	
+	.cu-form-group .textareabox{ width: 670rpx; }
+	.cu-form-group .textareabox textarea{ width: 670rpx; margin-top: 20rpx !important; margin-bottom: 0rpx; }
+	
+	.cu-form-group .placeholder{ color: #AAAAAA; }
+	
+	.cu-form-group picker .picker{ text-align: left; color: #AAAAAA; }
+</style>

+ 143 - 0
pages/partner/broker.vue

@@ -0,0 +1,143 @@
+<template>
+	<view>
+		<view class="cu-bar search bg-gray">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input v-model="searchval" :adjust-position="false" type="text" placeholder="搜索姓名或手机号" confirm-type="search" @confirm="pageRefresh()">
+				</input>
+			</view>
+			<view class="action">
+				<button class="cu-btn bg-white shadow-blur round" @click="pageRefresh()">搜索</button>
+			</view>
+		</view>
+
+		<view class="cu-list menu-avatar">
+			<view class="cu-item" v-for="(item,index) in plist" :key="index">
+				<view class="cu-avatar round lg" :style="'background-image:url('+$getImageUrl('static/images/applet/index/topApplyIcon.png')+');'"></view>
+				<view class="content">
+					<view class="text-grey">{{item.title}}
+						<text class="text-sm">({{item.mobile}})</text>
+					</view>
+					<view class="text-orange text-sm">用户邀请数:{{item.user_count}}</view>
+					<view class="text-gray text-sm">
+						<text>当前收益:{{item.income}}元</text>
+						<text class="margin-left-sm">总收益:{{item.income_total}}元</text>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<uni-load-more :status="pstatus"></uni-load-more>
+
+
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				brokerinfo: {},
+				searchval: "",
+
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+			};
+		},
+		onLoad: function() {
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/listPartnerBroker",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id,
+						keyword: _this.searchval,
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			tabSelect: function(e) {
+				_this.pageRefresh();
+			},
+
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo === false) {
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo === false) {
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item {
+		height: 170rpx !important;
+	}
+</style>

+ 145 - 0
pages/partner/index.vue

@@ -0,0 +1,145 @@
+<template>
+	<view>
+		<view class="cu-bar bg-white solid-bottom">
+			<view class="action">
+				<text class="cuIcon-title text-orange "></text> 团队收益
+			</view>
+		</view>
+		<view class="lw-table">
+			<view class="lw-table-item padding">
+				<view :class="{'text-price':brokerinfo.type == 1}" class="lw-table-value text-bold text-red">
+					{{statistics.income_total}}
+				</view>
+				<view class="lw-table-title text-gray padding-top-xs">总收益</view>
+			</view>
+			<view class="lw-table-item padding">
+				<view :class="{'text-price':brokerinfo.type == 1}" class="lw-table-value text-bold text-red">
+					{{statistics.income}}
+				</view>
+				<view class="lw-table-title text-gray padding-top-xs">当前收益</view>
+			</view>
+		</view>
+		<view class="cu-bar bg-white solid-bottom margin-top">
+			<view class="action">
+				<text class="cuIcon-title text-orange "></text> 我的下线
+			</view>
+		</view>
+		<view class="lw-table">
+			<view class="lw-table-item padding" @click="goNavPage('/pages/partner/user')">
+				<view class="lw-table-value text-bold text-black">{{statistics.user}}</view>
+				<view class="lw-table-title text-gray padding-top-xs">求职用户</view>
+			</view>
+			<view class="lw-table-item padding" @click="goNavPage('/pages/partner/broker')">
+				<view class="lw-table-value text-bold text-black">{{statistics.broker}}</view>
+				<view class="lw-table-title text-gray padding-top-xs">经纪人</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var _this;
+	export default {
+		data() {
+			return {
+				userinfo: {},
+				brokerinfo: {},
+				statistics: {
+					income_total: 0,
+					income: 0,
+					user: 0,
+					worker: 0,
+					agent: {},
+				},
+				modalName: '',
+			};
+		},
+		onLoad: function() {
+			_this = this;
+			_this.userinfo = uni.getStorageSync('userinfo') || false;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.userinfo === false || _this.brokerinfo === false) {
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.init();
+		},
+		methods: {
+			init: function() {
+				_this.$req.ajax({
+					path: "broker/partnerCenter",
+					data: {
+						brokerid: _this.brokerinfo.id
+					}
+				}).then((data) => {
+					_this.statistics = data
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo === false) {
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function() {
+						uni.switchTab({
+							url: pageurl
+						});
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.header {
+		height: 146rpx;
+		position: relative;
+		display: flex;
+		align-items: center;
+		justify-content: flex-end;
+
+		.header-image {
+			width: 750rpx;
+			position: absolute;
+			top: 0;
+			left: 0;
+			z-index: -1;
+		}
+
+		.header-notice {
+			padding-right: 40rpx;
+			font-size: 25rpx;
+			color: #E0E0E0;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+		}
+	}
+
+	.lw-table {
+		display: flex;
+		align-items: center;
+		justify-content: space-around;
+		background: white;
+		padding: 20rpx 0;
+	}
+
+	.lw-table .lw-table-item {
+		text-align: center;
+	}
+
+	.lw-table .lw-table-value {
+		font-size: 40rpx;
+	}
+</style>

+ 146 - 0
pages/partner/user.vue

@@ -0,0 +1,146 @@
+<template>
+	<view>
+		<view class="cu-bar search bg-gray">
+			<view class="search-form round text-center">
+				<text class="cuIcon-search"></text>
+				<input v-model="searchval" :adjust-position="false" type="text" placeholder="搜索昵称或手机号" confirm-type="search" @confirm="pageRefresh()"></input>
+			</view>
+			<view class="action">
+				<button class="cu-btn bg-white shadow-blur round" @click="pageRefresh()">搜索</button>
+			</view>
+		</view>
+		<!-- <scroll-view scroll-x class="bg-white nav text-center solid-bottom">
+			<block v-for="(item,index) in followstatusarr" :key="index">
+			<view class="cu-item" :class="followstatus==index?'text-blue cur':''" @tap="tabSelect" :data-followstatus="index">{{item}}</view>
+			</block>
+		</scroll-view> -->
+		
+		<view class="cu-list menu-avatar">
+			<view class="cu-item" v-for="(item,index) in plist" :key="index">
+				<view class="cu-avatar round lg" :style="'background-image:url('+item.avatar+');'"></view>
+				<view class="content">
+					<view class="text-grey">{{item.nickname}}<text class="text-sm">({{item.mobile}})</text></view>
+					<view class="text-orange text-sm text-cut">{{ item.userFollow.length == 0 ? followstatusarr[item.followstatus] : item.userFollow[0].remark }}</view>
+					<view class="text-gray text-sm" v-if="item.userFollow.length == 0">注册时间:{{item.createtime}}</view>
+					<view class="text-gray text-sm" v-else>最近跟进:{{item.userFollow[0].createtime}}</view>
+				</view>
+			</view>
+		</view>
+		
+		<uni-load-more :status="pstatus"></uni-load-more>
+
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from "@/components/uni-load-more/uni-load-more.vue";
+	var _this;
+	export default {
+		components: {
+			uniLoadMore
+		},
+		data() {
+			return {
+				brokerinfo: {},
+				searchval: "",
+				
+				pstatus: 'more',
+				ppage: 1,
+				psize: 20,
+				plist: [],
+				
+				followstatus: 0,
+				followstatusarr: ['全部','未跟进', '未面试', '面试通过', '面试未通过', '用户放弃', '已入职', '已离职']
+			};
+		},
+		onLoad: function(){
+			_this = this;
+			_this.brokerinfo = uni.getStorageSync('brokerinfo') || false;
+			if (_this.brokerinfo===false){
+				uni.reLaunch({
+					url: "/pages/my/my"
+				});
+				return false;
+			}
+			_this.getMore();
+		},
+		onPullDownRefresh: function() {
+			_this.ppage = 1;
+			_this.pstatus = 'more';
+			_this.plist = [];
+			_this.getMore();
+		},
+		onReachBottom: function() {
+			if (_this.pstatus !== 'more') {
+				return;
+			}
+			_this.getMore();
+		},
+		methods: {
+			getMore: function() {
+				_this.$req.ajax({
+					path: "broker/listPartnerUser",
+					data: {
+						ppage: _this.ppage,
+						psize: _this.psize,
+						brokerid: _this.brokerinfo.id,
+						followstatus: _this.followstatus,
+						keyword: _this.searchval,
+					}
+				}).then((data) => {
+					_this.pstatus = data.pstatus;
+					_this.plist = _this.plist.concat(data.plist);
+					_this.ppage += 1;
+					uni.stopPullDownRefresh();
+				}).catch((err) => {
+					uni.showModal({
+						title: '信息提示',
+						content: err,
+						showCancel: false
+					});
+				});
+			},
+			
+			pageRefresh: function() {
+				_this.pstatus = 'more';
+				_this.ppage = 1;
+				_this.plist = [];
+				_this.getMore();
+			},
+			tabSelect: function(e) {
+				_this.followstatus = e.currentTarget.dataset.followstatus;
+				_this.pageRefresh();
+			},
+			
+			goLPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.navigateTo({
+					url: pageurl,
+					fail: function(){
+						uni.switchTab({
+						    url: pageurl
+						});
+					}
+				});
+			},
+			
+			goNavPage: function(pageurl) {
+				_this.userinfo = _this.checkLogin("/pages/my/my");
+				if (_this.userinfo===false){
+					return false;
+				}
+				uni.redirectTo({
+					url: pageurl
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	.cu-list.menu-avatar .cu-item{ height: 170rpx !important; }
+</style>