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