菜单权限
This commit is contained in:
		
							parent
							
								
									360d8ddb6f
								
							
						
					
					
						commit
						9334cc877d
					
				| 
						 | 
				
			
			@ -64,7 +64,7 @@ export default {
 | 
			
		|||
          open: null,
 | 
			
		||||
          list: [],
 | 
			
		||||
        },
 | 
			
		||||
         {
 | 
			
		||||
        {
 | 
			
		||||
          menuId: getUUID(),
 | 
			
		||||
          parentId: 0,
 | 
			
		||||
          parentName: null,
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +116,19 @@ export default {
 | 
			
		|||
          open: null,
 | 
			
		||||
          list: [],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          menuId: getUUID(),
 | 
			
		||||
          parentId: 0,
 | 
			
		||||
          parentName: null,
 | 
			
		||||
          name: "角色管理",
 | 
			
		||||
          url: "operation-management/role/index",
 | 
			
		||||
          perms: "",
 | 
			
		||||
          type: 1,
 | 
			
		||||
          elIcon: "el-icon-user",
 | 
			
		||||
          orderNum: 0,
 | 
			
		||||
          open: null,
 | 
			
		||||
          list: [],
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ import Vue from "vue";
 | 
			
		|||
import Router from "vue-router";
 | 
			
		||||
import http from "@/utils/httpRequest";
 | 
			
		||||
import { isURL } from "@/utils/validate";
 | 
			
		||||
import { clearLoginInfo } from "@/utils";
 | 
			
		||||
import { clearLoginInfo, getMenu } from "@/utils";
 | 
			
		||||
import FULL_ROUTERS from "./full-routers";
 | 
			
		||||
import $api from "@/api/index.js";
 | 
			
		||||
import store from "@/store";
 | 
			
		||||
| 
						 | 
				
			
			@ -103,23 +103,24 @@ router.beforeEach((to, from, next) => {
 | 
			
		|||
    $api
 | 
			
		||||
      .getUserInfo()
 | 
			
		||||
      .then(({ data }) => {
 | 
			
		||||
        let permissionsData = getMenu(data.data.role);
 | 
			
		||||
        const filterTreeData = (data, permissions) => {
 | 
			
		||||
          console.log(data);
 | 
			
		||||
          
 | 
			
		||||
          return data; //临时性返回所有菜单方便调试
 | 
			
		||||
          // return data.reduce((filtered, node) => {
 | 
			
		||||
          //   // 如果节点的权限在权限数组中
 | 
			
		||||
          //   if (permissions.includes(node.url)) {
 | 
			
		||||
          //     // 递归过滤子节点
 | 
			
		||||
          //     const list = filterTreeData(node.list || [], permissions);
 | 
			
		||||
          //     // 创建一个新的节点,包含过滤后的子节点
 | 
			
		||||
          //     filtered.push({
 | 
			
		||||
          //       ...node,
 | 
			
		||||
          //       list,
 | 
			
		||||
          //     });
 | 
			
		||||
          //   }
 | 
			
		||||
          //   return filtered;
 | 
			
		||||
          // }, []);
 | 
			
		||||
 | 
			
		||||
          // return data; //临时性返回所有菜单方便调试
 | 
			
		||||
          return data.reduce((filtered, node) => {
 | 
			
		||||
            // 如果节点的权限在权限数组中
 | 
			
		||||
            if (permissions.includes(node.url)) {
 | 
			
		||||
              // 递归过滤子节点
 | 
			
		||||
              const list = filterTreeData(node.list || [], permissions);
 | 
			
		||||
              // 创建一个新的节点,包含过滤后的子节点
 | 
			
		||||
              filtered.push({
 | 
			
		||||
                ...node,
 | 
			
		||||
                list,
 | 
			
		||||
              });
 | 
			
		||||
            }
 | 
			
		||||
            return filtered;
 | 
			
		||||
          }, []);
 | 
			
		||||
        };
 | 
			
		||||
        console.log(data, "用户信息");
 | 
			
		||||
        sessionStorage.setItem("role", JSON.stringify(data.data.role));
 | 
			
		||||
| 
						 | 
				
			
			@ -162,10 +163,13 @@ router.beforeEach((to, from, next) => {
 | 
			
		|||
          JSON.stringify(data.data.permissions || "[]")
 | 
			
		||||
        );
 | 
			
		||||
        //添加全量菜单,根据权限进行过滤
 | 
			
		||||
        let _menu = filterTreeData(
 | 
			
		||||
          FULL_ROUTERS.menuList,
 | 
			
		||||
          data.data.permissions
 | 
			
		||||
        );
 | 
			
		||||
        // let _menu = filterTreeData(
 | 
			
		||||
        //   FULL_ROUTERS.menuList,
 | 
			
		||||
        //   data.data.permissions
 | 
			
		||||
        // );
 | 
			
		||||
        console.log(permissionsData);
 | 
			
		||||
        
 | 
			
		||||
        let _menu = filterTreeData(FULL_ROUTERS.menuList, permissionsData);
 | 
			
		||||
        fnAddDynamicMenuRoutes(_menu);
 | 
			
		||||
        sessionStorage.setItem("menuList", JSON.stringify(_menu));
 | 
			
		||||
        router.options.isAddDynamicMenuRoutes = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,6 +136,69 @@ function doHandleMonth(month) {
 | 
			
		|||
  }
 | 
			
		||||
  return m;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * 权限
 | 
			
		||||
 * @param {*} min
 | 
			
		||||
 * @param {*} max
 | 
			
		||||
 */
 | 
			
		||||
export function getMenu(role) {
 | 
			
		||||
  if (role == "ROLE_MERCHANT" || role == "ROLE_MANAGER") {
 | 
			
		||||
    return [
 | 
			
		||||
      "operation-management",
 | 
			
		||||
      "operation-management/commodity/index",
 | 
			
		||||
      "operation-management/order/index",
 | 
			
		||||
      "operation-management/banner/index",
 | 
			
		||||
      "operation-management/notice/index",
 | 
			
		||||
      "operation-management/role/index",
 | 
			
		||||
      "datacenter",
 | 
			
		||||
      "datacenter/customer-analysis/index",
 | 
			
		||||
      "datacenter/product-analysis/index",
 | 
			
		||||
      "datacenter/order-analysis/index",
 | 
			
		||||
      "coupon/index",
 | 
			
		||||
      "presale",
 | 
			
		||||
      "presale/products/index",
 | 
			
		||||
      "presale/order/index",
 | 
			
		||||
      "marketing",
 | 
			
		||||
      "marketing/level/index",
 | 
			
		||||
      "marketing/user/index",
 | 
			
		||||
      "marketing/points-setting/index",
 | 
			
		||||
      "marketing/points-mall/index",
 | 
			
		||||
      "marketing/points-order/index",
 | 
			
		||||
      "local-course/resources",
 | 
			
		||||
      "wallet/index",
 | 
			
		||||
      "ogistics-fare",
 | 
			
		||||
      "logistics-fare/logistics-template/index",
 | 
			
		||||
    ];
 | 
			
		||||
  } else if (role == "ROLE_BRAND_MANAGER") {
 | 
			
		||||
    return [
 | 
			
		||||
      "operation-management",
 | 
			
		||||
      "operation-management/shop-list/index",
 | 
			
		||||
      "operation-management/order/index",
 | 
			
		||||
      "operation-management/role/index",
 | 
			
		||||
      "datacenter",
 | 
			
		||||
      "datacenter/customer-analysis/index",
 | 
			
		||||
      "datacenter/product-analysis/index",
 | 
			
		||||
      "datacenter/order-analysis/index",
 | 
			
		||||
      "brand",
 | 
			
		||||
      "brand/config/index",
 | 
			
		||||
      "local-course/resources",
 | 
			
		||||
      "wallet/index",
 | 
			
		||||
    ];
 | 
			
		||||
  } else if (role == "ROLE_AGENT") {
 | 
			
		||||
    return [
 | 
			
		||||
      "operation-management",
 | 
			
		||||
      "operation-management/shop-list/index",
 | 
			
		||||
      "operation-management/order/index",
 | 
			
		||||
      "operation-management/role/index",
 | 
			
		||||
      "datacenter",
 | 
			
		||||
      "datacenter/customer-analysis/index",
 | 
			
		||||
      "datacenter/product-analysis/index",
 | 
			
		||||
      "datacenter/order-analysis/index",
 | 
			
		||||
      "local-course/resources",
 | 
			
		||||
      "wallet/index",
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function isNumberStr(str) {
 | 
			
		||||
  return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,280 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <div style="height: calc(100vh - 200px)">
 | 
			
		||||
      <obj-table-plus
 | 
			
		||||
        ref="oTable"
 | 
			
		||||
        style="height: 100%"
 | 
			
		||||
        :tableCols="tableCols"
 | 
			
		||||
        :tableProp="tableProp"
 | 
			
		||||
        @query="queryList"
 | 
			
		||||
        v-model="dataList"
 | 
			
		||||
        :tableEvent="tableEvent"
 | 
			
		||||
      >
 | 
			
		||||
        <template slot="tableTop">
 | 
			
		||||
          <el-form :inline="true" :model="formInline" class="demo-form-inline">
 | 
			
		||||
            <el-form-item label="角色名称">
 | 
			
		||||
              <el-input
 | 
			
		||||
                placeholder="请输入角色名称"
 | 
			
		||||
                v-model="formInline.name"
 | 
			
		||||
              ></el-input>
 | 
			
		||||
            </el-form-item>
 | 
			
		||||
            <el-form-item>
 | 
			
		||||
              <el-button type="primary" @click="$refs.oTable.reload()"
 | 
			
		||||
                >查询</el-button
 | 
			
		||||
              >
 | 
			
		||||
              <el-button type="primary" @click="Reset">重置</el-button>
 | 
			
		||||
            </el-form-item>
 | 
			
		||||
          </el-form>
 | 
			
		||||
          <div class="mb-2">
 | 
			
		||||
            <el-button type="primary" size="small" @click="addBanner"
 | 
			
		||||
              >新增角色</el-button
 | 
			
		||||
            >
 | 
			
		||||
          </div>
 | 
			
		||||
        </template>
 | 
			
		||||
      </obj-table-plus>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- 轮播图 -->
 | 
			
		||||
    <addOrUpdate
 | 
			
		||||
      ref="addOrUpdate"
 | 
			
		||||
      @queryList="$refs.oTable.reload()"
 | 
			
		||||
    ></addOrUpdate>
 | 
			
		||||
    <el-dialog title="菜单权限" :visible.sync="dialogTableVisible">
 | 
			
		||||
      <el-form ref="form" :model="form" label-width="120px">
 | 
			
		||||
        <el-form-item label="角色权限:">
 | 
			
		||||
          <el-tree
 | 
			
		||||
            style="margin-top: 10px"
 | 
			
		||||
            ref="tree"
 | 
			
		||||
            :data="data"
 | 
			
		||||
            show-checkbox
 | 
			
		||||
            node-key="id"
 | 
			
		||||
            :default-expand-all="true"
 | 
			
		||||
            :default-checked-keys="menuCheckKeys"
 | 
			
		||||
            :props="defaultProps"
 | 
			
		||||
          >
 | 
			
		||||
          </el-tree>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-form>
 | 
			
		||||
      <div slot="footer" class="dialog-footer">
 | 
			
		||||
        <el-button type="primary">确定</el-button>
 | 
			
		||||
        <el-button @click="dialogTableVisible = false">取消</el-button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import addOrUpdate from "./popup/add-or-update.vue";
 | 
			
		||||
import { mapState } from "vuex";
 | 
			
		||||
import FULL_ROUTERS from "@/router/full-routers";
 | 
			
		||||
export default {
 | 
			
		||||
  components: { addOrUpdate },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      dialogTableVisible: false,
 | 
			
		||||
      activeName: "5",
 | 
			
		||||
      advanceSellStatus: "",
 | 
			
		||||
      dataList: [],
 | 
			
		||||
      form: {},
 | 
			
		||||
      formInline: {
 | 
			
		||||
        name: "",
 | 
			
		||||
      },
 | 
			
		||||
      tableProp: {
 | 
			
		||||
        "auto-resize": true,
 | 
			
		||||
        border: true,
 | 
			
		||||
        height: "auto",
 | 
			
		||||
        "row-id": "id",
 | 
			
		||||
        "show-overflow": false,
 | 
			
		||||
      },
 | 
			
		||||
      selectList: [],
 | 
			
		||||
      data: [],
 | 
			
		||||
      defaultProps: {
 | 
			
		||||
        children: "list",
 | 
			
		||||
        label: "name",
 | 
			
		||||
        value: "menuId",
 | 
			
		||||
      },
 | 
			
		||||
      menuCheckKeys: [],
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    addBanner() {
 | 
			
		||||
      this.$refs.addOrUpdate.toggle().add(this.formInline);
 | 
			
		||||
    },
 | 
			
		||||
    queryList(pageNo, pageSize) {
 | 
			
		||||
      console.log(FULL_ROUTERS);
 | 
			
		||||
      this.data = FULL_ROUTERS.menuList;
 | 
			
		||||
 | 
			
		||||
      setTimeout(() => {
 | 
			
		||||
        let data = [
 | 
			
		||||
          {
 | 
			
		||||
            col: "market_id",
 | 
			
		||||
            id: null,
 | 
			
		||||
            name: "市场经营者",
 | 
			
		||||
            operator: "eq",
 | 
			
		||||
            role: "ROLE_MANAGER",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            col: null,
 | 
			
		||||
            id: null,
 | 
			
		||||
            name: "商户",
 | 
			
		||||
            operator: null,
 | 
			
		||||
            role: "ROLE_MERCHANT",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            col: null,
 | 
			
		||||
            id: null,
 | 
			
		||||
            name: "专员",
 | 
			
		||||
            operator: null,
 | 
			
		||||
            role: "ROLE_ASSISTANT",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            col: null,
 | 
			
		||||
            id: null,
 | 
			
		||||
            name: "代理商",
 | 
			
		||||
            operator: null,
 | 
			
		||||
            role: "ROLE_AGENT",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            col: "MarketId",
 | 
			
		||||
            id: null,
 | 
			
		||||
            name: "老师",
 | 
			
		||||
            operator: null,
 | 
			
		||||
            role: "123",
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            col: "",
 | 
			
		||||
            id: null,
 | 
			
		||||
            name: "测试",
 | 
			
		||||
            operator: "",
 | 
			
		||||
            role: "ROLE_cheshi",
 | 
			
		||||
          },
 | 
			
		||||
        ];
 | 
			
		||||
        this.$refs.oTable.complete(data, Number(5));
 | 
			
		||||
      }, 500);
 | 
			
		||||
      //   this.$api.mer_admin
 | 
			
		||||
      //     .noticePage({
 | 
			
		||||
      //       pageNumber: pageNo,
 | 
			
		||||
      //       pageSize: pageSize,
 | 
			
		||||
      //       ...this.formInline,
 | 
			
		||||
      //     })
 | 
			
		||||
      //     .then((res) => {
 | 
			
		||||
      //       console.log(res);
 | 
			
		||||
      //       this.$refs.oTable.complete(
 | 
			
		||||
      //         res.data.data.data,
 | 
			
		||||
      //         Number(res.data.data.total)
 | 
			
		||||
      //       );
 | 
			
		||||
      //     })
 | 
			
		||||
      //     .catch((err) => {
 | 
			
		||||
      //       this.$refs.oTable.complete(false);
 | 
			
		||||
      //     });
 | 
			
		||||
    },
 | 
			
		||||
    Reset() {
 | 
			
		||||
      this.formInline = {
 | 
			
		||||
        name: "",
 | 
			
		||||
      };
 | 
			
		||||
      this.$refs.oTable.reload();
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    tableCols() {
 | 
			
		||||
      return [
 | 
			
		||||
        // { type: "checkbox", width: "60px", fixed: "left" },
 | 
			
		||||
        {
 | 
			
		||||
          type: "seq",
 | 
			
		||||
          width: "60px",
 | 
			
		||||
          fixed: "left",
 | 
			
		||||
          align: "center",
 | 
			
		||||
          title: "序号",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          title: "角色名称",
 | 
			
		||||
          align: "center",
 | 
			
		||||
          field: "name",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          title: "备注",
 | 
			
		||||
          align: "center",
 | 
			
		||||
          field: "remark",
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          title: "操作",
 | 
			
		||||
          fixed: "right",
 | 
			
		||||
          type: "jsx",
 | 
			
		||||
          width: "380px",
 | 
			
		||||
          align: "center",
 | 
			
		||||
          render: ({ row }) => {
 | 
			
		||||
            //权限
 | 
			
		||||
            let permission = () => {
 | 
			
		||||
              this.dialogTableVisible = true;
 | 
			
		||||
            };
 | 
			
		||||
            let updateBanner = () => {
 | 
			
		||||
              this.$refs.addOrUpdate.toggle(row).update();
 | 
			
		||||
            };
 | 
			
		||||
            let deleteBanner = () => {};
 | 
			
		||||
            let onCancel = () => {};
 | 
			
		||||
            return (
 | 
			
		||||
              <div>
 | 
			
		||||
                <el-button
 | 
			
		||||
                  style="margin-right:10px"
 | 
			
		||||
                  size="mini"
 | 
			
		||||
                  type="warning"
 | 
			
		||||
                  onClick={permission}
 | 
			
		||||
                >
 | 
			
		||||
                  菜单权限
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-button
 | 
			
		||||
                  style="margin-right:10px"
 | 
			
		||||
                  size="mini"
 | 
			
		||||
                  type="success"
 | 
			
		||||
                  onClick={updateBanner}
 | 
			
		||||
                >
 | 
			
		||||
                  数据权限
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-button
 | 
			
		||||
                  style="margin-right:20px"
 | 
			
		||||
                  size="mini"
 | 
			
		||||
                  type="primary"
 | 
			
		||||
                  onClick={updateBanner}
 | 
			
		||||
                >
 | 
			
		||||
                  编辑
 | 
			
		||||
                </el-button>
 | 
			
		||||
                <el-popconfirm
 | 
			
		||||
                  onConfirm={deleteBanner}
 | 
			
		||||
                  onCancel={onCancel}
 | 
			
		||||
                  confirm-button-text="确定"
 | 
			
		||||
                  cancel-button-text="取消"
 | 
			
		||||
                  icon="el-icon-info"
 | 
			
		||||
                  icon-color="red"
 | 
			
		||||
                  title="确定删除吗?"
 | 
			
		||||
                >
 | 
			
		||||
                  <el-button size="mini" type="danger" slot="reference">
 | 
			
		||||
                    删除
 | 
			
		||||
                  </el-button>
 | 
			
		||||
                </el-popconfirm>
 | 
			
		||||
              </div>
 | 
			
		||||
            );
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      ];
 | 
			
		||||
    },
 | 
			
		||||
    tableEvent() {
 | 
			
		||||
      return {
 | 
			
		||||
        "checkbox-all": ({ records, reserves }) => {
 | 
			
		||||
          this.selectList = [...records, ...reserves];
 | 
			
		||||
        },
 | 
			
		||||
        "checkbox-change": ({ records, reserves }) => {
 | 
			
		||||
          this.selectList = [...records, ...reserves];
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
    ...mapState("userData", [
 | 
			
		||||
      "isMerchant",
 | 
			
		||||
      "marketList",
 | 
			
		||||
      "storeList",
 | 
			
		||||
      "marketId",
 | 
			
		||||
      "shopId",
 | 
			
		||||
    ]),
 | 
			
		||||
  },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped></style>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,207 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <obj-modal
 | 
			
		||||
      ref="modal"
 | 
			
		||||
      labelWidth="150px"
 | 
			
		||||
      :modalCols="modalCols"
 | 
			
		||||
      :modalConfig="modalConfig"
 | 
			
		||||
      :modalData="modalData"
 | 
			
		||||
      :modalHandles="modalHandles"
 | 
			
		||||
    >
 | 
			
		||||
      <template slot="dialog__after"> </template>
 | 
			
		||||
    </obj-modal>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { debounce, cloneDeep } from "lodash";
 | 
			
		||||
import { Divider } from "element-ui";
 | 
			
		||||
export default {
 | 
			
		||||
  components: {},
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isAdd: true,
 | 
			
		||||
      //表格属性
 | 
			
		||||
      modalConfig: {
 | 
			
		||||
        title: "",
 | 
			
		||||
        show: false,
 | 
			
		||||
        width: "700px",
 | 
			
		||||
      },
 | 
			
		||||
      modalData: {},
 | 
			
		||||
      settingId: "",
 | 
			
		||||
      form: {},
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    "modalConfig.show"(newVal) {
 | 
			
		||||
      if (!newVal) {
 | 
			
		||||
        //关闭弹窗清空校验
 | 
			
		||||
        setTimeout(() => {
 | 
			
		||||
          this.$refs.modal.resetFields();
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    queryTableData(pageNo, pageSize) {},
 | 
			
		||||
    toggle(e) {
 | 
			
		||||
      if (this.modalConfig.show == false) {
 | 
			
		||||
        this.modalConfig.show = true;
 | 
			
		||||
      } else {
 | 
			
		||||
        this.modalConfig.show = false;
 | 
			
		||||
      }
 | 
			
		||||
      if (e) {
 | 
			
		||||
        this.init(cloneDeep(e));
 | 
			
		||||
      }
 | 
			
		||||
      return {
 | 
			
		||||
        add: (row) => {
 | 
			
		||||
          console.log(row);
 | 
			
		||||
          this.modalData = {
 | 
			
		||||
            targetId: row.targetId,
 | 
			
		||||
            title: "",
 | 
			
		||||
            position: row.position,
 | 
			
		||||
            type: 0,
 | 
			
		||||
            status: true,
 | 
			
		||||
            app: 1,
 | 
			
		||||
          };
 | 
			
		||||
          this.fileList = [];
 | 
			
		||||
          this.modalConfig.title = "添加角色";
 | 
			
		||||
          this.isAdd = true;
 | 
			
		||||
        },
 | 
			
		||||
        update: () => {
 | 
			
		||||
          this.modalConfig.title = "编辑角色";
 | 
			
		||||
          this.isAdd = false;
 | 
			
		||||
        },
 | 
			
		||||
      };
 | 
			
		||||
    },
 | 
			
		||||
    init(row) {
 | 
			
		||||
      this.modalData = row;
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    modalCols() {
 | 
			
		||||
      return [
 | 
			
		||||
        {
 | 
			
		||||
          label: "角色名称",
 | 
			
		||||
          prop: "name",
 | 
			
		||||
          type: "Input",
 | 
			
		||||
          required: true,
 | 
			
		||||
          rules: {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入角色名称",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "角色编码",
 | 
			
		||||
          prop: "roleCode",
 | 
			
		||||
          type: "Input",
 | 
			
		||||
          required: true,
 | 
			
		||||
          rules: {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入角色编码",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "权限字段",
 | 
			
		||||
          prop: "col",
 | 
			
		||||
          type: "Input",
 | 
			
		||||
          required: true,
 | 
			
		||||
          rules: {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入权限字段",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "数据范围",
 | 
			
		||||
          prop: "range",
 | 
			
		||||
          maxlength: "30",
 | 
			
		||||
          rules: {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请选择数据范围",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
          type: "jsx",
 | 
			
		||||
          render: () => {
 | 
			
		||||
            return (
 | 
			
		||||
              <el-select
 | 
			
		||||
                v-model={this.modalData.range}
 | 
			
		||||
                placeholder="请选择销售单位"
 | 
			
		||||
              >
 | 
			
		||||
                {[
 | 
			
		||||
                  {
 | 
			
		||||
                    label: "仅本级",
 | 
			
		||||
                    value: "eq",
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    label: "本级及以下",
 | 
			
		||||
                    value: "in",
 | 
			
		||||
                  },
 | 
			
		||||
                  {
 | 
			
		||||
                    label: "全部",
 | 
			
		||||
                    value: "all",
 | 
			
		||||
                  },
 | 
			
		||||
                ].map((item) => {
 | 
			
		||||
                  return (
 | 
			
		||||
                    <el-option
 | 
			
		||||
                      label={item.label}
 | 
			
		||||
                      value={item.value}
 | 
			
		||||
                    ></el-option>
 | 
			
		||||
                  );
 | 
			
		||||
                })}
 | 
			
		||||
              </el-select>
 | 
			
		||||
            );
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "备注",
 | 
			
		||||
          prop: "remark",
 | 
			
		||||
          type: "Textarea",
 | 
			
		||||
          required: true,
 | 
			
		||||
          maxlength: "120",
 | 
			
		||||
          rows: "5",
 | 
			
		||||
          rules: {
 | 
			
		||||
            required: true,
 | 
			
		||||
            message: "请输入备注内容",
 | 
			
		||||
            trigger: "blur",
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      ];
 | 
			
		||||
    },
 | 
			
		||||
    modalHandles() {
 | 
			
		||||
      return [
 | 
			
		||||
        {
 | 
			
		||||
          label: "取消",
 | 
			
		||||
          handle: () => {
 | 
			
		||||
            this.toggle();
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: "确认",
 | 
			
		||||
          type: "primary",
 | 
			
		||||
          submit: true,
 | 
			
		||||
          handle: () => {
 | 
			
		||||
            console.log(this.modalData);
 | 
			
		||||
            this.toggle();
 | 
			
		||||
            // if (this.isAdd) {
 | 
			
		||||
            //   this.$api.mer_admin.noticeAdd(this.modalData).then((res) => {
 | 
			
		||||
            //     this.toggle();
 | 
			
		||||
            //     this.$emit("queryList");
 | 
			
		||||
            //   });
 | 
			
		||||
            // } else {
 | 
			
		||||
            //   this.$api.mer_admin.noticeUpdate(this.modalData).then((res) => {
 | 
			
		||||
            //     this.toggle();
 | 
			
		||||
            //     this.$emit("queryList");
 | 
			
		||||
            //   });
 | 
			
		||||
            // }
 | 
			
		||||
          },
 | 
			
		||||
        },
 | 
			
		||||
      ];
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  asyncComputed: {},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
</style>
 | 
			
		||||
		Loading…
	
		Reference in New Issue