yuantianjiao 6 years ago
parent
commit
2b9317f68a

+ 2
- 0
package.json View File

@@ -16,6 +16,8 @@
16 16
   "dependencies": {
17 17
     "axios": "^0.18.0",
18 18
     "element-ui": "^2.4.5",
19
+    "js-base64": "^2.4.8",
20
+    "js-md5": "^0.7.3",
19 21
     "vue": "^2.5.2",
20 22
     "vue-amap": "^0.5.8",
21 23
     "vue-cookie": "^1.1.4",

+ 4
- 1
src/main.js View File

@@ -12,7 +12,8 @@ import Ajax from './util/ajax'
12 12
 import api from './util/api'
13 13
 import store from './store'
14 14
 import Vuex from 'vuex'
15
-
15
+import md5 from 'js-md5'
16
+const Base64 = require('js-base64').Base64
16 17
 Vue.use(ElementUI)
17 18
 Vue.use(Cookies)
18 19
 Vue.use(VueAMap)
@@ -28,6 +29,8 @@ VueAMap.initAMapApiLoader({
28 29
 Vue.config.productionTip = false
29 30
 Vue.prototype.$api = api
30 31
 Vue.prototype.$ajax = Ajax
32
+Vue.prototype.md5 = md5
33
+Vue.prototype.Base64 = Base64
31 34
 /* eslint-disable no-new */
32 35
 new Vue({
33 36
   el: '#app',

+ 48
- 6
src/pages/login/index.vue View File

@@ -28,6 +28,7 @@ export default {
28 28
       account: '', // 账号
29 29
       password: '', // 密码
30 30
       remberAccount: true, // 记住账号密码
31
+      token: ''
31 32
     }
32 33
   },
33 34
   mounted () {
@@ -38,19 +39,51 @@ export default {
38 39
   methods: {
39 40
     // 登录
40 41
     toLogin () {
41
-      if (this.remberAccount) {
42
-        var aData = { account: this.account, password: this.password, remberAccount: true }
43
-        this.$cookie.set('accountInfo', JSON.stringify(aData))
44
-      } else {
45
-        this.$cookie.delete('accountInfo')
42
+      if (!this.account) {
43
+        this.$message({
44
+          message: '请输入用户名',
45
+          type: 'error'
46
+        })
47
+        return
48
+      } else if (!this.password) {
49
+        this.$message({
50
+          message: '请输入密码',
51
+          type: 'error'
52
+        })
53
+        return
46 54
       }
55
+      let userName = this.account
56
+      let passWord = this.md5(this.password)
57
+      let token = this.token
58
+      this.$ajax(this.$api.login.signin.url, {
59
+        method: this.$api.login.signin.method,
60
+        data: {
61
+          username: userName,
62
+          password: passWord,
63
+          token: token
64
+        }
65
+      })
66
+        .then(res => {
67
+          console.log(res)
68
+          this.saveToken(res.token)
69
+          this.$message({
70
+            message: '登陆成功',
71
+            type: 'success',
72
+            duration: 1000
73
+          })
74
+          setTimeout(() => {
75
+            this.$router.push({ name: 'system' })
76
+          }, 1000)
77
+        }).catch(msg => {
78
+
79
+        })
47 80
     },
48 81
 
49 82
     // 初始化登陆逻辑
50 83
     initLogin () {
51 84
       var aData = {}
52 85
       if (this.$cookie.get('accountInfo') === undefined || this.$cookie.get('accountInfo') === null) {
53
-        aData = { account: '', password: '', remberAccount: true }
86
+        aData = { account: '', password: '', remberAccount: true, token: '' }
54 87
         this.$cookie.set('accountInfo', JSON.stringify(aData))
55 88
       } else {
56 89
         aData = this.$cookie.get('accountInfo')
@@ -65,6 +98,15 @@ export default {
65 98
     triggerRember () {
66 99
       this.remberAccount = !this.remberAccount
67 100
     },
101
+
102
+    saveToken (token) {
103
+      if (this.remberAccount) {
104
+        var aData = { account: this.account, password: this.password, remberAccount: true, token: token }
105
+        this.$cookie.set('accountInfo', JSON.stringify(aData))
106
+      } else {
107
+        this.$cookie.delete('accountInfo')
108
+      }
109
+    }
68 110
   },
69 111
 }
70 112
 </script>

+ 9
- 4
src/pages/system/index.vue View File

@@ -31,9 +31,8 @@
31 31
 import breadCrumb from '@/components/breadCrumb/index'
32 32
 import siderBar from '@/components/siderBar/index'
33 33
 import routerData from '@/router/router'
34
-
35
-import { mapState, mapMutations } from 'vuex'
36
-
34
+import { mapState, mapMutations, createNamespacedHelpers } from 'vuex'
35
+const { mapActions: mapSystemActions } = createNamespacedHelpers('system')
37 36
 export default {
38 37
   name: '',
39 38
   data () {
@@ -138,6 +137,7 @@ export default {
138 137
   computed: {
139 138
     ...mapState({
140 139
       breadCrumb: x => x.app.breadcrumb,
140
+      system: x => x.system,
141 141
     })
142 142
   },
143 143
   components: {
@@ -147,10 +147,15 @@ export default {
147 147
   created () {
148 148
     this.getMenuData()
149 149
     this.updateBread({ routerData, Url: this.$route.name })
150
+    this.updateSystemInfo()
151
+    console.log(this.system)
150 152
   },
151 153
   methods: {
152 154
     ...mapMutations([
153
-      'updateBread',
155
+      'updateBread'
156
+    ]),
157
+    ...mapSystemActions([
158
+      'updateSystemInfo'
154 159
     ]),
155 160
     getMenuData () { // 获取用户角色权限内菜单
156 161
       let menuData = [{

+ 0
- 32
src/pages/test/test.vue View File

@@ -1,32 +0,0 @@
1
-<style lang="sass" scoped>
2
-
3
-</style>
4
-
5
-<template>
6
-  <div>123</div>
7
-</template>
8
-
9
-<script>
10
-export default {
11
-  data () {
12
-    return {
13
-
14
-    }
15
-  },
16
-  mounted () {
17
-    console.log(this)
18
-    this.$ajax(this.$api.test.signin.url, {
19
-      method: this.$api.test.signin.method,
20
-      data: {
21
-        userName: 1,
22
-        passWord: 2
23
-      }
24
-    })
25
-      .then(res => {
26
-        console.log(res)
27
-      }).catch(msg => {
28
-        return false
29
-      })
30
-  }
31
-}
32
-</script>

+ 1
- 7
src/router/router.js View File

@@ -1,6 +1,5 @@
1 1
 import login from '@/pages/login/index'
2 2
 import system from '@/pages/system/page'
3
-import test from '@/pages/test/test'
4 3
 
5 4
 const routerArr = [
6 5
   {
@@ -8,12 +7,7 @@ const routerArr = [
8 7
     name: 'login',
9 8
     component: login
10 9
   },
11
-  ...system.router,
12
-  {
13
-    path: '/test',
14
-    name: 'test',
15
-    component: test
16
-  }
10
+  ...system.router
17 11
 ]
18 12
 
19 13
 export default routerArr

+ 1
- 2
src/store/index.js View File

@@ -13,8 +13,7 @@ Vuex.Store.prototype.$api = api
13 13
 Vuex.Store.prototype.$ajax = Ajax
14 14
 export const modules = {
15 15
   app: () => require('./app').default,
16
-  case: () => require('./case').default,
17
-  user: () => require('./user').default,
16
+  system: () => require('./system').default
18 17
 }
19 18
 
20 19
 Object.keys(modules).forEach((modKey) => {

+ 34
- 0
src/store/system/index.js View File

@@ -0,0 +1,34 @@
1
+export default {
2
+  namespaced: true,
3
+  state: {
4
+    cases: [],
5
+    menus: [],
6
+    roles: [],
7
+    user: {}
8
+  },
9
+  mutations: {
10
+    init (state, data) { // 这里的state对应着上面这个state
11
+      state.cases = data.cases
12
+      state.menus = data.menus
13
+      state.roles = data.roles
14
+      state.user = data.user
15
+    }
16
+  },
17
+  actions: {
18
+    updateSystemInfo (context) { // 这里的context和我们使用的$store拥有相同的对象和方法
19
+      this.$ajax(this.$api.system.init.url, {
20
+        method: this.$api.system.init.method
21
+      })
22
+        .then(res => {
23
+          console.log(res)
24
+          if (res.code === 400) {
25
+            this.$router.push({name: 'login'})
26
+          } else {
27
+            context.commit('init', res) // 你还可以在这里触发其他的mutations方法
28
+          }
29
+        }).catch(msg => {
30
+
31
+        })
32
+    }
33
+  }
34
+}

+ 0
- 47
src/store/user/index.js View File

@@ -1,47 +0,0 @@
1
-export default {
2
-  namespaced: true,
3
-  state: {
4
-    userLabelList: [{
5
-      value: '0',
6
-      label: '系统用户'
7
-    }, {
8
-      value: '1',
9
-      label: '主管'
10
-    }, {
11
-      value: '2',
12
-      label: '销售'
13
-    }],
14
-    roleList: [{
15
-      value: '0',
16
-      name: '角色0'
17
-    }, {
18
-      value: '1',
19
-      name: '角色1'
20
-    }, {
21
-      value: '2',
22
-      name: '角色2'
23
-    }]
24
-  },
25
-  mutations: {
26
-    deleteRoleListItem (state, index) { // 这里的state对应着上面这个state
27
-      this.$ajax(this.$api.test.area.url, {
28
-        method: this.$api.test.area.method,
29
-        data: {
30
-          caseid: 1,
31
-          id: 2
32
-        }
33
-      })
34
-        .then((res) => {
35
-          console.log(res)
36
-        }).catch(msg => {
37
-          return false
38
-        })
39
-      state.roleList.splice(state.roleList.indexOf(index), 1) // 你还可以在这里执行其他的操作改变state
40
-    }
41
-  },
42
-  actions: {
43
-    upDateRoleList (context, index) { // 这里的context和我们使用的$store拥有相同的对象和方法
44
-      context.commit('deleteRoleListItem', index) // 你还可以在这里触发其他的mutations方法
45
-    }
46
-  }
47
-}

+ 15
- 3
src/util/ajax.js View File

@@ -6,7 +6,9 @@ const Axios = axios.create({
6 6
   timeout: 60000,
7 7
   responseType: 'json',
8 8
   withCredentials: true,
9
-  headers: {}
9
+  headers: {
10
+    'Content-Type': 'multipart/form-data'
11
+  }
10 12
 })
11 13
 
12 14
 Axios.interceptors.request.use((config) => {
@@ -24,16 +26,26 @@ Axios.interceptors.request.use((config) => {
24 26
         config.url = config.url.slice(0, config.url.indexOf(':')) + data
25 27
       }
26 28
     } else {
27
-      config.url += '?' + data
29
+      if (data) {
30
+        config.url += '?' + data
31
+      }
32
+    }
33
+  }
34
+  let fm = new FormData()
35
+  for (let k in config.data) {
36
+    if (Array.isArray(config.data[k])) {
37
+      fm.append(k, ...config.data[k].map(v => `${k}=${encodeURIComponent(v)}`))
38
+    } else {
39
+      fm.append(k, config.data[k])
28 40
     }
29 41
   }
42
+  config.data = fm
30 43
   return config
31 44
 }, (error) => {
32 45
   console.log(error)
33 46
 })
34 47
 
35 48
 Axios.interceptors.response.use((res) => {
36
-  console.log(res)
37 49
   if (res.data.code === 200) {
38 50
     return res.data.result
39 51
   } else {

+ 7
- 1
src/util/api.js View File

@@ -1,10 +1,16 @@
1 1
 const baseUrl = '/api'
2 2
 const $api = {
3
-  test: { // 登陆
3
+  login: { // 登陆
4 4
     signin: {
5 5
       method: 'post',
6 6
       url: `${baseUrl}/guest/signin`
7 7
     }
8
+  },
9
+  system: { // 初始化菜单
10
+    init: {
11
+      method: 'get',
12
+      url: `${baseUrl}/common/system/env`
13
+    }
8 14
   }
9 15
 }
10 16
 export default $api