feat: 优化凭证和开票记录的日期范围查询,使用 dayjs 精确处理起止时间

This commit is contained in:
Wei_佳 2025-11-24 11:16:43 +08:00
parent 948ac409df
commit def0d75840
2 changed files with 32 additions and 6 deletions

View File

@ -1,5 +1,6 @@
<script setup> <script setup>
import { h, onMounted, ref, resolveDirective, withDirectives } from 'vue' import { h, onMounted, ref, resolveDirective, withDirectives } from 'vue'
import dayjs from 'dayjs'
import { NButton, NInput, NTag, NSelect, NDatePicker } from 'naive-ui' import { NButton, NInput, NTag, NSelect, NDatePicker } from 'naive-ui'
import CommonPage from '@/components/page/CommonPage.vue' import CommonPage from '@/components/page/CommonPage.vue'
@ -7,7 +8,7 @@ import QueryBarItem from '@/components/query-bar/QueryBarItem.vue'
import CrudTable from '@/components/table/CrudTable.vue' import CrudTable from '@/components/table/CrudTable.vue'
import InvoiceModal from './InvoiceModal.vue' import InvoiceModal from './InvoiceModal.vue'
import { formatDate } from '@/utils' import { formatDate, formatDateTime } from '@/utils'
import api from '@/api' import api from '@/api'
defineOptions({ name: '开票记录' }) defineOptions({ name: '开票记录' })
@ -20,6 +21,18 @@ const vPermission = resolveDirective('permission')
const invoiceModalVisible = ref(false) const invoiceModalVisible = ref(false)
const invoiceModalMode = ref('view') // 'send' 'view' const invoiceModalMode = ref('view') // 'send' 'view'
const currentInvoice = ref(null) const currentInvoice = ref(null)
const submittedDateRange = ref(null)
const handleDateRangeChange = (val) => {
if (val && val.length === 2) {
queryItems.value.submitted_start = dayjs(val[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss')
queryItems.value.submitted_end = dayjs(val[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else {
queryItems.value.submitted_start = null
queryItems.value.submitted_end = null
}
$table.value?.handleSearch()
}
// //
const statusOptions = [ const statusOptions = [
@ -271,12 +284,12 @@ async function handleInvoiceConfirm(formData) {
<template #queryBar> <template #queryBar>
<QueryBarItem label="提交时间" :label-width="80"> <QueryBarItem label="提交时间" :label-width="80">
<NDatePicker <NDatePicker
v-model:value="queryItems.submitted_at" v-model:value="submittedDateRange"
type="daterange" type="daterange"
clearable clearable
placeholder="请选择提交时间" placeholder="请选择提交时间"
style="width: 280px" style="width: 280px"
@update:value="$table?.handleSearch()" @update:value="handleDateRangeChange"
/> />
</QueryBarItem> </QueryBarItem>
<QueryBarItem label="手机号" :label-width="80"> <QueryBarItem label="手机号" :label-width="80">

View File

@ -1,18 +1,31 @@
<script setup> <script setup>
import { h, onMounted, ref } from 'vue' import { h, onMounted, ref } from 'vue'
import dayjs from 'dayjs'
import { NTag, NButton, NInput, NSelect, NDatePicker } from 'naive-ui' import { NTag, NButton, NInput, NSelect, NDatePicker } from 'naive-ui'
import CommonPage from '@/components/page/CommonPage.vue' import CommonPage from '@/components/page/CommonPage.vue'
import QueryBarItem from '@/components/query-bar/QueryBarItem.vue' import QueryBarItem from '@/components/query-bar/QueryBarItem.vue'
import CrudTable from '@/components/table/CrudTable.vue' import CrudTable from '@/components/table/CrudTable.vue'
import { formatDate } from '@/utils' import { formatDate, formatDateTime } from '@/utils'
import api from '@/api' import api from '@/api'
defineOptions({ name: '交易记录' }) defineOptions({ name: '交易记录' })
const $table = ref(null) const $table = ref(null)
const queryItems = ref({}) const queryItems = ref({})
const submittedDateRange = ref(null)
const handleDateRangeChange = (val) => {
if (val && val.length === 2) {
queryItems.value.submitted_start = dayjs(val[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss')
queryItems.value.submitted_end = dayjs(val[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else {
queryItems.value.submitted_start = null
queryItems.value.submitted_end = null
}
$table.value?.handleSearch()
}
const statusOptions = [ const statusOptions = [
{ label: '全部', value: '' }, { label: '全部', value: '' },
@ -83,12 +96,12 @@ const columns = [
<template #queryBar> <template #queryBar>
<QueryBarItem label="凭证时间" :label-width="80"> <QueryBarItem label="凭证时间" :label-width="80">
<NDatePicker <NDatePicker
v-model:value="queryItems.created_at" v-model:value="submittedDateRange"
type="daterange" type="daterange"
clearable clearable
placeholder="请选择凭证时间" placeholder="请选择凭证时间"
style="width: 280px" style="width: 280px"
@update:value="$table?.handleSearch()" @update:value="handleDateRangeChange"
/> />
</QueryBarItem> </QueryBarItem>
<QueryBarItem label="手机号" :label-width="80"> <QueryBarItem label="手机号" :label-width="80">