ucenter.vue 7.3 KB
Newer Older
L
213  
linju 已提交
1 2
<template>
	<view class="center">
3
		<view class="userInfo" @click="toUserInfo">
DCloud_JSON's avatar
DCloud_JSON 已提交
4
			<image class="logo-img" :src="userInfo.avatar||avatarUrl"></image>
芊里 已提交
5
			<view class="logo-title">
6
				<text class="uer-name">{{userInfo.nickname||userInfo.username||userInfo.mobile||'未登录'}}</text>
L
213  
linju 已提交
7
			</view>
L
123  
linju 已提交
8
		</view>
9
		<uni-grid class="grid" :column="4" :showBorder="false" :square="true">
10
			<uni-grid-item class="item" v-for="(item,index) in gridList" @click.native="tapGrid(index)" :key="index">
11
				<uni-icons class="icon" color="#007AFF" :type="item.icon" size="26"></uni-icons>
芊里 已提交
12
				<text class="text">{{item.text}}</text>
L
213  
linju 已提交
13 14
			</uni-grid-item>
		</uni-grid>
15 16
		<uni-list class="center-list" v-for="(sublist , index) in ucenterList" :key="index">
			<uni-list-item v-for="(item,i) in sublist" :title="item.title" link :rightText="item.rightText" :key="i"
17 18 19 20 21
				:clickable="true" :to="item.to" 
				@click="ucenterListClick(item)"
				 :show-extra-icon="true"
				:extraIcon="{type:item.icon,color:'#999'}"
				>
L
123  
linju 已提交
22 23 24 25
				<view v-if="item.showBadge" class="item-footer" slot="footer">
					<text class="item-footer-text">{{item.rightText}}</text>
					<view class="item-footer-badge"></view>
				</view>
芊里 已提交
26
			</uni-list-item>
DCloud_JSON's avatar
DCloud_JSON 已提交
27
		</uni-list>
L
213  
linju 已提交
28 29 30 31 32 33 34 35
	</view>
</template>

<script>
	import {
		mapGetters,
		mapMutations
	} from 'vuex';
芊里 已提交
36 37 38 39
	import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update';
	import callCheckVersion from '@/uni_modules/uni-upgrade-center-app/utils/call-check-version';

	const db = uniCloud.database();
芊里 已提交
40
	const dbCollectionName = 'uni-id-scores';
L
213  
linju 已提交
41 42 43
	export default {
		data() {
			return {
44
				avatarUrl: '/static/uni-center/defaultAvatarUrl.png',
L
213  
linju 已提交
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
				gridList: [{
						"text": "文字1",
						"icon": "chat"
					},
					{
						"text": "文字2",
						"icon": "cloud-upload"
					},
					{
						"text": "文字3",
						"icon": "contact"
					},
					{
						"text": "文字4",
						"icon": "download"
					}
				],
				ucenterList: [
芊里 已提交
63 64 65
					[
						// #ifdef APP-PLUS
						{
66 67 68
							"title": '去评分',
							"event": 'gotoMarket',
							"icon":"hand-thumbsup"
芊里 已提交
69
						},
DCloud_JSON's avatar
DCloud_JSON 已提交
70
						//#endif
L
123  
linju 已提交
71
						{
72 73 74 75
							"title": '阅读过的文章',
							"to": '/pages/ucenter/read-news-log/read-news-log',
							"icon":"flag"
						},
DCloud_JSON's avatar
DCloud_JSON 已提交
76
						{
77 78 79 80
							"title": '我的积分',
							"to": '',
							"event": 'getScore',
							"icon":"paperplane"
芊里 已提交
81 82
						}
					],
L
213  
linju 已提交
83
					[{
84 85 86
						"title": '问题与反馈',
						"to": '/uni_modules/opendb-feedback/pages/opendb-feedback/add',
						"icon":"help"
DCloud_JSON's avatar
DCloud_JSON 已提交
87
					}, {
88 89
						"title": '设置',
						"to": '/pages/ucenter/settings/settings',
DCloud_JSON's avatar
DCloud_JSON 已提交
90
						"icon":"gear"
91 92
					}],
					[{
93 94 95
						"title": '关于',
						"to": '/pages/ucenter/about/about',
						"icon":"info"
L
123  
linju 已提交
96
					}]
L
213  
linju 已提交
97 98 99
				]
			}
		},
DCloud_JSON's avatar
DCloud_JSON 已提交
100
		onLoad() {
芊里 已提交
101
			//#ifdef APP-PLUS
102
			this.ucenterList[this.ucenterList.length - 2].unshift({
芊里 已提交
103 104
				title: '检查更新',
				rightText: this.appVersion.version + '-' + this.appVersion.versionCode,
105 106
				event: 'checkVersion',
				icon:'loop',
芊里 已提交
107 108
				showBadge: this.appVersion.hasNew
			})
芊里 已提交
109
			//#endif
L
123  
linju 已提交
110
		},
L
213  
linju 已提交
111 112 113 114
		computed: {
			...mapGetters({
				userInfo: 'user/info',
				login: 'user/hasLogin'
芊里 已提交
115 116
			})
			// #ifdef APP-PLUS
117 118
			,
			appVersion() {
芊里 已提交
119 120
				return getApp().appVersion
			}
DCloud_JSON's avatar
DCloud_JSON 已提交
121
			// #endif
122 123
			,
			appConfig() {
DCloud_JSON's avatar
DCloud_JSON 已提交
124
				return getApp().globalData.config
DCloud_JSON's avatar
DCloud_JSON 已提交
125
			}
L
213  
linju 已提交
126
		},
127 128 129
		methods: {
			...mapMutations({
				setUserInfo: 'user/login'
130
			}),
L
123  
linju 已提交
131
			toSettings() {
132
				uni.navigateTo({
L
123  
linju 已提交
133
					url: "/pages/ucenter/settings/settings"
134
				})
L
123  
linju 已提交
135
			},
L
213  
linju 已提交
136 137 138 139 140 141 142 143
			/**
			 * 个人中心项目列表点击事件
			 */
			ucenterListClick(item) {
				if (!item.to && item.event) {
					this[item.event]();
				}
			},
芊里 已提交
144
			async checkVersion() {
145 146
				let res = await callCheckVersion()
				console.log(res);
147 148 149
				if (res.result.code > 0) {
					checkUpdate()
				} else {
150 151 152 153
					uni.showToast({
						title: res.result.message,
						icon: 'none'
					});
DCloud_JSON's avatar
123  
DCloud_JSON 已提交
154
				}
L
213  
linju 已提交
155
			},
156 157
			toUserInfo() {
				uni.navigateTo({
DCloud_JSON's avatar
DCloud_JSON 已提交
158
					url: '/pages/ucenter/userinfo/userinfo'
159
				})
160
			},
L
123  
linju 已提交
161
			tapGrid(index) {
162
				uni.showToast({
L
123  
linju 已提交
163
					title: '你点击了,第' + (index + 1) + '',
164 165
					icon: 'none'
				});
166 167 168 169
			},
			/**
			 * 去应用市场评分
			 */
芊里 已提交
170
			gotoMarket() {
DCloud_JSON's avatar
DCloud_JSON 已提交
171
				// #ifdef APP-PLUS
172 173
				if (uni.getSystemInfoSync().platform == "ios") {
					// 这里填写appstore应用id
174
					let appstoreid = this.appConfig.marketId.ios; // 'id1417078253';
L
123  
linju 已提交
175
					plus.runtime.openURL("itms-apps://" + 'itunes.apple.com/cn/app/wechat/' + appstoreid + '?mt=8');
176 177 178
				}
				if (uni.getSystemInfoSync().platform == "android") {
					var Uri = plus.android.importClass("android.net.Uri");
DCloud_JSON's avatar
DCloud_JSON 已提交
179
					var uri = Uri.parse("market://details?id=" + this.appConfig.marketId.android);
L
123  
linju 已提交
180 181 182 183
					var Intent = plus.android.importClass('android.content.Intent');
					var intent = new Intent(Intent.ACTION_VIEW, uri);
					var main = plus.android.runtimeMainActivity();
					main.startActivity(intent);
184 185
				}
				// #endif
芊里 已提交
186 187 188 189 190 191 192 193 194 195 196 197
			},
			/**
			 * 获取积分信息
			 */
			getScore() {
				if (!this.userInfo) return uni.showToast({
					title: '请登录后查看积分',
					icon: 'none'
				});
				uni.showLoading({
					mask: true
				})
芊里 已提交
198
				db.collection(dbCollectionName).where('user_id == $env.uid').field('score,balance').get().then((res) => {
芊里 已提交
199
					const data = res.result.data[0];
200
					let msg = '';
芊里 已提交
201
					msg = data ? ('当前积分为' + data.balance) : '当前无积分';
芊里 已提交
202
					uni.showToast({
芊里 已提交
203
						title: msg,
芊里 已提交
204 205 206 207 208
						icon: 'none'
					});
				}).finally(() => {
					uni.hideLoading()
				})
L
213  
linju 已提交
209 210 211 212 213 214 215 216 217 218
			}
		}
	}
</script>

<style>
	/* #ifndef APP-PLUS-NVUE */
	page {
		background-color: #f8f8f8;
	}
219

L
213  
linju 已提交
220 221 222 223 224 225 226
	/* #endif*/

	.center {
		flex: 1;
		flex-direction: column;
		background-color: #f8f8f8;
	}
227

L
213  
linju 已提交
228 229
	.userInfo {
		width: 750rpx;
230
		padding: 20rpx;
L
123  
linju 已提交
231
		padding-top: 50px;
232
		background-image: url(../../static/uni-center/headers.png);
L
213  
linju 已提交
233
		flex-direction: column;
L
213  
linju 已提交
234 235
		align-items: center;
	}
236

L
213  
linju 已提交
237
	.logo-img {
L
213  
linju 已提交
238 239
		width: 150rpx;
		height: 150rpx;
240
		border-radius: 150rpx;
L
213  
linju 已提交
241
	}
242

L
213  
linju 已提交
243 244 245 246 247 248 249 250
	.logo-title {
		flex: 1;
		align-items: center;
		justify-content: space-between;
		flex-direction: row;
	}

	.uer-name {
251 252
		height: 100rpx;
		line-height: 100rpx;
L
213  
linju 已提交
253
		font-size: 38rpx;
L
213  
linju 已提交
254 255
		color: #FFFFFF;
	}
256

257
	.center-list {
L
213  
linju 已提交
258 259 260
		margin-bottom: 30rpx;
		background-color: #f9f9f9;
	}
261

L
213  
linju 已提交
262
	.center-list-cell {
263
		width: 750rpx;
L
213  
linju 已提交
264 265 266
		background-color: #007AFF;
		height: 40rpx;
	}
267

L
123  
linju 已提交
268
	.grid {
269
		background-color: #FFFFFF;
270 271
		margin-bottom: 15rpx;
		padding: 10rpx 0;
L
213  
linju 已提交
272
	}
L
123  
linju 已提交
273

L
213  
linju 已提交
274
	.uni-grid .text {
275 276 277
		font-size: 30rpx;
		height: 30px;
		line-height: 30px;
L
213  
linju 已提交
278 279 280 281 282 283
		color: #817f82;
	}

	.uni-grid .item /deep/ .uni-grid-item__box {
		justify-content: center;
		align-items: center;
284 285
	}

L
123  
linju 已提交
286 287 288

	/*修改边线粗细示例*/
	/* #ifndef APP-NVUE */
289
	.center-list /deep/ .uni-list--border:after,
L
123  
linju 已提交
290 291
	.center-list /deep/ .uni-list--border-top,
	.center-list /deep/ .uni-list--border-bottom {
292 293 294
		-webkit-transform: scaleY(0.2);
		transform: scaleY(0.2);
	}
L
123  
linju 已提交
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316

	/* #endif */
	.item-footer {
		flex-direction: row;
		align-items: center;
	}

	.item-footer-text {
		color: #999;
		font-size: 24rpx;
		padding-right: 10rpx;
	}

	.item-footer-badge {
		width: 20rpx;
		height: 20rpx;
		/* #ifndef APP-NVUE */
		border-radius: 50%;
		/* #endif */
		/* #ifdef APP-NVUE */
		border-radius: 10rpx;
		/* #endif */
317
		background-color: #DD524D;
L
123  
linju 已提交
318
	}
319
</style>