// @ts-ignore
/* eslint-disable */

declare namespace API {
  type Course = {
    id?: number;
    desc?: string;
    pdfUrl?: string;
    notice?: string;
    surveyUrl?: string;
  };

  type Enroll = {
    id?: number;
    courseId?: number;
    name?: string;
    gender?: number;
    institution?: string;
    business?: string;
    department?: string;
    position?: string;
    numberOfPeople?: number;
    source?: number;
    sourceRemark?: string;
    remark?: string;
    email?: string;
    phone?: string;
    payInfo?: string;
    taxNumber?: string;
    taxInstitutionName?: string;
    taxInstitutionAddress?: string;
    taxBank?: string;
    taxBankAccount?: string;
    taxBankPhone?: string;
    taxAddress?: string;
    status?: number;
    agreementId?: number;
    agreementContent?: string;
    createTime?: string;
    updateTime?: string;
    token?: string;
    course?: Course;
  };

  type SubmitEnrollParam = {
    name?: string;
    gender?: number;
    institution?: string;
    business?: string;
    department?: string;
    position?: string;
    numberOfPeople?: number;
    source?: number;
    sourceRemark?: string;
    remark?: string;
    email?: string;
    token?: string;
  };

  type ReportListParam = {
    institutionId?: number;
    title?: string;
    page?: number;
    size?: number;
  };

  type Report = {
    id?: number;
    quantile?: number;
    totalScore?: number;
    rScore?: number;
    r1Score?: number;
    r2Score?: number;
    aScore?: number;
    a1Score?: number;
    a2Score?: number;
    a3Score?: number;
    a4Score?: number;
    cScore?: number;
    c1Score?: number;
    c2Score?: number;
    c3Score?: number;
    c4Score?: number;
    eScore?: number;
    e1Score?: number;
    e2Score?: number;
    e3Score?: number;
    e4Score?: number;
  };

  type UpdateReportParam = {};

  type TargetAddUserParams = {
    paperId?: number;
    targetId?: number;
    account?: string;
    name?: string;
    relation?: number;
  };

  type PaperResult = {
    paperId?: number;
    paperTitle?: string;
    institutionId?: number;
    institutionName?: string;
    totalUser?: number;
    answeredUser?: number;
    targetId?: number;
    targetUserId?: number;
    targetUserAccount?: number;
    targetUserName?: number;
    questionResultList?: QuestionResult[];
  };

  type QuestionResult = {
    questionId?: number;
    title?: string;
    type?: number;
    answerResultList?: AnswerResult[];
  };

  type AnswerResult = {
    submitId?: number;
    answerId?: number;
    questionId?: number;
    userId?: number;
    userAccount?: string;
    userName?: string;
    score?: number;
    content?: string;
  };

  type PaperListParams = {
    institutionId?: number;
    page?: number;
    size?: number;
    type?: number;
    title?: string;
    status?: string;
  };

  type AddQuestionParams = {
    paperId?: number;
    title?: string;
    type?: number;
    score?: number;
    optionList?: QuestionOption[];
    dimension?: string;
    subDimension?: string;
  };

  type UpdateQuestionParams = {
    questionId?: number;
    title?: string;
    type?: number;
    score?: number;
    optionList?: QuestionOption[];
    dimension?: string;
    subDimension?: string;
  };

  type QuestionOption = {
    id?: number;
    title?: string;
    score?: number;
  };

  type PaperList = {
    id?: number;
    institutionId?: number;
    title?: string;
    desc?: string;
    type?: number;
    startTime?: string;
    endTime?: string;
    allowAutoRegister?: number;
    accessType?: number;
    accessExtra?: string;
    accessExtraInfo?: string;
    status?: number;
    createTime?: string;
    updateTime?: string;
  };

  type AddPaperParams = {
    institutionId?: number;
    title?: string;
    desc?: string;
    type?: number;
    startTime?: string;
    endTime?: string;
    accessType?: number;
    accessExtra?: string;
    status?: number;
  };

  type UpdatePaperParams = {
    paperId?: number;
    title?: string;
    desc?: string;
    type?: number;
    startTime?: string;
    endTime?: string;
    accessType?: number;
    accessExtra?: string;
    status?: number;
  };

  type SubmitAnswerParam = {
    paperId?: number;
    useTime?: number;
    status?: number;
    secret?: string;
    answerList?: Answer[];
  };

  type Answer = {
    questionId?: number;
    score?: number;
    text?: string;
    optionId?: RadioValue;
    optionIds?: CheckboxValueType[];
    judge?: RadioValue;
    hasInput?: boolean;
  };

  type Paper = {
    id?: number;
    institutionId?: number;
    institutionName?: string;
    institutionLogo?: string;
    institutionDesc?: string;
    questionCount?: number;
    title?: string;
    desc?: string;
    startTime?: string;
    endTime?: string;
    createTime?: string;
    questionList?: Question[];
    draftUseTime?: number;
    draftAnswerList?: Answer[];
  };

  type AddPaper360Param = {
    paperId?: number;
    targetAccount?: string;
    targetName?: string;
    answerUsers?: Paper360AnswerUser[];
  };

  type Paper360 = {
    id?: number;
    paperId?: number;
    userId?: number;
    account?: string;
    name?: string;
    answerUserList?: Paper360AnswerUser[];
  };

  type Paper360AnswerUser = {
    id?: number;
    userId?: number;
    account?: string;
    name?: string;
    relation?: number;
  };

  type Question = {
    id?: number;
    paperId?: number;
    title?: string;
    hint?: string;
    score?: number;
    type?: number;
    order?: number;
    optionLimit?: number;
    needSort?: number;
    optionList?: Option[];
    dimension?: string;
    subDimension?: string;
  };

  type Option = {
    id?: number;
    questionId?: number;
    needInput?: number;
    title?: string;
    score?: number;
  };

  type TagListParam = {
    institutionId?: number;
    categoryId?: number;
    name?: string;
    page?: number;
    size?: number;
  };

  type Tag = {
    id?: number;
    institutionId?: number;
    institutionName?: string;
    categoryId?: number;
    categoryName?: string;
    name?: string;
    remark?: string;
    status?: number;
    createTime?: string;
  };

  type TagCategory = {
    id?: number;
    name?: string;
    remark?: string;
    status?: number;
    createTime?: string;
  };

  type AddTagParams = {
    institutionId?: number;
    categoryId?: number;
    name?: string;
    remark?: string;
  };

  type UpdateTagParams = {
    tagId?: number;
    name?: string;
    remark?: string;
  };

  type TagListUserParams = {
    tagId?: number;
    page?: number;
    size?: number;
  };

  type BatchTagUser = {
    tagId?: number;
    userIds?: number[];
  };

  type LoginParams = {
    type?: number;
    username?: string;
    password?: string;
    captcha?: string;
    sourceId?: number;
  };

  type RegisterParams = {
    phone?: string;
    password?: string;
    inviteCode?: string;
    captcha?: string;
  };

  type UserListParams = {
    institutionId?: number;
    page?: number;
    size?: number;
    phone?: string;
    name?: string;
    includeSelf?: boolean;
  };

  type AddUserParams = {
    institutionId?: number;
    password?: string;
    phone?: string;
    name?: string;
    idCard?: string;
    department?: string;
    profession?: string;
    type?: number;
  };

  type UpdateUserParams = {
    userId?: number;
    name?: string;
    idCard?: string;
    department?: string;
    profession?: string;
    type?: number;
  };

  type AddInstitutionParams = {
    name?: string;
    logo?: string;
    desc?: string;
  };

  type UpdateInstitutionParams = {
    institutionId?: number;
    name?: string;
    logo?: string;
    desc?: string;
  };

  type InstitutionListParams = {
    page?: number;
    size?: number;
    name?: string;
    register?: number;
  };

  type Institution = {
    id?: number;
    inviteCode?: string;
    name?: string;
    logo?: string;
    desc?: string;
    status?: number;
    register?: number;
    createTime?: string;
    updateTime?: string;
  };

  type Contact = {
    id?: number;
    name?: string;
    industry?: string;
    phone?: string;
    email?: string;
    qq?: string;
    wechat?: string;
    userRemark?: string;
    remark?: string;
    status?: number;
    createTime?: string;
  };

  type ContactListParams = {
    page?: number;
    size?: number;
    name?: string;
    remark?: string;
    status?: number;
  };

  type Consultant = {
    id?: number;
    cnName?: string;
    enName?: string;
    title?: string;
    desc?: string;
    photo?: string;
    updateTime?: string;
    createTime?: string;
  };

  type Article = {
    id?: number;
    title?: string;
    digest?: string;
    author?: string;
    content?: string;
    cover?: string;
    updateTime?: string;
    createTime?: string;
  };
  type services = {
    fileUrl?: string;
    id?: number;
    title?: string;
    status?: number;
    order?: any;
    icon?: string;
    desc?: string;
    updateTime?: string;
    createTime?: string;
  };
  //客户声音接口类型
  type customer = {
    id?: number;
    avatar?: string;
    content?: string;
    name?: string;
    status?: number;
    title?: string;
    updateTime?: string;
    createTime?: string;
  };
  //走近高潜接口类型
  type Video = {
    id?: number;
    url?: string;
    status?: number;
    updateTime?: any;
    createTime?: any;
    total?: number;
    data?: [];
  };
  type AddContactParam = {
    name?: string;
    company?: string;
    email?: string;
    userRemark?: string;
    position?: string;
    phone?: string;
    area?: string;
    city?: string;
  };

  type UpdateContactParam = {
    contactId?: number;
    remark?: string;
    status?: number;
  };

  type User = {
    id?: number;
    institutionId?: number;
    institutionName?: string;
    account?: string;
    name?: string;
    avatar?: string;
    number?: string;
    idCard?: string;
    department?: string;
    profession?: string;
    phone?: string;
    createTime?: string;
    updateTime?: string;
    token?: string;
    permissions?: string[];
    roles?: string[];
    type?: number;
  };

  type UserList = {
    id?: number;
    institutionId?: number;
    institutionName?: string;
    account?: string;
    name?: string;
    avatar?: string;
    number?: string;
    idCard?: string;
    departmentId?: number;
    department?: string;
    professionId?: number;
    profession?: string;
    phone?: string;
    roles?: string;
    status?: number;
    createTime?: string;
    updateTime?: string;
  };

  type BatchResult<T> = {
    total?: number;
    failedCount?: number;
    failedInfo: T[];
  };

  type Page<T> = {
    records?: T[];
    total?: number;
    size?: number;
    current?: number;
    pages?: number;
  };

  type Response<T> = {
    code?: number;
    message?: string;
    data?: T;
  };
}
