Browse Source

增加切换账户功能

master
陈裕财 4 years ago
parent
commit
4b1ae73266
  1. 13
      src/api/login.js
  2. 327
      src/views/myWork/set/UpdateUserInfo.vue
  3. 68
      src/views/myWork/set/index.vue

13
src/api/login.js

@ -156,4 +156,15 @@ export function getTpaState( ) {
method: 'post',
data:{}
})
}
}
/**
* 获取查询当前登录账户的所有关联账户
* @returns
*/
export function queryMyUsers( ) {
return axios({
url: base+'/user/queryMyUsers',
method: 'get'
})
}

327
src/views/myWork/set/UpdateUserInfo.vue

@ -1,327 +0,0 @@
<template>
<section>
<!--工具条1-->
<!--如果有更多工具条,放开此注释
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-col :span="4">
</el-col>
</el-col>
-->
<!--编辑界面 User sys_user-->
<el-row class="padding" v-show="showPanel==='changePassword'" >
<el-form :model="passwordForm" label-width="120px" ref="passwordForm">
<el-form-item label="" prop="headimgurl">
<el-avatar :size="100" :src="editForm.headimgurl"></el-avatar>
</el-form-item>
<el-form-item label="原密码" prop="oldPassword" :rules="[{required:true,message:'原密码不能为空'}]">
<el-input style="width:400px;" type="password" v-model="passwordForm.oldPassword" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="新密码" prop="newPassword" :rules="[{required:true,message:'新密码不能为空'}]">
<el-input style="width:400px;" type="password" v-model="passwordForm.newPassword" auto-complete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click.native="doChangePassword" :loading="editLoading">保存</el-button>
<el-button @click.native="showPanel='baseInfo'" :loading="editLoading">返回</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row class="padding" v-show="showPanel==='baseInfo'" >
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form-item label="" prop="headimgurl">
<el-avatar :size="100" :src="editForm.headimgurl" @click="showUploadHeadimg"></el-avatar>
<br>
<el-button type="text" @click="showUploadHeadimg">更换头像</el-button>
</el-form-item>
<el-form-item label="" v-show="false" prop="headimgurl">
<single-shear-upload ref="uploadImg"
:img-width="100"
:img-height="100"
:show-title="true"
v-model="editForm.headimgurl"
:branch-id="userInfo.branchId"
:deptid="userInfo.deptid"
:remark="userInfo.username"
>
<span slot="title">商品高清大图</span>
</single-shear-upload>
</el-form-item>
<el-form-item label="账户性质" prop="memType">
<el-tag v-if="editForm.memType==='0'" type="primary">个人账户</el-tag>
<el-tag type="warning" v-else-if="editForm.memType=='1'">企业管理员账户</el-tag>
<el-tag type="warning" v-else-if="editForm.memType=='2'">企业员工账户</el-tag>
<el-button v-if="editForm.memType!=='0'" type="text" icon="el-icon-setting" @click="toBranchDetail">{{editForm.branchName}}</el-button>
<el-button v-if="editForm.memType==='0'" type="text" icon="el-icon-top" @click="upgradeToBranchAccount">升级为企业账户</el-button>
</el-form-item>
<el-form-item label="用户名称" prop="username" :rules="[{required:true,message:'用户名称不能为空'}]">
<el-input style="width:400px;" v-model="editForm.username" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="登录账号" prop="displayUserid" :rules="[{required:true,message:'登录账号不能为空'}]">
<el-input style="width:400px;" v-model="editForm.displayUserid" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="邮箱" prop="email" :rules="[{required:true,message:'邮箱不能为空'},{validator:validateEmail}]">
<el-input style="width:400px;" v-model="editForm.email" auto-complete="off"></el-input>
<el-button type="text" @click="registerEmail" v-if="!userInfo.email">绑定邮箱</el-button>
<el-button type="text" @click="changeEmail" v-if="userInfo.email">更换邮箱</el-button>
</el-form-item>
<el-form-item>
<el-button @click.native="showPanel='changePassword'" :loading="editLoading">修改密码</el-button>
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">保存</el-button>
<el-button @click.native="showPanel='bindMainAccount'" :loading="editLoading">绑定主账户</el-button>
</el-form-item>
</el-form>
</el-row>
<el-row class="padding" v-show="showPanel==='bindMainAccount'" >
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form-item label="">
<font color="blue">主账号指平台统一账户一般同一个手机号微信号邮箱认为是同一个账户</font>
<br>
<font color="blue">绑定主账户后可以实现微信app公众号小程序等各个应用账户互通</font>
</el-form-item>
<el-form-item label="" >
<vue-qr
ref="qrcode"
:logoSrc="logoSrc"
:text="' https://www.qingqinkj.com/miniapp?page=bindMainAccount&userid='+editForm.userid"
:size="200"
:loadMake="true"/>
<br>
<font color="blue">扫描绑定{{editForm.username}}主账号</font>
</el-form-item>
<el-form-item>
<el-button @click.native="showPanel='baseInfo'" :loading="editLoading">返回</el-button>
</el-form-item>
</el-form>
</el-row>
<!--新增 Branch 管理端机构表机构下面若干部门界面-->
<el-dialog
title="新增机构"
:visible.sync="branchAddVisible"
width="50%"
top="20px"
:close-on-click-modal="false"
>
<branch-add
:branch="{id:userInfo.branchId,branchName:'',admUserid:userInfo.branchId,admUsername:userInfo.username,luserid:userInfo.userid,lusername:userInfo.username}"
op-type="add"
:visible="branchAddVisible"
@cancel="branchAddVisible=false"
@submit="afterAddSubmit"
></branch-add>
</el-dialog>
</section>
</template>
<script>
import util from '@/common/js/util';//
import config from '@/common/config';//
import { editUser,changePassword } from '@/api/mdp/sys/user';
import { sendEmail,validEmailCode } from '@/api/login';
import { mapGetters } from 'vuex'
import SingleShearUpload from "@/components/Image/Single/Index";
import BranchAdd from "@/views/mdp/sys/branch/BranchEdit";
import logo1 from "@/assets/image/logo1.png"
import VueQr from 'vue-qr'
export default {
computed: {
...mapGetters([
'userInfo'
])
},
props:['user'],
watch: {
'user':function(data) {
this.editForm=data;
},
},
data() {
var validatePhoneno = (rule, value, callback) => {
if (!value) {
callback();
} else {
if (value) {
if(value.length<11 || value.length>11){
callback(new Error('手机号码必须11位'));
}
if(!(/^1[3456789]\d{9}$/.test(value))){
callback(new Error('手机号码格式不正确'));
}
}
callback();
}
};
var validateEmail = (rule, value, callback) => {
if (value=='') {
callback();
} else {
if (value !== '') {
var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
if(!reg.test(value)){
callback(new Error('邮箱格式不正确'));
}
}
callback();
}
};
var validateIdCardNo = (rule, value, callback) => {
if (value === ''|| value==null) {
//callback(nPhonenoew Error(''));
callback();
}else {
if (value !== '' && value.length>15) {
var reg = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
if(!reg.test(value)){
callback(new Error('身份证号码格式不正确'));
}else{
callback();
}
}else if(value !== '' && value.length<15){
callback(new Error('请输入15位或者18位长度身份证号码'));
}else{
callback();
}
}
};
return {
validateEmail:validateEmail,
uploadHeadimgVisible:false,
showPanel:'baseInfo',//baseInfo-changePassword-bindMainAccount
options:{},//
editLoading: false,
editFormRules: {
displayUserid: [
{ required: true, message: '账号必填', trigger: 'blur' }
],
username: [
{ required: true, message: '用户名称必填', trigger: 'blur' }
],
email: [
{ validator:validateEmail, trigger: 'blur' }
]
},
// User sys_user
editForm: {
unionid:'',displayUserid:'',userid:'',locked:'',startdate:'',nickname:'',username:'',phoneno:'',password:'',salt:'',fingerpassword1:'',fingerpassword2:'',fingerpassword3:'',fingerpassword4:'',pwdtype:'',headimgurl:'',country:'',city:'',province:'',address:'',sex:'',enddate:'',districtId:'',userid:'',userAccount:'',userPwd:'',userName:'',userDesc:'',officePhoneno:'',idCardNo:'',email:'',
memType:'',
},
passwordForm:{
newPassword:'',oldPassword:''
},
logoSrc:logo1,
branchAddVisible:false,
valiCode:'',//
}
},
methods: {
// @cancel="editFormVisible=false"
handleCancel:function(){
this.$emit('cancel');
},
//User sys_user@submit="afterEditSubmit"
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.editLoading = true;
let params = Object.assign({}, this.editForm);
editUser(params).then((res) => {
this.editLoading = false;
var tips=res.data.tips;
if(tips.isOk){
this.$emit('submit');// @submit="afterEditSubmit"
}
this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
}).catch(() => {
this.editLoading = false;
});
});
}
});
},
doChangePassword(){
this.$refs.passwordForm.validate((valid) => {
if (valid) {
changePassword({oldPassword:this.passwordForm.oldPassword,newPassword:this.passwordForm.newPassword}).then(res=>{
var tips = res.data.tips;
this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
})
}
})
},
showUploadHeadimg(){
this.$refs.uploadImg.showAdd();
},
upgradeToBranchAccount(){
//
this.branchAddVisible=true;
},
toBranchDetail(){
//
},
registerEmail(){
if(this.editForm.email){
sendEmail({codeScene:'1',codeEmail:this.editForm.email,userType:'staff',callbackUri:'http://localhost:8015/#/updateUserInfo'}).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
this.$message({ message: "邮件已发送,请到收件箱收取邮件,并点击其链接进行自动验证。", type: 'success' });
}else{
this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
}
})
}
},
changeEmail(){
if(this.editForm.email){
var curlDomain=window.location.protocol+"//"+window.location.host+"/"+process.env.CONTEXT+"/"+process.env.VERSION;
sendEmail({codeScene:'2',codeEmail:this.editForm.email,userType:'staff',callbackUri:curlDomain+'/#/changeEmailStepOne'}).then(res=>{
var tips = res.data.tips;
if(tips.isOk){
this.$message({ message: "邮件已发送,请到收件箱收取邮件,并点击其链接进行验证原邮箱。", type: 'success' });
}else{
this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
}
})
}
},
validEmailCode(){
validEmailCode({valiCode:this.valiCode,userType:'staff'}).then(res=>{
var tips = res.data.tips;
this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
})
},
},
components: {
SingleShearUpload,VueQr,BranchAdd,
},
mounted() {
debugger;
this.editForm=Object.assign(this.editForm, this.userInfo);
var valiCode=this.$route.query.valiCode;
//var valiCode=util.getQueryStringByName('valiCode');
if(valiCode){
this.valiCode=valiCode;
this.validEmailCode();
}
}
}
</script>
<style scoped>
</style>

68
src/views/myWork/set/index.vue

@ -12,6 +12,7 @@
<el-tag type="warning" v-else-if="editForm.memType=='2'">企业员工账户</el-tag>
<el-button v-if="editForm.memType!=='0'" type="text">{{editForm.branchName}}</el-button>
<el-button v-if="editForm.memType==='0'" type="text" icon="el-icon-top" @click="upgradeToBranchAccount">升级为企业账户</el-button>
<el-button type="warning" @click="switchUser">切换账户</el-button>
</span>
<span class="m_dept">所在部门{{userInfo.deptName}}</span>
<el-button @click="showUploadHeadimg" class="m_btn">修改头像</el-button>
@ -109,13 +110,33 @@
@submit="afterAddSubmit"
></branch-add>
</el-dialog>
<el-dialog
title="请选择一个账户进行登录"
:visible.sync="phonenoUsersVisible"
width="600" append-to-body>
<el-table :data="phonenoUsers">
<el-table-column prop="displayUserid" label="登录账号">
</el-table-column>
<el-table-column prop="username" label="姓名">
</el-table-column>
<el-table-column prop="branchName" label="企业">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary" @click="toLogin(scope.row)">登录</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import { editUser,changePassword } from '@/api/mdp/sys/user';
import { mapGetters } from 'vuex'
import { sendEmail,validEmailCode } from '@/api/login';
import { sendEmail,validEmailCode,queryMyUsers } from '@/api/login';
import SingleShearUpload from "@/components/Image/Single/Index";
import VueQr from 'vue-qr'
import BranchAdd from "@/views/mdp/sys/branch/BranchEdit";
@ -215,6 +236,8 @@ import md5 from "js-md5";
branchAddVisible:false,
valiCode:'',//
showPanel:'',//bindMainAccount
phonenoUsers:[],
phonenoUsersVisible:false,
}
},
methods: {
@ -301,6 +324,49 @@ import md5 from "js-md5";
this.$message({ message: tips.msg, type: tips.isOk?'success':'error' });
})
},
switchUser(){
queryMyUsers().then(res0=>{
if(res0.data.tips.isOk){
this.phonenoUsers=res0.data.data;
if(res0.data.data.length<=1){
this.$message.warning("当前没有关联的账户,无须切换");
}else{
this.phonenoUsersVisible=true;
}
}else{
this.$message.error(res0.data.tips.msg);
}
})
},
toLogin(user) {
this.$prompt('请输入密码', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
let params={
password:md5(value),
userloginid:user.userid,
authType:'password_display_userid' ,
grantType:"password"
}
this.$store.dispatch("LoginByUserloginid",params).then(res => {
this.phonenoUsersVisible=false;
if(res.data.tips.isOk==true){
this.$store.dispatch('GetUserInfo').then((res2)=>{
this.$router.push({ path: '/' });
}).catch(err=>{
});
}else{
this.$message.error(res.data.tips.msg);
}
}).catch((e) => {
})
}).catch(() => {
this.phonenoUsersVisible=false;
});
},
},
components: {
SingleShearUpload,VueQr,BranchAdd

Loading…
Cancel
Save