diff --git a/src/assets/css/index.css b/src/assets/css/index.css
index aebd520db87e8eceb4143ec451bfa8f10578e42e..977d6ce0740f23792539dcde0815254ad955936a 100644
--- a/src/assets/css/index.css
+++ b/src/assets/css/index.css
@@ -582,4 +582,13 @@ width: 620px!important;
font-size: 14px;
color: #dde4ff;
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
diff --git a/src/components/menu-permission.vue b/src/components/menu-permission.vue
index d1e4bd896911c5cc73ec963f44d523a0bddcfdee..a2e1b22f1c4fc7d8c8ffa6eebb38efa87d381793 100644
--- a/src/components/menu-permission.vue
+++ b/src/components/menu-permission.vue
@@ -1,36 +1,126 @@
+
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -41,86 +131,104 @@ export default {
event: "change-permissions",
},
props: {
- permissions: {
- type: Object,
- default: {},
- },
data: {
type: Array,
default: () => [],
},
},
- data: () => ({
- selectAllInfo: {},
- }),
- watch: {
- permissions: {
- handler() {
- this.upSelectAllInfo();
- },
- deep: true,
- },
- },
methods: {
- selectPermission(values) {
- this.$emit("change-permissions", this.permissions);
- },
- upSelectAllInfo() {
- this.data.forEach((item) => {
- let values = this.permissions[item.prop];
- let datas = this.data.find((v) => v.prop === item.prop).children;
- let selectAllFlag = true;
+ selectedItem(
+ selected_item,
+ p_item = null, // 父元素
+ gp_item = null, // 祖父元素
+ ggp_item = null // 曾祖父元素
+ ) {
+ let selected = !(selected_item.selected || false);
+
+ this.traverse(selected_item, (v) => {
+ this.$set(v, "selected", selected);
+ });
+
+ if (p_item) {
+ let selectedAll = true;
- datas.forEach((v) => {
- selectAllFlag = selectAllFlag && values.indexOf(v.value) > -1;
+ p_item.children.forEach((item) => {
+ selectedAll = selectedAll && item.selected;
});
- this.selectAllInfo[item.prop] = selectAllFlag;
- });
- },
- selectAll(prop) {
- let newValues = { ...this.permissions };
+ this.$set(p_item, "selected", selectedAll);
+ }
- this.selectAllInfo[prop] = !this.selectAllInfo[prop];
+ if (gp_item) {
+ let selectedAll = true;
- if (this.selectAllInfo[prop]) {
- newValues[prop] = this.data
- .find((item) => item.prop === prop)
- .children.map((item) => item.value);
- } else {
- newValues[prop] = [];
+ gp_item.children.forEach((item) => {
+ selectedAll = selectedAll && item.selected;
+ });
+
+ this.$set(gp_item, "selected", selectedAll);
+ }
+
+ 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() {
- this.upSelectAllInfo();
- },
+ mounted() {},
};
-
-
diff --git a/src/pages/authority/addroles.vue b/src/pages/authority/addroles.vue
index 5f9eb010c6848852efb9cf1094b4bd71480eeaa2..bf42119cb39d6c30cc182c1256214d6754aaba18 100644
--- a/src/pages/authority/addroles.vue
+++ b/src/pages/authority/addroles.vue
@@ -51,9 +51,8 @@
style="margin-bottom:100px;margin-top:20px;"
>
@@ -77,126 +76,200 @@ export default {
date: "",
},
now_user: 2, //0:普通用户,1:组织管理员,2:超级管理员
- permission: {
- value1: [11, 13],
- value2: [],
- value3: [31, 32, 33],
- value4: [],
- value5: [],
- },
permissionData: [
{
name: "权限管理1",
- prop: "value1",
+ selected: false,
+ value: 1,
children: [
{
- name: "权限管理1",
+ name: "权限管理1-1",
+ selected: false,
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,
- },
- {
- name: "权限管理3",
- value: 13,
+ children: [
+ {
+ name: "权限管理1-2-1",
+ 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",
- prop: "value2",
+ selected: false,
+ value: 2,
children: [
{
- name: "权限管理1",
+ name: "权限管理2-1",
+ selected: false,
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,
- },
- {
- name: "权限管理3",
- value: 23,
- },
- {
- name: "权限管理4",
- value: 24,
- },
- {
- name: "权限管理5",
- value: 25,
- },
- {
- name: "权限管理6",
- value: 26,
- },
- {
- name: "权限管理7",
- value: 27,
- },
- {
- name: "权限管理8",
- value: 28,
- },
- {
- name: "权限管理9",
- value: 29,
+ children: [
+ {
+ name: "权限管理2-2-1",
+ selected: false,
+ value: 221,
+ children: [
+ {
+ name: "权限管理2-2-1-1",
+ selected: false,
+ value: 2211,
+ },
+ {
+ name: "权限管理2-2-1-2",
+ selected: false,
+ value: 2212,
+ },
+ {
+ name: "权限管理2-2-1-3",
+ selected: false,
+ value: 2213,
+ },
+ ],
+ },
+ ],
},
],
},
{
name: "权限管理3",
- prop: "value3",
+ selected: false,
+ value: 3,
children: [
{
- name: "权限管理1",
+ name: "权限管理3-1",
+ selected: false,
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,
- },
- {
- name: "权限管理3",
- value: 33,
+ children: [
+ {
+ name: "权限管理3-2-1",
+ selected: false,
+ value: 321,
+ },
+ ],
},
],
},
{
name: "权限管理4",
- prop: "value4",
+ selected: false,
+ value: 4,
children: [
{
- name: "权限管理1",
+ name: "权限管理4-1",
+ selected: false,
value: 41,
},
{
- name: "权限管理2",
+ name: "权限管理4-2",
+ selected: false,
value: 42,
},
- {
- name: "权限管理4",
- value: 43,
- },
- ],
- },
- {
- name: "权限管理5",
- prop: "value5",
- children: [
- {
- name: "权限管理1",
- value: 51,
- },
- {
- name: "权限管理2",
- value: 52,
- },
- {
- name: "权限管理5",
- value: 53,
- },
],
},
],