apply.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. 'use strict';
  2. const Schema = require('mongoose').Schema;
  3. const moment = require('moment');
  4. const metaPlugin = require('naf-framework-mongoose-free/lib/model/meta-plugin');
  5. const { ObjectId } = require('mongoose').Types;
  6. // 基本信息
  7. const basic = new Schema({
  8. achieve_name: { type: String }, // 成果名称
  9. achieve_type: { type: Array }, // 成果类别
  10. achieve_num: { type: String }, // 成果编号
  11. achieve_date: { type: String }, // 成果取得时间
  12. achieve_form: { type: Array }, // 成果形式
  13. apply_personal: { type: String }, // 申请人
  14. apply_phone: { type: String }, // 申请人
  15. apply_company: { type: String }, // 申请单位
  16. address: { type: String }, // 地址
  17. apply_nature: { type: String }, // 申请单位/申请人属性
  18. contacts: { type: String }, // 联系人
  19. phone: { type: String }, // 联系电话
  20. email: { type: String }, // 邮箱
  21. fax: { type: String }, // 传真
  22. objective: { type: String }, // 评价目的
  23. stage: { type: String }, // 成果所处阶段
  24. output: { type: String }, // 经济效益产值
  25. profit: { type: String }, // 经济效益利润
  26. revenue: { type: String }, // 经济效益税收
  27. // 2021-04-13添加
  28. cert_jfh: { type: String }, // 吉发号
  29. cert_num: { type: String }, // 第几号
  30. cert_sign: { type: String }, // 签字
  31. szd: { type: String }, // 所在地
  32. yb: { type: String }, // 邮编
  33. ls: { type: String }, // 隶属
  34. oneCom_name: { type: String }, // 参加单位1——名称
  35. oneCom_szd: { type: String }, // 参加单位1——所在地
  36. twoCom_name: { type: String }, // 参加单位2——名称
  37. twoCom_szd: { type: String }, // 参加单位2——所在地
  38. shxy: { type: String }, // 社会效益
  39. // 国家奖励
  40. gjjl_num: { type: String }, // 国家奖励项
  41. gjjl_name: { type: String }, // 国家奖励名称
  42. gjjl_grade: { type: String }, // 国家奖励等级
  43. sjjl_num: { type: String }, // 省级奖励项
  44. sjjl_name: { type: String }, // 省级奖励名称
  45. sjjl_grade: { type: String }, // 省级奖励等级
  46. // 计划支持
  47. gjjh_num: { type: String }, // 国家计划项
  48. gjjh_money: { type: String }, // 国家计划经费
  49. sjjh_num: { type: String }, // 省级计划项
  50. sjjh_money: { type: String }, // 省级计划经费
  51. achieve_influence: { type: Array }, // 成果的影响及作用
  52. });
  53. basic.index({ id: 1 });
  54. basic.index({ achieve_num: 1 });
  55. // 内容简介
  56. const brief = new Schema({
  57. achieve_brief: { type: String }, // 成果简介
  58. field: { type: String }, // 应用领域和技术原理
  59. kpi_index: { type: String }, // 性能指标
  60. compare: { type: String }, // 与国内外同类技术比较
  61. advanced: { type: String }, // 成果的创造性,先进性
  62. sense: { type: String }, // 作用意义
  63. prospect: { type: String }, // 推广应用的范围,条件和前景
  64. opinion: { type: String }, // 存在的问题和改进意见
  65. });
  66. brief.index({ id: 1 });
  67. // 主研人员名单
  68. const research = new Schema({
  69. name: { type: String }, // 姓名
  70. gender: { type: String }, // 性别
  71. card: { type: String }, // 证件号码
  72. birth: { type: String }, // 出生年月
  73. age: { type: String }, // 年龄
  74. education: { type: String }, // 文化程度
  75. degree: { type: String }, // 学位
  76. major: { type: String }, // 从事专业
  77. zw: { type: String }, // 职务
  78. zc: { type: String }, // 职称
  79. company: { type: String }, // 工作单位
  80. abroad: { type: String }, // 是否留学归国
  81. work: { type: String }, // 项目中所承担的主要工作
  82. devote: { type: String }, // 对成果创造性贡献
  83. phone: { type: String }, // 电话
  84. email: { type: String }, // 邮箱
  85. });
  86. research.index({ id: 1 });
  87. // 委托方提供资料清单
  88. const datalist = new Schema({
  89. work_report: { type: Array }, // 工作报告(必备)
  90. techol_report: { type: Array }, // 技术报告(必备)
  91. compare_report: { type: Array }, // 国内外对比报告(必备)
  92. benefit: { type: Array }, // 经济效益分析(必备)
  93. science_report: { type: Array }, // 科技查新报告(必备)
  94. techol_detect_report: { type: Array }, // 技术检测报告
  95. user_prove: { type: Array }, // 用户证明
  96. patent_cert: { type: Array }, // 专利证书
  97. software_copyright: { type: Array }, // 软著
  98. treatise: { type: Array }, // 论文
  99. gf: { type: Array }, // 工法
  100. company_standard: { type: Array }, // 企业标准等证明材料
  101. });
  102. datalist.index({ id: 1 });
  103. // 上传文件
  104. const file = new Schema({
  105. page5: { type: Array }, // 现场测试(检测,测产)意见
  106. page6: { type: Array }, // 评价意见
  107. nameList: { type: Array }, // 评价专家组名单
  108. });
  109. file.index({ id: 1 });
  110. // 成果评价申请表
  111. const apply = {
  112. user_id: { type: String }, // 关联用户
  113. status: { type: String, default: '0' }, // 状态
  114. // 1=>初审通过(待评分);-1=>初审失败
  115. // 2=>评分通过(待缴费);-2=>评分失败
  116. // 3=>已缴费(状态)
  117. // 4=>补充资料
  118. // 5=>会审通过;-5=>会审失败(不能改了,没机会了)
  119. // 6=>证书发放
  120. basic: { type: basic },
  121. brief: { type: brief },
  122. research: { type: [research] },
  123. datalist: { type: datalist },
  124. file: { type: file, default: {} }, // 上传文件
  125. remark: { type: String, maxLength: 200 },
  126. create_time: {
  127. type: String,
  128. default: moment().format('YYYY-MM-DD HH:mm:ss'),
  129. },
  130. };
  131. const schema = new Schema(apply, { toJSON: { virtuals: true } });
  132. schema.index({ id: 1 });
  133. schema.index({ user_id: 1 });
  134. schema.index({ status: 1 });
  135. schema.index({ 'meta.createdAt': 1 });
  136. schema.plugin(metaPlugin);
  137. module.exports = (app) => {
  138. const { mongoose } = app;
  139. return mongoose.model('Apply', schema, 'apply');
  140. };