后台登录界面和首页

请添加图片描述
router 管理组件 在index.vue
api 管理 接口,获取后暴露出来 $http
store vuex 统一管理数据状态 user 和 menu $store.state.user.info
app.vue 为主业渲染
login.vue 为注册页渲染

目录标题

  • logoin
    • webpack 配置
  • logo.vue with element
    • logo.js import element-ui
  • 登录交互
    • 交互逻辑
    • 判断用户登录状态
  • container 布局容器
  • navigation data load
    • vuex管理
    • 导航icon
  • 账号权限

logoin

webpack 配置

var path = require('path')
var webpack = require('webpack')module.exports = {entry:{'main': './src/main.js','login': './src/login.js'},output: {path: path.resolve(__dirname, './dist'),publicPath: '/dist/',filename: '[name].js'},

进来打包的
和打包出去的, to dir
/dist
npm run build

logo.vue with element

logo.js import element-ui

import Vue from 'vue'
import resource from 'vue-resource'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import login from './login.vue'Vue.use(resource)
Vue.use(ElementUI);new Vue({el: '#app',render: h => h(login)
})

字体格式的配置
weppack ttf

{test: /\.(png|jpg|gif|svg|ttf|woff)$/,loader: 'file-loader',options: {name: '[name].[ext]?[hash]'}}
<template><div id=""><div style="width: 500px;margin: 0 auto;padding-top:200px"><el-form ref="form" :model="login" label-width="80px"><el-form-item label="账号"><el-input v-model="login.user"></el-input></el-form-item><el-form-item label="密码"><el-input v-model="login.pass"></el-input></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">登录</el-button></el-form-item></el-form></div></div>
</template><script>import {http,login} from './api/api.js'export default {data() {return {login: {user: '',pass: ''}}},methods: {//登录事件onSubmit() {//最简单的一个验证if(this.login.user ==''){this.$message.error('请输入账号');}else if(this.login.pass ==''){this.$message.error('请输入密码');}else{//登录的ajaxthis.$http.post(http+login,{username:this.login.user,password:this.login.pass},{emulateJSON:true}).then((data)=>{console.log(data)if(data.data.msg == '用户名或密码错误'){this.$message.error('用户名或密码错误');}else if(data.data.msg == '成功'){localStorage.token = data.data.data.tokenlocation.href = './'}},(err)=>{this.$message.error('登录失败');})}}}}
</script><style>*{margin: 0;padding: 0;}html,body{width: 100%;height: 100%;}body{background: url(./assets/1.jpg);background-size: 100% auto;}
</style>

登录交互

element

alert 提示使用

交互逻辑

输入为空
输入错误
输入校验正确
token 正确
跳转到首页开始

methods: {//登录事件onSubmit() {//最简单的一个验证if(this.login.user ==''){this.$message.error('请输入账号');}else if(this.login.pass ==''){this.$message.error('请输入密码');}else{//登录的ajaxthis.$http.post(http+login,{username:this.login.user,password:this.login.pass},{emulateJSON:true}).then((data)=>{console.log(data)if(data.data.msg == '用户名或密码错误'){this.$message.error('用户名或密码错误');}else if(data.data.msg == '成功'){localStorage.token = data.data.data.tokenlocation.href = './'}},(err)=>{this.$message.error('登录失败');})}}}}

登录的插件 ajax

vue-resource 记录 package.json 记录使用的插件

api.js 统一管理 接口

判断用户登录状态

main,js 全局

import Vue from 'vue'
import resource from 'vue-resource'
import echarts from 'echarts'
import store from './store/index.js'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import router from './router/router.js'
import App from './App.vue'//把echarts 添加到vue实例中
Vue.prototype.$echarts = echartsVue.use(resource)
Vue.use(ElementUI);//判断有没有登录//拦截器
Vue.http.interceptors.push((request, next) => {//设置token请求头if(localStorage.token) {//设置token请求头Vue.http.headers.common['Authorization'] = localStorage.token} else {location.href = './login.html'}next((response)=>{if(response.status == 401){location.href = './login.html'}return response})
})new Vue({el: '#app',store,router,render: h => h(App)
})

根据后端接口请求到的token

container 布局容器

<template><div id="app"><el-container><el-aside style="width: auto;"><!--导航--><el-menu :default-active="$route.path" class="el-menu-vertical-demo" text-color="#fff" :collapse="isCollapse" v-if="$store.state.menu.menu && $store.state.user.info" router><el-menu-item index="/"><i class="el-icon-location"></i><span slot="title">首页</span></el-menu-item><el-submenu v-for="i in $store.state.menu.menu" :key="i.uid" :index="i.path"><template slot="title"><i :class="icontype[i.id]"></i><span slot="title">{{i.name}}</span><!--{{i.name}}{{i.path}}--></template><el-menu-item v-for="a in i.children" :key="a.uid" :index="a.path" :disabled="$store.state.user.info.permissions.indexOf(a.path) == -1"><i :class="icontype[a.id]"></i><span slot="title">{{a.name}}</span></el-menu-item></el-submenu></el-menu><!--导航结束--></el-aside><el-main v-if="$store.state.user.info&&$store.state.user.menulist"><div style="height: 50px;line-height: 50px;background:#ccc;"><el-row type="flex" class="row-bg" justify="center"><el-col :span="12"><div><el-radio-group v-model="isCollapse" style="margin-bottom: 20px;padding-top:5px;padding-left:10px"><el-radio-button :label="false">展开</el-radio-button><el-radio-button :label="true">收起</el-radio-button></el-radio-group></div></el-col><el-col :span="12"><div style="text-align: right;padding-right: 40px;">当前账号:<router-link to="/info" style="color: deepskyblue;">{{$store.state.user.info.profile.name}}	</router-link></div></el-col></el-row></div><div style="padding: 20px;background:rgba(0,0,0,0.3);min-height:600px;position: relative;"><router-view></router-view></div></el-main></el-container></div>
</template>

用于布局的容器组件,方便快速搭建页面的基本结构:

:外层容器。当子元素中包含 或 时,全部子元素会垂直上下排列,否则会水平左右排列。

:顶栏容器。

:侧边栏容器。

:主要区域容器。

:底栏容器。

navigation data load

app.vue

<script>import { http, listForRouter, info,menulist} from './api/api.js'export default {name: 'app',data() {return {isCollapse: false,icontype: {1: 'el-icon-setting',2: 'el-icon-tickets',4: 'el-icon-user',12: 'el-icon-s-custom',21: 'el-icon-s-check',17: 'el-icon-menu',22: 'el-icon-collection',41: 'el-icon-s-order',46: 'el-icon-document-add',42: 'el-icon-document',45: 'el-icon-folder-opened'}}},mounted() {this.getmenu()this.getinfo()this.getlist()},methods: {//获取操作功能信息getlist(){this.$http.get(http + menulist).then((data) => {var data = data.data.datavar json = {}//循环父级for(var i=0;i<data.length;i++){var child = data[i].children//循环子级for(var a=0;a<child.length;a++){this.$set(json,child[a].url,child[a].children)}}//存储到vuex 中this.$store.commit('setmenulist',json)}, (err) => {this.$message.error(err.data.message);})},//获取导航getmenu() {this.$http.get(http + listForRouter).then((data) => {//修改导航状态树this.$store.commit('setmenu', data.data.data)}, (err) => {this.$message.error(err.data.message);})},//获取当前账号信息getinfo() {this.$http.get(http + info).then((data) => {//修改账号状态树this.$store.commit('setinfo', data.data.data)}, (err) => {this.$message.error(err.data.message);})}}}
</script>

vuex管理

main.js store

import Vue from 'vue'
import resource from 'vue-resource'
import echarts from 'echarts'
import store from './store/index.js'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import router from './router/router.js'
import App from './App.vue'//把echarts 添加到vue实例中
Vue.prototype.$echarts = echartsVue.use(resource)
Vue.use(ElementUI);//判断有没有登录//拦截器
Vue.http.interceptors.push((request, next) => {//设置token请求头if(localStorage.token) {//设置token请求头Vue.http.headers.common['Authorization'] = localStorage.token} else {location.href = './login.html'}next((response)=>{if(response.status == 401){location.href = './login.html'}return response})
})new Vue({el: '#app',store,router,render: h => h(App)
})

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation

export default {state:{menu:''},mutations:{//修改导航setmenu(state,data){state.menu = data}}
}

menu.js

//获取导航getmenu() {this.$http.get(http + listForRouter).then((data) => {//修改导航状态树this.$store.commit('setmenu', data.data.data)}, (err) => {this.$message.error(err.data.message);})},

导航icon

先console 每个栏目名的 id 给对应id 绑定 icon

<el-submenu v-for="i in $store.state.menu.menu" :key="i.uid" :index="i.path"><template slot="title"><i :class="icontype[i.id]"></i><span slot="title">{{i.name}}</span><!--{{i.name}}{{i.path}}--></template><el-menu-item v-for="a in i.children" :key="a.uid" :index="a.path" :disabled="$store.state.user.info.permissions.indexOf(a.path) == -1"><i :class="icontype[a.id]"></i><span slot="title">{{a.name}}</span></el-menu-item></el-submenu>

账号权限

//获取当前账号信息getinfo() {this.$http.get(http + info).then((data) => {//修改账号状态树this.$store.commit('setinfo', data.data.data)}, (err) => {this.$message.error(err.data.message);})}

api,js 获取后端接口

创建 user.js

export default {state:{info:'',menulist:''},mutations:{//修改当前账号信息setinfo(state,data){state.info = data},//设置功能权限setmenulist(state,data){state.menulist = data}}
}

disabled

<template><div id="app"><el-container><el-aside style="width: auto;"><!--导航--><el-menu :default-active="$route.path" class="el-menu-vertical-demo" text-color="#fff" :collapse="isCollapse" v-if="$store.state.menu.menu && $store.state.user.info" router><el-menu-item index="/"><i class="el-icon-location"></i><span slot="title">首页</span></el-menu-item><el-submenu v-for="i in $store.state.menu.menu" :key="i.uid" :index="i.path"><template slot="title"><i :class="icontype[i.id]"></i><span slot="title">{{i.name}}</span><!--{{i.name}}{{i.path}}--></template><el-menu-item v-for="a in i.children" :key="a.uid" :index="a.path" :disabled="$store.state.user.info.permissions.indexOf(a.path) == -1"><i :class="icontype[a.id]"></i><span slot="title">{{a.name}}</span></el-menu-item></el-submenu></el-menu><!--导航结束--></el-aside><el-main v-if="$store.state.user.info&&$store.state.user.menulist"><div style="height: 50px;line-height: 50px;background:#ccc;"><el-row type="flex" class="row-bg" justify="center"><el-col :span="12"><div><el-radio-group v-model="isCollapse" style="margin-bottom: 20px;padding-top:5px;padding-left:10px"><el-radio-button :label="false">展开</el-radio-button><el-radio-button :label="true">收起</el-radio-button></el-radio-group></div></el-col><el-col :span="12"><div style="text-align: right;padding-right: 40px;">当前账号:<router-link to="/info" style="color: deepskyblue;">{{$store.state.user.info.profile.name}}	</router-link></div></el-col></el-row></div><div style="padding: 20px;background:rgba(0,0,0,0.3);min-height:600px;position: relative;"><router-view></router-view></div></el-main></el-container></div>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12032.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器运行打开一直转圈,快速解决登录PC端一直转圈数据读取中,不能进入正常聊天界面...

快速解决登录PC端一直转圈数据读取中,不能进入正常聊天界面 大家都在查&#xff1a;正在连接服务器,请等待.正在连接服务器&#xff0c;请等待.快速解决登录PC端一直转圈数据读取中,怎么连不上怎么一直连不上 怎么一直连接不上 怎么连接不上不能进入正常聊天界面,数据读取中&am…

信创JAVAWEB的相关记录

前提&#xff0c;由于最近信创 不少客户要求服务器上的也需要国产化&#xff0c; 服务器上用的是 统信UOS 具体版本为&#xff1a;Linux TAXC1507 4.19.0-loongson-3-desktop #4114 SMP Wed Sep 1 15:23:48 CST 2021 mips64 GNU/Linux 这个版本的JDK需要上龙芯的官网上下载专…

助力金融信创生态建设,麒麟信安亮相2021中国国际金融展信创专题展

10月13日至14日&#xff0c;以“聚力金融信创&#xff0c;筑牢数字新基建”为主题的2021中国国际金融展信创专题展&#xff08;长三角&#xff09;在上海举行。来自长三角地区多个金融监管机构、金融机构、科技企业的领导和代表观展参会&#xff0c;共同推动金融信创工作的高质…

信创电脑运行Windows程序

一、使用环境&#xff1a; 龙芯3A5000 UOS 专业版 v20 1050 二、wine介绍 1、在linux上安装wine&#xff0c;可以实现运行Windows exe程序&#xff0c;但并不是所有程序都可以运行. 2、wine最新版本为wine7&#xff0c;本次测试环境使用wine5 3、wine官网链接&#xff1a;W…

信创环境经典版SuerMap iManager ARM版部署流程

一、环境 操作系统&#xff1a;银河麒麟kylin V10CPU&#xff1a;鲲鹏920SuperMap iManager 10.2.1硬件&#xff1a;4H32G机器磁盘分区格式建议如下&#xff08;请严格按照如下&#xff0c;减少后期有用/目录资源不够&#xff0c;导致Docker调度失败&#xff0c;还需要重新更换…

全方位解析《中国电信行业信创建设偏好报告》

电信作为信创28重点行业之一&#xff0c;电信、移动、联通三大电信运营商早在2020年开始&#xff0c;就陆续进行业务招标、集采国产服务器、建立信创实验室&#xff0c;抓紧高速、全面地进行信创布局。 随着数字经济时代的到来&#xff0c;各大运营商对于信息安全的关注度与日…

灵雀云ACP成功通过金融信创生态实验室适配验证

近日&#xff0c;灵雀云全栈云原生开放平台ACP&#xff08;以下简称灵雀云ACP&#xff09;成功通过了金融信创生态实验室适配验证&#xff0c;在金融科技领域的技术实力和专业水平得到了权威认可。 金融信创生态实验室&#xff08;以下简称“实验室”&#xff09;是由中国人民银…

“麒”聚信创,共赢未来——信创解决方案分享会(首场)成功举办

11月18日上午&#xff0c;“麒”聚信创&#xff0c;共赢未来——信创解决方案分享会&#xff08;首场&#xff09;于线上举行。本次会议由麒麟信安主办&#xff0c;百信信息技术有限公司&#xff08;简称&#xff1a;百信&#xff09;、杭州迪普科技股份有限公司&#xff08;简…

科技云报道:信创基础设施迎来“升级潮”,可持续性架构成关键技术

科技云报道原创。 如果说单一领域的技术突破是河流&#xff0c;信创毫无疑问是汪洋大海。 随着“数字中国”战略的明确&#xff0c;数字化转型进程加速&#xff0c;信创产业成为国家战略布局的重点领域之一&#xff0c;是缩短科技发展周期以及国内外科技差距的一剂良方。 2…

信创办公–基于WPS的EXCEL最佳实践系列 (快速整理繁琐数据)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;快速整理繁琐数据&#xff09; 目录 应用背景操作步骤1、把下列家庭住址按省、城区、详细地址&#xff0c;分开2、用分页工具分离出所有员工身份证上的生日3、分离出下列手机型号中的颜色 应用背景 在我们的日常工作环境中有…

信创入围认证详解

信创是一个统称概念&#xff0c;实际是把现有与信息技术相关的行业结合在一起&#xff0c;命名为“信息技术应用创新产业”&#xff0c;简称“信创”。一般来说&#xff0c;信创包括基础硬件、基础软件、应用软件、信息安全四大板块。其中&#xff0c;基础硬件主要包括&#xf…

九州云入选2021中国信创500强

3月19日&#xff0c;《互联网周刊》发布了“2021中国信创500强”榜单&#xff0c;该榜单基于iB、iP、iF等衡量企业信创实力的关键指标进行综合评价。九州云凭借卓越的技术研发实力、产品服务能力以及积极创新与布局&#xff0c;成功登榜&#xff01; 信创产业&#xff0c;据《中…

信创环境适配

信创环境适配 此次适配的服务器为麒麟v10&#xff0c;数据库使用人大金仓&#xff0c;中间件为tonweb7 文章目录 信创环境适配前言一、环境准备二、组件适配KingbaseNacosActiviti7XxlJob 三、Tongweb7替换TomcatJava代码调整Vue项目打包部署Web容器下部署多个服务 总结 前言 …

期货行业首批信创试点单位转型实践|信创专题

实践亮点 期货行业首批试点单位&#xff08;金融行业第二期&#xff09;全部选择 SmartX 作为单一超融合供应商进行基础架构信创转型&#xff0c;并通过验收。可灵活选择海光或鲲鹏服务器部署&#xff0c;涵盖办公系统、一般业务系统、灾备&#xff08;CTP 主席异地灾备&#…

信创大数据平台容灾项目

一、项目方案 齐鲁银行自2017年开始建设大数据平台&#xff0c;为全行提供的各类数据服务与全行业务深度融合&#xff0c;大数据服务已成为推动业务发展不可或缺的环节。大数据平台为全行各类业务提供标准化风险数据服务&#xff0c;支撑全行从零售到消贷、从公司到普惠、从线上…

信创国产化解决方案

第一部分 什么是信创 一、什么是信创&#xff1f; 先从概念上来看&#xff0c;信创全称信息技术应用创新产业&#xff0c;和国产化很像&#xff0c;但信创的目的是围绕国产CPU&#xff0c;形成完整的IT生态。究其原因&#xff0c;是国内在IT方面&#xff0c;特别是底层技术都没…

信创操作系统

一、银河麒麟v10操作系统 银河麒麟v10是华为自主研发的服务器处理器。它采用了ARMv8架构技术&#xff0c;是一种64位的处理器架构&#xff0c;能够提供更高的计算能力和性能。银河麒麟v10采用了自主研发的处理器核心——昇腾&#xff08;Ascend&#xff09;核心&#xff0c;能够…

信创云底座主流技术路线与厂商评估

策略&#xff1a;IT 基础架构如何信创转型 1.虚拟化与存储等核心组件转型是重点 经过国家政策机构、行业侧和产业侧近年来的持续努力&#xff0c;信创转型在金融等关键行业已经取得初步成效&#xff0c;在机具、办公等场景的部分应用已可全信创技术栈单轨运行。而下一步&…

信创-大数据平台CPU架构支持

一、CDH和HDP、CDP CDP数据中心类似于CDH和HDP,直接安装在硬件服务器上,目前支持市面上主流的X86服务器,包括国内海光服务器&#xff0c; CDH不支持ARM 以上两种大数据平台都仅支持x86架构&#xff0c;早在几年期RedHat联手cloudera公司发表声明将推出64位ARM版&#xff0c;据…

信创产业现状、分析与预测

1、概述 信创&#xff0c;即信息技术应用创新产业&#xff0c;是数据安全、网络安全的基础&#xff0c;也是新基建的重要组成部分。长期以来&#xff0c;信息技术的关键技术和基础应用不掌握在国人自己手里&#xff0c;&#xff08;为符合审核要求&#xff0c;隐去XXX事件若干…