ucenter.vue 10.4 KB
Newer Older
L
213  
linju 已提交
1
<template>
DCloud_JSON's avatar
DCloud_JSON 已提交
2 3
	<view class="center">
		<uni-sign-in ref="signIn"></uni-sign-in>
4
		<view class="userInfo" @click.capture="toUserInfo">
A
Admin 已提交
5
			<uni-file-picker v-if="userInfo.avatar_file&&userInfo.avatar_file.url" v-model="userInfo.avatar_file"
DCloud_JSON's avatar
DCloud_JSON 已提交
6 7
				fileMediatype="image" :del-icon="false" return-type="object" :image-styles="listStyles" disablePreview
				disabled />
8
			<image v-else class="logo-img" src="/static/uni-center/defaultAvatarUrl.png"></image>
芊里 已提交
9
			<view class="logo-title">
10
				<text class="uer-name">{{userInfo.nickname||userInfo.username||userInfo.mobile||'未登录'}}</text>
L
213  
linju 已提交
11
			</view>
L
123  
linju 已提交
12
		</view>
13
		<uni-grid class="grid" :column="4" :showBorder="false" :square="true">
14
			<uni-grid-item class="item" v-for="(item,index) in gridList" @click.native="tapGrid(index)" :key="index">
15
				<uni-icons class="icon" color="#007AFF" :type="item.icon" size="26"></uni-icons>
芊里 已提交
16
				<text class="text">{{item.text}}</text>
L
213  
linju 已提交
17 18
			</uni-grid-item>
		</uni-grid>
19 20
		<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"
21 22
				:clickable="true" :to="item.to" @click="ucenterListClick(item)" :show-extra-icon="true"
				:extraIcon="{type:item.icon,color:'#999'}">
L
123  
linju 已提交
23 24 25 26
				<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>
芊里 已提交
27
			</uni-list-item>
DCloud_JSON's avatar
DCloud_JSON 已提交
28
		</uni-list>
L
213  
linju 已提交
29 30 31 32 33 34 35 36
	</view>
</template>

<script>
	import {
		mapGetters,
		mapMutations
	} from 'vuex';
芊里 已提交
37 38
	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';
DCloud_JSON's avatar
DCloud_JSON 已提交
39
	import uniShare from '@/uni_modules/uni-share/js_sdk/uni-share.js';
芊里 已提交
40 41

	const db = uniCloud.database();
L
213  
linju 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
	export default {
		data() {
			return {
				gridList: [{
						"text": "文字1",
						"icon": "chat"
					},
					{
						"text": "文字2",
						"icon": "cloud-upload"
					},
					{
						"text": "文字3",
						"icon": "contact"
					},
					{
						"text": "文字4",
						"icon": "download"
					}
				],
				ucenterList: [
63
					[{
DCloud_JSON's avatar
DCloud_JSON 已提交
64 65 66
							"title": '签到有奖',
							"event": 'signIn',
							"icon": "compose"
67
						},
芊里 已提交
68 69
						// #ifdef APP-PLUS
						{
70
							"title": '去评分',
71
							"event": 'gotoMarket',
72
							"icon": "hand-thumbsup"
芊里 已提交
73
						},
DCloud_JSON's avatar
DCloud_JSON 已提交
74
						//#endif
L
123  
linju 已提交
75
						{
76
							"title": '阅读过的文章',
77
							"to": '/pages/ucenter/read-news-log/read-news-log',
78
							"icon": "flag"
79
						},
DCloud_JSON's avatar
DCloud_JSON 已提交
80
						{
81 82
							"title": '我的积分',
							"to": '',
83
							"event": 'getScore',
84
							"icon": "paperplane"
DCloud_JSON's avatar
DCloud_JSON 已提交
85 86
						}
						// #ifdef APP-PLUS
87
						, {
DCloud_JSON's avatar
DCloud_JSON 已提交
88 89 90 91
							"title": '分销推荐',
							"event": 'share',
							"icon": "redo"
						}
92
						// #endif
芊里 已提交
93
					],
L
213  
linju 已提交
94
					[{
95
						"title": '问题与反馈',
96
						"to": '/uni_modules/uni-feedback/pages/uni-feedback/uni-feedback',
97
						"icon": "help"
DCloud_JSON's avatar
DCloud_JSON 已提交
98
					}, {
99
						"title": '设置',
100
						"to": '/pages/ucenter/settings/settings',
101
						"icon": "gear"
102 103
					}],
					[{
104
						"title": '关于',
105
						"to": '/pages/ucenter/about/about',
106
						"icon": "info"
L
123  
linju 已提交
107
					}]
DCloud_JSON's avatar
DCloud_JSON 已提交
108 109 110 111 112 113 114 115 116 117
				],
				listStyles: {
					"height": "150rpx", // 边框高度
					"width": "150rpx", // 边框宽度
					"border": { // 如果为 Boolean 值,可以控制边框显示与否
						"color": "#eee", // 边框颜色
						"width": "1px", // 边框宽度
						"style": "solid", // 边框样式
						"radius": "100%" // 边框圆角,支持百分比
					}
118
				}
L
213  
linju 已提交
119 120
			}
		},
DCloud_JSON's avatar
DCloud_JSON 已提交
121
		onLoad() {
芊里 已提交
122
			//#ifdef APP-PLUS
123
			this.ucenterList[this.ucenterList.length - 2].unshift({
芊里 已提交
124 125
				title: '检查更新',
				rightText: this.appVersion.version + '-' + this.appVersion.versionCode,
126
				event: 'checkVersion',
127
				icon: 'loop',
芊里 已提交
128 129
				showBadge: this.appVersion.hasNew
			})
芊里 已提交
130
			//#endif
L
123  
linju 已提交
131
		},
L
213  
linju 已提交
132 133 134 135
		computed: {
			...mapGetters({
				userInfo: 'user/info',
				login: 'user/hasLogin'
芊里 已提交
136 137
			})
			// #ifdef APP-PLUS
138 139
			,
			appVersion() {
芊里 已提交
140 141
				return getApp().appVersion
			}
DCloud_JSON's avatar
DCloud_JSON 已提交
142
			// #endif
143 144
			,
			appConfig() {
DCloud_JSON's avatar
DCloud_JSON 已提交
145
				return getApp().globalData.config
DCloud_JSON's avatar
DCloud_JSON 已提交
146
			}
L
213  
linju 已提交
147
		},
148 149 150
		methods: {
			...mapMutations({
				setUserInfo: 'user/login'
151
			}),
L
123  
linju 已提交
152
			toSettings() {
153
				uni.navigateTo({
L
123  
linju 已提交
154
					url: "/pages/ucenter/settings/settings"
155
				})
DCloud_JSON's avatar
DCloud_JSON 已提交
156
			},
157
			signIn() { //签到
DCloud_JSON's avatar
DCloud_JSON 已提交
158
				this.$refs.signIn.open()
L
123  
linju 已提交
159
			},
L
213  
linju 已提交
160 161 162 163 164 165 166 167
			/**
			 * 个人中心项目列表点击事件
			 */
			ucenterListClick(item) {
				if (!item.to && item.event) {
					this[item.event]();
				}
			},
芊里 已提交
168
			async checkVersion() {
169 170
				let res = await callCheckVersion()
				console.log(res);
171 172 173
				if (res.result.code > 0) {
					checkUpdate()
				} else {
174 175 176 177
					uni.showToast({
						title: res.result.message,
						icon: 'none'
					});
DCloud_JSON's avatar
123  
DCloud_JSON 已提交
178
				}
L
213  
linju 已提交
179
			},
180 181
			toUserInfo() {
				uni.navigateTo({
DCloud_JSON's avatar
DCloud_JSON 已提交
182
					url: '/pages/ucenter/userinfo/userinfo'
183
				})
184
			},
L
123  
linju 已提交
185
			tapGrid(index) {
186
				uni.showToast({
L
123  
linju 已提交
187
					title: '你点击了,第' + (index + 1) + '',
188 189
					icon: 'none'
				});
190 191 192 193
			},
			/**
			 * 去应用市场评分
			 */
芊里 已提交
194
			gotoMarket() {
DCloud_JSON's avatar
DCloud_JSON 已提交
195
				// #ifdef APP-PLUS
196 197
				if (uni.getSystemInfoSync().platform == "ios") {
					// 这里填写appstore应用id
198
					let appstoreid = this.appConfig.marketId.ios; // 'id1417078253';
L
123  
linju 已提交
199
					plus.runtime.openURL("itms-apps://" + 'itunes.apple.com/cn/app/wechat/' + appstoreid + '?mt=8');
200 201 202
				}
				if (uni.getSystemInfoSync().platform == "android") {
					var Uri = plus.android.importClass("android.net.Uri");
DCloud_JSON's avatar
DCloud_JSON 已提交
203
					var uri = Uri.parse("market://details?id=" + this.appConfig.marketId.android);
L
123  
linju 已提交
204 205 206 207
					var Intent = plus.android.importClass('android.content.Intent');
					var intent = new Intent(Intent.ACTION_VIEW, uri);
					var main = plus.android.runtimeMainActivity();
					main.startActivity(intent);
208 209
				}
				// #endif
芊里 已提交
210 211 212 213 214 215 216 217 218 219 220 221
			},
			/**
			 * 获取积分信息
			 */
			getScore() {
				if (!this.userInfo) return uni.showToast({
					title: '请登录后查看积分',
					icon: 'none'
				});
				uni.showLoading({
					mask: true
				})
DCloud_JSON's avatar
DCloud_JSON 已提交
222 223
				db.collection("uni-id-scores").where('"user_id" == $env.uid').field('score,balance').get().then((res) => {
					uni.hideLoading()
224
					console.log(res);
芊里 已提交
225
					const data = res.result.data[0];
226
					let msg = '';
227
					msg = data ? ('当前积分为' + data.score) : '当前无积分';
芊里 已提交
228
					uni.showToast({
芊里 已提交
229
						title: msg,
芊里 已提交
230 231 232
						icon: 'none'
					});
				})
233 234
			},
			async share() {
235 236 237
				let {
					result
				} = await uniCloud.callFunction({
238 239 240 241
					name: 'uni-id-cf',
					data: {
						action: 'getUserInviteCode'
					}
DCloud_JSON's avatar
DCloud_JSON 已提交
242
				})
243 244 245 246 247 248 249 250
				console.log(result);
				let myInviteCode = result.myInviteCode || result.userInfo.my_invite_code
				console.log(myInviteCode);
				let {
					appName,
					logo,
					company,
					slogan
DCloud_JSON's avatar
DCloud_JSON 已提交
251 252 253 254 255 256 257 258 259
				} = this.appConfig.about
				// #ifdef APP-PLUS
				uniShare({
					content: { //公共的分享类型(type)、链接(herf)、标题(title)、summary(描述)、imageUrl(缩略图)
						type: 0,
						href: this.appConfig.h5.url +
							`/#/pages/ucenter/invite/invite?code=uniInvitationCode:${myInviteCode}`,
						title: appName,
						summary: slogan,
260 261
						imageUrl: logo +
							'?x-oss-process=image/resize,m_fill,h_100,w_100' //压缩图片解决,在ios端分享图过大导致的图片失效问题
DCloud_JSON's avatar
DCloud_JSON 已提交
262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307
					},
					menus: [{
							"img": "/static/app-plus/sharemenu/wechatfriend.png",
							"text": "微信好友",
							"share": {
								"provider": "weixin",
								"scene": "WXSceneSession"
							}
						},
						{
							"img": "/static/app-plus/sharemenu/wechatmoments.png",
							"text": "微信朋友圈",
							"share": {
								"provider": "weixin",
								"scene": "WXSenceTimeline"
							}
						},
						{
							"img": "/static/app-plus/sharemenu/weibo.png",
							"text": "微博",
							"share": {
								"provider": "sinaweibo"
							}
						},
						{
							"img": "/static/app-plus/sharemenu/qq.png",
							"text": "QQ",
							"share": {
								"provider": "qq"
							}
						},
						{
							"img": "/static/app-plus/sharemenu/copyurl.png",
							"text": "复制",
							"share": "copyurl"
						},
						{
							"img": "/static/app-plus/sharemenu/more.png",
							"text": "更多",
							"share": "shareSystem"
						}
					],
					cancelText: "取消分享",
				}, e => { //callback
					console.log(e);
				})
308
				// #endif
L
213  
linju 已提交
309 310 311 312 313
			}
		}
	}
</script>

DCloud_JSON's avatar
DCloud_JSON 已提交
314
<style lang="scss" scoped>
315 316 317 318 319 320 321
	/* #ifndef APP-NVUE */
	view {
		display: flex;
		box-sizing: border-box;
		flex-direction: column;
	}

L
213  
linju 已提交
322 323 324
	page {
		background-color: #f8f8f8;
	}
325

L
213  
linju 已提交
326 327 328 329 330 331 332
	/* #endif*/

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

L
213  
linju 已提交
334 335
	.userInfo {
		width: 750rpx;
336
		padding: 20rpx;
L
123  
linju 已提交
337
		padding-top: 50px;
338
		background-image: url(../../static/uni-center/headers.png);
L
213  
linju 已提交
339
		flex-direction: column;
L
213  
linju 已提交
340 341
		align-items: center;
	}
342

L
213  
linju 已提交
343
	.logo-img {
L
213  
linju 已提交
344 345
		width: 150rpx;
		height: 150rpx;
346
		border-radius: 150rpx;
L
213  
linju 已提交
347
	}
348

L
213  
linju 已提交
349 350 351 352 353 354 355 356
	.logo-title {
		flex: 1;
		align-items: center;
		justify-content: space-between;
		flex-direction: row;
	}

	.uer-name {
357 358
		height: 100rpx;
		line-height: 100rpx;
L
213  
linju 已提交
359
		font-size: 38rpx;
L
213  
linju 已提交
360 361
		color: #FFFFFF;
	}
362

363
	.center-list {
L
213  
linju 已提交
364 365 366
		margin-bottom: 30rpx;
		background-color: #f9f9f9;
	}
367

L
213  
linju 已提交
368
	.center-list-cell {
369
		width: 750rpx;
L
213  
linju 已提交
370 371 372
		background-color: #007AFF;
		height: 40rpx;
	}
373

L
123  
linju 已提交
374
	.grid {
375
		background-color: #FFFFFF;
DCloud_JSON's avatar
DCloud_JSON 已提交
376
		margin-bottom: 6px;
L
213  
linju 已提交
377
	}
L
123  
linju 已提交
378

L
213  
linju 已提交
379
	.uni-grid .text {
380
		font-size: 30rpx;
DCloud_JSON's avatar
DCloud_JSON 已提交
381 382
		height: 25px;
		line-height: 25px;
L
213  
linju 已提交
383 384 385
		color: #817f82;
	}

DCloud_JSON's avatar
DCloud_JSON 已提交
386
	.uni-grid .item ::v-deep .uni-grid-item__box {
L
213  
linju 已提交
387 388
		justify-content: center;
		align-items: center;
389 390
	}

L
123  
linju 已提交
391 392 393

	/*修改边线粗细示例*/
	/* #ifndef APP-NVUE */
DCloud_JSON's avatar
DCloud_JSON 已提交
394
	.center-list ::v-deep .uni-list--border:after {
395
		-webkit-transform: scaleY(0.2);
396
		transform: scaleY(0.2);
DCloud_JSON's avatar
DCloud_JSON 已提交
397
		margin-left: 80rpx;
398 399
	}

DCloud_JSON's avatar
DCloud_JSON 已提交
400 401
	.center-list ::v-deep .uni-list--border-top,
	.center-list ::v-deep .uni-list--border-bottom {
402 403 404
		display: none;
	}

L
123  
linju 已提交
405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425
	/* #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 */
426
		background-color: #DD524D;
L
123  
linju 已提交
427
	}
428
</style>