From 08114b7451615854cb01556a7c477e32e17f520e Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期五, 03 四月 2026 09:47:04 +0800
Subject: [PATCH] refactor: 调整储丝单柜卷包产量计算逻辑

---
 ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue |  138 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 119 insertions(+), 19 deletions(-)

diff --git a/ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue b/ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue
old mode 100644
new mode 100755
index 2c64d93..ffb40b6
--- a/ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue
+++ b/ruoyi-plus-soybean/src/views/analy/store-silk/modules/store-silk-search.vue
@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { toRaw } from 'vue';
+import { onMounted, ref, toRaw, watch } from 'vue';
 import { jsonClone } from '@sa/utils';
 import { useNaiveForm } from '@/hooks/common/form';
 import { $t } from '@/locales';
@@ -24,15 +24,88 @@
   Object.assign(model.value, defaultModel);
 }
 
+function getDefaultRange(): [string, string] {
+  const now = new Date();
+  const threeDaysAgo = new Date(now.getTime() - 3 * 24 * 60 * 60 * 1000);
+  const todayStart = `${threeDaysAgo.getFullYear()}-${String(threeDaysAgo.getMonth() + 1).padStart(2, '0')}-${String(threeDaysAgo.getDate()).padStart(2, '0')} 00:00:00`;
+  const todayEnd = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} 23:59:59`;
+  return [todayStart, todayEnd];
+}
+
+const dateRange = ref<[string, string] | null>(null);
+
+function onDateRangeUpdate(value: [string, string] | null) {
+  if (!model.value.params) {
+    model.value.params = {};
+  }
+
+  const beginTime = value?.[0] ? String(value[0]).trim() : '';
+  const endTime = value?.[1] ? String(value[1]).trim() : '';
+
+  if (beginTime && endTime) {
+    model.value.params.beginTime = beginTime;
+    model.value.params.endTime = endTime;
+  } else {
+    delete model.value.params.beginTime;
+    delete model.value.params.endTime;
+  }
+}
+
+function setDefaultRange() {
+  const range = getDefaultRange();
+  dateRange.value = range;
+  onDateRangeUpdate(range);
+}
+
+onMounted(() => {
+  if (!model.value.params) {
+    model.value.params = {};
+  }
+
+  const beginTime = model.value.params.beginTime ? String(model.value.params.beginTime).trim() : '';
+  const endTime = model.value.params.endTime ? String(model.value.params.endTime).trim() : '';
+
+  if (beginTime && endTime) {
+    dateRange.value = [beginTime, endTime];
+  } else {
+    setDefaultRange();
+  }
+});
+
 async function reset() {
   await restoreValidation();
   resetModel();
+  setDefaultRange();
   emit('search');
 }
 
 async function search() {
   await validate();
   emit('search');
+}
+
+const siloOptions = Array.from({ length: 12 }, (_, i) => ({
+  label: `${i + 1}鍙峰偍涓濇煖`,
+  value: String(i + 1)
+}));
+
+const selectedSilos = ref<string[]>([]);
+
+watch(
+  () => model.value.siloid,
+  val => {
+    if (val) {
+      selectedSilos.value = (val as string).split(',');
+    } else {
+      selectedSilos.value = [];
+    }
+  },
+  { immediate: true }
+);
+
+function handleSiloChange(val: string[]) {
+  selectedSilos.value = val;
+  model.value.siloid = val.join(',');
 }
 </script>
 
@@ -42,38 +115,65 @@
       <NCollapseItem :title="$t('common.search')" name="analy-store-silk-search">
         <NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
           <NGrid responsive="screen" item-responsive>
-            <NFormItemGi span="24 s:12 m:6" label="鐗屽彿" label-width="auto" path="materialname" class="pr-24px">
-              <NInput v-model:value="model.materialname" placeholder="璇疯緭鍏ョ墝鍙�" />
+            <NFormItemGi
+              span="24 s:12 m:8 l:8 xl:8"
+              label="鐗屽彿"
+              label-width="auto"
+              path="materialname"
+              class="pr-24px"
+            >
+              <NInput v-model:value="model.materialname" clearable placeholder="璇疯緭鍏ョ墝鍙�" />
             </NFormItemGi>
-            <NFormItemGi span="24 s:12 m:6" label="鎵规鍙�" label-width="auto" path="batchcode" class="pr-24px">
-              <NInput v-model:value="model.batchcode" placeholder="璇疯緭鍏ユ壒娆″彿" />
+            <NFormItemGi span="24 s:12 m:8 l:8 xl:8" label="鎵规鍙�" label-width="auto" path="batchcode" class="pr-24px">
+              <NInput v-model:value="model.batchcode" clearable placeholder="璇疯緭鍏ユ壒娆″彿" />
             </NFormItemGi>
-            <NFormItemGi span="24 s:12 m:6" label="鎶曟枡鏃ユ湡" label-width="auto" path="actualstarttime" class="pr-24px">
+            <NFormItemGi
+              span="24 s:12 m:8 l:8 xl:8"
+              label="鎶曟枡鏃ユ湡"
+              label-width="auto"
+              path="actualstarttime"
+              class="pr-24px"
+            >
               <NDatePicker
                 v-model:formatted-value="model.actualstarttime"
-                type="datetime"
-                value-format="yyyy-MM-dd HH:mm:ss"
+                type="date"
+                value-format="yyyy-MM-dd"
                 clearable
+                class="w-full"
               />
             </NFormItemGi>
-            <NFormItemGi span="24 s:12 m:6" label="鍌ㄤ笣鏌滃嚭鏂欏紑濮嬫椂闂�" label-width="auto" path="distimebegin" class="pr-24px">
+            <NFormItemGi
+              span="24 s:12 m:8 l:8 xl:8"
+              label="鍑烘枡缁撴潫鏃堕棿"
+              label-width="auto"
+              path="params.beginTime"
+              class="pr-24px"
+            >
               <NDatePicker
-                v-model:formatted-value="model.distimebegin"
-                type="datetime"
+                v-model:formatted-value="dateRange"
+                type="datetimerange"
+                :default-time="['00:00:00', '23:59:59']"
                 value-format="yyyy-MM-dd HH:mm:ss"
                 clearable
+                class="w-full"
+                @update:formatted-value="onDateRangeUpdate"
               />
             </NFormItemGi>
-            <NFormItemGi span="24 s:12 m:6" label="鍌ㄤ笣鏌滃嚭鏂欑粨鏉熸椂闂�" label-width="auto" path="distimeend" class="pr-24px">
-              <NDatePicker
-                v-model:formatted-value="model.distimeend"
-                type="datetime"
-                value-format="yyyy-MM-dd HH:mm:ss"
+            <NFormItemGi
+              span="24 s:12 m:8 l:8 xl:8"
+              label="鏌滃瓙鍙�(鏈綅)"
+              label-width="auto"
+              path="siloid"
+              class="pr-24px"
+            >
+              <NSelect
+                v-model:value="selectedSilos"
+                multiple
                 clearable
+                :options="siloOptions"
+                placeholder="璇烽�夋嫨鏌滃瓙鍙�"
+                @update:value="handleSiloChange"
               />
-            </NFormItemGi>
-            <NFormItemGi span="24 s:12 m:6" label="鏌滃瓙鍙�(鏈綅)" label-width="auto" path="siloid" class="pr-24px">
-              <NInput v-model:value="model.siloid" placeholder="璇疯緭鍏ユ煖瀛愬彿(鏈綅)" />
             </NFormItemGi>
             <NFormItemGi :show-feedback="false" span="24" class="pr-24px">
               <NSpace class="w-full" justify="end">

--
Gitblit v1.9.3