From 834b9b0756467bac8481aabeca00b2f4b08b0445 Mon Sep 17 00:00:00 2001 From: sc Date: Tue, 20 Apr 2021 16:27:22 +0800 Subject: [PATCH] init --- .editorconfig | 12 +++ .gitignore | 37 ++++--- README.en.md | 36 ------- babel.config.js | 5 + package.json | 54 ++++++++++ public/favicon.ico | Bin 0 -> 15086 bytes public/index.html | 18 ++++ public/json/user.json | 68 ++++++++++++ src/App.vue | 14 +++ src/api/index.js | 13 +++ src/assets/logo.png | Bin 0 -> 60577 bytes src/components/HelloWorld.vue | 32 ++++++ src/config/index.js | 14 +++ src/layout/components/NavMenu.vue | 27 +++++ src/layout/components/head.vue | 14 +++ src/layout/components/side.vue | 80 ++++++++++++++ src/layout/components/tags.vue | 170 ++++++++++++++++++++++++++++++ src/layout/index.vue | 32 ++++++ src/main.js | 20 ++++ src/router/index.js | 126 ++++++++++++++++++++++ src/store/index.js | 8 ++ src/store/modules/tagsView.js | 24 +++++ src/style/style.less | 47 +++++++++ src/utils/request.js | 78 ++++++++++++++ src/utils/tool.js | 20 ++++ src/views/home.vue | 9 ++ src/views/list.vue | 10 ++ src/views/login.vue | 24 +++++ src/views/other/404.vue | 9 ++ src/views/other/empty.vue | 3 + src/views/show.vue | 20 ++++ 31 files changed, 973 insertions(+), 51 deletions(-) create mode 100644 .editorconfig delete mode 100644 README.en.md create mode 100644 babel.config.js create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/json/user.json create mode 100644 src/App.vue create mode 100644 src/api/index.js create mode 100644 src/assets/logo.png create mode 100644 src/components/HelloWorld.vue create mode 100644 src/config/index.js create mode 100644 src/layout/components/NavMenu.vue create mode 100644 src/layout/components/head.vue create mode 100644 src/layout/components/side.vue create mode 100644 src/layout/components/tags.vue create mode 100644 src/layout/index.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/tagsView.js create mode 100644 src/style/style.less create mode 100644 src/utils/request.js create mode 100644 src/utils/tool.js create mode 100644 src/views/home.vue create mode 100644 src/views/list.vue create mode 100644 src/views/login.vue create mode 100644 src/views/other/404.vue create mode 100644 src/views/other/empty.vue create mode 100644 src/views/show.vue diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..4e1edd14 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = tab +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore index 5d947ca8..af757930 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,25 @@ -# Build and Release Folders -bin-debug/ -bin-release/ -[Oo]bj/ -[Bb]in/ +.DS_Store +node_modules +/dist -# Other files and folders -.settings/ -# Executables -*.swf -*.air -*.ipa -*.apk +# local env files +.env.local +.env.*.local -# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` -# should NOT be excluded as they contain compiler settings and other important -# information for Eclipse / Flash Builder. +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +package-lock.json \ No newline at end of file diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 2c500233..00000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# SCUI - -#### Description -SCUI - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 00000000..e9558405 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..236011e9 --- /dev/null +++ b/package.json @@ -0,0 +1,54 @@ +{ + "name": "element-plus-starter", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "axios": "^0.21.0", + "core-js": "^3.6.5", + "element-plus": "latest", + "less": "^3.12.2", + "less-loader": "^7.1.0", + "nprogress": "^0.2.0", + "vue": "^3.0.0", + "vue-router": "^4.0.0-0", + "vuex": "^4.0.0-0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "~4.5.0", + "@vue/cli-plugin-eslint": "~4.5.0", + "@vue/cli-service": "~4.5.0", + "@vue/compiler-sfc": "^3.0.0", + "babel-eslint": "^10.1.0", + "eslint": "^6.7.2", + "eslint-plugin-vue": "^7.0.0-0" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/vue3-essential", + "eslint:recommended" + ], + "parserOptions": { + "parser": "babel-eslint" + }, + "rules": { + "indent": 0, + "no-tabs": 0, + "no-mixed-spaces-and-tabs": 0, + "vue/no-unused-components": "off" + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ] +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2d1691e9ec7e6cb9e013c7212ba6348d9aa93e9a GIT binary patch literal 15086 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 V6D|S5E1{m3cx*i1jgKbk{ts%h>Bj&7 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..c2ef4d60 --- /dev/null +++ b/public/index.html @@ -0,0 +1,18 @@ + + + + + + + + Welcome to Element Plus + + + +
+ + + diff --git a/public/json/user.json b/public/json/user.json new file mode 100644 index 00000000..881cb815 --- /dev/null +++ b/public/json/user.json @@ -0,0 +1,68 @@ +{ + "code": 200, + "data": { + "userInfo" : { + "userName":"Admin" + }, + "menuList" : [ + { + "name": "组件", + "path": "/vab", + "meta": { + "icon":"el-icon-takeaway-box" + }, + "children": [ + { + "path": "/vab/list", + "name": "列表", + "meta": {}, + "component": "list" + }, + { + "path": "/vab/show", + "name": "详情", + "meta": {}, + "component": "show" + }, + { + "path": "/vab/lala", + "name": "404", + "meta": {}, + "component": "lala" + } + ] + }, + { + "name": "其他", + "path": "/other", + "meta": { + "icon":"el-icon-more" + }, + "children": [ + { + "path": "/other/1", + "name": "other1", + "meta": {}, + "component": "list" + } + ] + }, + { + "name": "配置", + "path": "/setting", + "meta": { + "icon":"el-icon-setting" + }, + "children": [ + { + "path": "/setting/1", + "name": "setting1", + "meta": {}, + "component": "lala" + } + ] + } + ] + }, + "message": "" +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 00000000..7aa61808 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 00000000..5cb2466d --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,13 @@ +import config from "@/config"; +import http from "@/utils/request"; + + +const api = { + user: { + info: async function(){ + return await http.get(`${config.apiUrl}/json/user.json`); + } + } +} + +export default api; diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6cb27e7cc33c7fe366f7166df457a1c5b368f4 GIT binary patch literal 60577 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%0D$0pPjOJCBUdP3-o3=zX)R(zq* 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 B3pfA( literal 0 HcmV?d00001 diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 00000000..d1674196 --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,32 @@ + + + + + + diff --git a/src/config/index.js b/src/config/index.js new file mode 100644 index 00000000..5b3dbdd0 --- /dev/null +++ b/src/config/index.js @@ -0,0 +1,14 @@ +module.exports = { + //标题 + title: "VUE", + //版本号 + version: "1.0", + //接口地址 + apiUrl: "", + //是否开启多标签 + tags: false, + //布局 + layout: "default", + //主题 + theme: "default", +}; diff --git a/src/layout/components/NavMenu.vue b/src/layout/components/NavMenu.vue new file mode 100644 index 00000000..72cb595e --- /dev/null +++ b/src/layout/components/NavMenu.vue @@ -0,0 +1,27 @@ + + + \ No newline at end of file diff --git a/src/layout/components/head.vue b/src/layout/components/head.vue new file mode 100644 index 00000000..d93c5943 --- /dev/null +++ b/src/layout/components/head.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/layout/components/side.vue b/src/layout/components/side.vue new file mode 100644 index 00000000..98c71fa9 --- /dev/null +++ b/src/layout/components/side.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/layout/components/tags.vue b/src/layout/components/tags.vue new file mode 100644 index 00000000..225413e1 --- /dev/null +++ b/src/layout/components/tags.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 00000000..cb2af925 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..a8c5a124 --- /dev/null +++ b/src/main.js @@ -0,0 +1,20 @@ +import ElementPlus from 'element-plus' +import 'element-plus/lib/theme-chalk/index.css' +import { createApp } from 'vue' +import App from './App.vue' +import config from "./config"; +import router from './router' +import store from './store' +import tool from './utils/tool' +import api from './api' + +const app = createApp(App); + +app.config.globalProperties.$CONFIG = config; +app.config.globalProperties.$TOOL = tool; +app.config.globalProperties.$API = api; + +app.use(store); +app.use(router); +app.use(ElementPlus, { size: 'small', zIndex: 3000 }); +app.mount('#app'); diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 00000000..31a33240 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,126 @@ +import {createRouter, createWebHashHistory} from 'vue-router'; +import { ElNotification } from 'element-plus'; +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import tool from '@/utils/tool'; + +//系统路由 +const routes = [{ + path: "/", + name: "layout", + component: () => import(/* webpackChunkName: "layout" */ '@/layout'), + redirect: '/dashboard', + children: [ + { + path: "/home", + name: "首页", + component: () => import(`@/views/other/empty`), + meta: { + icon: "el-icon-platform-eleme" + }, + children: [ + { + path: "/dashboard", + name: "控制台", + meta: { + affix: true + }, + component: () => import(/* webpackChunkName: "home" */ '@/views/home'), + } + ] + } + ] + }, + { + path: "/login", + name: "登录", + component: () => import(/* webpackChunkName: "login" */ '@/views/login'), + } +] + +//系统路由 +const routes_404 = { + path: "/:pathMatch(.*)*", + name: "404", + hidden: true, + component: () => import(/* webpackChunkName: "404" */ '@/views/other/404'), +} + +const router = createRouter({ + history: createWebHashHistory(), + routes: routes +}) + +//判断是否已加载过API路由 +var isGetApiRouter = false; + +router.beforeEach(async (to, from, next) => { + NProgress.start() + + let userInfo = tool.data.get("user"); + + if(to.path === "/login"){ + next(); + return false; + } + + if(!userInfo){ + next({ + path: '/login' + }); + return false; + } + + //加载API路由 + if(!isGetApiRouter){ + var apiRouter = filterAsyncRouter(userInfo.menuList); + apiRouter.forEach(item => { + router.addRoute("layout", item) + }) + router.addRoute(routes_404) + if (to.matched.length == 0) { + router.push(to.path); + } + isGetApiRouter = true; + } + next(); +}); + +router.afterEach(() => { + NProgress.done() +}); + +router.onError((error) => { + NProgress.done(); + ElNotification.error({ + title: '路由错误', + message: error + }); +}); + + +//转换 +function filterAsyncRouter(routerMap) { + const accessedRouters = [] + routerMap.filter(itemRouter => { + accessedRouters.push({ + path: itemRouter.path, + name: itemRouter.name, + meta: itemRouter.meta, + children: filterAsyncRouter(itemRouter.children || []), + component: loadComponent(itemRouter.component) + }) + }) + return accessedRouters +} +function loadComponent(component){ + if(component){ + return () => import(/* webpackChunkName: "[request]" */ `@/views/${component}`) + }else{ + return () => import(`@/views/other/empty`) + } + +} + + +export default router diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 00000000..c5b3ede3 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,8 @@ +import { createStore } from 'vuex'; +import tagsView from './modules/tagsView'; + +export default createStore({ + modules: { + tagsView + } +}); diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js new file mode 100644 index 00000000..3dd02ad8 --- /dev/null +++ b/src/store/modules/tagsView.js @@ -0,0 +1,24 @@ +export default { + state: { + visitedViews: [], + cachedViews: [] + }, + mutations: { + ADD_VISITED_VIEWS: (state, view) => { + if (state.visitedViews.some(v => v.path === view.path)) return + state.visitedViews.push(Object.assign({}, view, { + title: view.meta.title || 'no-name' + })) + if (!view.meta.noCache) { + state.cachedViews.push(view.name) + } + }, + }, + actions: { + addVisitedViews({ + commit + }, view) { + commit('ADD_VISITED_VIEWS', view) + }, + } +} diff --git a/src/style/style.less b/src/style/style.less new file mode 100644 index 00000000..c2c46acd --- /dev/null +++ b/src/style/style.less @@ -0,0 +1,47 @@ +#app, body, html {width: 100%;height: 100%;background-color: #f8f8f8;font-size: 12px;} +* {margin: 0;padding: 0;box-sizing: border-box;outline: none;} + +/* 全局滚动条样式 */ +.scrollable {-webkit-overflow-scrolling: touch;} +::-webkit-scrollbar {width: 5px;height: 5px;} +::-webkit-scrollbar-thumb {background-color: rgba(50, 50, 50, 0.3);} +::-webkit-scrollbar-thumb:hover {background-color: rgba(50, 50, 50, 0.6);} +::-webkit-scrollbar-track {background-color: rgba(50, 50, 50, 0.1);} +::-webkit-scrollbar-track:hover {background-color: rgba(50, 50, 50, 0.2);} + +.aminui-side-split {position: absolute;top:0px;left:0px;bottom:0px;width:65px;background: #333;z-index: 90;} +.adminui-side-split-scroll {position: absolute;top:0px;left:0px;bottom:0px;right:0px;overflow: auto;overflow-x:hidden;} +.aminui-side-split li {cursor: pointer;width: 65px;height: 65px;color: #fff;text-align: center;display: flex;flex-direction: column;align-items: center;justify-content: center;} +.aminui-side-split li i {font-size: 16px;} +.aminui-side-split li p {margin-top:5px;} +.aminui-side-split li:hover {background: #444;} +.aminui-side-split li.active {background: #09f;} + +.adminui-side-split-scroll::-webkit-scrollbar-thumb {background-color: rgba(255, 255, 255, 0.4);border-radius:5px;} +.adminui-side-split-scroll::-webkit-scrollbar-thumb:hover {background-color: rgba(255, 255, 255, 0.5);} +.adminui-side-split-scroll::-webkit-scrollbar-track {background-color: rgba(255, 255, 255, 0);} +.adminui-side-split-scroll::-webkit-scrollbar-track:hover {background-color: rgba(255, 255, 255, 0);} + + +.aminui-side {position: absolute;z-index: 80;top:0px;left:65px;bottom:0px;width:210px;background: #fff;box-shadow: 2px 0 8px 0 rgba(29,35,41,.05);border-right: 1px solid #e6e6e6;} +.adminui-side-scroll {position: absolute;top:0px;left:0px;bottom:0px;right:0px;overflow: auto;overflow-x:hidden;} + + +.aminui-body {position: absolute;z-index: 70;top:0px;left:275px;bottom:0px;right:0px;} + +.adminui-header {height: 50px;border-bottom: 1px solid #ebeef5;background: #fff;box-shadow: 0 1px 4px rgba(0,21,41,.08);} +.adminui-tags {height:35px;background: #fff;border-bottom: 1px solid #e6e6e6;box-shadow: 0 1px 4px rgba(0,21,41,.08);} +.adminui-tags li {cursor: pointer;display: inline-block;float: left;height:34px;line-height: 34px;} +.adminui-tags li a {display: inline-block;padding:0 10px;width:100%;height:100%;color: #999;text-decoration:none;} +.adminui-tags li i {margin-left:10px;padding:3px;} +.adminui-tags li i:hover {background: #ff5722;color: #fff;} +.adminui-tags li:hover {background: #ecf5ff;} +.adminui-tags li.active {background: #09f;} +.adminui-tags li.active a {color: #fff;} + + +.adminui-main {position: absolute;top:85px;left:0px;right:0px;bottom:0px;overflow: auto;} + + +.el-menu {border: none!important;} +.el-menu-item.is-active {background: #ecf5ff;} \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 00000000..cea0bce4 --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,78 @@ +import axios from 'axios'; +import { ElNotification } from 'element-plus'; + +axios.defaults.baseURL = '' + +axios.defaults.timeout = 10000 + +// HTTP request 拦截器 +axios.interceptors.request.use( + (config) => { + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +// HTTP response 拦截器 +axios.interceptors.response.use( + (response) => { + return response; + }, + (error) => { + if(error.response.status == 404){ + ElNotification.error({ + title: '请求错误', + message: "Status:404,正在请求不存在的服务器记录!" + }); + } + if(error.response.status == 500){ + ElNotification.error({ + title: '请求错误', + message: "Status:500,服务器发生错误!" + }); + } + + return Promise.reject(error.response); + } +); + +var http = { + + /** get 请求 + * @param {接口地址} url + * @param {请求参数} params + */ + get: function(url, params) { + return new Promise((resolve, reject) => { + axios.get(url, { + params: params + }) + .then((response) => { + resolve(response.data); + }) + .catch((error) => { + reject(error); + }); + }) + }, + + /** post 请求 + * @param {接口地址} url + * @param {请求参数} params + */ + post: function(url, params) { + return new Promise((resolve, reject) => { + axios.post(url, params) + .then((response) => { + resolve(response.data); + }) + .catch((error) => { + reject(error); + }); + }) + } +} + +export default http; diff --git a/src/utils/tool.js b/src/utils/tool.js new file mode 100644 index 00000000..5725b87f --- /dev/null +++ b/src/utils/tool.js @@ -0,0 +1,20 @@ +const tool = { + /* localStorage */ + data : { + set : function(table, settings){ + var _set = JSON.stringify(settings) + return localStorage.setItem(table, _set); + }, + get : function(table){ + return JSON.parse(localStorage.getItem(table)); + }, + remove : function(table){ + return localStorage.removeItem(table); + }, + clear : function(){ + return localStorage.clear(); + } + } +} + +export default tool diff --git a/src/views/home.vue b/src/views/home.vue new file mode 100644 index 00000000..3c8cb80b --- /dev/null +++ b/src/views/home.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/src/views/list.vue b/src/views/list.vue new file mode 100644 index 00000000..c9426247 --- /dev/null +++ b/src/views/list.vue @@ -0,0 +1,10 @@ + + + + + diff --git a/src/views/login.vue b/src/views/login.vue new file mode 100644 index 00000000..fd62fe1e --- /dev/null +++ b/src/views/login.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/views/other/404.vue b/src/views/other/404.vue new file mode 100644 index 00000000..601c9249 --- /dev/null +++ b/src/views/other/404.vue @@ -0,0 +1,9 @@ + + + + + diff --git a/src/views/other/empty.vue b/src/views/other/empty.vue new file mode 100644 index 00000000..9c72bc89 --- /dev/null +++ b/src/views/other/empty.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/views/show.vue b/src/views/show.vue new file mode 100644 index 00000000..72fd5fd7 --- /dev/null +++ b/src/views/show.vue @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file