From 4b8f0d1cb618b00303502681159b0ad6bc4404a6 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 24 三月 2026 14:54:40 +0800
Subject: [PATCH] fix: 真机运行时,日期组件默认当前日期

---
 src/pages/consumablesLogistics/stockReport/index.vue |  125 +++++++++++++++++++++++++++++++++--------
 1 files changed, 99 insertions(+), 26 deletions(-)

diff --git a/src/pages/consumablesLogistics/stockReport/index.vue b/src/pages/consumablesLogistics/stockReport/index.vue
index b596f21..175c151 100644
--- a/src/pages/consumablesLogistics/stockReport/index.vue
+++ b/src/pages/consumablesLogistics/stockReport/index.vue
@@ -12,6 +12,37 @@
         <text>{{ t.label }}</text>
       </view>
     </view>
+    <!-- 鏃堕棿閫夋嫨鍖哄煙 -->
+    <view class="search-section">
+      <!-- 鏃ユ姤锛氶�夋嫨骞存湀鏃� -->
+      <view v-if="searchForm.reportType === 'daily'" class="search-row">
+        <view class="date-picker" @click="openDatePicker('single')">
+          <text>{{ searchForm.singleDate || '璇烽�夋嫨鏃ユ湡' }}</text>
+        </view>
+      </view>
+
+      <!-- 鏈堟姤锛氶�夋嫨骞存湀 -->
+      <view v-else-if="searchForm.reportType === 'monthly'" class="search-row">
+        <view class="date-picker" @click="openDatePicker('startMonth')">
+          <text>{{ searchForm.startMonth || '璇烽�夋嫨寮�濮嬫湀浠�' }}</text>
+        </view>
+        ~
+        <view class="date-picker" @click="openDatePicker('endMonth')">
+          <text>{{ searchForm.endMonth || '璇烽�夋嫨缁撴潫鏈堜唤' }}</text>
+        </view>
+      </view>
+
+      <!-- 杩涘嚭瀛橈細閫夋嫨骞存湀鏃ユ椂闂磋寖鍥� -->
+      <view v-else-if="searchForm.reportType === 'inout'" class="search-row">
+        <view class="date-picker" @click="openDatePicker('startDate')">
+          <text>{{ searchForm.startDate || '璇烽�夋嫨寮�濮嬫棩鏈�' }}</text>
+        </view>
+        ~
+        <view class="date-picker" @click="openDatePicker('endDate')">
+          <text>{{ searchForm.endDate || '璇烽�夋嫨缁撴潫鏃ユ湡' }}</text>
+        </view>
+      </view>
+    </view>
     <view class="list-section">
       <view class="section-header">
         <text class="table-title">{{ tableTitle }}</text>
@@ -43,14 +74,13 @@
       </view>
       <view v-else class="no-data">鏆傛棤鏁版嵁</view>
     </view>
-    <up-popup :show="showDatePicker" mode="bottom" @close="showDatePicker = false">
-      <up-datetime-picker
-        v-model="dateValue"
-        :mode="datePickerMode"
-        @confirm="onDateConfirm"
-        @cancel="showDatePicker = false"
-      />
-    </up-popup>
+    <up-datetime-picker
+      v-model="dateValue"
+      :mode="datePickerMode"
+      :show="showDatePicker"
+      @confirm="onDateConfirm"
+      @cancel="showDatePicker = false"
+    />
   </view>
 </template>
 
@@ -58,7 +88,6 @@
 import { ref, reactive, toRefs, computed, watch } from "vue";
 import dayjs from "dayjs";
 import PageHeader from "@/components/PageHeader.vue";
-import { formatDateToYMD } from "@/utils/ruoyi";
 import { onShow, onReachBottom } from "@dcloudio/uni-app";
 import { getConsumablesInReportList, getConsumablesInInAndOutReportList } from "@/api/consumablesLogistics/consumablesIn.js";
 import {
@@ -88,7 +117,7 @@
 const { searchForm } = toRefs(data);
 
 const datePickerMode = computed(() => {
-  if (datePickerTarget.value === "startMonth" || datePickerTarget.value === "endMonth") return "month";
+  if (datePickerTarget.value === "startMonth" || datePickerTarget.value === "endMonth") return "year-month";
   return "date";
 });
 
@@ -106,11 +135,8 @@
   if (searchForm.value.reportType === "daily") {
     p.reportDate = searchForm.value.singleDate;
   } else if (searchForm.value.reportType === "monthly") {
-    p.startMonth = searchForm.value.startMonth;
-    p.endMonth = searchForm.value.endMonth;
-  } else if (searchForm.value.reportType === "monthly") {
-    p.startMonth = searchForm.value.startMonth;
-    p.endMonth = searchForm.value.endMonth;
+    p.startMonth = searchForm.value.startMonth ? `${searchForm.value.startMonth}-01` : "";
+    p.endMonth = searchForm.value.endMonth ? `${searchForm.value.endMonth}-01` : "";
   } else {
     p.startDate = searchForm.value.startDate;
     p.endDate = searchForm.value.endDate;
@@ -178,24 +204,68 @@
   getList();
 };
 
+const toPickerTimestamp = (val, target) => {
+  if (!val) return Date.now();
+  let parsed;
+  if (target === "startMonth" || target === "endMonth") {
+    parsed = dayjs(`${val}-01`).valueOf();
+  } else {
+    parsed = dayjs(val).valueOf();
+  }
+  return Number.isNaN(parsed) ? Date.now() : parsed;
+};
+
+const formatPickerDate = (value, isMonth) => {
+  const parsed = dayjs(value);
+  if (!parsed.isValid()) return "";
+  return parsed.format(isMonth ? "YYYY-MM" : "YYYY-MM-DD");
+};
+
 const openDatePicker = (target) => {
   datePickerTarget.value = target;
   let val = "";
   if (target === "single") val = searchForm.value.singleDate;
   else if (target === "startMonth") val = searchForm.value.startMonth;
   else if (target === "endMonth") val = searchForm.value.endMonth;
-  dateValue.value = val ? new Date(val).getTime() : Date.now();
+  else if (target === "startDate") val = searchForm.value.startDate;
+  else if (target === "endDate") val = searchForm.value.endDate;
+  dateValue.value = toPickerTimestamp(val, target);
   showDatePicker.value = true;
 };
 
 const onDateConfirm = (e) => {
   const isMonth = datePickerTarget.value === "startMonth" || datePickerTarget.value === "endMonth";
-  const str = isMonth ? dayjs(e.value).format("YYYY-MM") : formatDateToYMD(e.value);
-  if (datePickerTarget.value === "single") searchForm.value.singleDate = str;
-  else if (datePickerTarget.value === "startMonth") searchForm.value.startMonth = str;
-  else if (datePickerTarget.value === "endMonth") searchForm.value.endMonth = str;
-  showDatePicker.value = false;
-  handleQuery();
+  const str = formatPickerDate(e.value, isMonth);
+  if (!str) {
+    showDatePicker.value = false;
+    uni.showToast({ title: "鏃ユ湡鏍煎紡鏃犳晥", icon: "none" });
+    return;
+  }
+  if (datePickerTarget.value === "single") {
+    searchForm.value.singleDate = str;
+    showDatePicker.value = false;
+    handleQuery();
+  } else if (datePickerTarget.value === "startMonth") {
+    searchForm.value.startMonth = str;
+    showDatePicker.value = false;
+    setTimeout(() => {
+      openDatePicker("endMonth");
+    }, 300);
+  } else if (datePickerTarget.value === "endMonth") {
+    searchForm.value.endMonth = str;
+    showDatePicker.value = false;
+    handleQuery();
+  } else if (datePickerTarget.value === "startDate") {
+    searchForm.value.startDate = str;
+    showDatePicker.value = false;
+    setTimeout(() => {
+      openDatePicker("endDate");
+    }, 300);
+  } else if (datePickerTarget.value === "endDate") {
+    searchForm.value.endDate = str;
+    showDatePicker.value = false;
+    handleQuery();
+  }
 };
 
 const initDefaultDates = () => {
@@ -204,14 +274,15 @@
     searchForm.value.singleDate = today.format("YYYY-MM-DD");
   }
   if (!searchForm.value.startMonth || !searchForm.value.endMonth) {
-    const startOfMonth = today.startOf("month").format("YYYY-MM-DD");
-    const endOfMonth = today.endOf("month").format("YYYY-MM-DD");
-    searchForm.value.startMonth = startOfMonth;
-    searchForm.value.endMonth = endOfMonth;
+    searchForm.value.startMonth = today.format("YYYY-MM");
+    searchForm.value.endMonth = today.add(1, "month").format("YYYY-MM");
   }
   if (!searchForm.value.startDate || !searchForm.value.endDate) {
     searchForm.value.endDate = today.format("YYYY-MM-DD");
     searchForm.value.startDate = today.subtract(6, "day").format("YYYY-MM-DD");
+  }
+  if (!datePickerTarget.value) {
+    dateValue.value = toPickerTimestamp(searchForm.value.singleDate, "single");
   }
 };
 
@@ -228,6 +299,8 @@
   fetchStockRecordTypeOptions();
 });
 
+initDefaultDates();
+
 onReachBottom(() => loadMore());
 
 const goBack = () => uni.navigateBack();

--
Gitblit v1.9.3