From 393c7cf845d53e305ccc7ef714cf34761c1b7e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=88=90=E6=B3=A2?= <zhouchengbo@wmdigit.com> Date: Sat, 14 Sep 2024 10:10:53 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/home/calc_retire copy.vue | 165 ++++++++++++++++++++++++++++ src/views/home/calc_retire.vue | 10 +- 2 files changed, 170 insertions(+), 5 deletions(-) create mode 100644 src/views/home/calc_retire copy.vue diff --git a/src/views/home/calc_retire copy.vue b/src/views/home/calc_retire copy.vue new file mode 100644 index 0000000..10d2b7a --- /dev/null +++ b/src/views/home/calc_retire copy.vue @@ -0,0 +1,165 @@ +<script setup lang="ts"> +import text2videoService from "@/api/service/text2videoService"; +import utils from "@/utils/utils"; +import { + ElMessage, genFileId, + type UploadInstance, + type UploadProps, + type UploadRawFile +} from "element-plus"; +import { nextTick, onMounted, reactive, ref } from "vue"; + +const debug = ref(import.meta.env.MODE === 'production' ? false : true); +// const debug = ref(false); +const loading = ref(false); +const form = reactive({ + task_id: "", + birth: "1993-08", + sex_value: "女50å²é€€ä¼‘", + sex_option: [ + { + value: 'ç”·', + label: 'ç”·', + }, + { + value: '女50å²é€€ä¼‘', + label: '女(普通)50å²é€€', + }, + { + value: '女55å²é€€ä¼‘', + label: '女(管ç†ã€çµæ´»å°±ä¸šï¼‰55å²é€€', + }, + ], + retire_age: "", + retire_date: "", + how_long_to_retire: "", +}); + +onMounted(() => { + // åˆå§‹åŒ–task_id + form.task_id = utils.genDateTimeStr(); + console.log('页é¢åŠ è½½ï¼Œtask_id=', form.task_id); + document.title = "延迟退休年龄计算器"; +}); + +const calculateRetirement = (birthStr: string, gender: string) => { + console.log(birthStr) + let parts = birthStr.split('-'); // 使用'-'ä½œä¸ºåˆ†éš”ç¬¦æ¥æ‹†åˆ†å—符串 + let birthYear = parseInt(parts[0], 10); // 年份 + let birthMonth = parseInt(parts[1], 10); // 月份 + + const currentYear = new Date().getFullYear(); + const birthDate = new Date(`${birthYear}-${birthMonth < 10 ? '0' + birthMonth : birthMonth}-01`); + let retirementAge, delayMonths, retirementYear, retirementMonth; + + if (gender === 'ç”·') { + retirementAge = 60; + delayMonths = Math.floor((currentYear - birthYear) / 4) * 4; + } else if (gender === '女50å²é€€ä¼‘') { + retirementAge = 50; + delayMonths = Math.floor((currentYear - birthYear) / 2) * 2; + } else if (gender === '女55å²é€€ä¼‘') { + retirementAge = 55; + delayMonths = Math.floor((currentYear - birthYear) / 4) * 4; + } else { + console.log("Invalid gender input. Please choose 'ç”·', '女50å²é€€ä¼‘', or '女55å²é€€ä¼‘'."); + return; + } + + if (birthYear >= 1977 && gender == 'ç”·') { + delayMonths = 36; + } else if (birthYear >= 1985 && gender == '女50å²é€€ä¼‘') { + delayMonths = 60; + } else if (birthYear >= 1982 && gender == '女55å²é€€ä¼‘') { + delayMonths = 36; + } + + retirementAge += Math.floor(delayMonths / 12); + console.log(retirementAge, delayMonths) + + + let retirementDate = new Date(birthDate); + console.log(retirementDate) + + retirementDate.setFullYear(retirementDate.getFullYear() + retirementAge); + retirementDate.setMonth(retirementDate.getMonth() + delayMonths % 12); + console.log(retirementDate) + + retirementYear = retirementDate.getFullYear(); + retirementMonth = retirementDate.getMonth() + 1; // getMonth() returns 0-11 + console.log(retirementYear, retirementMonth) + + let yearsUntilRetirement = retirementDate.getFullYear() - currentYear -1; + let monthsUntilRetirement = (retirementDate.getMonth() - new Date().getMonth() + 12) % 12 -1; + if (monthsUntilRetirement < 0) { + yearsUntilRetirement--; + monthsUntilRetirement += 12; + } + + form.retire_age = `${retirementAge}å²+${delayMonths % 12}个月`, + form.retire_date = `${retirementYear}-${retirementMonth < 10 ? '0' + retirementMonth : retirementMonth}-01`, + form.how_long_to_retire = `${yearsUntilRetirement}å¹´${monthsUntilRetirement}个月` + +}; +</script> + +<!-- ============================================================================================================ --> +<!-- ============================================================================================================ --> +<!-- ============================================================================================================ --> + +<template> + <main class="home-container"> + <!-- æ ‡é¢˜ --> + <el-divider content-position="left">延迟退休年龄计算器</el-divider> + <el-form :model="form" label-width="114px" v-loading="loading"> + <!-- 输入出生年月 --> + <el-form-item label="出生年月"> + <el-date-picker + v-model="form.birth" + type="month" + placeholder="Pick a month" + format="YYYY-MM" + value-format="YYYY-MM" + /> + </el-form-item> + <!-- 性别 --> + <el-form-item label="性别"> + <el-select + v-model="form.sex_value" + placeholder="Select" + size="large" + style="width: 240px" + > + <el-option + v-for="item in form.sex_option" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <!-- 计算 --> + <el-form-item> + <el-button type="primary" @click="calculateRetirement(form.birth, form.sex_value)" + >开始计算</el-button + > + </el-form-item> + <!-- 结果 --> + <el-form-item label="您的退休年龄"> + <el-text class="mx-1">{{ form.retire_age }}</el-text> + </el-form-item> + <el-form-item label="您的退休日期"> + <el-text class="mx-1">{{ form.retire_date }}</el-text> + </el-form-item> + <el-form-item label="è·ç¦»é€€ä¼‘还有"> + <el-text class="mx-1">{{ form.how_long_to_retire }}</el-text> + </el-form-item> + </el-form> + </main> +</template> + +<style lang="scss" scoped> +.home-container { + width: 100%; +} +</style> diff --git a/src/views/home/calc_retire.vue b/src/views/home/calc_retire.vue index 10d2b7a..66faaf2 100644 --- a/src/views/home/calc_retire.vue +++ b/src/views/home/calc_retire.vue @@ -14,8 +14,8 @@ const debug = ref(import.meta.env.MODE === 'production' ? false : true); const loading = ref(false); const form = reactive({ task_id: "", - birth: "1993-08", - sex_value: "女50å²é€€ä¼‘", + birth: "1965-03", + sex_value: "ç”·", sex_option: [ { value: 'ç”·', @@ -54,13 +54,13 @@ const calculateRetirement = (birthStr: string, gender: string) => { if (gender === 'ç”·') { retirementAge = 60; - delayMonths = Math.floor((currentYear - birthYear) / 4) * 4; + delayMonths = Math.ceil(((birthYear - 1965)*12 + birthMonth) / 4); } else if (gender === '女50å²é€€ä¼‘') { retirementAge = 50; - delayMonths = Math.floor((currentYear - birthYear) / 2) * 2; + delayMonths = Math.ceil(((birthYear - 1975)*12 + birthMonth) / 2); } else if (gender === '女55å²é€€ä¼‘') { retirementAge = 55; - delayMonths = Math.floor((currentYear - birthYear) / 4) * 4; + delayMonths = Math.ceil(((birthYear - 1970)*12 + birthMonth) / 4); } else { console.log("Invalid gender input. Please choose 'ç”·', '女50å²é€€ä¼‘', or '女55å²é€€ä¼‘'."); return; -- 2.18.1