vercerl-express-test 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "vue2-app",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "serve": "vue-cli-service serve",
7
+ "build": "vue-cli-service build",
8
+ "lint": "vue-cli-service lint"
9
+ },
10
+ "dependencies": {
11
+ "axios": "^1.13.2",
12
+ "core-js": "^3.6.5",
13
+ "echarts": "^5.5.1",
14
+ "element-ui": "^2.15.14",
15
+ "sortablejs": "^1.15.6",
16
+ "vue": "^2.6.11",
17
+ "vue-router": "^3.6.5"
18
+ },
19
+ "devDependencies": {
20
+ "@vue/cli-plugin-babel": "~4.5.0",
21
+ "@vue/cli-plugin-eslint": "~4.5.0",
22
+ "@vue/cli-service": "~4.5.0",
23
+ "babel-eslint": "^10.1.0",
24
+ "eslint": "^6.7.2",
25
+ "eslint-plugin-vue": "^6.2.2",
26
+ "vue-template-compiler": "^2.6.11"
27
+ },
28
+ "eslintConfig": {
29
+ "root": true,
30
+ "env": {
31
+ "node": true
32
+ },
33
+ "extends": [
34
+ "plugin:vue/essential",
35
+ "eslint:recommended"
36
+ ],
37
+ "parserOptions": {
38
+ "parser": "babel-eslint"
39
+ },
40
+ "rules": {}
41
+ },
42
+ "browserslist": [
43
+ "> 1%",
44
+ "last 2 versions",
45
+ "not dead"
46
+ ]
47
+ }
File without changes
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
+ <link rel="icon" href="<%= BASE_URL %>favicon.ico">
8
+ <title><%= htmlWebpackPlugin.options.title %></title>
9
+ </head>
10
+ <body>
11
+ <noscript>
12
+ <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
13
+ </noscript>
14
+ <div id="app"></div>
15
+ <!-- built files will be auto injected -->
16
+ </body>
17
+ </html>
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <div id="app">
3
+ <div class="layout">
4
+ <div class="layout-menu" :style="{ width: isMenuCollapsed ? collapsedMenuWidth : expandedMenuWidth }">
5
+ <div class="menu-header">
6
+ <el-button
7
+ class="menu-toggle"
8
+ type="text"
9
+ @click="isMenuCollapsed = !isMenuCollapsed"
10
+ >
11
+ <i :class="isMenuCollapsed ? 'el-icon-s-unfold' : 'el-icon-s-fold'"></i>
12
+ </el-button>
13
+ </div>
14
+ <AppMenu :collapse="isMenuCollapsed" />
15
+ </div>
16
+ <div class="layout-content">
17
+ <router-view />
18
+ </div>
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script>
24
+ import AppMenu from './components/AppMenu.vue'
25
+
26
+ export default {
27
+ name: 'App',
28
+ data() {
29
+ return {
30
+ isMenuCollapsed: true,
31
+ collapsedMenuWidth: '64px',
32
+ expandedMenuWidth: '180px'
33
+ }
34
+ },
35
+ components: {
36
+ AppMenu
37
+ }
38
+ }
39
+ </script>
40
+
41
+ <style>
42
+ .layout {
43
+ display: flex;
44
+ min-height: 100vh;
45
+ }
46
+
47
+ .layout-menu {
48
+ border-right: 1px solid #ebeef5;
49
+ transition: width 0.15s ease;
50
+ }
51
+
52
+ .layout-content {
53
+ flex: 1;
54
+ min-width: 0;
55
+ }
56
+
57
+ .menu-header {
58
+ height: 48px;
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: flex-end;
62
+ padding: 0 8px;
63
+ border-bottom: 1px solid #ebeef5;
64
+ }
65
+
66
+ .menu-toggle {
67
+ padding: 8px;
68
+ }
69
+ </style>
@@ -0,0 +1,5 @@
1
+ import { post } from '../utils/request'
2
+
3
+ export function getTrend(year) {
4
+ return post('/mock/trend', { year })
5
+ }
File without changes
@@ -0,0 +1,86 @@
1
+ <template>
2
+ <el-menu
3
+ :class="['menu', { 'menu--collapsed': collapse }]"
4
+ :default-active="$route.path"
5
+ :collapse="collapse"
6
+ :collapse-transition="false"
7
+ router
8
+ >
9
+ <template v-for="item in menuRoutes">
10
+ <el-submenu
11
+ v-if="hasChildren(item)"
12
+ :key="item.path + '-submenu'"
13
+ :index="item.path"
14
+ >
15
+ <template slot="title">
16
+ <i :class="getIcon(item)"></i>
17
+ <span class="menu-title-text">{{ getTitle(item) }}</span>
18
+ </template>
19
+ <el-menu-item
20
+ v-for="child in getChildren(item)"
21
+ :key="child.path"
22
+ :index="child.path"
23
+ >
24
+ <i :class="getIcon(child)"></i>
25
+ <span class="menu-title-text">{{ getTitle(child) }}</span>
26
+ </el-menu-item>
27
+ </el-submenu>
28
+
29
+ <el-menu-item
30
+ v-else
31
+ :key="item.path + '-item'"
32
+ :index="item.path"
33
+ >
34
+ <i :class="getIcon(item)"></i>
35
+ <span class="menu-title-text">{{ getTitle(item) }}</span>
36
+ </el-menu-item>
37
+ </template>
38
+ </el-menu>
39
+ </template>
40
+
41
+ <script>
42
+ import { routes } from '../router/routes'
43
+
44
+ export default {
45
+ name: 'AppMenu',
46
+ props: {
47
+ collapse: {
48
+ type: Boolean,
49
+ default: false
50
+ }
51
+ },
52
+ computed: {
53
+ menuRoutes() {
54
+ return routes.filter(r => this.isMenuVisible(r))
55
+ }
56
+ },
57
+ methods: {
58
+ isMenuVisible(route) {
59
+ return route && route.meta && route.meta.showInMenu === true
60
+ },
61
+ getTitle(route) {
62
+ return (route && route.meta && route.meta.title) || route.name || route.path
63
+ },
64
+ getIcon(route) {
65
+ return (route && route.meta && route.meta.icon) || 'el-icon-menu'
66
+ },
67
+ getChildren(route) {
68
+ if (!route || !Array.isArray(route.children)) return []
69
+ return route.children.filter(r => this.isMenuVisible(r))
70
+ },
71
+ hasChildren(route) {
72
+ return this.getChildren(route).length > 0
73
+ }
74
+ }
75
+ }
76
+ </script>
77
+
78
+ <style>
79
+ .menu {
80
+ height: 100%;
81
+ }
82
+
83
+ .menu--collapsed .menu-title-text {
84
+ display: none;
85
+ }
86
+ </style>
@@ -0,0 +1,14 @@
1
+ import Vue from 'vue'
2
+ import App from './App.vue'
3
+
4
+ import ElementUI from 'element-ui'
5
+ import 'element-ui/lib/theme-chalk/index.css'
6
+ import router from './router'
7
+
8
+ Vue.config.productionTip = false
9
+ Vue.use(ElementUI)
10
+
11
+ new Vue({
12
+ router,
13
+ render: h => h(App)
14
+ }).$mount('#app')