<template>
	<view class="container">
		<page-title>年度计划录入</page-title>

		<view class="cards-list">
			<view class="card only-card">
				<!-- 项目名称 -->
				<view class="card-item first-card-item">
					<view class="card-item-name">项目名称</view>
					<view class="card-item-input">{{BindName || "--"}}</view>
				</view>

				<!-- 年度 -->
				<view class="card-item" @click="yearShowChoose()">
					<view class="card-item-name">年度</view>
					<view class="card-item-description">
						<view v-if="Bindyear">{{Bindyear || "--"}}</view>
						<view v-else class="remind-text">请选择年度</view>
						<u-icon name="arrow-right" color="#343437" size="16" customStyle="margin-left:10rpx"></u-icon>
					</view>
				</view>

				<!-- 月份标题 -->
				<view class="card-name" style="margin-top: 36rpx;">
					<view class="card-name-title">
						<text class="card-name-description">月份</text>
					</view>

					<view class="card-name-title">
						<text class="card-name-description">资金(万元)</text>
					</view>
				</view>

				<!-- 月份值 -->
				<view class="card-item" v-for="(item,index) in pageForm" :key="index">
					<view class="card-item-name">{{item.ymonth}}月</view>
					<input v-model="item.amt" type="number" class="card-item-input" placeholder="请填写金额"
						placeholder-style="color: #D8D8D8" maxlength="20" :disabled="banSubmit" />
				</view>
			</view>

			<view class="confirm-btn" :class="banSubmit?'ban-submit':''" @click="confirmParams()">保存</view>
		</view>

		<!-- 年度选择 -->
		<u-picker :show="yearShow" :defaultIndex="defaultIndex" :columns="yearColumns" @confirm="yearClose"
			@cancel="yearClose" @close="yearClose" closeOnClickOverlay></u-picker>
	</view>
</template>

<script setup>
	import config from '@/config.js'

	import {
		ref
	} from 'vue'

	import {
		onLoad
	} from "@dcloudio/uni-app"

	import {
		getYearlyById,
		saveYearly
	} from "@/api/work/weeklyAndMonthly.js"

	let Bindyear = ref(null);
	let BindName = ref(null);
	let BindSubId = ref(null);

	// =============================年度选择
	let defaultIndex = ref(0)
	let yearShow = ref(false);

	let yearColumns = ref([
		["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013",
			"2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026",
			"2027", "2028", "2029", "2030", "2031", "2032", "2033"
		]
	])

	function yearShowChoose() {
		yearShow.value = true;
	}

	function yearClose(e) {
		if (e) {
			Bindyear.value = e.value[0];
			getYearlyDetail({
				subId: BindSubId.value,
				year: e.value[0]
			})
			banSubmit.value = false;
		}

		yearShow.value = false
	}

	let pageForm = ref([{
			name: "01",
			amt: null
		},
		{
			name: "02",
			amt: null
		},
		{
			name: "03",
			amt: null
		},
		{
			name: "04",
			amt: null
		},
		{
			name: "05",
			amt: null
		},
		{
			name: "06",
			amt: null
		},
		{
			name: "07",
			amt: null
		},
		{
			name: "08",
			amt: null
		},
		{
			name: "09",
			amt: null
		},
		{
			name: "10",
			amt: null
		},
		{
			name: "11",
			amt: null
		},
		{
			name: "12",
			amt: null
		},
	])

	// 获取数据
	function getYearlyDetail(sendParams) {
		let params = {
			subId: sendParams.subId,
			year: sendParams.year
		}

		getYearlyById(params).then(res => {
			pageForm.value = res.data.list
		})
	}

	let banSubmit = ref(false);
	let isSubmit = ref(false);

	// 确认数据
	function confirmParams() {
		if (banSubmit.value || isSubmit.value) return;

		uni.showModal({
			title: "保存确认",
			content: "确定要保存该年度计划录入吗?",
			success: function(res) {
				if (res.confirm) {
					let params = {
						subId: BindSubId.value,
						amtPlans: pageForm.value
					}

					let paramsFormat = JSON.parse(JSON.stringify(params))

					paramsFormat.amtPlans.forEach(item => {
						item.ymonth = `${Bindyear.value}${item.ymonth}`
					})
					isSubmit.value = true;
					saveYearly(paramsFormat).then(res => {
						if (res.code === 200) {
							isSubmit.value = false;
							banSubmit.value = true;
							uni.showToast({
								title: "保存成功",
								icon: "success",
								duration: 2000
							})
						}
					}).catch(() => {
						isSubmit.value = false;
						uni.showToast({
							title: "保存失败",
							icon: "error",
							duration: 2000
						})
					})
				} else if (res.cancel) {
					uni.showToast({
						title: "取消保存",
						icon: "none",
						duration: 2000,
					})
				}
			},
		})
	}

	onLoad((options) => {
		Bindyear.value = options.year;
		defaultIndex.value = [Number(Bindyear.value) - 2000]
		BindName.value = options.title;
		BindSubId.value = options.subId;
		getYearlyDetail(options)
	})
</script>

<style lang="scss" scoped>
</style>