Commit b2364aa9 authored by 徐一鸣's avatar 徐一鸣

Merge branch 'xym' into dev

parents e7514cbe 38e344e4
...@@ -582,4 +582,13 @@ width: 620px!important; ...@@ -582,4 +582,13 @@ width: 620px!important;
font-size: 14px; font-size: 14px;
color: #dde4ff; color: #dde4ff;
margin: 0 20px; margin: 0 20px;
}
.apass_checkbox .el-checkbox__input.is-checked .el-checkbox__inner,
.apass_checkbox .el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #626de9;
border-color: #515fe7;
}
.apass_checkbox .el-checkbox__input.is-checked + .el-checkbox__label {
color: #58617a;
} }
\ No newline at end of file
<template> <template>
<div class="menu_permission"> <div class="menu_permission">
<el-table border :data="data"> <ul class="floor_list first" v-if="data && data.length">
<el-table-column label="名称" width="214"> <li v-for="(first_item, first_index) in data" :key="'p_' + first_index">
<template slot-scope="scope"> <div class="floor_item first">
<div class="permission_list"> <label
<el-checkbox class="el-checkbox apass_checkbox"
:value="selectAllInfo[scope.row.prop]" :class="{ 'is-checked': first_item.selected }"
@change="selectAll(scope.row.prop)" @click="selectedItem(first_item)"
>
<span
class="el-checkbox__input"
:class="{ 'is-checked': first_item.selected }"
> >
{{ scope.row.name }} <span class="el-checkbox__inner"></span>
</el-checkbox> </span>
</div> <span class="el-checkbox__label" v-text="first_item.name"></span>
</template> </label>
</el-table-column> </div>
<el-table-column label="选项"> <ul
<template slot-scope="scope"> class="floor_list second"
<el-checkbox-group v-if="first_item.children && first_item.children.length"
v-model="permissions[scope.row.prop]" >
class="permission_list" <li
@change="selectPermission" v-for="(second_item, second_index) in first_item.children"
:key="'p_' + first_index + '_' + second_index"
> >
<el-checkbox <div class="floor_item second">
v-for="(item, index) in scope.row.children" <label
:label="item.value" class="el-checkbox apass_checkbox"
:key="'permission_' + index" :class="{ 'is-checked': second_item.selected }"
@click="selectedItem(second_item, first_item)"
>
<span
class="el-checkbox__input"
:class="{ 'is-checked': second_item.selected }"
>
<span class="el-checkbox__inner"></span>
</span>
<span
class="el-checkbox__label"
v-text="second_item.name"
></span>
</label>
</div>
<ul
class="floor_list third"
v-if="second_item.children && second_item.children.length"
> >
{{ item.name }} <li
</el-checkbox> v-for="(third_item, third_index) in second_item.children"
</el-checkbox-group> :key="
</template> 'p_' + first_index + '_' + second_index + '_' + third_index
</el-table-column> "
</el-table> >
<div class="floor_item third">
<label
class="el-checkbox apass_checkbox"
:class="{ 'is-checked': third_item.selected }"
@click="selectedItem(third_item, second_item, first_item)"
>
<span
class="el-checkbox__input"
:class="{ 'is-checked': third_item.selected }"
>
<span class="el-checkbox__inner"></span>
</span>
<span
class="el-checkbox__label"
v-text="third_item.name"
></span>
</label>
</div>
<ul
class="floor_list fourth"
v-if="third_item.children && third_item.children.length"
>
<li>
<div class="floor_item fourth">
<label
v-for="(fourth_item,
fourth_index) in third_item.children"
:key="
'p_' +
first_index +
'_' +
second_index +
'_' +
third_index +
'_' +
fourth_index
"
class="el-checkbox apass_checkbox"
:class="{ 'is-checked': fourth_item.selected }"
@click="
selectedItem(
fourth_item,
third_item,
second_item,
first_item
)
"
>
<span
class="el-checkbox__input"
:class="{ 'is-checked': fourth_item.selected }"
>
<span class="el-checkbox__inner"></span>
</span>
<span
class="el-checkbox__label"
v-text="fourth_item.name"
></span>
</label>
</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div> </div>
</template> </template>
...@@ -41,86 +131,104 @@ export default { ...@@ -41,86 +131,104 @@ export default {
event: "change-permissions", event: "change-permissions",
}, },
props: { props: {
permissions: {
type: Object,
default: {},
},
data: { data: {
type: Array, type: Array,
default: () => [], default: () => [],
}, },
}, },
data: () => ({
selectAllInfo: {},
}),
watch: {
permissions: {
handler() {
this.upSelectAllInfo();
},
deep: true,
},
},
methods: { methods: {
selectPermission(values) { selectedItem(
this.$emit("change-permissions", this.permissions); selected_item,
}, p_item = null, // 父元素
upSelectAllInfo() { gp_item = null, // 祖父元素
this.data.forEach((item) => { ggp_item = null // 曾祖父元素
let values = this.permissions[item.prop]; ) {
let datas = this.data.find((v) => v.prop === item.prop).children; let selected = !(selected_item.selected || false);
let selectAllFlag = true;
this.traverse(selected_item, (v) => {
this.$set(v, "selected", selected);
});
if (p_item) {
let selectedAll = true;
datas.forEach((v) => { p_item.children.forEach((item) => {
selectAllFlag = selectAllFlag && values.indexOf(v.value) > -1; selectedAll = selectedAll && item.selected;
}); });
this.selectAllInfo[item.prop] = selectAllFlag; this.$set(p_item, "selected", selectedAll);
}); }
},
selectAll(prop) {
let newValues = { ...this.permissions };
this.selectAllInfo[prop] = !this.selectAllInfo[prop]; if (gp_item) {
let selectedAll = true;
if (this.selectAllInfo[prop]) { gp_item.children.forEach((item) => {
newValues[prop] = this.data selectedAll = selectedAll && item.selected;
.find((item) => item.prop === prop) });
.children.map((item) => item.value);
} else { this.$set(gp_item, "selected", selectedAll);
newValues[prop] = []; }
if (ggp_item) {
let selectedAll = true;
ggp_item.children.forEach((item) => {
selectedAll = selectedAll && item.selected;
});
this.$set(ggp_item, "selected", selectedAll);
}
this.$emit("change", this.data);
},
traverse(obj, cb) {
cb(obj);
if (obj.children && obj.children.length) {
obj.children.forEach((item) => {
this.traverse(item, cb);
});
} }
this.$emit("change-permissions", newValues);
}, },
}, },
mounted() { mounted() {},
this.upSelectAllInfo();
},
}; };
</script> </script>
<style scoped>
<style> .floor_list > li {
.menu_permission .el-table__header-wrapper { display: flex;
display: none; justify-content: flex-start;
align-items: stretch;
} }
.permission_list .el-checkbox { .floor_list.first > li {
color: #58617a; border: 2px solid #f4f7fc;
line-height: 40px; border-radius: 7px;
overflow: hidden;
} }
.permission_list .el-checkbox__input.is-checked .el-checkbox__inner, .floor_list:not(.first) {
.permission_list .el-checkbox__input.is-indeterminate .el-checkbox__inner { flex-grow: 1;
background-color: #626de9;
border-color: #515fe7;
} }
.permission_list .el-checkbox__input.is-checked + .el-checkbox__label { .floor_list:not(.first) > li {
color: #58617a; border-left: 2px solid #f4f7fc;
border-top: 2px solid #f4f7fc;
margin: -2px 0 0 -2px;
} }
.menu_permission .el-table .cell { .floor_list.first > li:not(:first-child) {
padding: 0 50px !important; margin-top: 20px;
} }
.menu_permission .el-table--border { .floor_item {
border: 1px solid #f4f7fc; min-width: 230px;
border-radius: 6px; padding: 10px 30px;
display: flex;
justify-content: center;
align-items: center;
}
.floor_item.fourth {
width: 100%;
justify-content: flex-start;
}
.apass_checkbox {
line-height: 40px;
} }
</style> </style>
...@@ -51,9 +51,8 @@ ...@@ -51,9 +51,8 @@
style="margin-bottom:100px;margin-top:20px;" style="margin-bottom:100px;margin-top:20px;"
> >
<menu-permission <menu-permission
v-model="permission"
:data="permissionData" :data="permissionData"
@change-permissions="changePermissions" @change="changePermissions"
></menu-permission> ></menu-permission>
</div> </div>
</div> </div>
...@@ -77,126 +76,200 @@ export default { ...@@ -77,126 +76,200 @@ export default {
date: "", date: "",
}, },
now_user: 2, //0:普通用户,1:组织管理员,2:超级管理员 now_user: 2, //0:普通用户,1:组织管理员,2:超级管理员
permission: {
value1: [11, 13],
value2: [],
value3: [31, 32, 33],
value4: [],
value5: [],
},
permissionData: [ permissionData: [
{ {
name: "权限管理1", name: "权限管理1",
prop: "value1", selected: false,
value: 1,
children: [ children: [
{ {
name: "权限管理1", name: "权限管理1-1",
selected: false,
value: 11, value: 11,
children: [
{
name: "权限管理1-1-1",
selected: false,
value: 111,
children: [
{
name: "权限管理1-1-1-1",
selected: false,
value: 1111,
},
{
name: "权限管理1-1-1-2",
selected: false,
value: 1112,
},
{
name: "权限管理1-1-1-3",
selected: false,
value: 1113,
},
],
},
],
}, },
{ {
name: "权限管理2", name: "权限管理1-2",
selected: false,
value: 12, value: 12,
}, children: [
{ {
name: "权限管理3", name: "权限管理1-2-1",
value: 13, selected: false,
value: 121,
children: [
{
name: "权限管理1-2-1-1",
selected: false,
value: 1211,
},
{
name: "权限管理1-2-1-2",
selected: false,
value: 1212,
},
{
name: "权限管理1-2-1-3",
selected: false,
value: 1213,
},
],
},
],
}, },
], ],
}, },
{ {
name: "权限管理2", name: "权限管理2",
prop: "value2", selected: false,
value: 2,
children: [ children: [
{ {
name: "权限管理1", name: "权限管理2-1",
selected: false,
value: 21, value: 21,
children: [
{
name: "权限管理2-1-1",
selected: false,
value: 211,
children: [
{
name: "权限管理2-1-1-1",
selected: false,
value: 2111,
},
{
name: "权限管理2-1-1-2",
selected: false,
value: 2112,
},
{
name: "权限管理2-1-1-3",
selected: false,
value: 2113,
},
],
},
],
}, },
{ {
name: "权限管理2", name: "权限管理2-2",
selected: false,
value: 22, value: 22,
}, children: [
{ {
name: "权限管理3", name: "权限管理2-2-1",
value: 23, selected: false,
}, value: 221,
{ children: [
name: "权限管理4", {
value: 24, name: "权限管理2-2-1-1",
}, selected: false,
{ value: 2211,
name: "权限管理5", },
value: 25, {
}, name: "权限管理2-2-1-2",
{ selected: false,
name: "权限管理6", value: 2212,
value: 26, },
}, {
{ name: "权限管理2-2-1-3",
name: "权限管理7", selected: false,
value: 27, value: 2213,
}, },
{ ],
name: "权限管理8", },
value: 28, ],
},
{
name: "权限管理9",
value: 29,
}, },
], ],
}, },
{ {
name: "权限管理3", name: "权限管理3",
prop: "value3", selected: false,
value: 3,
children: [ children: [
{ {
name: "权限管理1", name: "权限管理3-1",
selected: false,
value: 31, value: 31,
children: [
{
name: "权限管理3-1-1",
selected: false,
value: 311,
children: [
{
name: "权限管理3-1-1-1",
selected: false,
value: 3111,
},
{
name: "权限管理3-1-1-2",
selected: false,
value: 3112,
},
{
name: "权限管理3-1-1-3",
selected: false,
value: 3113,
},
],
},
],
}, },
{ {
name: "权限管理2", name: "权限管理3-2",
selected: false,
value: 32, value: 32,
}, children: [
{ {
name: "权限管理3", name: "权限管理3-2-1",
value: 33, selected: false,
value: 321,
},
],
}, },
], ],
}, },
{ {
name: "权限管理4", name: "权限管理4",
prop: "value4", selected: false,
value: 4,
children: [ children: [
{ {
name: "权限管理1", name: "权限管理4-1",
selected: false,
value: 41, value: 41,
}, },
{ {
name: "权限管理2", name: "权限管理4-2",
selected: false,
value: 42, value: 42,
}, },
{
name: "权限管理4",
value: 43,
},
],
},
{
name: "权限管理5",
prop: "value5",
children: [
{
name: "权限管理1",
value: 51,
},
{
name: "权限管理2",
value: 52,
},
{
name: "权限管理5",
value: 53,
},
], ],
}, },
], ],
......
...@@ -15,22 +15,28 @@ ...@@ -15,22 +15,28 @@
<el-table-column label="" width="40"></el-table-column> <el-table-column label="" width="40"></el-table-column>
<el-table-column label="账号" width="160"> <el-table-column label="账号" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-text="scope.row.account"></span> <span v-text="scope.row.user_id"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="业务系统名称"> <el-table-column label="业务系统名称">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-text="scope.row.name"></span> <span v-text="scope.row.user_name"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用户类型" align="center" width="240"> <el-table-column label="用户类型" align="center" width="240">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-text="scope.row.role"></span> <span
v-text="
['-', '超级管理员', '组织管理员', '普通用户', '开发者'][
scope.row.is_admin || 0
]
"
></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用户所属组织"> <el-table-column label="用户所属组织">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-text="scope.row.organization"></span> <span v-text="scope.row.department"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="用户状态" align="center" width="160"> <el-table-column label="用户状态" align="center" width="160">
...@@ -40,7 +46,7 @@ ...@@ -40,7 +46,7 @@
</el-table-column> </el-table-column>
<el-table-column label="申请时间" align="center" width="200"> <el-table-column label="申请时间" align="center" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-text="scope.row.update_time"></span> <span v-text="scope.row.update_date"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="300"> <el-table-column label="操作" align="center" width="300">
...@@ -69,56 +75,51 @@ import apassDialog from "@/components/apass-dialog"; ...@@ -69,56 +75,51 @@ import apassDialog from "@/components/apass-dialog";
export default { export default {
components: { apassList, apassDialog }, components: { apassList, apassDialog },
data: () => ({ data: () => ({
listTotal: 300, listTotal: 0,
listData: [ listData: [],
{
account: "012344",
name: "贵阳机关事务大数据平台",
role: "普通用户",
organization: "贵阳市水利局",
state: 0,
update_time: "2020-04-27 13:24:19",
},
{
account: "012345",
name: "贵州省水利厅",
role: "普通用户",
organization: "贵阳市水利局",
state: 1,
update_time: "2020-04-27 13:24:19",
},
{
account: "012346",
name: "贵州省公安厅",
role: "普通用户",
organization: "贵阳市水利局",
state: 1,
update_time: "2020-04-27 13:24:19",
},
{
account: "012347",
name: "贵阳机关事务大数据平台",
role: "普通用户",
organization: "贵阳市水利局",
state: 1,
update_time: "2020-04-27 13:24:19",
},
{
account: "012348",
name: "长兴县应急指挥平台",
role: "普通用户",
organization: "贵阳市水利局",
state: 1,
update_time: "2020-04-27 13:24:19",
},
],
}), }),
methods: { methods: {
listAction(value) { listAction(filters) {
console.log(value); this.$http
.get("/apaas/backmgt/user/userApply/list", {
params: {
page: filters.page,
limit: filters.size,
},
})
.then(({ data }) => {
this.listTotal = data.total;
this.listData = data.data;
})
.catch((error) => {
console.log(error);
});
}, },
permissionAction(item, passFlag = true) { permissionAction(item, passFlag = true) {
console.log((passFlag ? "通过 " : "拒绝 ") + item.name); this.$http
.put(
"/apaas/backmgt/user/userApply",
{},
{
params: {
result: passFlag ? 1 : 0,
user_id: item.user_id,
id: item.id,
},
}
)
.then(({ data }) => {
this.$message({
message: `操作成功.`,
type: "success",
});
})
.catch((error) => {
this.$message({
message: `操作失败.`,
type: "warning",
});
});
}, },
}, },
}; };
......
...@@ -75,7 +75,7 @@ export default { ...@@ -75,7 +75,7 @@ export default {
}, },
deleteItem(item) { deleteItem(item) {
this.dialogInfo.title = ""; this.dialogInfo.title = "";
this.dialogInfo.msg = "确认删除当前角色"; this.dialogInfo.msg = "确认删除当前角色?";
this.dialogInfo.cancelText = ""; this.dialogInfo.cancelText = "";
this.dialogInfo.sunbmitText = ""; this.dialogInfo.sunbmitText = "";
this.dialogInfo.submit = () => { this.dialogInfo.submit = () => {
......
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<a <a
class="btn" class="btn"
:class="{ warn: scope.row.state === 1 }" :class="{ warn: scope.row.state === 1 }"
@click="setState(scope.row)" @click="changeState(scope.row)"
> >
{{ scope.row.state === 0 ? "启用" : "禁用" }} {{ scope.row.state === 0 ? "启用" : "禁用" }}
</a> </a>
...@@ -126,11 +126,33 @@ export default { ...@@ -126,11 +126,33 @@ export default {
console.log(error); console.log(error);
}); });
}, },
setRole(item) { changeState(item) {
console.log("setRole " + item.name); console.log(item);
},
setState(item) { this.$http
console.log("setState " + item.name); .put(
"/apaas/backmgt/user/status",
{},
{
params: {
user_id: item.user_id,
status: item.state == 0 ? 1 : 0,
},
}
)
.then(({ data }) => {
this.$message({
message: `${item.state == 0 ? "已启用" : "已禁用"}${item.user_name}.`,
type: "success",
});
this.initDatas(this.tempFilter);
})
.catch((error) => {
this.$message({
message: `${item.state == 0 ? "启用" : "禁用"}${item.user_name}失败.`,
type: "warning",
});
});
}, },
}, },
}; };
......
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