zhengkaixin 1 gadu atpakaļ
vecāks
revīzija
99c9e5734b

+ 0 - 59
apis/login.js

@@ -1,59 +0,0 @@
- import requestWhite from '@/apis/utils/requestWhite.js';
-import Qs from 'qs';
-
-export function findByOpenId(data) {
-	var url='/mobile/regUser/findByOpenId';
-	return requestWhite({
-		method: 'get',
-		data: data,
-		url: url
-	})
-}
-
- export function findNoLTextConfigure(data) {
- 	var url='/mobile/dataDictionary/findNoLTextConfigure';
- 	return requestWhite({
- 		method: 'post',
- 		data: data,
- 		url: url
- 	})
- }
-
-
-export function validateCode(data) {
-	 
-	return requestWhite({
-		method: 'post',
-		data:data ,
-		url: '/mobile/regUser/validateCode'
-	})
-} 
-
-export function getVerifyCode(tel) {
-	 
-	return requestWhite({
-		method: 'post',
-		data:{
-			telephone:tel
-		} ,
-		url: '/mobile/regUser/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
-	})
-} 

+ 67 - 0
apis/pagejs/e_user.js

@@ -0,0 +1,67 @@
+import request from '@/apis/utils/request'
+ import requestWhite from '@/apis/utils/requestWhite'
+ 
+ export function findByOpenId(data) {
+ 	var url='/mobile/tenantUser/findByOpenId';
+ 	return requestWhite({
+ 		method: 'get',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function logout(data) {
+ 	var url='/mobile/tenantUser/logout';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function changePassword(data) {
+ 	var url='/mobile/tenantUser/changePassword';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ 
+ export function changePhone(data) {
+ 	var url='/mobile/tenantUser/changePhone';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function getVerifyCode(data) {
+ 	var url='/mobile/tenantUser/getVerifyCode';
+ 	return requestWhite({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function login(data) {
+ 	var url='/mobile/tenantUser/login';
+ 	return requestWhite({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function validateCode(data) {
+ 	var url='/mobile/tenantUser/validateCode';
+ 	return requestWhite({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 

+ 13 - 0
apis/pagejs/energy/index.js

@@ -0,0 +1,13 @@
+import request from '@/apis/utils/request'
+ 
+ export function homePage(data) {
+ 	var url='/mobile/tenant/homePage';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ 
+ 

+ 67 - 0
apis/pagejs/h_user.js

@@ -0,0 +1,67 @@
+import request from '@/apis/utils/request'
+ import requestWhite from '@/apis/utils/requestWhite'
+ 
+ export function findByOpenId(data) {
+ 	var url='/mobile/tenantUser/findByOpenId';
+ 	return requestWhite({
+ 		method: 'get',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function logout(data) {
+ 	var url='/mobile/tenantUser/logout';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function changePassword(data) {
+ 	var url='/mobile/tenantUser/changePassword';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ 
+ export function changePhone(data) {
+ 	var url='/mobile/tenantUser/changePhone';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function getVerifyCode(data) {
+ 	var url='/mobile/tenantUser/getVerifyCode';
+ 	return requestWhite({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function login(data) {
+ 	var url='/mobile/tenantUser/login';
+ 	return requestWhite({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ export function validateCode(data) {
+ 	var url='/mobile/tenantUser/validateCode';
+ 	return requestWhite({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 

+ 20 - 0
apis/pagejs/hall/deduction.js

@@ -0,0 +1,20 @@
+import request from '@/apis/utils/request'
+ 
+ export function deductionRecord(data) {
+ 	var url='/mobile/tenant/deductionRecord';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ 
+ export function contractItemList(data) {
+ 	var url='/mobile/tenant/contractItemList';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }

+ 20 - 0
apis/pagejs/hall/index.js

@@ -0,0 +1,20 @@
+import request from '@/apis/utils/request'
+ 
+ export function homePage(data) {
+ 	var url='/mobile/tenant/homePage';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }
+ 
+ 
+ export function contractItemList(data) {
+ 	var url='/mobile/tenant/contractItemList';
+ 	return request({
+ 		method: 'post',
+ 		data: data,
+ 		url: url
+ 	})
+ }

+ 0 - 20
apis/pagejs/user.js

@@ -1,20 +0,0 @@
-import request from '@/apis/utils/request'
- import requestWhite from '@/apis/utils/requestWhite'
- export function findByOpenId(data) {
- 	var url='/mobile/regUser/findByOpenId';
- 	return requestWhite({
- 	
- 		method: 'get',
- 		data: data,
- 		url: url
- 	})
- }
- 
- export function logout(data) {
- 	var url='/mobile/regUser/logout';
- 	return request({
- 		method: 'get',
- 		data: data,
- 		url: url
- 	})
- }

+ 24 - 0
apis/utils/index.js

@@ -2,6 +2,30 @@ export const currentTimeStamp = () => new Date().getTime()
 
 export const unixTimeStamp = (val) => new Date(val).getTime()
 
+export const nextMonth=(year,month,day,bl)=>{
+	if(day){
+		
+	}else{
+		day="01"
+	}
+	var str=""
+	if(month==12){
+		str= (parseInt(year) +1)+"-01-"+day
+	}else{
+		str= year+"-"+(parseInt(month) +1)+"-"+day
+	}
+	if(bl){
+		var now= new Date(str);
+		return parseUnixTime(new Date(now.getTime()-1000*60*60*24),'{y}-{m}-{d}')	
+	}
+}
+
+// export const nextDay=(year,month,day)=>{
+// 	var now= new Date(year+"-"+month+"-"+day);
+// 	return parseUnixTime(new Date(now.getTime()+1000*60*60*24),'{y}-{m}-{d}')
+	
+// }
+
 // 苹果手机时间显示bug 
 export const newDate = (date) => {
 	var time=null;

+ 19 - 2
apis/utils/init.js

@@ -10,7 +10,24 @@ import {
 var checkOpenId = true; //是否需要获取openId
 var openId = carhelp.getOpenId();
 
-var app = {
+var app = {
+	initTest: function() {
+		// isWeiXin()|| 
+		if(isWeiXin() ){
+			console.log("?/////////")
+			if (!openId) {
+				this.getOpenId();
+			} else {
+				this.getPersion(openId)
+			}
+			
+		}else{
+			alert("请使用微信打开本页面")
+			
+		}
+		
+		
+	},
 	init: function() {
 		// isWeiXin()|| 
 		if(!(process.env.NODE_ENV === "development") ){
@@ -44,7 +61,7 @@ var app = {
 			return
 		  }
 		  
-		 var loginurl="/mobile/regUser/findByCanteenOpenId"
+		 var loginurl="/mobile/tenantUser/findByOpenId"
 		  
 		 uni.request({
 		 	method:'get',

+ 0 - 130
apis/utils/mixin-student.js

@@ -1,130 +0,0 @@
-var prefix = 'jp-education-student-' + process.car.NODE_ENV + '_';
-
-var app = {
-	getGzDate : (key) => {
-		var tdate=new Date( ).toJSON().substr(0,10).replace("T"," ")
-		var date= uni.getStorageSync( prefix + "is_gz_date")
-		
-		if(tdate==date){
-			return false
-		}else{
-			return  true;
-		}
-		
-	},
-	
-	setGzDate : () => uni.setStorageSync(prefix + "is_gz_date", new Date( ).toJSON().substr(0,10).replace("T"," ") ),
-	
-	getGunIdCharge :()=>{
-
-		var date= uni.getStorageSync( prefix + "GunId_Date_charge")
-		var now=new Date().getTime()
-		if(date+5*60*1000>now){
-			return  uni.getStorageSync(prefix +  "GunId_Date_Show_charge")
-		}else{
-			return "";
-		}
-	},
-	
-	setGunIdCharge : ( value) => {
-		uni.setStorageSync(prefix + "GunId_Date_Show_charge", value)
-		uni.setStorageSync(prefix + "GunId_Date_charge", new Date().getTime())
-		
-	},
-	// getGunId :()=>{
-	// 	var date= uni.get( "GunId_Date")
-	// 	var now=new Date().getTime()
-	// 	if(date+5*60*1000<now){
-	// 		return  uni.get( "GunId_Date_Show")
-	// 	}else{
-	// 		return "";
-	// 	}
-	// },
-	
-	// setGunId : ( value) => {
-	// 	uni.setStorageSync(prefix + "GunId_Date_Show", value)
-	// 	uni.setStorageSync(prefix + "GunId_Date", new Date().getTime())
-		
-	// },
-	
-	getPrefix:()=> prefix,
-	get : key =>  uni.getStorageSync(prefix + key),
-
-	set : (key, value) => uni.setStorageSync(prefix + key, value),
-	remove: key =>  uni.removeStorageSync(prefix + key),
-	setConfig : (value) => uni.setStorageSync(prefix + '_config_$', value),
-	getConfig : () => {
-		var config = uni.getStorageSync(prefix + '_config_$')
-		var configure={}
-		if(config){
-			for(var  i in config){
-				var con=config[i];
-				configure[con.key]=con.value
-			}
-		}
-		 return configure;
-	},
-	
-	setConfigMessage : (value) => uni.setStorageSync(prefix + '_config_tips_$', value),
-	getConfigMessage : () => {
-		var config = uni.getStorageSync(prefix + '_config_tips_$')
-		if(!config){
-			config=[]
-		}
-		 return config;
-	},
-	
-	logoff:()=>{
-		uni.removeStorageSync(prefix + 'token_tdate')
-		uni.removeStorageSync(prefix + 'token')
-		uni.removeStorageSync(prefix  + 'personInfo');
-		uni.removeStorageSync(prefix + 'personInfoPlus');
-		uni.removeStorageSync(prefix + 'getElderModeClass');
-		//uni.removeStorageSync(prefix+'wx_openId');
-		
-	},
-	
-	getPersonInfo : () => {
-		 return uni.getStorageSync(prefix + 'personInfo')
-	},
-	getPersonInfoPlus : () => {
-		 return uni.getStorageSync(prefix + 'personInfoPlus')
-	},
-	signOut:()=>  uni.removeStorageSync(prefix  + 'personInfo'),
-	getOpenId : () =>   uni.getStorageSync(prefix + 'wx_openId'+process.car.VUE_APP_WXAPPID),
-	setOpenId : (value) => uni.setStorageSync(prefix + 'wx_openId'+process.car.VUE_APP_WXAPPID, value),
-	
-	getOpenIdALI : () =>   uni.getStorageSync(prefix + 'ali_openId'+process.car.VUE_APP_WXAPPID),
-	setOpenIdALI : (value) => uni.setStorageSync(prefix + 'ali_openId'+process.car.VUE_APP_WXAPPID, value),
-	
-	getUserInfo : () => {
-		 return uni.getStorageSync(prefix + 'xpgj_wx_user_info')
-	},
-
-	setPersonInfo : (value) => uni.setStorageSync(prefix + 'personInfo', value),
-	setPersonInfoPlus : (value) => uni.setStorageSync(prefix + 'personInfoPlus', value),
-	
-	setUserInfo : (value) => uni.setStorageSync(prefix + 'xpgj_wx_user_info', value),
-	
-	getToken : (options) => {
-		//不同权限 ,不同token
-	
-		return uni.getStorageSync(prefix + 'token')
-	},
-	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)
-		}
-	}
-	,
-	getGetElderModeClass : () => {
-		 return uni.getStorageSync(prefix + 'getElderModeClass')
-	},
-	setGetElderModeClass : (value) => uni.setStorageSync(prefix + 'getElderModeClass', value),
-	
-}
-
-module.exports = app

+ 9 - 15
apis/utils/mixin.js

@@ -1,6 +1,14 @@
-var prefix = 'jp-railway-' + process.car.NODE_ENV + '_';
+var role="businessHall"
+
+var prefix = 'jp-housekeep-electric-'+role+'-' + process.car.NODE_ENV + '_';
 
 var app = {
+	setRole(key){
+		role=key;
+		prefix = 'jp-housekeep-electric-'+role+'-' + process.car.NODE_ENV + '_';
+		uni.setStorageSync("jp-housekeep-electric", role)
+		
+	},
 	getGzDate : (key) => {
 		var tdate=new Date( ).toJSON().substr(0,10).replace("T"," ")
 		var date= uni.getStorageSync( prefix + "is_gz_date")
@@ -31,21 +39,7 @@ var app = {
 		uni.setStorageSync(prefix + "GunId_Date_charge", new Date().getTime())
 		
 	},
-	// getGunId :()=>{
-	// 	var date= uni.get( "GunId_Date")
-	// 	var now=new Date().getTime()
-	// 	if(date+5*60*1000<now){
-	// 		return  uni.get( "GunId_Date_Show")
-	// 	}else{
-	// 		return "";
-	// 	}
-	// },
 	
-	// setGunId : ( value) => {
-	// 	uni.setStorageSync(prefix + "GunId_Date_Show", value)
-	// 	uni.setStorageSync(prefix + "GunId_Date", new Date().getTime())
-		
-	// },
 	
 	getPrefix:()=> prefix,
 	get : key =>  uni.getStorageSync(prefix + key),

+ 2 - 1
apis/utils/request.js

@@ -13,6 +13,7 @@ const request = (options) => {
 	 	return requestSon(options);
 	 }
 	 var openId=carhelp.getOpenId()
+	 
 	var  urlindex="/wechat/findUserInfo"
 	var k=options.url.indexOf(urlindex)==-1;
 	
@@ -24,7 +25,7 @@ const request = (options) => {
 	}
 	
 	return new Promise((resolve, reject) => {
-		 var loginurl="/mobile/regUser/findByOpenId"
+		 var loginurl="/mobile/tenantUser/findByOpenId"
 		 
 		uni.request({
 			method:'get',

+ 0 - 91
apis/utils/requestNum.js

@@ -1,91 +0,0 @@
-import  carhelp from '@/apis/utils/mixin.js'
-import requestSon from './requestSon2.js';
-
-
-const request = (options) => {
-	//记录请求次数和响应次数
-	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(options);
-	
-	 if(token_tdate&&token_tdate==tdate){
-	 	return requestSon(options);
-	 }
-	 var openId=carhelp.getOpenId()
-	var  urlindex="/wechat/findUserInfo"
-	var k=options.url.indexOf(urlindex)==-1;
-	
-	 if(!openId&&k){
-		 return
-	 }
-	if(!k){
-		return requestSon(options);
-	}
-	
-	return new Promise((resolve, reject) => {
-		 var loginurl="/mobile/regUser/findByOpenId"
-		 
-		uni.request({
-			method:'get',
-			url: process.car.BASE_URL + loginurl,
-			data: {
-				openId:openId,
-			
-			},
-			
-			header: {
-				'Content-Type': 'application/x-www-form-urlencoded',
-				'X-Requested-With': 'XMLHttpRequest',
-				//'Authorization':token
-			}
-		}).then((response) => {
- 			let [error, res] = response;
-			
-			
-			if (res.data.code == 200&&res.data.result) {
-				
-				var token = res ? res.data.data.token : '';
-				carhelp.setPersonInfo(res.data.data.regUser );
-				
-				carhelp.setToken(token);
-				carhelp.setPersonInfoPlus(res.data.data);
-				
-				options.token=token
-				
-				var isson= requestSon(options)
-				//requestNum(options);
-				resolve(isson);
-				 
-			} else  if(res.data.code == 415||(res.data.code == 200&&!res.data.result)||res.data.code == 400){
-				
-				//var url=window.location.href.split("#")[1]
-			
-				console.log("没有免登陆 ----------------"+options.url)
-				//var url="/pages/login/index?message=请登录&back="+ url+"&phone="+options.data.phone
-				var thisurl='/pages/login/index';
-				
-				if(options&&options.data&&options.data.jpcode){
-					thisurl+="?jpcode="+options.data.jpcode
-				}
-				carhelp.signOut()
-				uni.redirectTo({
-					url: thisurl
-				})
-				
-				
-				
-			 
-				
-			}else{
-		
-				reject(res.data.message)
-			}
-		}).catch(error => {
-			
-			let [err, res] = error;
-			reject(err)
-		})
-	});
-}
-export default request

+ 4 - 3
apis/utils/requestSon.js

@@ -40,10 +40,11 @@ const request = (options) => {
 			
 			
 			if (res.data.code == 415&&res.data.message=='请先注册信息') {
+				console.log("请先注册信息请先注册信息")
 				carhelp.signOut()
-				uni.redirectTo({
-					url: 'pages/login/index'
-				})
+				// uni.redirectTo({
+				// 	url: 'pages/login/index'
+				// })
 				return;
 			}
 			

+ 0 - 69
apis/utils/requestSon2.js

@@ -1,69 +0,0 @@
-import  carhelp from '@/apis/utils/mixin.js'
-
-//记录请求次数和响应次数
-let reqCount = 0,
-	resCount = 0;
-var baseUrl=process.car.BASE_URL;
-
-if (process.env.NODE_ENV === "development") {
-	baseUrl='http://192.168.77.162:8081/railroad-server/';
-}
-const request = (options) => {
-	var token=carhelp.getToken(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/login/index'
-				})
-				return;
-			}
-			
-			if (res.data.code != 200) {
-				reject(res.data.message)
-			} else {
-				if(!res.data.result){
-					
-					reject(res.data.message);
-				}else{
-					resolve(res.data);
-				}
-			
-			}
-		}).catch(error => {
-			resCount++
-		
-			let [err, res] = error;
-			reject(err)
-		})
-	});
-}
-export default request

+ 6 - 0
assets/img/iconPark-order2.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="20" height="20" style="border-color: rgba(187,187,187,1);border-width: 0;border-style: solid" filter="none">
+    
+    <g>
+    <rect width="48" height="48" fill="rgba(51,51,51,1)" fill-opacity="0.01" stroke="none"></rect><path d="M33.0499 7H38C39.1046 7 40 7.89543 40 9V42C40 43.1046 39.1046 44 38 44H10C8.89543 44 8 43.1046 8 42L8 9C8 7.89543 8.89543 7 10 7H16H17V10H31V7H33.0499Z" fill="none" stroke="rgba(51,51,51,1)" stroke-width="4" stroke-linejoin="round"></path><rect x="17" y="4" width="14" height="6" stroke="rgba(51,51,51,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></rect><path d="M26.9996 19L19 27.0012H29.004L21.0003 35.0018" stroke="rgba(51,51,51,1)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round" fill="none"></path>
+    </g>
+  </svg>

+ 6 - 0
assets/img/riLine-settings-2-line.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="20" height="20" style="border-color: rgba(187,187,187,1);border-width: 0;border-style: solid" filter="none">
+    
+    <g>
+    <path d="M11.581 5.333l3.476-3.476c0.241-0.241 0.575-0.39 0.943-0.39s0.701 0.149 0.943 0.39l3.476 3.476h4.915c0.736 0 1.333 0.597 1.333 1.333v0 4.915l3.476 3.476c0.241 0.241 0.39 0.575 0.39 0.943s-0.149 0.701-0.39 0.943l-3.476 3.476v4.915c0 0.736-0.597 1.333-1.333 1.333v0h-4.915l-3.476 3.476c-0.241 0.241-0.575 0.39-0.943 0.39s-0.701-0.149-0.943-0.39l-3.476-3.476h-4.915c-0.736 0-1.333-0.597-1.333-1.333v0-4.915l-3.476-3.476c-0.241-0.241-0.39-0.575-0.39-0.943s0.149-0.701 0.39-0.943l3.476-3.476v-4.915c0-0.736 0.597-1.333 1.333-1.333v0h4.915zM8 8v4.687l-3.313 3.313 3.313 3.313v4.687h4.687l3.313 3.313 3.313-3.313h4.687v-4.687l3.313-3.313-3.313-3.313v-4.687h-4.687l-3.313-3.313-3.313 3.313h-4.687zM16 21.333c-2.946 0-5.333-2.388-5.333-5.333s2.388-5.333 5.333-5.333v0c2.946 0 5.333 2.388 5.333 5.333s-2.388 5.333-5.333 5.333v0zM16 18.667c1.473 0 2.667-1.194 2.667-2.667s-1.194-2.667-2.667-2.667v0c-1.473 0-2.667 1.194-2.667 2.667s1.194 2.667 2.667 2.667v0z" fill="rgba(51,51,51,1)"></path>
+    </g>
+  </svg>

+ 3 - 3
components/Tabbar.vue

@@ -28,14 +28,14 @@
 						iconPath: img1,
 						selectedIconPath: img2,
 						text: '主页 ',
-						pagePath2: "/pages/index/index",
+						pagePath2: "/pages/businessHall/index/index",
 					},
 					 
 					{
 						iconPath: img3,
 						selectedIconPath: img4,
 						text: '消息',
-						pagePath2: "/pages/message/message",
+						pagePath2: "/pages/businessHall/message/message",
 						
 					},
 					
@@ -43,7 +43,7 @@
 						iconPath: img5,
 						selectedIconPath: img6,
 						text: '我的',
-						pagePath2: "/pages/mine/mine",
+						pagePath2: "/pages/businessHall/mine/mine",
 					}
 				],
 			};

+ 153 - 0
components/bobo-router/README.md

@@ -0,0 +1,153 @@
+# bobo-router
+
+bobo-router 是一个基于uni-app框架的路由拦截插件,本项目借鉴了[uni-simple-router](https://github.com/SilurianYang/uni-simple-router)的思路,并对其进行简化,简化的原因是因为自己比较懒,不想每次新增页面就定义两遍路由表,所以`bobo-router`的特点就是纯粹的路由拦截,不再**定义两遍路由表**。
+
+当然,由于不再定义路由表,也损失了一些能力,比如不能使用命名路由,不能在路由表中自定义路由元信息等。
+
+> 本人不是大神,插件可能会存在各种各样的问题,望大家谨慎使用,并多多担待。
+
+## 安装
+
+下载插件后,在`main.js`中导入即可。
+
+```js
+// main.js
+
+import router from './utils/bobo-router'
+```
+
+## 基本使用
+
+同`uni-simple-router`一样,项目中的路由跳转要全部弃用`uni.navigateTo()`这样的系统跳转方法,转而使用插件提供的`this.$Router.push()`这样的方法。
+
+```js
+// *.vue
+
+// 跳转页面,保留当前页到页面栈,等同于 uni.navigateTo()
+this.$Router.push({
+	page: '/pages/index/index',
+	params: {}
+})
+
+// 跳转页面,替换当前页到页面栈,等同于 uni.redirectTo()
+this.$Router.replace({
+	page: '/pages/index/index',
+	params: {}
+})
+
+// 跳转页面,清空页面栈,等同于 uni.reLaunch()
+this.$Router.replaceAll({
+	page: '/pages/index/index',
+	params: {}
+})
+
+// 跳转 Tabbar,等同于 uni.switchTab()
+this.$Router.pushTab({
+	page: '/pages/index/index',
+	params: {}
+})
+```
+
+> Tips: 
+> 如果不需要传递参数,可以直接使用 this.$Router.push('/pages/index/index')
+
+> 注意:
+> pushTab传递的参数可通过this.$Route.params获取,但h5页面刷新之后就会丢失数据
+
+## 路由拦截
+
+支持路由前置守卫和路由后置守卫,并且提供一个路由跳转失败的回调,可以重写以实现自己的逻辑。
+
+在`bobo-router/index.js`中添加自己的拦截逻辑。
+
+```js
+// ./utils/bobo-router/index.js
+
+// 路由全局拦截器 在这里处理登录、授权等相关操作
+router.beforeEach(function(to, from, next) {
+	console.log('前置守卫')
+	// to.page不存在表示此次路由跳转仅为了执行路由守卫,若不需处理则直接放行,就不会执行任何路由操作了
+	if (from.page === '/pages/plugin/routers/r3' && !to.page) {
+	// 测试小程序跳转
+	// if (from.page === '/pages/index/index' && !to.page) {
+		next({page: '/pages/plugin/routers/r4', params: {
+			message: '我是从路由3刷新跳过来的'
+		}, method: 'redirectTo'})
+	} else {
+		next()
+	}
+})
+
+// 路由后置拦截器 在这里处理用户高频操作信息
+router.afterEach(function (to, from) {
+	console.log('后置守卫')
+})
+
+// 路由跳转出错处理
+router.onError(function(e) {
+	console.log('错误:', e.message || '路由跳转失败')
+})
+```
+
+参数解释:
+
+**to**:目标路由信息,包含`method`路由跳转方式、`page`页面地址和`params`页面参数
+
+> 注:在进入应用的第一个页面或h5刷新页面后会执行路由前置守卫,此时 to 中的属性均为 undefined
+
+**from**:当前路由信息,包含`page`页面地址和`params`页面参数
+
+**next**:下一步操作
+
+- `next(false)` 中断路由跳转
+- `next('/pages/index/index')` 执行指定页面的路由前置守卫,若当前操作指定过跳转方式,则使用该跳转方式,否则使用默认的push进行跳转
+- `next({page:'/pages/index/index',params:{},method:''})` 执行指定页面的路由前置守卫,method传入跳转方式,也可以不指定,效果同直接传入页面地址
+- `next()` 放行 执行跳转操作
+
+## 参数解析
+
+使用本插件的方法去跳转路由,会将对象的第一级属性转换到URL中,深层对象则转为json串放在对应的属性中。
+
+例如:
+
+```js
+// 转换前对象
+{
+	num: 19,
+	numStr: '19',
+	testParams: true,
+	deepObj: {
+		str: 'hahaha'
+	},
+	ignoreFun: function() {
+		console.log('i\'m hide.')
+	},
+	testUndefined: undefined,
+	testNull: null
+}
+
+// 转换后URL
+?num=19&numStr=19&testParams=true&deepObj=%7B"str"%3A"hahaha"%7D&testUndefined=&testNull=
+```
+
+如果要获取当前路由信息,可通过`this.$Route`获取。
+
+```js
+{
+    "path": "/pages/plugin/router?num=19&numStr=19&testParams=true&deepObj={\"str\":\"hahaha\"}&testUndefined=&testNull=",
+    "params": {
+        "num": 19,
+        "numStr": "19",
+        "testParams": true,
+        "deepObj": {
+            "str": "hahaha"
+        },
+        "testNull": null
+    },
+    "page": "/pages/plugin/router",
+    "pageTitle": "路由拦截插件"
+}
+```
+
+> 页面标题 pageTitle 是在页面中的 data(){}代码块中定义了之后才能正常显示,且只能在onload生命周期之后使用。
+> h5端则不需要定义pageTitle,插件可直接获取当前网页标题。

+ 362 - 0
components/bobo-router/bobo-router.js

@@ -0,0 +1,362 @@
+class Router {
+	constructor(arg) {
+		if (arg && arg.constructor !== Object) {
+			return console.error(`Routing configuration must be an Object`)
+		}
+		Router.$root = this;
+	}
+
+	// 路由跳转方法映射
+	routeMap = {
+		push: 'navigateTo',
+		replace: 'redirectTo',
+		replaceAll: 'reLaunch',
+		pushTab: 'switchTab'
+	}
+
+	/**
+	 * 执行路由跳转
+	 */
+	_pushTo() {
+		return new Promise((resolve, reject) => {
+			let {
+				page,
+				params,
+				method
+			} = this.tempRoute
+			// 对首次进入页面执行路由守卫时如果放行,method page params都为空 此时应该直接中断流程,无需抛出异常
+			if (!method && !page && !params) {
+				return
+			}
+
+			let urlParams = '?'
+			if (!page) {
+				reject(new Error('参数page未填写'))
+				return
+			} else if (params && typeof(params) === 'object') {
+				// 处理参数,转换为url字符串
+				Object.keys(params).forEach(k => {
+					// 深度对象转为json字符串(包含数组)
+					if (typeof(params[k]) === 'object') {
+						if (params[k]) {
+							const json = JSON.stringify(params[k])
+							urlParams += `${k}=${json}&`
+						} else {
+							urlParams += `${k}=&`
+						}
+					} else if (typeof(params[k]) === 'number' || typeof(params[k]) === 'string' || typeof(params[k]) ===
+						'boolean') {
+						// 基础值直接写入
+						urlParams += `${k}=${params[k]}&`
+					} else if (typeof(params[k]) === 'undefined') {
+						urlParams += `${k}=&`
+					}
+				})
+			}
+
+			// 参数组装
+			if (urlParams.length === 1) {
+				urlParams = ''
+			} else {
+				urlParams = urlParams.substr(0, urlParams.length - 1)
+			}
+
+			// 设置路由跳转方式
+			if (!method) {
+				method = 'navigateTo'
+			}
+			if (this.routeMap[method]) {
+				method = this.routeMap[method]
+			}
+
+			// 调用系统跳转方法
+			uni[method]({
+				url: page + urlParams,
+				success: () => {
+					// 执行路由后置守卫
+					if (this._afterEach && typeof(this._afterEach) === 'function') {
+						this._afterEach.call(this, this.tempRoute, this.route)
+					}
+
+					// 更新路由信息
+					this.route = {
+						path: page + urlParams,
+						params: params || {},
+						page
+					}
+					this.tempRoute = null
+					resolve()
+				},
+				fail: (e) => {
+					reject(new Error('路由跳转失败!'))
+				}
+			})
+		})
+	}
+
+	/**动态的导航到一个新 URL 保留浏览历史
+	 * navigateTo
+	 * @param {Object} rule
+	 */
+	push(arg) {
+		const rule = {
+			method: 'navigateTo'
+		}
+		if (typeof(arg) === 'string') {
+			rule.page = arg
+		} else if (typeof(arg) === 'object') {
+			rule.page = arg.page
+			rule.params = arg.params
+		}
+		this.next(rule)
+	}
+
+	/**动态的导航到一个新 URL 关闭当前页面,跳转到的某个页面。
+	 * redirectTo
+	 * @param {Object} rule
+	 */
+	replace(arg) {
+		const rule = {
+			method: 'redirectTo'
+		}
+		if (typeof(arg) === 'string') {
+			rule.page = arg
+		} else if (typeof(arg) === 'object') {
+			rule.page = arg.page
+			rule.params = arg.params
+		}
+		this.next(rule)
+	}
+
+	/**动态的导航到一个新 URL 关闭所有页面,打开到应用内的某个页面
+	 * 	reLaunch
+	 * @param {Object} rule
+	 */
+	replaceAll(arg) {
+		const rule = {
+			method: 'reLaunch'
+		}
+		if (typeof(arg) === 'string') {
+			rule.page = arg
+		} else if (typeof(arg) === 'object') {
+			rule.page = arg.page
+			rule.params = arg.params
+		}
+		this.next(rule)
+	}
+
+	/** 跳转Tabbar
+	 * 	switchTab
+	 * @param {Object} rule
+	 */
+	pushTab(arg) {
+		const rule = {
+			method: 'switchTab'
+		}
+		if (typeof(arg) === 'string') {
+			rule.page = arg
+		} else if (typeof(arg) === 'object') {
+			rule.page = arg.page
+			rule.params = arg.params
+		}
+		this.next(rule)
+	}
+
+
+	/**
+	 * 返回到指定层级页面上
+	 */
+	back(delta = 1) {
+		// 返回上级
+		if (delta.constructor != Number) {
+			this._errorHandler(new Error('返回层级参数必须是一个Number类型且必须大于0:'))
+			return
+		}
+		uni.navigateBack({
+			delta
+		})
+	}
+
+	/**
+	 * 分发路由
+	 * @param {Object} args
+	 */
+	_next() {
+		return new Promise((resolve, reject) => {
+			if (this._beforeEach && typeof(this._beforeEach) === 'function') {
+				// 需要传给守卫 to from next
+				this._beforeEach.call(this, this.tempRoute, this.route, resolve)
+			} else {
+				this._pushTo().catch(e => {
+					reject(e)
+				})
+			}
+		})
+	}
+
+	next(args) {
+		if (args) {
+			// 保存临时数据
+			if (typeof(args) === 'object') {
+				this.tempRoute = {
+					// 第一次调用next一定存在method,后续循环调用可能不会存在,不存在时使用上次缓存的method
+					method: args.method || this.tempRoute.method,
+					page: args.page,
+					params: args.params
+				}
+			} else if (typeof(args) === 'string') {
+				this.tempRoute = {
+					page: args
+				}
+			} else if (!args) {
+				// 中断路由 args = false
+				this.tempRoute = null
+				return
+			}
+
+			if (!this.route) {
+				this.route = {
+					page: '/' + getCurrentPages()[0].route
+				}
+			}
+
+			this._next().then(args => {
+				this.next(args)
+			}).catch(e => {
+				this.tempRoute = null
+				this._errorHandler(e)
+			})
+		} else {
+			this._pushTo().catch(e => {
+				this.tempRoute = null
+				this._errorHandler(e)
+			})
+		}
+	}
+
+	/**
+	 * 应用启动时执行一次路由检查(前置守卫,若通过则不做事情)
+	 */
+	doBeforeHooks() {
+		this.tempRoute = {}
+		this.next({})
+	}
+
+	// 设置路由前置/后置守卫
+	beforeEach(fn) {
+		this._beforeEach = fn
+	}
+	afterEach(fn) {
+		this._afterEach = fn
+	}
+	// 设置路由跳转错误处理
+	onError(fn) {
+		if (fn && typeof(fn) === 'function') {
+			this._errorHandler = fn
+		}
+	}
+
+	// 获取当前路由信息
+	getCurrentRoute() {
+		return this.route
+	}
+
+}
+
+// 路由对象属性定义
+Router.$root = null
+// 当前路由内容
+Router.route = null
+// 临时路由信息
+Router.tempRoute = null
+// 路由前置后置守卫
+Router._beforeEach = null
+Router._afterEach = null
+// 路由跳转错误处理
+Router._errorHandler = function(e) {
+	console.error(e)
+}
+
+Router.install = function(Vue) {
+	Vue.mixin({
+		onLaunch: function() {},
+		onLoad: function(props) {
+			// 首次进入页面时,缓存中不存在当前路由信息,需要初始化路由信息
+			if (!Router.$root.getCurrentRoute()) {
+				const rt = {
+					params: {},
+					page: '/' + getCurrentPages()[0].route
+				}
+				if (props) {
+					Object.keys(props).forEach(k => {
+						// url转的对象全部都是字符串,需要识别其中的对象和基本数据类型
+						try {
+							const obj = JSON.parse(props[k])
+							if (typeof(obj) === 'string') {
+								// 只有字符串还会是字符串,数字、布尔、数组均会转换为正常类型
+								rt.params[k] = props[k]
+							} else {
+								rt.params[k] = obj
+							}
+						} catch (e) {
+							rt.params[k] = props[k]
+						}
+					})
+				}
+				Router.$root.route = rt
+
+				// 执行路由前置守卫
+				Router.$root.doBeforeHooks()
+			}
+
+			// 自动获取页面标题(app端可能获取不到)
+			const pages = getCurrentPages()
+			let pageTitle = pages[pages.length - 1].pageTitle
+			// #ifdef H5
+			if (!pageTitle) {
+				pageTitle = document.title
+			}
+			// #endif
+			Router.$root.route.pageTitle = pageTitle
+		},
+
+		onShow() {
+			if (!getCurrentPages().length) {
+				return
+			}
+			// 获取当前路由信息
+			const pages = getCurrentPages()
+			const page = pages[pages.length - 1]
+			let pageTitle = page.pageTitle
+			const rt = {
+				params: {},
+				page: '/' + page.route,
+			}
+			if (!pageTitle) {
+				// #ifdef H5
+				rt.pageTitle = document.title
+				// #endif
+			} else {
+				rt.pageTitle = pageTitle
+			}
+			
+			const route = Router.$root.route
+			// 若当前页面地址不等于缓存中地址,则更新缓存路由信息
+			if (!route || route.page !== rt.page) {
+				Router.$root.route = rt
+			}
+		}
+	})
+	Object.defineProperty(Vue.prototype, "$Router", {
+		get: function() {
+			return Router.$root
+		}
+	})
+	Object.defineProperty(Vue.prototype, "$Route", {
+		get: function() {
+			return Router.$root.getCurrentRoute()
+		}
+	})
+}
+
+export default Router

+ 76 - 0
components/bobo-router/index.js

@@ -0,0 +1,76 @@
+ 
+// import  carhelp from '@/utils/mixin.js'
+
+import Vue from 'vue'
+//  先运行yarn  初始化
+import uniCrazyRouter from "uni-crazy-router";
+Vue.use(uniCrazyRouter)
+//** 有bug, 第一次直接敲链接访问, 是访问bobo-router 前置守卫
+//**  后续操作,访问的是 uniCrazyRouter的前置守卫
+
+
+uniCrazyRouter.beforeEach(async (to, from, next) => {
+
+
+	routerBeforeEach(to, from, next);
+	
+})
+
+uniCrazyRouter.afterEach((to, from) => {
+	// 逻辑代码
+	console.log("afterEach")
+	var ProjectName=process.car.ProjectName;
+	if(process.car.NODE_ENV=='dev'||process.car.NODE_ENV=='test'){
+		  ProjectName+='('+process.car.NODE_ENV+')';				 
+	}
+	uni.setNavigationBarTitle({
+	   		title:ProjectName
+	}) 
+})
+
+uniCrazyRouter['on' + 'Error']((to, from) => {
+	// 逻辑代码
+	console.log("Error+start")
+	console.log(to)
+	console.log(from)
+	console.log("Error+end")
+	
+})
+
+import Router from './bobo-router'
+import carhelp from '@/apis/utils/mixin.js'
+
+Vue.use(Router)
+
+// 路由配置 页面中全部使用this.$Router来操作路由,以实现路由的全局管理
+const router = new Router()
+
+// 路由全局拦截器 在这里处理登录、授权等相关操作
+router.beforeEach(function(to, from, next) {
+	
+	if(from.page.indexOf('/pages/businessHall/')==0){
+		carhelp.setRole("businessHall")
+	}
+	
+	if(from.page.indexOf('/pages/energyCenter/')==0){
+		carhelp.setRole("energyCenter")
+	}
+	routerBeforeEach(to, from, next);
+
+})
+ 
+
+function routerBeforeEach(to, from, next) {
+	next();
+}
+// 路由后置拦截器
+router.afterEach(function(to, from) {
+	console.log('后置守卫')
+})
+
+// 路由跳转出错处理
+router.onError(function(e) {
+	console.log('错误:', e.message || '路由跳转失败')
+})
+
+export default router

+ 2 - 2
config/.env.dev.js

@@ -1,6 +1,6 @@
 const UNI_APP = {  
 	ProjectName :"荆鹏电管家",
-	BASE_URL: 'http://36.134.122.108/railroad-server/',
+	//BASE_URL: 'http://36.134.122.108/railroad-server/',
 
 	
 	BASE_URL:'http://192.168.77.162:8081/electric-manager-api/',
@@ -12,7 +12,7 @@ const UNI_APP = {
 	openId:"55555",//测试人员 开发环境
 	//openId:"oK9Wr57rAcNzihDN2PEdptprT0As", 
 	// openId:"oK9Wr54VbEh3xvWYmD_zT5NbH4AY",
-	openId:"oBEnI6GDWCRQqn_xlyPlCYFY8Amg",//zkx
+	//openId:"oLowyuOJvTszgk96C0f8j0XfcEXg",//zkx
 	
 	//appid
 	VUE_APP_WXAPPID:"wx0b3c41a903053808",

+ 16 - 7
main.js

@@ -14,19 +14,19 @@ if (IS_ALI) {
 }
 
 import mixin from './apis/utils/mixin.js'
-import carhelpStudent from './apis/utils/mixin-student.js'
-
+ 
 Vue.prototype.carhelp = mixin
-Vue.prototype.carhelpStudent = carhelpStudent
-
+ window.wx = {}
 // import Vconsole from 'vconsole'
 //import uView from "uview-ui";
 import uView from '@/uni_modules/uview-ui'
+import router from '@/components/bobo-router'
 
 Vue.use(uView);
 
 
-Vue.mixin({
+Vue.mixin({
+	
 	updated: function() {
 		
 	},
@@ -45,11 +45,20 @@ Vue.mixin({
 		}
 		uni.setNavigationBarTitle({
 		   		title:ProjectName
-		}) 
+		}) 
+		
+		this.personInfo=this.carhelp.getPersonInfo();
+		
 
 	},
 	methods: {
-		
+		jpAmount(amount){
+			if(amount){
+				return amount.toFixed(2)
+			}else{
+				return "0.00"
+			}
+		},
 		substrDate(date){
 			if(date){
 				return date.substr(0,11)

+ 3 - 1
package.json

@@ -18,7 +18,9 @@
 		"@vue/cli-service": "^4.0.0",
 		"babel-eslint": "^10.0.3",
 		"eslint": "^5.16.0",
-		"eslint-plugin-vue": "^5.0.0",
+		"eslint-plugin-vue": "^5.0.0",
+		"uni-crazy-router": "0.0.31",
+		
 		"node-sass": "^5.0.0",
 		"sass-loader": "^11.0.1",
 		"vue-template-compiler": "^2.6.10"

+ 9 - 0
pages.json

@@ -9,6 +9,15 @@
 		        "enablePullDownRefresh": false
 		    }
 		    
+		},
+		{
+		    "path" : "pages/energyCenter/login/login",
+		    "style" :                                                                                    
+		    {
+		        //登录
+		        "enablePullDownRefresh": false
+		    }
+		    
 		},
 		{ 
 			

+ 175 - 97
pages/businessHall/deductionRecord/deductionRecord.vue

@@ -21,100 +21,44 @@
 		</view>
 		<!-- 标签 -->
 		<view class="tabs">
-			<u-dropdown>
-						<u-dropdown-item v-model="value1" title="全部类型" :options="options1"></u-dropdown-item>
-						<u-dropdown-item v-model="value2" title="全部时间" :options="options2"></u-dropdown-item>
-					</u-dropdown>
+			<u-picker  v-model="tabsFrom.show1" mode="selector" :range="tabsFrom.selector1"  range-key="label" @confirm="selector1confirm" ></u-picker>
+			<u-picker-select title="日期选择" v-model="tabsFrom.show2"
+			 :defaultTime="tabsFrom.show2Index" :endYear="endYear"
+			 mode="time" :params="params"  @confirm="selector2confirm" @reset="selector2reset" ></u-picker-select>
+			
+			<view class="tabsItem" @click="tabsFrom.show1=!tabsFrom.show1">{{tabsFrom.show1Text}} <u-icon name="arrow-up"
+					v-if="tabsFrom.show1"></u-icon><u-icon v-else name="arrow-down"></u-icon></view>
+			<view class="tabsItem" @click="tabsFrom.show2=!tabsFrom.show2">{{tabsFrom.show2Text}} <u-icon name="arrow-up"
+					v-if="tabsFrom.show2"></u-icon><u-icon v-else name="arrow-down"></u-icon></view>
 		</view>
 		<!-- 记录 -->
 		<view class="records-item" >
 			<view class="time">
-				01月  合计扣费  504.00元
+				{{queryMonth}}  合计扣费  {{jpAmount(sumAmount)}}
 			</view>
-			<view class="details">
+			<view class="details" v-for="(item,i) in list" :key="i" >
 				<view class="icon">
-					<image class="img" src="@/assets/img/Copy PEokWS2 Copy 1@1x.png" mode=""></image>
+					<image class="img" v-if="item.remark.indexOf('水')>-1" src="@/assets/img/wImage@1x.png" mode=""></image>
+						<image class="img"  v-else-if="item.remark.indexOf('房')>-1||item.remark.indexOf('租')>-1" src="@/assets/img/wImage.png" mode=""></image>
+						<image class="img"  v-else-if="item.remark.indexOf('保洁')>-1" src="@/assets/img/wImage3.png" mode=""></image>
+						<image class="img" v-else-if="item.remark.indexOf('物业')>-1"  src="@/assets/img/wImage4.png" mode=""></image>
+						
+					<image class="img" v-else src="@/assets/img/Copy PEokWS2 Copy 1@1x.png" mode=""></image>
 				</view>
 				<view class="details-title">
 					<view class="name">
-						1月1日电费
+						{{item.remark}} 
 					</view>
 					<view class="record-time">
-						01-02 00:01 420667788991101
+						{{item.createTime}}  
 					</view>
 				</view>
 				<view class="sum">
-					80.00
+					{{jpAmount(item.amount*-1)}} 
 				</view>
 			</view>
 			
-			<view class="details">
-				<view class="icon">
-					<image class="img" src="@/assets/img/wImage@1x.png" mode=""></image>
-				</view>
-				<view class="details-title">
-					<view class="name">
-						1月1日水费
-					</view>
-					<view class="record-time">
-						01-02 00:01 420667788991101
-					</view>
-				</view>
-				<view class="sum">
-					4.00
-				</view>
-			</view>
 			
-			<view class="details">
-				<view class="icon">
-					<image class="img" src="@/assets/img/wImage.png" mode=""></image>
-				</view>
-				<view class="details-title">
-					<view class="name">
-						1月1日房租
-					</view>
-					<view class="record-time">
-						01-02 00:01 420667788991101
-					</view>
-				</view>
-				<view class="sum">
-					20.00
-				</view>
-			</view>
-			
-			<view class="details">
-				<view class="icon">
-					<image class="img" src="@/assets/img/wImage3.png" mode=""></image>
-				</view>
-				<view class="details-title">
-					<view class="name">
-						1月1日保洁费
-					</view>
-					<view class="record-time">
-						01-02 00:01 420667788991101
-					</view>
-				</view>
-				<view class="sum">
-					20.00
-				</view>
-			</view>
-			
-			<view class="details">
-				<view class="icon">
-					<image class="img" src="@/assets/img/wImage4.png" mode=""></image>
-				</view>
-				<view class="details-title">
-					<view class="name">
-						1月1日物业服务费
-					</view>
-					<view class="record-time">
-						01-02 00:01 420667788991101
-					</view>
-				</view>
-				<view class="sum">
-					20.00
-				</view>
-			</view>
 			
 		</view>
 		
@@ -122,32 +66,164 @@
 </template>
 
 <script>
+	import * as API from '@/apis/pagejs/hall/deduction.js'
+	
+	import {
+		nextDay,
+		nextMonth,
+	
+	} from '@/apis/utils'
+	
 	export default {
 		data() {
 			return {
-				value1: 1,
-				value2: 1,
-				options1: [{
-						label: '类型1',
-						value: 1,
-					},
-					{
-						label: '类型2',
-						value: 2,
-					},
-					
-				],
-				options2: [{
-						label: '时间1',
-						value: 1,
-					},
-					{
-						label: '时间2',
-						value: 2,
-					},
-				],
+				list:[],
+				formData:{
+					pageIndex:1,
+					pageSize:9999,
+				},
+				
+				endYear:'',
+				queryMonth:"",
+				params: {
+					year: true,
+					month: true,
+					day: false,
+					hour: false,
+					minute: false,
+					second: false
+				},
+				tabsFrom: {
+					show1: false,
+					show1Index:0,
+					show2Index:'',
+					show2: false,
+					show1Text: "全部类型",
+					show2Text: "全部时间",
+					selector1:[
+						{
+								label: '全部类型',
+								value: '',
+							},
+						{
+								label: '线上充值',
+								value: '1',
+							},
+							{
+								label: '线下充值',
+								value: '2',
+							},
+					]
+				},
+			}
+		},
+		onLoad() {
+			this.endYear=new Date().getFullYear()
+			var date=new Date()
+			this.formData.startDate=date.getFullYear()+"-"+(date.getMonth() + 1) +"-1"
+			this.queryMonth=date.getFullYear()+"年"+(date.getMonth() + 1) +"月"
+			this.contractItemList()
+			this.deductionRecord();
+		},
+		computed:{
+			sumAmount(){
+				var amounts=this.list.map(item=>{
+					return item.amount*-1
+				})
+				console.log(amounts)
+				let totalAmount = amounts.reduce((accumulator, currentValue) => {  
+				  return accumulator + currentValue;  
+				}, 0);  
+				
+				return   totalAmount
 			}
 		},
+		methods: {
+			selector2confirm(e){
+				
+				this.tabsFrom.show2Text=e.year+"年"+e.month+"月"
+				
+				this.tabsFrom.show2Index=e.year+"-"+e.month
+				if(e.day){
+					this.tabsFrom.show2Text+=e.day+"日"
+					this.tabsFrom.show2Index+='-'+e.day	
+				}
+				//this.tabsFrom.show2Index=this.tabsFrom.show2Text
+				
+			
+				if(e.day){
+					this.formData.startDate=e.year+"-"+e.month +"-"+e.day	
+				
+					this.queryMonth=e.year+"年"+e.month+"月"+e.day+"日"
+					this.formData.endDate=this.formData.startDate
+					//nextDay(e.year,e.month, e.day)
+					
+					
+				}else{
+					this.queryMonth=e.year+"年"+e.month+"月"
+					this.formData.startDate=e.year+"-"+e.month +"-1"
+					
+					this.formData.endDate=nextMonth(e.year,e.month, 1,1)
+					
+					
+				}
+				this.deductionRecord()
+			},
+			selector2reset(e){
+			
+				this.tabsFrom.show2Text='全部时间'
+				this.tabsFrom.show2Index='';
+				
+				
+				this.formData.startDate=date.getFullYear()+"-"+(date.getMonth() + 1) +"-1"
+				this.queryMonth=date.getFullYear()+"年"+(date.getMonth() + 1)+"月" 
+				this.deductionRecord()
+			},
+			selector1confirm(e){
+			
+				var index=e[0]
+				this.tabsFrom.show1Index=index
+				this.tabsFrom.show1Text=this.tabsFrom.selector1[index].label
+				this.formData.contractItemId=this.tabsFrom.selector1[index].value
+				this.deductionRecord()
+			},
+			change() {
+							// 更多的细节,如有需要请自行根据业务逻辑进行处理
+							// this.$refs.uDropdown.highlight(xxx);
+			},
+			deductionRecord(){
+				
+				API.deductionRecord(this.formData).then((response) => {
+					uni.hideLoading();
+					this.list=response.data.data;
+				}).catch(error => {
+					uni.hideLoading();
+					
+				})
+			},
+			contractItemList(){
+				API.contractItemList({
+					
+				}).then((response) => {
+					//uni.hideLoading();
+					var contractItemList=response.data.contractItemList
+					this.tabsFrom.selector1=[{
+						label: "全部类型",
+						value: '',
+					}]
+					contractItemList.forEach(item=>{
+						this.tabsFrom.selector1.push({
+							label: item.name,
+							value: item.id,
+						})
+					})
+					
+				}).catch(error => {
+					//uni.hideLoading();
+					
+				})
+			},
+		}
 	}
 </script>
 
@@ -196,6 +272,8 @@
 		line-height: 96rpx;
 		background-color: #fff;
 		border-top: 1px solid rgba(241,241,241,1);
+		display: flex;
+		justify-content: space-around;
 		
 	}
 	// 记录

+ 29 - 5
pages/businessHall/index/index.vue

@@ -13,7 +13,7 @@
 						账户充值
 					</view>
 					<view class="infos">
-						余额 88.88
+						余额 {{personInfo.balance}}
 
 					</view>
 				</view>
@@ -125,22 +125,46 @@
 
 </template>
 
-<script>
+<script>
+	import * as API from '@/apis/pagejs/hall/index.js'
+	
 	import Tabbar from '@/components/Tabbar.vue'
 	export default {
 		components: {
 			Tabbar
 		},
 		data() {
-			return {
+			return {
+				personInfo:{},
 				background: {
 					backgroundColor: '#3D86FF',
 				}
 
 			}
+		},
+		onLoad() {
+			this.homePage()
+		
 		},
-		methods: {
-
+		methods: {
+			
+			homePage(){
+				// uni.showLoading({
+				// 	title: "加载中",
+				// 	mask: true,
+				// })
+				
+				API.homePage({
+					
+				}).then((response) => {
+					//uni.hideLoading();
+					this.personInfo=response.data.regUser;
+					console.log(response.data.regUser)
+				}).catch(error => {
+					//uni.hideLoading();
+					
+				})
+			}
 		}
 	}
 </script>

+ 28 - 2
pages/businessHall/login/login.vue

@@ -27,7 +27,7 @@
 </template>
 
 <script>
-	import * as API from '@/apis/pagejs/user.js'
+	import * as API from '@/apis/pagejs/h_user.js'
 	import {
 		checkPhone
 	} from '@/apis/utils'
@@ -38,15 +38,21 @@
 				password:"",
 			}
 		},
+		onLoad(){
+			this.carhelp.setRole("businessHall");
+			this.query()
+		},
 		methods: {
 			loginset(response){
+				
 				var token = response ? response.data.token : '';
 				this.carhelp.setToken(token);
 				this.carhelp.setPersonInfo(response.data.regUser);
 				this.carhelp.setPersonInfoPlus(response.data)
+				
 				//this.gotoUrl("pages/user/index")
 				uni.redirectTo({
-					url: '/'
+					url: '/pages/businessHall/index/index'
 				})
 			},
 			query(){
@@ -91,6 +97,26 @@
 					return
 				}
 				
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				
+				API.login({
+					password:this.password,
+					phone:this.phone,
+					openId: this.carhelp.getOpenId(),
+					
+				}).then((response) => {
+					
+					this.loginset(response)
+					
+				
+				}).catch(error => {
+					uni.hideLoading();
+					
+				})
+				
 			}
 		}
 	}

+ 5 - 4
pages/businessHall/mine/electronicMonitoring.vue

@@ -352,12 +352,13 @@
 		},
 		methods: {
 			selector2confirm(e){
-				console.log(e)
-				this.tabsFrom.show2Text=e.year+"-"+e.month
+				this.tabsFrom.show2Text=e.year+"年"+e.month+"月"
+				
+				this.tabsFrom.show2Index=e.year+"-"+e.month
 				if(e.day){
-					this.tabsFrom.show2Text+='-'+e.day
+					this.tabsFrom.show2Text+=e.day+"日"
+					this.tabsFrom.show2Index+='-'+e.day	
 				}
-				this.tabsFrom.show2Index=this.tabsFrom.show2Text
 			},
 			selector2reset(e){
 				console.log(e)

+ 56 - 13
pages/businessHall/mine/mine.vue

@@ -8,10 +8,10 @@
 				</view>
 				<view class="else">
 					<view class="name">
-						周琼
+						{{personInfo.contacts}}
 					</view>
 					<view class="company">
-						联通公司
+						{{personInfo.companyName}}
 					</view>
 					
 				</view>
@@ -27,25 +27,25 @@
 					</view>
 				</view>
 				<!-- 切换 -->
-				<view class="switch">
+				<view class="switch" v-if="false">
 					切换园区
 				</view>
 			</view>
 		</view>
 		<!-- 功能 -->
 		<view class="function-group">
-			<view class="function-item">
+			<view class="function-item" >
 				<view class="icon">
 					<image class="img" src="@/assets/img/riLine-contacts-book-line.svg" mode=""></image>
 				</view>
 				<view class="name">
-					户信息
+					户信息
 				</view>
 				<view class="arrow">
 					<u-icon name="arrow-right" color="#b2b2b2"></u-icon>
 				</view>
 			</view>
-			<view class="function-item">
+			<view class="function-item" v-if="false">
 				<view class="icon">
 					<image class="img" src="@/assets/img/riLine-pie-chart-line.svg" mode=""></image>
 				</view>
@@ -57,7 +57,7 @@
 				</view>
 			</view>
 			
-			<view class="function-item">
+			<view class="function-item" v-if="false">
 				<view class="icon">
 					<image class="img" src="@/assets/img/riLine-book-2-line.svg" mode=""></image>
 				</view>
@@ -69,6 +69,18 @@
 				</view>
 			</view>
 			
+			<view class="function-item" >
+				<view class="icon">
+					<image class="img" src="@/assets/img/iconPark-order2.svg" mode=""></image>
+				</view>
+				<view class="name">
+					发票管理
+				</view>
+				<view class="arrow">
+					<u-icon name="arrow-right" color="#b2b2b2"></u-icon>
+				</view>
+			</view>
+			
 			<view class="function-item">
 				<view class="icon">
 					<image class="img" src="@/assets/img/riLine-customer-service-2-line.svg" mode=""></image>
@@ -83,7 +95,7 @@
 			
 		</view>
 		
-		<view class="function-group">
+		<view class="function-group" v-if="false">
 			<view class="function-item">
 				<view class="icon">
 					<image class="img" src="@/assets/img/riLine-user-settings-line.svg" mode=""></image>
@@ -96,17 +108,30 @@
 				</view>
 			</view>
 			
-			
-			
-			
-			
+		</view>
+		
+		<view class="function-group" >
+			<view class="function-item">
+				<view class="icon">
+					<image class="img" src="@/assets/img/riLine-settings-2-line.svg" mode=""></image>
+				</view>
+				<view class="name">
+					设置
+				</view>
+				<view class="arrow">
+					<u-icon name="arrow-right" color="#b2b2b2"></u-icon>
+				</view>
+			</view>
 			
 		</view>
+		
 		<Tabbar :current="2" ></Tabbar>
 	</view>
 </template>
 
 <script>
+	import * as API from '@/apis/pagejs/hall/index.js'
+	
 	import Tabbar from '@/components/Tabbar.vue'
 	export default {
 		components: {
@@ -117,8 +142,26 @@
 				
 			}
 		},
+		onLoad() {
+			this.homePage()
+		},
 		methods: {
-			
+			homePage(){
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				
+				API.homePage({
+					
+				}).then((response) => {
+					uni.hideLoading();
+					this.companyInfo=response.companyInfo;
+				}).catch(error => {
+					uni.hideLoading();
+					
+				})
+			}
 		}
 	}
 </script>

+ 5 - 4
pages/businessHall/recharge/rechargeRecord.vue

@@ -97,12 +97,13 @@
 		},
 		methods:{
 			selector2confirm(e){
-				console.log(e)
-				this.tabsFrom.show2Text=e.year+"-"+e.month
+				this.tabsFrom.show2Text=e.year+"年"+e.month+"月"
+				
+				this.tabsFrom.show2Index=e.year+"-"+e.month
 				if(e.day){
-					this.tabsFrom.show2Text+='-'+e.day
+					this.tabsFrom.show2Text+=e.day+"日"
+					this.tabsFrom.show2Index+='-'+e.day	
 				}
-				this.tabsFrom.show2Index=this.tabsFrom.show2Text
 			},
 			selector2reset(e){
 				console.log(e)

+ 178 - 0
pages/energyCenter/login/login.vue

@@ -0,0 +1,178 @@
+<template >
+	<view>
+		<view class="logo">
+			<image class="img" src="@/assets/img/logo.png" mode=""></image>
+			
+		</view>
+		<view  class="logoText">
+			荆鹏电管家
+		</view>
+		<!-- 手机号/密码 -->
+		<view class="input-box">
+			
+			<u-input  v-model="phone"  style="padding: 0 20px" class="tel-input" type="text"  placeholder="请输入手机号码" />
+		
+			<u-input  v-model="password" style="padding: 0 20px" class="password-input" type="password"  placeholder="请输入密码" :password-icon="true" />
+
+		</view>
+		
+		 <button class="login-disable" :class="{
+			 login:password.length&&phone.length
+		 }" @click="submit" >登录</button>
+		 
+		 <view class="reset" @click="gotoUrl('')">
+		 	忘记密码? <span style="color:#387aea ;">点击找回</span>
+		 </view>
+	</view>
+</template>
+
+<script>
+	import * as API from '@/apis/pagejs/e_user.js'
+	import {
+		checkPhone
+	} from '@/apis/utils'
+	export default {
+		data() {
+			return {
+				phone:"",
+				password:"",
+			}
+		},
+		methods: {
+			loginset(response){
+				var token = response ? response.data.token : '';
+				this.carhelp.setToken(token);
+				this.carhelp.setPersonInfo(response.data.regUser);
+				this.carhelp.setPersonInfoPlus(response.data)
+				//this.gotoUrl("pages/user/index")
+				uni.redirectTo({
+					url: '/'
+				})
+			},
+			query(){
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				
+				API.findByOpenId({
+					noerror:true,
+					openId: this.carhelp.getOpenId(),
+					
+				}).then((response) => {
+					this.loginset(response)
+					
+				
+				}).catch(error => {
+					uni.hideLoading();
+					
+				})
+			},
+			submit(){
+				if(!(this.phone.length&&this.password.length)){
+					return
+				}
+				var checkPhoneResult = checkPhone(this.phone);
+					
+				if (checkPhoneResult !== true) {
+					uni.showToast({
+						icon: "none",
+						title: checkPhoneResult,
+						
+					})
+					return;
+				}
+				
+				if(!this.password.length){
+					uni.showToast({
+						icon: "none",
+						title: "请输入密码"
+					})
+					return
+				}
+				
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				
+				API.login({
+					password:this.password,
+					phone:this.phone,
+					openId: this.carhelp.getOpenId(),
+					
+				}).then((response) => {
+					
+					//this.loginset(response)
+					
+				
+				}).catch(error => {
+					uni.hideLoading();
+					
+				})
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page{
+		background-color: #fff;
+		padding-top: 160rpx;
+	}
+	.logoText{
+		width: 160rpx;
+		margin: 0 auto;
+		line-height: 46rpx;
+		color: rgba(16,16,16,1);
+		font-size: 32rpx;
+		margin-top: 20rpx;
+	}
+	.logo{
+		margin: 0 auto;
+		width: 160rpx;
+		height: 160rpx;
+		border-radius: 16px;
+		background: linear-gradient(180deg, rgba(31,85,255,1) 0%,rgba(39,171,255,1) 100%);
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		.img{
+			
+			width: 112rpx;
+			height: 112rpx;
+		}
+	}
+
+.input-box{
+	padding: 0 58rpx;
+	margin-top: 112rpx;
+	.tel-input,.password-input{
+		 display: flex;align-items: center;
+		border-radius: 50px;
+		background-color: rgba(248,248,248,1);
+		color: rgba(16,16,16,1);
+		height: 100rpx;
+		line-height: 100rpx;
+		padding: 0 48rpx;
+		margin-bottom: 40rpx;
+	}
+	
+}
+
+.login-disable{
+	margin: 80rpx 56rpx 40rpx;
+	border-radius: 100rpx;
+	background-color: rgba(223,223,223,1);
+	color: rgba(255, 255, 255, 1);
+}
+.login{
+	background-color: rgba(27,119,251,1);
+}
+
+.reset{
+	color: rgba(119,119,119,1);
+	text-align: center;
+}
+</style>