merge(main): 同步主站最新 UI 与审核优化代码并保持分销多租户隔离

This commit is contained in:
yml2213
2026-09-07 17:37:31 +08:00
51 changed files with 11152 additions and 4950 deletions
@@ -239,7 +239,7 @@
.filter-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
gap: 14px 16px;
}
@@ -32,7 +32,7 @@ import { useAdminSessionStore } from '@/stores/adminSession'
import { adminPath } from '@/shared/utils/adminPath'
import { readError } from '@/shared/utils/error'
import { formatCentWithSymbol, yuanToCent } from '@/shared/utils/money'
import { formatDateTime, formatInputDate } from '@/shared/utils/time'
import { formatDateTime } from '@/shared/utils/time'
import AdminTablePagination from '../components/AdminTablePagination.vue'
import WithdrawalDetailDialog from '../components/WithdrawalDetailDialog.vue'
@@ -73,14 +73,89 @@ const createForm = reactive({
voucher_url: '',
})
const defaultStartTime = new Date(2000, 0, 1, 0, 0, 0)
const defaultEndTime = new Date(2000, 0, 1, 23, 59, 59)
const startTimeShortcuts = [
{
text: '今天 00:00',
value: () => {
const d = new Date()
d.setHours(0, 0, 0, 0)
return d
},
},
{
text: '昨天 00:00',
value: () => {
const d = new Date()
d.setDate(d.getDate() - 1)
d.setHours(0, 0, 0, 0)
return d
},
},
{
text: '近7天',
value: () => {
const d = new Date()
d.setDate(d.getDate() - 6)
d.setHours(0, 0, 0, 0)
return d
},
},
{
text: '近30天',
value: () => {
const d = new Date()
d.setDate(d.getDate() - 29)
d.setHours(0, 0, 0, 0)
return d
},
},
{
text: '本月初',
value: () => {
const d = new Date()
d.setDate(1)
d.setHours(0, 0, 0, 0)
return d
},
},
]
const endTimeShortcuts = [
{
text: '此刻',
value: () => new Date(),
},
{
text: '今天 23:59',
value: () => {
const d = new Date()
d.setHours(23, 59, 59, 0)
return d
},
},
{
text: '昨天 23:59',
value: () => {
const d = new Date()
d.setDate(d.getDate() - 1)
d.setHours(23, 59, 59, 0)
return d
},
},
]
const filters = reactive({
date_type: 'created',
start_date: defaultStartDate(),
end_date: formatInputDate(new Date()),
start_date: defaultStartDateTime(),
end_date: defaultEndDateTime(),
source_type: '',
status: '',
business_no: '',
keyword: '',
operator: '',
user_id: '',
})
@@ -114,12 +189,13 @@ function search() {
function resetFilters() {
filters.date_type = 'created'
filters.start_date = defaultStartDate()
filters.end_date = formatInputDate(new Date())
filters.start_date = defaultStartDateTime()
filters.end_date = defaultEndDateTime()
filters.source_type = ''
filters.status = ''
filters.business_no = ''
filters.keyword = ''
filters.operator = ''
filters.user_id = ''
currentPage.value = 1
void loadItems()
@@ -261,10 +337,17 @@ function emptySummary(): FinanceDisbursementListSummary {
}
}
function defaultStartDate() {
function defaultStartDateTime() {
const date = new Date()
date.setDate(date.getDate() - 29)
return formatInputDate(date)
date.setHours(0, 0, 0, 0)
return formatDateTime(date)
}
function defaultEndDateTime() {
const date = new Date()
date.setHours(23, 59, 59, 0)
return formatDateTime(date)
}
function money(cents: number | undefined | null) {
@@ -444,29 +527,37 @@ function accountTypeLabel(type: string) {
<!-- 筛选面板 -->
<section class="section-card filter-card">
<el-form class="filter-grid" label-position="top" @keyup.enter="search">
<el-form-item label="日期口径">
<el-form-item label="时间口径">
<el-select v-model="filters.date_type" class="full-control">
<el-option label="业务形成日期" value="created" />
<el-option label="实际打款日期" value="paid" />
<el-option label="业务形成时间" value="created" />
<el-option label="实际打款时间" value="paid" />
</el-select>
</el-form-item>
<el-form-item label="开始日期">
<el-form-item label="开始时间">
<el-date-picker
v-model="filters.start_date"
class="full-control"
type="date"
value-format="YYYY-MM-DD"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择开始时间"
:default-time="defaultStartTime"
:shortcuts="startTimeShortcuts"
:clearable="false"
/>
</el-form-item>
<el-form-item label="结束日期">
<el-form-item label="结束时间">
<el-date-picker
v-model="filters.end_date"
class="full-control"
type="date"
value-format="YYYY-MM-DD"
type="datetime"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择结束时间"
:default-time="defaultEndTime"
:shortcuts="endTimeShortcuts"
:clearable="false"
/>
</el-form-item>
@@ -509,6 +600,10 @@ function accountTypeLabel(type: string) {
<el-input v-model="filters.keyword" clearable placeholder="姓名、手机号或账号" />
</el-form-item>
<el-form-item label="操作人">
<el-input v-model="filters.operator" clearable placeholder="姓名、用户名或管理员 ID" />
</el-form-item>
<el-form-item label="用户 ID">
<el-input v-model="filters.user_id" clearable placeholder="按用户 ID 检索" />
</el-form-item>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff