Merge remote-tracking branch 'origin/devlopment' into devlopment

# Conflicts:
#	src/types/components.d.ts
This commit is contained in:
Maple 2025-08-13 09:37:18 +08:00
commit d2b70943d1
7 changed files with 235 additions and 95 deletions

View File

@ -9,14 +9,38 @@ export const equipmentApprovalApi = {
*
*/
getPendingApprovals(params: EquipmentApprovalListReq) {
return http.get<EquipmentApprovalResp[]>('/equipment/approval/pending', params)
// 确保分页参数格式正确,与设备采购模块保持一致
const requestParams = {
...params,
// 直接使用 pageNum因为后端分页器需要的是 pageNum 参数
pageNum: params.pageNum || 1,
pageSize: params.pageSize || 10,
}
console.log('🔍 API - equipmentApprovalApi.getPendingApprovals 被调用')
console.log('🔍 API - 接收到的参数:', params)
console.log('🔍 API - 最终请求参数:', requestParams)
return http.get<EquipmentApprovalResp[]>('/equipment/approval/pending', requestParams)
},
/**
*
*/
getApprovedApprovals(params: EquipmentApprovalListReq) {
return http.get<EquipmentApprovalResp[]>('/equipment/approval/approved', params)
// 确保分页参数格式正确,与设备采购模块保持一致
const requestParams = {
...params,
// 直接使用 pageNum因为后端分页器需要的是 pageNum 参数
pageNum: params.pageNum || 1,
pageSize: params.pageSize || 10,
}
console.log('🔍 API - equipmentApprovalApi.getApprovedApprovals 被调用')
console.log('🔍 API - 接收到的参数:', params)
console.log('🔍 API - 最终请求参数:', requestParams)
return http.get<EquipmentApprovalResp[]>('/equipment/approval/approved', requestParams)
},
/**

View File

@ -20,8 +20,8 @@ export const equipmentProcurementApi = {
// 确保参数格式正确
const requestParams = {
...params,
// 确保分页参数存在
page: params.page || 1,
// 直接使用 pageNum因为后端分页器需要的是 pageNum 参数
pageNum: params.pageNum || 1,
pageSize: params.pageSize || 10,
}

View File

@ -70,6 +70,6 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
}

View File

@ -23,7 +23,7 @@ export interface EquipmentPageQuery {
invoice?: string
barcode?: string
importer?: string
page?: number // 当前页码 - 与后端参数保持一致
pageNum?: number // 当前页码 - 与后端分页器期望的参数保持一致
pageSize?: number // 每页大小
orderBy?: string
orderDirection?: string

View File

@ -117,8 +117,9 @@
:columns="columns"
:data="tableData"
:loading="loading"
:pagination="pagination"
:pagination="false"
row-key="approvalId"
:scroll="{ x: 'max-content', y: 400 }"
@change="handleTableChange"
>
<!-- 业务类型 -->
@ -193,6 +194,23 @@
</a-space>
</template>
</a-table>
<!-- 分页器 - 固定在表格下方 -->
<div class="pagination-container">
<a-pagination
v-model:current="pagination.current"
v-model:page-size="pagination.pageSize"
:total="pagination.total"
:show-total="true"
:show-jumper="true"
:show-page-size="true"
:page-size-options="[10, 20, 50, 100]"
:hide-on-single-page="false"
size="default"
@change="handlePageChange"
@page-size-change="handlePageSizeChange"
/>
</div>
</a-card>
<!-- 审批详情弹窗 -->
@ -249,19 +267,7 @@ const pagination = reactive<any>({
showPageSize: true,
showJumper: true,
showTotal: (total: number) => `${total} 条记录`,
pageSizeOptions: [10, 20, 50, 100], //
onChange: (page: number, pageSize: number) => {
console.log('分页变化 - 页码:', page, '每页条数:', pageSize)
pagination.current = page
pagination.pageSize = pageSize
loadData(currentSearchParams.value)
},
onPageSizeChange: (pageSize: number) => {
console.log('每页条数变化:', pageSize)
pagination.pageSize = pageSize
pagination.current = 1 //
loadData(currentSearchParams.value)
}
pageSizeOptions: [10, 20, 50, 100]
})
//
@ -570,6 +576,21 @@ const handleTableChange = (pag: any) => {
loadData(currentSearchParams.value || {})
}
//
const handlePageChange = (page: number) => {
console.log('页码变化:', page)
pagination.current = page
loadData(currentSearchParams.value || {})
}
//
const handlePageSizeChange = (pageSize: number) => {
console.log('每页条数变化:', pageSize)
pagination.pageSize = pageSize
pagination.current = 1 //
loadData(currentSearchParams.value || {})
}
//
const handleTabChange = (key: string) => {
activeTab.value = key
@ -799,6 +820,42 @@ onMounted(() => {
color: var(--color-text-4);
font-style: italic;
}
// -
.pagination-container {
position: sticky;
bottom: 0;
background: white;
padding: 16px 24px;
border-top: 1px solid var(--color-border);
display: flex;
justify-content: flex-end;
align-items: center;
z-index: 10;
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
.arco-pagination {
margin: 0;
.arco-pagination-item {
border-radius: 6px;
margin: 0 4px;
&.arco-pagination-item-active {
background: var(--color-primary);
border-color: var(--color-primary);
}
}
.arco-pagination-size-changer {
margin-left: 16px;
}
.arco-pagination-jumper {
margin-left: 16px;
}
}
}
//
.approval-search-container {

View File

@ -117,9 +117,9 @@
:columns="columns"
:data="tableData"
:loading="loading"
:pagination="pagination"
:pagination="false"
row-key="equipmentId"
:scroll="{ x: 'max-content', y: 500 }"
:scroll="{ x: 'max-content', y: 400 }"
:bordered="false"
:stripe="true"
size="medium"
@ -209,6 +209,23 @@
</a-space>
</template>
</a-table>
<!-- 分页器 - 固定在表格下方 -->
<div class="pagination-container">
<a-pagination
v-model:current="pagination.current"
v-model:page-size="pagination.pageSize"
:total="pagination.total"
:show-total="true"
:show-jumper="true"
:show-page-size="true"
:page-size-options="[10, 20, 50, 100]"
:hide-on-single-page="false"
size="default"
@change="handlePageChange"
@page-size-change="handlePageSizeChange"
/>
</div>
</a-card>
<!-- 新增/编辑弹窗 -->
@ -262,33 +279,7 @@ const pagination = reactive({
//
hideOnSinglePage: false,
//
size: 'default',
//
position: 'bottom',
//
onChange: (page: number, pageSize: number) => {
console.log('🔄 分页变化事件触发:', { page, pageSize })
console.log('📊 变化前分页状态:', {
current: pagination.current,
pageSize: pagination.pageSize,
total: pagination.total
})
pagination.current = page
if (pageSize !== pagination.pageSize) {
pagination.pageSize = pageSize
pagination.current = 1 //
}
console.log('📊 变化后分页状态:', {
current: pagination.current,
pageSize: pagination.pageSize,
total: pagination.total
})
console.log('🚀 开始重新加载数据...')
loadData(currentSearchParams.value)
}
size: 'default'
})
//
@ -740,20 +731,20 @@ const handleTableChange = (pag: any) => {
loadData(currentSearchParams.value)
}
// -
// const handlePageChange = (page: number) => {
// console.log(':', page)
// pagination.current = page
// loadData(currentSearchParams.value)
// }
//
const handlePageChange = (page: number) => {
console.log('页码变化:', page)
pagination.current = page
loadData(currentSearchParams.value)
}
// -
// const handlePageSizeChange = (pageSize: number) => {
// console.log(':', pageSize)
// pagination.pageSize = pageSize
// pagination.current = 1 //
// loadData(currentSearchParams.value)
// }
//
const handlePageSizeChange = (pageSize: number) => {
console.log('每页条数变化:', pageSize)
pagination.pageSize = pageSize
pagination.current = 1 //
loadData(currentSearchParams.value)
}
@ -1132,28 +1123,39 @@ onMounted(() => {
}
}
//
.arco-pagination {
margin-top: 24px;
justify-content: center;
padding: 16px 0;
// -
.pagination-container {
position: sticky;
bottom: 0;
background: white;
padding: 16px 24px;
border-top: 1px solid var(--color-border);
display: flex;
justify-content: flex-end;
align-items: center;
z-index: 10;
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
.arco-pagination-item {
border-radius: 6px;
margin: 0 4px;
.arco-pagination {
margin: 0;
&.arco-pagination-item-active {
background: var(--color-primary);
border-color: var(--color-primary);
.arco-pagination-item {
border-radius: 6px;
margin: 0 4px;
&.arco-pagination-item-active {
background: var(--color-primary);
border-color: var(--color-primary);
}
}
.arco-pagination-size-changer {
margin-left: 16px;
}
.arco-pagination-jumper {
margin-left: 16px;
}
}
.arco-pagination-size-changer {
margin-left: 16px;
}
.arco-pagination-jumper {
margin-left: 16px;
}
}

View File

@ -116,9 +116,10 @@
:columns="columns"
:data="tableData"
:loading="loading"
:pagination="pagination"
:pagination="false"
:row-selection="rowSelection"
row-key="equipmentId"
:scroll="{ x: 'max-content', y: 400 }"
@change="handleTableChange"
>
<!-- 设备状态 -->
@ -218,6 +219,23 @@
</a-space>
</template>
</a-table>
<!-- 分页器 - 固定在表格下方 -->
<div class="pagination-container">
<a-pagination
v-model:current="pagination.current"
v-model:page-size="pagination.pageSize"
:total="pagination.total"
:show-total="true"
:show-jumper="true"
:show-page-size="true"
:page-size-options="[10, 20, 50, 100]"
:hide-on-single-page="false"
size="default"
@change="handlePageChange"
@page-size-change="handlePageSizeChange"
/>
</div>
</a-card>
<!-- 新增/编辑弹窗 -->
@ -277,19 +295,7 @@ const pagination = reactive<any>({
showPageSize: true,
showJumper: true,
showTotal: (total: number) => `${total} 条记录`,
pageSizeOptions: [10, 20, 50, 100], //
onChange: (page: number, pageSize: number) => {
console.log('分页变化 - 页码:', page, '每页条数:', pageSize)
pagination.current = page
pagination.pageSize = pageSize
loadData(currentSearchParams.value)
},
onPageSizeChange: (pageSize: number) => {
console.log('每页条数变化:', pageSize)
pagination.pageSize = pageSize
pagination.current = 1 //
loadData(currentSearchParams.value)
}
pageSizeOptions: [10, 20, 50, 100]
})
//
@ -717,6 +723,21 @@ const handleTableChange = (pag: any) => {
loadData(currentSearchParams.value)
}
//
const handlePageChange = (page: number) => {
console.log('页码变化:', page)
pagination.current = page
loadData(currentSearchParams.value)
}
//
const handlePageSizeChange = (pageSize: number) => {
console.log('每页条数变化:', pageSize)
pagination.pageSize = pageSize
pagination.current = 1 //
loadData(currentSearchParams.value)
}
//
const handleAdd = () => {
modalMode.value = 'add'
@ -1003,6 +1024,42 @@ onMounted(() => {
color: var(--color-text-4);
font-style: italic;
}
// -
.pagination-container {
position: sticky;
bottom: 0;
background: white;
padding: 16px 24px;
border-top: 1px solid var(--color-border);
display: flex;
justify-content: flex-end;
align-items: center;
z-index: 10;
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
.arco-pagination {
margin: 0;
.arco-pagination-item {
border-radius: 6px;
margin: 0 4px;
&.arco-pagination-item-active {
background: var(--color-primary);
border-color: var(--color-primary);
}
}
.arco-pagination-size-changer {
margin-left: 16px;
}
.arco-pagination-jumper {
margin-left: 16px;
}
}
}
}
//