ucenter.vue 7.2 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>
DCloud_JSON's avatar
重构  
DCloud_JSON 已提交
7
				<uni-icons class="icon" color="#FFFFFF" type="arrowright" v-if="!login" size="16"></uni-icons>
L
213  
linju 已提交
8
			</view>
L
123  
linju 已提交
9
		</view>
L
213  
linju 已提交
10
		<uni-grid class="grid" :column="5" :showBorder="false" :square="true">
芊里 已提交
11 12 13
			<uni-grid-item class="item" v-for="(item,index) in gridList" @click.native="tapGrid(index)">
				<uni-icons class="icon" color="#5d5e64" :type="item.icon" size="28"></uni-icons>
				<text class="text">{{item.text}}</text>
L
213  
linju 已提交
14 15 16
			</uni-grid-item>
		</uni-grid>
		<uni-list class="center-list" v-for="(sublist , index) in ucenterList">
L
123  
linju 已提交
17 18 19 20 21 22
			<uni-list-item v-for="item in sublist" :title="item.title" link :rightText="item.rightText"
				:clickable="true" :to="item.to" @click="ucenterListClick(item)">
				<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>
芊里 已提交
23
			</uni-list-item>
DCloud_JSON's avatar
DCloud_JSON 已提交
24
		</uni-list>
L
213  
linju 已提交
25 26 27 28 29 30 31 32
	</view>
</template>

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

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

L
213  
linju 已提交
214 215 216 217 218 219 220
	/* #endif*/

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

L
213  
linju 已提交
222 223
	.userInfo {
		width: 750rpx;
224
		padding: 20rpx;
L
123  
linju 已提交
225
		padding-top: 50px;
L
213  
linju 已提交
226
		background-color: #2F85FC;
L
213  
linju 已提交
227
		flex-direction: column;
L
213  
linju 已提交
228 229
		align-items: center;
	}
230

L
213  
linju 已提交
231
	.logo-img {
L
213  
linju 已提交
232 233
		width: 150rpx;
		height: 150rpx;
234
		border-radius: 150rpx;
L
213  
linju 已提交
235
		border: solid 1px #FFFFFF;
L
213  
linju 已提交
236
	}
237

L
213  
linju 已提交
238
	.logo-title {
L
213  
linju 已提交
239
		height: 150rpx;
L
213  
linju 已提交
240 241 242 243 244 245 246
		flex: 1;
		align-items: center;
		justify-content: space-between;
		flex-direction: row;
	}

	.uer-name {
L
213  
linju 已提交
247 248 249
		height: 60rpx;
		line-height: 60rpx;
		font-size: 38rpx;
L
213  
linju 已提交
250 251
		color: #FFFFFF;
	}
252

253
	.center-list {
L
213  
linju 已提交
254 255 256
		margin-bottom: 30rpx;
		background-color: #f9f9f9;
	}
257

L
213  
linju 已提交
258
	.center-list-cell {
259
		width: 750rpx;
L
213  
linju 已提交
260 261 262
		background-color: #007AFF;
		height: 40rpx;
	}
263

L
123  
linju 已提交
264
	.grid {
265
		background-color: #FFFFFF;
L
123  
linju 已提交
266
		margin: 25rpx 0;
L
213  
linju 已提交
267
	}
L
123  
linju 已提交
268

L
213  
linju 已提交
269 270 271 272 273 274 275 276
	.uni-grid .text {
		font-size: 26rpx;
		color: #817f82;
	}

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

L
123  
linju 已提交
279 280 281

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

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