import { menuList } from "@/api/menuMgmt.js";
import { deepClone, toTreeData, getItemData } from "@/utils/js/common.js";
import { mapGetters, mapMutations } from "vuex";
export default {
  data() {
    return {
      MenuDict: {},
      menuListData: [], //简单结构
      menuTreeData: [], //树型结构
      tablePagination: {
        current: 1,
        pageSize: 10,
        total: 20,
        showQuickJumper: true, //是否可以快速跳转至某页
        showSizeChanger: true, //是否可以改变 pageSize
        showTotal: (total, range) => `共${total}条`,
        pageSizeOptions: ["10", "20", "30"],
      },
    };
  },
  computed: {
    menuRouterList() {
      return this.$router.options.routes
        .filter((v) => v.name == "home")[0]
        .children.map((k) => {
          return {
            title: k.meta.title,
            routerPath: k.path,
          };
        });
    },
    ...mapGetters("menu", ["menuList_X", "menuTree_X"]),
    ...mapGetters("user", ["censusList_X", "appsList_X"]),
    MenuChildren() {
      let routerPath = this.$route.path.substr(
        this.$route.path.lastIndexOf("/") + 1
      );
      let result = getItemData(this.menuTree_X, "routerPath", routerPath);
      return result ? result : { children: [] };
    },
  },
  created() {},
  beforeDestroy() {},
  methods: {
    ...mapMutations("menu", ["SET_menuList_X", "SET_menuTree_X"]),
    getMenuList(isFirst = false) {
      let obj = {
        page: this.tablePagination.current, //当前页
        size: this.tablePagination.pageSize, //每页条数
      };
      if (isFirst) {
        obj = {
          page: 1, //-1 全部数据
          size: -1, //-1 全部数据
        };
      }
      menuList(obj).then((res) => {
        // console.log(res);
        let { code, data, dict } = res;
        if (code == 1) {
          data.data = data.data.map((item) => {
            this.menuRouterList.forEach((v) => {
              if (v["title"] == item.name) {
                item["routerPath"] = v["routerPath"];
              }
            });
            item["value"] = item.id;
            item["label"] = item.name;

            return item;
          });
          // console.log(data.data);
          // this.$message.success(res.msg);
          this.tablePagination.current = data.current_page;
          this.tablePagination.total = data.total;

          this.menuListData = data.data;
          this.menuTreeData = toTreeData(data.data, -1, "id", "parentId");
          this.SET_menuList_X(deepClone(this.menuListData));
          this.SET_menuTree_X(deepClone(this.menuTreeData));

          this.MenuDict = dict;
          this.MenuDict["MenuTree"] = deepClone(this.menuTreeData);

          // console.log(this.menuListData);
          // console.log(this.menuTreeData);
          // this.getMenuDict();   //弃用
        }
      });
    },

    getMenuDict() {
      //目前只有三级 一级查询条件-1
      let list = deepClone(this.menuListData);
      let obj = list.sort((a, b) => {
        return parseFloat(b["parentId"]) - parseFloat(a["parentId"]);
      })[0];

      Promise.all([
        // 一级菜单字典
        menuList({
          parentId: -1,
        }),
        // 二级菜单字典
        menuList({
          parentId: obj["firstMenuId"],
        }),
        // 三级菜单字典
        menuList({
          parentId: obj["secondMenuId"],
        }),
      ])
        .then((res) => {
          // 一级菜单字典
          this.MenuDict["firstLevelOptions"] = res[0].data.data;
          // 二级菜单字典
          this.MenuDict["secondLevelOptions"] = res[1].data.data;
          // 三级菜单字典
          this.MenuDict["thirdLevelOptions"] = res[2].data.data;
          // console.log(this.MenuDict);
        })
        .catch((err) => {
          // console.log(err);
        });
    },
  },
};