/CDR

Competition Declaration and Review

Primary LanguageJavaScriptMIT LicenseMIT

CDR

Competition Declaration and Review

科技竞赛申报与评审系统——997雨我无瓜

Vue.js+Flask+MongoDB

frontend指前端

参考文件夹下README.md进行依赖包安装,vue有大量开源组件,可再github上参考借鉴

注意/scc/main.js下的Vue.prototype.$baseURL为后端服务地址,在自己服务器上使用时记得修改部署

backend指后端

后端需要在服务器上部署nginx服务以及mongodb服务,并创建相应空数据表(不创建也莫得问题,程序会自动创建,但校团委账户需要手动创建),推荐使用Robo 3T进行远程访问MongoDB并随时修改数据库

注意Config.py为配置文件,HOST为MongoDB服务地址,DOMAIN_NAME为后端服务地址,用以上传文件时强制写入文件访问名(使用flask的static静态文件读取)

数据库约定


user

  • 说明

    此表用于存储用户的基本信息,账号信息包括__邮箱地址__(mail)、姓名(username)、登陆密码(password)、用户类型(user_type)、学号(ID)、院系(department)、专业(field)、入学年份(admission_year)、联系电话(phone)、专家邮件邀请码(invitation_code)。

  • 其他

    • 每个邮箱唯一对应一个用户。

    • 密码为""的有且只有未设置密码的专家(邀请前为专家建立账号,密码为"",专家接收邀请时设定密码)。 __专业__为一个六位的01字符串:1代表属于这个领域,六位代表:

      A.机械与控制(包括机械、仪器仪表、自动化控制、工程、交通、建筑等)
      B.信息技术(包括计算机、电信、通讯、电子等)
      C.数理(包括数学、物理、地球与空间科学等)
      D.生命科学(包括生物、农学、药学、医学、健康、卫生、食品等)
      E.能源化工(包括能源、材料、石油、化学、化工、生态、环保等)
      F.哲学社会科学(包括哲学、经济、社会、法律、教育、管理)
      

      故,若一个专家的领域为:100001,则代表其领域为A和F。

  • 对象字段要求

    {"mail":string,"username":string,"password":string,"user_type":string('^(admin|user|expert)$'),"ID":string,"department":string,"field":string,"admission_year":int,"phone":string,'invitation_code':string,'realm':string}

project

  • 说明

    此表用于储存建立的项目的基本信息。项目信息包括__项目名称__(project_name)、(第一)作者邮箱(author_email)、(第一)作者姓名(author_name)、项目编码(project_code)、项目状态(project_status)、参加竞赛的id(competition_id)和一个__项目报名表对象__(registration_form)、项目文件(project_files)、已接受评审的专家数(ac_exp_num)。

    用以唯一识别的字段为__项目编码__。

  • 对象字段要求

    {"project_name":string,"author_email":string,"author_ename":string,"project_code":string,"competition_id":string(空串或者competition表中存在的"_id"),"project_status":int,"registration_form":form对象,"project_files":[{"file_type":string('^(photo|video|doc)$'),"file_path":string0}],"ac_exp_num":int}
  • 其他

    "project_status"字段编码解释:

    -2:初审未通过
    -1:编辑中
    0:已提交
    1:通过初审,专家评审中
    2:凉凉
    3:进入现场答辩
    4:优秀奖
    5:三等奖
    6:二等奖
    7:一等奖!!!
    

    form对象格式如下:

    {
    1.作品编码workCode
    2.封面作品名称mainTitle
    3.院系名称department
    4.类别用于封面打钩mainType(取值'type1','type2')
    5.姓名name
    6.学号stuId
    7.出生年月birthday
    8.学历education(取值'A','B','C','D',后续生成pdf再转换)
    9.专业major
    10.入学时间enterTime
    11.作品全称totalTitle
    12.通讯地址address
    13.联系电话phone
    14.邮箱email
    15.申报者情况applier[{
    'name':'xxx',
    'stuId':'xxx',
    'education':'xxx',
    'phone':'xxx',
    'email''xxx'}]
    16.表2作品名称title
    17.表2作品类型typeA,B,C,D,E,F18.作品总体情况说明description
    19.创新点creation
    20.关键词keyword
    21.作品可展示形式display['display1','display2',...,'display8']
    22.作品调查方式investigation['investigation1','investigation2',...,'investigation15']
    }

expert_project

  • 说明:

    此表用于储存专家和项目的关系信息。由于需要实现多对多关系。项目信息包括__项目编码__(project_code)、专家邮箱(expert_mail)、专家姓名(username)、专家评分(score)、评审意见(suggestion)、专家回应状态(status)、发送邀请的时间(invite_date)。

  • 对象字段要求

    {"project_code":string,"expert_mail":string,"username":string,"score":int,"suggestion":string,'invitation_code':string,'status':string('待回应|已接受|已拒绝|已评审')}
    
  • 其他

    "status"字段编码解释:

    -1:待回应
    0:已接受
    1:已拒绝
    2:已评审
    

competition

  • 说明

    此表用于储存学生和项目的关系信息。由于需要实现多对多关系。项目信息包括__竞赛名称__(competition_name)、开始时间(begin_time)、提交截止(submission_ddl)、初审截止(first_review_ddl)、专家初评截止(expert_comments_ddl)、现场赛选拔截止(live_selection_ddl)、结束时间(end_time)、竞赛状态(com_status,-1,0,1,2,3,4,5)、竞赛简介(introduction,只用于发布公告)。

  • 其他

    • 用以唯一识别的字段为自动生成的"_id"

    • "project_status"字段编码解释:

      -1:未开始
      0:报名提交阶段
      1:校团委初审阶段
      2:专家初评阶段
      3:现场答辩阶段
      4:最终结果公布
      5:已结束
      
  • 对象字段要求

    {"competition_name":string,"":string}...

news

  • 说明

    此表用于储存校团委发布公告.项目信息包括__公告编码__(news_code)、公告题目(title)、公告时间(time)、公告内容(content)、公告附件(files)

  • 其他

    • 用以唯一识别的字段为自动生成的"_id"

    • 附件字段为地址列表