Selaa lähdekoodia

多租户,待测试

zouling 2 kuukautta sitten
vanhempi
commit
7e81e8bb32

+ 76 - 15
user_ui/api/login.js

@@ -1,15 +1,19 @@
 import request from '@/utils/request'
 
 // 登录方法
-export function login(username, password, code, uuid) {
+export function login(username, password, code, uuid,tenantId,clientId,grantType,phonenumber,smsCode) {
   const data = {
     username,
     password,
     code,
-    uuid
+    uuid,
+	tenantId,
+	clientId,
+	grantType,
+	phonenumber,smsCode
   }
-  return request({
-    'url': '/login',
+  return request({//
+    'url': '/auth/login',
     headers: {
       isToken: false
     },
@@ -17,11 +21,62 @@ export function login(username, password, code, uuid) {
     'data': data
   })
 }
-
+// 解码接口
+export function getweChatOpenid(data) {
+  return request({
+    'url': '/weChatOpenid',
+    'method': 'post',
+	'data':data
+  })
+}
+// 微信登录
+export function getweChatLogin(data) {
+  return request({
+    'url': '/auth/weChatLogin',
+    'method': 'post',
+	'data':data
+  })
+}
+// 获取用户详细信息
+export function getInfo() {//
+  return request({
+    'url': '/system/user/getInfo',
+    'method': 'get'
+  })
+}
+// 获取用户详细信息
+export function gettenantList() {
+  return request({
+    'url': '/auth/tenant/list',
+    'method': 'get'
+  })
+}
+// 获取用户租户列表
+export function gettenantUserName() {
+  return request({
+    'url': '/system/tenant/userName/list',
+    'method': 'get'
+  })
+}
+// 切换租户
+export function gettenantCheck(data) {
+  return request({
+    'url': '/auth/dynamic/loginBody',
+    'method': 'post',
+	'data':data
+  })
+}
+// 切换租户
+// export function gettenantCheck(data) {
+//   return request({
+//     'url': '/system/tenant/dynamic/'+data,
+//     'method': 'get',
+//   })
+// }
 // 注册方法
 export function register(data) {
   return request({
-    url: '/register',
+    url: '/auth/register',
     headers: {
       isToken: false
     },
@@ -44,26 +99,32 @@ export function sendSmszcOnly(data) {
 	data:data
   })
 }
-// 获取用户详细信息
-export function getInfo() {
+
+export function sendSmsCode(data) {
   return request({
-    'url': '/getInfo',
-    'method': 'get'
+    'url': '/wuYe/resource/sms/code',
+    'method': 'get',
+	data:data
+  })
+}
+export function getRoleNopage(data) {
+  return request({
+    'url': '/system/role/listNoPage',
+    'method': 'get',
+	data:data
   })
 }
-
 // 退出方法
 export function logout() {
   return request({
-    'url': '/logout',
+    'url': '/auth/logout',
     'method': 'post'
   })
 }
-
-// 获取验证码
+// 获取验证码 
 export function getCodeImg() {
   return request({
-    'url': '/captchaImage',
+    'url': '/auth/code',
     headers: {
       isToken: false
     },

+ 5 - 6
user_ui/api/system/user.js

@@ -8,9 +8,9 @@ export function updateUserPwd(oldPassword, newPassword) {
     newPassword
   }
   return request({
-    url: '/system/user/profile/updatePwd?oldPassword='+oldPassword+'&newPassword='+newPassword,
-    method: 'post',
-  })
+      url: '/system/user/profile/updatePwd?oldPassword='+oldPassword+'&newPassword='+newPassword,
+      method: 'post',
+    })
 }
 // 忘记密码发送短信
 export function getappForgetPW(data) {
@@ -22,7 +22,7 @@ export function getappForgetPW(data) {
 // 重置密码
 export function getappCheck(data) {
   return request({
-    url: '/wuYe/applet/appCheck',
+    url: '/system/user/profile/appCheck',
     method: 'get',
 	'data':data
   })
@@ -68,5 +68,4 @@ export function getDictionaryFn(data) {
     method: 'get',
 	type:true
   })
-}
-
+}

+ 3 - 0
user_ui/config.js

@@ -9,6 +9,9 @@ module.exports = {
   // baseUrl: 'http://10.90.90.53:8065',
   // baseUrlimg: 'http://114.99.127.243:2001',
   baseName:'智慧社区用户端',
+  Clientid:'428a8310cd442757ae699df5d894f051',//
+  grantType:'password',//
+  userType:'app_user',//app_user:用户端,app_staff:物管端
   // 应用信息
   appInfo: {
     // 应用名称

+ 7 - 3
user_ui/mine/pages/pwd/forgetpwd.vue

@@ -16,8 +16,8 @@
 </template>
 
 <script>
-  import { getappForgetPW } from "@/api/system/user"
-
+  // import { getappForgetPW } from "@/api/system/user"
+import {sendSmsCode} from "@/api/login.js"
   export default {
     data() {
       return {
@@ -43,7 +43,11 @@
 				that.$toast("请输入正确的手机号")
 				return
 			}
-			getappForgetPW(this.phonenumber).then(res=>{
+			var params={
+				phonenumber:this.phonenumber,
+				type:3,//1:登录 2:注册 3:修改密码
+			}
+			sendSmsCode(params).then(res=>{
 				if (res.code == 200) {
 					// 发送验证码
 					that.$toast("发送成功")

+ 25 - 21
user_ui/mine/pages/register.vue

@@ -16,7 +16,7 @@
 		  	  		<view class="login_tit">账号</view>
 		  	  		<view class="login_box">
 		  	  			<!-- <view class="login_boxl">+86</view> -->
-		  	  			 <input  v-model="datainfo.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
+		  	  			 <input  v-model="datainfo.phonenumber" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
 		  	  		</view>
 		  	  	</view>
 				<view  class="input-item">
@@ -27,13 +27,13 @@
 						 <view v-else class="codess" @click="getsendCode">发送验证码</view>
 					 </view>
 				</view>
-		  	  	<view class="input-item" >
+		  	  	<!-- <view class="input-item" >
 		  	  		<view class="login_tit">密码</view>
 		  	  		 <view class="login_box">
 		  	  			 <uni-easyinput :inputBorder="false" type="password" v-model="datainfo.password" placeholder="请输入密码" />
 		  	  		 </view>
 		  	  	</view>
-				<view class="titico">*密码必须包含数字、大小写字母、特殊符号且大于8位</view>
+				<view class="titico">*密码必须包含数字、大小写字母、特殊符号且大于8位</view> -->
 		  	  	<!-- <view class="input-item flex align-center" style="width: 60%;margin: 0px;margin-bottom: 24rpx;" v-if="captchaEnabled">
 		  	  	  <input v-model="tucode" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
 		  	  	  <view class="login-code"> 
@@ -41,8 +41,8 @@
 		  	  	  </view  >
 		  	  	</view> -->
 		  	  	
-		  	    <button v-if="captchaEnabled"  type="primary" class=" rbtn " :class="tucode&&datainfo.username&&datainfo.password?'btn2':'btn'"  @click="getRegisterFn">注册</button>
-		  	    <button v-else type="primary" class=" rbtn" :class="datainfo.username&&datainfo.password?'btn2':'btn'"   @click="getRegisterFn">注册</button>
+		  	    <button v-if="captchaEnabled"  type="primary" class=" rbtn " :class="tucode&&datainfo.phonenumber?'btn2':'btn'"  @click="getRegisterFn">注册</button>
+		  	    <button v-else type="primary" class=" rbtn" :class="datainfo.phonenumber?'btn2':'btn'"   @click="getRegisterFn">注册</button>
 		  	  </view>
 		  	  
 		  	  <!-- 账号密码登录 -->
@@ -62,12 +62,14 @@
 </template>
 
 <script>
-	import {getRegisterFn,sendSmszcOnly} from "@/api/login.js"
+	import {register,sendSmsCode} from "@/api/login.js"
 	import { getToken } from '@/utils/auth'
+	import config from '@/config'
   export default {
 	  components:{
 		  
 	  },
+	  //5243
 	data(){
 		return{
 			lbg:require('@/static/images/mine/lbg.png'),
@@ -84,9 +86,12 @@
 			time:'',
 			timefalg:'',
 			datainfo: {
-				username: "",
+				phonenumber: "",
 				code: "",
-				password:'',
+				tenantId:'000000',
+				clientId:config.Clientid,
+				grantType:'sms',
+				userType:config.userType
 			},
 			timer:""
 		}
@@ -94,7 +99,7 @@
 	
 	methods:{
 		getlogin(){
-			this.$tab.redirectTo(`/mine/pages/tlogin`)
+			this.$tab.redirectTo(`/mine/pages/tlogin?type=1`)
 		},
 		handlePrivacy(){
 			this.$tab.navigateTo(`/pages/agreement`)  
@@ -102,23 +107,22 @@
 		// 获取短信验证码
 		getsendCode(){
 			var that=this;
-			if (!this.datainfo.username ) {
+			if (!this.datainfo.phonenumber ) {
 				that.$toast("请输入手机号")
 				return
 			}
 			let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
 			// 座机号
 			let reg1=/^(0\d{2,3})-?(\d{7,8})$/
-			if (this.datainfo.username && !regphone.test(this.datainfo.username)) {
+			if (this.datainfo.phonenumber && !regphone.test(this.datainfo.phonenumber)) {
 				that.$toast("请输入正确的手机号")
 				return
 			}
 			var params={
-				'username':this.datainfo.username
+				'phonenumber':this.datainfo.phonenumber,
+				'type':'2',//1:登录 2:注册 3:修改密码
 			}
-				// getSMS();
-				// return
-			sendSmszcOnly(params).then(res=>{
+			sendSmsCode(params).then(res=>{
 				if (res.code == 200) {
 					// 发送验证码
 					that.$toast("发送成功")
@@ -160,12 +164,12 @@
 						this.$toast('请输入正确的手机号')
 						return
 					}
-					if(!params.password){
-						this.$toast("请输入密码")
-						return
-					}
-					params.userName=params.phonenumber;
-					getRegisterFn(params).then(res=>{
+					// if(!params.password){
+					// 	this.$toast("请输入密码")
+					// 	return
+					// }
+					params.code=this.duancode;
+					register(params).then(res=>{
 						if(res.code==200){
 							that.$toast("注册成功")
 							setTimeout(function(){

+ 134 - 49
user_ui/mine/pages/tlogin.vue

@@ -7,7 +7,7 @@
 		  <view class="head">
 		  	<view class="htit">你好,</view>
 		  	<view class="htit">欢迎登录智慧社区平台</view>
-		  	<!-- <view class="htxt" @click="getregister">还没有账号?<text>立即注册</text></view> -->
+		  	<view class="htxt" @click="getregister">还没有账号?<text>立即注册</text></view>
 		  </view>
 		    <view class="flex1" style="position: relative;">
 		  
@@ -19,16 +19,17 @@
 		  		 
 		  	  </view> -->
 		  	  <!-- 手机号登录 -->
-		  	  <view class="login-form-content" v-if="tabidx!=1">
+		  	  <view class="login-form-content">
 		  
-		  	  	<view class="input-item">
-		  	  		<view class="login_tit">账号</view>
-		  	  		<view class="login_box">
-		  	  			<!-- <view class="login_boxl">+86</view> -->
-		  	  			 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
-		  	  		</view>
-		  	  	</view>
-		  	  	<block v-if="tabidx==2">
+		  	  	
+		  	  	<block v-if="tabidx==1">
+					<view class="input-item">
+						<view class="login_tit">账号</view>
+						<view class="login_box">
+							<!-- <view class="login_boxl">+86</view> -->
+							 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
+						</view>
+					</view>
 		  	  		<view class="input-item" >
 		  				<view class="flexcj">
 		  					<view class="login_tit">密码</view>
@@ -53,25 +54,34 @@
 		  	  		    <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
 		  	  		  </view  >
 		  	  		</view>
-		  	  		 
+					<button v-if="captchaEnabled"  type="primary" class=" rbtn" :class="tucode&&loginForm.username&&loginForm.password?'btn2':'btn'"  @click="getLogin">登录</button>
+					<button v-else type="primary" class=" rbtn " :class="loginForm.username&&loginForm.password?'btn2':'btn'"   @click="getLogin">登录</button>
 		  	  	</block>
-		  	  	<!-- <view v-if="tabidx==0" class="input-item" style="margin-bottom: 24rpx;" >
-		  	  		<view class="login_tit">验证码</view>
-		  	  		 <view style="display: flex;align-items: center;">
-		  	  			 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
-		  	  			 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
-		  	  			 <view v-else class="codess" @click="getsendCode">发送验证码</view>
-		  	  		 </view>
-		  	  	</view> -->
-		  	    <button v-if="captchaEnabled"  type="primary" class=" rbtn" :class="tucode&&loginForm.username&&loginForm.password?'btn2':'btn'"  @click="getLogin">登录</button>
-		  	    <button v-else type="primary" class=" rbtn " :class="loginForm.username&&loginForm.password?'btn2':'btn'"   @click="getLogin">登录</button>
+				<block v-if="tabidx==2">
+					<view class="input-item">
+						<view class="login_tit">手机号码</view>
+						<view class="login_box">
+							<!-- <view class="login_boxl">+86</view> -->
+							 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入手机号码" maxlength="30" />
+						</view>
+					</view>
+					<view  class="input-item" style="margin-bottom: 24rpx;" >
+						<view class="login_tit">验证码</view>
+						 <view style="display: flex;align-items: center;">
+							 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
+							 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
+							 <view v-else class="codess" @click="getsendCode">发送验证码</view>
+						 </view>
+					</view>
+					<button  type="primary" class=" rbtn mb24 mt50" :class="loginForm.username&&duancode?'btn2':'btn'"   @click="getLogin">登录</button>
+				</block>
 		  	  </view>
 		  	  <!-- 微信登录 -->
-		  	  <block v-if="tabidx==1">
+		  	 <!-- <block v-if="tabidx==1">
 		  		  <button  type="primary" class="rbtn" open-type="getUserInfo" @getuserinfo="getuserinfo" >
 		  		  	<text class="btn-txt">快捷登录</text>
 		  		  </button>
-		  	  </block>
+		  	  </block> -->
 		  	  
 		  	  
 		  	  <!-- 账号密码登录 -->
@@ -93,10 +103,11 @@
 
 <script>
 	import * as base64 from "base-64"
-	import {getweChatLogin,getInfo,getweChatOpenid,getCodeImg,getCode,sendSmsOnly} from "@/api/login.js"
+	import {getweChatLogin,getInfo,getweChatOpenid,getCodeImg,getCode,sendSmsCode} from "@/api/login.js"
 	import {getUserProfile} from "@/api/system/user.js"
 	import { getToken } from '@/utils/auth'
 	import phoneBtn from "@/components/toptab/phonebtn.vue"
+	import config from '@/config'
   export default {
 	  components:{
 		  phoneBtn
@@ -121,13 +132,15 @@
 			codeUrl:'',
 			time:'',
 			timefalg:'',
-			tabidx:2,
-			tablist:[{tit:'微信登录',val:1},{tit:'密码登录',val:2},],
+			tabidx:1,
+			tablist:[{tit:'密码登录',val:1},{tit:'验证码登录',val:2},],
 			loginForm: {
 				username: "",
 				code: "",
 				password:'',
+				clientId:config.Clientid,
 			},
+			//sms
 			voList:[],
 			voindex:0,
 			jzflag:false
@@ -142,23 +155,49 @@
 		// 获取图形验证码
 		getCode() {
 		  getCodeImg().then(res => {
-		    this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
-		    if (this.captchaEnabled) {
-		      this.codeUrl = 'data:image/gif;base64,' + res.img
-		      this.loginForm.uuid = res.uuid
-		    }
+			  // 租户
+			this.captchaEnabled = res.data.captchaEnabled === undefined ? true : res.data.captchaEnabled
+			if (this.captchaEnabled) {
+			  this.codeUrl = 'data:image/gif;base64,' + res.data.img
+			  this.loginForm.uuid = res.data.uuid
+			}
+			// 单个
+			// this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
+			// if (this.captchaEnabled) {
+			//   this.codeUrl = 'data:image/gif;base64,' + res.img
+			//   this.loginForm.uuid = res.uuid
+			// }
 		  })
 		},
 		getForget(){
-			this.$tab.navigateTo(`/pages/mine/pwd/forgetpwd`)
+			this.$tab.navigateTo(`/mine/pages/pwd/forgetpwd`)
 		},
 		 getregister(){
 			 this.$tab.redirectTo(`/mine/pages/register`)
 		 },
 		 getLogin(){
-			 if(!this.loginForm.username||!this.loginForm.password||(!this.tucode&& this.captchaEnabled)){
-			 	 return
-			 }
+			if(this.tabidx==1){
+				if(!this.loginForm.username||!this.loginForm.password||(!this.tucode&& this.captchaEnabled)){
+					return
+				}
+				this.loginForm.code=this.tucode;
+				this.loginForm.grantType='password';
+			}else{
+				let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+				// 座机号
+				if (this.loginForm.username && !regphone.test(this.loginForm.username)) {
+					this.$toast("请输入正确的手机号")
+					return
+				}
+				if(!this.loginForm.username||!this.duancode){
+					 return
+				}
+				this.loginForm.password='';
+				this.loginForm.code=this.duancode;
+				this.loginForm.grantType='sms';
+				// this.loginForm.type=
+			}
+			 
 			// let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
 			// if(!regphone.test(this.loginForm.username)){
 			// 	this.$toast('请输入正确的手机号')
@@ -168,13 +207,14 @@
 			 // 	this.$toast("请同意用户协议")
 			 // 	return
 			 // }
-			 this.loginForm.code=this.tucode;
+			 console.log(this.loginForm)
 			 this.pwdLogin()
 		 },
 		 // 密码登录
 		 async pwdLogin() {
 		 	var that=this;
-			
+			console.log(this.loginForm)
+			// return
 		   this.$store.dispatch('Login', this.loginForm).then((res) => {
 			   // 判断是否记住密码
 			  if(that.jzflag){
@@ -195,7 +235,7 @@
 		     
 		   }).catch((error) => {
 		    setTimeout(function(){
-		 		if (that.captchaEnabled&&that.tabidx==2) {
+		 		if (that.captchaEnabled&&that.tabidx==1) {
 		 			that.getCode()
 				}
 		 	},1000)
@@ -209,6 +249,49 @@
 		 },
 		 btns() {
 		 	
+		 },
+		 // 获取短信验证码
+		 getsendCode(){
+		 	var that=this;
+		 	if (!this.loginForm.username ) {
+		 		that.$toast("请输入手机号")
+		 		return
+		 	}
+		 	let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+		 	// 座机号
+		 	let reg1=/^(0\d{2,3})-?(\d{7,8})$/
+		 	if (this.loginForm.username && !regphone.test(this.loginForm.username)) {
+		 		that.$toast("请输入正确的手机号")
+		 		return
+		 	}
+		 	var params={
+		 		phonenumber:this.loginForm.username,
+				type:1,//1:登录 2:注册 3:修改密码
+		 	}
+		 	sendSmsCode(params).then(res=>{
+		 		if (res.code == 200) {
+		 			// 发送验证码
+		 			that.$toast("发送成功")
+		 			that.time=60;
+		 			that.timefalg=true;
+		 			that.setTimein()
+		 		} else {
+		 			that.$toast(res.msg)
+		 		}
+		 	})
+		 },
+		 // 验证码倒计时
+		 setTimein(){
+		 	var that=this;
+		 	clearInterval(that.timer)
+		 	that.timer=setInterval(()=>{
+		 		if(that.time<=1){
+		 			that.timefalg=false;
+		 			that.time=60;
+		 			clearInterval(that.timer)
+		 		}
+		 		that.time=that.time-1;
+		 	},1000)
 		 },
 		 getPhoneNumber(data){
 			 var that=this;
@@ -264,7 +347,8 @@
 		 },
 	},
 	
-	onLoad: function() {
+	onLoad: function(e) {
+		this.tabidx=e.type;
 		this.getCode()
 		if (getToken()) {
 			this.$tab.reLaunch('/pages/index/index') 
@@ -277,13 +361,14 @@
 			// }else{
 			// 	this.checkflag=false
 			// }
-		  if(uni.getStorageSync('account')){
-		  	var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('account')))
-		  	this.loginForm.username=newObj.username;
-		  	this.loginForm.password=base64.decode(newObj.password);
-		  	this.jzflag=true;
-		  }
-		  
+			if(this.tabidx==1){
+				if(uni.getStorageSync('account')){
+					var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('account')))
+					this.loginForm.username=newObj.username;
+					this.loginForm.password=base64.decode(newObj.password);
+					this.jzflag=true;
+				}
+			}
 		}	
     },
   }
@@ -373,12 +458,12 @@ color: $com-cd3;text-align: center;}
     }
 // .image{width: 30rpx;height: 30rpx;margin-right: 14rpx;}
 .input_ye image{width: 34rpx;height: 18rpx;}
-.codess{font-size: 34rpx;color: $com-cd3;flex: 0 0 auto;min-width: 200rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
-.codes{background: none;font-size: 28rpx;flex: 0 0 auto;width: 180rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
+.codess{font-size: 30rpx;color: $com-cd3;flex: 0 0 auto;min-width: 200rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
+.codes{background: none;font-size: 30rpx;flex: 0 0 auto;width: 180rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
 .login_box{display: flex;align-items: center;}
 .login_boxl{width:130rpx;font-size: 34rpx;color: #343434;border-right: 2rpx solid #CDCDCD;}
 .login_txt{text-align: right;flex: 0 0 auto; padding:0 24rpx;
-	text{font-size: 30rrpx;color:#666666;}
+	text{font-size: 30rpx;color:#666666;}
 }
 .line{width: 2rpx;height: 24rpx;background: #CDCDCD;margin: 0 10rpx;}
 .login_jz{display: flex;align-items: center;justify-content: flex-end;flex: 0 0 auto;

+ 83 - 2
user_ui/pages/index/index.vue

@@ -17,6 +17,21 @@
 				<view class="flexc mb14">
 					<image :src="adraimg" class="adr"></image>
 					<view class="adrtit">智慧<text>社区</text></view>
+					<view>
+						<w-select
+						      style="margin-left: 20rpx;" 
+						     v-model="chooseValue"
+						      :list='voList'
+							  width='200rpx'
+						      valueName='dictLabel' 
+						      keyName="dictValue"
+							  :valuea="tenantId"
+							  :chosevalue="tenantName?tenantName:statusFormats(tenantId,voList,'tenant')"
+							  :filterable='filterable'
+						      @change='getchange'
+						    >
+						    </w-select>
+					</view>
 				</view>
 				<view class="adrtxt flexc mb4">
 					<view class="over">嗨~{{nickName}}!</view><text>业主</text>
@@ -179,13 +194,16 @@ import footers from '@/components/footer/footer.vue'
 import notice from '@/components/swiper/notice.vue'
 import boxList from "@/components/box/list.vue"
 import popUp from "@/components/box/popup.vue"
+import {gettenantUserName,gettenantCheck} from "@/api/login.js"
 import {houseInfoList} from "@/api/work/work.js"
 import {gesettingsList,getCount} from "@/api/work/index.js"
+import {selectValueKey} from "@/utils/common.js"
 import {newsList} from "@/api/work/manage.js"
 import self from '@/utils/location.js';
+import wSelect from "@/work/components/w-select/w-select.vue"
 import store from "@/store"
   export default {
-	components:{footers,notice,boxList,popUp},
+	components:{footers,notice,boxList,popUp,wSelect},
 	data(){
 		return{
 			footerindex:'home',
@@ -237,7 +255,12 @@ import store from "@/store"
 			phoneList:[],
 			tablist:[{tit:'本地资讯',val:"0"},{tit:'供求资讯',val:"1"},{tit:'热门资讯',val:"2"}],
 			count:'',//统计
-			noticelist:[]
+			noticelist:[],
+			chooseValue:'',
+			tenantId:'',
+			tenantName:'',
+			voList:[],
+			filterable:true,
 		}
 	},
 	onPageScroll(e) {
@@ -258,6 +281,7 @@ import store from "@/store"
 				this.nvaHeight = Number(e.statusBarHeight)+44;
 			}
 		})
+		this.gettenantList()
 		// 获取房子
 		this.getDataFn()
 		this.gesettingsList()
@@ -274,6 +298,63 @@ import store from "@/store"
 		// #endif
     },
 	methods:{
+		statusFormats(data, list,type) {
+			var aite=selectValueKey(list, data);
+			if(type=='tenant'){
+				this.tenantName=aite.actions
+			}
+			return aite.actions;
+		},
+		// 获取租户列表
+		gettenantList(){
+			 var params={
+				 userId:this.userId
+			 }
+			gettenantUserName().then(res=>{
+				if(res.code==200){
+					if(res.data&&res.data.length){
+						this.voList = res.data.map(v => {
+							return {
+								dictLabel: v.companyName,
+								dictValue: v.tenantId
+							}
+						})
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getchange(e){
+			var id=e.dictValue;
+			var name=e.dictLabel;
+			var that=this;
+			this.tenantId=id;
+			this.tenantName=name;
+			var params={
+				tenantId:id,
+				clientId:Clientid,
+				grantType:'password'
+			}
+			gettenantCheck(params).then(res=>{
+				var token=res.msg;
+				// 切换token
+				this.$store.dispatch('checkToken', token).then(() => {
+					this.$store.dispatch('GetInfo').then(res => {
+						
+					})
+				}).catch(() => {
+					 
+				})	
+			})
+		},
+		getXxwsFn(){
+			var type='rz'
+			// this.$tab.navigateTo(`/people/pages/people/staffadd?type=${type}`) 
+		},
+		getClose(){
+			this.initFace='N';
+		},
 		getDataFn(){
 			var params={
 				userId:this.userId,

+ 10 - 5
user_ui/pages/login.vue

@@ -11,13 +11,16 @@
 				<text class="btn-txt">微信一键登录</text>
 			</button>
 			<!-- #endif -->
-			
-			<button type="primary" class=" rbtn" @click="getlogin">
+			<button type="primary" class=" rbtn" @click="getlogin(1)">
 				<image :src="zhtab" class="zhtab"></image>
 				<text class="btn-txt">账号密码登录</text>
 			</button>
+			<button type="primary" class=" rbtn" @click="getlogin(2)">
+				<image :src="yzmtab" class="yzmtab"></image>
+				<text class="btn-txt">短信验证码登录 </text>
+			</button>
 			<view class="line"></view>
-			<!-- <view class="rbtn btna" @click="getregister">还没账号?去注册</view> -->
+			<view class="rbtn btna" @click="getregister">还没账号?去注册</view>
 		</view>
 
 		
@@ -42,6 +45,7 @@
 				fbg: require('@/static/images/mine/fbg.png'),
 				vxtab: require('@/static/images/mine/vxtab.png'),
 				zhtab: require('@/static/images/mine/zhtab.png'),
+				yzmtab: require('@/static/images/mine/yzmtab.png'),
 				fbg: require('@/static/images/mine/fbg.png'),
 				headimg: require('@/static/logo.png'),
 				typeflag: false,
@@ -58,8 +62,8 @@
 			handlePrivacy() {
 				this.$tab.navigateTo(`/pages/agreement`)
 			},
-			getlogin(){
-				this.$tab.navigateTo(`/mine/pages/tlogin`)
+			getlogin(e){
+				this.$tab.navigateTo(`/mine/pages/tlogin?type=${e}`)
 			},
 			getregister(){
 				this.$tab.navigateTo(`/mine/pages/register`)
@@ -148,6 +152,7 @@
 border-radius: 10rpx;
 	.vxtab{width: 38rpx;height: 32rpx;margin-right: 18rpx;}
 	.zhtab{width: 30rpx;height: 34rpx;margin-right: 22rpx;}
+	.yzmtab{width: 30rpx;height: 25rpx;margin-right: 22rpx;}
 	&.btna{background: #D9E6FF;color: #0156FE;}
 }
 .line{width: 60rpx;height: 6rpx;background: #CDCDCD;margin: 0 auto 60rpx;}

BIN
user_ui/static/images/mine/yzmtab.png


+ 5 - 1
user_ui/store/getters.js

@@ -4,12 +4,16 @@ const getters = {
   name: state => state.user.name,
   nickName: state => state.user.nickName,
   roles: state => state.user.roles,
+  roleName:state => state.user.roleName,
   permissions: state => state.user.permissions,
   wgtcode:state => state.user.wgtcode,
   autologin:state => state.user.autologin,
   userId:state=>state.user.userId,
   phonenumber: state => state.user.phonenumber,
-  house: state => state.user.house,
+  deptName: state => state.user.deptName,
+  deptId: state => state.user.deptId,
   loading: state => state.user.loading,
+  tenantId: state => state.user.tenantId,
+  initFace: state => state.user.initFace,
 }
 export default getters

+ 78 - 15
user_ui/store/modules/user.js

@@ -5,21 +5,27 @@ import { login, logout, getInfo } from '@/api/login'
 import { getToken, setToken, removeToken } from '@/utils/auth'
 
 const baseUrl = config.baseUrl
+const Clientid = config.Clientid
+const grantType = config.grantType
 
 const user = {
   state: {
     token: getToken(),
     name: storage.get(constant.name),
-    nickName: storage.get(constant.nickName),
+	nickName: storage.get(constant.nickName),
     avatar: storage.get(constant.avatar),
     roles: storage.get(constant.roles),
+    roleName: storage.get(constant.roleName),
     permissions: storage.get(constant.permissions),
 	wgtcode:storage.get(constant.wgtcode),
 	autologin:storage.get(constant.autologin),
 	userId: storage.get(constant.userId),
 	phonenumber: storage.get(constant.phonenumber),
-	house: storage.get(constant.house),
+	deptId: storage.get(constant.deptId),
+	deptName: storage.get(constant.deptName),
 	loading: false,
+	tenantId:storage.get(constant.tenantId),
+	initFace: storage.get(constant.initFace),
   },
 
   mutations: {
@@ -32,6 +38,10 @@ const user = {
 		} */
 		state.loading = tf;
 	},
+	SET_TENANID: (state, tenantId) => {
+	  state.tenantId = tenantId
+	  storage.set(constant.tenantId, tenantId)
+	},
     SET_TOKEN: (state, token) => {
       state.token = token
     },
@@ -43,6 +53,14 @@ const user = {
 	  state.nickName = nickName
 	  storage.set(constant.nickName, nickName)
 	},
+	SET_DEPTID: (state, deptId) => {
+	  state.deptId = deptId
+	  storage.set(constant.deptId, deptId)
+	},
+	SET_DEPNAME: (state, deptName) => {
+	  state.deptName = deptName
+	  storage.set(constant.deptName, deptName)
+	},
     SET_AVATAR: (state, avatar) => {
       state.avatar = avatar
       storage.set(constant.avatar, avatar)
@@ -51,6 +69,10 @@ const user = {
       state.roles = roles
       storage.set(constant.roles, roles)
     },
+	SET_ROLESNAME: (state, roleName) => {
+	  state.roleName = roleName
+	  storage.set(constant.roleName, roleName)
+	},
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
       storage.set(constant.permissions, permissions)
@@ -71,9 +93,9 @@ const user = {
 	  state.phonenumber = phonenumber
 	  storage.set(constant.phonenumber, phonenumber)
 	},
-	SET_HOUSE: (state, house) => {
-	  state.house = house
-	  storage.set(constant.house, house)
+	SET_INITFACE: (state, initFace) => {
+	  state.initFace = initFace
+	  storage.set(constant.initFace, initFace)
 	},
   },
 
@@ -82,6 +104,15 @@ const user = {
 	SetwgtFn({ commit}, code ){
 		commit('SET_WGTCODE',code)
 	},
+	//修改认证状态
+	checkInitFace({commit},data){
+		commit('SET_INITFACE', data)
+	},
+	//修改token
+	checkToken({commit},data){
+		setToken(data)
+		commit('SET_TOKEN', data)
+	},
     // 登录
     Login({ commit }, userInfo) {
       const username = userInfo.username.trim()
@@ -89,10 +120,18 @@ const user = {
       const code = userInfo.code
       const uuid = userInfo.uuid
 	  const strfrom = userInfo.strfrom||""
+	  // const tenantId = '000000'
+	  const tenantId = ''
+	  const clientId = Clientid
+	  const grantType = userInfo.grantType
+	  const phonenumber=userInfo.username.trim()
+	  const smsCode=userInfo.code
       return new Promise((resolve, reject) => {
-        login(username, password, code, uuid).then(res => {
-          setToken(res.token)
-          commit('SET_TOKEN', res.token)
+        login(username, password, code, uuid,tenantId,clientId,grantType,phonenumber,smsCode).then(res => {
+          setToken(res.data.access_token)
+          commit('SET_TOKEN', res.data.access_token)
+		  // setToken(res.token)
+		  // commit('SET_TOKEN', res.token)
 			commit('SET_AUTOLOGIN',true)
           resolve()
         }).catch(error => {
@@ -108,6 +147,7 @@ const user = {
 				    if (res.confirm) {
 						commit('SET_TOKEN', '')
 						commit('SET_ROLES', [])
+						commit('SET_ROLESNAME', [])
 						commit('SET_PERMISSIONS', [])
 						removeToken()
 						storage.clean()
@@ -123,28 +163,51 @@ const user = {
       })
     },
 
-    // 获取用户信息require("@/static/images/mine/profile.png")
+    // 获取用户信息require("@/static/images/profile.jpg")
     GetInfo({ commit, state }) {
       return new Promise((resolve, reject) => {
-        getInfo().then(res => {
+        getInfo().then(resd => {
+          const res = resd.data
+          // const res = resd;
           const user = res.user
-          const avatar = (user == null || user.avatar == "" || user.avatar == null) ? '' : user.avatar
+          const avatar = (user == null || user.avatar == "" || user.avatar == null) ? '' :  user.avatar
           const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
-          const nickName = (user == null || user.nickName == "" || user.nickName == null) ? "" : user.nickName
+		  const nickName = (user == null || user.nickName == "" || user.nickName == null) ? "" : user.nickName
 		  const userId = (user == null || user.userId == "" || user.userId == null) ? "" : user.userId
+		   const tenantId = (user == null || user.tenantId == "" || user.tenantId == null) ? "" : user.tenantId
 		  const phonenumber = (user == null || user.phonenumber == "" || user.phonenumber == null) ? "" : user.phonenumber
+		   const initFace = (res == null || res.authenticationUser == "" || res.authenticationUser == null) ? "" : res.authenticationUser
+		  const deptId = (user == null || user.deptId == "" || user.deptId == null) ? "" : user.deptId
+		  const deptName = (user == null || user.dept == "" || user.dept == null||user.dept.deptName==''||user.dept.deptName==null) ? "" : user.dept.deptName
+		   // 根据角色来储存权限
+		   if (res.user.roles && res.user.roles.length > 0) {
+			   var newArr=[]
+		   		newArr = res.user.roles.map(v => {
+		   			return {
+		   				dictValue: v.roleKey,
+						dictLabel:v.roleName,
+		   				// permissions: v.permissions
+		   			}
+		   		})
+		   		commit('SET_ROLESNAME', newArr)	
+		   }
           if (res.roles && res.roles.length > 0) {
             commit('SET_ROLES', res.roles)
-            commit('SET_PERMISSIONS', res.permissions)
+            commit('SET_PERMISSIONS', res.permissions||[])
           } else {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
+			commit('SET_PERMISSIONS', [])
           }
-		  console.log(avatar)
+		  commit('SET_PERMISSIONS', res.permissions||[])
           commit('SET_NAME', username)
-          commit('SET_NICKNAME', nickName)
+		  commit('SET_NICKNAME', nickName)
           commit('SET_AVATAR', avatar)
 		  commit('SET_USERID', userId)
+		  commit('SET_TENANID', tenantId)
 		  commit('SET_PHONENUMBER', phonenumber)
+		  commit('SET_INITFACE', initFace)
+		  commit('SET_DEPTID', deptId)
+		  commit('SET_DEPNAME', deptName)
           resolve(res)
         }).catch(error => {
           reject(error)

+ 15 - 15
user_ui/utils/common.js

@@ -3,7 +3,7 @@ import { getToken } from '@/utils/auth'
 import errorCode from '@/utils/errorCode'
 let timeout = 10000
 const baseUrl = config.baseUrl
-
+const clientid = config.Clientid
 /**
 * 显示消息提示框
 * @param content 提示的标题
@@ -69,17 +69,17 @@ export function selectValueKey(datas, value) {
 	}
 	return newObj
 }
-// export function selectValue(datas, value) {
-// 	var actions = [];
-// 	var idx=0;
-// 	Object.keys(datas).some((key) => {
-// 		if (datas[key].value == ('' + value)) {
-// 			actions.push(datas[key].label);
-// 			return true;
-// 		}
-// 	})
-// 	return actions.join('')
-// }
+export function selectValue(datas, value) {
+	var actions = [];
+	var idx=0;
+	Object.keys(datas).some((key) => {
+		if (datas[key].value == ('' + value)) {
+			actions.push(datas[key].text);
+			return true;
+		}
+	})
+	return actions.join('')
+}
 // export function selectValuetext(datas, value) {
 // 	var actions = [];
 // 	var idx=0;
@@ -91,7 +91,6 @@ export function selectValueKey(datas, value) {
 // 	})
 // 	return actions.join('')
 // }
-
 export function geocodeAddress(address, key) {
   return new Promise((resolve, reject) => {
     // H5 和 App 平台使用高德地图 JavaScript API
@@ -168,6 +167,7 @@ export function uploadIdentify(api, filePaths, successUp, failUp, i, length, fil
 	config.header = config.header || {}
 	if (getToken() && !isToken) {
 	  config.header['Authorization'] = 'Bearer ' + getToken()
+	  config.header['clientid']=clientid;
 	}
 	// get请求映射params参数
 	if (config.params) {
@@ -192,10 +192,9 @@ export function uploadIdentify(api, filePaths, successUp, failUp, i, length, fil
 			let result = JSON.parse(resp.data)
 			const code = result.code || 200
 			const msg = errorCode[code] || result.msg || errorCode['default']
-			// console.log(result.fileName,8)
 			if (result.code == 200) {
 				successUp++;
-				files[i] = result;
+				files[i] = result.data;
 			} else if(result.code==401) {
 				showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then(res => {
 				  if (res.confirm) {
@@ -239,6 +238,7 @@ export function uploadmore(api, filePaths, successUp, failUp, i, length, files,
 	config.header = config.header || {}
 	if (getToken() && !isToken) {
 	  config.header['Authorization'] = 'Bearer ' + getToken()
+	  config.header['clientid']=clientid;
 	}
 	// get请求映射params参数
 	if (config.params) {

+ 5 - 1
user_ui/utils/constant.js

@@ -3,12 +3,16 @@ const constant = {
    name: 'vuex_name',
    nickName: 'vuex_nickName',
    roles: 'vuex_roles',
+   roleName: 'vuex_roleName',
    permissions: 'vuex_permissions',
    autologin:'vuex_autologin',
    wgtcode:'vuex_wgtcode',
    userId: 'vuex_userId',
    phonenumber:'vuex_phonenumber',
-   house:'vuex_house',
+   deptId: 'vuex_deptId',
+   deptName: 'vuex_deptName',
+   initFace:'vuex_initFace',
+   tenantId:'vuex_tenantId',
  }
 
  export default constant

+ 16 - 10
user_ui/utils/request.js

@@ -4,8 +4,10 @@ import config from '@/config'
 import { getToken } from '@/utils/auth'
 import errorCode from '@/utils/errorCode'
 import { toast, showConfirm, tansParams } from '@/utils/common'
+// import vues from '@/main.js'
 let timeout = 60000
 const baseUrl = config.baseUrl
+const Clientid = config.Clientid
 var confirmflag = config.confirmflag
 // 获取账号密码
 var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('account')))
@@ -21,6 +23,7 @@ const request = config => {
   config.header = config.header || {}
   if (getToken() && !isToken) {
     config.header['Authorization'] = 'Bearer ' + getToken()
+	config.header['Clientid'] = Clientid
   }
   // get请求映射params参数
   if (config.params) {
@@ -29,11 +32,12 @@ const request = config => {
     config.url = url
   }
   if(config.lhide){
-  	  uni.showLoading({
-  	  	title:"加载中"
-  	  })
+	  uni.showLoading({
+	  	title:"加载中"
+	  })
   }else{
-  	store.commit("switch_loading",true);
+	// vues.$loading(true)  
+	store.commit("switch_loading",true);
   }
   return new Promise((resolve, reject) => {
     uni.request({
@@ -45,6 +49,7 @@ const request = config => {
         dataType: 'json'
       }).then(response => {
 		uni.hideLoading()
+		// vues.$loading(false)
 		store.commit("switch_loading",false);
         let [error, res] = response
         if (error) {
@@ -55,9 +60,9 @@ const request = config => {
         const code = res.data.code || 200
         const msg = errorCode[code] || res.data.msg || errorCode['default']
         if (code === 401) {
-          uni.showLoading({
-          	title: '加载中'
-          });
+          // uni.showLoading({
+          // 	title: '加载中'
+          // });
           if(confirmflag){
           	// 利用 return 终止函数继续运行
           	return false;
@@ -137,10 +142,11 @@ const request = config => {
         resolve(res.data)
       })
       .catch(error => {
-		if(config.lhide){
-		}else{
+		  if(config.lhide){
+		  }else{
 			store.commit("switch_loading",false);
-		}
+		  	// vues.$loading(false)  
+		  }
 		uni.hideLoading()
         let { message } = error
         if (message === 'Network Error') {

+ 1 - 1
user_ui/utils/storage.js

@@ -4,7 +4,7 @@ import constant from './constant'
 let storageKey = 'storage_data'
 
 // 存储节点变量名
-let storageNodeKeys = [constant.avatar, constant.name,constant.nickName, constant.roles, constant.permissions,constant.autologin,constant.wgtcode,constant.userId,constant.phonenumber,constant.house,]
+let storageNodeKeys = [constant.avatar, constant.name,constant.nickName, constant.roles,constant.roleName,constant.permissions,constant.autologin,constant.wgtcode,constant.userId,constant.phonenumber,constant.deptId,constant.deptName,constant.initFace,constant.tenantId]
 
 const storage = {
   set: function(key, value) {

+ 8 - 3
user_ui/work/components/w-select/w-select.vue

@@ -85,7 +85,7 @@
 				  res => res[keyName] === item[keyName]
 				)
 				? 'item-active'
-				: value == item[keyName]
+				: valuea == item[keyName]
 				  ? 'item-active'
 				  : ''
 			"
@@ -175,6 +175,11 @@
 		default: ''
 	  },
 	  // #endif
+	  // 双向绑定的值
+	  valuea: {
+	  		type: [Array, String, Number],
+	  		default: ''
+	  },
 	  // 默认显示的内容
 	  defaultValue: {
 		type: String,
@@ -221,7 +226,7 @@
   
 			// #ifdef VUE2
 			
-			if (item[this.keyName] === this.value) {
+			if (item[this.keyName] === this.valuea) {
 			  isItem = true
 			} else {
 			  isItem = false
@@ -253,7 +258,7 @@
 		multiSelectList: this.multiple ? this.modelValue : [],
 		// #endif
 		// #ifdef VUE2
-		multiSelectList: this.multiple ? this.value : [],
+		multiSelectList: this.multiple ? this.valuea : [],
 		// #endif
 		isShow: false,
 		optionsShow: false,