入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

.net core + vue开发单页应用(二)

创建时间:2017-05-26 投稿人: 浏览次数:2691

上一篇中已将完成了基础结构的搭建,这一篇将开始正式开发。页面直接使用了一位小伙伴的源码,可以在https://github.com/taylorchen709/vue-admin下载

在入口函数中添加对element-ui,vue-router,vuex,vue-source等组件的引用

  1. import Vue from "vue"
  2. import App from "./App"
  3. import ElementUI from "element-ui"
  4. import "element-ui/lib/theme-default/index.css"
  5. import VueRouter from "vue-router"
  6. import store from "./vuex/store"
  7. import Vuex from "vuex"
  8. import VueSource from "vue-resource"
  9. import routes from "./routes"
  10. import "font-awesome/css/font-awesome.min.css"
  11. Vue.use(ElementUI)
  12. Vue.use(VueRouter)
  13. Vue.use(Vuex)
  14. Vue.use(VueSource)
  15. //创建路由实例
  16. const router = new VueRouter({
  17. routes
  18. })
  19. router.beforeEach((to, from, next) => {
  20. //这里进行了简单的登录验证
  21. //访问login时直接清除user
  22. if (to.path == "/login") {
  23. sessionStorage.removeItem("user");
  24. }
  25. let user = JSON.parse(sessionStorage.getItem("user"));
  26. if (!user && to.path != "/login") {
  27. next({ path: "/login" })
  28. } else {
  29. next()
  30. }
  31. })
  32. new Vue({
  33. router,
  34. store,
  35. render: h => h(App)
  36. }).$mount("#app")
  1. <template>
  2. <div id="app">
  3. <transition name="fade"
  4. mode="out-in">
  5. <router-view></router-view>
  6. </transition>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. name: "app",
  12. components: {
  13. }
  14. }
  15. </script>

login.vue

  1. <template>
  2. <el-form :model="ruleForm2" :rules="rules2" ref="ruleForm2" label-position="left" label-width="0px" class="demo-ruleForm login-container">
  3. <h3 class="title">系统登录</h3>
  4. <el-form-item prop="account">
  5. <el-input type="text" v-model="ruleForm2.account" auto-complete="off" placeholder="账号"></el-input>
  6. </el-form-item>
  7. <el-form-item prop="checkPass">
  8. <el-input type="password" v-model="ruleForm2.checkPass" auto-complete="off" placeholder="密码"></el-input>
  9. </el-form-item>
  10. <el-checkbox v-model="checked" checked class="remember">记住密码</el-checkbox>
  11. <el-form-item style="width:100%;">
  12. <el-button type="primary" style="width:100%;" @click.native.prevent="handleSubmit2" :loading="logining">登录</el-button>
  13. </el-form-item>
  14. </el-form>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. logining: false,
  21. ruleForm2: {
  22. account: "admin",
  23. checkPass: "123456"
  24. },
  25. rules2: {
  26. account: [
  27. { required: true, message: "请输入账号", trigger: "blur" },
  28. //{ validator: validaePass }
  29. ],
  30. checkPass: [
  31. { required: true, message: "请输入密码", trigger: "blur" },
  32. //{ validator: validaePass2 }
  33. ]
  34. },
  35. checked: true
  36. };
  37. },
  38. methods: {
  39. handleReset2() {
  40. this.$refs.ruleForm2.resetFields();
  41. },
  42. handleSubmit2(ev) {
  43. var _this = this;
  44. this.$refs.ruleForm2.validate((valid) => {
  45. if (valid) {
  46. this.logining = true;
  47. //NProgress.start();
  48. var loginParams = { username: this.ruleForm2.account, password: this.ruleForm2.checkPass };
  49. if (loginParams.username != "admin") {
  50. this.$message({
  51. message: "用户不存在",
  52. type: "error"
  53. });
  54. this.logining = false;
  55. return false;
  56. }
  57. if (loginParams.password != "123456") {
  58. this.$message({
  59. message: "密码不正确",
  60. type: "error"
  61. });
  62. this.logining = false;
  63. return;
  64. }
  65. let user = {
  66. id: 1,
  67. username: "admin",
  68. password: "123456",
  69. avatar: "resources/img/user.png",
  70. name: "管理员"
  71. }
  72. sessionStorage.setItem("user", JSON.stringify(user));
  73. this.$router.push({ path: "/" });
  74. } else {
  75. return false;
  76. }
  77. });
  78. }
  79. }
  80. }
  81. </script>
  82. <style scoped>
  83. .login-container {
  84. /*box-shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02);*/
  85. -webkit-border-radius: 5px;
  86. border-radius: 5px;
  87. -moz-border-radius: 5px;
  88. background-clip: padding-box;
  89. margin: 180px auto;
  90. width: 350px;
  91. padding: 35px 35px 15px 35px;
  92. background: #fff;
  93. border: 1px solid #eaeaea;
  94. box-shadow: 0 0 25px #cac6c6;
  95. }
  96. .title {
  97. margin: 0px auto 40px auto;
  98. text-align: center;
  99. color: #505458;
  100. }
  101. .remember {
  102. margin: 0px 0px 35px 0px;
  103. }
  104. </style>

home.vue

  1. <template>
  2. <el-row class="container">
  3. <el-col :span="24" class="header">
  4. <el-col :span="10" :class="collapsed?"logo-collapse-width logo-collapsed":"logo-width logo"">
  5. {{collapsed?"":sysName}}
  6. <!--<img :src="logo" v-show="collapsed" />-->
  7. </el-col>
  8. <el-col :span="10">
  9. <div class="tools" @click.prevent="collapse">
  10. <i class="fa fa-align-justify"></i>
  11. </div>
  12. </el-col>
  13. <el-col :span="4" class="userinfo">
  14. <el-dropdown trigger="hover">
  15. <span class="el-dropdown-link userinfo-inner"><img :src="this.sysUserAvatar" /> {{sysUserName}}</span>
  16. <el-dropdown-menu slot="dropdown">
  17. <el-dropdown-item>我的消息</el-dropdown-item>
  18. <el-dropdown-item>设置</el-dropdown-item>
  19. <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。