Browse Source

Signed-off-by: chen_yx <chenyunxi998@163.com>答题小程序加题库

chen_yx 2 years ago
parent
commit
82ce78793a
100 changed files with 4132 additions and 0 deletions
  1. 10 0
      base-in-front-end-master1/.editorconfig
  2. 3 0
      base-in-front-end-master1/.env.development
  3. 3 0
      base-in-front-end-master1/.env.production
  4. 4 0
      base-in-front-end-master1/.eslintignore
  5. 31 0
      base-in-front-end-master1/.eslintrc.js
  6. 15 0
      base-in-front-end-master1/.gitignore
  7. 66 0
      base-in-front-end-master1/README.md
  8. BIN
      base-in-front-end-master1/_screenshot/WX20200225-144536.png
  9. 5 0
      base-in-front-end-master1/babel.config.js
  10. 33 0
      base-in-front-end-master1/package.json
  11. 43 0
      base-in-front-end-master1/project.config.json
  12. 7 0
      base-in-front-end-master1/project.private.config.json
  13. BIN
      base-in-front-end-master1/public/favicon.ico
  14. 112 0
      base-in-front-end-master1/public/index.html
  15. 21 0
      base-in-front-end-master1/src/App.vue
  16. 74 0
      base-in-front-end-master1/src/api/dataDictionaryApi.js
  17. 59 0
      base-in-front-end-master1/src/api/mypaperApi.js
  18. 50 0
      base-in-front-end-master1/src/api/paperApi.js
  19. 34 0
      base-in-front-end-master1/src/api/stemApi.js
  20. BIN
      base-in-front-end-master1/src/assets/21.jpg
  21. BIN
      base-in-front-end-master1/src/assets/logo.png
  22. 159 0
      base-in-front-end-master1/src/components/layout/aside-menu.vue
  23. 10 0
      base-in-front-end-master1/src/components/layout/index.js
  24. 57 0
      base-in-front-end-master1/src/components/layout/search-white-board.vue
  25. 16 0
      base-in-front-end-master1/src/components/layout/white-board.vue
  26. 2 0
      base-in-front-end-master1/src/constants/constants.js
  27. 27 0
      base-in-front-end-master1/src/filters/date-format.js
  28. 9 0
      base-in-front-end-master1/src/filters/index.js
  29. 32 0
      base-in-front-end-master1/src/filters/money-format.js
  30. 71 0
      base-in-front-end-master1/src/filters/str-format.js
  31. 47 0
      base-in-front-end-master1/src/main.js
  32. 5 0
      base-in-front-end-master1/src/plugins/element-ui.js
  33. 1 0
      base-in-front-end-master1/src/plugins/index.js
  34. 89 0
      base-in-front-end-master1/src/router/index.js
  35. 319 0
      base-in-front-end-master1/src/utils/date-kit.js
  36. 133 0
      base-in-front-end-master1/src/utils/http-kit.js
  37. 96 0
      base-in-front-end-master1/src/utils/http-kit2.js
  38. 23 0
      base-in-front-end-master1/src/utils/str-kit.js
  39. 94 0
      base-in-front-end-master1/src/views/login.vue
  40. 21 0
      base-in-front-end-master1/src/views/logout.vue
  41. 116 0
      base-in-front-end-master1/src/views/main.vue
  42. 377 0
      base-in-front-end-master1/src/views/system/dataAcc/list.vue
  43. 531 0
      base-in-front-end-master1/src/views/system/dataDict/list.vue
  44. 382 0
      base-in-front-end-master1/src/views/system/dataPaper/list.vue
  45. 419 0
      base-in-front-end-master1/src/views/system/dataPaper2/list.vue
  46. 9 0
      base-in-front-end-master1/vue.config.js
  47. BIN
      doc/201725010205_胡新豪_华南农业大学实习总结.doc
  48. BIN
      doc/201725010205_胡新豪_附件1:华南农业大学学生教学实习成绩考核表 .doc
  49. BIN
      doc/201725010207_李杰鸿_附件1:华南农业大学学生教学实习成绩考核表.doc
  50. BIN
      doc/201725010207_李杰鸿_附件2:华南农业大学实习总结.doc
  51. BIN
      doc/201725010211_梁景洲_附件1:华南农业大学学生教学实习成绩考核表.doc
  52. BIN
      doc/201725010211_梁景洲_附件2:华南农业大学实习总结.doc
  53. BIN
      doc/201725010214_刘健鑫_附件1:华南农业大学学生教学实习成绩考核表.doc
  54. BIN
      doc/201725010214_刘健鑫_附件2:华南农业大学实习总结.doc
  55. BIN
      doc/201725010216_龙富棉_华南农业大学学生教学实习成绩考核表.doc
  56. BIN
      doc/201725010216_龙富棉_华南农业大学实习总结.doc
  57. BIN
      doc/201725010217_毛功焕_华南农业大学学生教学实习成绩考核表.doc
  58. BIN
      doc/201725010217_毛功焕_华南农业大学实习总结.doc
  59. BIN
      doc/201725010218_潘滠文_华南农业大学学生教学实习成绩考核表.doc
  60. BIN
      doc/201725010218_潘滠文_华南农业大学实习总结.doc
  61. 1 0
      k12-qhelp-question-bank-back-end
  62. 8 0
      springboot-04-mybatis-plus/.idea/.gitignore
  63. 22 0
      springboot-04-mybatis-plus/.idea/compiler.xml
  64. 6 0
      springboot-04-mybatis-plus/.idea/encodings.xml
  65. 25 0
      springboot-04-mybatis-plus/.idea/jarRepositories.xml
  66. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml
  67. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml
  68. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_2.xml
  69. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml
  70. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_2.xml
  71. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml
  72. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml
  73. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml
  74. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_0.xml
  75. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_0.xml
  76. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_0.xml
  77. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_0.xml
  78. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_0.xml
  79. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_0.xml
  80. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml
  81. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_google_guava_guava_20_0.xml
  82. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml
  83. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml
  84. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml
  85. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_github_openfeign_feign_core_10_2_3.xml
  86. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_github_openfeign_feign_jackson_10_2_3.xml
  87. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml
  88. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml
  89. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml
  90. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml
  91. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml
  92. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml
  93. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml
  94. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml
  95. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__io_swagger_swagger_models_1_5_21.xml
  96. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml
  97. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml
  98. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml
  99. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml
  100. 13 0
      springboot-04-mybatis-plus/.idea/libraries/Maven__junit_junit_4_13.xml

+ 10 - 0
base-in-front-end-master1/.editorconfig

@@ -0,0 +1,10 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+

+ 3 - 0
base-in-front-end-master1/.env.development

@@ -0,0 +1,3 @@
+NODE_ENV=development
+
+VUE_APP_HOME_API_URL=http://127.0.0.1:8080/base-in-back-end

+ 3 - 0
base-in-front-end-master1/.env.production

@@ -0,0 +1,3 @@
+NODE_ENV=production
+
+VUE_APP_HOME_API_URL=http://127.0.0.1:8080/base-in-back-end

+ 4 - 0
base-in-front-end-master1/.eslintignore

@@ -0,0 +1,4 @@
+/build/
+/config/
+/dist/
+/*.js

+ 31 - 0
base-in-front-end-master1/.eslintrc.js

@@ -0,0 +1,31 @@
+// https://eslint.org/docs/user-guide/configuring
+
+module.exports = {
+    root: true,
+    parserOptions: {
+        parser: 'babel-eslint'
+    },
+    env: {
+        browser: true,
+    },
+    extends: [
+        // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
+        // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
+        'plugin:vue/essential',
+        // https://github.com/standard/standard/blob/master/docs/RULES-en.md
+        'standard'
+    ],
+    // required to lint *.vue files
+    plugins: [
+        'vue'
+    ],
+    // add your custom rules here
+    rules: {
+        'indent': ['off', 2],
+        // allow async-await
+        'generator-star-spacing': 'off',
+        // allow debugger during development
+        'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+        "no-console": "off"
+    }
+}

+ 15 - 0
base-in-front-end-master1/.gitignore

@@ -0,0 +1,15 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Example user template template
+### Example user template
+
+.DS_Store
+
+# IntelliJ project files
+.idea
+*.iml
+out
+gen
+
+node_modules
+dist
+/package-lock.json

+ 66 - 0
base-in-front-end-master1/README.md

@@ -0,0 +1,66 @@
+# base-in-front-end
+管理后台基础框架
+
+# 目录结构
+```
+_screenshot             截图指南
+public                  静态文件(不会编译打包)
+src
+    -|  api             接口类(根据服务端接口文档/Swagger-ui)
+    -|  assets          静态文件(编译打包)
+    -|  components      业务封装的组件
+    -|  constants       静态常量
+    -|  filters         过滤器(Vue Filter)
+    -|  plugins         插件(第三方的依赖、给main.js文件解耦)
+    -|  router          路由配置(Vue-Router)
+    -|  utils           工具类(JS常用方法封装)
+    -|  views           视图页面
+    -|  App.vue
+    -|  main.js
+```
+
+# 知识准备
+## Vue 全家桶
+### Vue-CLI
+- https://www.bilibili.com/video/BV1U5411h7oH
+
+### Vue2.*
+- https://www.bilibili.com/video/BV1Zb411T7dm
+- https://www.bilibili.com/video/BV1qb41187fZ
+- https://www.bilibili.com/video/BV1H7411j7Mc
+
+### Vue-Router
+- https://www.bilibili.com/video/BV1cK411572A
+- https://www.bilibili.com/video/BV1Pt411e7aH
+- https://www.bilibili.com/video/BV1bV411r7mg
+
+### Vuex
+- https://www.bilibili.com/video/BV1h7411N7bg
+- https://www.bilibili.com/video/BV1gt4y1X78g
+- https://www.bilibili.com/video/BV1gt4y1X78g
+
+## UI
+### Element-ui
+- https://www.bilibili.com/video/BV1YE411A746
+- https://www.bilibili.com/video/BV1EE411B7SU
+
+
+## 网路请求
+### axios
+
+# 效果图
+![](/_screenshot/WX20200225-144536.png)
+
+# 如何启动
+## 切换阿里私服
+- 切换
+`npm config set registry https://registry.npm.taobao.org/`
+
+- 检查是否切换成功
+`npm config get registry`
+
+## 安装依赖
+`npm install`
+
+## 运行项目
+`npm run serve`

BIN
base-in-front-end-master1/_screenshot/WX20200225-144536.png


+ 5 - 0
base-in-front-end-master1/babel.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ]
+}

+ 33 - 0
base-in-front-end-master1/package.json

@@ -0,0 +1,33 @@
+{
+  "name": "base-in-front-end",
+  "version": "0.0.1",
+  "private": true,
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build"
+  },
+  "dependencies": {
+    "axios": "^0.19.0",
+    "cli-engine": "^4.7.6",
+    "core-js": "^3.4.3",
+    "element-ui": "^2.13.0",
+    "js-cookie": "^2.2.1",
+    "lodash": "^4.17.15",
+    "nprogress": "^0.2.0",
+    "quill": "^1.3.7",
+    "vue": "^2.6.10",
+    "vue-quill-editor": "^3.0.6",
+    "vue-router": "^3.1.3"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "^4.1.0",
+    "@vue/cli-plugin-router": "^4.1.1",
+    "@vue/cli-service": "^4.1.0",
+    "prettier": "^1.19.1",
+    "vue-template-compiler": "^2.6.10"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions"
+  ]
+}

+ 43 - 0
base-in-front-end-master1/project.config.json

@@ -0,0 +1,43 @@
+{
+  "appid": "wx35bd1eaecd7409f5",
+  "compileType": "miniprogram",
+  "libVersion": "2.24.7",
+  "packOptions": {
+    "ignore": [],
+    "include": []
+  },
+  "setting": {
+    "urlCheck": true,
+    "coverView": true,
+    "es6": true,
+    "postcss": true,
+    "lazyloadPlaceholderEnable": false,
+    "preloadBackgroundData": false,
+    "minified": true,
+    "autoAudits": false,
+    "uglifyFileName": false,
+    "uploadWithSourceMap": true,
+    "enhance": true,
+    "showShadowRootInWxmlPanel": true,
+    "packNpmManually": false,
+    "packNpmRelationList": [],
+    "minifyWXSS": true,
+    "useStaticServer": true,
+    "showES6CompileOption": false,
+    "checkInvalidKey": true,
+    "babelSetting": {
+      "ignore": [],
+      "disablePlugins": [],
+      "outputPath": ""
+    },
+    "disableUseStrict": false,
+    "useCompilerPlugins": false,
+    "minifyWXML": true
+  },
+  "condition": {},
+  "editorSetting": {
+    "tabIndent": "insertSpaces",
+    "tabSize": 2
+  },
+  "description": "项目配置文件,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html"
+}

+ 7 - 0
base-in-front-end-master1/project.private.config.json

@@ -0,0 +1,7 @@
+{
+  "projectname": "base-in-front-end-master1",
+  "setting": {
+    "compileHotReLoad": true
+  },
+  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html"
+}

BIN
base-in-front-end-master1/public/favicon.ico


+ 112 - 0
base-in-front-end-master1/public/index.html

@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title>题库管理</title>
+
+    <style>
+      html, body, h1, h2, h3, h4, h5, h6, div, dl, dt, dd, ul, ol, li, p, blockquote, pre, hr, figure, table, caption, th, td, form, fieldset, legend, input, button, textarea, menu {
+        margin: 0;
+        padding: 0;
+      }
+
+      header, footer, section, article, aside, nav, hgroup, address, figure, figcaption, menu, details {
+        display: block;
+      }
+
+      table {
+        border-collapse: collapse;
+        border-spacing: 0;
+      }
+
+      caption, th {
+        text-align: left;
+        font-weight: normal;
+      }
+
+      html, body, fieldset, img, iframe, abbr {
+        border: 0;
+      }
+
+      i, cite, em, var, address, dfn {
+        font-style: normal;
+      }
+
+      [hidefocus], summary {
+        outline: 0;
+      }
+
+      li {
+        list-style: none;
+      }
+
+      h1, h2, h3, h4, h5, h6, small {
+        font-size: 100%;
+      }
+
+      sup, sub {
+        font-size: 83%;
+      }
+
+      pre, code, kbd, samp {
+        font-family: inherit;
+      }
+
+      q:before, q:after {
+        content: none;
+      }
+
+      textarea {
+        overflow: auto;
+        resize: none;
+      }
+
+      label, summary {
+        cursor: default;
+      }
+
+      a, button {
+        cursor: pointer;
+      }
+
+      h1, h2, h3, h4, h5, h6, em, strong, b {
+        font-weight: normal;
+      }
+
+      del, ins, u, s, a, a:hover {
+        text-decoration: none;
+      }
+
+      body, textarea, input, button, select, keygen, legend {
+        font: 14px/1em 'microsoft yahei', arial;
+        color: #333;
+        outline: 0;
+      }
+
+      body {
+        background: #fff;
+      }
+
+      a {
+        line-height: 24px;
+      }
+
+      a {
+        color: #333;
+      }
+
+      a:hover {
+      }
+    </style>
+  </head>
+  <body>
+    <noscript>
+      <strong>We're sorry but hello doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

+ 21 - 0
base-in-front-end-master1/src/App.vue

@@ -0,0 +1,21 @@
+<template>
+  <div id="app">
+    <router-view />
+  </div>
+</template>
+
+<style>
+  #app {
+    font-family: 'Avenir', Helvetica, Arial, sans-serif;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+    text-align: center;
+    color: #2c3e50;
+  }
+
+  .search-label {
+    color: #606266;
+    line-height: 28px;
+    padding-right: 10px;
+  }
+</style>

+ 74 - 0
base-in-front-end-master1/src/api/dataDictionaryApi.js

@@ -0,0 +1,74 @@
+import HttpKit from '@/utils/http-kit'
+
+export default {
+  /**
+   * 功能描述:查询数据字典
+   * @param form
+   */
+
+  page (form) {
+    return HttpKit.post(`/api/stem/page`, {
+      data: form
+    }).then(
+      res => res.data
+    )
+  },page1(form){
+     return HttpKit.post(`/api/paper/page`, {
+        data: form
+      }).then(
+        res => res.data
+      )
+  },
+  /**
+   * 功能描述:根据[字典标识]查询所以下级
+   * @param dataDictId
+   */
+  findDataDictById (form2,paperId) {
+    return HttpKit.post(`/api/paper/paper-stem/${paperId}`,{
+        data : form2
+    }).then(
+      res => res.data
+    )
+  },
+  /**
+   * 功能描述:根据[字典唯一标识]查询所以下级
+   * @param dictKey
+   */
+  findDataDictByDictKey (dictKey) {
+    return HttpKit.get(`/common/data-dict/dict-key/${dictKey}`).then(
+      res => res.data
+    )
+  },
+  /**
+   * 功能描述:新增/更新词典
+   * @param form
+   */
+  saveOrUpdate (form) {
+    return HttpKit.post(`/common/data-dict`, {
+      data: form
+    }).then(
+      res => res.data
+    )
+  },
+  /**
+   * 功能描述:根据Id删除词典
+   * @param dataDictId
+   */
+  deleteDataDictPoint (dataDictId) {
+    return HttpKit.delete(`/common/data-dict/${dataDictId}`).then(
+      res => res.body
+    )
+  },
+
+  /**
+   * 功能描述:根据id获得试卷内容
+   * @param id
+   * @returns
+   */
+  getExamById(id){
+    return HttpKit.get(`http://127.0.0.1:8888/api/exam/${id}`)
+      .then(
+
+      )
+  }
+}

+ 59 - 0
base-in-front-end-master1/src/api/mypaperApi.js

@@ -0,0 +1,59 @@
+/*
+ * @Author: error: git config user.name && git config user.email & please set dead value or install git
+ * @Date: 2022-06-21 13:55:42
+ * @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
+ * @LastEditTime: 2022-06-22 17:35:44
+ * @FilePath: \base-in-front-end-master1\src\api\mypaperApi.js
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+import HttpKit from '@/utils/http-kit'
+
+export default {
+  /**
+   * 功能描述:查询试卷
+   * @param form
+   */
+  page1 (form) {
+    return HttpKit.post(`http://127.0.0.1:8888/api/exam/list`, form).then(
+      res => res.data
+    ).catch(err =>{
+
+    })
+  },
+
+  /**
+   * 功能描述:新增试卷
+   * @param form
+   */
+  Update (form) {
+    return HttpKit.post(`http://127.0.0.1:8888/api/exam/add`,form).then(
+
+      //res => res.data
+    )
+  },
+  /**
+   * 功能描述:根据Id删除试卷
+   * @param paperId
+   */
+  deleteByPaperId (paperId) {
+    return HttpKit.delete(`http://127.0.0.1:8080/base-in-back-end/common/paper/rf/${paperId}`).then(
+      res => res.body
+    )
+  },
+
+  preview (paperId) {
+    return HttpKit.get(`http://127.0.0.1:8080/base-in-back-end/common/paper/${paperId}/topic`).then(res=>res.data
+    )
+  },
+  showStem(stemId) {
+    // TOTD return HttpKit.get(`http://112.74.105.17:20003/question-bank/api/stem/${stemId}`).then(res=>res.data)
+    return HttpKit.get(`http://127.0.0.1:8080/question-bank/api/stem/${stemId}`).then(res=>res.data)
+  },
+
+  getExamById(id){
+    return HttpKit.get(`http://127.0.0.1:8888/api/exam/${id}`)
+      .then(
+        res => res.data
+      )
+  }
+}

+ 50 - 0
base-in-front-end-master1/src/api/paperApi.js

@@ -0,0 +1,50 @@
+/*
+ * @Author: error: git config user.name && git config user.email & please set dead value or install git
+ * @Date: 2022-06-21 13:55:42
+ * @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
+ * @LastEditTime: 2022-06-22 17:36:17
+ * @FilePath: \base-in-front-end-master1\src\api\paperApi.js
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+import HttpKit from '@/utils/http-kit'
+
+export default {
+  /**
+   * 功能描述:查询试卷
+   * @param form
+   */
+  page (form) {
+    return HttpKit.post(`http://127.0.0.1:8080/base-in-back-end/common/paper/page`, form).then(
+      res => res.data,
+    )
+  },
+  /**
+   * 功能描述:新增试卷
+   * @param form
+   */
+  Update (form) {
+    return HttpKit.post(`http://127.0.0.1:8080/base-in-back-end/common/paper`,form).then(
+
+      //res => res.data
+    )
+  },
+  /**
+   * 功能描述:根据Id删除试卷
+   * @param paperId
+   */
+  deleteByPaperId (paperId) {
+    return HttpKit.delete(`http://127.0.0.1:8080/base-in-back-end/common/paper/rf/${paperId}`).then(
+      res => res.body
+    )
+  },
+
+  preview (paperId) {
+    return HttpKit.get(`http://127.0.0.1:8080/base-in-back-end/common/paper/${paperId}/topic`).then(res=>res.data
+    )
+  },
+  showStem(stemId) {
+    //todo
+    // return HttpKit.get(`http://112.74.105.17:20003/question-bank/api/stem/${stemId}`).then(res=>res.data)
+    return HttpKit.get(`http://127.0.0.1:8080/question-bank/api/stem/${stemId}`).then(res=>res.data)
+  }
+}

+ 34 - 0
base-in-front-end-master1/src/api/stemApi.js

@@ -0,0 +1,34 @@
+/*
+ * @Author: error: git config user.name && git config user.email & please set dead value or install git
+ * @Date: 2022-06-21 13:55:42
+ * @LastEditors: error: git config user.name && git config user.email & please set dead value or install git
+ * @LastEditTime: 2022-06-28 11:35:29
+ * @FilePath: \base-in-front-end-master1\src\api\stemApi.js
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+import HttpKit from '@/utils/http-kit'
+
+export default {
+  /**
+   * 功能描述:查询题干
+   * @param form
+   */
+  page (form) {
+    // TODO
+    // return HttpKit.post(`http://112.74.105.17:20003/question-bank/api/stem/page`, form).then(
+      return HttpKit.post(`http://127.0.0.1:20003/question-bank/api/stem/page`, form).then(
+      res => res.data,
+    ).catch(err=>{
+      console.log(err);
+    })
+  },
+  page1 (form) {
+    // TODO http://127.0.0.1:8888
+    // return HttpKit.post(`http://112.74.105.17:20003/question-bank/api/paper/page`, form).then(
+      return HttpKit.post(`http://127.0.0.1:8888/question-bank/api/paper/page`, form).then(
+      res => res.data,
+    )
+  },
+
+
+}

BIN
base-in-front-end-master1/src/assets/21.jpg


BIN
base-in-front-end-master1/src/assets/logo.png


+ 159 - 0
base-in-front-end-master1/src/components/layout/aside-menu.vue

@@ -0,0 +1,159 @@
+<template>
+  <el-menu
+    class="el-menu-vertical"
+    :default-active="menuList[0].menuName"
+    :style="{ height: screenHeight - 60 + 'px' }"
+    :collapse="collapse"
+  >
+    <el-menu-item
+      v-for="menu in menuList"
+      :key="menu.menuName"
+      v-if="!menu.groupList"
+      :index="menu.menuName"
+    >
+      <i v-if="menu.icon" :class="menu.icon" />
+      <i v-if="menu.iconBase64">
+        <img :src="menu.iconBase64" />&nbsp;&nbsp;
+      </i>
+      <span slot="title" v-if="menu.routerName">
+        <router-link :to="{ name: menu.routerName }">
+          {{
+          menu.menuName
+          }}
+        </router-link>
+      </span>
+      <span v-if="menu.url" slot="title">{{ menu.menuName }}</span>
+    </el-menu-item>
+
+    <el-submenu v-else :index="menu.menuName">
+      <template slot="title">
+        <i v-if="menu.icon" :class="menu.icon" />
+        <i v-if="menu.iconBase64">
+          <img :src="menu.iconBase64" />&nbsp;&nbsp;
+        </i>
+
+        <span slot="title">{{ menu.menuName }}</span>
+      </template>
+      <el-menu-item-group>
+        <el-menu-item v-for="group in menu.groupList" :key="group.menuName" :index="group.menuName">
+          <i :class="group.icon" />
+          <i v-if="group.iconBase64">
+            <img :src="group.iconBase64" />&nbsp;&nbsp;
+          </i>
+
+          <span slot="title" v-if="group.routerName">
+            <router-link :to="{ name: group.routerName }">
+              {{
+              group.menuName
+              }}
+            </router-link>
+          </span>
+          <span v-if="group.url" slot="title">{{ group.menuName }}</span>
+        </el-menu-item>
+      </el-menu-item-group>
+    </el-submenu>
+  </el-menu>
+</template>
+
+<script>
+export default {
+  name: "LayoutAsideMenu",
+  components: {},
+  props: {
+    collapse: {
+      type: Boolean,
+      required: true,
+      default: false
+    }
+  },
+  data() {
+    return {
+      screenHeight: document.documentElement.clientHeight, // 获取可视屏幕高度
+
+      /**
+       * 左侧菜单对象
+       * routerName 与 url 不能并存
+       * routerName:内部链接,通过vue-router跳转
+       * url:外部链接,打开浏览器新的tab页
+       *
+       * icon 与 iconBase64 不能并存
+       * icon:element-ui自带的icon
+       * iconBase64:外部图片base64的编码(统一在[iconfont]查找icon, 颜色[#909399], 大小[16], 转换为base64编码)
+       *
+       * https://www.iconfont.cn
+       * http://imgbase64.duoshitong.com
+       * todo 后面增加属性支持页面嵌套打开
+       */
+      menuList: [
+        {
+          icon: "el-icon-data-analysis",
+          menuName: "数据大盘",
+          routerName: "DataMarketIndex"
+        },
+
+        {
+          icon: "el-icon-s-cooperation",
+          menuName: "题库管理",
+          groupList: [
+           {
+              icon: "el-icon-collection",
+              menuName: "题库·题干",
+              routerName: "AccountIndex"
+              },{
+                            icon: "el-icon-collection",
+                            menuName: "题库·新增试卷",
+                            routerName: "paper"
+
+              }
+
+          ]
+
+        }
+      ]
+    };
+  },
+  watch: {
+    screenHeight(val) {
+      // 为了避免频繁触发resize函数导致页面卡顿,使用定时器
+      if (!this.timer) {
+        // 一旦监听到的screenWidth值改变,就将其重新赋给data里的screenWidth
+        this.screenHeight = val;
+        this.timer = true;
+        const that = this;
+        setTimeout(function() {
+          that.timer = false;
+        }, 400);
+      }
+    }
+  },
+  mounted() {
+    const that = this;
+    window.onresize = () => {
+      return (() => {
+        window.screenHeight = document.documentElement.clientHeight;
+        that.screenHeight = window.screenHeight;
+      })();
+    };
+
+    // todo 在非[数据大盘]页面路由刷新后,默认选中的菜单没有调整
+  },
+  methods: {}
+};
+</script>
+
+<style>
+/* 左侧菜单[选中]高亮的颜色 */
+.el-menu-item.is-active {
+  color: #409eff !important;
+}
+
+/* 左侧菜单[选中]高亮的颜色 */
+.el-menu-item.is-active span a {
+  color: #409eff !important;
+}
+
+/* 左侧菜单[菜单组]背景色 */
+.el-menu-item-group {
+  background-color: #f0f0f0;
+}
+</style>

+ 10 - 0
base-in-front-end-master1/src/components/layout/index.js

@@ -0,0 +1,10 @@
+import WhiteBoard from '@/components/layout/white-board'
+import SearchWhiteBoard from '@/components/layout/search-white-board'
+
+/* 全局安装通用组件 */
+export default {
+  install (Vue) {
+    Vue.component('white-board', WhiteBoard)
+    Vue.component('search-white-board', SearchWhiteBoard)
+  }
+}

+ 57 - 0
base-in-front-end-master1/src/components/layout/search-white-board.vue

@@ -0,0 +1,57 @@
+<template>
+  <el-row style="background-color: #fff; padding: 10px 10px; margin: 0px 0px 10px 0px; box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);">
+    <el-col :span="20">
+      <el-row>
+        <slot name="base" />
+      </el-row>
+
+      <el-row>
+        <el-collapse-transition>
+          <div v-show="isCollapse">
+            <slot name="more" />
+          </div>
+        </el-collapse-transition>
+      </el-row>
+    </el-col>
+
+    <el-col v-if="showMore && isCollapse" :span="2" style="line-height: 40px; text-align: right;">
+      <el-button icon="el-icon-arrow-up" @click="changeCollapse">收起</el-button>
+    </el-col>
+    <el-col v-if="showMore && !isCollapse" :span="2" style="line-height: 40px; text-align: right;">
+      <el-button icon="el-icon-arrow-down" @click="changeCollapse">更多
+      </el-button>
+    </el-col>
+    <el-col v-if="!showMore" :span="2">&nbsp;</el-col>
+    <el-col :span="2" style="line-height: 40px; text-align: right;">
+      <el-button icon="el-icon-search" type="primary" plain @click="search">搜索</el-button>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'LayoutSearchWhiteBoard',
+  props: {
+    showMore: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data () {
+    return {
+      isCollapse: false // 是否展开更多
+    }
+  },
+  methods: {
+    changeCollapse () {
+      this.isCollapse = !this.isCollapse
+    },
+    search () {
+      this.$emit('search')
+    }
+  }
+}
+</script>
+
+<style scoped>
+</style>

+ 16 - 0
base-in-front-end-master1/src/components/layout/white-board.vue

@@ -0,0 +1,16 @@
+<template>
+  <el-row style="background-color: #fff; padding: 10px 10px; margin-bottom: 10px; box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);">
+    <slot />
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'LayoutWhiteBoard'
+}
+</script>
+
+<style scoped>
+
+</style>
+

+ 2 - 0
base-in-front-end-master1/src/constants/constants.js

@@ -0,0 +1,2 @@
+export default {
+}

+ 27 - 0
base-in-front-end-master1/src/filters/date-format.js

@@ -0,0 +1,27 @@
+import DateKit from '@/utils/date-kit'
+
+const dateFilter = {
+  /**
+   * 功能描述:格式化时间字段
+   * 使用方式:
+   * {{item.date | fmtDate}}
+   * {{row.createAt | fmtDate('yyyy-MM-dd')}}
+   * @param value
+   * @param format
+   * @returns {*}
+   */
+  formatDate (value, format = 'yyyy-MM-dd HH:mm:ss') {
+    if (!value) {
+      return ''
+    }
+
+    return DateKit.format(new Date(Date.parse(value.replace(/-/g, '/'))), format)
+  },
+
+  // 全局安装器
+  install (Vue) {
+    Vue.filter('fmtDate', this.formatDate)
+  }
+}
+
+export default dateFilter

+ 9 - 0
base-in-front-end-master1/src/filters/index.js

@@ -0,0 +1,9 @@
+import Vue from 'vue'
+import DateFormat from './date-format'
+import MoneyFormat from './money-format'
+import StrFormat from './str-format'
+
+// 全局注册过滤器
+Vue.use(DateFormat)
+Vue.use(MoneyFormat)
+Vue.use(StrFormat)

+ 32 - 0
base-in-front-end-master1/src/filters/money-format.js

@@ -0,0 +1,32 @@
+const MoneyFormat = {
+  /**
+   * 功能描述:格式化金额字段
+   * 使用方式
+   * {{item.bidAmount | moneyFormat}}
+   *
+   * @param number 金额
+   * @param places 小数点位数
+   * @param symbol 货币符号
+   * @param thousand 千分位符号
+   * @param decimal
+   * @returns {string}
+   */
+  moneyFormat (number, places, symbol, thousand, decimal) {
+    number = number || 0
+    places = !isNaN(places = Math.abs(places)) ? places : 2
+    symbol = symbol !== undefined ? symbol : '¥' // 货币单位
+    thousand = thousand || ',' // 千分位分割符
+    decimal = decimal || '.' // 小数位分割符
+    const negative = number < 0 ? '-' : ''
+    const i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + ''
+    const j = i.length > 3 ? i.length % 3 : 0
+    return symbol + negative + (j ? i.substr(0, j) + thousand : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, '$1' + thousand) + (places ? decimal + Math.abs(number - i).toFixed(places).slice(2) : '')
+  },
+
+  // 全局安装器
+  install (Vue) {
+    Vue.filter('moneyFormat', this.moneyFormat)
+  }
+}
+
+export default MoneyFormat

+ 71 - 0
base-in-front-end-master1/src/filters/str-format.js

@@ -0,0 +1,71 @@
+import StrKit from '@/utils/str-kit'
+
+const strFilter = {
+  /**
+   * 功能描述:剪切字符串过滤器
+   * 使用方式:
+   * {{item.deviceName | cutStr(14)}}
+   * @param value
+   * @param len
+   * @param placeholder
+   * @returns {*}
+   */
+  cutStr (value, len, placeholder) {
+    if (!value) {
+      return ''
+    }
+    len = len || 18
+    placeholder = placeholder || '...'
+
+    let count = 0
+    const titleLenOld = StrKit.getByteLen(value)
+    let titleLenNew = 0 // 初始化重新构造的title的长度
+
+    for (var i = 0; i < value.length; i++) {
+      if (titleLenNew < len) {
+        ++count
+        if (value[i].match(/[^x00-xff]/ig) !== null) { // 全角
+          titleLenNew += 2
+        } else {
+          titleLenNew += 1
+        }
+      } else {
+        break
+      }
+    }
+    value = value.substring(0, count) + (titleLenOld <= len ? '' : placeholder)
+    return value
+  },
+
+  /**
+   * 功能描述:格式化手机号码
+   * 使用方式:
+   * {{item.deviceName | fmtPhoneNumber}}
+   * @param val
+   * @returns {string|string | *}
+   */
+  fmtPhoneNumber (val) {
+    if (!val) {
+      return ''
+    }
+
+    val = val.replace(/[^\d]/g, '').substr(0, 11)
+    if (val.length <= 3) {
+      return val
+    } else if (val.length <= 7) {
+      val = val.replace(/(\d{3})(\d{0,4})/, '$1-$2')
+    } else {
+      val = val.replace(/(\d{3})(\d{0,4})(\d{0,4})/, '$1-$2-$3')
+    }
+
+    return val
+  },
+
+  // 全局安装器
+  install (Vue) {
+    Vue.filter('cutStr', this.cutStr)
+    Vue.filter('fmtPhoneNumber', this.fmtPhoneNumber)
+  }
+}
+
+export default strFilter

+ 47 - 0
base-in-front-end-master1/src/main.js

@@ -0,0 +1,47 @@
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import qs from 'qs';
+
+import jsCookie from 'js-cookie'
+
+/* 全局安装[通用组件] */
+import Layout from '@/components/layout'
+
+import Constants from '@/constants/constants'
+
+/* 全局安装[过滤器] */
+import './filters'
+
+import './plugins'
+
+
+import VueQuillEditor from 'vue-quill-editor'
+import 'quill/dist/quill.core.css'
+import 'quill/dist/quill.snow.css'
+import 'quill/dist/quill.bubble.css'
+
+
+/* 进度条(网络请求、页面路由切换) */
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+NProgress.configure({
+  easing: 'ease', // 动画方式
+  speed: 500, // 递增进度条的速度
+  showSpinner: false, // 是否显示加载ico
+  trickleSpeed: 200, // 自动递增间隔
+  minimum: 0.3 // 初始化时的最小百分比
+})
+
+Vue.config.productionTip = false
+Vue.prototype.constants = Constants
+Vue.prototype.$cookie = jsCookie
+
+Vue.use(VueQuillEditor)
+
+Vue.use(Layout)
+
+new Vue({
+  router,
+  render: h => h(App)
+}).$mount('#app')

+ 5 - 0
base-in-front-end-master1/src/plugins/element-ui.js

@@ -0,0 +1,5 @@
+import Vue from 'vue'
+import ElementUI from 'element-ui'
+import 'element-ui/lib/theme-chalk/index.css'
+
+Vue.use(ElementUI, { size: 'mini', zIndex: 3000 })

+ 1 - 0
base-in-front-end-master1/src/plugins/index.js

@@ -0,0 +1 @@
+import './element-ui'

+ 89 - 0
base-in-front-end-master1/src/router/index.js

@@ -0,0 +1,89 @@
+import Vue from 'vue'
+import VueRouter from 'vue-router'
+import NProgress from 'nprogress'
+import Cookies from 'js-cookie'
+
+Vue.use(VueRouter)
+
+const router = new VueRouter({
+  routes: [{
+    path: '/login',
+    name: 'Login',
+    component: () => import('@/views/login'),
+    meta: {title: '登录'}
+  }, {
+    path: '/logout',
+    name: 'Logout',
+    component: () => import('@/views/logout'),
+    meta: {title: '退出登录'}
+  }, {
+    path: '/',
+    redirect: '/data-market/main'
+  }, {
+    path: '/data-market/main',
+    component: () => import('@/views/main'),
+    children: [{
+      path: '/data-market/main',
+      name: 'DataMarketIndex',
+      meta: {title: '数据大盘'}
+    }]
+  }, {
+       path: '/system',
+       component: () => import('@/views/main'),
+       children: [{
+         path: '/system/data-acc',
+         name: 'AccountIndex',
+         component: () => import('@/views/system/dataAcc/list'),
+         meta: {title: '账号管理'}
+       }]
+     }, {
+    path: '/system',
+    component: () => import('@/views/main'),
+    children: [{
+      path: '/system/data-dict',
+      name: 'dataDict',
+      component: () => import('@/views/system/dataDict/list'),
+      meta: {title: '系统管理 - 数据字典'}
+    },{
+               path: '/system/data-acc',
+               name: 'AccountIndex',
+               component: () => import('@/views/system/dataAcc/list'),
+               meta: {title: '账号管理'}
+             },{
+                              path: '/system/data-paper',
+                              name: 'paper',
+                              component: () => import('@/views/system/dataPaper2/list'),
+                              meta: {title: '账号管理2'}
+                            }]
+  }]
+})
+
+let URL_WHITE_TOKEN_LIST = [
+  '/login'
+]
+
+router.beforeEach((to, from, next) => {
+  NProgress.start() // 每次切换页面时,调用进度条
+
+  next()
+  // let token = Cookies.get('token')
+  // if (token) {
+  //   if (to.matched.length === 0) { // 匹配前往的路由不存在
+  //     from.name ? next({name: from.name}) : next('/error') // 判断此跳转路由的来源路由是否存在,存在的情况跳转到来源路由,否则跳转到404页面
+  //   } else {
+  //     next()
+  //   }
+  // } else {
+  //   if (URL_WHITE_TOKEN_LIST.indexOf(to.path) !== -1) {
+  //     next()
+  //   } else {
+  //     next(`/login?redirect=${to.path}`)
+  //   }
+  // }
+})
+
+router.afterEach(() => {
+  NProgress.done() // 在即将进入新的页面组件前,关闭掉进度条
+})
+
+export default router

+ 319 - 0
base-in-front-end-master1/src/utils/date-kit.js

@@ -0,0 +1,319 @@
+/*eslint-disable*/
+// 把 YYYY-MM-DD 改成了 yyyy-MM-dd
+(function (main) {
+    'use strict';
+
+    /**
+     * Parse or format dates
+     * @class fecha
+     */
+    var fecha = {};
+    var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g;
+    var twoDigits = /\d\d?/;
+    var threeDigits = /\d{3}/;
+    var fourDigits = /\d{4}/;
+    var word = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
+    var noop = function () {
+    };
+
+    function shorten(arr, sLen) {
+        var newArr = [];
+        for (var i = 0, len = arr.length; i < len; i++) {
+            newArr.push(arr[i].substr(0, sLen));
+        }
+        return newArr;
+    }
+
+    function monthUpdate(arrName) {
+        return function (d, v, i18n) {
+            var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());
+            if (~index) {
+                d.month = index;
+            }
+        };
+    }
+
+    function pad(val, len) {
+        val = String(val);
+        len = len || 2;
+        while (val.length < len) {
+            val = '0' + val;
+        }
+        return val;
+    }
+
+    var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
+    var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
+    var monthNamesShort = shorten(monthNames, 3);
+    var dayNamesShort = shorten(dayNames, 3);
+    fecha.i18n = {
+        dayNamesShort: dayNamesShort,
+        dayNames: dayNames,
+        monthNamesShort: monthNamesShort,
+        monthNames: monthNames,
+        amPm: ['am', 'pm'],
+        DoFn: function DoFn(D) {
+            return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];
+        }
+    };
+
+    var formatFlags = {
+        D: function (dateObj) {
+            return dateObj.getDay();
+        },
+        DD: function (dateObj) {
+            return pad(dateObj.getDay());
+        },
+        Do: function (dateObj, i18n) {
+            return i18n.DoFn(dateObj.getDate());
+        },
+        d: function (dateObj) {
+            return dateObj.getDate();
+        },
+        dd: function (dateObj) {
+            return pad(dateObj.getDate());
+        },
+        ddd: function (dateObj, i18n) {
+            return i18n.dayNamesShort[dateObj.getDay()];
+        },
+        dddd: function (dateObj, i18n) {
+            return i18n.dayNames[dateObj.getDay()];
+        },
+        M: function (dateObj) {
+            return dateObj.getMonth() + 1;
+        },
+        MM: function (dateObj) {
+            return pad(dateObj.getMonth() + 1);
+        },
+        MMM: function (dateObj, i18n) {
+            return i18n.monthNamesShort[dateObj.getMonth()];
+        },
+        MMMM: function (dateObj, i18n) {
+            return i18n.monthNames[dateObj.getMonth()];
+        },
+        yy: function (dateObj) {
+            return String(dateObj.getFullYear()).substr(2);
+        },
+        yyyy: function (dateObj) {
+            return dateObj.getFullYear();
+        },
+        h: function (dateObj) {
+            return dateObj.getHours() % 12 || 12;
+        },
+        hh: function (dateObj) {
+            return pad(dateObj.getHours() % 12 || 12);
+        },
+        H: function (dateObj) {
+            return dateObj.getHours();
+        },
+        HH: function (dateObj) {
+            return pad(dateObj.getHours());
+        },
+        m: function (dateObj) {
+            return dateObj.getMinutes();
+        },
+        mm: function (dateObj) {
+            return pad(dateObj.getMinutes());
+        },
+        s: function (dateObj) {
+            return dateObj.getSeconds();
+        },
+        ss: function (dateObj) {
+            return pad(dateObj.getSeconds());
+        },
+        S: function (dateObj) {
+            return Math.round(dateObj.getMilliseconds() / 100);
+        },
+        SS: function (dateObj) {
+            return pad(Math.round(dateObj.getMilliseconds() / 10), 2);
+        },
+        SSS: function (dateObj) {
+            return pad(dateObj.getMilliseconds(), 3);
+        },
+        a: function (dateObj, i18n) {
+            return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];
+        },
+        A: function (dateObj, i18n) {
+            return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();
+        },
+        ZZ: function (dateObj) {
+            var o = dateObj.getTimezoneOffset();
+            return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);
+        }
+    };
+
+    var parseFlags = {
+        d: [twoDigits, function (d, v) {
+            d.day = v;
+        }],
+        M: [twoDigits, function (d, v) {
+            d.month = v - 1;
+        }],
+        yy: [twoDigits, function (d, v) {
+            var da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2);
+            d.year = '' + (v > 68 ? cent - 1 : cent) + v;
+        }],
+        h: [twoDigits, function (d, v) {
+            d.hour = v;
+        }],
+        m: [twoDigits, function (d, v) {
+            d.minute = v;
+        }],
+        s: [twoDigits, function (d, v) {
+            d.second = v;
+        }],
+        yyyy: [fourDigits, function (d, v) {
+            d.year = v;
+        }],
+        S: [/\d/, function (d, v) {
+            d.millisecond = v * 100;
+        }],
+        SS: [/\d{2}/, function (d, v) {
+            d.millisecond = v * 10;
+        }],
+        SSS: [threeDigits, function (d, v) {
+            d.millisecond = v;
+        }],
+        D: [twoDigits, noop],
+        ddd: [word, noop],
+        MMM: [word, monthUpdate('monthNamesShort')],
+        MMMM: [word, monthUpdate('monthNames')],
+        a: [word, function (d, v, i18n) {
+            var val = v.toLowerCase();
+            if (val === i18n.amPm[0]) {
+                d.isPm = false;
+            } else if (val === i18n.amPm[1]) {
+                d.isPm = true;
+            }
+        }],
+        ZZ: [/[\+\-]\d\d:?\d\d/, function (d, v) {
+            var parts = (v + '').match(/([\+\-]|\d\d)/gi), minutes;
+
+            if (parts) {
+                minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
+                d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
+            }
+        }]
+    };
+    parseFlags.DD = parseFlags.DD;
+    parseFlags.dddd = parseFlags.ddd;
+    parseFlags.Do = parseFlags.dd = parseFlags.d;
+    parseFlags.mm = parseFlags.m;
+    parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
+    parseFlags.MM = parseFlags.M;
+    parseFlags.ss = parseFlags.s;
+    parseFlags.A = parseFlags.a;
+
+
+    // Some common format strings
+    fecha.masks = {
+        'default': 'ddd MMM dd yyyy HH:mm:ss',
+        shortDate: 'M/D/yy',
+        mediumDate: 'MMM d, yyyy',
+        longDate: 'MMMM d, yyyy',
+        fullDate: 'dddd, MMMM d, yyyy',
+        shortTime: 'HH:mm',
+        mediumTime: 'HH:mm:ss',
+        longTime: 'HH:mm:ss.SSS'
+    };
+
+    /***
+     * Format a date
+     * @method format
+     * @param {Date|number} dateObj
+     * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'
+     */
+    fecha.format = function (dateObj, mask, i18nSettings) {
+        var i18n = i18nSettings || fecha.i18n;
+
+        if (typeof dateObj === 'number') {
+            dateObj = new Date(dateObj);
+        }
+
+        if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
+            throw new Error('Invalid Date in fecha.format');
+        }
+
+        mask = fecha.masks[mask] || mask || fecha.masks['default'];
+
+        return mask.replace(token, function ($0) {
+            return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);
+        });
+    };
+
+    /**
+     * Parse a date string into an object, changes - into /
+     * @method parse
+     * @param {string} dateStr Date string
+     * @param {string} format Date parse format
+     * @returns {Date|boolean}
+     */
+    fecha.parse = function (dateStr, format, i18nSettings) {
+        var i18n = i18nSettings || fecha.i18n;
+
+        if (typeof format !== 'string') {
+            throw new Error('Invalid format in fecha.parse');
+        }
+
+        format = fecha.masks[format] || format;
+
+        // Avoid regular expression denial of service, fail early for really long strings
+        // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS
+        if (dateStr.length > 1000) {
+            return false;
+        }
+
+        var isValid = true;
+        var dateInfo = {};
+        format.replace(token, function ($0) {
+            if (parseFlags[$0]) {
+                var info = parseFlags[$0];
+                var index = dateStr.search(info[0]);
+                if (!~index) {
+                    isValid = false;
+                } else {
+                    dateStr.replace(info[0], function (result) {
+                        info[1](dateInfo, result, i18n);
+                        dateStr = dateStr.substr(index + result.length);
+                        return result;
+                    });
+                }
+            }
+
+            return parseFlags[$0] ? '' : $0.slice(1, $0.length - 1);
+        });
+
+        if (!isValid) {
+            return false;
+        }
+
+        var today = new Date();
+        if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
+            dateInfo.hour = +dateInfo.hour + 12;
+        } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
+            dateInfo.hour = 0;
+        }
+
+        var date;
+        if (dateInfo.timezoneOffset != null) {
+            dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
+            date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
+                dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
+        } else {
+            date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
+                dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
+        }
+        return date;
+    };
+
+    /* istanbul ignore next */
+    if (typeof module !== 'undefined' && module.exports) {
+        module.exports = fecha;
+    } else if (typeof define === 'function' && define.amd) {
+        define(function () {
+            return fecha;
+        });
+    } else {
+        main.fecha = fecha;
+    }
+})(this);

+ 133 - 0
base-in-front-end-master1/src/utils/http-kit.js

@@ -0,0 +1,133 @@
+import {Message} from 'element-ui'
+import NProgress from 'nprogress'
+import axios from 'axios'
+// import Cookies from 'js-cookie'
+
+axios.defaults.baseURL = process.env.VUE_APP_HOME_API_URL
+axios.defaults.timeout = 30 * 1000 // 设置接口响应时间
+
+// let token = Cookies.get('token')
+let token = 'swagger-ui'
+
+/* URL地址token白名单 */
+const URL_WHITE_TOKEN_LIST = [
+  '/admin/account/login'
+]
+
+/**
+ * 功能描述:Http Request 拦截器
+ */
+axios.interceptors.request.use((request) => {
+  NProgress.start() // 展示进度条
+
+  /* 当前请求地址不是白名单,则增加请求头token */
+  if (URL_WHITE_TOKEN_LIST.indexOf(request.url) === -1) {
+    request.headers.common['Authorization'] = `Bearer ${token}`
+  }
+  request.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
+
+  return request
+}, (error) => { // 请求错误时做些事(接口错误、超时等)
+  NProgress.done() // 隐藏进度条
+  Message.error(`请求参数错误`, 10)
+
+  /* 1.判断请求超时 */
+  if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
+    // return service.request(originalRequest);//例如再重复请求一次
+  }
+
+  /* 2.需要重定向到错误页面 */
+  if (error.response) {
+    // error =errorInfo.data//页面那边catch的时候就能拿到详细的错误信息,看最下边的Promise.reject
+    // router.push({
+    //   path: `/error/${errorInfo.status}`// 404 403 500 ... 等
+    // })
+  }
+
+  return Promise.reject(error) // 在调用的那边可以拿到(catch)你想返回的错误信息
+})
+
+/**
+ * 功能描述:Http Response 拦截器
+ */
+axios.interceptors.response.use((res) => {
+  NProgress.done() // 隐藏进度条
+
+  /* 判断当前请求响应是Excel导出的,直接返回 */
+  if (res.config.url.indexOf('/export-excel') >= 0) {
+    return Promise.resolve(res)
+  }
+
+  let isTips = res.config.showMessage === undefined || res.config.showMessage === true
+  let data = res.data
+
+  /* 根据返回的code值来做不同的处理(和后端约定) */
+  switch (data.code) {
+    case 200:
+      return Promise.resolve(data)
+    default:
+      isTips && Message.error(`服务器返回异常:${data.message}`, 10)
+      return Promise.reject(res)
+  }
+}, (error) => {
+  Message.error(`服务器返回异常:${error}`, 10)
+
+  if (error && error.response) {
+    switch (error.response.status) {
+      case 400:
+        break
+      default:
+        break
+    }
+  }
+
+  return Promise.reject(error)
+})
+
+export default {
+  get (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.get(url, data, config).then(response => {
+        resolve(response)
+      }).catch(err => {
+        reject(err)
+      })
+    })
+  },
+  delete (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.delete(url, data, config).then(response => {
+        resolve(response)
+      }).catch(err => {
+        reject(err)
+      })
+    })
+  },
+  post (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.post(url, data, config).then(response => {
+        resolve(response)
+      }, err => {
+        reject(err)
+      })
+    })
+  },
+  put (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.put(url, data, config).then(response => {
+        resolve(response)
+      }, err => {
+        reject(err)
+      })
+    })
+  },
+  patch (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.patch(url, data, config).then(response => {
+        resolve(response)
+      }, err => {
+        reject(err)
+      })
+    })
+  }
+}

+ 96 - 0
base-in-front-end-master1/src/utils/http-kit2.js

@@ -0,0 +1,96 @@
+import {Message} from 'element-ui'
+import axios from 'axios'
+
+axios.defaults.baseURL = process.env.VUE_APP_HOME_API_URL
+axios.defaults.timeout = 30 * 1000 // 设置接口响应时间
+
+/**
+ * 功能描述:Http Request 拦截器
+ */
+axios.interceptors.request.use((request) => {
+
+  request.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
+
+  return request
+}, (error) => { // 请求错误时做些事(接口错误、超时等)
+  Message.error(`请求参数错误`, 10)
+
+  return Promise.reject(error) // 在调用的那边可以拿到(catch)你想返回的错误信息
+})
+
+/**
+ * 功能描述:Http Response 拦截器
+ */
+axios.interceptors.response.use((res) => {
+  let data = res.data
+
+  /* 根据返回的code值来做不同的处理(和后端约定) */
+  switch (data.code) {
+    case 200:
+      return Promise.resolve(data)
+    default:
+      Message.error(`服务器返回异常:${data.message}`, 10)
+      return Promise.reject(res)
+  }
+}, (error) => {
+  Message.error(`服务器返回异常:${error}`, 10)
+
+  if (error && error.response) {
+    switch (error.response.status) {
+      case 400:
+        break
+      default:
+        break
+    }
+  }
+
+  return Promise.reject(error)
+})
+
+export default {
+  get (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.get(url, data, config).then(response => {
+        resolve(response)
+      }).catch(err => {
+        reject(err)
+      })
+    })
+  },
+  delete (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.delete(url, data, config).then(response => {
+        resolve(response)
+      }).catch(err => {
+        reject(err)
+      })
+    })
+  },
+  post (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.post(url, data, config).then(response => {
+        resolve(response)
+      }, err => {
+        reject(err)
+      })
+    })
+  },
+  put (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.put(url, data, config).then(response => {
+        resolve(response)
+      }, err => {
+        reject(err)
+      })
+    })
+  },
+  patch (url, data = {}, config = {}) {
+    return new Promise((resolve, reject) => {
+      axios.patch(url, data, config).then(response => {
+        resolve(response)
+      }, err => {
+        reject(err)
+      })
+    })
+  }
+}

+ 23 - 0
base-in-front-end-master1/src/utils/str-kit.js

@@ -0,0 +1,23 @@
+export default {
+  /**
+   * 功能描述:计算文本的长度
+   * @param strKit
+   * @returns {number}
+   */
+  getByteLen (strKit) {
+    let len = 0
+    if (typeof strKit === 'string' && strKit.constructor === String) {
+      for (let i = 0; i < strKit.length; i++) {
+        if (strKit[i].match(/[^x00-xff]/ig)) { // 全角
+          len += 2
+        } else {
+          len += 1
+        }
+      }
+    }
+    return len
+  },
+  cutoutChar (str, length = 2) {
+    return str.match(/[\u4e00-\u9fa5]/g).splice(0, length).join('')
+  }
+}

+ 94 - 0
base-in-front-end-master1/src/views/login.vue

@@ -0,0 +1,94 @@
+<template>
+  <div class="login-container">
+    <el-form ref="form" :model="form" :rules="ruleForm" class="login-page">
+      <h3 style="line-height: 75px;font-size: 26px;font-weight: 800;">系统登录</h3>
+      <el-form-item prop="username">
+        <el-input v-model="form.username" type="text" placeholder="用户名">
+          <template slot="prepend">
+            <i class="el-icon-user-solid" />
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item prop="password">
+        <el-input v-model="form.password" type="password" placeholder="密码" @keyup.enter.native="handleSubmit">
+          <template slot="prepend">
+            <i class="el-icon-s-goods" />
+          </template>
+        </el-input>
+      </el-form-item>
+      <el-form-item style="width:100%;">
+        <el-button type="primary" style="width:100%;" :loading="logining" @click="handleSubmit">登录</el-button>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+
+<script>
+// import accountApi from '@/api/accountApi'
+
+export default {
+  name: 'Login',
+  data () {
+    return {
+      logining: false,
+      form: {
+        username: '',
+        password: ''
+      },
+      ruleForm: {
+        username: [{ required: true, message: '请输入账号', trigger: 'blur' }],
+        password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
+      }
+    }
+  },
+  mounted () {
+    /* 访问该页面重置token值 */
+    this.$cookie.remove('token')
+  },
+  methods: {
+    handleSubmit () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return false
+        }
+
+        this.logining = true
+        // accountApi.login(this.form).then(data => {
+        //   this.logining = false
+        //
+        //   if (data) {
+        //     this.$cookie.set('token', data, {expires: 7, path: '/'})
+        //
+        //     if (this.$route.query.redirect) {
+        //       this.$router.push({path: `${this.$route.query.redirect}`})
+        //       return
+        //     }
+        //
+        //     this.$router.push({path: '/'})
+        //   }
+        // }).catch(() => {
+        //   this.logining = false
+        // })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+  .login-container {
+    width: 100%;
+    height: 100%;
+  }
+
+  .login-page {
+    -webkit-border-radius: 5px;
+    border-radius: 5px;
+    margin: 125px auto;
+    width: 350px;
+    padding: 15px 25px;
+    background: #fff;
+    border: 1px solid #eaeaea;
+    box-shadow: 0 0 25px #cac6c6;
+  }
+</style>

+ 21 - 0
base-in-front-end-master1/src/views/logout.vue

@@ -0,0 +1,21 @@
+<template>
+  <div />
+</template>
+
+<script>
+export default {
+  name: 'Logout',
+  components: {},
+  data () {
+    return {}
+  },
+  mounted () {
+    this.$router.push({ path: '/login' })
+  },
+  methods: {}
+}
+</script>
+
+<style scoped>
+
+</style>

+ 116 - 0
base-in-front-end-master1/src/views/main.vue

@@ -0,0 +1,116 @@
+<template>
+  <el-container>
+    <el-aside width="200px">
+      <AsideMenu :collapse="isCollapseMenu" />
+    </el-aside>
+
+    <el-container>
+      <el-header>
+        <el-row>
+          <el-col :span="4" style="text-align: left;padding-left: 10px;">
+            <img src="../assets/21.jpg" width="40" height="40" style="display: inline-block; vertical-align: middle;cursor: pointer;" @click="collapseMenu">
+            &nbsp;
+            <label style="font-size: 16px; font-weight: bold;">题库管理</label>
+          </el-col>
+          <el-col :span="2" :offset="18">
+            <el-dropdown style="cursor: pointer;">
+              <el-avatar icon="el-icon-user-solid" style="box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);"/>
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item>
+                  <router-link :to="{name: 'Logout'}">退出登录</router-link>
+                </el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </el-col>
+        </el-row>
+      </el-header>
+      <el-main :style="{height: (screenHeight - 60) + 'px', padding: 0 + 'px ' + 10 + 'px', paddingTop: 10 + 'px'}">
+        <transition name="el-fade-in-linear">
+          <router-view />
+        </transition>
+      </el-main>
+    </el-container>
+  </el-container>
+</template>
+
+<script>
+import AsideMenu from '@/components/layout/aside-menu'
+
+export default {
+  name: 'Main',
+  components: {
+    AsideMenu
+  },
+  data () {
+    return {
+      screenHeight: document.documentElement.clientHeight, // 获取可视屏幕高度
+      isCollapseMenu: false
+    }
+  },
+  watch: {
+    screenHeight (val) {
+      // 为了避免频繁触发resize函数导致页面卡顿,使用定时器
+      if (!this.timer) {
+        // 一旦监听到的screenWidth值改变,就将其重新赋给data里的screenWidth
+        this.screenHeight = val
+        this.timer = true
+        const that = this
+        setTimeout(function () {
+          that.timer = false
+        }, 400)
+      }
+    }
+  },
+  mounted () {
+    const that = this
+    window.onresize = () => {
+      return (() => {
+        window.screenHeight = document.documentElement.clientHeight
+        that.screenHeight = window.screenHeight
+      })()
+    }
+  },
+  methods: {
+    collapseMenu () {
+      /* el-aside有一个默认值为300,暂时没有很好的方式来处理伸缩菜单栏来处理样式问题... */
+      this.isCollapseMenu = !!this.isCollapseMenu
+    }
+  }
+}
+</script>
+
+<style>
+  .el-header, .el-footer {
+    background-color: #409EFF;
+    color: #333;
+    text-align: center;
+    line-height: 60px;
+    padding-left: 0px;
+    padding-right: 0px;
+  }
+
+  .el-footer {
+    height: 40px !important;
+    line-height: 40px !important;
+  }
+
+  .el-main {
+    background-color: #eee;
+    color: #333;
+    text-align: center;
+    padding: 0px;
+  }
+
+  body > .el-container {
+    margin-bottom: 40px;
+  }
+
+  .el-container:nth-child(5) .el-aside,
+  .el-container:nth-child(6) .el-aside {
+    line-height: 260px;
+  }
+
+  .el-container:nth-child(7) .el-aside {
+    line-height: 320px;
+  }
+</style>

+ 377 - 0
base-in-front-end-master1/src/views/system/dataAcc/list.vue

@@ -0,0 +1,377 @@
+<template>
+  <el-row>
+
+
+    <el-row>
+      <white-board>
+        <el-breadcrumb separator="/">
+          <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+          <el-breadcrumb-item>题库管理</el-breadcrumb-item>
+          <el-breadcrumb-item>题库·题干</el-breadcrumb-item>
+        </el-breadcrumb>
+      </white-board>
+    </el-row>
+
+
+
+    <el-row>
+      <el-form ref="searchForm" :model="searchForm">
+        <search-white-board :show-more="true" @search="list">
+          <div slot="base">
+            <el-row style="line-height: 40px; text-align: right;">
+              <el-col :span="3"><label class="search-label">题干</label></el-col>
+              <el-col :span="5">
+                <el-input v-model.trim="searchForm.dictKey" placeholder="请输入题干" clearable></el-input>
+              </el-col>
+              <el-col :span="2" :offset="1"><label class="search-label">年级</label></el-col>
+              <el-col :span="5">
+                  <el-select v-model="value" placeholder="请选择">
+                    <el-option
+                      v-for="item in options2"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+              </el-col>
+
+              <el-col :span="3"><label class="search-label">学科</label></el-col>
+              <el-col :span="5">
+                  <el-select v-model="value" placeholder="请选择">
+                    <el-option
+                      v-for="item in options1"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+              </el-col>
+
+
+
+            </el-row>
+          </div>
+        </search-white-board>
+      </el-form>
+    </el-row>
+
+    <el-row>
+      <white-board>
+        <el-row style="line-height: 40px; text-align: right;">
+          <el-col :span="6" :offset="18" style="text-align: right;">
+            <el-button icon="el-icon-plus" type="success" plain @click="handleAdd">新增</el-button>
+          </el-col>
+        </el-row>
+
+
+        <el-row style="padding: 10px 0px;">
+     <!--     <el-table :data="tableData" row-key="id" lazy :load="load" ref="ttable" @row-click="rowClick" style="width: 100%;" highlight-current-row stripe>
+-->
+<el-table
+        :data="tableData"
+
+        >
+            <el-table-column type="expand">
+                  <template slot-scope="props">
+                    <el-form label-position="left" inline class="demo-table-expand">
+                      <el-form-item label="题干:">
+                        <span>{{ props.row.name }}</span>
+                      </el-form-item>
+                      <el-form-item label="题目选项:   ">
+                        <span>{{ props.row.optionList[0].content }}</span><el-form-item label="   "></el-form-item>
+                        <span>{{ props.row.optionList[1].content }}</span><el-form-item label="   "></el-form-item>
+                        <span>{{ props.row.optionList[2].content }}</span><el-form-item label="   "></el-form-item>
+                        <span>{{ props.row.optionList[3].content }}</span><el-form-item label="   "></el-form-item>
+                      </el-form-item>
+                    </el-form>
+                  </template>
+                </el-table-column>
+
+            <el-table-column prop="id" label="标识" width="180"></el-table-column>
+            <el-table-column prop="gradeName" label="年级" width="150"></el-table-column>
+            <el-table-column prop="subject" label="学科" width="200"></el-table-column>
+            <el-table-column prop="name" label="题干"  width="200"></el-table-column>
+            <el-table-column prop="analysis" label="题目解析"  width="200"></el-table-column>
+
+
+          </el-table>
+          <!--  翻页样式 -->
+           <el-pagination class="fy"
+           layout="prev, pager, next"
+           @current-change="current_change"
+           :total="total"
+           background
+           >
+          </el-pagination>
+
+        </el-row>
+      </white-board>
+    </el-row>
+
+    <el-dialog :visible.sync="dialogVisible" ref="form">
+      <el-divider></el-divider>
+      <label slot="title" style="float: left;">{{dialogTitle}}</label>
+
+      <el-row>
+        <el-col :span="18" :offset="3">
+          <el-form ref="form" :model="form" :rules="formRules" label-width="80px">
+            <el-form-item label="标识" prop="id" hidden="hidden">
+              <el-input v-model.trim="form.id" v-bind:disabled="form.id !== ''" hidden="hidden" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="父级标识" prop="parentId" hidden="hidden">
+              <el-input v-model.trim="form.parentId" placeholder="请输入父级标识" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="唯一标识" prop="dictKey">
+              <el-input v-model.trim="form.dictKey" placeholder="字典唯一标识" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="字典编码" prop="code">
+              <el-input v-model.trim="form.code" placeholder="字典编码" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="字典值" prop="value">
+              <el-input v-model.trim="form.value" placeholder="字典值" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="拓展字段">
+              <el-input v-model.trim="form.attr" placeholder="拓展字段" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="备注" prop="remarks">
+              <el-input v-model.trim="form.remarks" placeholder="备注" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="排序" prop="sort" >
+              <el-input v-model.trim="form.sort" placeholder="排序" type="number" clearable></el-input>
+            </el-form-item>
+          </el-form>
+
+        </el-col>
+      </el-row>
+
+      <div slot="footer" class="dialog-footer">
+        <el-divider></el-divider>
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="handleSave" size="mini">确 定</el-button>
+      </div>
+    </el-dialog>
+
+
+
+
+  </el-row>
+</template>
+
+<script>
+  import dataDictionaryApi from "@/api/dataDictionaryApi"
+  import stemApi from "@/api/stemApi"
+
+
+
+  export default {
+    name: 'dataDict',
+    components: {
+    },
+
+
+    data () {
+      return {
+
+
+
+
+        defaultProps: {
+          label: 'name',
+          children: 'child',
+        },
+        options1: [{
+                    value: '选项1',
+                    label: '语文'
+                  }, {
+                    value: '选项2',
+                    label: '数学'
+                  }, {
+                    value: '选项3',
+                    label: '英语'
+                  }],
+        options2: [{
+                    value: '选项1',
+                    label: '一年级'
+                  }, {
+                    value: '选项2',
+                    label: '二年级'
+                  }, {
+                    value: '选项3',
+                    label: '三年级'
+                  },{
+                     value: '选项4',
+                     label: '四年级'
+                  },{
+                     value: '选项5',
+                     label: '五年级'
+                  },{
+                      value: '选项6',
+                      label: '六年级'
+                  }],
+
+
+        searchForm: {
+
+          page: 1,
+          size: 10
+        },
+        tableData: [],
+        uploadData: {
+          tree: null,
+          treeNode: null,
+          resolve: null
+        },
+
+        dialogTitle: '',
+        dialogVisible: false,
+        dialogdelVisible: false,
+        currentSelectRow: {}, // 当前选中行
+        form: {
+                  gradeName: '',
+                  groupName: '',
+                  isAudited: '',
+                  knowledgePointId: '',
+                  name: '',
+                  subject: '',
+                  tenantId: '',
+                  type: '',
+                  optionList: [[], [], [], []],
+                  page: 1,
+                  size: 10
+
+        },
+        formRules: {
+          dictKey: [{required: true, message: '请输入字典唯一标识', trigger: 'blur'}],
+          code: [{required: true, message: '请输入字典编码', trigger: 'blur'}],
+          value: [{required: true, message: '请输入字典值', trigger: 'blur'}],
+        },
+        total: 0,
+        value: "",
+      }
+    },
+    mounted () {
+      this.list()
+    },
+    methods: {
+      filterNode (value, data) {
+        if (!value) {
+          return true
+        }
+
+
+        return data.name.indexOf(value) !== -1
+      },
+
+      handleSizeChange(val) {
+        this.searchForm['limit']=val;
+        this.list()
+      },
+      handleCurrentChange(val) {
+
+        this.searchForm['start']=val+1
+        this.list()
+      },
+
+           current_change(val){
+
+              this.searchForm['page']=val+1
+              this.list()
+          },
+            created:function(){
+               this.total=this.tableData.length;
+            },
+
+
+      list () {
+        this.currentSelectRow = {}
+        this.tableData = []
+        stemApi.page(this.searchForm).then(data => {
+          this.total = data.total
+          data.data.forEach(item => {
+            item.hasChildren = []
+          })
+          this.tableData = data.data
+
+        })
+      },
+      rowClick (row, event, column) {
+        this.currentSelectRow = row
+      },
+      handleAdd () {
+        /* 重置表单 */
+        this.form['id'] = ''
+        this.form['parentId'] = this.currentSelectRow['id']
+        this.form['dictKey'] = ''
+        this.form['code'] = ''
+        this.form['value'] = ''
+        this.form['attr'] = ''
+        this.form['remarks'] = ''
+        this.form['sort'] = ''
+        this.dialogTitle = '新增'
+        this.dialogVisible = true
+      },
+      handleEdit (index,row) {
+        this.form['id'] = row.id
+        this.form['parentId'] = row.parentId
+        this.form['dictKey'] = row.dictKey
+        this.form['code'] = row.code
+        this.form['value'] = row.value
+        this.form['attr'] = row.attr
+        this.form['remarks'] =row.remark
+        this.form['sort'] = row.sort
+        this.dialogTitle = '编辑'
+        this.dialogVisible = true
+      },
+      handleDel (index,row) {
+        this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          dataDictionaryApi.deleteDataDictPoint(row.id).then(data => {
+            this.$message({
+              type: 'success',
+              message: '删除成功'
+            })
+
+            this.list()
+            this.load(this.uploadData.tree, this.uploadData.treeNode, this.uploadData.resolve)
+          })
+        })
+      },
+      load(tree, treeNode, resolve) {
+        this.uploadData.tree = tree
+        this.uploadData.treeNode = treeNode
+        this.uploadData.resolve = resolve
+        let value = tree.id
+
+        dataDictionaryApi.findDataDictById(value).then(data => {
+          data.forEach(item => {
+            //判断是否有子节点
+            if (item.size > 0) {
+              item.hasChildren = []
+            }
+          })
+
+          resolve(data)
+        })
+      },
+      handleSave () {
+        this.$refs['form'].validate((valid) => {
+          if (!valid) {
+            return
+          }
+
+          dataDictionaryApi.saveOrUpdate(this.form).then(data => {
+            this.dialogVisible = false
+            this.$refs['form'].resetFields()
+            this.list()
+          })
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+</style>

+ 531 - 0
base-in-front-end-master1/src/views/system/dataDict/list.vue

@@ -0,0 +1,531 @@
+<template>
+  <el-row>
+
+
+    <el-row>
+      <white-board>
+        <el-breadcrumb separator="/">
+          <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+          <el-breadcrumb-item>题库管理</el-breadcrumb-item>
+          <el-breadcrumb-item>题库·试卷</el-breadcrumb-item>
+        </el-breadcrumb>
+      </white-board>
+    </el-row>
+
+
+
+    <el-row>
+      <el-form ref="searchForm" :model="searchForm">
+        <search-white-board :show-more="true" @search="list">
+          <div slot="base">
+            <el-row style="line-height: 40px; text-align: right;">
+              <el-col :span="3"><label class="search-label">试卷名</label></el-col>
+              <el-col :span="5">
+                <el-input v-model.trim="searchForm.dictKey" placeholder="请输入试卷名" clearable></el-input>
+              </el-col>
+              <el-col :span="2" :offset="1"><label class="search-label">年级</label></el-col>
+              <el-col :span="5">
+                <el-select v-model="value" placeholder="请选择">
+                  <el-option
+                    v-for="item in options2"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-col>
+
+              <el-col :span="3"><label class="search-label">学科</label></el-col>
+              <el-col :span="5">
+                <el-select v-model="value" placeholder="请选择">
+                  <el-option
+                    v-for="item in options1"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                  </el-option>
+                </el-select>
+              </el-col>
+
+
+
+            </el-row>
+          </div>
+        </search-white-board>
+      </el-form>
+    </el-row>
+
+    <el-row>
+      <white-board>
+        <el-row style="line-height: 40px; text-align: right;">
+          <el-col :span="6" :offset="18" style="text-align: right;">
+            <el-button icon="el-icon-plus" type="success" plain @click="handleAdd">新增试卷</el-button>
+          </el-col>
+        </el-row>
+
+        <el-row style="padding: 10px 0px;">
+          <!--       <el-table :data="tableData" row-key="id"  ref="ttable"  style="width: 100%;" highlight-current-row stripe>
+               -->
+          <el-table
+            :data="tableData"
+            highlight-current-row stripe
+            style="width: 100%"
+            :default-sort = "{prop: 'date', order: 'descending'}"
+          >
+
+            <el-table-column prop="id" label="标识" width="180"></el-table-column>
+            <el-table-column prop="gradeName" label="年级" width="150"></el-table-column>
+            <el-table-column prop="subject" label="学科" width="200"></el-table-column>
+            <el-table-column prop="name" label="试卷名"  width="200"></el-table-column>
+            <el-table-column prop="groupName" label="年级分类"  width="200"></el-table-column>
+
+            <el-table-column label="操作" width="150">
+              <template slot-scope="scope">
+                <el-button type="primary" plain @click="handlePaper(scope.row.id)">预览</el-button>
+                <el-button type="danger" plain @click="handleDel(scope.$index, scope.row)">删除</el-button>
+              </template>
+            </el-table-column>
+
+          </el-table>
+
+          <el-pagination class="fy"
+                         layout="prev, pager, next"
+                         @current-change="current_change"
+                         :total="total"
+                         background
+          >
+          </el-pagination>
+
+        </el-row>
+      </white-board>
+    </el-row>
+
+    <el-dialog :visible.sync="dialogVisible" ref="form">
+      <el-divider></el-divider>
+      <label slot="title" style="float: left;">{{dialogTitle}}</label>
+
+      <el-row>
+        <el-col :span="18" :offset="3">
+          <el-form ref="form" :model="form" :rules="formRules" label-width="80px">
+            <el-form-item label="标识" prop="id" hidden="hidden">
+              <el-input v-model.trim="form.id" v-bind:disabled="form.id !== ''" hidden="hidden" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="父级标识" prop="parentId" hidden="hidden">
+              <el-input v-model.trim="form.parentId" placeholder="请输入父级标识" clearable></el-input>
+
+
+            </el-form-item>
+            <el-form-item label="年级" prop="gradeName">
+              <el-input v-model.trim="form.gradeName" placeholder="字典唯一标识" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="年级分类" prop="groupName">
+              <el-input v-model.trim="form.groupName" placeholder="字典编码" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="试卷名" prop="name">
+              <el-input v-model.trim="form.name" placeholder="字典值" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="题目数量 " prop="name" >
+              <el-input v-model.trim="form.number" placeholder="拓展字段" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="学科" prop="subject">
+              <el-input v-model.trim="form.subject" placeholder="备注" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="排序" prop="sort" >
+              <el-input v-model.trim="form.sort" placeholder="排序" type="number" clearable></el-input>
+            </el-form-item>
+          </el-form>
+
+        </el-col>
+      </el-row>
+
+      <div slot="footer" class="dialog-footer">
+        <el-divider></el-divider>
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="handleUpdate" size="mini">确 定</el-button>
+      </div>
+    </el-dialog>
+
+
+    <el-dialog :visible.sync="dialogVisible2" ref="form2" >
+      <el-divider></el-divider>
+      <label slot="title" style="float: left;">{{dialogTitle2}}</label>
+
+      <el-row>
+
+
+        <el-row style="padding: 10px 0px;">
+          <!--       <el-table :data="tableData" row-key="id"  ref="ttable"  style="width: 100%;" highlight-current-row stripe>
+               -->
+          <el-table
+            :data="tableData2"
+            highlight-current-row stripe
+            style="width: 100%"
+            :default-sort = "{prop: 'date', order: 'descending'}"
+          >
+            <el-table-column type="expand">
+              <template slot-scope="props">
+                <el-form label-position="left" inline class="demo-table-expand">
+
+                  <el-form-item label="题目选项:   ">
+                    <span>{{ props.row.optionList[0].content }}</span><el-form-item label="   "></el-form-item>
+                    <span>{{ props.row.optionList[1].content }}</span><el-form-item label="   "></el-form-item>
+                    <span>{{ props.row.optionList[2].content }}</span><el-form-item label="   "></el-form-item>
+                    <span>{{ props.row.optionList[3].content }}</span><el-form-item label="   "></el-form-item>
+                    <el-form-item label="题目解析:">
+                      <span>{{ props.row.analysis }}</span>
+                    </el-form-item>
+                  </el-form-item>
+                </el-form>
+              </template>
+            </el-table-column>
+
+
+            <el-table-column prop="name" label="题干"  width="600"></el-table-column>
+
+
+
+          </el-table>
+        </el-row>
+
+
+      </el-row>
+      <el-divider></el-divider>
+    </el-dialog>
+
+
+
+
+  </el-row>
+</template>
+
+<script>
+  import dataDictionaryApi from "@/api/mypaperApi"
+  import stemApi from "@/api/stemApi"
+  import paperApi from "@/api/mypaperApi"
+
+
+  export default {
+    name: 'dataDict',
+    components: {
+    },
+
+
+    data () {
+      return {
+
+
+
+
+        defaultProps: {
+          label: 'name',
+          children: 'child',
+        },
+        options1: [{
+          value: '选项1',
+          label: '语文'
+        }, {
+          value: '选项2',
+          label: '数学'
+        }, {
+          value: '选项3',
+          label: '英语'
+        }],
+        options2: [{
+          value: '选项1',
+          label: '一年级'
+        }, {
+          value: '选项2',
+          label: '二年级'
+        }, {
+          value: '选项3',
+          label: '三年级'
+        },{
+          value: '选项4',
+          label: '四年级'
+        },{
+          value: '选项5',
+          label: '五年级'
+        },{
+          value: '选项6',
+          label: '六年级'
+        }],
+
+        typeOption: [{
+          value : '1',
+          label: '小学'
+        }, {
+          value : '2',
+          label: '初中'
+        }, {
+          value : '3',
+          label: '高中'
+        }
+        ],
+        gradeOption: [],
+
+        primaryOption: [{
+          value : '1',
+          label: '一年级'
+        }, {
+          value : '2',
+          label: '二年级'
+        }, {
+          value : '3',
+          label: '三年级'
+        }, {
+          value : '4',
+          label: '四年级'
+        }, {
+          value : '5',
+          label: '五年级'
+        }, {
+          value : '6',
+          label: '六年级'
+        }
+        ],
+        middleOption: [{
+          value : '1',
+          label: '一年级'
+        }, {
+          value : '2',
+          label: '二年级'
+        }, {
+          value : '3',
+          label: '三年级'
+        }
+        ],
+        subjectOption: [{
+          value : '1',
+          label: '语文'
+        }, {
+          value : '2',
+          label: '数学'
+        }, {
+          value : '3',
+          label: '英语'
+        }
+        ],
+
+
+
+
+        searchForm: {
+          start: 1,
+          limit: 10
+        },
+        tableData: [],
+
+        form2: {
+          gradeName: '',
+          groupName: '',
+          isAudited: '',
+          knowledgePointId: '',
+          name: '',
+          subject: '',
+          tenantId: '',
+          type: '',
+          optionList: '',
+          page: '',
+          size: ''
+        },
+        tableData2: [{
+          analysis:'',
+          name:'',
+          optionList:[{
+            content:'',
+          }],
+          answer:[]
+        }],
+
+        uploadData: {
+          tree: null,
+          treeNode: null,
+          resolve: null
+        },
+
+        dialogTitle: '',
+        dialogVisible: false,
+        dialogdelVisible: false,
+
+        dialogTitle2: '',
+        dialogVisible2: false,
+        dialogdelVisible2: false,
+
+        currentSelectRow: {}, // 当前选中行
+        form: {
+          id: '',
+          gradeName: '',
+          groupName: '',
+          name: '',
+          subject: ''
+
+        },
+        formRules: {
+          dictKey: [{required: true, message: '请输入字典唯一标识', trigger: 'blur'}],
+          code: [{required: true, message: '请输入字典编码', trigger: 'blur'}],
+          value: [{required: true, message: '请输入字典值', trigger: 'blur'}],
+        }
+      }
+    },
+    mounted () {
+      this.list()
+    },
+    methods: {
+      filterNode (value, data) {
+        if (!value) {
+          return true
+        }
+
+        return data.name.indexOf(value) !== -1
+      },
+
+      current_change(val){
+
+        this.searchForm['start']=val
+        this.list()
+      },
+      created:function(){
+        this.total=this.tableData.length;
+      },
+
+
+      list () {
+
+        this.currentSelectRow = {}
+        this.tableData = []
+        paperApi.page1(this.searchForm).then(data => {
+
+          this.total = data.total
+
+          this.tableData = data.data
+
+        })
+      },
+      rowClick (row, event, column) {
+        this.currentSelectRow = row
+      },
+      handleAdd () {
+        /* 重置表单 */
+        this.form['id'] = ''
+        this.form['parentId'] = this.currentSelectRow['id']
+        this.form['dictKey'] = ''
+        this.form['code'] = ''
+        this.form['value'] = ''
+        this.form['attr'] = ''
+        this.form['remarks'] = ''
+        this.form['sort'] = ''
+        this.dialogTitle = '新增'
+        this.dialogVisible = true
+      },
+      handleEdit (index,row) {
+
+        this.form['id'] = row.paperId
+        this.form['group'] = row.group
+        this.form['name'] = row.name
+        this.form['subject'] = row.subject
+        this.form['type'] = row.type
+        this.dialogTitle = '编辑'
+        this.dialogVisible = true
+
+        this.dialogTitle = '预览'
+        this.dialogVisible = true
+      },
+
+      handleUpdate () {
+
+
+        dataDictionaryApi.Update(this.form).then(data => {
+
+          this.dialogVisible = false
+          this.$refs['form'].resetFields()
+          this.list()
+
+        })
+        console.log("fds")
+      },
+
+
+
+      handlePaper (id) {
+
+
+
+
+        //this.tableData2 = []
+        console.log(id)
+        paperApi.getExamById(id).then(stems => {
+
+          this.tableData2 = data.stems
+
+        })
+        console.log(this.tableData2.length)
+        console.log(id)
+        this.dialogTitle2 = '预览2'
+
+        this.dialogVisible2 = true
+
+
+
+      },
+
+
+      handleView (index,row) {
+
+        this.dialogTitle2 = '预览1'
+        this.dialogVisible2 = true
+      },
+
+      handleDel (index,row) {
+        this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          dataDictionaryApi.deleteDataDictPoint(row.id).then(data => {
+            this.$message({
+              type: 'success',
+              message: '删除成功'
+            })
+
+            this.list()
+            this.load(this.uploadData.tree, this.uploadData.treeNode, this.uploadData.resolve)
+          })
+        })
+      },
+      load(tree, treeNode, resolve) {
+        this.uploadData.tree = tree
+        this.uploadData.treeNode = treeNode
+        this.uploadData.resolve = resolve
+        let value = tree.id
+
+        dataDictionaryApi.findDataDictById(value).then(data => {
+          data.forEach(item => {
+            //判断是否有子节点
+            if (item.size > 0) {
+              item.hasChildren = []
+            }
+          })
+
+          resolve(data)
+
+        })
+      },
+      handleSave () {
+        this.$refs['form'].validate((valid) => {
+          if (!valid) {
+            return
+          }
+
+          dataDictionaryApi.saveOrUpdate(this.form).then(data => {
+            this.dialogVisible = false
+            this.$refs['form'].resetFields()
+            this.list()
+          })
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+</style>

+ 382 - 0
base-in-front-end-master1/src/views/system/dataPaper/list.vue

@@ -0,0 +1,382 @@
+<template>
+  <el-row>
+    <el-row>
+      <white-board>
+        <el-breadcrumb separator="/">
+          <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+          <el-breadcrumb-item>系统管理</el-breadcrumb-item>
+          <el-breadcrumb-item>题库-试卷</el-breadcrumb-item>
+        </el-breadcrumb>
+      </white-board>
+    </el-row>
+
+    <el-row>
+      <el-form ref="searchForm" :model="searchForm">
+        <search-white-board :show-more="false" @search="list">
+          <div slot="base">
+            <el-row style="line-height: 40px; text-align: right;">
+              <el-col :span="3"><label class="search-label">名称</label></el-col>
+              <el-col :span="5">
+                <el-input v-model.trim="searchForm.name" placeholder="请输入名称" clearable></el-input>
+              </el-col>
+            </el-row>
+          </div>
+        </search-white-board>
+      </el-form>
+    </el-row>
+
+    <el-row>
+      <white-board>
+        <el-row style="line-height: 40px; text-align: right;">
+          <el-col :span="6" :offset="18" style="text-align: right;">
+            <el-button icon="el-icon-plus" type="success" plain @click="handleAdd">新增</el-button>
+          </el-col>
+        </el-row>
+
+        <el-row style="padding: 10px 0px;">
+          <el-table :data="tableData" row-key="id"  style="width: 100%;" >
+            <el-table-column prop="paperId" label="标识" width="180"></el-table-column>
+            <el-table-column prop="paperType" label="年级分类" width="100"></el-table-column>
+            <el-table-column prop="paperGrade" label="年级" width="100"></el-table-column>
+            <el-table-column prop="paperSubject" label="学科"  width="100"></el-table-column>
+            <el-table-column prop="paperName" label="名称" width="300"></el-table-column>
+            <el-table-column label="操作">
+              <template slot-scope="scope">
+                <el-button type="primary" plain @click="handlePreview(scope.$index, scope.row)">预览</el-button>
+                <el-button type="primary" plain @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
+                <el-button type="primary" plain @click="handleAddStem(scope.$index, scope.row)">添加题目</el-button>
+                <el-button type="danger" plain @click="handleDel(scope.$index, scope.row)">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-row>
+        <div class="block">
+            <el-pagination
+              @size-change="handleSizeChange"
+              @current-change="handleCurrentChange"
+              :current-page.sync="currentPage"
+              :page-sizes="[10, 20, 30, 40]"
+              :page-size="10"
+              layout="sizes, prev, pager, next"
+              :total="total">
+            </el-pagination>
+          </div>
+      </white-board>
+    </el-row>
+
+    <el-drawer
+      :title="previewTitle"
+      :visible.sync="drawerVisible"
+      :direction="direction"
+      >
+      <template>
+        <el-table
+          :data="previewData"
+          style="width: 100%">
+          <el-table-column type="expand">
+            <template slot-scope="props">
+              <el-form label-position="left" inline class="demo-table-expand">
+
+                <el-form-item label="选项">
+                  <span>{{ props.row.optionList.length }}</span>
+                </el-form-item>
+              </el-form>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="题目内容"
+            prop="name">
+          </el-table-column>
+
+        </el-table>
+      </template>
+    </el-drawer>
+
+
+    <el-dialog :visible.sync="dialogVisible" ref="form">
+      <el-divider></el-divider>
+      <label slot="title" style="float: left;">{{dialogTitle}}</label>
+
+      <el-row>
+        <el-col :span="18" :offset="3">
+          <el-form ref="form" :model="form" :rules="formRules" label-width="80px">
+
+            <el-form-item label="名称" prop="name">
+              <el-input v-model.trim="form.name" placeholder="" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="年级分类" prop="type">
+              <el-select v-model.trim="form.type" placeholder="" clearable @change="typeChanged">
+                <el-option v-for="item in typeOption" :key="item.value" :label="item.label" :value="item.label"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="年级" prop="group">
+              <el-select v-model.trim="form.group" placeholder="" clearable @change="gradeChanged">
+                <el-option v-for="item in gradeOption" :key="item.value" :label="item.label" :value="item.label"></el-option>
+
+              </el-select>
+            </el-form-item>
+            <el-form-item label="学科" prop="subject">
+              <el-select v-model.trim="form.subject" placeholder="" clearable @change="subjectChanged">
+                <el-option v-for="item in subjectOption" :key="item.value" :label="item.label" :value="item.label"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-form>
+
+        </el-col>
+      </el-row>
+
+      <div slot="footer" class="dialog-footer">
+        <el-divider></el-divider>
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="handleUpdate" size="mini">确 定</el-button>
+      </div>
+    </el-dialog>
+  </el-row>
+</template>
+
+<script>
+  import paperApi from "@/api/paperApi"
+
+  export default {
+    name: 'paper',
+    components: {
+    },
+    data () {
+      return {
+      currentPage: 1,
+      previewTitle: '',
+      direction: 'ltr',
+        defaultProps: {
+          label: 'name',
+          children: 'child',
+        },
+        searchForm: {
+
+          start: 1,
+          limit: 10
+        },
+        tableData: [],
+        uploadData: {
+          tree: null,
+          treeNode: null,
+          resolve: null
+        },
+        typeOption: [{
+            value : '1',
+            label: '小学'
+          }, {
+            value : '2',
+            label: '初中'
+          }, {
+            value : '3',
+            label: '高中'
+          }
+        ],
+        gradeOption: [],
+
+        primaryOption: [{
+            value : '1',
+            label: '一年级'
+          }, {
+            value : '2',
+            label: '二年级'
+          }, {
+            value : '3',
+            label: '三年级'
+          }, {
+            value : '4',
+            label: '四年级'
+          }, {
+            value : '5',
+            label: '五年级'
+          }, {
+            value : '6',
+            label: '六年级'
+          }
+        ],
+        middleOption: [{
+            value : '1',
+            label: '一年级'
+          }, {
+            value : '2',
+            label: '二年级'
+          }, {
+          value : '3',
+          label: '三年级'
+          }
+        ],
+        subjectOption: [{
+            value : '1',
+            label: '语文'
+          }, {
+            value : '2',
+            label: '数学'
+          }, {
+            value : '3',
+            label: '英语'
+          }
+        ],
+
+
+        dialogTitle: '',
+        dialogVisible: false,
+        dialogdelVisible: false,
+        drawerVisible: false,
+        currentSelectRow: {}, // 当前选中行
+        form: {
+        id: '',
+          group: '',
+          name: '',
+          subject: '',
+          type: ''
+        },
+
+        formRules: {
+          name: [{required: true, message: '请输入名称', trigger: 'blur'}],
+          type: [{required: true, message: '请选择年级分类', trigger: 'blur'}],
+          group: [{required: true, message: '请选择年级', trigger: 'blur'}],
+          subject: [{required: true, message: '请选择学科', trigger: 'blur'}],
+        },
+        result: {
+        },
+        previewData: [],
+        a: {}
+
+
+      }
+    },
+    mounted () {
+      this.list()
+    },
+    methods: {
+      handleSizeChange(val) {
+            this.searchForm['limit']=val;
+            this.list()
+      },
+      handleCurrentChange(val) {
+        this.searchForm['start']=val+1
+        this.list()
+      },
+      filterNode (value, data) {
+        if (!value) {
+          return true
+        }
+
+        return data.name.indexOf(value) !== -1
+      },
+      list () {
+        this.currentSelectRow = {}
+        this.tableData = []
+        paperApi.page(this.searchForm).then(data => {
+
+          this.total = data.total
+
+          this.tableData = data.data
+        })
+      },
+      rowClick (row, event, column) {
+        this.currentSelectRow = row
+      },
+      typeChanged (value) {
+        console.log(value)
+        if (value === "小学") {
+          this.gradeOption = this.primaryOption
+        } else {
+          this.gradeOption = this.middleOption
+        }
+      },
+      gradeChanged (value) {
+        console.log(value)
+      },
+      subjectChanged (value) {
+        console.log(value)
+      },
+      handleAdd () {
+        /* 重置表单 */
+
+        this.dialogTitle = '新增'
+        this.dialogVisible = true
+      },
+      handleEdit (index,row) {
+        this.form['id'] = row.paperId
+        this.form['group'] = row.group
+        this.form['name'] = row.name
+        this.form['subject'] = row.subject
+        this.form['type'] = row.type
+        this.dialogTitle = '编辑'
+        this.dialogVisible = true
+      },
+      handleDel (index,row) {
+        this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          paperApi.deleteByPaperId(row.paperId).then(data => {
+            this.$message({
+              type: 'success',
+              message: '删除成功'
+            })
+
+            this.list()
+            this.load(this.uploadData.tree, this.uploadData.treeNode, this.uploadData.resolve)
+          })
+        })
+      },
+      load(tree, treeNode, resolve) {
+        this.uploadData.tree = tree
+        this.uploadData.treeNode = treeNode
+        this.uploadData.resolve = resolve
+        let value = tree.id
+          resolve(data)
+
+      },
+      handleSave () {
+        this.$refs['form'].validate((valid) => {
+          if (!valid) {
+            return
+          }
+          paperApi.Update(this.form).then(data => {
+
+            this.dialogVisible = false
+            this.$refs['form'].resetFields()
+            this.list()
+          })
+        })
+      },
+      handleUpdate () {
+
+
+          paperApi.Update(this.form).then(data => {
+
+            this.dialogVisible = false
+            this.$refs['form'].resetFields()
+            this.list()
+
+        })
+      },
+
+      handleAddStem () {
+
+      },
+      async handlePreview (index,row) {
+        this.previewData=[]
+        this.result=await paperApi.preview(row.paperId)
+        this.result=this.result.topics
+        for (let i=0;i<this.result.length;i++){
+          this.a = await paperApi.showStem(this.result[i])
+          this.previewData.push(this.a)
+        }
+
+
+
+        this.drawerVisible = true
+        this.previewTitle = row.paperName
+
+      }
+    }
+  }
+</script>
+
+<style scoped>
+</style>

+ 419 - 0
base-in-front-end-master1/src/views/system/dataPaper2/list.vue

@@ -0,0 +1,419 @@
+<template>
+  <el-row>
+    <el-row>
+      <white-board>
+        <el-breadcrumb separator="/">
+          <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+          <el-breadcrumb-item>系统管理</el-breadcrumb-item>
+          <el-breadcrumb-item>题库试卷</el-breadcrumb-item>
+        </el-breadcrumb>
+      </white-board>
+    </el-row>
+
+    <el-row>
+      <el-form ref="searchForm" :model="searchForm">
+        <search-white-board :show-more="false" @search="list1">
+          <div slot="base">
+            <el-row style="line-height: 40px; text-align: right;">
+              <el-col :span="3"><label class="search-label">id</label></el-col>
+              <el-col :span="5">
+                <el-input v-model.number="searchForm.id" placeholder="请输入id" clearable></el-input>
+              </el-col>
+            </el-row>
+          </div>
+        </search-white-board>
+      </el-form>
+    </el-row>
+
+    <el-row>
+      <white-board>
+        <el-row style="line-height: 40px; text-align: right;">
+          <el-col :span="6" :offset="18" style="text-align: right;">
+            <el-button icon="el-icon-plus" type="success" plain @click="handleAdd">新增</el-button>
+          </el-col>
+        </el-row>
+
+        <el-row style="padding: 10px 0px;">
+          <el-table :data="tableData" row-key="id"  style="width: 100%;" >
+            <el-table-column prop="id" label="标识" width="180"></el-table-column>
+            <el-table-column prop="name" label="试卷名" width="180"></el-table-column>
+            <el-table-column prop="gradeName" label="年级分类" width="100"></el-table-column>
+            <el-table-column prop="groupName" label="年级" width="100"></el-table-column>
+            <el-table-column prop="subject" label="学科"  width="100"></el-table-column>
+
+
+          </el-table>
+        </el-row>
+        <div class="block">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page.sync="currentPage"
+            :page-sizes="[10, 20, 30, 40]"
+            :page-size="10"
+            layout="sizes, prev, pager, next"
+          >
+          </el-pagination>
+        </div>
+      </white-board>
+    </el-row>
+
+    <el-drawer
+      :title="previewTitle"
+      :visible.sync="drawerVisible"
+      :direction="direction"
+    >
+      <template>
+        <el-table
+          :data="previewData"
+          style="width: 100%">
+          <el-table-column type="expand">
+            <template slot-scope="props">
+              <el-form label-position="left" inline class="demo-table-expand">
+
+                <el-form-item label="选项">
+                  <span>{{ props.row.optionList.length }}</span>
+                </el-form-item>
+              </el-form>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="题目内容"
+            prop="name">
+          </el-table-column>
+
+        </el-table>
+      </template>
+    </el-drawer>
+
+
+    <el-dialog :visible.sync="dialogVisible" ref="form">
+      <el-divider></el-divider>
+      <label slot="title" style="float: left;">{{dialogTitle}}</label>
+
+      <el-row>
+        <el-col :span="18" :offset="3">
+          <el-form ref="form" :model="form" :rules="formRules" label-width="80px">
+
+            <el-form-item label="名称" prop="name">
+              <el-input v-model.trim="form.name" placeholder="" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="年级分类" prop="groupName">
+              <el-select v-model.trim="form.groupName" placeholder="" clearable @change="typeChanged">
+                <el-option v-for="item in typeOption" :key="item.value" :label="item.label" :value="item.label"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="年级" prop="gradeName">
+              <el-select v-model.trim="form.gradeName" placeholder="" clearable @change="gradeChanged">
+                <el-option v-for="item in gradeOption" :key="item.value" :label="item.label" :value="item.label"></el-option>
+
+              </el-select>
+            </el-form-item>
+            <el-form-item label="学科" prop="subject">
+              <el-select v-model.trim="form.subject" placeholder="" clearable @change="subjectChanged">
+                <el-option v-for="item in subjectOption" :key="item.value" :label="item.label" :value="item.label"></el-option>
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="数量" prop="number">
+              <el-input v-model.trim="form.number" placeholder=""  clearable></el-input>
+            </el-form-item>
+
+
+          </el-form>
+
+        </el-col>
+      </el-row>
+
+      <div slot="footer" class="dialog-footer">
+        <el-divider></el-divider>
+        <el-button @click="dialogVisible = false" size="mini">取 消</el-button>
+        <el-button type="primary" @click="handleUpdate" size="mini">确 定</el-button>
+      </div>
+    </el-dialog>
+  </el-row>
+</template>
+
+<script>
+  import paperApi from "@/api/mypaperApi"
+
+  export default {
+    name: 'paper',
+    components: {
+    },
+    data () {
+      return {
+        currentPage: 1,
+        previewTitle: '',
+        direction: 'ltr',
+        defaultProps: {
+          label: 'name',
+          children: 'child',
+        },
+        searchForm: {
+          id : 1,
+          start: 1,
+          limit: 10
+        },
+        tableData: [],
+        uploadData: {
+          tree: null,
+          treeNode: null,
+          resolve: null
+        },
+        typeOption: [{
+          value : '1',
+          label: '小学'
+        }, {
+          value : '2',
+          label: '初中'
+        }, {
+          value : '3',
+          label: '高中'
+        }
+        ],
+        gradeOption: [],
+
+        primaryOption: [{
+          value : '1',
+          label: '一年级'
+        }, {
+          value : '2',
+          label: '二年级'
+        }, {
+          value : '3',
+          label: '三年级'
+        }, {
+          value : '4',
+          label: '四年级'
+        }, {
+          value : '5',
+          label: '五年级'
+        }, {
+          value : '6',
+          label: '六年级'
+        }
+        ],
+        middleOption: [{
+          value : '1',
+          label: '一年级'
+        }, {
+          value : '2',
+          label: '二年级'
+        }, {
+          value : '3',
+          label: '三年级'
+        }
+        ],
+        subjectOption: [{
+          value : '1',
+          label: '语文'
+        }, {
+          value : '2',
+          label: '数学'
+        }, {
+          value : '3',
+          label: '英语'
+        }
+        ],
+
+
+        dialogTitle: '',
+        dialogVisible: false,
+        dialogdelVisible: false,
+        drawerVisible: false,
+        currentSelectRow: {}, // 当前选中行
+        form: {
+          groupName: '',
+          gradeName: '',
+          name: '',
+          subject: '',
+          number:'0'
+        },
+
+
+        formRules: {
+          name: [{required: true, message: '请输入名称', trigger: 'blur'}],
+          type: [{required: true, message: '请选择年级分类', trigger: 'blur'}],
+          group: [{required: true, message: '请选择年级', trigger: 'blur'}],
+          subject: [{required: true, message: '请选择学科', trigger: 'blur'}],
+        },
+        result: {
+        },
+        previewData: [],
+        a: {}
+
+
+      }
+    },
+    mounted () {
+
+      this.list()
+    },
+    methods: {
+      handleSizeChange(val) {
+        this.searchForm['start']=val;
+        this.list()
+      },
+      handleCurrentChange(val) {
+        this.searchForm['start']=val+1
+        this.list()
+      },
+      filterNode (value, data) {
+        if (!value) {
+          return true
+        }
+
+        return data.name.indexOf(value) !== -1
+      },
+      list () {
+
+        this.currentSelectRow = {}
+        this.tableData = []
+        paperApi.page1(this.searchForm).then(data => {
+
+          //this.total = data.total
+
+          this.tableData = data.data
+
+        })
+      },
+      list1(){
+        this.currentSelectRow = {}
+        this.tableData = []
+        console.log("id:")
+        console.log(typeof this.searchForm.id)
+       paperApi.update2(this.searchForm.id).then(data => {
+      
+          //this.total = data.total
+
+          this.tableData = data.data
+
+        })
+
+      },
+      rowClick (row, event, column) {
+        this.currentSelectRow = row
+      },
+      typeChanged (value) {
+        console.log(value)
+        if (value === "小学") {
+          this.gradeOption = this.primaryOption
+        } else {
+          this.gradeOption = this.middleOption
+        }
+      },
+      numberChanged(value){
+        console.log("fff:::")
+        this.form.number=parseInt(value,10)
+        console.log(typeof this.form.number)
+
+      },
+
+      gradeChanged (value) {
+        console.log(value)
+      },
+      subjectChanged (value) {
+        console.log(value)
+      },
+      handleAdd () {
+        /* 重置表单 */
+
+        this.dialogTitle = '新增'
+        this.dialogVisible = true
+      },
+      handleEdit (index,row) {
+        this.form['id'] = row.paperId
+        this.form['group'] = row.group
+        this.form['name'] = row.name
+        this.form['subject'] = row.subject
+        this.form['type'] = row.type
+        this.dialogTitle = '编辑'
+        this.dialogVisible = true
+      },
+
+      handleDel (index,row) {
+        this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          paperApi.deleteByPaperId(row.paperId).then(data => {
+            this.$message({
+              type: 'success',
+              message: '删除成功'
+            })
+
+            this.list()
+            this.load(this.uploadData.tree, this.uploadData.treeNode, this.uploadData.resolve)
+          })
+        })
+      },
+      load(tree, treeNode, resolve) {
+        this.uploadData.tree = tree
+        this.uploadData.treeNode = treeNode
+        this.uploadData.resolve = resolve
+        let value = tree.id
+        resolve(data)
+
+      },
+      handleSave () {
+        this.$refs['form'].validate((valid) => {
+          if (!valid) {
+            return
+          }
+          paperApi.Update(this.form).then(data => {
+
+            console.log(form.gradeName+"ff")
+
+            this.dialogVisible = false
+            this.$refs['form'].resetFields()
+            this.list()
+
+          })
+        })
+      },
+      handleUpdate () {
+        console.log("update1")
+
+        console.log(this.form.name)
+        console.log(this.form.groupName)
+        console.log(this.form.gradeName)
+        console.log(this.form.subject)
+        console.log(typeof this.form.number)
+        console.log(this.form.number)
+
+        paperApi.Update(this.form).then(data => {
+          console.log(form.gradeName+"ff")
+          this.dialogVisible = false
+          //this.$refs['form'].resetFields()
+          this.list()
+
+
+        })
+      },
+
+      handleAddStem () {
+
+      },
+      async handlePreview (index,row) {
+        this.previewData=[]
+        this.result=await paperApi.preview(row.paperId)
+        this.result=this.result.topics
+        for (let i=0;i<this.result.length;i++){
+          this.a = await paperApi.showStem(this.result[i])
+          this.previewData.push(this.a)
+        }
+
+
+
+        this.drawerVisible = true
+        this.previewTitle = row.paperName
+
+      }
+    }
+  }
+</script>
+
+<style scoped>
+</style>

+ 9 - 0
base-in-front-end-master1/vue.config.js

@@ -0,0 +1,9 @@
+module.exports = {
+  publicPath: './',
+  productionSourceMap: false,
+  devServer: {
+    port: 8088,
+    disableHostCheck: true
+  }
+}
+

BIN
doc/201725010205_胡新豪_华南农业大学实习总结.doc


BIN
doc/201725010205_胡新豪_附件1:华南农业大学学生教学实习成绩考核表 .doc


BIN
doc/201725010207_李杰鸿_附件1:华南农业大学学生教学实习成绩考核表.doc


BIN
doc/201725010207_李杰鸿_附件2:华南农业大学实习总结.doc


BIN
doc/201725010211_梁景洲_附件1:华南农业大学学生教学实习成绩考核表.doc


BIN
doc/201725010211_梁景洲_附件2:华南农业大学实习总结.doc


BIN
doc/201725010214_刘健鑫_附件1:华南农业大学学生教学实习成绩考核表.doc


BIN
doc/201725010214_刘健鑫_附件2:华南农业大学实习总结.doc


BIN
doc/201725010216_龙富棉_华南农业大学学生教学实习成绩考核表.doc


BIN
doc/201725010216_龙富棉_华南农业大学实习总结.doc


BIN
doc/201725010217_毛功焕_华南农业大学学生教学实习成绩考核表.doc


BIN
doc/201725010217_毛功焕_华南农业大学实习总结.doc


BIN
doc/201725010218_潘滠文_华南农业大学学生教学实习成绩考核表.doc


BIN
doc/201725010218_潘滠文_华南农业大学实习总结.doc


+ 1 - 0
k12-qhelp-question-bank-back-end

@@ -0,0 +1 @@
+Subproject commit e8a570838b6f387cb524c90adbeac1a2ab80f0c6

+ 8 - 0
springboot-04-mybatis-plus/.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/

+ 22 - 0
springboot-04-mybatis-plus/.idea/compiler.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="springboot-04-mybatis-plus" />
+      </profile>
+    </annotationProcessing>
+    <bytecodeTargetLevel>
+      <module name="springboot-04-mybatis-plus" target="1.8" />
+    </bytecodeTargetLevel>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="springboot-04-mybatis-plus" options="-parameters" />
+    </option>
+  </component>
+</project>

+ 6 - 0
springboot-04-mybatis-plus/.idea/encodings.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+  </component>
+</project>

+ 25 - 0
springboot-04-mybatis-plus/.idea/jarRepositories.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="oss" />
+      <option name="name" value="oss" />
+      <option name="url" value="file:C:\Users\lenovo\.m2\repository" />
+    </remote-repository>
+  </component>
+</project>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: ch.qos.logback:logback-classic:1.2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: ch.qos.logback:logback-core:1.2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_3_3_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus:3.3.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.3.2/mybatis-plus-3.3.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.3.2/mybatis-plus-3.3.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus/3.3.2/mybatis-plus-3.3.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_annotation_3_3_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-annotation:3.3.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.3.2/mybatis-plus-annotation-3.3.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.3.2/mybatis-plus-annotation-3.3.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-annotation/3.3.2/mybatis-plus-annotation-3.3.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_boot_starter_3_3_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-boot-starter:3.3.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.3.2/mybatis-plus-boot-starter-3.3.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.3.2/mybatis-plus-boot-starter-3.3.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-boot-starter/3.3.2/mybatis-plus-boot-starter-3.3.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_core_3_3_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-core:3.3.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.3.2/mybatis-plus-core-3.3.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.3.2/mybatis-plus-core-3.3.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-core/3.3.2/mybatis-plus-core-3.3.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_baomidou_mybatis_plus_extension_3_3_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.baomidou:mybatis-plus-extension:3.3.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.3.2/mybatis-plus-extension-3.3.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.3.2/mybatis-plus-extension-3.3.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/baomidou/mybatis-plus-extension/3.3.2/mybatis-plus-extension-3.3.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_classmate_1_5_1.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml:classmate:1.5.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.5.1/classmate-1.5.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.5.1/classmate-1.5.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/classmate/1.5.1/classmate-1.5.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.0/jackson-annotations-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.0/jackson-annotations-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.11.0/jackson-annotations-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.0/jackson-core-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.0/jackson-core-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.11.0/jackson-core-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.0/jackson-databind-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.0/jackson-databind-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.11.0/jackson-databind-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.0/jackson-datatype-jdk8-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.0/jackson-datatype-jdk8-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.11.0/jackson-datatype-jdk8-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.0/jackson-datatype-jsr310-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.0/jackson-datatype-jsr310-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.11.0/jackson-datatype-jsr310-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_11_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.0/jackson-module-parameter-names-2.11.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.0/jackson-module-parameter-names-2.11.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/fasterxml/jackson/module/jackson-module-parameter-names/2.11.0/jackson-module-parameter-names-2.11.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_github_jsqlparser_jsqlparser_3_1.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.github.jsqlparser:jsqlparser:3.1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/3.1/jsqlparser-3.1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/3.1/jsqlparser-3.1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/github/jsqlparser/jsqlparser/3.1/jsqlparser-3.1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_google_guava_guava_20_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.google.guava:guava:20.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/20.0/guava-20.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_4_0.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.jayway.jsonpath:json-path:2.4.0">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2.4.0/json-path-2.4.0-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__com_zaxxer_HikariCP_3_4_5.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: com.zaxxer:HikariCP:3.4.5">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/com/zaxxer/HikariCP/3.4.5/HikariCP-3.4.5-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_github_openfeign_feign_core_10_2_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.github.openfeign:feign-core:10.2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/github/openfeign/feign-core/10.2.3/feign-core-10.2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/github/openfeign/feign-core/10.2.3/feign-core-10.2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/github/openfeign/feign-core/10.2.3/feign-core-10.2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_github_openfeign_feign_jackson_10_2_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.github.openfeign:feign-jackson:10.2.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/github/openfeign/feign-jackson/10.2.3/feign-jackson-10.2.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/github/openfeign/feign-jackson/10.2.3/feign-jackson-10.2.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/github/openfeign/feign-jackson/10.2.3/feign-jackson-10.2.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_core_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-core:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-core/2.9.2/springfox-core-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_schema_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-schema:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-schema/2.9.2/springfox-schema-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_spi_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-spi:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spi/2.9.2/springfox-spi-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_spring_web_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-spring-web:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-spring-web/2.9.2/springfox-spring-web-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_swagger2_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-swagger2:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger2/2.9.2/springfox-swagger2-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_swagger_common_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-swagger-common:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-common/2.9.2/springfox-swagger-common-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.springfox:springfox-swagger-ui:2.9.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/springfox/springfox-swagger-ui/2.9.2/springfox-swagger-ui-2.9.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_20.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.swagger:swagger-annotations:1.5.20">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-annotations/1.5.20/swagger-annotations-1.5.20-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__io_swagger_swagger_models_1_5_21.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: io.swagger:swagger-models:1.5.21">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.21/swagger-models-1.5.21.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.21/swagger-models-1.5.21-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/io/swagger/swagger-models/1.5.21/swagger-models-1.5.21-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.activation:jakarta.activation-api:1.2.2">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/activation/jakarta.activation-api/1.2.2/jakarta.activation-api-1.2.2-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/jakarta/xml/bind/jakarta.xml.bind-api/2.3.3/jakarta.xml.bind-api-2.3.3-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: javax.validation:validation-api:1.1.0.Final">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

+ 13 - 0
springboot-04-mybatis-plus/.idea/libraries/Maven__junit_junit_4_13.xml

@@ -0,0 +1,13 @@
+<component name="libraryTable">
+  <library name="Maven: junit:junit:4.13">
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13.jar!/" />
+    </CLASSES>
+    <JAVADOC>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13-javadoc.jar!/" />
+    </JAVADOC>
+    <SOURCES>
+      <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.13/junit-4.13-sources.jar!/" />
+    </SOURCES>
+  </library>
+</component>

Some files were not shown because too many files changed in this diff