修改个人信息下拉和公司管理员

This commit is contained in:
龙运模 2024-09-14 15:06:16 +08:00
parent e8e3a85278
commit 8fbe83d121
9 changed files with 223 additions and 46 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,13 @@
<template>
<svg t="1726291711322" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4856" width="200" height="200"><path d="M962.3552 431.58186667l-237.84106667-137.4208 82.39786667-142.67733334a55.02293333 55.02293333 0 0 0-20.13866667-75.09333333l-47.58186666-27.51146667a55.02293333 55.02293333 0 0 0-75.09333334 20.13866667L581.632 211.62666667 343.6544 74.41066667a55.02293333 55.02293333 0 0 0-75.09333333 20.13866666l-27.51146667 47.58186667a55.02293333 55.02293333 0 0 0 20.20693333 75.09333333l618.63253334 357.23946667a55.02293333 55.02293333 0 0 0 75.09333333-20.13866667l27.51146667-47.58186666a54.95466667 54.95466667 0 0 0-20.13866667-75.09333334zM41.43786667 597.87946667a55.02293333 55.02293333 0 0 0 20.20693333 75.09333333l95.16373333 54.8864 82.46613334-142.67733333 47.58186666 27.51146666-82.46613333 142.67733334 95.16373333 54.95466666 82.39786667-142.67733333 47.58186667 27.51146667-82.46613334 142.67733333 95.16373334 54.95466667 82.60266666-142.81386667 47.5136 27.51146667-82.39786666 142.67733333 95.09546666 54.95466667a55.02293333 55.02293333 0 0 0 75.09333334-20.13866667l192.37546666-333.14133333-618.7008-357.1712-192.3072 333.14133333z" p-id="4857"></path></svg>
</template>
<script>
export default {
name: "ClearCache"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,13 @@
<template>
<svg t="1726294007017" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4925" width="200" height="200"><path d="M265.6 310.4c-12.8-12.8-12.8-32 0-44.8 12.8-12.8 28.8-12.8 41.6-3.2l3.2 3.2L512 467.2l201.6-201.6c12.8-12.8 28.8-12.8 41.6-3.2l3.2 3.2c12.8 12.8 12.8 28.8 3.2 41.6l-3.2 3.2-224 224c-12.8 12.8-28.8 12.8-41.6 3.2l-3.2-3.2-224-224z" fill="#221814" p-id="4926"></path><path d="M265.6 550.4c-12.8-12.8-12.8-32 0-44.8 12.8-12.8 28.8-12.8 41.6-3.2l3.2 3.2L512 707.2l201.6-201.6c12.8-12.8 28.8-12.8 41.6-3.2l3.2 3.2c12.8 12.8 12.8 28.8 3.2 41.6l-3.2 3.2-224 224c-12.8 12.8-28.8 12.8-41.6 3.2l-3.2-3.2-224-224z" fill="#C70019" p-id="4927"></path></svg>
</template>
<script>
export default {
name: "Right"
}
</script>
<style scoped>
</style>

13
src/assets/icons/User.vue Normal file
View File

@ -0,0 +1,13 @@
<template>
<svg t="1726282787427" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4997" width="200" height="200"><path d="M254.88125 319.11875a257.175 257.175 0 1 0 514.29375 0 257.175 257.175 0 0 0-514.29375 0z m64.2375 321.46875A257.175 257.175 0 0 0 62 897.70625C62 933.2 90.9125 962 126.0125 962h771.975A64.125 64.125 0 0 0 962 897.70625a257.175 257.175 0 0 0-257.11875-257.11875H319.0625z" p-id="4998"></path></svg>
</template>
<script>
export default {
name: "User"
}
</script>
<style scoped>
</style>

View File

@ -38,6 +38,11 @@ export { default as CreateFolder } from './CreateFolder.vue'
export { default as CreateShare } from './CreateShare.vue' export { default as CreateShare } from './CreateShare.vue'
export { default as Fingerprint } from './Fingerprint.vue' export { default as Fingerprint } from './Fingerprint.vue'
export { default as Folder } from './Folder.vue' export { default as Folder } from './Folder.vue'
export { default as User } from './User.vue'
export { default as AccountNumber } from './AccountNumber.vue'
export { default as ClearCache } from './ClearCache.vue'
export { default as Right } from './Right.vue'
export { default as File7z } from './file/7z.vue' export { default as File7z } from './file/7z.vue'
export { default as FileBmp } from './file/Bmp.vue' export { default as FileBmp } from './file/Bmp.vue'
export { default as FileBz2 } from './file/Bz2.vue' export { default as FileBz2 } from './file/Bz2.vue'
@ -78,7 +83,6 @@ export { default as OrderMaintenance } from './OrderMaintenance.vue'
export { default as OrderReview } from './OrderReview.vue' export { default as OrderReview } from './OrderReview.vue'
export { default as SaveMaintenance } from './SaveMaintenance.vue' export { default as SaveMaintenance } from './SaveMaintenance.vue'
export { default as Home } from './menu/Home.vue' export { default as Home } from './menu/Home.vue'
export { default as Setup } from './menu/Setup.vue' export { default as Setup } from './menu/Setup.vue'
export { default as Other } from './menu/Other.vue' export { default as Other } from './menu/Other.vue'

View File

@ -58,11 +58,33 @@
<el-icon class="el-icon--right"><el-icon-arrow-down /></el-icon> <el-icon class="el-icon--right"><el-icon-arrow-down /></el-icon>
</div> </div>
<template #dropdown> <template #dropdown>
<div class="userView" style="width: 300px">
<div class="headerView">
<el-icon class="icon" size="18px"><sc-icon-User/></el-icon>
<span class="name">{{userName}}</span>
<span class="solid"></span>
<span class="account">{{userInfo.login_name}}</span>
</div>
<div class="itemBox">
<div class="name">邮箱</div>
<div class="text">{{userInfo.email}}</div>
</div>
<div class="itemBox">
<div class="name">手机号</div>
<div class="text">{{userInfo.mobile}}</div>
</div>
<div class="itemBox">
<div class="name">公司名称</div>
<div class="text">{{userInfo.company_info && userInfo.company_info.full_name?userInfo.company_info.full_name:''}}</div>
</div>
</div>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item command="uc">帐号信息</el-dropdown-item> <el-dropdown-item icon="sc-icon-AccountNumber" command="uc">帐号信息</el-dropdown-item>
<el-dropdown-item command="clearCache">清除缓存</el-dropdown-item> <el-dropdown-item icon="sc-icon-ClearCache" command="clearCache">清除缓存</el-dropdown-item>
<el-dropdown-item divided command="outLogin">退出登录</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
<div class="loginOut">
<el-button class="btn" style="width: 100%" @click="loginOut">退出登录</el-button>
</div>
</template> </template>
</el-dropdown> </el-dropdown>
</div> </div>
@ -90,6 +112,7 @@
return { return {
userName: "", userName: "",
userNameF: "", userNameF: "",
userInfo:{},
searchVisible: false, searchVisible: false,
tasksVisible: false, tasksVisible: false,
msg: false, msg: false,
@ -130,6 +153,7 @@
this.$store.commit("SET_LOGIN_AVATAR", userInfo.avatar); this.$store.commit("SET_LOGIN_AVATAR", userInfo.avatar);
this.$store.commit("SET_LOGIN_NAME", userInfo.name); this.$store.commit("SET_LOGIN_NAME", userInfo.name);
this.userInfo = userInfo;
this.userName = this.$store.state.global.login_name; this.userName = this.$store.state.global.login_name;
if(userInfo.company_info){ if(userInfo.company_info){
this.companyName = userInfo.company_info.name; this.companyName = userInfo.company_info.name;
@ -164,7 +188,8 @@
// //
}) })
} }
if (command == "outLogin") { },
loginOut(){
this.$confirm('确认是否退出当前用户?', '警告', { this.$confirm('确认是否退出当前用户?', '警告', {
type: 'warning', type: 'warning',
confirmButtonText: '退出', confirmButtonText: '退出',
@ -174,11 +199,10 @@
}).catch(() => { }).catch(() => {
//退 //退
}) })
}
}, },
// //
screen() { screen() {
var element = document.documentElement; const element = document.documentElement;
this.$TOOL.screen(element) this.$TOOL.screen(element)
}, },
// //
@ -281,6 +305,55 @@
text-align: right; text-align: right;
color: #999; color: #999;
} }
.userView{
background: #F5F7FA;
padding:10px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #EBEEF5;
.headerView{
padding: 0 6px;
display: flex;align-items: center;
margin-bottom: 10px;
.icon{
color: var(--el-color-primary);
display: flex;
align-items: center;
}
.name{
font-size: 16px;font-weight: 500;
margin-left: 8px;
}
.solid{
width: 2px;
height: 18px;
background: var(--el-color-danger);
margin: 0 12px;
}
.account{
font-size: 14px;
}
}
.itemBox{
display: flex;align-items: center;
padding: 6px 6px;
font-size: 13px;
.name{
width: 65px;
color: #888;
}
.text{
flex: 1;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}
}
}
.loginOut{
border-top: 1px solid #EBEEF5;
padding: 16px;
.btn{
font-weight: inherit;
}
}
.dark .msg-list__main h2 { .dark .msg-list__main h2 {
color: #d0d0d0; color: #d0d0d0;

View File

@ -5,7 +5,7 @@
<div class="headerBox">电子邮件确认链接</div> <div class="headerBox">电子邮件确认链接</div>
<div class="mainBox"> <div class="mainBox">
<div class="msg">电子邮件确认链接</div> <div class="msg">电子邮件确认链接</div>
<el-button type="primary" @click="getActivation">请求向您发送新的电子邮件</el-button> <el-button type="primary" @click="getActivation">点此激活账号并登录</el-button>
<div class="text">您最近是否申请过帐户但未确认您的电子邮件地址?如果您尚未确认您的电子邮件地址您可能需要创建一个新帐户如果您有问题请参阅帐户帮助</div> <div class="text">您最近是否申请过帐户但未确认您的电子邮件地址?如果您尚未确认您的电子邮件地址您可能需要创建一个新帐户如果您有问题请参阅帐户帮助</div>
</div> </div>
</div> </div>
@ -36,20 +36,25 @@ export default {
async getActivation() { async getActivation() {
const user = await this.$API.user.active.post(); const user = await this.$API.user.active.post();
if(user.code == 200){ if(user.code == 200){
this.$TOOL.cookie.set("TOKEN", user.data.token) await this.setLoginData(user);
}
},
async setLoginData(user) {
this.$TOOL.cookie.set("TOKEN", user.data.token, {
expires: 0
})
this.$TOOL.data.set("USER_INFO", user.data.user) this.$TOOL.data.set("USER_INFO", user.data.user)
if(user.data.user.avatar!=''){ if(user.data.user.avatar!=''){
this.$store.commit("SET_LOGIN_AVATAR", user.data.user.avatar); this.$store.commit("SET_LOGIN_AVATAR", user.data.user.avatar);
} }
this.$store.commit("SET_LOGIN_NAME", user.data.user.name); this.$store.commit("SET_LOGIN_NAME", user.data.user.name);
}else{
return false
}
// //
const menu = await this.$API.system.menu.myMenus.get(); let menu = null;
if (menu.code == 200) { menu = await this.$API.system.menu.myMenus.get()
if (menu.data.menu.length == 0) { if (menu.code === 200) {
if (menu.data.menu.length === 0) {
this.islogin = false this.islogin = false
await this.$alert("当前用户无任何菜单权限,请联系系统管理员", "无权限访问", { await this.$alert("当前用户无任何菜单权限,请联系系统管理员", "无权限访问", {
type: 'error', type: 'error',
@ -63,15 +68,13 @@ export default {
this.$TOOL.data.set("PERMISSIONS", data_auth) this.$TOOL.data.set("PERMISSIONS", data_auth)
this.$TOOL.data.set("DASHBOARDGRID", menu.data.dashboardGrid) this.$TOOL.data.set("DASHBOARDGRID", menu.data.dashboardGrid)
} else { } else {
this.islogin = false this.$message.warning(menu.msg)
this.$message.warning(menu.message)
return false return false
} }
this.$router.replace({ this.$router.replace({
path: '/' path: '/'
}) })
} },
} }
} }
</script> </script>

View File

@ -37,10 +37,10 @@
</div> </div>
</div> </div>
</template> </template>
<div class="passKeyLogin" @click="passKeyLogin">passKey登录</div> <div class="passKeyLogin" @click="passKeyLogin">使用passKey登录</div>
</div> </div>
<div class="login_adv__bottom"> <div class="login_adv__bottom">
xwcloud.com 版权所有 © 2023 linkwing.com·麟云 版权所有 @ 2023-{{new Date().getFullYear()}}
</div> </div>
</div> </div>
</div> </div>
@ -286,7 +286,7 @@
font-size: 22px; font-size: 22px;
position: relative; position: relative;
padding-left: 18px; padding-left: 18px;
color: #3F4244; color: #595E5C;
font-weight: 500; font-weight: 500;
.origin{ .origin{
position: absolute; position: absolute;
@ -296,7 +296,7 @@
width: 8px; width: 8px;
height: 8px; height: 8px;
border-radius: 50%; border-radius: 50%;
background: #333; background: #595E5C;
margin: 0 8px 0 0; margin: 0 8px 0 0;
} }
} }

View File

@ -1,9 +1,17 @@
<template> <template>
<el-dialog :title="titleMap[mode]" v-model="visible" :width="1200" destroy-on-close draggable @closed="$emit('closed')"> <el-dialog :title="titleMap[mode]" v-model="visible" :width="form.is_admin?1200:600" destroy-on-close draggable @closed="$emit('closed')">
<template #title>
<div class="dialogHeader">
<span class="name">{{titleMap[mode]}}</span>
<span class="addBtn" :class="form.is_admin?'addFlex':''">
<span class="btnFlex" @click="form.is_admin=!form.is_admin"><el-icon v-if="form.is_admin" class="rightIcon" size="20"><sc-icon-Right/></el-icon>{{form.is_admin?'取消添加管理员':'添加管理员'}}<el-icon v-if="!form.is_admin" class="icon" size="20"><sc-icon-Right/></el-icon></span>
</span>
</div>
</template>
<el-scrollbar height="500px" style="padding: 0 20px;"> <el-scrollbar height="500px" style="padding: 0 20px;">
<el-form :model="form" :rules="rules" ref="dialogForm" label-width="140px"> <el-form :model="form" :rules="rules" ref="dialogForm" label-width="140px">
<el-row justify="space-between"> <el-row justify="space-between">
<el-col :span="11"> <el-col :span="form.is_admin?11:24">
<div class="dialogBoxTitle"><span class="make"></span><span class="name">企业信息</span></div> <div class="dialogBoxTitle"><span class="make"></span><span class="name">企业信息</span></div>
<el-form-item label="公司名称" prop="full_name"> <el-form-item label="公司名称" prop="full_name">
<el-input v-model="form.full_name" placeholder="请填写认证企业名称" clearable></el-input> <el-input v-model="form.full_name" placeholder="请填写认证企业名称" clearable></el-input>
@ -29,9 +37,10 @@
<el-input type="textarea" placeholder="请输入备注"></el-input> <el-input type="textarea" placeholder="请输入备注"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="1" style="display: flex;align-items: center;justify-content: center;" v-if="form.is_admin"><div class="solid"></div></el-col>
<el-col :span="12" v-if="form.is_admin">
<div class="dialogBoxTitle"><span class="make"></span><span class="name">企业管理员信息</span></div> <div class="dialogBoxTitle"><span class="make"></span><span class="name">企业管理员信息</span></div>
<el-form-item label="负责人/联系方式"> <el-form-item label="负责人/联系方式" required>
<el-row justify="space-between"> <el-row justify="space-between">
<el-col :span="5"> <el-col :span="5">
<el-form-item prop="owner"> <el-form-item prop="owner">
@ -96,6 +105,7 @@ export default {
// //
form: { form: {
id:"", id:"",
is_admin:false,
domain: "", domain: "",
company_type: "", company_type: "",
name: "", name: "",
@ -122,6 +132,9 @@ export default {
domain:[ domain:[
{required: true, message: '入口地址不能为空', trigger: 'blur'} {required: true, message: '入口地址不能为空', trigger: 'blur'}
], ],
company_type:[
{required: true, message: '公司类型不能为空', trigger: 'change'}
],
address:[ address:[
{required: true, message: '请填写公司地址', trigger: 'blur'} {required: true, message: '请填写公司地址', trigger: 'blur'}
], ],
@ -140,12 +153,12 @@ export default {
owner:[ owner:[
{required: true, message: '负责人不能为空', trigger: 'blur'} {required: true, message: '负责人不能为空', trigger: 'blur'}
], ],
// admin_account: [ admin_account: [
// {required: true, message: '', trigger: 'blur'} {required: true, message: '账号不能为空', trigger: 'blur'}
// ], ],
// password: [ password: [
// {required: true, message: '', trigger: 'blur'} {required: true, message: '密码不能为空', trigger: 'blur'}
// ], ],
accord:[ accord:[
{required: true, message: '系统协议不能为空', trigger: 'change'} {required: true, message: '系统协议不能为空', trigger: 'change'}
] ]
@ -219,6 +232,7 @@ export default {
this.form.password = res.data.password; this.form.password = res.data.password;
this.form.remark = res.data.remark; this.form.remark = res.data.remark;
this.form.accord = 1; this.form.accord = 1;
this.form.is_admin = res.data.is_admin?res.data.is_admin:false;
} }
} }
} }
@ -238,4 +252,35 @@ export default {
background: var(--el-color-primary); background: var(--el-color-primary);
} }
} }
.dialogHeader{
display: flex;justify-content: space-between;
padding-right: 20px;
.name{
font-size: 17px;
font-weight: bold;
flex: 1;
}
.addBtn{
display: flex;align-items: center;
color: var(--el-text-color-regular);
font-size: 14px;
.icon{
transform: rotate(-45deg);
}
}
}
.addFlex{
flex: 1;
.rightIcon{
transform: rotate(135deg);
}
}
.btnFlex{
cursor: pointer;
display: flex;align-items: center;
}
.solid{
height: 100%;
border-left: 1px dashed var(--el-border-color);
}
</style> </style>