index.vue 9.23 KB
<template>
	<view class="page">
		<view class="bgbg">
			<view class="loginOutIcon" @click="loginOut">
				<image src="@/static/switch.png"></image>
			</view>
			<view class="welcome">您好!
				{{memberInfo.name}}
				<br />欢迎使用中跆协会员管理系统
			</view>
			<view class="flexbox">
				<!-- userType 1:中跆协 2:省 3:市区 4:道馆-->
				<!-- 4 -->
				<view v-if="userType=='4'" @click="goAddVip">
					<image src="@/static/btn01.png"/>
					添加会员</view>
				<view v-if="userType=='4'" @click="goPath('/pages/personalVip/payment')">
					<image src="@/static/btn02.png"/>
					会员缴费</view>
				<!-- 3 2 1-->
				<view v-if="userType!='4'" @click="goPath('/pages/personalVip/audit')">
					<image src="@/static/btn03.png"/>
					缴费审核</view>

				<!-- 都有 -->
				<view @click="goPath('/pages/personalVip/list')">
					<image src="@/static/btn04.png"/>
					会员查询</view>
					<view v-if="userType!='4'" @click="goPath('/pages/group/list')">
						<image src="@/static/btn05.png"/>团体会员
					</view>
			</view>

		</view>
		<view class="girdBox">
			<view v-if="userType!='3'" @click="goPath('/pages/personalVip/mobilize')">
				<image />
				会员调动
			</view>
			<view v-if="userType=='2'" @click="goPath('/pages/personalVip/feeBill')">
				<image />会员缴费单</view>

			<view v-if="userType!='4'" @click="goPath('/pages/group/apply/applyList')">
				<image />团体会员审核
			</view>
			<view v-if="userType=='2'" @click="goPath('/pages/group/pay')">
				<image />团体会员认证
			</view>

			<view v-if="userType=='2'" @click="goPath('/pages/group/feeBill')">
				<image />团体会员缴费单
			</view>

			<view v-if="userType=='4'" @click="goPath('/pages/level/apply')">
				<image />级位考试申请
			</view>
			<view v-if="userType!='4'&&userType!='1'" @click="goPath('/pages/level/approval')">
				<image />级位考试审核
			</view>
			<view v-if="userType=='2'" @click="goPath('/pages/level/apply')">
				<image />段位考试申请
			</view>

			<view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=1')">
				<image />级位考试缴费单
			</view>

			<view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=2')">
				<image />段位考试缴费单
			</view>

			<view v-if="userType=='2'" @click="goPath('/pages/exam/payment?type=3')">
				<image />越段考试缴费单
			</view>


		</view>
		<view v-if="userType=='1'" class="girdBox">
			<view @click="goPath('/pages/level/ztx/approval')">
				<image />级位考试审核
			</view>
			<view @click="goPath('/pages/level/ztx/cert?type=1')">
				<image />级位证书发布
			</view>
			<view @click="goPath('/pages/rank/approval?type=2')">
				<image />段位考试审核
			</view>
			<view @click="goPath('/pages/rank/scoreApproval?type=2')">
				<image />考段成绩审核
			</view>
			<view @click="goPath('/pages/level/ztx/cert?type=2')">
				<image />考段证书发布
			</view>
			<view @click="goPath('/pages/rank/approval?type=3')">
				<image />越段考试审核
			</view>
			<view @click="goPath('/pages/rank/scoreApproval?type=3')">
				<image />越段成绩审核
			</view>
			<view @click="goPath('/pages/level/ztx/cert?type=3')">
				<image />越段证书发布
			</view>
		</view>
		<uni-section title="待办提醒" padding>
			<template v-slot:right>
				<text @click="goMsgList" class="more">更多></text>
			</template>
			<view class="msglist">
				<view class="msgitem" v-for="n in messageList" @click="readMessage(n)">
					<text class="dot" :class="n.readFlag=='1'?'done':''"></text>
					<view class="tt esp">{{n.name}}</view>
					<view class="date">{{n.createTime}}</view>
				</view>
				<view class="nodata" v-if="messageList.length==0">
					<image mode="aspectFit" src="/static/nodata.png"></image>
					<text>暂无数据</text>
				</view>
			</view>
		</uni-section>
	</view>
</template>

<script setup>
	import * as api from '@/common/api.js';
	import * as loginServer from '@/common/login.js';
	import {
		onLoad,
		onShow,
		onReady,
		onPullDownRefresh
	} from '@dcloudio/uni-app';
	import {
		ref,
		getCurrentInstance
	} from 'vue';


	const {
		proxy
	} = getCurrentInstance()
	const app = getApp();
	const userType = ref('1')
	const memberInfo = ref({})

	let proId;
	const svId = ref(null);

	const messageList = ref([])
	onShow(() => {
		if (app.globalData.isLogin) {
			init()
		} else {
			app.firstLoadCallback = () => {
				init()
			};
		}
	})
	onLoad(option => {
		if (option.scene) {
			proId = decodeURIComponent(option.scene);
		} else {
			proId = option.proId;
		}
	});
	function loginOut(){
		let path = '/pages/index/login';
		uni.reLaunch({
			url: path
		});
	}
	function goPath(path) {
		uni.navigateTo({
			url: path
		});
	}

	function gologin() {
		let path = '/pages/index/login';
		uni.navigateTo({
			url: path
		});
	}

	function goCenter() {
		let path = '/pages/usercenter/usercenter';
		uni.navigateTo({
			url: path
		});

	}

	function goAddVip() {
		let path = '/pages/personalVip/addVip';
		uni.navigateTo({
			url: path
		});
	}

	function goRenew() {
		let path = '/pages/personalVip/renew';
		uni.navigateTo({
			url: path
		});
	}

	function init() {
		uni.showLoading({
			title: '加载中'
		});
		loginServer.getMyOwnMemberInfo().then(res => {
			userType.value = app.globalData.userType
			memberInfo.value = app.globalData.memberInfo
			console.log(userType.value, app.globalData.authenticationStatus)
			if (userType.value != '1' && app.globalData.authenticationStatus != '2' && app.globalData
				.authenticationStatus !=
				'4') {
				// 注册引导
				// uni.navigateTo({
				// 	url: '/pages/index/perfect'
				// });
			} else {
				getMes()
			}
			uni.hideLoading();
		})


	}

	function getMes() {
		api.getMessage({
			pageNum: 1,
			pageSize: 10
		}).then(res => {
			if (res.rows && res.rows.length > 0)
				for (var d of res.rows) {
					switch (d.type) {
						case 30001:
							d.name = '你有一条会员缴费等待审批,点击去处理!'
							d.path = '/pages/personalVip/audit'
							break
						case 30002:
							d.name = '你有一条级位考试等待审批,点击去处理!'
							d.path = '/pages/level/approval'
							break
						case 30003:
							d.name = '你有一条段位考试等待审批,点击去处理!'
							d.path = '/pages/rank/approval'
							break
						case 30004:
							d.name = '你有一条会员调动等待审批,点击去处理!'
							d.path = '/pages/personalVip/mobillize'
							break
						case 30005:
							d.name = '你有一条团体会员认证等待审批,点击去处理!'
							d.path = '/pages/group/pay'
							break
						case 30006:
							d.name = '你有一条段位成绩等待审批,点击去处理!'
							d.path = '/pages/rank/scoreApproval'
							break
						case 40001:
							d.name = '你有一条级位申请待提交,点击去处理!'
							d.path = `/pages/level/apply?id=${d.eventId}`
							break
						case 40002:
							d.name = '你有一条段位申请待提交,点击去处理!'
							d.path = `/pages/rank/apply?id=${d.eventId}`
							break
						case 40003:
							d.name = '你有一条成绩维护的数据待提交,点击去处理!'
							d.path = `/pages/rank/score/modify?id=${d.eventId}`
							break
						case 50001:
							d.name = '你有一条新的个人会员申请,点击去处理!'
							d.path = '/pages/personalVip/approvalList'
							break
					}
				}
			messageList.value = res.rows
		})
	}

	function readMessage(item) {
		uni.navigateTo({
			url: item.path
		});
		api.reader({
			id: item.id
		}).then(res => {
			item.readFlag = '1'
		})
	}

	function goMsgList() {
		let path = '/pages/index/msgList';
		uni.navigateTo({
			url: path
		});
	}

	function goItem(item) {
		if (item.path) {
			let path = item.path
			// if (checkUserPhone(path)) {
			uni.navigateTo({
				url: item.path
			});
			// }
		} else {
			uni.showToast({
				title: `暂未开放`,
				icon: 'none'
			});
		}

	}
</script>
<style scope lang="scss">
	.loginOutIcon{position: absolute;right: 30rpx;top: 30rpx;
		image{width: 50rpx;height: 50rpx;}
	}
	.welcome {
		padding: 55rpx;
		line-height: 55rpx;
		font-size: 36rpx;
	}

	.flexbox {
		display: flex;
		justify-content: space-around;text-align: center;
		image{width: 90rpx;height: 90rpx;display: block;margin: auto;}
	}

	.image {
		width: 25px;
		height: 25px;
	}

	.grid-item-box {
		flex: 1;
		// position: relative;
		/* #ifndef APP-NVUE */
		display: flex;
		/* #endif */
		flex-direction: column;
		align-items: center;
		justify-content: center;
		padding: 15px 0;
	}

	.grid-item-box-row {
		flex: 1;
		// position: relative;
		/* #ifndef APP-NVUE */
		display: flex;
		/* #endif */
		flex-direction: row;
		align-items: center;
		justify-content: center;
		padding: 15px 0;
	}

	.grid-dot {
		position: absolute;
		top: 5px;
		right: 15px;
	}

	:deep(.uni-section) {
		background-color: transparent;
	}

	:deep(.uni-section .uni-section-header__content) {
		font-size: 36rpx;
		color: #29343C;
	}
</style>