<template>
	<view class="page bg-fff">
		<view class="size-22 color-ffb flex-rowl tip">
			<up-icon class="icon" name="error-circle" color="#FFBF60" size="36rpx"></up-icon>
			<text>完善服务信息和接单状态后，才可以开始接单哦！</text>
		</view>
		<view class="info">
			<view class="title mt24">
				基本资料
			</view>
			<view class="flex-colc">
				<button class="btn-avatar" :plain="true" :hairline="false" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
					<view class="flex-colc">
						<image class="head" :src="form.headImage" mode="widthFix"></image>
						<text class="size-28 color-999 mt10">点击更换头像</text>
					</view>
				</button>
			</view>
			<view class="form">
				<DForm ref="baseInfoRef" :list="state.baseInfoList" @input="handleSubmit"></DForm>
			</view>
		</view>

		<view class="info">
			<view class="title mt24 flex-rowl">
				展示信息
				<text class="size-22 color-ffb fw700">(重要)</text>
			</view>
			<view class="form">
				<DForm ref="displayInfoRef" :list="state.displayInfoList" @input="handleSubmit">
					<!-- 服务记录 -->
					<template v-slot:jilu>
						<view class="flex-rowr" @click="jumpToServeRecord">
							<text>{{ `${0}条` }}</text>
							<up-icon name="arrow-right" color="#999999" size="32rpx"></up-icon>
						</view>
					</template>
				</DForm>
			</view>
		</view>

		<view class="info">
			<view class="title mt24 flex-rowl">
				服务资料
			</view>
			<view class="form">
				<DForm ref="serveInfoRef" :list="state.serveInfoList" @input="handleSubmit">
					<!-- 服务宠物类型 -->
					<template v-slot:type>
						<view class="flex-rowr" @click="openTypeSelectPopup">
							<text>{{ typeDesc }}</text>
							<up-icon name="arrow-right" color="#999999" size="32rpx"></up-icon>
						</view>
					</template>
					<!-- 增值服务 -->
					<template v-slot:zenz>
						<view class="flex-rowr" @click="openServeSelectPopup">
							<text>{{ serveDesc }}</text>
							<up-icon name="arrow-right" color="#999999" size="32rpx"></up-icon>
						</view>
					</template>
				</DForm>
			</view>
		</view>

		<view class="size-24 color-ffb flex-rowc mt32 pb28">
			伴宠师查看服务酬劳、服务时长等规则
		</view>

		<popupTypeSelect ref="popupTypeSelectRef" v-model="form.type" ></popupTypeSelect>

		<popupServeSelect ref="popupServeSelectRef" v-model="form.serve" :options="serveOptions" ></popupServeSelect>

	</view>
</template>

<script setup>
	import { ref, reactive, computed } from "vue";
	import { onShow } from '@dcloudio/uni-app'
	import { ossUpload } from '@/utils/oss-upload/oss/index.js'

	import DForm from "@/components/dForm/index.vue"
	import popupTypeSelect from "./popupTypeSelect.vue";
	import popupServeSelect from "./popupServeSelect.vue";

	const form = reactive({
		headImage: null,
		type: [],
		serve: [],
	})

	const onChooseAvatar = (res) => {
		ossUpload(res.target.avatarUrl)
		.then(url => {
			form.headImage = url
		})
	}

	const baseInfoRef = ref()
	const displayInfoRef = ref()
	const serveInfoRef = ref()

	const state = reactive({
		baseInfoList: [{
				type: "input",
				label: "昵称",
				key: "name",
				placeholder: "请输入",
			},
			{
				type: "input",
				label: "手机号",
				key: "idCard",
				placeholder: "请输入",
			},
			{
				type: "select",
				label: "性别",
				key: "sex",
				placeholder: "请选择",
				options: [{
						name: "男"
					},
					{
						name: "女"
					}
				]
			}
		],
		displayInfoList: [{
				type: "input",
				label: "个人简介",
				key: "jianjie",
				placeholder: "请输入",
			},
			{
				type: "input",
				label: "养宠经验",
				unit: "年",
				key: "jingyan",
				placeholder: "请输入",
			},
			{
				type: "custom",
				label: "服务记录",
				key: "jilu",
				placeholder: "请选择",
				options: [{
						name: "男"
					},
					{
						name: "女"
					}
				]
			}
		],
		serveInfoList: [{
				type: "custom",
				label: "服务宠物类型",
				key: "type",
				placeholder: "请选择",
			},
			{
				type: "input",
				label: "基础服务",
				unit: "年",
				key: "base",
				placeholder: "宠物喂养上门遛狗",
			},
			{
				type: "custom",
				label: "增值服务",
				key: "zenz",
				placeholder: "请选择",
			}
		],
	})

	onShow(() => {
		// todo: fetch data and init data
	})

	const handleSubmit = () => {
		// todo
	}

	const jumpToServeRecord = () => {
		uni.navigateTo({
			url: "/otherPages/authentication/serve/record"
		})
	}

	const popupTypeSelectRef = ref()
	const openTypeSelectPopup = () => {
		popupTypeSelectRef.value.open()
	}
	const typeDesc = computed(() => {
		const typeCodes = form.type
		if (!typeCodes.length) {
			return '请选择'
		}
		
		let descArr = typeCodes.reduce((arr, item) => {
			switch(item) {
				case 'cat':
					arr.push('猫咪')
					break
				case 'dog':
					arr.push('狗狗')
					break
				case 'special-pet':
					arr.push('异宠')
					break
				default:
					break
			}

			return arr
		}, [])

		return descArr.join('、')
	})

	const popupServeSelectRef = ref()
	const serveOptions = reactive([
		{
			title: '陪玩/遛狗',
			desc: '外出遛狗或者陪玩，10mins/次',
			value: 0,
		},
		{
			title: '一天多次',
			desc: '每额外上门一次，收取基础服务费用的80%',
			value: 1,
		},
		{
			title: '护理',
			desc: '清洁宠物耳道、眼部、鼻部以及梳毛，10mins/次',
			value: 2,
		},
		{
			title: '提前熟悉',
			desc: '提前上门熟悉，购买此服务支持免费更换伴宠师1次',
			value: 3,
		},
		{
			title: '清洁',
			desc: '清洗砂盆或其他区域卫生，15mins/次',
			value: 4,
		},
		{
			title: '喂药',
			desc: '将药品喂入宠物口中',
			value: 5,
		},
		{
			title: '上药',
			desc: '将药品放入宠物水粮、或者涂抹在皮肤外表',
			value: 6,
		},
		{
			title: '打针',
			desc: '兽医上门打针，自备药品',
			value: 7,
		},
		{
			title: '在线问诊',
			desc: '在线问诊在职兽医健康问题',
			value: 8,
		},
		{
			title: '线下体察',
			desc: '上门外表体查，给予宠物健康咨询',
			value: 9,
		},
	])
	const openServeSelectPopup = () => {
		popupServeSelectRef.value.open()
	}
	const serveDesc = computed(() => {
		const serveCodes = form.serve
		if (!serveCodes.length) {
			return '请选择'
		}
		
		let descArr = serveCodes.reduce((arr, item) => {
			const desc = serveOptions.find(option => option.value === item)?.title

			arr.push(desc)

			return arr
		}, [])

		return descArr.join('、')
	})

</script>

<style lang="scss" scoped>

	.page {
		padding-top: 16rpx;

		.tip {
			background-color: rgba($color: #FFBF60, $alpha: 0.16);
			padding: 13rpx 22rpx;
			margin: 0 28rpx 37rpx 28rpx;

			.icon {
				margin-right: 15rpx;
			}
		}
	}

	.info {

		& + & {
			margin-top: 50rpx;
		}

	}
	
	.head {
		width: 165rpx;
    height: auto;	
		margin-top: 28rpx;
	}

	.btn-avatar {
		border: none;
		padding: 0;
	}

	.title {
		font-size: 30rpx;
		font-weight: 700;
		display: flex;
		align-items: center;
		padding: 0 40rpx;

		&:before {
			display: inline-block;
			content: "";
			width: 10rpx;
			border-radius: 5rpx;
			height: 33rpx;
			background-color: #FFBF60;
			margin-right: 7rpx;
		}
	}

	.form {
		padding: 0 22rpx;

		:deep(.form-item){
			padding-left: 24rpx;
			padding-right: 30rpx;
			box-sizing: border-box;
		}
	}
</style>