第三周总结

学习时间:每天3h

代码量:每日300行

今日进行放假的测试

石家庄铁道大学2024年夏季

  2022 级课堂测试试卷—Hadoop数据库应用

课程名称:大型数据库应用技术  任课教师王建民  考试时间:实现为止分钟 

 

一、     测试题目

1、完成科技查新基本信息填报功能,基本信息如下所示:

可参考https://chaxin.las.ac.cn/novelty/embed/kjcx.htm页面样式。

项目名称

平台编号

查新范围

□国内    □国外 

查新目的

О立即查新         О成果查新        О其他查新

(单选框,选中某个选项,显示相应的多选框)

立即查新

□1.项目申报(国家级、省部级、学协会、其他)

□2.中小企业创新基金(研发阶段、小试-中试、市场推广)

□3.新产品

□4.技术引进

□5.技术吸收与创新

□6.其他

成果查新

□7.成果鉴定

□8.高新技术成果转化

□9.申报奖励(国家级、省部级、学协会、其他奖励)

□10.高新技术企业认定

□11.其他

其他查新

□12.博士论文开题

□13.申报专利

□14.其他

查新项目的科学技术要点

充分反映出查新项目的概貌,简述项目的背景、技术问题、解决技术问题所采用的方案、主要技术特征、技术参数或指标、应用范围等相关技术内容。(要求限制500字)

查新点个数

(必填)

查新点1

 

查新点N(根据个数显示)

 

参考检索词

(主题词、关键词、规范词、同义词、缩写、全称、化学名称、分子式、专利分类号等,国内外查新要分中英文列出。)如果有多个检索词要求点击按钮添加多个检索词文本框。

完成时间

说明:国内查新7个工作日(1个查新点),每增加1个查新点,查新费用增加300元,工作时间增加1个工作日;国内外查新10个工作日(1个查新点),每增加1个查新点,查新费用增加600元,工作时间增加3个工作日。(国内查新加急不得少于3个工作日,国内外查新加急不得少于5个工作日)。

加急费情况介绍:

收费:200元/工作日

时间:国内查新第一个查新点不得少于3个工作日,每增加一个点多一个工作日;

国内外查新第一个查新点不得少于5个工作日,每增加一个点多一个工作日;

 

正常:О7个工作日

加急:О 

学科分类

用文本下拉框显示,具体内容参考表后图1.

产业分类

用文本下拉框显示,具体内容参考表后图2.

备注

 

 

图1学科分类示意图

 

图2产业分类示意图

2、后台数据库要求使用HBASE数据库,并将新数据存入HBase或者HIVE新建表中。

3、实现从数据库中将新数据读出展示在前台页面。

复制代码
<template>
  <div>
    <h1>项目查新表单</h1>
    <form @submit.prevent="submitForm">
      <div>
        <label for="projectName">项目名称:</label>
        <input type="text" v-model="form.projectName" id="projectName">
      </div>

      <div>
        <label for="platformId">平台编号:</label>
        <input type="text" v-model="form.platformId" id="platformId">
      </div>

      <div>
        <label>查新范围:</label>
        <input type="checkbox" v-model="form.scopeDomestic"> 国内
        <input type="checkbox" v-model="form.scopeInternational"> 国外
      </div>

      <div>
        <label>查新目的:</label>
        <select v-model="form.purpose">
          <option value="立即查新">立即查新</option>
          <option value="成果查新">成果查新</option>
          <option value="其他查新">其他查新</option>
        </select>
      </div>

      <div v-if="form.purpose === '立即查新'">
        <label>立即查新:</label>
        <input type="checkbox" v-model="form.immediateOptions.projectDeclaration"> 项目申报
        <input type="checkbox" v-model="form.immediateOptions.smeInnovationFund"> 中小企业创新基金
        <input type="checkbox" v-model="form.immediateOptions.newProduct"> 新产品
        <input type="checkbox" v-model="form.immediateOptions.technologyIntroduction"> 技术引进
        <input type="checkbox" v-model="form.immediateOptions.technologyAbsorption"> 技术吸收与创新
        <input type="checkbox" v-model="form.immediateOptions.other"> 其他
      </div>

      <div v-if="form.purpose === '成果查新'">
        <label>成果查新:</label>
        <input type="checkbox" v-model="form.resultOptions.resultIdentification"> 成果鉴定
        <input type="checkbox" v-model="form.resultOptions.highTechResultTransformation"> 高新技术成果转化
        <input type="checkbox" v-model="form.resultOptions.awardApplication"> 申报奖励
        <input type="checkbox" v-model="form.resultOptions.highTechEnterprise"> 高新技术企业认定
        <input type="checkbox" v-model="form.resultOptions.other"> 其他
      </div>

      <div v-if="form.purpose === '其他查新'">
        <label>其他查新:</label>
        <input type="checkbox" v-model="form.otherOptions.phdThesis"> 博士论文开题
        <input type="checkbox" v-model="form.otherOptions.patentApplication"> 申报专利
        <input type="checkbox" v-model="form.otherOptions.other"> 其他
      </div>

      <div>
        <label for="techPoints">查新项目的科学技术要点:</label>
        <textarea v-model="form.techPoints" id="techPoints" maxlength="500"></textarea>
      </div>

      <div>
        <label for="numTechPoints">查新点个数:</label>
        <input type="number" v-model="form.numTechPoints" id="numTechPoints" @input="updateTechPointsArray">
      </div>

      <div v-for="(point, index) in form.techPointsArray" :key="index">
        <label :for="'techPoint' + index">查新点{{ index + 1 }}:</label>
        <input type="text" v-model="form.techPointsArray[index]" :id="'techPoint' + index">
      </div>

      <div>
        <label for="keywords">参考检索词:</label>
        <div v-for="(keyword, index) in form.keywords" :key="index">
          <input type="text" v-model="form.keywords[index]" :id="'keyword' + index">
          <button type="button" @click="removeKeyword(index)">删除</button>
        </div>
        <button type="button" @click="addKeyword">添加检索词</button>
      </div>

      <div>
        <label for="completionTime">完成时间:</label>
        <input type="date" v-model="form.completionTime" id="completionTime">
      </div>

      <div>
        <label>学科分类:</label>
        <select v-model="form.subjectClassification">
          <option value="信息科学与系统科学">信息科学与系统科学</option>
          <option value="生物字〔生物医药、生物技术)">生物字〔生物医药、生物技术)</option>
          <option value="力学">力学</option>
          <option value="物理学">物理学</option>
          <option value="化学">化学</option>
          <option value="天文学">天文学</option>
          <option value="地球科学">地球科学</option>
          <option value="材料科学">材料科学</option>
          <option value="动力与电气工程">动力与电气工程</option>
          <option value="环境科字及源科学技术">环境科字及源科学技术</option>
          <option value="能源科学技术">能源科学技术</option>
          <option value="电子与通信技术">电子与通信技术</option>
          <option value="食品科学技术">食品科学技术</option>
          <option value="航空航天科字技术">航空航天科字技术</option>
          <option value="农业科学">农业科学</option>
          <option value="林学">林学</option>
          <option value="水产学">水产学</option>
          <option value="其他科学">其他科学</option>
        </select>
      </div>

      <div>
        <label>产业分类:</label>
        <select v-model="form.industryClassification">
          <option value="节能环俣产业(节水、节能、环俣等)">节能环俣产业(节水、节能、环俣等)</option>
          <option value="生物产业(生物医药、生物工程、生物农业等)">生物产业(生物医药、生物工程、生物农业等)</option>
          <option value="新一代信息技术产业">新一代信息技术产业</option>
          <option value="高端装备制适产业(卫星及服务、轨道涌、智能制适等)">高端装备制适产业(卫星及服务、轨道涌、智能制适等)</option>
          <option value="新能源产业(太阳能、风能、生物质能源等">新能源产业(太阳能、风能、生物质能源等</option>
          <option value="新材料产业(新型功能材料、高分子、无机非金属、复合材料等)">新材料产业(新型功能材料、高分子、无机非金属、复合材料等)</option>
          <option value="新能源汽车">新能源汽车</option>
          <option value="国民经济其他产业">国民经济其他产业</option>
        </select>
      </div>

      <div>
        <label for="remarks">备注:</label>
        <textarea v-model="form.remarks" id="remarks"></textarea>
      </div>

      <button type="submit">提交</button>
      <p v-if="loading">数据插入中...</p>  
      <p v-if="successMessage">{{ successMessage }}</p>  
      <p v-if="errorMessage">{{ errorMessage }}</p>  
    </form>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      form: {
        projectName: '',
        platformId: '',
        scopeDomestic: false,
        scopeInternational: false,
        purpose: '',
        immediateOptions: {
          projectDeclaration: false,
          smeInnovationFund: false,
          newProduct: false,
          technologyIntroduction: false,
          technologyAbsorption: false,
          other: false,
        },
        resultOptions: {
          resultIdentification: false,
          highTechResultTransformation: false,
          awardApplication: false,
          highTechEnterprise: false,
          other: false,
        },
        otherOptions: {
          phdThesis: false,
          patentApplication: false,
          other: false,
        },
        techPoints: '',
        numTechPoints: 1,
        techPointsArray: [''],
        keywords: [''],
        completionTime: '',
        subjectClassification: '',
        industryClassification: '',
        remarks: '',
      },
      loading: false,
      successMessage: '',
      errorMessage: '',
    };
  },
  methods: {
    updateTechPointsArray() {
      const newLength = this.form.numTechPoints;
      while (this.form.techPointsArray.length < newLength) {
        this.form.techPointsArray.push('');
      }
      while (this.form.techPointsArray.length > newLength) {
        this.form.techPointsArray.pop();
      }
    },
    addKeyword() {
      this.form.keywords.push('');
    },
    removeKeyword(index) {
      this.form.keywords.splice(index, 1);
    },
    async submitForm() {
      this.loading = true;
      this.successMessage = '';
      this.errorMessage = '';

      // 将复杂对象转换为字符串并转换复选框选项为汉字
      const payload = {
        ...this.form,
        scopeDomestic: this.form.scopeDomestic ? '国内' : '国外',
        scopeInternational: this.form.scopeInternational ? '国外' : '国内',
        immediateOptions: JSON.stringify(this.convertToChinese(this.form.immediateOptions)),
        resultOptions: JSON.stringify(this.convertToChinese(this.form.resultOptions)),
        otherOptions: JSON.stringify(this.convertToChinese(this.form.otherOptions)),
        techPointsArray: JSON.stringify(this.form.techPointsArray),
        keywords: JSON.stringify(this.form.keywords)
      };

      try {
        const response = await axios.post('http://localhost:8081/projectReview/insert', payload);
        this.successMessage = '插入记录成功!';
      } catch (error) {
        if (error.response) {
          // 请求已发出,服务器以状态代码进行响应
          console.error('响应错误:', error.response.data);
          console.error('响应状态:', error.response.status);
          console.error('响应头:', error.response.headers);
        } else if (error.request) {
          // 请求已发出,但没有收到响应
          console.error('请求错误:', error.request);
        } else {
          // 其他错误
          console.error('错误信息:', error.message);
        }
        console.error('错误配置:', error.config);
        this.errorMessage = '插入记录失败';
      } finally {
        this.loading = false;
      }
    },
    convertToChinese(options) {
      const chineseOptions = {};
      for (const key in options) {
        if (options[key]) {
          switch (key) {
            case 'projectDeclaration':
              chineseOptions[key] = '项目申报';
              break;
            case 'smeInnovationFund':
              chineseOptions[key] = '中小企业创新基金';
              break;
            case 'newProduct':
              chineseOptions[key] = '新产品';
              break;
            case 'technologyIntroduction':
              chineseOptions[key] = '技术引进';
              break;
            case 'technologyAbsorption':
              chineseOptions[key] = '技术吸收与创新';
              break
            case 'other':
              chineseOptions[key] = '其他';
              break;
            case 'resultIdentification':
              chineseOptions[key] = '成果鉴定';
              break;
            case 'highTechResultTransformation':
              chineseOptions[key] = '高新技术成果转化';
              break;
            case 'awardApplication':
              chineseOptions[key] = '申报奖励';
              break;
            case 'highTechEnterprise':
              chineseOptions[key] = '高新技术企业认定';
              break;
            case 'phdThesis':
              chineseOptions[key] = '博士论文开题';
              break;
            case 'patentApplication':
              chineseOptions[key] = '申报专利';
              break;
            default:
              chineseOptions[key] = options[key];
          }
        }
      }
      return chineseOptions;
    },
  },
};
</script>
复制代码

 

posted @   新晋软工小白  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示