权限管理
This commit is contained in:
		
							parent
							
								
									22cdb23ac1
								
							
						
					
					
						commit
						e5d8ebe25c
					
				| 
						 | 
				
			
			@ -25,8 +25,16 @@ export const role = {
 | 
			
		|||
      data,
 | 
			
		||||
    });
 | 
			
		||||
  },
 | 
			
		||||
  //删除角色列表
 | 
			
		||||
  deleteRoleList: (data) => {
 | 
			
		||||
    return $http.request({
 | 
			
		||||
      url: `/merchant-api/role/delete`,
 | 
			
		||||
      method: "post",
 | 
			
		||||
      data,
 | 
			
		||||
    });
 | 
			
		||||
  },
 | 
			
		||||
  //更新角色权限
 | 
			
		||||
  updateRoleList: (data) => {
 | 
			
		||||
  updatePermissionUpdate: (data) => {
 | 
			
		||||
    return $http.request({
 | 
			
		||||
      url: `/merchant-api/role/permission/update`,
 | 
			
		||||
      method: "put",
 | 
			
		||||
| 
						 | 
				
			
			@ -34,11 +42,11 @@ export const role = {
 | 
			
		|||
    });
 | 
			
		||||
  },
 | 
			
		||||
  //获取角色权限列表
 | 
			
		||||
  updateRoleList: (data) => {
 | 
			
		||||
  getRoleList: (data) => {
 | 
			
		||||
    return $http.request({
 | 
			
		||||
      url: `/merchant-api/role/permission/update`,
 | 
			
		||||
      method: "put",
 | 
			
		||||
      data,
 | 
			
		||||
      url: `/merchant-api/role/permission/list`,
 | 
			
		||||
      method: "get",
 | 
			
		||||
      params: data,
 | 
			
		||||
    });
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,8 +102,12 @@ router.beforeEach((to, from, next) => {
 | 
			
		|||
    });
 | 
			
		||||
    $api
 | 
			
		||||
      .getUserInfo()
 | 
			
		||||
      .then(({ data }) => {
 | 
			
		||||
      .then(async ({ data }) => {
 | 
			
		||||
        let permissionsData = getMenu(data.data.role);
 | 
			
		||||
        if (permissionsData === null) {
 | 
			
		||||
          let res = await $api.role.getRoleList({ roleId: data.data.role });
 | 
			
		||||
          permissionsData = res.data.data;
 | 
			
		||||
        }
 | 
			
		||||
        const filterTreeData = (data, permissions) => {
 | 
			
		||||
          console.log(data);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +171,7 @@ router.beforeEach((to, from, next) => {
 | 
			
		|||
        //   FULL_ROUTERS.menuList,
 | 
			
		||||
        //   data.data.permissions
 | 
			
		||||
        // );
 | 
			
		||||
        console.log(permissionsData);
 | 
			
		||||
        console.log(permissionsData, "11111111111111111111111111111");
 | 
			
		||||
 | 
			
		||||
        let _menu = filterTreeData(FULL_ROUTERS.menuList, permissionsData);
 | 
			
		||||
        fnAddDynamicMenuRoutes(_menu);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -180,7 +180,7 @@ export function getMenu(role) {
 | 
			
		|||
      "operation-management/brand-store/index",
 | 
			
		||||
      // "operation-management/order/index",
 | 
			
		||||
      "operation-management/brand-order/index",
 | 
			
		||||
      "operation-management/role/index",
 | 
			
		||||
      // "operation-management/role/index",
 | 
			
		||||
      "datacenter",
 | 
			
		||||
      "datacenter/customer-analysis/index",
 | 
			
		||||
      "datacenter/product-analysis/index",
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +189,7 @@ export function getMenu(role) {
 | 
			
		|||
      "brand/config/index",
 | 
			
		||||
      "local-course/resources",
 | 
			
		||||
      "wallet/index",
 | 
			
		||||
      "operation-management/accountNumber/index",
 | 
			
		||||
      // "operation-management/accountNumber/index",
 | 
			
		||||
    ];
 | 
			
		||||
  } else if (role == "ROLE_AGENT") {
 | 
			
		||||
    return [
 | 
			
		||||
| 
						 | 
				
			
			@ -198,15 +198,17 @@ export function getMenu(role) {
 | 
			
		|||
      "operation-management/market-list/index",
 | 
			
		||||
      // "operation-management/order/index",
 | 
			
		||||
      "operation-management/brand-order/index",
 | 
			
		||||
      "operation-management/role/index",
 | 
			
		||||
      // "operation-management/role/index",
 | 
			
		||||
      "datacenter",
 | 
			
		||||
      "datacenter/customer-analysis/index",
 | 
			
		||||
      "datacenter/product-analysis/index",
 | 
			
		||||
      "datacenter/order-analysis/index",
 | 
			
		||||
      "local-course/resources",
 | 
			
		||||
      "wallet/index",
 | 
			
		||||
      "operation-management/accountNumber/index",
 | 
			
		||||
      // "operation-management/accountNumber/index",
 | 
			
		||||
    ];
 | 
			
		||||
  } else {
 | 
			
		||||
    return null;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,41 +70,117 @@ export default {
 | 
			
		|||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    modalCols() {
 | 
			
		||||
      return [
 | 
			
		||||
        {
 | 
			
		||||
          label: "姓名",
 | 
			
		||||
          prop: "username",
 | 
			
		||||
          type: "Input",
 | 
			
		||||
          required: true,
 | 
			
		||||
          rules: {
 | 
			
		||||
      if (this.isAdd) {
 | 
			
		||||
        return [
 | 
			
		||||
          {
 | 
			
		||||
            label: "姓名",
 | 
			
		||||
            prop: "username",
 | 
			
		||||
            type: "Input",
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入姓名",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请输入姓名",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "账号",
 | 
			
		||||
          prop: "mobile",
 | 
			
		||||
          type: "Input",
 | 
			
		||||
          required: true,
 | 
			
		||||
          rules: {
 | 
			
		||||
          {
 | 
			
		||||
            label: "账号",
 | 
			
		||||
            prop: "mobile",
 | 
			
		||||
            type: "Input",
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入角色编码",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请输入角色编码",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "密码",
 | 
			
		||||
          prop: "password",
 | 
			
		||||
          type: "Input",
 | 
			
		||||
          required: true,
 | 
			
		||||
          rules: {
 | 
			
		||||
          {
 | 
			
		||||
            label: "密码",
 | 
			
		||||
            prop: "password",
 | 
			
		||||
            type: "Input",
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入权限字段",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请输入权限字段",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      ];
 | 
			
		||||
          {
 | 
			
		||||
            label: "角色",
 | 
			
		||||
            prop: "subRole",
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请绑定角色",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
            type: "jsx",
 | 
			
		||||
            render: () => {
 | 
			
		||||
              return (
 | 
			
		||||
                <el-select
 | 
			
		||||
                  v-model={this.modalData.subRole}
 | 
			
		||||
                  placeholder="请选择销售单位"
 | 
			
		||||
                >
 | 
			
		||||
                  {this.roleList.map((item) => {
 | 
			
		||||
                    return (
 | 
			
		||||
                      <el-option label={item.name} value={item.id}></el-option>
 | 
			
		||||
                    );
 | 
			
		||||
                  })}
 | 
			
		||||
                </el-select>
 | 
			
		||||
              );
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        ];
 | 
			
		||||
      } else {
 | 
			
		||||
        return [
 | 
			
		||||
          {
 | 
			
		||||
            label: "姓名",
 | 
			
		||||
            prop: "username",
 | 
			
		||||
            type: "Input",
 | 
			
		||||
            required: true,
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请输入姓名",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            label: "账号",
 | 
			
		||||
            prop: "mobile",
 | 
			
		||||
            type: "Input",
 | 
			
		||||
            required: true,
 | 
			
		||||
            disabled: true,
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请输入角色编码",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            label: "角色",
 | 
			
		||||
            prop: "subRole",
 | 
			
		||||
            rules: {
 | 
			
		||||
              required: true,
 | 
			
		||||
              message: "请绑定角色",
 | 
			
		||||
              trigger: "blur",
 | 
			
		||||
            },
 | 
			
		||||
            type: "jsx",
 | 
			
		||||
            render: () => {
 | 
			
		||||
              return (
 | 
			
		||||
                <el-select
 | 
			
		||||
                  v-model={this.modalData.subRole}
 | 
			
		||||
                  placeholder="请选择销售单位"
 | 
			
		||||
                >
 | 
			
		||||
                  {this.roleList.map((item) => {
 | 
			
		||||
                    return (
 | 
			
		||||
                      <el-option label={item.name} value={item.id}></el-option>
 | 
			
		||||
                    );
 | 
			
		||||
                  })}
 | 
			
		||||
                </el-select>
 | 
			
		||||
              );
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
        ];
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    modalHandles() {
 | 
			
		||||
      return [
 | 
			
		||||
| 
						 | 
				
			
			@ -134,17 +210,30 @@ export default {
 | 
			
		|||
                  this.$emit("queryList");
 | 
			
		||||
                });
 | 
			
		||||
            } else {
 | 
			
		||||
              this.$api.mer_admin.noticeUpdate(this.modalData).then((res) => {
 | 
			
		||||
                this.toggle();
 | 
			
		||||
                this.$emit("queryList");
 | 
			
		||||
              });
 | 
			
		||||
              this.$api.accountNumber
 | 
			
		||||
                .updateAccount(this.modalData)
 | 
			
		||||
                .then((res) => {
 | 
			
		||||
                  this.toggle();
 | 
			
		||||
                  this.$emit("queryList");
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      ];
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  asyncComputed: {},
 | 
			
		||||
  asyncComputed: {
 | 
			
		||||
    async roleList() {
 | 
			
		||||
      let res = await this.$api.role.roleList({
 | 
			
		||||
        ownerId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
 | 
			
		||||
          ? JSON.parse(sessionStorage.getItem("userInfo")).managerId
 | 
			
		||||
          : JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
 | 
			
		||||
      });
 | 
			
		||||
      console.log(res);
 | 
			
		||||
 | 
			
		||||
      return res.data.data;
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,7 +68,9 @@
 | 
			
		|||
              <div class="stat-right">
 | 
			
		||||
                <div class="stat-title">总商品数量(个)</div>
 | 
			
		||||
                <div class="stat-value">
 | 
			
		||||
                  <span style="font-size: 20px">{{overview.productCount}}</span>
 | 
			
		||||
                  <span style="font-size: 20px">{{
 | 
			
		||||
                    overview.productCount
 | 
			
		||||
                  }}</span>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +79,9 @@
 | 
			
		|||
              <div class="stat-right">
 | 
			
		||||
                <div class="stat-title">上架中商品数量(个)</div>
 | 
			
		||||
                <div class="stat-value">
 | 
			
		||||
                  <span style="font-size: 20px">{{overview.productOnSaleCount}}</span>
 | 
			
		||||
                  <span style="font-size: 20px">{{
 | 
			
		||||
                    overview.productOnSaleCount
 | 
			
		||||
                  }}</span>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +90,9 @@
 | 
			
		|||
              <div class="stat-right">
 | 
			
		||||
                <div class="stat-title">折扣商品数量(个)</div>
 | 
			
		||||
                <div class="stat-value">
 | 
			
		||||
                  <span style="font-size: 20px">{{overview.productDiscountCount}}</span>
 | 
			
		||||
                  <span style="font-size: 20px">{{
 | 
			
		||||
                    overview.productDiscountCount
 | 
			
		||||
                  }}</span>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -95,7 +101,9 @@
 | 
			
		|||
              <div class="stat-right">
 | 
			
		||||
                <div class="stat-title">仓库中商品数量(个)</div>
 | 
			
		||||
                <div class="stat-value">
 | 
			
		||||
                  <span style="font-size: 20px">{{overview.productWarehouseCount}}</span>
 | 
			
		||||
                  <span style="font-size: 20px">{{
 | 
			
		||||
                    overview.productWarehouseCount
 | 
			
		||||
                  }}</span>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +174,7 @@ export default {
 | 
			
		|||
      },
 | 
			
		||||
      productFilterType: "SALE",
 | 
			
		||||
      selectList: [],
 | 
			
		||||
      overview:{}
 | 
			
		||||
      overview: {},
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
| 
						 | 
				
			
			@ -241,7 +249,7 @@ export default {
 | 
			
		|||
          this.$refs.oTable.complete(false);
 | 
			
		||||
        });
 | 
			
		||||
      this.$api.mer_admin.getProductOverview(this.formInline).then((res) => {
 | 
			
		||||
        console.log(res,'概况');
 | 
			
		||||
        console.log(res, "概况");
 | 
			
		||||
        this.overview = res.data.data;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -387,15 +395,13 @@ export default {
 | 
			
		|||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          title: "操作",
 | 
			
		||||
          title: "操作 (提示:下架后可进行操作)",
 | 
			
		||||
          fixed: "right",
 | 
			
		||||
          type: "jsx",
 | 
			
		||||
          align: "center",
 | 
			
		||||
          width: "340px",
 | 
			
		||||
          render: ({ row }) => {
 | 
			
		||||
            let edit = () => {
 | 
			
		||||
              console.log(row);
 | 
			
		||||
 | 
			
		||||
              this.$refs.addOrUpdate.toggle(row).update();
 | 
			
		||||
            };
 | 
			
		||||
            let priceAdjustment = () => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,9 +73,10 @@ export default {
 | 
			
		|||
      };
 | 
			
		||||
    },
 | 
			
		||||
    init(row) {
 | 
			
		||||
      console.log(row);
 | 
			
		||||
      this.ProductData = {
 | 
			
		||||
        merchantId: JSON.parse(sessionStorage.getItem("userInfo")).merchantId,
 | 
			
		||||
        shopId: JSON.parse(sessionStorage.getItem("userInfo")).shopId,
 | 
			
		||||
        shopId: row.shopId,
 | 
			
		||||
        productIds: [row.id],
 | 
			
		||||
        type: "DISCOUNT",
 | 
			
		||||
      };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,11 @@
 | 
			
		|||
      ref="addOrUpdate"
 | 
			
		||||
      @queryList="$refs.oTable.reload()"
 | 
			
		||||
    ></addOrUpdate>
 | 
			
		||||
    <el-dialog title="菜单权限" :visible.sync="dialogTableVisible">
 | 
			
		||||
    <el-dialog
 | 
			
		||||
      v-if="isShow"
 | 
			
		||||
      title="菜单权限"
 | 
			
		||||
      :visible.sync="dialogTableVisible"
 | 
			
		||||
    >
 | 
			
		||||
      <el-form ref="form" :model="form" label-width="120px">
 | 
			
		||||
        <el-form-item label="角色权限:">
 | 
			
		||||
          <el-tree
 | 
			
		||||
| 
						 | 
				
			
			@ -46,16 +50,17 @@
 | 
			
		|||
            ref="tree"
 | 
			
		||||
            :data="data"
 | 
			
		||||
            show-checkbox
 | 
			
		||||
            node-key="id"
 | 
			
		||||
            node-key="url"
 | 
			
		||||
            :default-expand-all="true"
 | 
			
		||||
            :default-checked-keys="menuCheckKeys"
 | 
			
		||||
            :props="defaultProps"
 | 
			
		||||
            @node-click="handleNodeClick"
 | 
			
		||||
          >
 | 
			
		||||
          </el-tree>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-form>
 | 
			
		||||
      <div slot="footer" class="dialog-footer">
 | 
			
		||||
        <el-button type="primary">确定</el-button>
 | 
			
		||||
        <el-button type="primary" @click="sure">确定</el-button>
 | 
			
		||||
        <el-button @click="dialogTableVisible = false">取消</el-button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-dialog>
 | 
			
		||||
| 
						 | 
				
			
			@ -63,6 +68,7 @@
 | 
			
		|||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getMenu } from "@/utils";
 | 
			
		||||
import addOrUpdate from "./popup/add-or-update.vue";
 | 
			
		||||
import { mapState } from "vuex";
 | 
			
		||||
import FULL_ROUTERS from "@/router/full-routers";
 | 
			
		||||
| 
						 | 
				
			
			@ -90,9 +96,11 @@ export default {
 | 
			
		|||
      defaultProps: {
 | 
			
		||||
        children: "list",
 | 
			
		||||
        label: "name",
 | 
			
		||||
        value: "menuId",
 | 
			
		||||
        value: "url",
 | 
			
		||||
      },
 | 
			
		||||
      menuCheckKeys: [],
 | 
			
		||||
      roleId: "",
 | 
			
		||||
      isShow: false,
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
| 
						 | 
				
			
			@ -100,6 +108,11 @@ export default {
 | 
			
		|||
      this.$refs.addOrUpdate.toggle().add(this.formInline);
 | 
			
		||||
    },
 | 
			
		||||
    queryList(pageNo, pageSize) {
 | 
			
		||||
      let permissionsData = getMenu(
 | 
			
		||||
        JSON.parse(sessionStorage.getItem("userInfo")).role
 | 
			
		||||
      );
 | 
			
		||||
      this.data = this.filterTreeData(FULL_ROUTERS.menuList, permissionsData);
 | 
			
		||||
 | 
			
		||||
      this.$api.role
 | 
			
		||||
        .roleList({
 | 
			
		||||
          ownerId: JSON.parse(sessionStorage.getItem("userInfo")).managerId
 | 
			
		||||
| 
						 | 
				
			
			@ -108,10 +121,7 @@ export default {
 | 
			
		|||
        })
 | 
			
		||||
        .then((res) => {
 | 
			
		||||
          console.log(res);
 | 
			
		||||
          this.$refs.oTable.complete(
 | 
			
		||||
            res.data.data,
 | 
			
		||||
            Number(res.data.total)
 | 
			
		||||
          );
 | 
			
		||||
          this.$refs.oTable.complete(res.data.data, Number(res.data.total));
 | 
			
		||||
        })
 | 
			
		||||
        .catch((err) => {
 | 
			
		||||
          this.$refs.oTable.complete(false);
 | 
			
		||||
| 
						 | 
				
			
			@ -123,6 +133,50 @@ export default {
 | 
			
		|||
      };
 | 
			
		||||
      this.$refs.oTable.reload();
 | 
			
		||||
    },
 | 
			
		||||
    sure() {
 | 
			
		||||
      console.log(this.$refs.tree.getHalfCheckedKeys());
 | 
			
		||||
      console.log(this.$refs.tree.getCheckedKeys());
 | 
			
		||||
      this.$api.role
 | 
			
		||||
        .updatePermissionUpdate({
 | 
			
		||||
          roleId: this.roleId,
 | 
			
		||||
          permissions: [
 | 
			
		||||
            ...this.$refs.tree.getHalfCheckedKeys(),
 | 
			
		||||
            ...this.$refs.tree.getCheckedKeys(),
 | 
			
		||||
          ],
 | 
			
		||||
        })
 | 
			
		||||
        .then((res) => {
 | 
			
		||||
          console.log(res);
 | 
			
		||||
          this.dialogTableVisible = false;
 | 
			
		||||
          this.$refs.oTable.reload();
 | 
			
		||||
        });
 | 
			
		||||
    },
 | 
			
		||||
    handleNodeClick(data) {
 | 
			
		||||
      console.log(data);
 | 
			
		||||
    },
 | 
			
		||||
    filterTreeData(data, permissions) {
 | 
			
		||||
      console.log(data);
 | 
			
		||||
      // return data; //临时性返回所有菜单方便调试
 | 
			
		||||
      return data.reduce((filtered, node) => {
 | 
			
		||||
        // 如果节点的权限在权限数组中
 | 
			
		||||
        if (permissions.includes(node.url)) {
 | 
			
		||||
          // 递归过滤子节点
 | 
			
		||||
          const list = this.filterTreeData(node.list || [], permissions);
 | 
			
		||||
          // 创建一个新的节点,包含过滤后的子节点
 | 
			
		||||
          filtered.push({
 | 
			
		||||
            ...node,
 | 
			
		||||
            list,
 | 
			
		||||
          });
 | 
			
		||||
        }
 | 
			
		||||
        return filtered;
 | 
			
		||||
      }, []);
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    dialogTableVisible(e) {
 | 
			
		||||
      if (!e) {
 | 
			
		||||
        this.isShow = false;
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    tableCols() {
 | 
			
		||||
| 
						 | 
				
			
			@ -154,14 +208,29 @@ export default {
 | 
			
		|||
          render: ({ row }) => {
 | 
			
		||||
            //权限
 | 
			
		||||
            let permission = () => {
 | 
			
		||||
              this.dialogTableVisible = true;
 | 
			
		||||
              this.roleId = row.id;
 | 
			
		||||
              this.isShow = true;
 | 
			
		||||
              this.$api.role.getRoleList({ roleId: row.id }).then((res) => {
 | 
			
		||||
                let arr = [
 | 
			
		||||
                  "operation-management",
 | 
			
		||||
                  "datacenter",
 | 
			
		||||
                  "presale",
 | 
			
		||||
                  "marketing",
 | 
			
		||||
                ];
 | 
			
		||||
                this.menuCheckKeys = res.data.data.filter((item) => {
 | 
			
		||||
                  return !arr.includes(item);
 | 
			
		||||
                });
 | 
			
		||||
                this.dialogTableVisible = true;
 | 
			
		||||
              });
 | 
			
		||||
            };
 | 
			
		||||
            let updateBanner = () => {
 | 
			
		||||
              this.$refs.addOrUpdate.toggle(row).update();
 | 
			
		||||
            };
 | 
			
		||||
            let deleteBanner = () => {
 | 
			
		||||
              // this.$api.
 | 
			
		||||
            }
 | 
			
		||||
              this.$api.role.deleteRoleList({ id: row.id }).then((res) => {
 | 
			
		||||
                this.$refs.oTable.reload();
 | 
			
		||||
              });
 | 
			
		||||
            };
 | 
			
		||||
            let onCancel = () => {};
 | 
			
		||||
            return (
 | 
			
		||||
              <div>
 | 
			
		||||
| 
						 | 
				
			
			@ -173,14 +242,6 @@ export default {
 | 
			
		|||
                >
 | 
			
		||||
                  菜单权限
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-button
 | 
			
		||||
                  style="margin-right:10px"
 | 
			
		||||
                  size="mini"
 | 
			
		||||
                  type="success"
 | 
			
		||||
                  onClick={updateBanner}
 | 
			
		||||
                >
 | 
			
		||||
                  数据权限
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-button
 | 
			
		||||
                  style="margin-right:20px"
 | 
			
		||||
                  size="mini"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue