import type { App } from "vue";
import { createRouter, createWebHashHistory, type RouteRecordRaw } from "vue-router";

export const Layout = () => import("@/layout/index.vue");

// 静态路由
export const constantRoutes: RouteRecordRaw[] = [
  {
    path: "/redirect",
    component: Layout,
    meta: { hidden: true },
    children: [
      {
        path: "/redirect/:path(.*)",
        component: () => import("@/views/redirect/index.vue"),
      },
    ],
  },

  {
    path: "/login",
    component: () => import("@/views/login/index.vue"),
    meta: { hidden: true },
  },

  {
    path: "/",
    component: Layout,
    redirect: "/index",
    meta: {
      title: "数据统计",
      icon: "数据统计",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/data/index.vue"),
        name: "dataStatistics",
        meta: {
          title: "数据统计",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "sales",
        name: "salesStatistics",
        component: () => import("@/views/data/sales.vue"),
        meta: {
          title: "销售统计",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "table",
        name: "tableStatistics",
        component: () => import("@/views/data/table.vue"),
        meta: {
          title: "桌台统计",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "credit",
        name: "creditStatistics",
        component: () => import("@/views/data/credit/index.vue"),
        meta: {
          title: "挂账管理",
          affix: false,
          keepAlive: true,

        },
      },
      {
        path: "credit-detail",
        name: "creditDetail",
        component: () => import("@/views/data/credit/detail.vue"),
        meta: {
          title: "挂账明细",
          affix: false,
          keepAlive: true,
          hidden: true
        },
      },
      {
        path: "work",
        name: "workStatistics",
        component: () => import("@/views/data/work.vue"),
        meta: {
          title: "交班记录",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "401",
        component: () => import("@/views/error/401.vue"),
        meta: { hidden: true },
      },
      {
        path: "404",
        component: () => import("@/views/error/404.vue"),
        meta: { hidden: true },
      },
    ],
  },
  {
    path: "/shop",
    component: Layout,
    meta: {
      title: "店铺管理",
      icon: "shopping",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/shop/config/index.vue"),
        name: "shopConfig",
        meta: {
          title: "店铺配置",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "list",
        component: () => import("@/views/shop/list/index.vue"),
        name: "shopList",
        meta: {
          title: "店铺列表",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "role",
        component: () => import("@/views/admin/system/role/index.vue"),
        name: "shopRole",
        meta: {
          title: "角色管理",
        },
      },
      {
        path: "staff",
        component: () => import("@/views/shop/staff/index.vue"),
        name: "shopStaff",
        meta: {
          title: "员工列表",
        },
      },
      {
        path: "log",
        component: () => import("@/views/shop/log/index.vue"),
        name: "shopLog",
        meta: {
          title: "操作日志",
        },
      },
    ],
  },
  {
    path: "/system",
    component: Layout,
    meta: {
      title: "系统管理",
      icon: "system",
      alwaysShow: true,
    },
    children: [
      {
        path: "params",
        component: () => import("@/views/admin/system/params/index.vue"),
        name: "adminSysParams",
        meta: {
          title: "系统参数",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "user",
        component: () => import("@/views/admin/system/user/index.vue"),
        name: "adminSysUser",
        meta: {
          title: "系统用户",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "role",
        component: () => import("@/views/admin/system/role/index.vue"),
        name: "adminSysRole",
        meta: {
          title: "角色管理",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "menu",
        component: () => import("@/views/admin/system/menu/index.vue"),
        name: "adminSysMenu",
        meta: {
          title: "菜单管理",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "miniAppPages",
        component: () => import("@/views/admin/system/miniAppPages/index.vue"),
        name: "adminSysMiniAppPages",
        meta: {
          title: "小程序页面",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "version",
        component: () => import("@/views/admin/system/version/index.vue"),
        name: "adminSysVersion",
        meta: {
          title: "版本管理",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },
  {
    path: "/register",
    component: Layout,
    meta: {
      title: "激活码",
      icon: "chain",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/register/index.vue"),
        name: "registerIndex",
        meta: {
          title: "激活码列表",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },
  {
    path: "/online-shop",
    component: Layout,
    meta: {
      title: "线上店铺",
      icon: "system1",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/online-shop/index.vue"),
        name: "shopDecoration",
        meta: {
          title: "店铺装修",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "goods-group",
        component: () => import("@/views/online-shop/goods-group.vue"),
        name: "goodsGroup",
        meta: {
          title: "商品分组",
        },
      },
      {
        path: "pad",
        component: () => import("@/views/online-shop/pad-setting.vue"),
        name: "pad",
        meta: {
          title: "Pad点单设置",
        },
      },
    ],
  },
  {
    path: "/system-setting",
    component: Layout,
    meta: {
      title: "系统设置",
      icon: "system",
      alwaysShow: true,
    },
    children: [
      {
        path: "pay-types",
        component: () => import("@/views/system-setting/pay-types/index.vue"),
        name: "payTypes",
        meta: {
          title: "支付方式",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },

  {
    path: "/tool",
    component: Layout,
    meta: {
      title: "经营工具",
      icon: "tools",
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/tool/Instead/index.vue"),
        name: "toolIndex",
        meta: {
          title: "代客下单",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "table",
        component: () => import("@/views/tool/table/index.vue"),
        name: "table",
        meta: {
          title: "台桌管理",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },
  {
    path: "/application",
    component: Layout,
    meta: {
      title: "应用中心",
      icon: "tree",
      alwaysShow: true,
    },
    children: [
      {
        path: "marketing",
        component: () => import("@/views/application/marketing/index.vue"),
        name: "applicationMarketing",
        meta: {
          title: "营销中心",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "index",
        component: () => import("@/views/application/list/index.vue"),
        name: "applicationIndex",
        meta: {
          title: "列表管理",
          affix: false,
          keepAlive: false,
        },

      },
      /**
       * 营销中心 start
       */
      {
        path: "coupon",
        component: () => import("@/views/application/marketing/coupon/list.vue"),
        name: "coupon",
        meta: {
          title: "优惠券",
          affix: false,
          hidden: true
        },
      },
      {
        path: "bwc",
        component: () => import("@/views/application/marketing/bwc.vue"),
        name: "bwc",
        meta: {
          title: "霸王餐",
          affix: false,
          hidden: true
        },
      },
      {
        path: "invite",
        component: () => import("@/views/application/marketing/share/index.vue"),
        name: "invite",
        meta: {
          title: "邀请裂变",
          affix: false,
          hidden: true
        },
      },
      {
        path: "points",
        component: () => import("@/views/application/marketing/points/index.vue"),
        name: "points",
        meta: {
          title: "积分",
          affix: false,
          hidden: true
        },
      },
      {
        path: "ad",
        component: () => import("@/views/application/list/ad/index.vue"),
        name: "ad",
        meta: {
          title: "广告",
          affix: false,
          hidden: true
        },
      },
      /** 营销中心end */

      /**列表start */

      {
        path: "lineUplist",
        component: () => import("@/views/application/list/lineUplist/index.vue"),
        name: "lineUplist",
        meta: {
          title: "叫号",
          affix: false,
          hidden: true
        },
      },
      {
        path: "lineUpRecord",
        component: () => import("@/views/application/list/lineUplist/record.vue"),
        name: "lineUpRecord",
        meta: {
          title: "叫号记录",
          affix: false,
          hidden: true
        },
      },
      {
        path: "advertisement",
        component: () => import("@/views/application/list/advertisement/index.vue"),
        name: "advertisement",
        meta: {
          title: "广告",
          affix: false,
          hidden: true
        },
      },
      {
        path: "storingWine",
        component: () => import("@/views/application/list/storingWine/index.vue"),
        name: "storingWine",
        meta: {
          title: "存酒",
          affix: false,
          hidden: true
        },
      },

      /**列表end */


    ],
  },
  {
    path: "/devices",
    component: Layout,
    meta: {
      title: "设备管理",
      icon: "tab",
      alwaysShow: true,
    },
    children: [
      {
        path: "printer",
        component: () => import("@/views/devices/printer.vue"),
        name: "devicesPrinter",
        meta: {
          title: "打印机",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },
  {
    path: "/product",
    component: Layout,
    meta: {
      title: "商品管理",
      icon: "money",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/product/index.vue"),
        name: "productIndex",
        meta: {
          title: "商品列表",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "addgoods",
        component: () => import("@/views/product/indexconfig/addgoods.vue"),
        name: "addgoods",
        meta: {
          title: "新增商品",
          affix: false,
          keepAlive: true,
          hidden: true
        },
      },
      {
        path: "unit",
        component: () => import("@/views/product/unit.vue"),
        name: "productUnit",
        meta: {
          title: "常用单位",
          affix: false,
        },
      },
      {
        path: "category",
        component: () => import("@/views/product/category.vue"),
        name: "productCategory",
        meta: {
          title: "商品分类",
          affix: false,
        },
      },
      {
        path: "specifications",
        component: () => import("@/views/product/specifications.vue"),
        name: "specifications",
        meta: {
          title: "商品规格",
          affix: false,
        },
      },
    ],
  },
  {
    path: "/inventory",
    component: Layout,
    meta: {
      title: "进销存",
      icon: "tab",
      alwaysShow: true,
    },
    children: [
      {
        path: "consumables",
        component: () => import("@/views/inventory/consumables/index.vue"),
        name: "consumables",
        meta: {
          title: "耗材列表",
          affix: false,

        },
      },
      {
        path: "supplier",
        component: () => import("@/views/inventory/supplier/index.vue"),
        name: "supplier",
        meta: {
          title: "供应商管理",
          affix: false,
          hidden: true
        },
      },
      {
        path: "operation_in",
        component: () => import("@/views/inventory/operation_in/index.vue"),
        name: "operation_in",
        meta: {
          title: "出入库",
          affix: false,
          hidden: true
        },
      },
      {
        path: "paymentRecord",
        component: () => import("@/views/inventory/payment-record.vue"),
        name: "paymentRecord",
        meta: {
          title: "结款记录",
          affix: false,
          hidden: true,

        },
      },
      {
        path: "classification",
        component: () => import("@/views/inventory/classification/index.vue"),
        name: "classification",
        meta: {
          title: "分类管理",
          affix: false,
          hidden: true,

        },
      },

    ],
  },
  {
    path: "/user",
    component: Layout,
    meta: {
      title: "用户管理",
      icon: "peoples",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/user/list/index.vue"),
        name: "userIndex",
        meta: {
          title: "用户列表",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "active",
        component: () => import("@/views/user/active/index.vue"),
        name: "userActive",
        meta: {
          title: "活动管理",
          affix: false,
        },
      },
    ],
  },
  {
    path: "/order",
    component: Layout,
    meta: {
      title: "订单管理",
      icon: "menu",
      alwaysShow: true,
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/order/index/index.vue"),
        name: "orderIndex",
        meta: {
          title: "订单列表",
          affix: false,
          keepAlive: true,
        },
      },
      {
        path: "group-purchase",
        component: () => import("@/views/order/group-purchase.vue"),
        name: "orderRefund",
        meta: {
          title: "团购订单",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },
  {
    path: "/mytemplate",
    component: Layout,
    meta: {
      title: "我的模板",
      icon: "tab",
      alwaysShow: true,
      hidden: true
    },
    children: [
      {
        path: "index",
        component: () => import("@/views/mytemplate/index.vue"),
        name: "mytemplateIndex",
        meta: {
          title: "我的模板",
          affix: false,
          keepAlive: true,
        },
      },
    ],
  },
];

/**
 * 创建路由
 */
const router = createRouter({
  history: createWebHashHistory(),
  routes: constantRoutes,
  // 刷新时，滚动条位置还原
  scrollBehavior: () => ({ left: 0, top: 0 }),
});

// 全局注册 router
export function setupRouter(app: App<Element>) {
  app.use(router);
}

export default router;
