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(()=>{});
} }
}) })
}
} }
} }
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="企业名称" prop="roleName"> <el-form-item label="企业名称" prop="roleName">
<el-input <el-input
v-model="queryParams.roleName" v-model="queryParams.companyName"
placeholder="请输入企业名称" placeholder="请输入企业名称"
clearable clearable
style="width: 240px" style="width: 240px"
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</el-form-item> </el-form-item>
<el-form-item label="用户名称" prop="roleKey"> <el-form-item label="用户名称" prop="roleKey">
<el-input <el-input
v-model="queryParams.roleKey" v-model="queryParams.contactUserName"
placeholder="请输入用户名称" placeholder="请输入用户名称"
clearable clearable
style="width: 240px" style="width: 240px"
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</el-form-item> </el-form-item>
<el-form-item label="电话号码" prop="roleKey"> <el-form-item label="电话号码" prop="roleKey">
<el-input <el-input
v-model="queryParams.roleKey" v-model="queryParams.contactPhone"
placeholder="请输入电话号码" placeholder="请输入电话号码"
clearable clearable
style="width: 240px" style="width: 240px"
...@@ -74,22 +74,22 @@ ...@@ -74,22 +74,22 @@
<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="tenantList" @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">
<span>{{(queryParams.pageNum - 1) *queryParams.pageSize + scope.$index + 1}}</span> <span>{{(queryParams.pageNum - 1) *queryParams.pageSize + scope.$index + 1}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="企业名称" prop="roleName" :show-overflow-tooltip="true" width="150" /> <el-table-column label="企业名称" prop="companyName" :show-overflow-tooltip="true" width="150" />
<el-table-column label="用户名称" prop="roleKey" :show-overflow-tooltip="true" width="150" /> <el-table-column label="用户名称" prop="contactUserName" :show-overflow-tooltip="true" width="150" />
<el-table-column label="手机号码" prop="roleSort" width="100" /> <el-table-column label="手机号码" prop="contactPhone" width="120" />
<el-table-column label="企业方案" prop="roleSort" /> <el-table-column label="企业方案" prop="packageName" />
<el-table-column label="续约开始时间" prop="roleSort" /> <el-table-column label="续约开始时间" prop="startTime" />
<el-table-column label="续约结束时间" prop="roleSort" /> <el-table-column label="续约结束时间" prop="expireTime" />
<el-table-column label="账号状态" align="center" width="100"> <el-table-column label="账号状态" align="center" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> <dict-tag :options="dict.type.sys_user_status" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
...@@ -117,7 +117,7 @@ ...@@ -117,7 +117,7 @@
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleLook(scope.row)"
v-hasPermi="['system:role:remove']" v-hasPermi="['system:role:remove']"
>查看</el-button> >查看</el-button>
</template> </template>
...@@ -137,21 +137,21 @@ ...@@ -137,21 +137,21 @@
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="企业名称" prop="roleName"> <el-form-item label="企业名称" prop="companyName">
<el-input v-model="form.roleName" placeholder="请输入角色名称"/> <el-input :disabled="disabled" v-model="form.companyName" placeholder="请输入企业名称"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户名称" prop="roleName"> <el-form-item label="用户名称" prop="contactUserName">
<el-input v-model="form.roleName" placeholder="请输入角色名称"/> <el-input :disabled="disabled" v-model="form.contactUserName" placeholder="请输入用户名称"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="续约时间" prop="roleName"> <el-form-item label="续约时间" prop="dateRange">
<el-date-picker <el-date-picker :disabled="disabled"
v-model="dateRange" v-model="form.dateRange"
style="width: 240px" style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
type="daterange" type="daterange"
...@@ -163,39 +163,39 @@ ...@@ -163,39 +163,39 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="手机号码" prop="roleName"> <el-form-item label="手机号码" prop="contactPhone">
<el-input v-model="form.roleName" placeholder="请输入角色名称"/> <el-input :disabled="disabled" v-model="form.contactPhone" placeholder="请输手机号码"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="企业方案" prop="roleName"> <el-form-item label="企业方案" prop="packageId">
<el-select <el-select :disabled="disabled"
v-model="queryParams.status" v-model="form.packageId"
placeholder="企业方案" placeholder="企业方案"
clearable clearable
style="width: 240px" style="width: 240px"
> >
<el-option <el-option
v-for="dict in dict.type.sys_user_status" v-for="dict in packageList"
:key="dict.value" :key="dict.packageId"
:label="dict.label" :label="dict.packageName"
:value="dict.value" :value="dict.packageId"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="企业规模" prop="roleName"> <el-form-item label="企业规模" prop="accountCount">
<el-input v-model="form.roleName" placeholder="请输入角色名称"/> <el-input :disabled="disabled" v-model="form.accountCount" placeholder="请输入企业规模"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="状态"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status" :disabled="disabled">
<el-radio <el-radio
v-for="dict in dict.type.sys_user_status" v-for="dict in dict.type.sys_user_status"
:key="dict.value" :key="dict.value"
...@@ -206,7 +206,7 @@ ...@@ -206,7 +206,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer" v-if="!disabled">
<el-button type="primary" @click="submitForm">确 定</el-button> <el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
...@@ -215,23 +215,14 @@ ...@@ -215,23 +215,14 @@
</template> </template>
<script> <script>
import { import { getTenantList,getTenant,getTenantPackage,editTenant,saveTenant,deleteTenant} from "@/api/enterpriseManagement/enterpriseManagement";
addRole,
changeRoleStatus,
dataScope,
delRole,
deptTreeSelect,
getRole,
listRole,
updateRole
} from '@/api/system/role'
import { roleMenuTreeselect, treeselect as menuTreeselect } from '@/api/system/menu'
export default { export default {
name: "index", name: "index",
dicts: ['sys_user_status'], dicts: ['sys_user_status'],
data() { data() {
return { return {
disabled:false,
// 遮罩层 // 遮罩层
loading: true, loading: true,
// 选中数组 // 选中数组
...@@ -244,168 +235,96 @@ ...@@ -244,168 +235,96 @@
showSearch: true, showSearch: true,
// 总条数 // 总条数
total: 0, total: 0,
// 角色表格数据 // 企业表格数据
roleList: [], tenantList: [],
// 弹出层标题 // 弹出层标题
title: "", title: "",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
// 是否显示弹出层(数据权限)
openDataScope: false,
menuExpand: false,
menuNodeAll: false,
deptExpand: true,
deptNodeAll: false,
// 日期范围
dateRange: [],
// 数据范围选项
dataScopeOptions: [
{
value: "1",
label: "全部数据权限"
},
{
value: "2",
label: "自定数据权限"
},
{
value: "3",
label: "本部门数据权限"
},
{
value: "4",
label: "本部门及以下数据权限"
},
{
value: "5",
label: "仅本人数据权限"
}
],
// 菜单列表
menuOptions: [],
// 部门列表
deptOptions: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
roleName: undefined, companyName: undefined,
roleKey: undefined, contactPhone: undefined,
status: undefined contactUserName: undefined,
status: undefined,
}, },
// 表单参数 // 表单参数
form: {}, form: {},
defaultProps: {
children: "children",
label: "label"
},
// 表单校验 // 表单校验
rules: { rules: {
roleName: [ contactPhone : [
{ required: true, message: "角色名称不能为空", trigger: "blur" } { required: true, message: "手机号码不能为空", trigger: "blur" },
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
],
contactUserName: [
{ required: true, message: "用户名称不能为空", trigger: "blur" }
],
companyName: [
{ required: true, message: "企业名称不能为空", trigger: "blur" }
],
packageId: [
{ required: true, message: "企业方案不能为空", trigger: "blur" }
],
dateRange: [
{ required: true, message: "续约时间不能为空", trigger: "blur" }
],
accountCount: [
{ required: true, message: "企业规模不能为空", trigger: "blur" }
], ],
roleKey: [ status: [
{ required: true, message: "权限字符不能为空", trigger: "blur" } { required: true, message: "账号状态不能为空", trigger: "blur" }
], ],
roleSort: [ },
{ required: true, message: "角色顺序不能为空", trigger: "blur" } //企业方案列表
] packageList:[],
}
}; };
}, },
created() { created() {
this.getList(); this.getList();
this.getpack()
}, },
methods: { methods: {
//获取企业方案列表
getpack(){
getTenantPackage().then(res=>{
if(res.code = 200){
this.packageList = res.rows
}
})
},
/** 查询角色列表 */ /** 查询角色列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listRole(this.addDateRange(this.queryParams, this.dateRange)).then(response => { getTenantList(this.queryParams).then(response => {
this.roleList = response.rows; this.tenantList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
} }
); );
}, },
/** 查询菜单树结构 */
getMenuTreeselect() {
menuTreeselect().then(response => {
this.menuOptions = response.data;
});
},
// 所有菜单节点数据
getMenuAllCheckedKeys() {
// 目前被选中的菜单节点
let checkedKeys = this.$refs.menu.getCheckedKeys();
// 半选中的菜单节点
let halfCheckedKeys = this.$refs.menu.getHalfCheckedKeys();
checkedKeys.unshift.apply(checkedKeys, halfCheckedKeys);
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.data.menus;
return response;
});
},
/** 根据角色ID查询部门树结构 */
getDeptTree(roleId) {
return deptTreeSelect(roleId).then(response => {
this.deptOptions = response.data.depts;
return response;
});
},
// 角色状态修改
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.roleName + '"角色吗?').then(function() {
return changeRoleStatus(row.roleId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === "0" ? "1" : "0";
});
},
// 取消按钮 // 取消按钮
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) {
this.$refs.menu.setCheckedKeys([]);
}
this.menuExpand = false,
this.menuNodeAll = false,
this.deptExpand = true,
this.deptNodeAll = false,
this.form = { this.form = {
roleId: undefined, dateRange: undefined,
roleName: undefined, id: undefined,
roleKey: undefined, tenantId: undefined,
roleSort: 0, contactUserName: undefined,
contactPhone: undefined,
companyName: undefined,
packageId: undefined,
accountCount: undefined,
status: "0", status: "0",
menuIds: [],
deptIds: [],
menuCheckStrictly: true,
deptCheckStrictly: true,
remark: undefined
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -422,121 +341,48 @@ ...@@ -422,121 +341,48 @@
}, },
// 多选框选中数据 // 多选框选中数据
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.roleId) this.ids = selection.map(item => item.id)
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) {
if (type == 'menu') {
let treeList = this.menuOptions;
for (let i = 0; i < treeList.length; i++) {
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) {
if (type == 'menu') {
this.$refs.menu.setCheckedNodes(value ? this.menuOptions: []);
} else if (type == 'dept') {
this.$refs.dept.setCheckedNodes(value ? this.deptOptions: []);
}
},
// 树权限(父子联动)
handleCheckedTreeConnect(value, type) {
if (type == 'menu') {
this.form.menuCheckStrictly = value ? true: false;
} else if (type == 'dept') {
this.form.deptCheckStrictly = value ? true: false;
}
},
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.disabled = false
this.reset(); this.reset();
this.getMenuTreeselect();
this.open = true; this.open = true;
this.title = "添加角色"; this.title = "添加角色";
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.disabled = false
this.reset(); this.reset();
const roleId = row.roleId || this.ids const id = row.id
const roleMenu = this.getRoleMenuTreeselect(roleId); getTenant(id).then(response => {
getRole(roleId).then(response => {
this.form = response.data; this.form = response.data;
this.form.dateRange = [response.data.startTime,response.data.expireTime]
this.open = true; this.open = true;
this.$nextTick(() => { this.title = "修改企业";
roleMenu.then(res => {
let checkedKeys = res.data.checkedKeys
checkedKeys.forEach((v) => {
this.$nextTick(()=>{
this.$refs.menu.setChecked(v, true ,false);
})
})
});
});
this.title = "修改角色";
}); });
}, },
/** 选择角色权限范围触发 */ //查看
dataScopeSelectChange(value) { handleLook(row){
if(value !== '2') { this.handleUpdate(row)
this.$refs.dept.setCheckedKeys([]); this.disabled = true
}
},
/** 分配数据权限操作 */
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 => {
if (valid) { if (valid) {
if (this.form.roleId != undefined) { this.form.startTime = this.form.dateRange[0]
this.form.menuIds = this.getMenuAllCheckedKeys(); this.form.expireTime = this.form.dateRange[1]
updateRole(this.form).then(response => { if (this.form.id != undefined) {
editTenant(this.form).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
} else { } else {
this.form.menuIds = this.getMenuAllCheckedKeys(); saveTenant(this.form).then(response => {
addRole(this.form).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
...@@ -545,33 +391,21 @@ ...@@ -545,33 +391,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 roleIds = row.roleId || this.ids; const Ids = row.id || this.ids;
this.$modal.confirm('是否确认删除角色编号为"' + roleIds + '"的数据项?').then(function() { let _this = this
return delRole(roleIds); this.$modal.confirm('是否确认删除选中的企业数据项?').then(function() {
}).then(() => { deleteTenant(Ids).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>
......
...@@ -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