From 7529786b5f409ffa7ea0b1d5c3f550c4d0a83d3b Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 19 三月 2026 17:16:55 +0800
Subject: [PATCH] 耗材库存报表增加日期查询,列表增加现净重和来源显示
---
src/pages/inventoryManagement/stockReport/index.vue | 131 +++++++++++++++++++++++++++++++++++--------
1 files changed, 106 insertions(+), 25 deletions(-)
diff --git a/src/pages/inventoryManagement/stockReport/index.vue b/src/pages/inventoryManagement/stockReport/index.vue
index 1eba7a4..51c6a2a 100644
--- a/src/pages/inventoryManagement/stockReport/index.vue
+++ b/src/pages/inventoryManagement/stockReport/index.vue
@@ -15,7 +15,37 @@
</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">
@@ -39,6 +69,8 @@
<view class="row" v-if="searchForm.reportType === 'inout'"><text class="l">鍑哄簱鏁伴噺</text><text class="r">{{ item.totalStockOut }}</text></view>
<view class="row"><text class="l">鐜板湪搴撳瓨</text><text class="r highlight">{{ item.currentStock }}</text></view>
<view class="row" v-if="item.createBy"><text class="l">鍏ュ簱浜�</text><text class="r">{{ item.createBy }}</text></view>
+ <view class="row" v-if="item.currentWeight"><text class="l">鐜板噣閲�(鍚�)</text><text class="r">{{ item.currentWeight }}</text></view>
+ <view class="row" v-if="item.recordType"><text class="l">鏉ユ簮</text><text class="r">{{ getRecordType(item.recordType) }}</text></view>
</view>
</view>
<view class="load-more-wrap">
@@ -52,6 +84,7 @@
<up-datetime-picker
v-model="dateValue"
:mode="datePickerMode"
+ :show="showDatePicker"
@confirm="onDateConfirm"
@cancel="showDatePicker = false"
/>
@@ -64,11 +97,12 @@
import dayjs from 'dayjs'
import PageHeader from '@/components/PageHeader.vue'
import { formatDateToYMD } from '@/utils/ruoyi'
-import { onShow, onReachBottom } from '@dcloudio/uni-app'
+import { onShow } from '@dcloudio/uni-app'
import {
getStockInventoryReportList,
getStockInventoryInAndOutReportList
} from '@/api/inventoryManagement/stockInventory.js'
+import {findAllQualifiedStockInRecordTypeOptions} from "@/api/basicData/enum";
const reportTypes = [
{ label: '鏃ユ姤', value: 'daily' },
@@ -88,13 +122,14 @@
startMonth: '',
endMonth: '',
startDate: '',
- endDate: ''
+ endDate: '',
}
})
+
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'
})
@@ -112,16 +147,27 @@
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 + '-01'
+ p.endMonth = searchForm.value.endMonth + '-01'
} else {
- p.startDate = searchForm.value.startDate
- p.endDate = searchForm.value.endDate
+ p.startMonth = searchForm.value.startDate
+ p.endMonth = searchForm.value.endDate
}
return p
+}
+
+const stockRecordTypeOptions = ref([])
+
+const getRecordType = (recordType) => {
+ return stockRecordTypeOptions.value.find(item => item.value === recordType)?.label || ''
+}
+
+// 鑾峰彇鏉ユ簮绫诲瀷閫夐」
+const fetchStockRecordTypeOptions = () => {
+ findAllQualifiedStockInRecordTypeOptions()
+ .then(res => {
+ stockRecordTypeOptions.value = res.data;
+ })
}
const getList = () => {
@@ -171,11 +217,25 @@
}
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
+ datePickerTarget.value = target
+ switch (target) {
+ case 'single':
+ val = searchForm.value.singleDate
+ break
+ case 'startMonth':
+ val = searchForm.value.startMonth
+ break
+ case 'endMonth':
+ val = searchForm.value.endMonth
+ break
+ case 'startDate':
+ val = searchForm.value.startDate
+ break
+ case 'endDate':
+ val = searchForm.value.endDate
+ break
+ }
dateValue.value = val ? new Date(val).getTime() : Date.now()
showDatePicker.value = true
}
@@ -183,11 +243,33 @@
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()
+
+ 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()
+ }
}
// 鍒濆鍖栵細鏃ユ姤榛樿浠婂ぉ锛屾湀鎶ラ粯璁ゆ湰鏈堬紝杩涘嚭瀛橀粯璁ゆ渶杩�7澶�
@@ -197,10 +279,8 @@
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')
@@ -219,6 +299,7 @@
onShow(() => {
initDefaultDates()
handleQuery()
+ fetchStockRecordTypeOptions()
})
const goBack = () => uni.navigateBack()
@@ -271,4 +352,4 @@
.card-body .l { color: #666; } .card-body .r { color: #333; } .card-body .r.highlight { color: #2979ff; font-weight: 500; }
.no-data { text-align: center; padding: 60rpx 0; color: #999; font-size: 28rpx; }
.load-more-wrap { padding: 24rpx 0 8rpx; }
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3