张文飞 vor 3 Jahren
Ursprung
Commit
9e06b0c10f
6 geänderte Dateien mit 698 neuen und 343 gelöschten Zeilen
  1. 2 0
      main.js
  2. 17 0
      pages.json
  3. 426 336
      pages/homePage/homePage.vue
  4. 148 0
      pages/revenueRankingPage/revenueRankingPage.vue
  5. 101 0
      static/cache.js
  6. 4 7
      util/api.js

+ 2 - 0
main.js

@@ -2,11 +2,13 @@ import Vue from 'vue'
 import App from './App'
 import { myRequest } from 'util/api.js'
 Vue.config.productionTip = false
+import MinCache from './static/cache.js'
 //引入vuex
 import store from './store'
 //把vuex定义成全局组件
 Vue.prototype.$store = store
 
+Vue.use(MinCache,{timeout:1800}) //缓存时间30分钟
 
 App.mpType = 'app'
 Vue.prototype.$myRequest = myRequest

+ 17 - 0
pages.json

@@ -33,6 +33,23 @@
 				}
 			}
 		}
+        ,{
+            "path" : "pages/revenueRankingPage/revenueRankingPage",
+            "style": {
+            	"navigationBarTitleText": "收益排行榜",
+            	"enablePullDownRefresh": true,
+            	"onReachBottomDistance": 50,
+            	"scrollIndicator": "none",
+            	"app-plus": {
+            		"pullToRefresh": {
+            			"support": true,
+            			"color": "#ff3333",
+            			"style": "circle"
+            		}
+            	}
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

Datei-Diff unterdrückt, da er zu groß ist
+ 426 - 336
pages/homePage/homePage.vue


+ 148 - 0
pages/revenueRankingPage/revenueRankingPage.vue

@@ -0,0 +1,148 @@
+<template>
+	<view class="ranking_body">
+		<view class="title">
+			收益排行 TOP10
+		</view>
+		<view class="rank_tab">
+			<view class="tab_item">
+				总量
+			</view>
+			<view class="tab_line"></view>
+			<view class="tab_item">
+				本月
+			</view>
+			<view class="tab_line"></view>
+			<view class="tab_item">
+				本日
+			</view>
+		</view>
+		<view class="rank_list">
+			<view class="rank_title">
+				<view class="rank_title_name" style="width: 20%;">
+					排名
+				</view>
+				<view class="rank_title_name" style="width: 30%;">
+					用户名
+				</view>
+				<view class="rank_title_name" style="width: 20%;">
+					用户等级
+				</view>
+				<view class="rank_title_name" style="width: 30%;">
+					累计收益(元)
+				</view>
+			</view>
+			<view class="rank_item">
+				<view class="rank_item_name" style="width: 20%;">
+					1
+				</view>
+				<view class="rank_item_name" style="width: 30%;">
+					淘房**神
+				</view>
+				<view class="rank_item_name" style="width: 20%;">
+					LV10
+				</view>
+				<view class="rank_item_name" style="width: 30%;">
+					8273.00
+				</view>
+			</view>
+			
+			<view class="rank_item">
+				<view class="rank_item_name" style="width: 20%;">
+					1
+				</view>
+				<view class="rank_item_name" style="width: 30%;">
+					淘房**神
+				</view>
+				<view class="rank_item_name" style="width: 20%;">
+					LV10
+				</view>
+				<view class="rank_item_name" style="width: 30%;">
+					8273.00
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			};
+		}
+	}
+</script>
+
+<style lang="scss">
+.ranking_body{
+	margin-left: 20rpx;
+	margin-right: 20rpx;
+	background: #ffffff;
+	border-radius: 16rpx;
+	padding-top: 20rpx;
+	.title{
+		text-align: center;
+		font-size: 32rpx;
+		font-family: Verdana, Verdana-Bold;
+		font-weight: 700;
+		text-align: center;
+		color: #262626;
+	}
+	
+	.rank_tab{
+		display: flex;
+		margin: 0 auto;
+		margin-top: 40rpx;
+		width: 450rpx;
+		height: 60rpx;
+		background: #ffffff;
+		border: 2rpx solid #ededed;
+		border-radius: 8rpx;
+		.tab_item{
+			height: 100%;
+			text-align: center;
+			flex: auto;
+			line-height: 60rpx;
+		}
+		.tab_line{
+			width: 2rpx;
+			height: 60rpx;
+			background: #ededed;
+		}
+	}
+	.rank_list{
+		width: 100%;
+		.rank_title{
+			display: flex;
+			width: 100%;
+			margin: 0 auto;
+			margin-top: 40rpx;
+			.rank_title_name{
+				font-size: 28rpx;
+				flex: auto;
+				font-family: Verdana, Verdana-Bold;
+				font-weight: 700;
+				text-align: center;
+				color: #b1b1b1;
+			}
+		}
+		.rank_item{
+			display: flex;
+			align-items: center;
+			width: 100%;
+			height: 104rpx;
+			margin: 0 auto;
+			border-bottom: 2rpx solid rgba(0,0,0,0.05);
+			.rank_item_name{
+				font-size: 28rpx;
+				flex: auto;
+				font-family: Verdana, Verdana-Bold;
+				font-weight: 700;
+				text-align: center;
+				color: #b1b1b1;
+			}
+		}
+	}
+}
+</style>

+ 101 - 0
static/cache.js

@@ -0,0 +1,101 @@
+let cacheMap =  new Map()
+let timeoutDefault = 1200
+
+function isTimeout (name) {
+  const data = cacheMap.get(name)
+  if (!data) return true
+  if (data.timeout === 0) return false 
+  const currentTime = Date.now()
+  const overTime = (currentTime - data.createTime) / 1000
+  if (overTime > data.timeout) {
+    cacheMap.delete(name)
+    if (name.startsWith('_')) {
+      try {
+        uni.removeStorageSync(name)
+      } catch (e) {
+        console.log(e)
+      }
+    }
+    return true
+  }
+  return false
+}
+
+class CacheCell {
+  constructor (data, timeout) {
+    this.data = data
+    this.timeout = timeout
+    this.createTime = Date.now()
+  }
+}
+
+class MinCache {
+  constructor (timeout) {
+    try {
+      const res = uni.getStorageInfoSync()
+      res.keys.forEach(name => {
+        try {
+          const value = uni.getStorageSync(name)
+          cacheMap.set(name, value)
+        } catch (e) {
+          console.log(e)
+        }
+      })
+    } catch (e) {
+      console.log(e)
+    }
+    timeoutDefault = timeout
+  }
+  set (name, data, timeout = timeoutDefault) {
+    const cachecell = new CacheCell(data, timeout)
+    let cache = null
+    if (name.startsWith('_')) {
+      try {
+        uni.setStorageSync(name, cachecell)
+        cache = cacheMap.set(name, cachecell)
+      } catch (e) {
+        console.log(e)
+      }
+    } else {
+      cache = cacheMap.set(name, cachecell)
+    }
+    return cache
+  }
+  get (name) {
+    return isTimeout(name) ? null : cacheMap.get(name).data
+  }
+  delete (name) {
+    let value = false
+    if (name.startsWith('_')) {
+      try {
+        uni.removeStorageSync(name)
+        value = cacheMap.delete(name)
+      } catch (e) {
+        console.log(e)
+      }
+    } else {
+      value = cacheMap.delete(name)
+    }
+    return value
+  }
+  has (name) {
+    return !isTimeout(name)
+  }
+  clear () {
+    let value = false
+    try {
+      uni.clearStorageSync()
+      cacheMap.clear()
+      value = true
+    } catch (e) {
+      console.log(e)
+    }
+    return value
+  }
+}
+
+MinCache.install = function (Vue, {timeout = 1200} = {}) {
+  Vue.prototype.$cache = new MinCache(timeout)
+}
+
+export default MinCache

+ 4 - 7
util/api.js

@@ -15,7 +15,7 @@ export const myRequest = (options) => {
 			})
 		}
 	}
-	let token = getApp().globalData.token;
+	let token = getApp().globalData.token
 	if (token) {
 		options.token = token
 	} else {
@@ -27,12 +27,9 @@ export const myRequest = (options) => {
 			url: BASE_URL + options.url,
 			method: options.method || "POST",
 			data: options.data || {},
-			// header: {
-			// 	'token': options.token || null,
-			// 	'elabprojectname': elabprojectname,
-			// 	'elabsystem': elabsystem,
-			// 	'elabEnvironment': elabEnvironment
-			// },
+			header: {
+				'token': options.token || null,
+			},
 			success: res => {
 				uni.hideLoading()
 				uni.hideNavigationBarLoading();