import { AuthType, UrlType } from '@/constants/menu'

declare global {
    namespace Model {
        /** 获取验证码 响应 */
        interface VerifyCodeRsp {
            img: string;
            key: string;
        }

        /** 用户登录 请求 */
        interface LoginReq {
            username: string;
            password: string;
        }

        /** 用户查询 请求 */
        interface LoginInReq {
            accountCode: string;
            key: string;
            password: string;
            verifyCode: string;
        }

        /** 用户查询 响应 */
        interface LoginInRsp {
            areauserid: number;
            releType: number;
            orgztypes: string;
            forcechangepass: string;
            logincode: string;
            username: string;
        }

        /** 修改密码 请求 */
        interface UpdatePwdReq {
            newPwd: string; // 新密码
            oldPwd: string; // 旧密码
        }

        /** 获取菜单列表信息 响应 */
        interface MenusRsp {
            resourceCode: string; // 菜单编码
            parentCode: string; // 父ID
            authType: AuthType; // 权限类型
            title: string; // 标题
            urlType: UrlType; // 地址类型
            url: string; // 链接地址
            component: string; // 组件名或组件地址
            icon: string; // 菜单图标
            className: string; // 菜单样式
            sort: number; // 排序
            show: number; // 是否隐藏 - 0:隐藏 1:显示
            remark: string; // 备注
            children?: MenusRsp[],
        }

        /** 处理菜单列表信息 请求 */
        interface DealMenusReq {
            resourceCode: string; // 菜单编码
            parentCode: string; // 父ID
            authType: AuthType; // 权限类型
            title: string; // 标题
            urlType: UrlType; // 地址类型
            url: string; // 链接地址
            component: string; // 组件名或组件地址
            icon: string; // 菜单图标
            className?: string; // 菜单样式
            sort: number; // 排序
            show: number; // 是否隐藏 - 0:隐藏 1:显示
            remark: string; // 备注
        }

        /** 处理菜单列表信息 请求 */
        interface DeleteMenusReq {
            resourceCode: string; // 菜单编码
        }
    }
}