<template>
	<view>
		<!-- 顶部操作条 -->
		<cu-custom :bgColor="'bg-main-color'" :isBack="true">
			<block slot="backText">返回</block>
			<block slot="content">我的团队</block>
		</cu-custom>
		<!-- 团队成员 -->
		<view>
			<view class="bg-white padding bottom-border" v-for="(member, index) in members">
				<view class="flex justify-between">
					<view class="flex justify-start align-center" style="width: 40%;">
						<view class="cu-avatar round"
							:style="'background-image:url(' + member.workerLogoUrl + ');min-width: 64rpx'"></view>
						<view class="text-lg margin-left-sm">{{member.name}}</view>
					</view>
					<view class="flex justify-end align-center">
						<view v-if="Boolean(member.showEditInput)" :key="member.workerId"
							class="flex justify-end align-center margin-lr-sm">
							<input class="radius-input" type="text" v-model="member.workerName" placeholder="姓名备注"></input>
							<view class="text-lg margin-left-sm">
								<text class="cuIcon-roundcheckfill text-main-color" :data-index="index"
									@click="editWorkerName"></text>
								<text class="cuIcon-roundclosefill margin-left-xs" :data-index="index"
									@click="hideEditInput"></text>
							</view>
						</view>
						<view v-else class="flex justify-end margin-lr-sm" :key="member.workerId">
							<text>{{member.workerName}}</text>
							<text class="text-lg" :data-index="index" @click="showEditInput"><text
									class="cuIcon-edit margin-left-xs"></text></text>
						</view>
						<view class="text-xxl text-main-color" :data-phone="member.phone" @click="makePhoneCall">
							<view class="cuIcon-phone"></view>
						</view>
					</view>
				</view>
			</view>
		</view>
		<load-status-bar class="margin-bottom-with-bar" ref="loadStatusBar"></load-status-bar>
		<!-- 底部操作栏 -->
		<view class="cu-bar bg-white tabbar border shop fixed-bottom-bar">
			<view class="left-grid text-center" data-modal="takeRateSet" @click="showModalByRef('setTakeRateModal')">
				<view>设置扣点</view>
				<view v-if="curUserInfo.leaderTeamRate">(扣点：<text class="text-red">{{curUserInfo.leaderTeamRate}}%</text>)</view>
			</view>
			<view class="bg-main-color submit" @click="showModalByRef('inviteMasterModal')">邀请团队</view>
		</view>
		
		<set-take-rate ref="setTakeRateModal" :leaderTeamRate="curUserInfo.leaderTeamRate" :leaderTeamMoney="curUserInfo.leaderTeamMoney" @confirm="applySetTakeRate"></set-take-rate>
		<invite-master ref="inviteMasterModal" @confirm="inviteMaster"></invite-master>
	</view>
</template>

<script>
	import setTakeRate from '@/pages/area-proxy/modal/set-take-rate.vue';
	import inviteMaster from '@/pages/area-proxy/modal/invite-master.vue';
	import loadStatusBar from '@/components/custom-bar/load-status-bar.vue';
	
	export default {
		components: {
			inviteMaster,
			setTakeRate,
			loadStatusBar
		},
		data() {
			return {
				members: [],
				pageNum: 0,
				pageSize: 0,
				curUserInfo: null
			}
		},
		onLoad() {
			this.loadData();
		},
		methods: {
			async loadData() {
				// this.myTeamInfo = await this.$api.data('myTeamInfo');
				// this.members = this.myTeamInfo.members;
				this.curUserInfo = this.$request.getCurUserInfo();
				this.loadTeamPage();
			},
			async reloadData() {
				this.pageNum = 0;
				this.members = [];
				this.loadData();
			},
			async loadTeamPage(params = {}) {
				params.pageNum = this.pageNum;
				params.pageSize = this.$globalData.pageSize;
				this.$refs.loadStatusBar.showLoading();
				try {
					let res = await this.$request.getTeamPage(params);
					let rowsLength = res.rows.length;
					if (rowsLength > 0) {
						this.members = this.members.concat(res.rows);
						this.pageNum++;
						if (rowsLength === this.pageSize) {
							this.$refs.loadStatusBar.showLoadMore();
						}
					}
					this.$refs.loadStatusBar.showLoadOver();
				} catch (e) {
					console.error(e)
					this.$refs.loadStatusBar.showLoadErr();
				}
			},
			showEditInput(e) {
				let curIndex = e.currentTarget.dataset.index;
				this.$set(this.members, curIndex, Object.assign(this.members[curIndex], {
					showEditInput: true
				}))
			},
			hideEditInput(e) {
				let curIndex = e.currentTarget.dataset.index;
				this.$set(this.members, curIndex, Object.assign(this.members[curIndex], {
					showEditInput: false
				}))
			},
			async editWorkerName(e) {
				let curIndex = e.currentTarget.dataset.index;
				let memberInfo = this.members[curIndex];
				let res = await this.$request.updateWorkerTeam({
					workerTeamId: memberInfo.workerTeamId,
					workerName: memberInfo.workerName
				});
				if (res.code === 0) {
					uni.showToast({
						title: '修改成功',
						icon: 'success',
						mask: true
					});
					this.hideEditInput(e);
				}
			},
			makePhoneCall(e) {
				let phoneNum = e.currentTarget.dataset.phone;
				uni.makePhoneCall({
					phoneNumber: phoneNum
				})
			},
			showModalByRef(refName) {
				this.$refs[refName].showModal();
			},
			async applySetTakeRate(params) {
				let res = await this.$request.updateWorker(params);
				if (res.code === 0) {
					uni.showToast({
						title: '保存成功',
						icon: 'success',
						mask: true
					});
					this.reloadData();
				}
			},
			async inviteMaster(params) {
				let res = await this.$request.addTeam(params);
				if (res.code === 0) {
					uni.showToast({
						title: '邀请成功',
						icon: 'success',
						mask: true
					})
					this.reloadData();
				}
			}
		},
	}
</script>

<style scoped>
	.left-grid {
		width: 50%;
	}
	
	.bottom-border {
		border-bottom: 1rpx solid rgba(0, 0, 0, 0.1);
	}
</style>
