From f64155f6ad27c50451bb7d4a15f553bc72ead7de Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期五, 12 九月 2025 14:35:26 +0800
Subject: [PATCH] 年龄计算相关

---
 src/views/project/donatebaseinfo/index.vue |  268 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 196 insertions(+), 72 deletions(-)

diff --git a/src/views/project/donatebaseinfo/index.vue b/src/views/project/donatebaseinfo/index.vue
index 6345c11..01e076a 100644
--- a/src/views/project/donatebaseinfo/index.vue
+++ b/src/views/project/donatebaseinfo/index.vue
@@ -47,7 +47,7 @@
           </el-form-item>
         </el-col>
         <el-col :span="9">
-          <el-form-item label="鏃ユ湡">
+          <el-form-item label="妗堜緥鏃堕棿">
             <el-date-picker
               style="width: 100%"
               v-model="selecttime"
@@ -72,7 +72,7 @@
               size="small"
             >
               <el-option
-                v-for="dict in dict.type.sys_DonationStatus"
+                v-for="dict in dict.type.sys_donornode"
                 :key="dict.value"
                 :label="dict.label"
                 :value="dict.value"
@@ -96,6 +96,22 @@
             </el-select>
           </el-form-item>
         </el-col>
+        <el-col :span="5">
+          <el-form-item label="鏄惁缁堟">
+            <el-select
+              v-model="queryParams.terminationCase"
+              placeholder="璇烽�夋嫨鐘舵��"
+            >
+              <el-option
+                v-for="item in terminationCaselist"
+                :key="item.value"
+                :label="item.name"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
         <el-col :span="9">
           <el-form-item label="绫嶈疮">
             <div>
@@ -106,6 +122,8 @@
             </div>
           </el-form-item>
         </el-col>
+      </el-row>
+      <el-row>
         <el-col :span="4">
           <el-form-item>
             <el-button
@@ -199,7 +217,19 @@
           />
         </template>
       </el-table-column>
-      <el-table-column label="骞撮緞" align="center" prop="age" width="100" />
+      <el-table-column label="骞撮緞" align="center" prop="age" width="100">
+        <template slot-scope="scope">
+           {{
+            `${
+              scope.row.age && scope.row.age !== 0 ? `${scope.row.age}${scope.row.ageunit?scope.row.ageunit:''}` : ""
+            } ${
+              scope.row.age2 && scope.row.age2 !== 0
+                ? `${scope.row.age2}${scope.row.ageunit2}`
+                : ""
+            }`.trim()
+          }}
+        </template>
+      </el-table-column>
       <el-table-column
         label="鍖荤枟鏈烘瀯"
         align="center"
@@ -233,7 +263,7 @@
         prop="reportername"
         width="100"
       />
-      <!-- 
+      <!--
          <el-table-column
         label="鐜版墍鍦ㄥ湴甯�"
         align="center"
@@ -250,7 +280,7 @@
          <dict-tag
             :options="dict.type.sys_DonationStatus"
             :value="scope.row.recordstate"
-          />          
+          />
         </template>
       </el-table-column>
       -->
@@ -267,7 +297,7 @@
               :value="scope.row.workflow"
             />
           </div>
-          <div v-else>浠诲姟涓</div>
+          <div v-else>浠诲姟缁堟</div>
         </template>
       </el-table-column>
       <el-table-column
@@ -294,9 +324,9 @@
             v-hasPermi="['project:donatebaseinfo:remove']"
             >鍒犻櫎</el-button
           >
-          <!-- 
+          <!--
             <el-button v-if="scope.row.recordstate == 0 || scope.row.recordstate == 3" size="mini" type="text"
-            icon="el-icon-thumb" @click="handleapproval(scope.row)">鎻愪氦</el-button>        
+            icon="el-icon-thumb" @click="handleapproval(scope.row)">鎻愪氦</el-button>
            -->
           <el-button
             size="mini"
@@ -305,9 +335,9 @@
             @click="handledownload(scope.row)"
             >涓嬭浇</el-button
           >
-          <!-- 
+          <!--
             <el-button size="mini" type="text" icon="el-icon-edit" @click="handletermination(scope.row)"
-            v-hasPermi="['project:donatebaseinfo:edit']">{{ scope.row.recordstate == 99 ? "鎭㈠": "缁堟"  }}</el-button> 
+            v-hasPermi="['project:donatebaseinfo:edit']">{{ scope.row.recordstate == 99 ? "鎭㈠": "缁堟"  }}</el-button>
           -->
         </template>
       </el-table-column>
@@ -439,8 +469,15 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="骞撮緞" prop="age">
-                <el-input v-model="form.age" placeholder="璇疯緭鍏ュ勾榫�" />
+              <el-form-item label="瀛﹀巻" prop="education">
+                <el-select v-model="form.education" placeholder="璇烽�夋嫨瀛﹀巻">
+                  <el-option
+                    v-for="dict in dict.type.sys_education"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  ></el-option>
+                </el-select>
               </el-form-item>
             </el-col>
           </el-row>
@@ -453,10 +490,19 @@
                   v-model="form.birthday"
                   type="date"
                   style="width: 174px"
-                  value-format="yyyy-MM-dd HH:mm:ss"
+                  @change="calculateAge"
+                  value-format="yyyy-MM-dd"
                   placeholder="閫夋嫨鍑虹敓鏃ユ湡"
                 >
                 </el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <!-- <el-form-item label="骞撮緞" prop="age">
+                <el-input v-model="form.age" placeholder="璇疯緭鍏ュ勾榫�" />
+              </el-form-item> -->
+              <el-form-item label="骞撮緞" prop="age">
+                <el-input v-model="form.andAge" disabled> </el-input>
               </el-form-item>
             </el-col>
             <el-col :span="6">
@@ -464,18 +510,6 @@
                 <el-select v-model="form.occupation" placeholder="璇烽�夋嫨鑱屼笟">
                   <el-option
                     v-for="dict in dict.type.sys_occupation"
-                    :key="dict.value"
-                    :label="dict.label"
-                    :value="dict.value"
-                  ></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="6">
-              <el-form-item label="瀛﹀巻" prop="education">
-                <el-select v-model="form.education" placeholder="璇烽�夋嫨瀛﹀巻">
-                  <el-option
-                    v-for="dict in dict.type.sys_education"
                     :key="dict.value"
                     :label="dict.label"
                     :value="dict.value"
@@ -888,8 +922,8 @@
   updateDonatebaseinfo,
   exportDonatebaseinfo,
   downloadbaseinfo,
+  getDonationNumber,
   getdonatorno
-  // exportProvincemessage,
 } from "@/api/project/donatebaseinfo";
 import Li_area_select from "@/components/Address";
 import OrgSelecter from "@/views/project/components/orgselect";
@@ -965,6 +999,10 @@
         shi: "",
         qu: ""
       },
+      terminationCaselist: [
+        { name: "缁堟鐘舵��", value: 1 },
+        { name: "姝e父鐘舵��", value: 0 }
+      ],
       // 閬僵灞�
       loading: true,
       // 瀵煎嚭閬僵灞�
@@ -1019,7 +1057,11 @@
         sex: null,
         idcardtype: null,
         idcardno: null,
-        age: null,
+        age: null, // 骞撮緞锛堝勾锛�
+        andAge: "",
+        ageunit: "骞�", // 鍗曚綅锛岄�氬父鍥哄畾涓衡�滃勾鈥�
+        age2: null, // 骞撮緞锛堟湀鎴栧ぉ锛�
+        ageunit2: "鏈�", // 鍗曚綅锛屾牴鎹绠楀喅瀹氭槸鈥滄湀鈥濊繕鏄�滃ぉ鈥�
         ageunit: null,
         birthday: null,
         phone: null,
@@ -1058,7 +1100,7 @@
         diagnosisname: null,
         bloodtype: "0",
         inpatientno: null,
-        rhyin: '0',
+        rhyin: "0",
         donorno: null,
         donationcategory: null,
         illnessoverview: null,
@@ -1122,7 +1164,7 @@
           { required: true, message: "璇锋纭緭鍏ヨ瘉浠跺彿鐮�", trigger: "blur" }
         ],
         sex: [{ required: true, message: "鎬у埆涓嶈兘涓虹┖", trigger: "blur" }],
-        age: [{ required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" }],
+        // age: [{ required: true, message: "璇疯緭鍏ュ勾榫�", trigger: "blur" }],
         treatmenthospitalno: [
           { required: true, message: "璇烽�夋嫨鍖荤枟鏈烘瀯", trigger: "blur" }
         ],
@@ -1201,7 +1243,12 @@
       ]
     };
   },
-  created() {},
+  created() {
+    if (sessionStorage.getItem("donatebaseinfo")) {
+      this.queryParams = JSON.parse(sessionStorage.getItem("donatebaseinfo"));
+      console.log(this.queryParams, "queryParams");
+    }
+  },
 
   mounted(e) {
     // let idd = this.$route.query.userid
@@ -1216,14 +1263,14 @@
     if (this.$route.params.starttime != null && this.$route.params.endtime) {
       this.selecttime = [
         this.$moment(this.$route.params.starttime).format("YYYY-MM-DD"),
-        this.$moment(this.$route.params.endtime)
-          .add(-1, "month")
-          .format("YYYY-MM-DD")
+        this.$moment(this.$route.params.endtime).format("YYYY-MM-DD")
       ];
     }
     if (this.$route.params.reporterno != "") {
       this.reporterno = this.$route.params.reporterno;
     }
+    this.queryParams.terminationcase = this.$route.params.terminationcase;
+
     if (
       this.$route.params.tempRecordState != "" &&
       this.$route.params.tempRecordState != undefined
@@ -1260,7 +1307,83 @@
         this.currentuser = response.data;
       });
     },
+    calculateAge(birthday) {
+      if (!birthday) {
+        // 娓呯┖骞撮緞瀛楁
+        this.form.age = null;
+        this.form.age2 = null;
+        // this.form.age3 = null;
+        return;
+      }
 
+      const birthDate = new Date(birthday);
+      const today = new Date();
+
+      // 璁$畻鎬绘湀浠藉樊寮�
+      let yearDiff = today.getFullYear() - birthDate.getFullYear();
+      let monthDiff = today.getMonth() - birthDate.getMonth();
+      let dayDiff = today.getDate() - birthDate.getDate();
+
+      // 濡傛灉褰撳墠鏃ユ湡鐨勫ぉ鏁板皬浜庡嚭鐢熸棩鏈熺殑澶╂暟锛屽垯鍊熸湀
+      if (dayDiff < 0) {
+        monthDiff--;
+        // 鑾峰彇涓婁釜鏈堢殑鏈�鍚庝竴澶�
+        const lastDayOfMonth = new Date(
+          today.getFullYear(),
+          today.getMonth(),
+          0
+        ).getDate();
+        dayDiff += lastDayOfMonth;
+      }
+
+      // 濡傛灉鏈堜唤宸负璐燂紝鍒欏�熷勾
+      if (monthDiff < 0) {
+        yearDiff--;
+        monthDiff += 12;
+      }
+
+      // 璧嬪�煎勾閮ㄥ垎
+      this.form.age = yearDiff;
+      this.form.ageunit = "宀�";
+
+      // 璧嬪�兼湀閮ㄥ垎锛堟垨鑰呮偍涔熷彲浠ラ�夋嫨鏄剧ず鍓╀綑鐨勫ぉ鏁帮級
+      this.form.age2 = monthDiff;
+      this.form.ageunit2 = "鏈�";
+
+      // 濡傛灉鎮ㄨ繕鎯虫樉绀哄ぉ鏁�
+      // this.form.age3 = dayDiff;
+      // this.form.ageunit3 = '澶�';
+
+      // 濡傛灉骞撮緞灏忎簬1宀侊紝鍙兘鎮ㄥ笇鏈涚敤鏈堟垨澶╂潵琛ㄧず涓诲勾榫�
+      // 杩欓噷鏄竴涓畝鍗曠殑閫昏緫锛屾偍鍙互鏍规嵁闇�姹傝皟鏁�
+      if (yearDiff === 0) {
+        if (monthDiff === 0) {
+          // 灏忎簬1涓湀锛岀敤澶╄〃绀�
+          this.form.age = dayDiff;
+          this.form.ageunit = "澶�";
+          this.form.age2 = null; // 娓呯┖绗簩瀛楁
+          // this.form.age3 = null;
+        } else {
+          // 灏忎簬1骞达紝鐢ㄦ湀琛ㄧず
+          this.form.age = monthDiff;
+          this.form.ageunit = "鏈�";
+          this.form.age2 = dayDiff; // 绗簩瀛楁鏄剧ず澶�
+          this.form.ageunit2 = "澶�";
+        }
+      }
+
+      this.form.andAge = `${
+        this.form.age && this.form.age !== 0
+          ? `${this.form.age}${this.form.ageunit}`
+          : ""
+      } ${
+        this.form.age2 && this.form.age2 !== 0
+          ? `${this.form.age2}${this.form.ageunit2}`
+          : ""
+      }`.trim();
+      this.$forceUpdate(); // 寮哄埗鏇存柊
+      console.log(this.form.andAge);
+    },
     LoadReportList() {
       listDonatebaseinfo().then(res => {
         let list = res.rows;
@@ -1423,7 +1546,8 @@
           // 璧嬪�肩粰琛ㄦ牸
           this.form.sex = sex;
           this.form.birthday = birthday;
-          this.form.age = age;
+          this.calculateAge(birthday);
+          // this.form.age = age;
         } else {
         }
       } catch {}
@@ -1458,18 +1582,15 @@
     },
 
     /** 鏌ヨ鎹愮尞鍩虹鍒楄〃 */
-    getList(e) {
+    getList() {
       this.loading = true;
       this.queryParams.params = {};
-      // if (null != this.daterangeReporttime && "" != this.daterangeReporttime) {
-      //   this.queryParams.params["beginReporttime"] =
-      //     this.daterangeReporttime[0];
-      //   this.queryParams.params["endReporttime"] = this.daterangeReporttime[1];
-      // }
+      sessionStorage.removeItem("donatebaseinfo");
+      sessionStorage.setItem(
+        "donatebaseinfo",
+        JSON.stringify(this.queryParams)
+      );
       // 璺宠浆鏃剁殑榛樿杩涘害
-      if (e != null && e != undefined && !isNaN(e)) {
-        this.queryParams.recordstate = e;
-      }
 
       if (this.reportervalue != "") {
         this.queryParams.reportno = this.reportervalue;
@@ -1488,6 +1609,8 @@
       this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng();
       this.queryParams.residencecity = this.$refs.areaSelect.getShi();
       this.queryParams.residencetown = this.$refs.areaSelect.getQu();
+      console.log(this.queryParams);
+
       listDonatebaseinfo(this.queryParams).then(response => {
         this.donatebaseinfoList = response.rows;
         //console.log("listDonatebaseinfo", response.rows);
@@ -1705,7 +1828,6 @@
       const id = row.id || this.ids;
       getDonatebaseinfo(id).then(response => {
         this.form = response.data;
-
         this.form.diseasetype = this.form.diseasetype.split(",");
         this.form.infectious = this.form.infectious.split(",");
         this.form.selfwill = this.form.selfwill.split(",");
@@ -1732,8 +1854,8 @@
       console.log(this.form);
       this.$refs["form"].validate(valid => {
         if (valid) {
-          const date = {...this.form};
-          console.log(date,'date');
+          const date = { ...this.form };
+          console.log(date, "date");
           this.form.birthday = this.$moment(this.form.birthday).format(
             "YYYY-MM-DD HH:mm:ss"
           );
@@ -1781,32 +1903,28 @@
             this.form.redorganname = this.form.redorganno;
           }
 
-
-          
-            this.form.workflow = 0;
-            this.form.recordstate = 0;
-            addDonatebaseinfo(this.form).then(res => {
-              console.log('22');
-              console.log(res.code);
-              if (res.code == 200) {
-                this.$modal.msgSuccess("鏂板鎴愬姛");
-                this.$router.push({
-                  path: "/organ/donationdetails/",
-                  query: {
-                    id: res.data.id,
-                    organType: "edit"
-                  }
-                });
-                this.open = false;
-              } else {
-                console.log('1');
-                this.form = date;
-                console.log(this.form,'form');
-                this.$modal.msgError("鏂板澶辫触锛�" + res.msg);
-
-              }
-            });
-          
+          this.form.workflow = 0;
+          this.form.recordstate = 0;
+          addDonatebaseinfo(this.form).then(res => {
+            console.log("22");
+            console.log(res.code);
+            if (res.code == 200) {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.$router.push({
+                path: "/organ/donationdetails/",
+                query: {
+                  id: res.data.id,
+                  organType: "edit"
+                }
+              });
+              this.open = false;
+            } else {
+              console.log("1");
+              this.form = date;
+              console.log(this.form, "form");
+              this.$modal.msgError("鏂板澶辫触锛�" + res.msg);
+            }
+          });
         }
       });
     },
@@ -1906,4 +2024,10 @@
   margin: auto !important;
   padding-bottom: 0px !important;
 }
+::v-deep .el-input.is-disabled .el-input__inner {
+  background-color: #fff;
+  border-color: #dfe4ed;
+  color: #000;
+  cursor: not-allowed;
+}
 </style>

--
Gitblit v1.9.3