Commit 912a1656 authored by huangjie's avatar huangjie

*

parent 78853fe7
...@@ -74,6 +74,7 @@ ...@@ -74,6 +74,7 @@
"connect": "3.6.6", "connect": "3.6.6",
"eslint": "7.15.0", "eslint": "7.15.0",
"eslint-plugin-vue": "7.2.0", "eslint-plugin-vue": "7.2.0",
"js-base64": "^3.7.5",
"lint-staged": "10.5.3", "lint-staged": "10.5.3",
"runjs": "4.4.2", "runjs": "4.4.2",
"sass": "1.32.13", "sass": "1.32.13",
......
...@@ -38,8 +38,46 @@ export function getTenantPackage(param) { ...@@ -38,8 +38,46 @@ export function getTenantPackage(param) {
}) })
} }
//租户列表
export function getTenantList(param) {
return request({
url: '/system/tenant/list',
method: 'get',
params: param
})
}
//获取租户详情
export function getTenant(id) {
return request({
url: '/system/tenant/'+id,
method: 'get',
})
}
//修改租户
export function editTenant(data) {
return request({
url: '/system/tenant/',
method: 'PUT',
data:data,
})
}
//新增租户
export function saveTenant(data) {
return request({
url: '/system/tenant/',
method: 'POST',
data:data,
})
}
//删除租户
export function deleteTenant(ids) {
return request({
url: '/system/tenant/'+ids,
method: 'Delete',
})
}
...@@ -59,13 +59,21 @@ export function getCodeImg() { ...@@ -59,13 +59,21 @@ export function getCodeImg() {
} }
//获取租户企业列表 //获取租户企业列表
export function getTenants(data) { export function getTenants() {
return request({ return request({
url: '/user/tenants?userName='+data, url: '/user/tenants',
method: 'post', method: 'post',
}) })
} }
//
// 获取默认租户
export function defaultTenantid() {
return request({
url: '/user/default/tenant',
method: 'post',
})
}
// 切换租户 // 切换租户
export function changeTenants(data) { export function changeTenants(data) {
return request({ return request({
......
...@@ -86,8 +86,7 @@ export default { ...@@ -86,8 +86,7 @@ export default {
methods: { methods: {
getTetant(){ getTetant(){
this.tenantId = getTenantid() this.tenantId = getTenantid()
getTenants(localStorage.getItem('userphone')).then(res=>{ getTenants().then(res=>{
// getTenants('15823584612').then(res=>{
if(res.code == 200){ if(res.code == 200){
this.tenanlist = res.data this.tenanlist = res.data
} }
...@@ -105,16 +104,17 @@ export default { ...@@ -105,16 +104,17 @@ export default {
}).catch(() => {}); }).catch(() => {});
}, },
getorther(id){ getorther(id){
changeTenants(id).then(res=>{ if(id != this.tenantId){
console.log(res) changeTenants(id).then(res=>{
if(res.code == 200){ if(res.code == 200){
setToken(res.data.token) setToken(res.data.token)
setTenantid(id) setTenantid(id)
store.commit('SET_TOKEN', res.data.token) store.commit('SET_TOKEN', res.data.token)
location.reload(); location.reload();
this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
} }
}) })
}
} }
} }
} }
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="packList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" width="60"> <el-table-column label="序号" width="60">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.packageId !== 1"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
...@@ -147,8 +147,7 @@ ...@@ -147,8 +147,7 @@
</template> </template>
<script> <script>
import { listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus, deptTreeSelect } from "@/api/system/role"; import { treeselect as menuTreeselect} from "@/api/system/menu";
import { treeselect as menuTreeselect, roleMenuTreeselect} from "@/api/system/menu";
import { addTenantPackage ,getTenantPackage,detailTenantPackage,saveTenantPackage,deleteTenantPackage} from "@/api/enterpriseManagement/enterpriseManagement"; import { addTenantPackage ,getTenantPackage,detailTenantPackage,saveTenantPackage,deleteTenantPackage} from "@/api/enterpriseManagement/enterpriseManagement";
...@@ -171,8 +170,8 @@ ...@@ -171,8 +170,8 @@
showSearch: true, showSearch: true,
// 总条数 // 总条数
total: 0, total: 0,
// 角色表格数据 // 方案表格数据
roleList: [], packList: [],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
...@@ -182,32 +181,8 @@ ...@@ -182,32 +181,8 @@
menuExpand: false, menuExpand: false,
menuNodeAll: false, menuNodeAll: false,
deptExpand: true, deptExpand: true,
deptNodeAll: false,
// 日期范围 // 日期范围
dateRange: [], dateRange: [],
// 数据范围选项
dataScopeOptions: [
{
value: "1",
label: "全部数据权限"
},
{
value: "2",
label: "自定数据权限"
},
{
value: "3",
label: "本部门数据权限"
},
{
value: "4",
label: "本部门及以下数据权限"
},
{
value: "5",
label: "仅本人数据权限"
}
],
// 菜单列表 // 菜单列表
menuOptions: [], menuOptions: [],
// 部门列表 // 部门列表
...@@ -247,7 +222,7 @@ ...@@ -247,7 +222,7 @@
getList() { getList() {
this.loading = true; this.loading = true;
getTenantPackage(this.queryParams).then(response => { getTenantPackage(this.queryParams).then(response => {
this.roleList = response.rows; this.packList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
} }
...@@ -268,39 +243,11 @@ ...@@ -268,39 +243,11 @@
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys); checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
return checkedKeys; return checkedKeys;
}, },
// 所有部门节点数据
getDeptAllCheckedKeys() {
// 目前被选中的部门节点
let checkedKeys = this.$refs.dept.getCheckedKeys();
// 半选中的部门节点
let halfCheckedKeys = this.$refs.dept.getHalfCheckedKeys();
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
return checkedKeys;
},
/** 根据角色ID查询菜单树结构 */
getRoleMenuTreeselect(roleId) {
return roleMenuTreeselect(roleId).then(response => {
this.menuOptions = response.menus;
return response;
});
},
/** 根据角色ID查询部门树结构 */
getDeptTree(roleId) {
return deptTreeSelect(roleId).then(response => {
this.deptOptions = response.data.depts;
return response;
});
},
// 取消按钮 // 取消按钮
cancel() { cancel() {
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
// 取消按钮(数据权限)
cancelDataScope() {
this.openDataScope = false;
this.reset();
},
// 表单重置 // 表单重置
reset() { reset() {
if (this.$refs.menu != undefined) { if (this.$refs.menu != undefined) {
...@@ -309,7 +256,6 @@ ...@@ -309,7 +256,6 @@
this.menuExpand = false, this.menuExpand = false,
this.menuNodeAll = false, this.menuNodeAll = false,
this.deptExpand = true, this.deptExpand = true,
this.deptNodeAll = false,
this.form = { this.form = {
packageId: undefined, packageId: undefined,
packageName: undefined, packageName: undefined,
...@@ -333,44 +279,20 @@ ...@@ -333,44 +279,20 @@
}, },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.roleId) this.ids = selection.map(item => item.packageId)
this.single = selection.length!=1 this.single = selection.length!=1
this.multiple = !selection.length this.multiple = !selection.length
}, },
// 更多操作触发
handleCommand(command, row) {
switch (command) {
case "handleDataScope":
this.handleDataScope(row);
break;
case "handleAuthUser":
this.handleAuthUser(row);
break;
default:
break;
}
},
// 树权限(展开/折叠) // 树权限(展开/折叠)
handleCheckedTreeExpand(value, type) { handleCheckedTreeExpand(value, type) {
if (type == 'menu') { let treeList = this.menuOptions;
let treeList = this.menuOptions; for (let i = 0; i < treeList.length; i++) {
for (let i = 0; i < treeList.length; i++) { this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
this.$refs.menu.store.nodesMap[treeList[i].id].expanded = value;
}
} else if (type == 'dept') {
let treeList = this.deptOptions;
for (let i = 0; i < treeList.length; i++) {
this.$refs.dept.store.nodesMap[treeList[i].id].expanded = value;
}
} }
}, },
// 树权限(全选/全不选) // 树权限(全选/全不选)
handleCheckedTreeNodeAll(value, type) { handleCheckedTreeNodeAll(value, type) {
if (type == 'menu') { this.$refs.menu.setCheckedNodes(value ? this.menuOptions: []);
this.$refs.menu.setCheckedNodes(value ? this.menuOptions: []);
} else if (type == 'dept') {
this.$refs.dept.setCheckedNodes(value ? this.deptOptions: []);
}
}, },
// 树权限(父子联动) // 树权限(父子联动)
handleCheckedTreeConnect(value, type) { handleCheckedTreeConnect(value, type) {
...@@ -393,7 +315,6 @@ ...@@ -393,7 +315,6 @@
this.disabled = false this.disabled = false
this.reset(); this.reset();
const packageId = row.packageId const packageId = row.packageId
// const roleMenu = this.getRoleMenuTreeselect(packageId);
this.getMenuTreeselect(); this.getMenuTreeselect();
detailTenantPackage(packageId).then(response => { detailTenantPackage(packageId).then(response => {
response.data.menuIds = response.data.menuIds.split(',') response.data.menuIds = response.data.menuIds.split(',')
...@@ -424,32 +345,6 @@ ...@@ -424,32 +345,6 @@
this.handleUpdate(row) this.handleUpdate(row)
this.disabled = true this.disabled = true
}, },
/** 选择角色权限范围触发 */
dataScopeSelectChange(value) {
if(value !== '2') {
this.$refs.dept.setCheckedKeys([]);
}
},
/** 分配数据权限操作 */
handleDataScope(row) {
this.reset();
const deptTreeSelect = this.getDeptTree(row.roleId);
getRole(row.roleId).then(response => {
this.form = response.data;
this.openDataScope = true;
this.$nextTick(() => {
deptTreeSelect.then(res => {
this.$refs.dept.setCheckedKeys(res.data.checkedKeys);
});
});
this.title = "分配数据权限";
});
},
/** 分配用户操作 */
handleAuthUser: function(row) {
const roleId = row.roleId;
this.$router.push("/system/role-auth/user/" + roleId);
},
/** 提交按钮 */ /** 提交按钮 */
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
...@@ -474,33 +369,21 @@ ...@@ -474,33 +369,21 @@
} }
}); });
}, },
/** 提交按钮(数据权限) */
submitDataScope: function() {
if (this.form.roleId != undefined) {
this.form.deptIds = this.getDeptAllCheckedKeys();
dataScope(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.openDataScope = false;
this.getList();
});
}
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const packageIds = row.packageId || this.ids; const packageIds = row.packageId || this.ids;
this.$modal.confirm('是否确认删除方案为数据项?').then(function() { let _this = this
return deleteTenantPackage(packageIds); this.$modal.confirm('是否确认删除选中的方案数据项?').then(function() {
}).then(() => { deleteTenantPackage(packageIds).then(res=>{
this.getList(); if(res.code == 200){
this.$modal.msgSuccess("删除成功"); _this.getList();
_this.$message.success("删除成功");
}else{
_this.$message.error(res.msg);
}
});
}).catch(() => {}); }).catch(() => {});
}, },
/** 导出按钮操作 */
handleExport() {
this.download('system/role/export', {
...this.queryParams
}, `role_${new Date().getTime()}.xlsx`)
}
} }
}; };
</script> </script>
......
...@@ -71,12 +71,14 @@ ...@@ -71,12 +71,14 @@
</template> </template>
<script> <script>
import { getCodeImg,getTenants,changeTenants } from "@/api/login"; import store from '@/store'
import Cookies from "js-cookie"; import { changeTenants, defaultTenantid, getCodeImg, getTenants } from '@/api/login'
import { encrypt, decrypt } from '@/utils/jsencrypt' import Cookies from 'js-cookie'
import { setTenantid} from '@/utils/auth' import { decrypt, encrypt } from '@/utils/jsencrypt'
import {Base64} from 'js-base64'
import { getTenantid, setTenantid,setToken } from '@/utils/auth'
export default { export default {
name: "Login", name: "Login",
data() { data() {
return { return {
...@@ -106,6 +108,7 @@ export default { ...@@ -106,6 +108,7 @@ export default {
register: false, register: false,
redirect: undefined, redirect: undefined,
tenanlist:[], tenanlist:[],
defalutId:'',//默认租户id
}; };
}, },
watch: { watch: {
...@@ -136,7 +139,8 @@ export default { ...@@ -136,7 +139,8 @@ export default {
const rememberMe = Cookies.get('rememberMe') const rememberMe = Cookies.get('rememberMe')
this.loginForm = { this.loginForm = {
username: username === undefined ? this.loginForm.username : username, username: username === undefined ? this.loginForm.username : username,
password: password === undefined ? this.loginForm.password : decrypt(password), // password: password === undefined ? this.loginForm.password : decrypt(password),
password: password === undefined ? this.loginForm.password : Base64.encode(password),
rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
}; };
}, },
...@@ -146,18 +150,25 @@ export default { ...@@ -146,18 +150,25 @@ export default {
this.loading = true; this.loading = true;
if (this.loginForm.rememberMe) { if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 }); Cookies.set("username", this.loginForm.username, { expires: 30 });
Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 }); // Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
Cookies.set("password", Base64.encode(this.loginForm.password), { expires: 30 });
Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 }); Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
} else { } else {
Cookies.remove("username"); Cookies.remove("username");
Cookies.remove("password"); Cookies.remove("password");
Cookies.remove('rememberMe'); Cookies.remove('rememberMe');
} }
this.$store.dispatch("Login", this.loginForm).then(() => { let froms = JSON.parse(JSON.stringify(this.loginForm))
froms.password = Base64.encode(this.loginForm.password)
this.$store.dispatch("Login", froms).then(() => {
localStorage.setItem('userphone',this.loginForm.username) localStorage.setItem('userphone',this.loginForm.username)
defaultTenantid().then(res=>{
this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); if(res.data.tenantId == "" || res.data.tenantId == null){//无默认企业id
// this.goin() this.goin()
}else{
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
}
})
}).catch(() => { }).catch(() => {
this.loading = false; this.loading = false;
if (this.captchaEnabled) { if (this.captchaEnabled) {
...@@ -169,29 +180,30 @@ export default { ...@@ -169,29 +180,30 @@ export default {
}, },
goin(){ goin(){
this.tenantId = -1 this.tenantId = -1
getTenants(this.loginForm.username).then(res=>{ getTenants().then(res=>{
if(res.code == 200){ if(res.code == 200 && res.data != []){
this.tenanlist = res.data this.tenanlist = res.data
if(this.tenanlist.length>1){ if(this.tenanlist.length>1){
this.islog = true this.islog = true
}else{ }else{ //只有一条就是登录返回的id 直接进入系统
setTenantid(this.tenanlist[0].tenantId) this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
this.changeTenants(this.tenanlist[0].tenantId)
} }
} }
}) })
}, },
tochose(){ tochose(){
setTenantid(this.tenantId)
this.changeTenants(this.tenantId) this.changeTenants(this.tenantId)
}, },
changeTenants(tenantId){ changeTenants(tenantId) {
changeTenants(tenantId).then(res=>{ changeTenants(tenantId).then(res => {
if(res.code == 200){ if (res.code == 200) {
this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); setToken(res.data.token)
setTenantid(tenantId)
store.commit('SET_TOKEN', res.data.token)
this.$router.push({ path: this.redirect || '/' }).catch(() => {})
} }
}) })
}, }
} }
}; };
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment