diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000000..783a7f6184 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,29 @@ +# Created by .ignore support plugin (hsz.mobi) +.DS_Store +node_modules +node/ +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +*.iml +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + + +src/main/resources/static +src/main/resources/templates +target \ No newline at end of file diff --git a/backend/pom.xml b/backend/pom.xml new file mode 100644 index 0000000000..66cd44b0b7 --- /dev/null +++ b/backend/pom.xml @@ -0,0 +1,258 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.2.RELEASE + + + + 4.0.0 + + backend + + + UTF-8 + 1.4.0 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + spring-boot-starter-tomcat + org.springframework.boot + + + hibernate-validator + org.hibernate.validator + + + + + + org.springframework.boot + spring-boot-starter + + + + + + org.springframework.boot + spring-boot-starter-test + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-jetty + + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + 1.3.2 + + + + org.springframework.boot + spring-boot-starter-websocket + + + + mysql + mysql-connector-java + runtime + + + com.github.pagehelper + pagehelper + 5.0.3 + + + + org.apache.shiro + shiro-core + ${shiro.version} + + + commons-collections + commons-collections + + + commons-beanutils + commons-beanutils + + + + + org.apache.shiro + shiro-web + ${shiro.version} + + + org.apache.shiro + shiro-spring + ${shiro.version} + + + + org.apache.commons + commons-lang3 + + + junit + junit + + + + com.alibaba + fastjson + 1.2.45 + + + + org.slf4j + slf4j-simple + + + + + + + + src/main/java + + **/*.properties + **/*.xml + + false + + + src/main/resources + + **/*.* + + false + + + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + + + maven-source-plugin + 3.0.0 + + true + + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.6 + + + + org.apache.maven.plugins + maven-antrun-plugin + + + main-class-placement + generate-resources + + + + + + + + + + + + + + + + run + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.7 + + true + true + + + + mysql + mysql-connector-java + 5.1.41 + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/fit2cloud/metersphere/Application.java b/backend/src/main/java/com/fit2cloud/metersphere/Application.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/Application.java rename to backend/src/main/java/com/fit2cloud/metersphere/Application.java diff --git a/src/main/java/com/fit2cloud/metersphere/base/domain/User.java b/backend/src/main/java/com/fit2cloud/metersphere/base/domain/User.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/base/domain/User.java rename to backend/src/main/java/com/fit2cloud/metersphere/base/domain/User.java diff --git a/src/main/java/com/fit2cloud/metersphere/base/domain/UserExample.java b/backend/src/main/java/com/fit2cloud/metersphere/base/domain/UserExample.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/base/domain/UserExample.java rename to backend/src/main/java/com/fit2cloud/metersphere/base/domain/UserExample.java diff --git a/src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.java b/backend/src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.java rename to backend/src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.java diff --git a/src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.xml b/backend/src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.xml similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.xml rename to backend/src/main/java/com/fit2cloud/metersphere/base/mapper/UserMapper.xml diff --git a/src/main/java/com/fit2cloud/metersphere/config/MybatisConfig.java b/backend/src/main/java/com/fit2cloud/metersphere/config/MybatisConfig.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/config/MybatisConfig.java rename to backend/src/main/java/com/fit2cloud/metersphere/config/MybatisConfig.java diff --git a/src/main/java/com/fit2cloud/metersphere/config/ShiroConfig.java b/backend/src/main/java/com/fit2cloud/metersphere/config/ShiroConfig.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/config/ShiroConfig.java rename to backend/src/main/java/com/fit2cloud/metersphere/config/ShiroConfig.java diff --git a/src/main/java/com/fit2cloud/metersphere/config/WebConfig.java b/backend/src/main/java/com/fit2cloud/metersphere/config/WebConfig.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/config/WebConfig.java rename to backend/src/main/java/com/fit2cloud/metersphere/config/WebConfig.java diff --git a/src/main/java/com/fit2cloud/metersphere/config/WebSocketConfig.java b/backend/src/main/java/com/fit2cloud/metersphere/config/WebSocketConfig.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/config/WebSocketConfig.java rename to backend/src/main/java/com/fit2cloud/metersphere/config/WebSocketConfig.java diff --git a/src/main/java/com/fit2cloud/metersphere/controller/IndexController.java b/backend/src/main/java/com/fit2cloud/metersphere/controller/IndexController.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/controller/IndexController.java rename to backend/src/main/java/com/fit2cloud/metersphere/controller/IndexController.java diff --git a/src/main/java/com/fit2cloud/metersphere/controller/LoginController.java b/backend/src/main/java/com/fit2cloud/metersphere/controller/LoginController.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/controller/LoginController.java rename to backend/src/main/java/com/fit2cloud/metersphere/controller/LoginController.java diff --git a/src/main/java/com/fit2cloud/metersphere/controller/ResultHolder.java b/backend/src/main/java/com/fit2cloud/metersphere/controller/ResultHolder.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/controller/ResultHolder.java rename to backend/src/main/java/com/fit2cloud/metersphere/controller/ResultHolder.java diff --git a/src/main/java/com/fit2cloud/metersphere/controller/TestController.java b/backend/src/main/java/com/fit2cloud/metersphere/controller/TestController.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/controller/TestController.java rename to backend/src/main/java/com/fit2cloud/metersphere/controller/TestController.java diff --git a/src/main/java/com/fit2cloud/metersphere/controller/request/LoginRequest.java b/backend/src/main/java/com/fit2cloud/metersphere/controller/request/LoginRequest.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/controller/request/LoginRequest.java rename to backend/src/main/java/com/fit2cloud/metersphere/controller/request/LoginRequest.java diff --git a/src/main/java/com/fit2cloud/metersphere/interceptor/TestInterceptor.java b/backend/src/main/java/com/fit2cloud/metersphere/interceptor/TestInterceptor.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/interceptor/TestInterceptor.java rename to backend/src/main/java/com/fit2cloud/metersphere/interceptor/TestInterceptor.java diff --git a/src/main/java/com/fit2cloud/metersphere/security/LoginFilter.java b/backend/src/main/java/com/fit2cloud/metersphere/security/LoginFilter.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/security/LoginFilter.java rename to backend/src/main/java/com/fit2cloud/metersphere/security/LoginFilter.java diff --git a/src/main/java/com/fit2cloud/metersphere/security/ShiroDBRealm.java b/backend/src/main/java/com/fit2cloud/metersphere/security/ShiroDBRealm.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/security/ShiroDBRealm.java rename to backend/src/main/java/com/fit2cloud/metersphere/security/ShiroDBRealm.java diff --git a/src/main/java/com/fit2cloud/metersphere/user/SessionUser.java b/backend/src/main/java/com/fit2cloud/metersphere/user/SessionUser.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/user/SessionUser.java rename to backend/src/main/java/com/fit2cloud/metersphere/user/SessionUser.java diff --git a/src/main/java/com/fit2cloud/metersphere/user/SessionUtils.java b/backend/src/main/java/com/fit2cloud/metersphere/user/SessionUtils.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/user/SessionUtils.java rename to backend/src/main/java/com/fit2cloud/metersphere/user/SessionUtils.java diff --git a/src/main/java/com/fit2cloud/metersphere/websocket/ServerEndpointConfigurator.java b/backend/src/main/java/com/fit2cloud/metersphere/websocket/ServerEndpointConfigurator.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/websocket/ServerEndpointConfigurator.java rename to backend/src/main/java/com/fit2cloud/metersphere/websocket/ServerEndpointConfigurator.java diff --git a/src/main/java/com/fit2cloud/metersphere/websocket/WebSocketServer.java b/backend/src/main/java/com/fit2cloud/metersphere/websocket/WebSocketServer.java similarity index 100% rename from src/main/java/com/fit2cloud/metersphere/websocket/WebSocketServer.java rename to backend/src/main/java/com/fit2cloud/metersphere/websocket/WebSocketServer.java diff --git a/src/main/resources/application.properties b/backend/src/main/resources/application.properties similarity index 100% rename from src/main/resources/application.properties rename to backend/src/main/resources/application.properties diff --git a/src/main/resources/generatorConfig.xml b/backend/src/main/resources/generatorConfig.xml similarity index 100% rename from src/main/resources/generatorConfig.xml rename to backend/src/main/resources/generatorConfig.xml diff --git a/src/main/resources/logback.xml b/backend/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to backend/src/main/resources/logback.xml diff --git a/src/test/java/com/fit2cloud/metersphere/ApplicationTests.java b/backend/src/test/java/com/fit2cloud/metersphere/ApplicationTests.java similarity index 100% rename from src/test/java/com/fit2cloud/metersphere/ApplicationTests.java rename to backend/src/test/java/com/fit2cloud/metersphere/ApplicationTests.java diff --git a/frontend/.editorconfig b/frontend/.editorconfig new file mode 100644 index 0000000000..3454886e3a --- /dev/null +++ b/frontend/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000000..ad34583de6 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,29 @@ +.DS_Store +node_modules +node/ +/dist + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +*.iml +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.setting +.project +.classpath +yarn.lock +package-lock.json + diff --git a/frontend/babel.config.js b/frontend/babel.config.js new file mode 100644 index 0000000000..e9558405fd --- /dev/null +++ b/frontend/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000000..c5fd5c64a9 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,49 @@ +{ + "name": "vue-demo", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.26", + "@fortawesome/free-regular-svg-icons": "^5.12.0", + "@fortawesome/free-solid-svg-icons": "^5.12.0", + "@fortawesome/vue-fontawesome": "^0.1.9", + "axios": "^0.19.0", + "core-js": "^3.4.3", + "element-ui": "^2.13.0", + "vue": "^2.6.10", + "vue-i18n": "^8.15.3", + "vue-router": "^3.1.3" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.1.0", + "@vue/cli-plugin-eslint": "^4.1.0", + "@vue/cli-service": "^4.1.0", + "babel-eslint": "^10.0.3", + "eslint": "^5.16.0", + "eslint-plugin-vue": "^5.0.0", + "vue-template-compiler": "^2.6.10" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "eslint:recommended" + ], + "rules": {}, + "parserOptions": { + "parser": "babel-eslint" + } + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/frontend/pom.xml b/frontend/pom.xml new file mode 100644 index 0000000000..8dd702aa4c --- /dev/null +++ b/frontend/pom.xml @@ -0,0 +1,68 @@ + + + + vue-demo + com.fit2cloud + 1.0 + + 4.0.0 + + frontend + + + UTF-8 + UTF-8 + 1.9.1 + + + + + + com.github.eirslett + frontend-maven-plugin + ${frontend-maven-plugin.version} + + + + install node and yarn + + install-node-and-yarn + + + generate-resources + + v12.14.1 + v1.21.1 + + + + + yarn install + + yarn + + + + install + + + + + yarn build + + yarn + + + build + + + + + + + diff --git a/frontend/public/favicon.png b/frontend/public/favicon.png new file mode 100644 index 0000000000..15fb97a693 Binary files /dev/null and b/frontend/public/favicon.png differ diff --git a/frontend/src/assets/MeterSphere-反白.png b/frontend/src/assets/MeterSphere-反白.png new file mode 100644 index 0000000000..479ded7aed Binary files /dev/null and b/frontend/src/assets/MeterSphere-反白.png differ diff --git a/frontend/src/assets/MeterSphere-彩色.png b/frontend/src/assets/MeterSphere-彩色.png new file mode 100644 index 0000000000..66d9c25d60 Binary files /dev/null and b/frontend/src/assets/MeterSphere-彩色.png differ diff --git a/frontend/src/assets/favicon-反白.png b/frontend/src/assets/favicon-反白.png new file mode 100644 index 0000000000..c9ad4be020 Binary files /dev/null and b/frontend/src/assets/favicon-反白.png differ diff --git a/frontend/src/assets/favicon-彩色.png b/frontend/src/assets/favicon-彩色.png new file mode 100644 index 0000000000..15fb97a693 Binary files /dev/null and b/frontend/src/assets/favicon-彩色.png differ diff --git a/frontend/src/assets/info.png b/frontend/src/assets/info.png new file mode 100644 index 0000000000..5d7d73fddc Binary files /dev/null and b/frontend/src/assets/info.png differ diff --git a/frontend/src/common/ajax.js b/frontend/src/common/ajax.js new file mode 100644 index 0000000000..270bd88c13 --- /dev/null +++ b/frontend/src/common/ajax.js @@ -0,0 +1,82 @@ +import {Message, MessageBox} from 'element-ui'; +import axios from "axios"; + +export default { + install(Vue) { + if (!axios) { + window.console.error('You have to install axios'); + return + } + + if (!Message) { + window.console.error('You have to install Message of ElementUI'); + return + } + + let login = function () { + MessageBox.alert("认证信息已过期,请重新登录。", { + callback: () => { + window.location.href = "/login" + } + }); + }; + + axios.defaults.withCredentials = true; + + axios.interceptors.response.use(response => { + if (response.headers["authentication-status"] === "invalid") { + login(); + } + return response; + }, error => { + return Promise.reject(error); + }); + + Vue.prototype.$get = function (url, success) { + if (!success) { + return axios.get(url); + } else { + axios.get(url).then(response => { + if (!response.data) { + return success(response); + } + if (response.data.success) { + return success(response.data); + } else { + window.console.warn(response.data); + Message.warning(response.data.message); + } + }).catch(error => { + window.console.error(error.response || error.message); + Message.error({message: error.message, showClose: true}); + }) + } + }; + + Vue.prototype.$post = function (url, data, success) { + if (!success) { + return axios.post(url, data); + } else { + axios.post(url, data).then(response => { + if (!response.data) { + return success(response); + } + if (response.data.success) { + return success(response.data); + } else { + window.console.warn(response.data); + Message.warning(response.data.message); + } + }).catch(error => { + window.console.error(error.response || error.message); + Message.error({message: error.message, showClose: true}); + }) + } + }; + + Vue.prototype.$all = function (array, callback) { + if (array.length < 1) return; + axios.all(array).then(axios.spread(callback)); + }; + } +} diff --git a/frontend/src/common/filter.js b/frontend/src/common/filter.js new file mode 100644 index 0000000000..9acd46cd07 --- /dev/null +++ b/frontend/src/common/filter.js @@ -0,0 +1,24 @@ +const options = function (value, array) { + if (!value) return ''; + if (array) { + for (let i = 0; i < array.length; i++) { + if (value === array[i].key) { + return array[i].value + } + } + } + return value; +}; + +const filters = { + "options": options, +}; + +export default { + install(Vue) { + // 注册公用过滤器 + Object.keys(filters).forEach(key => { + Vue.filter(key, filters[key]) + }); + } +} diff --git a/frontend/src/common/icon.js b/frontend/src/common/icon.js new file mode 100644 index 0000000000..1632c4104d --- /dev/null +++ b/frontend/src/common/icon.js @@ -0,0 +1,11 @@ +import {library} from '@fortawesome/fontawesome-svg-core' +import {fas} from '@fortawesome/free-solid-svg-icons' +import {far} from '@fortawesome/free-regular-svg-icons' +import {FontAwesomeIcon} from '@fortawesome/vue-fontawesome' + +export default { + install(Vue) { + library.add(fas, far); + Vue.component('font-awesome-icon', FontAwesomeIcon); + } +} diff --git a/frontend/src/i18n/en_US.js b/frontend/src/i18n/en_US.js new file mode 100644 index 0000000000..9d93c61805 --- /dev/null +++ b/frontend/src/i18n/en_US.js @@ -0,0 +1,7 @@ +const en_US = { + i18n: { + 'home': 'Home', + } +}; + +export default en_US diff --git a/frontend/src/i18n/i18n.js b/frontend/src/i18n/i18n.js new file mode 100644 index 0000000000..b521912ba1 --- /dev/null +++ b/frontend/src/i18n/i18n.js @@ -0,0 +1,26 @@ +import Vue from 'vue'; +import VueI18n from "vue-i18n"; +import enLocale from "element-ui/lib/locale/lang/en"; +import zh_CNLocale from "element-ui/lib/locale/lang/zh-CN"; +import en_US from "./en_US"; +import zh_CN from "./zh_CN"; + +Vue.use(VueI18n); + +const messages = { + 'en_US': { + ...en_US, + ...enLocale + }, + 'zh_CN': { + ...zh_CN, + ...zh_CNLocale + } +}; + +const i18n = new VueI18n({ + locale: 'en_US', + messages, +}); + +export default i18n; diff --git a/frontend/src/i18n/zh_CN.js b/frontend/src/i18n/zh_CN.js new file mode 100644 index 0000000000..7b248babfa --- /dev/null +++ b/frontend/src/i18n/zh_CN.js @@ -0,0 +1,7 @@ +const zh_CN = { + i18n: { + 'home': '首页', + } +}; + +export default zh_CN diff --git a/frontend/src/login/Login.vue b/frontend/src/login/Login.vue new file mode 100644 index 0000000000..b707131db9 --- /dev/null +++ b/frontend/src/login/Login.vue @@ -0,0 +1,200 @@ + + + + + + + + diff --git a/frontend/src/login/login.html b/frontend/src/login/login.html new file mode 100644 index 0000000000..57ffc9dfbb --- /dev/null +++ b/frontend/src/login/login.html @@ -0,0 +1,13 @@ + + + + + + + + MeterSphere + + +
+ + diff --git a/frontend/src/login/login.js b/frontend/src/login/login.js new file mode 100644 index 0000000000..030f88b11d --- /dev/null +++ b/frontend/src/login/login.js @@ -0,0 +1,19 @@ +import Vue from 'vue'; +import {Button, Col, Form, FormItem, Input, Row} from 'element-ui'; +import 'element-ui/lib/theme-chalk/index.css'; +import Login from "./Login.vue"; +import Ajax from "../common/ajax"; + +Vue.config.productionTip = false; +Vue.use(Row); +Vue.use(Col); +Vue.use(Form); +Vue.use(FormItem); +Vue.use(Input); +Vue.use(Button); +Vue.use(Ajax); + +new Vue({ + el: '#login', + render: h => h(Login) +}); diff --git a/frontend/src/performance/App.vue b/frontend/src/performance/App.vue new file mode 100644 index 0000000000..5a0a6aebd8 --- /dev/null +++ b/frontend/src/performance/App.vue @@ -0,0 +1,105 @@ + + + + + + + + diff --git a/frontend/src/performance/components/HeaderMenus.vue b/frontend/src/performance/components/HeaderMenus.vue new file mode 100644 index 0000000000..33775017fc --- /dev/null +++ b/frontend/src/performance/components/HeaderMenus.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/frontend/src/performance/components/HeaderSetting.vue b/frontend/src/performance/components/HeaderSetting.vue new file mode 100644 index 0000000000..62d6e78d3f --- /dev/null +++ b/frontend/src/performance/components/HeaderSetting.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/frontend/src/performance/components/HeaderUser.vue b/frontend/src/performance/components/HeaderUser.vue new file mode 100644 index 0000000000..80b6ca787f --- /dev/null +++ b/frontend/src/performance/components/HeaderUser.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/frontend/src/performance/components/router/RouterSidebar.vue b/frontend/src/performance/components/router/RouterSidebar.vue new file mode 100644 index 0000000000..9c5b1d2218 --- /dev/null +++ b/frontend/src/performance/components/router/RouterSidebar.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/frontend/src/performance/components/router/View.vue b/frontend/src/performance/components/router/View.vue new file mode 100644 index 0000000000..c96d35a780 --- /dev/null +++ b/frontend/src/performance/components/router/View.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/frontend/src/performance/components/router/router.js b/frontend/src/performance/components/router/router.js new file mode 100644 index 0000000000..3fcd964a5a --- /dev/null +++ b/frontend/src/performance/components/router/router.js @@ -0,0 +1,28 @@ +import Vue from "vue"; +import VueRouter from 'vue-router' +import RouterSidebar from "./RouterSidebar"; +import Setting from "../settings/Setting"; +import Workspace from "../settings/Workspace"; + +Vue.use(VueRouter); + +const router = new VueRouter({ + routes: [ + { + path: "/sidebar", components: { + sidebar: RouterSidebar + } + }, + { + path: "/content", components: { + content: Setting + }, children: [ + { + path: 'workspace', + component: Workspace + } + ] + }] +}); + +export default router diff --git a/frontend/src/performance/components/settings/CreateBox.vue b/frontend/src/performance/components/settings/CreateBox.vue new file mode 100644 index 0000000000..bb9b8c7e28 --- /dev/null +++ b/frontend/src/performance/components/settings/CreateBox.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/frontend/src/performance/components/settings/CurrentUser.vue b/frontend/src/performance/components/settings/CurrentUser.vue new file mode 100644 index 0000000000..e9c16e0b05 --- /dev/null +++ b/frontend/src/performance/components/settings/CurrentUser.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/frontend/src/performance/components/settings/Setting.vue b/frontend/src/performance/components/settings/Setting.vue new file mode 100644 index 0000000000..cd31eb86e0 --- /dev/null +++ b/frontend/src/performance/components/settings/Setting.vue @@ -0,0 +1,64 @@ + + + + + + + diff --git a/frontend/src/performance/components/settings/SettingMenu.vue b/frontend/src/performance/components/settings/SettingMenu.vue new file mode 100644 index 0000000000..d869c1ec9c --- /dev/null +++ b/frontend/src/performance/components/settings/SettingMenu.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/frontend/src/performance/components/settings/Workspace.vue b/frontend/src/performance/components/settings/Workspace.vue new file mode 100644 index 0000000000..825a8d5e76 --- /dev/null +++ b/frontend/src/performance/components/settings/Workspace.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/frontend/src/performance/components/websocket/WebSocket.vue b/frontend/src/performance/components/websocket/WebSocket.vue new file mode 100644 index 0000000000..74a6366920 --- /dev/null +++ b/frontend/src/performance/components/websocket/WebSocket.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/frontend/src/performance/index.html b/frontend/src/performance/index.html new file mode 100644 index 0000000000..4c586dd423 --- /dev/null +++ b/frontend/src/performance/index.html @@ -0,0 +1,13 @@ + + + + + + + + MeterSphere + + +
+ + diff --git a/frontend/src/performance/main.js b/frontend/src/performance/main.js new file mode 100644 index 0000000000..db085981a7 --- /dev/null +++ b/frontend/src/performance/main.js @@ -0,0 +1,24 @@ +import Vue from 'vue'; +import ElementUI from 'element-ui'; +import 'element-ui/lib/theme-chalk/index.css'; +import icon from "../common/icon"; +import filters from "../common/filter"; +import ajax from "../common/ajax"; +import App from './App.vue'; +import router from "./components/router/router"; +import i18n from "../i18n/i18n"; + +Vue.config.productionTip = false; +Vue.use(icon); +Vue.use(ElementUI, { + i18n: (key, value) => i18n.t(key, value) +}); +Vue.use(filters); +Vue.use(ajax); + +new Vue({ + el: '#app', + router, + i18n, + render: h => h(App) +}); diff --git a/frontend/vue.config.js b/frontend/vue.config.js new file mode 100644 index 0000000000..240cd4343b --- /dev/null +++ b/frontend/vue.config.js @@ -0,0 +1,26 @@ +module.exports = { + productionSourceMap: true, + configureWebpack: { + devtool: 'source-map' + }, + devServer: { + proxy: { + ['^(?!/login)']: { + target: 'http://localhost:8888', + ws: true, + } + } + }, + pages: { + performance: { + entry: "src/performance/main.js", + template: "src/performance/index.html", + filename: "index.html" + }, + login: { + entry: "src/login/login.js", + template: "src/login/login.html", + filename: "login.html" + } + } +}; \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3a23a9eefe..0c07c5d93f 100644 --- a/pom.xml +++ b/pom.xml @@ -1,196 +1,83 @@ - - - org.springframework.boot - spring-boot-starter-parent - 2.2.2.RELEASE - - - + 4.0.0 - + com.fit2cloud metersphere-server + 0.0.1-SNAPSHOT + pom + + root + + frontend + backend + - UTF-8 - 1.4.0 1.8 + 4.12 + 5.2.1 - - - org.springframework.boot - spring-boot-starter-web - - - spring-boot-starter-tomcat - org.springframework.boot - - - hibernate-validator - org.hibernate.validator - - - + + + + + org.apache.jmeter + ApacheJMeter_http + ${jmeter.version} + + + org.apache.logging.log4j + log4j-slf4j-impl + + + - - org.springframework.boot - spring-boot-starter - + + org.apache.commons + commons-lang3 + 3.9 + + + org.apache.httpcomponents + httpclient + 4.5.10 + + + org.apache.httpcomponents + httpasyncclient + 4.1.4 + + + commons-io + commons-io + 2.6 + - + + org.influxdb + influxdb-java + 2.16 + - - org.springframework.boot - spring-boot-starter-test - - - org.springframework.boot - spring-boot-starter-aop - - - org.springframework.boot - spring-boot-starter-jetty - + + org.slf4j + slf4j-simple + 1.7.29 + - - org.mybatis.spring.boot - mybatis-spring-boot-starter - 1.3.2 - - - - org.springframework.boot - spring-boot-starter-websocket - - - - mysql - mysql-connector-java - runtime - - - com.github.pagehelper - pagehelper - 5.0.3 - - - - org.apache.shiro - shiro-core - ${shiro.version} - - - commons-collections - commons-collections - - - commons-beanutils - commons-beanutils - - - - - org.apache.shiro - shiro-web - ${shiro.version} - - - org.apache.shiro - shiro-spring - ${shiro.version} - - - - org.apache.commons - commons-lang3 - - - junit - junit - - - - com.alibaba - fastjson - 1.2.45 - - - - org.slf4j - slf4j-simple - - - + + junit + junit + ${junit.version} + test + + + - - - src/main/java - - **/*.properties - **/*.xml - - false - - - src/main/resources - - **/*.* - - false - - - - - org.springframework.boot - spring-boot-maven-plugin - - true - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.12.4 - - true - - - - maven-source-plugin - 3.0.0 - - true - - - - attach-sources - - jar - - - - org.apache.maven.plugins maven-compiler-plugin @@ -199,60 +86,6 @@ 1.8 - - - - org.apache.maven.plugins - maven-war-plugin - 2.6 - - - - org.apache.maven.plugins - maven-antrun-plugin - - - main-class-placement - generate-resources - - - - - - - - - - - - - - - - run - - - - - - org.mybatis.generator - mybatis-generator-maven-plugin - 1.3.7 - - true - true - - - - mysql - mysql-connector-java - 5.1.41 - - - - - - \ No newline at end of file