first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<template lang="pug">
#app
router-view
</template>
<style lang="less">
@import "~@common/_.less";
</style>

View File

@@ -0,0 +1,4 @@
@import "normalize.less";
@import "base.less";
@import "colors.less";
@import "mixins.less";

View File

@@ -0,0 +1,37 @@
@import "./normalize.less";
body,ul,li,p,h1,h2,h3,h4,h5,h6 {
margin: 0;
padding: 0;
list-style: none;
}
a {
text-decoration: none;
}
input {
outline: none;
}
.main_layout {
padding-top: 60px;
}
.el-header {
padding: 0 !important;
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 999;
}
.main_left {
margin-left: 200px;
}
.el-aside {
height: calc(100vh - 60px) !important;
position: fixed;
left: 0;
top: 60px;
.el-menu {
height: 100% !important;
}
}

View File

@@ -0,0 +1,16 @@
.ellipsis() {
white-space:nowrap;
text-overflow:ellipsis;
overflow:hidden;
word-wrap: break-word;
}
.no-scrollbar() {
&::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
-webkit-appearance: none;
opacity: 0 !important;
}
}

View File

@@ -0,0 +1,419 @@
/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */
/**
* 1. Change the default font family in all browsers (opinionated).
* 2. Prevent adjustments of font size after orientation changes in IE and iOS.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove the margin in all browsers (opinionated).
*/
body {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
* 2. Add the correct display in IE.
*/
article,
aside,
details, /* 1 */
figcaption,
figure,
footer,
header,
main, /* 2 */
menu,
nav,
section,
summary { /* 1 */
display: block;
}
/**
* Add the correct display in IE 9-.
*/
audio,
canvas,
progress,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Add the correct display in IE 10-.
* 1. Add the correct display in IE.
*/
template, /* 1 */
[hidden] {
display: none;
}
/* Links
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* Remove the outline on focused links when they are also active or hovered
* in all browsers (opinionated).
*/
a:active,
a:hover {
outline-width: 0;
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the bottom border in Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Grouping content
========================================================================== */
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/* Forms
========================================================================== */
/**
* 1. Change font properties to `inherit` in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
select,
textarea {
font: inherit; /* 1 */
margin: 0; /* 2 */
}
/**
* Restore the font weight unset by the previous rule.
*/
optgroup {
font-weight: bold;
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Change the border, margin, and padding in all browsers (opinionated).
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on OS X.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Correct the text style of placeholders in Chrome, Edge, and Safari.
*/
::-webkit-input-placeholder {
color: inherit;
opacity: 0.54;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}

View File

@@ -0,0 +1,7 @@
@import "../common/_.less";
.home {
h2 {
color: @themeColor;
font-size: 37.5px;
}
}

View File

@@ -0,0 +1,59 @@
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br>
check out the
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-router" target="_blank" rel="noopener">router</a></li>
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-vuex" target="_blank" rel="noopener">vuex</a></li>
</ul>
<h3>Essential Links</h3>
<ul>
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
</ul>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

View File

@@ -0,0 +1,25 @@
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import Utils from "../utils";
import service from '../service/_'
export default {
DevUrl: 'http://47.114.153.249:3000/api/json',
ProdUrl: 'http://115.159.153.142:9020',
check: function () {
if (process.env.NODE_ENV == "development") {
return this.DevUrl
} else {
return this.ProdUrl
}
},
ApiUrl: {
index: '/index'
},
VuePlug: [ ElementUI ],
CustomPlug: [
{ n: '$api', v: service },
{ n: '$utils', v: Utils },
]
}

View File

@@ -0,0 +1,27 @@
import axios from 'axios'
import config from '@config'
class Http {
async get (url, params = {}, header = {}) {
this.SetBaseUrl()
return await axios.get(url, {
params: params,
headers: header
})
}
async post (url, params = {}, header = {}) {
this.SetBaseUrl()
return await axios.post(url, params, {
headers: header
})
}
SetBaseUrl () {
if (axios.defaults.baseURL == null) {
axios.defaults.baseURL = config.check();
}
}
}
export default new Http()

View File

@@ -0,0 +1,18 @@
// import 'amfe-flexible'
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import config from './config';
// 配置vue插件
config.VuePlug.forEach((v)=> Vue.use(v));
config.CustomPlug.forEach((v) => Vue.prototype[v.n] = v.v);
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')

View File

@@ -0,0 +1,74 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
import Utils from "../utils";
Vue.use(VueRouter)
// const originalPush = VueRouter.prototype.push
// VueRouter.prototype.push = function push (location) {
// return originalPush.call(this, location).catch(err => err)
// }
const routes = [
{
path: '/',
name: 'layout',
component: () => import(/* webpackChunkName: "Layout" */ '@view/Layout.vue'),
children: [
{
path: 'home',
component: () => import(/* webpackChunkName: "home" */ '@view/Home/Home.vue'),
meta: {
isLogin: true
}
}
]
},
{
path: '/login',
name: 'login',
component: () => import(/* webpackChunkName: "Login" */ '@view/User/Login.vue'),
meta: {
isLogin: false
}
},
{
path: '/reg',
name: 'reg',
component: () => import(/* webpackChunkName: "Reg" */ '@view/User/Reg.vue'),
meta: {
isLogin: false
}
},
{
path: '*',
redirect: '/login'
}
];
const router = new VueRouter({
routes
})
// 解决刷新时候重新生成路由
if (localStorage.getItem("qx") !== null) {
router.addRoutes(Utils.CreatedRouter())
}
router.beforeEach((to, from, next) => {
if (to.meta.isLogin) {
if (localStorage.getItem("qx") !== null) {
next()
} else {
next({
path: '/login'
})
}
} else {
next();
}
});
export default router

View File

@@ -0,0 +1,19 @@
import http from '@http'
import config from '@config'
class HomeService {
async index (params) {
console.log(params);
console.log(config.ApiUrl.index);
return await http.get(
config.ApiUrl.index,
params,
{
'token': '11111'
}
)
}
}
export default new HomeService()

View File

@@ -0,0 +1,5 @@
import HomeService from './HomeService';
export default {
home: HomeService
}

View File

@@ -0,0 +1,15 @@
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
},
mutations: {
},
actions: {
},
modules: {
}
})

View File

@@ -0,0 +1,39 @@
class Utils {
/**
* 只返回生成好的路由配置文件
*/
CreatedRouter() {
let role = JSON.parse(localStorage.getItem("qx")),
RouterArr = [];
RouterArr.push({
path: '/',
name: 'layout',
component: () => import('../views/Layout.vue'),
children: []
});
role.forEach(v => {
v.children.forEach(k => {
RouterArr[0].children.push({
path: v.path + k.path,
name: `${this.GetRouterName(v.path)}_${this.GetRouterName(k.path)}`,
component: () => import(`../views${v.path}${k.path}.vue`),
meta: {
isLogin: true
}
})
})
});
return RouterArr;
}
GetRouterName(str) {
return str.split("/")[1]
}
}
export default new Utils();

View File

@@ -0,0 +1,31 @@
<template>
<div class="home">
<p v-for="i in 100">dqded</p>
</div>
</template>
<script>
import HelloWorld from '@/components/HelloWorld.vue'
export default {
name: 'Home',
created() {
// this.GetIndexData();
},
methods: {
async GetIndexData () {
var a = await this.$api.home.index({
id: 1
})
console.log(a.data.result.newest)
this.newest = a.data.result.newest
}
},
components: {
HelloWorld
}
}
</script>
<style scoped lang="less">
@import "~@views/Home.less";
</style>

View File

@@ -0,0 +1,79 @@
<template>
<el-container>
<el-header>
<el-menu
:default-active="activeIndex2"
class="el-menu-demo"
mode="horizontal"
background-color="#545c64"
text-color="#fff"
active-text-color="#ffd04b">
<el-menu-item index="1">处理中心</el-menu-item>
<el-submenu index="2">
<template slot="title">我的工作台</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
<el-menu-item index="2-3">选项3</el-menu-item>
<el-submenu index="2-4">
<template slot="title">选项4</template>
<el-menu-item index="2-4-1">选项1</el-menu-item>
<el-menu-item index="2-4-2">选项2</el-menu-item>
<el-menu-item index="2-4-3">选项3</el-menu-item>
</el-submenu>
</el-submenu>
<el-menu-item index="3" disabled>消息中心</el-menu-item>
<el-menu-item index="4"
><a href="https://www.ele.me" target="_blank"
>订单管理</a
></el-menu-item
>
</el-menu>
</el-header>
<el-container class="main_layout">
<el-aside width="200px">
<el-menu :router="true" :unique-opened="true" class="el-menu-vertical-demo" :default-active="$route.path">
<el-submenu v-for="(v,i) in role" :index="v.path" :key="i">
<template slot="title">
<i class="el-icon-location"></i>
<span>{{ v.name }}</span>
</template>
<el-menu-item-group>
<el-menu-item v-for="(item,index) in v.children" :index="v.path+item.path" :key="index">
{{ item.name }}
</el-menu-item>
</el-menu-item-group>
</el-submenu>
</el-menu>
</el-aside>
<el-container class="main_left">
<el-main>
<router-view></router-view>
</el-main>
<el-footer>Footer</el-footer>
</el-container>
</el-container>
</el-container>
</template>
<script>
export default {
data() {
// 未登录的拦截 还未做
return {
activeIndex2: "1",
role: JSON.parse(localStorage.getItem("qx")),
RouterArr: []
};
},
created() {
// 第一次进入管理后台,生成路由
this.$router.addRoutes(this.$utils.CreatedRouter())
},
methods: {
}
};
</script>
<style lang="less">
</style>

View File

@@ -0,0 +1,64 @@
<template>
<div class="login">
<h1>登录</h1>
<el-button type="primary" @click="Login">主要按钮</el-button>
</div>
</template>
<script>
export default {
data() {
return {
role: [
{
id: 1,
name: "部门管理",
icon: "icon-wedd",
path: "/department",
children: [
{
name: "部门列表",
component: 'list',
icon: "icon-wedd",
path: "/list",
},
{
name: "部门统计",
icon: "icon-wedd",
component: 'tongji',
path: "/tongji",
},
],
},
{
id: 1,
name: "产品管理",
icon: "icon-wedd",
path: "/product",
children: [
{
name: "产品列表",
icon: "icon-wedd",
component: 'list',
path: "/list",
},
{
name: "产品统计",
icon: "icon-wedd",
component: 'tongji',
path: "/tongji",
},
],
},
],
};
},
methods: {
Login() {
localStorage.setItem("qx", JSON.stringify(this.role));
this.$router.replace("/home");
}
}
};
</script>

View File

@@ -0,0 +1,5 @@
<template>
<div class="reg">
<h1>注册</h1>
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div class="reg">
<h1>部门管理列表</h1>
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div class="reg">
<h1>部门管理统计</h1>
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div class="reg">
<h1>产品管理列表</h1>
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div class="reg">
<h1>产品管理统计</h1>
</div>
</template>