Kaynağa Gözat

静态页面

1002884655 4 yıl önce
ebeveyn
işleme
ce8b029ac8

+ 5
- 5
config/index.js Dosyayı Görüntüle

11
     assetsSubDirectory: 'static',
11
     assetsSubDirectory: 'static',
12
     assetsPublicPath: '/',
12
     assetsPublicPath: '/',
13
     proxyTable: {
13
     proxyTable: {
14
-      // '/api': {
15
-      //   target: 'http://114.67.101.226:8080',
16
-      //   changeOrigin: false, // 如果接口跨域,需要进行这个参数配置
17
-      //   pathRewrite: { '^/api': '' }
18
-      // },
14
+      '/api': {
15
+        target: 'http://123.57.65.31:9004',
16
+        changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
17
+        pathRewrite: { '^/api': '/api' }
18
+      }
19
       // '/app-api': {
19
       // '/app-api': {
20
       //   target: 'http://ycapi.jcjyhn.com',
20
       //   target: 'http://ycapi.jcjyhn.com',
21
       //   changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
21
       //   changeOrigin: true, // 如果接口跨域,需要进行这个参数配置

+ 42
- 4
package-lock.json Dosyayı Görüntüle

219
       "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
219
       "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
220
       "dev": true
220
       "dev": true
221
     },
221
     },
222
+    "MD5": {
223
+      "version": "1.3.0",
224
+      "resolved": "https://registry.npm.taobao.org/MD5/download/MD5-1.3.0.tgz",
225
+      "integrity": "sha1-PMJm8Oiau2tDpQ85pFnfW/3gskA=",
226
+      "requires": {
227
+        "charenc": ">= 0.0.1",
228
+        "crypt": ">= 0.0.1"
229
+      }
230
+    },
222
     "abab": {
231
     "abab": {
223
       "version": "2.0.0",
232
       "version": "2.0.0",
224
       "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
233
       "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
2103
           "requires": {
2112
           "requires": {
2104
             "safer-buffer": ">= 2.1.2 < 3"
2113
             "safer-buffer": ">= 2.1.2 < 3"
2105
           }
2114
           }
2115
+        },
2116
+        "qs": {
2117
+          "version": "6.5.2",
2118
+          "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
2119
+          "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
2120
+          "dev": true
2106
         }
2121
         }
2107
       }
2122
       }
2108
     },
2123
     },
2510
       "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
2525
       "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
2511
       "dev": true
2526
       "dev": true
2512
     },
2527
     },
2528
+    "charenc": {
2529
+      "version": "0.0.2",
2530
+      "resolved": "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz",
2531
+      "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
2532
+    },
2513
     "check-types": {
2533
     "check-types": {
2514
       "version": "7.4.0",
2534
       "version": "7.4.0",
2515
       "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
2535
       "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
3272
         "which": "^1.2.9"
3292
         "which": "^1.2.9"
3273
       }
3293
       }
3274
     },
3294
     },
3295
+    "crypt": {
3296
+      "version": "0.0.2",
3297
+      "resolved": "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz",
3298
+      "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
3299
+    },
3275
     "crypto-browserify": {
3300
     "crypto-browserify": {
3276
       "version": "3.12.0",
3301
       "version": "3.12.0",
3277
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
3302
       "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
4898
         "vary": "~1.1.2"
4923
         "vary": "~1.1.2"
4899
       },
4924
       },
4900
       "dependencies": {
4925
       "dependencies": {
4926
+        "qs": {
4927
+          "version": "6.5.2",
4928
+          "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
4929
+          "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
4930
+          "dev": true
4931
+        },
4901
         "statuses": {
4932
         "statuses": {
4902
           "version": "1.4.0",
4933
           "version": "1.4.0",
4903
           "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
4934
           "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
11928
       "dev": true
11959
       "dev": true
11929
     },
11960
     },
11930
     "qs": {
11961
     "qs": {
11931
-      "version": "6.5.2",
11932
-      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
11933
-      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
11934
-      "dev": true
11962
+      "version": "6.9.4",
11963
+      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.9.4.tgz",
11964
+      "integrity": "sha1-kJCykNH5FyjTwi5UhDykSupatoc="
11935
     },
11965
     },
11936
     "query-string": {
11966
     "query-string": {
11937
       "version": "4.3.4",
11967
       "version": "4.3.4",
12610
         "tough-cookie": "~2.4.3",
12640
         "tough-cookie": "~2.4.3",
12611
         "tunnel-agent": "^0.6.0",
12641
         "tunnel-agent": "^0.6.0",
12612
         "uuid": "^3.3.2"
12642
         "uuid": "^3.3.2"
12643
+      },
12644
+      "dependencies": {
12645
+        "qs": {
12646
+          "version": "6.5.2",
12647
+          "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
12648
+          "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
12649
+          "dev": true
12650
+        }
12613
       }
12651
       }
12614
     },
12652
     },
12615
     "request-promise-core": {
12653
     "request-promise-core": {

+ 2
- 0
package.json Dosyayı Görüntüle

14
     "build": "node build/build.js"
14
     "build": "node build/build.js"
15
   },
15
   },
16
   "dependencies": {
16
   "dependencies": {
17
+    "MD5": "^1.3.0",
17
     "axios": "^0.18.0",
18
     "axios": "^0.18.0",
18
     "exports-loader": "^0.7.0",
19
     "exports-loader": "^0.7.0",
19
     "js-md5": "^0.7.3",
20
     "js-md5": "^0.7.3",
21
+    "qs": "^6.9.4",
20
     "script-loader": "^0.7.2",
22
     "script-loader": "^0.7.2",
21
     "vue": "^2.5.2",
23
     "vue": "^2.5.2",
22
     "vue-amap": "^0.5.10",
24
     "vue-amap": "^0.5.10",

+ 23
- 3
src/pages/index.vue Dosyayı Görüntüle

13
 
13
 
14
     <!-- 内容 -->
14
     <!-- 内容 -->
15
     <div class="MainBody flex-item">
15
     <div class="MainBody flex-item">
16
-      <router-view></router-view>
16
+      <div>
17
+        <router-view></router-view>
18
+      </div>
17
     </div>
19
     </div>
18
 
20
 
19
     <!-- tabbar -->
21
     <!-- tabbar -->
30
 </template>
32
 </template>
31
 
33
 
32
 <script>
34
 <script>
33
-import { mapState, mapMutations } from 'vuex'
35
+import md5 from 'js-md5'
36
+import { mapState, mapMutations, createNamespacedHelpers } from 'vuex'
37
+const { mapState: mapUserState, mapActions: mapUserActions } = createNamespacedHelpers('user')
34
 export default {
38
 export default {
35
   name: '',
39
   name: '',
36
   data () {
40
   data () {
37
     return {
41
     return {
42
+      Timer: null
38
     }
43
     }
39
   },
44
   },
40
   computed: {
45
   computed: {
49
       MainPaddingTop: x => x.MainPaddingTop, // 页面padding-top(不与系统顶部时间栏重叠)
54
       MainPaddingTop: x => x.MainPaddingTop, // 页面padding-top(不与系统顶部时间栏重叠)
50
       MainPaddingBottom: x => x.MainPaddingBottom, // 页面padding-bottom(不与系统底部返回栏重叠)
55
       MainPaddingBottom: x => x.MainPaddingBottom, // 页面padding-bottom(不与系统底部返回栏重叠)
51
       MainHeaderTitle: x => x.MainHeaderTitle // 页面title
56
       MainHeaderTitle: x => x.MainHeaderTitle // 页面title
57
+    }),
58
+    ...mapUserState({
59
+      UserInfo: x => x.UserInfo // 用户信息
52
     })
60
     })
53
   },
61
   },
54
   components: {
62
   components: {
58
   },
66
   },
59
   mounted () {
67
   mounted () {
60
     this.$nextTick(() => {
68
     this.$nextTick(() => {
69
+      this.Init()
61
     })
70
     })
62
   },
71
   },
63
   methods: {
72
   methods: {
64
     ...mapMutations([
73
     ...mapMutations([
65
       'EditMainData'
74
       'EditMainData'
66
-    ])
75
+    ]),
76
+    ...mapUserActions([
77
+      'SignIn'
78
+    ]),
79
+    Init () { // 初始化
80
+      this.SignIn({ data: { password: md5('123456'), userName: '17714208769' } }).then(() => { // 登录
81
+        if (this.UserInfo === null) {
82
+          this.$router.push({ name: 'SignIn' })
83
+        }
84
+      }).catch(() => {
85
+      })
86
+    }
67
   }
87
   }
68
 }
88
 }
69
 </script>
89
 </script>

+ 11
- 1
src/pages/index/ShouYe/index.vue Dosyayı Görüntüle

62
 
62
 
63
 <script>
63
 <script>
64
 import Banner from '../../../components/index/Banner'
64
 import Banner from '../../../components/index/Banner'
65
-import { mapMutations } from 'vuex'
65
+import { mapMutations, createNamespacedHelpers } from 'vuex'
66
+const { mapState: mapIndexState, mapActions: mapIndexActions } = createNamespacedHelpers('index')
66
 export default {
67
 export default {
67
   name: 'index',
68
   name: 'index',
68
   data () {
69
   data () {
84
     }
85
     }
85
   },
86
   },
86
   computed: {
87
   computed: {
88
+    ...mapIndexState({
89
+    })
87
   },
90
   },
88
   components: {
91
   components: {
89
     Banner
92
     Banner
99
       { name: 'MainTabBarActiveId', value: 1 },
102
       { name: 'MainTabBarActiveId', value: 1 },
100
       { name: 'ShowMainHeaderBack', value: false }
103
       { name: 'ShowMainHeaderBack', value: false }
101
     ])
104
     ])
105
+    this.Init()
102
   },
106
   },
103
   mounted () {
107
   mounted () {
104
     this.$nextTick(() => {
108
     this.$nextTick(() => {
108
     ...mapMutations([
112
     ...mapMutations([
109
       'EditMainData' // 配置页面框架数据
113
       'EditMainData' // 配置页面框架数据
110
     ]),
114
     ]),
115
+    ...mapIndexActions([
116
+      'GetBanner'
117
+    ]),
118
+    Init () {
119
+      this.GetBanner({ queryData: { pageNum: 1, pageSize: 10, status: 1, adType: 'app-index-banner' } })
120
+    },
111
     Refresh (done) { // 页面下拉刷新
121
     Refresh (done) { // 页面下拉刷新
112
       window.setTimeout(() => {
122
       window.setTimeout(() => {
113
         done()
123
         done()

+ 12
- 0
src/pages/page.scss Dosyayı Görüntüle

41
       }
41
       }
42
     }
42
     }
43
   }
43
   }
44
+  > .MainBody {
45
+    position: relative;
46
+    overflow: hidden;
47
+    > div {
48
+      position: absolute;
49
+      width: 100%;
50
+      position: absolute;
51
+      left: 0;
52
+      top: 0;
53
+      bottom: 0;
54
+    }
55
+  }
44
   > .TabBar {
56
   > .TabBar {
45
     align-items: center;
57
     align-items: center;
46
     border-top: 0.01rem solid #f7f7f7;
58
     border-top: 0.01rem solid #f7f7f7;

+ 10
- 2
src/store/index/index.js Dosyayı Görüntüle

1
 
1
 
2
-// import Api from '../../util/Api'
3
-// import ToolClass from '../../util/PublicMethod'
2
+import Api from '../../util/Api'
3
+import ToolClass from '../../util/PublicMethod'
4
 export default {
4
 export default {
5
   namespaced: true,
5
   namespaced: true,
6
   state: {
6
   state: {
16
     ]
16
     ]
17
   },
17
   },
18
   mutations: {
18
   mutations: {
19
+    UpdateBanner (state, data) { // 更新banner
20
+      console.log(data)
21
+    }
19
   },
22
   },
20
   actions: {
23
   actions: {
24
+    GetBanner (context, payload) { // 获取banner
25
+      return new Promise((resolve, reject) => {
26
+        ToolClass.Axios(resolve, reject, Api.GetBanner, context, payload, 1000, 'UpdateBanner')
27
+      })
28
+    }
21
   }
29
   }
22
 }
30
 }

+ 10
- 2
src/store/user/index.js Dosyayı Görüntüle

1
 
1
 
2
-// import Api from '../../util/Api'
3
-// import ToolClass from '../../util/PublicMethod'
2
+import Api from '../../util/Api'
3
+import ToolClass from '../../util/PublicMethod'
4
 export default {
4
 export default {
5
   namespaced: true,
5
   namespaced: true,
6
   state: {
6
   state: {
36
     }
36
     }
37
   },
37
   },
38
   mutations: {
38
   mutations: {
39
+    UpdateUserInfo (state, data) { // 更新用户信息
40
+      state.UserInfo = data || null
41
+    }
39
   },
42
   },
40
   actions: {
43
   actions: {
44
+    SignIn (context, payload) { // 登录
45
+      return new Promise((resolve, reject) => {
46
+        ToolClass.Axios(resolve, reject, Api.SignIn, context, payload, 1000, 'UpdateUserInfo')
47
+      })
48
+    }
41
   }
49
   }
42
 }
50
 }

+ 6
- 2
src/util/Api.js Dosyayı Görüntüle

2
 const prefix = process.env.NODE_ENV === 'production' ? '' : '/api'
2
 const prefix = process.env.NODE_ENV === 'production' ? '' : '/api'
3
 
3
 
4
 const $api = {
4
 const $api = {
5
-  ModifyDailyStatus: { // 修改动态状态
5
+  SignIn: { // 登录
6
     method: 'post',
6
     method: 'post',
7
-    url: `${prefix}/business/daily/modifyStatus`
7
+    url: `${prefix}/app/login`
8
+  },
9
+  GetBanner: { // 获取banner
10
+    method: 'get',
11
+    url: `${prefix}/app/ad`
8
   }
12
   }
9
 }
13
 }
10
 
14
 

+ 41
- 2
src/util/PublicMethod.js Dosyayı Görüntüle

1
 /* eslint-disable */
1
 /* eslint-disable */
2
 import Axios from 'axios'
2
 import Axios from 'axios'
3
+import qs from 'qs'
3
 const ToolClass = {
4
 const ToolClass = {
5
+  TimeOut (callback) {
6
+    if (window.InitTimer === undefined) window.InitTimer = null
7
+    window.clearTimeout(window.InitTimer)
8
+    window.InitTimer = window.setTimeout(() => {
9
+      window.clearTimeout(window.InitTimer)
10
+      callback()
11
+    }, 300)
12
+  },
13
+  ReplaceURLParams (url, params) {
14
+    const args = { ...(params || {}), org: 'MQ' }
15
+    return Object.keys(args).reduce((acc, k) => { // 此方法对每个元素进行处理
16
+      const re = new RegExp(`:${k}(?!w)`, 'i')
17
+      return acc.replace(re, args[k])
18
+    }, url)
19
+  },
4
   Axios (resolve, reject, target, context, payload = {}, code = 0, commit = null, params = null, hasdata = false) { // Axios
20
   Axios (resolve, reject, target, context, payload = {}, code = 0, commit = null, params = null, hasdata = false) { // Axios
21
+    let Data = null
22
+    let Url = null
23
+    if (payload.urlData !== undefined) {
24
+      Url = this.ReplaceURLParams(target.url, payload.urlData)
25
+    } else {
26
+      Url = target.url
27
+    }
28
+    if (payload.queryData !== undefined) {
29
+      Url += '?' + qs.stringify(payload.queryData)
30
+    }
31
+    if (payload.data !== undefined) {
32
+      Data = payload.data
33
+    }
34
+    let Header = {}
35
+    if (window.localStorage.Jwt !== undefined && window.localStorage.JwtTime !== undefined && window.localStorage.JwtTime + 24 * 60 * 60 * 1000 >= Date.now()) { // 本地获取token
36
+      Header['x-authorization-jwt'] = window.localStorage.Jwt
37
+    }
5
     Axios({
38
     Axios({
6
       method: target.method,
39
       method: target.method,
7
-      url: target.url,
8
-      ...payload
40
+      url: Url,
41
+      data: { ...Data },
42
+      headers: { ...Header }
9
     }).then(res => {
43
     }).then(res => {
44
+      const token = res.headers['x-authorization-jwt']
45
+      if (token) { // 更新本地存储token
46
+        window.localStorage.Jwt = token
47
+        window.localStorage.JwtTime = Date.now()
48
+      }
10
       if (res.data.code - 0 === code - 0) {
49
       if (res.data.code - 0 === code - 0) {
11
         if (commit !== null) {
50
         if (commit !== null) {
12
           context.commit(commit, params === null ? res.data.data : hasdata ? { ...params, data: res.data.data } : params)
51
           context.commit(commit, params === null ? res.data.data : hasdata ? { ...params, data: res.data.data } : params)