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

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

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

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

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

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

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

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

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

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

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

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

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

L
123  
linju 已提交
278 279 280

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

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