Browse Source

Merge remote-tracking branch 'origin/麦塔' into 麦塔

tanxue 5 years ago
parent
commit
89a0ecc126

+ 6 - 2
.env.development

@@ -4,8 +4,12 @@ ENV = 'development'
 # base api
 PUBLIC_PATH = '/'
 ASSETS_DIR = 'assets'
-VUE_APP_BASE_API = 'http://192.168.0.179:8099'
-VUE_APP_BASE_API_TARGET = 'http://192.168.0.179:8099'
+VUE_APP_BASE_API = 'http://192.168.0.128:8080'
+VUE_APP_BASE_API_TARGET = 'http://192.168.0.128:8080'
+
+# VUE_APP_BASE_API = 'http://192.168.0.179:8099'
+# VUE_APP_BASE_API_TARGET = 'http://192.168.0.179:8099'
+
 VUE_APP_SECRET_KEY = 'f6e3c80fce574b20b001a9d410e79d70'
 VUE_APP_DIST_NAME='mdist'
 VUE_APP_INDEX_TINY_ICON=""

+ 0 - 24
src/api/login.js

@@ -17,27 +17,3 @@ export function getOrgList(data = {}) {
                        data,
                    });
 }
-
-/*export function getRegisterList(data = {}) {
-    return request({
-        url:    `/user/register`,
-        method: 'post',
-        data,
-    });
-}*/
-
-/*export function getRegisterOrg(data = {}) {
-    return request({
-        url:    `/admin/org/all`,
-        method: 'post',
-        data,
-    });
-}*/
-
-/*export function getRegisterPosition(data = {}) {
-    return request({
-        url:    `/admin/position/all`,
-        method: 'post',
-        data,
-    });
-}*/

+ 1 - 110
src/api/noToken.js

@@ -1,37 +1,6 @@
 import request from '@/utils/request';
 
-export function getUserExistTel(data = {}) {
-    return request({
-                       url: `/common/exist/tel`,
-                       method: 'post',
-                       data
-                   });
-}
-
-export function getAppConfig(data = {}) {
-    return request({
-        url:    `/common/app/config`,
-        method: 'post',
-        data,
-    });
-}
-export function getUserExistUserName(data = {}) {
-    return request({
-                       url: `/common/exist/userName`,
-                       method: 'post',
-                       data
-                   });
-}
-
-export function getUserAuthClient(data = {}) {
-    return request({
-                       url:    `/common/client/login`,
-                       method: 'post',
-                       data,
-                   });
-}
-
-export function getUserAuth(data = {}) {
+export function getAdminLogin(data = {}) {
     return request({
                        url:    `/common/admin/login`,
                        method: 'post',
@@ -39,82 +8,4 @@ export function getUserAuth(data = {}) {
                    });
 }
 
-export function getTenantConfig(data = {}) {
-    return request({
-                       url:    `/common/admin/config`,
-                       method: 'post',
-                       data,
-                   });
-}
-
-export function getTenantConfigClient(data = {}) {
-    return request({
-                        url:    `/common/client/config`,
-                        method: 'post',
-                        data,
-    });
-}
-
-export function getTenantConfigAfterLogin(data = {}) {
-    return request({
-        url:    `/tenant/config/update/admin`,
-        method: 'post',
-        data,
-    });
-}
-
-export function getTenantConfigClientAfterLogin(data = {}) {
-    return request({
-        url:    `/tenant/config/update/client`,
-        method: 'post',
-        data,
-    });
-}
-
-export function getRegisterList(data = {}) {
-    return request({
-                       url:    `/common/register`,
-                       method: 'post',
-                       data,
-                   });
-}
-export function getRegisterOrg(data = {}) {
-    return request({
-                       url:    `/common/org/all`,
-                       method: 'post',
-                       data,
-                   });
-}
-export function getRegisterPosition(data = {}) {
-    return request({
-                       url:    `/common/position/all`,
-                       method: 'post',
-                       data,
-                   });
-}
-
-export  function getAdminUserPasswordReset(data = {}) {
-    return request({
-                       url: `/common/password/reset`,
-                       data,
-                       method: 'post',
-                   });
-}
-
-export  function getUserRegister(data = {}) {
-    return request({
-        url: `/common/tenant/register`,
-        data,
-        method: 'post',
-    });
-}
-
-export function getTelLogin(data = {}) {
-    return request({
-        url: `/common/tenant/login`,
-        method: 'post',
-        data
-    });
-}
-
 

+ 19 - 0
src/router.js

@@ -48,9 +48,28 @@ const router = new Router({
                                   {
                                       name:      'admin',
                                       path:      '/admin',
+                                      meta: {
+                                          icon: "el-icon-platform-eleme",
+                                          title: "页面管理"
+                                      },
+                                      isAdminMenu: true,
                                       component: () => {
                                           return import(/* webpackChunkName: "Home" */ './views/management/Home/index.vue');
                                       },
+                                      children:  [
+                                          {
+                                              path: '/hangyezixun',
+                                              name: 'hangyezixun',
+                                              meta: {
+                                                  icon: "",
+                                                  title: "行业资讯"
+                                              },
+                                              isAdminMenu: true,
+                                              component: () => {
+                                                  return import(/* webpackChunkName: "Home" */ './views/management/HangYeZiXun/index.vue');
+                                              },
+                                          },
+                                      ],
                                   },
                               ],
                           });

+ 31 - 0
src/utils/admin/tools.js

@@ -0,0 +1,31 @@
+const getCache = function(key) {
+    if (!key) {
+        console.error(`未找到需要获取的键`);
+        return;
+    }
+    const data = window.localStorage.getItem(key)
+    if (data) {
+        return JSON.parse(data);
+    }
+    return data;
+}
+
+const saveCache = function(key, val) {
+    if ( !key || !val ) {
+        console.error(`缺少指定的键或值`)
+        return;
+    }
+    window.localStorage.setItem(key, JSON.stringify(val));
+}
+
+const removeCache = function(key) {
+    if (!key) {
+        console.error(`未找到需要删除的键`);
+        return;
+    }
+    window.localStorage.removeItem(key)
+}
+
+export {
+    getCache, saveCache, removeCache
+}

+ 58 - 0
src/views/management/HangYeZiXun/components/Pagination.vue

@@ -0,0 +1,58 @@
+<template>
+    <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="page"
+            :page-sizes="pageSizes"
+            :page-size="size"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total">
+    </el-pagination>
+</template>
+
+<script>
+    import { paginationServiceData } from './paginationData';
+    export default {
+        name: 'Pagination',
+        props: {
+            pageSizes: {
+                type: Array,
+                default: () => [100, 200, 300, 400]
+            }
+        },
+        computed: {
+            page: {
+                get () {
+                    return paginationServiceData.page;
+                },
+                set(val) {
+                    paginationServiceData.size = val;
+                }
+            },
+            size: {
+                get () {
+                    return paginationServiceData.size;
+                },
+                set(val) {
+                    paginationServiceData.size = val;
+                }
+            },
+            total: {
+                get() {
+                    return paginationServiceData.total;
+                },
+                set(val) {
+                    this.paginationServiceData.total = val;
+                }
+            }
+        },
+        methods: {
+            handleSizeChange() {},
+            handleCurrentChange() {},
+        }
+    };
+</script>
+
+<style scoped>
+
+</style>

+ 37 - 0
src/views/management/HangYeZiXun/components/Table.vue

@@ -0,0 +1,37 @@
+<template>
+    <el-table
+            :data="tableData"
+            border
+            style="width: 100%">
+        <el-table-column
+                prop="date"
+                label="日期"
+                width="180">
+        </el-table-column>
+        <el-table-column
+                prop="name"
+                label="姓名"
+                width="180">
+        </el-table-column>
+        <el-table-column
+                prop="address"
+                label="地址">
+        </el-table-column>
+    </el-table>
+</template>
+
+<script>
+    export default {
+        name: 'Table',
+
+        data() {
+            return {
+                tableData: []
+            }
+        }
+    };
+</script>
+
+<style scoped>
+
+</style>

+ 13 - 0
src/views/management/HangYeZiXun/components/paginationData.js

@@ -0,0 +1,13 @@
+import Vue from 'vue';
+
+const pagination = {
+    page: 1,
+    size: 10,
+    total: 0
+}
+
+const paginationServiceData = Vue.observable(pagination);
+
+export {
+    paginationServiceData
+}

+ 13 - 0
src/views/management/HangYeZiXun/components/table.js

@@ -0,0 +1,13 @@
+import Vue from 'vue';
+
+const tableData = {
+    page: 1,
+    size: 10,
+    total: 0
+}
+
+const tableServiceData = Vue.observable(tableData);
+
+export {
+    tableServiceData
+}

+ 22 - 0
src/views/management/HangYeZiXun/index.vue

@@ -0,0 +1,22 @@
+<template>
+    <div class="admin-hangyezixun">
+        <myPagination />
+    </div>
+</template>
+
+<script>
+    import myPagination from './components/Pagination.vue';
+
+    export default {
+        name:       'index',
+        components: {
+            myPagination,
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    .admin-hangyezixun {
+
+    }
+</style>

+ 115 - 0
src/views/management/Home/components/Asider.vue

@@ -0,0 +1,115 @@
+<template>
+    <div class="admin-home__asider">
+        <div class="top"></div>
+        <el-scrollbar  class="my-menu_wrap">
+            <el-menu
+                    :default-active="defaultActive"
+                    active-text-color="#409EFF"
+                    :router="true"
+                    class="my-menu"
+                    :collapse="isCollapse"
+            >
+                <my-submenu
+                        v-for="item in menuData"
+                        :data="item"
+                        :key="item.path"
+                ></my-submenu>
+            </el-menu>
+        </el-scrollbar>
+
+        <div class="bottom"></div>
+    </div>
+</template>
+
+<script>
+    import mySubmenu from './menu-submenu';
+    export default {
+        name:       'Asider',
+        props:      {
+            isCollapse: {
+                type:    Boolean,
+                default: false,
+            },
+        },
+        components: {
+            mySubmenu,
+        },
+        data() {
+            return {
+                menuData:      [],
+                defaultActive: '',
+            };
+        },
+        methods:    {
+            initMenu() {
+                const {
+                    options: { routes },
+                } = this.$router;
+
+                const arr = this.menusToRoutes(routes);
+                this.menuData = arr;
+                this.defaultActive = this.$route.path;
+            },
+            menusToRoutes(routes) {
+                const arr = [];
+                routes.forEach(item => {
+                    if (item.children && item.children.length) {
+                        item.children = this.menusToRoutes(item.children);
+                        arr.push(item);
+                    } else if (item.isAdminMenu) {
+                        arr.push(item);
+                    }
+                });
+                return arr;
+            },
+        },
+        created() {
+            this.initMenu();
+        },
+    };
+</script>
+
+<style lang="scss" scoped>
+    $menu_background_color: #D3DCE6;
+    .admin-home {
+        &__asider {
+            .top {
+                height: 60px;
+            }
+
+            .bottom {
+                height: 60px;
+            }
+
+            .my-menu_wrap {
+                height: calc(100vh - 120px);
+                ::v-deep .el-scrollbar__wrap {
+                    overflow-x: hidden;
+                }
+            }
+
+            .my-menu:not(.el-menu--collapse) {
+                width: 200px;
+                min-height: 400px;
+                background: $menu_background_color;
+            }
+
+            .my-menu.el-menu--collapse ::v-deep div
+            > .el-submenu
+            > .el-submenu__title
+            span {
+                height: 0;
+                width: 0;
+                overflow: hidden;
+                visibility: hidden;
+                display: inline-block;
+            }
+            .my-menu.el-menu--collapse ::v-deep div
+            > .el-submenu
+            > .el-submenu__title
+            .el-submenu__icon-arrow {
+                display: none;
+            }
+        }
+    }
+</style>

+ 15 - 0
src/views/management/Home/components/Footer.vue

@@ -0,0 +1,15 @@
+<template>
+    <div>
+        Copyright © 2020 llisoft.com All rights reserved 大连栋科软件工程有限公司 版权所有 辽ICP备09022904号-19
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'Footer',
+    };
+</script>
+
+<style scoped>
+
+</style>

+ 44 - 0
src/views/management/Home/components/Header.vue

@@ -0,0 +1,44 @@
+<template>
+    <div class="admin-home__header">
+        <div class="admin-home__btns-icon" @click="btnClick">
+            <i v-if="asideStatus" class="el-icon-s-fold"></i>
+            <i v-else class="el-icon-s-unfold"></i>
+        </div>
+        <div>
+
+        </div>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: 'Header',
+        props: {
+            asideStatus: {
+                type: Boolean,
+                default: true
+            }
+        },
+        methods: {
+            btnClick() {
+                this.$emit('asider-status')
+            }
+        }
+    };
+</script>
+
+<style lang="scss" scoped>
+.admin-home {
+    &__header {
+        display: flex;
+        justify-content: flex-start;
+    }
+
+    &__btns-icon {
+        font-size: 28px;
+        > i {
+          cursor: pointer;
+        }
+    }
+}
+</style>

+ 39 - 0
src/views/management/Home/components/menu-submenu.vue

@@ -0,0 +1,39 @@
+<template>
+    <div>
+        <el-submenu
+                v-if="data.children && data.children.length"
+                :index="data.path"
+        >
+            <template slot="title" v-if="data.meta && data.meta.title">
+                <i :class="data.meta.icon" v-if="data.meta && data.meta.icon"></i>
+                <span slot="title">{{ data.meta.title }}</span>
+            </template>
+            <menu-submenu
+                    :data="item"
+                    v-for="item in data.children"
+                    :key="item.id"
+            ></menu-submenu>
+        </el-submenu>
+        <el-menu-item v-else :index="data.path" :route="data">
+            <i :class="data.meta.icon" v-if="data.meta && data.meta.icon"></i>
+            <span slot="title" v-if="data.meta && data.meta.title">{{
+        data.meta.title
+      }}</span>
+        </el-menu-item>
+    </div>
+</template>
+
+<script>
+    export default {
+        name: "menu-submenu",
+        props: {
+            data: {
+                type: Object,
+                default: () => {}
+            }
+        },
+        components: {}
+    };
+</script>
+
+<style></style>

+ 83 - 3
src/views/management/Home/index.vue

@@ -1,13 +1,93 @@
 <template>
-    
+    <el-container class="admin-home">
+        <el-aside width="auto">
+            <Asider :isCollapse="asideStatus"></Asider>
+        </el-aside>
+        <el-container>
+            <el-header>
+                <Header
+                        :asideStatus="asideStatus"
+                        @asider-status="asiderStatusChange"
+                ></Header>
+            </el-header>
+            <el-main>
+                <el-scrollbar style="height: 100%">
+                    <router-view></router-view>
+                </el-scrollbar>
+            </el-main>
+            <el-footer>
+                <Footer></Footer>
+            </el-footer>
+        </el-container>
+    </el-container>
 </template>
 
 <script>
+    import Asider       from './components/Asider';
+    import Footer       from './components/Footer';
+    import Header       from './components/Header';
+    import { getCache } from '@/utils/admin/tools';
+
+    const USER_AUTH = `userAuth`;
+
     export default {
-        name: 'index.vue',
+        name:       'Home',
+        components: {
+            Footer,
+            Asider,
+            Header,
+        },
+        data() {
+            return {
+                asideStatus: false,
+            };
+        },
+        beforeRouteEnter(to, from, next) {
+            const data = getCache(USER_AUTH);
+            // 未查询到用户权限 回归登录
+            if (!data) {
+                next({ name: 'Login' });
+                return;
+            }
+            next();
+        },
+        methods:    {
+            asiderStatusChange() {
+                this.asideStatus = !this.asideStatus;
+            },
+        },
     };
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
+    .admin-home {
+        flex: 1;
+        height: 100vh;
+
+        .el-header, .el-footer {
+            background-color: #B3C0D1;
+            color: #333;
+            text-align: center;
+            line-height: 60px;
+            height: 60px;
+            overflow: hidden;
+        }
+
+        .el-aside {
+            background-color: #D3DCE6;
+            color: #333;
+            text-align: center;
+
+        }
+
+        .el-main {
+            background-color: #E9EEF3;
+            color: #333;
+            padding: 30px 0 30px 30px;
 
+            ::v-deep .el-scrollbar__wrap {
+                overflow-x: hidden;
+            }
+        }
+    }
 </style>

+ 53 - 26
src/views/management/Login/components/Login.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="admin-login__loginForm">
         <el-form :model="loginForm" status-icon :rules="loginRules" ref="LoginForm" label-width="100px">
-            <el-form-item label="用户名:" prop="username">
+            <el-form-item label="账号:" prop="username">
                 <el-input type="text" v-model="loginForm.username"></el-input>
             </el-form-item>
             <el-form-item label="密码:" prop="password">
@@ -17,8 +17,11 @@
 </template>
 
 <script>
+    import { getAdminLogin } from "@/api/noToken.js";
+    import {getCache, saveCache} from "@/utils/admin/tools";
+    const USER_AUTH = `userAuth`;
     export default {
-        name: 'Login',
+        name:    'Login',
         data() {
             return {
                 loginForm:  {
@@ -33,51 +36,75 @@
                         { required: true, message: '请输入密码', trigger: 'blur' },
                     ],
                 },
-            }
+            };
         },
         methods: {
             handleLogin(formName) {
                 this.$refs[formName].validate((valid) => {
                     if (valid) {
-                        console.log('submit')
-                        this.doLogin()
+                        this.doLogin();
                     } else {
-                        console.log('err')
-                        return false
+                        return false;
                     }
-                })
+                });
             },
-            doLogin() {
+            /**
+             * 登录
+             * @returns {Promise<void>}
+             */
+            async doLogin() {
+                // 参数获取
                 const opt = this.getOption();
-                console.log('Options: ', opt)
+
+                try {
+                    const res = await getAdminLogin(opt)
+                    if (res.code === 0) {
+                        // 缓存 登录状态
+                        this.saveCache(USER_AUTH, res.data)
+                        // 登录
+                        this.goHomePage();
+                    }
+                } catch (e) {
+                    console.error(e);
+                }
+
             },
             getOption() {
                 const opt = {
-                    username: '',
-                    password: ''
-                }
-
+                    userName: this.loginForm.username,
+                    password: this.loginForm.password,
+                };
                 return opt;
-            }
+            },
+            saveCache(key, val) {
+                return saveCache(key, val);
+            },
+            goHomePage() {
+                this.$router.push({ name: 'hangyezixun' });
+            },
+        },
+        created() {
+           // const data = getCache(USER_AUTH);
+           // console.log('缓存 =》', data);
         }
     };
 </script>
 
 <style lang="scss" scoped>
-$text_color: #ccc;
-.admin-login {
-    &__loginForm {
-        ::v-deep .el-form-item__label {
-            color: $text_color;
+    $text_color: #CCC;
+    .admin-login {
+        &__loginForm {
+            ::v-deep .el-form-item__label {
+                color: $text_color;
+            }
         }
-    }
 
-    &-btns {
-        .login-btn {
-            &__login {
-                width: 100%;
+        &-btns {
+            .login-btn {
+                &__login {
+                    width: 100%;
+                }
             }
         }
     }
-}
 </style>