export type LayoutType = "vertical" | "classic" | "transverse" | "columns";

export type AssemblySizeType = "large" | "default" | "small";

export type LanguageType = "zh-cn" | "en" | null;
export type FormLabelAlign = "top" | "right" | "left" | null;

import type { Menu } from "@/typings/global";
// import { EpPropMergeType } from "element-plus";
import { Login } from "@/api/interface/index";
import { FileData } from "@/typings/business";

/* GlobalState */
/**
 * @param layout ssdddd
 */
export interface GlobalState {
  /**
   * @description 布局模式 (纵向：vertical | 经典：classic | 横向：transverse | 分栏：columns)
   */
  layout: LayoutType;
  /**
   * @description element 组件大小
   * @argument  "large" | "default" | "small";
   */
  assemblySize: AssemblySizeType;
  /**
   * @description 当前系统语言
   */
  language: LanguageType;
  /**
   * @description 当前页面是否全屏
   */
  maximize: boolean;
  /**
   * @description 主题颜色
   */
  primary: string;
  /**
   * @description 深色模式
   */
  isDark: boolean;
  /**
   * @description 灰色模式
   */
  isGrey: boolean;
  /**
   * @description 色弱模式
   */
  isWeak: boolean;
  /**
   * @description 侧边栏反转 (目前仅支持 'vertical' 模式)
   */
  asideInverted: boolean;
  /**
   * @description 折叠菜单
   */
  isCollapse: boolean;
  /**
   * @description 面包屑导航
   */
  breadcrumb: boolean;
  /**
   * @description 面包屑导航图标
   */
  breadcrumbIcon: boolean;
  /**
   * @description 标签页
   */
  tabs: boolean;
  /**
   * @description 标签页图标
   */
  tabsIcon: boolean;
  /**
   * @description 页脚
   */
  footer: boolean;
  /**
   * @description 切换动画
   */
  tabsAnimating: boolean;
  /**
   * @description 自动锁屏时间， 0不设置
   */
  autoLockTime: number;
  globalLabelWidth: number;
  globalAlign: FormLabelAlign;
  /**
   * @description 打开详情页,是否在新标签页打开
   */
  detailBlank: boolean;
  /**
   * @description 每页数量
   */
  pageSizes: any;
  /**
   * @description 自动补全记录
   */
  autocomplete: any;
  /**
   * @description 表单信息记录
   */
  baseMsgTags: BaseMsgTagsGlobal.baseMsgTagsProps[];
  /**
   * @description 菜单是否纵向展示：0: 横向；1：纵向
   */
  menuArrangedVertically: Boolean;
  /**
   * @description 明细页是否是浮动布局
   */
  mxFloat?: string[];
  /**
   * @description 首页布局是否折叠
   */
  homeLayoutCollapse: boolean;
  /**
   * @description 新手教程引导,有则表示已知
   */
  noviceTutorial?: string[];
  /**
   * @description 是否进入408页面
   */
  is408?: boolean;
  /**
   * @description 是否为管理员账号
   */
  isSuper?: boolean;
  /**
   * @description 详情页当前激活tab页 => dwnmae: tabname
   */
  detailtabs?: any;
  /**
   * @description 床垫详情页，是否显示旧公式
   */
  isShowOriginFormulaMattress: boolean;
}

export namespace BaseMsgTagsGlobal {
  export interface baseMsgTagsProps {
    dwname?: string;
    list?: BaseMsgTagsGlobal.baseMsgTagsItem[];
  }
  export interface baseMsgTagsItem {
    id?: number;
    value?: any;
    /**
     * @argument string 类型,default: 默认(新增时刷新); tag:自定义标签
     */
    type?: "default" | "tag" | null;
    name?: string;
  }
}

/* UserState */
export interface UserState {
  token: string;
  accounts: string[];
  userInfo: Login.ResL1APPUserInfo;
  /**
   * @description 用户筛选习惯
   */
  queryHabit?: queryHabitProps[];
  /**
   * @description 历史登陆账号
   */
  historyAccount?: historyAccountProps[];
  /**
   * @description 当前登录账套
   */
  currentAccount: string;
  /**
   * @description 权限列表
   */
  rsltFunids?: number[];
  /**
   * @description 系统选项
   */
  optionList?: sys_option[];
  /**
   * @description 配置名称
   */
  statusname: string;
  /**
   * @description 配置1名称
   */
  woodcodename: string;
  /**
   * @description 配置2名称
   */
  pcodename: string;
}
export interface queryHabitProps {
  /**
   * @description 窗口名称
   */
  dwname: string;
  query: string;
}
export interface historyAccountProps {
  // /**
  //  * @description 账套名称
  //  */
  // account: string;
  /**
   * @description 用户名称
   */
  usercode: string;
}

/* optionList */
export interface sys_option {
  optionid: string;
  optionname: string;
  optionvalue: string;
}

/* tabsMenuProps */
export interface TabsMenuProps {
  icon: string;
  title: string;
  path: string;
  name: string;
  close: boolean;
  query?: any;
}

/* TabsState */
export interface TabsState {
  tabsMenuList: TabsMenuProps[];
}

/* AuthState */
export interface AuthState {
  routeName: string;
  authButtonList: number[] | string[];
  authMenuList: Menu.MenuOptions[];
  optionList: sys_option[];
  /**
   * @description 常用菜单
   */
  commonMenu: CommonMenuItem[];
}

export interface CommonMenuItem {
  funid: string;
}

/* KeepAliveState */
export interface KeepAliveState {
  keepAliveName: string[];
  keepAliveList: KeepAliveListState[];
}

export interface KeepAliveListState {
  fullPath: string;
  times: number;
}

/**
 * @description 布局接口
 */
export namespace DwLayout {
  export interface LayoutItem {
    /**
     * @argument 用户名称
     */
    empid: number;
    account: string;
    layoutList: string[];
  }
  /* LayoutState */
  export interface LayoutState {
    dwlayout: LayoutItem[];
    /**
     * 当前用户在dwlayout的索引值
     */
    userIdx: number;
  }
}

/* customLayout： 窗口自定义布局 */
export interface customLayoutItem {
  dwname: string;
  value: any;
}

/**
 * @description 打印插件electron-hiprint
 */
export namespace HiprintState {
  /**
   * @description 打印设备参数
   */
  export interface printerParams {
    /**
     * @description 指定打印机名称，默认：''（默认打印机）
     */
    printer?: string;
    /**
     * @description 打印任务名称
     */
    title?: string;
    /**
     * @description 是否打印颜色 默认 true
     */
    color?: boolean;
    /**
     * @description 打印份数 默认:1
     */
    copies?: number;
  }
}

/**
 * @description 需要上传/下载的文件
 */
export interface FileState {
  fileList: FileData[];
}
