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

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

L
213  
linju 已提交
224 225 226 227 228 229 230
	/* #endif*/

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

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

L
213  
linju 已提交
241
	.logo-img {
L
213  
linju 已提交
242 243
		width: 150rpx;
		height: 150rpx;
244
		border-radius: 150rpx;
L
213  
linju 已提交
245
	}
246

L
213  
linju 已提交
247 248 249 250 251 252 253 254
	.logo-title {
		flex: 1;
		align-items: center;
		justify-content: space-between;
		flex-direction: row;
	}

	.uer-name {
255 256
		height: 100rpx;
		line-height: 100rpx;
L
213  
linju 已提交
257
		font-size: 38rpx;
L
213  
linju 已提交
258 259
		color: #FFFFFF;
	}
260

261
	.center-list {
L
213  
linju 已提交
262 263 264
		margin-bottom: 30rpx;
		background-color: #f9f9f9;
	}
265

L
213  
linju 已提交
266
	.center-list-cell {
267
		width: 750rpx;
L
213  
linju 已提交
268 269 270
		background-color: #007AFF;
		height: 40rpx;
	}
271

L
123  
linju 已提交
272
	.grid {
273
		background-color: #FFFFFF;
274 275
		margin-bottom: 15rpx;
		padding: 10rpx 0;
L
213  
linju 已提交
276
	}
L
123  
linju 已提交
277

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

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

L
123  
linju 已提交
290 291 292

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

	/* #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 */
321
		background-color: #DD524D;
L
123  
linju 已提交
322
	}
323
</style>