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) { 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) { 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 = { const requestParams = {
...params, ...params,
// 确保分页参数存在 // 直接使用 pageNum因为后端分页器需要的是 pageNum 参数
page: params.page || 1, pageNum: params.pageNum || 1,
pageSize: params.pageSize || 10, pageSize: params.pageSize || 10,
} }

View File

@ -70,6 +70,6 @@ declare global {
// for type re-export // for type re-export
declare global { declare global {
// @ts-ignore // @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') import('vue')
} }

View File

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

View File

@ -117,8 +117,9 @@
:columns="columns" :columns="columns"
:data="tableData" :data="tableData"
:loading="loading" :loading="loading"
:pagination="pagination" :pagination="false"
row-key="approvalId" row-key="approvalId"
:scroll="{ x: 'max-content', y: 400 }"
@change="handleTableChange" @change="handleTableChange"
> >
<!-- 业务类型 --> <!-- 业务类型 -->
@ -193,6 +194,23 @@
</a-space> </a-space>
</template> </template>
</a-table> </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> </a-card>
<!-- 审批详情弹窗 --> <!-- 审批详情弹窗 -->
@ -249,19 +267,7 @@ const pagination = reactive<any>({
showPageSize: true, showPageSize: true,
showJumper: true, showJumper: true,
showTotal: (total: number) => `${total} 条记录`, showTotal: (total: number) => `${total} 条记录`,
pageSizeOptions: [10, 20, 50, 100], // 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)
}
}) })
// //
@ -570,6 +576,21 @@ const handleTableChange = (pag: any) => {
loadData(currentSearchParams.value || {}) 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) => { const handleTabChange = (key: string) => {
activeTab.value = key activeTab.value = key
@ -799,6 +820,42 @@ onMounted(() => {
color: var(--color-text-4); color: var(--color-text-4);
font-style: italic; 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 { .approval-search-container {

View File

@ -117,9 +117,9 @@
:columns="columns" :columns="columns"
:data="tableData" :data="tableData"
:loading="loading" :loading="loading"
:pagination="pagination" :pagination="false"
row-key="equipmentId" row-key="equipmentId"
:scroll="{ x: 'max-content', y: 500 }" :scroll="{ x: 'max-content', y: 400 }"
:bordered="false" :bordered="false"
:stripe="true" :stripe="true"
size="medium" size="medium"
@ -209,6 +209,23 @@
</a-space> </a-space>
</template> </template>
</a-table> </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> </a-card>
<!-- 新增/编辑弹窗 --> <!-- 新增/编辑弹窗 -->
@ -262,33 +279,7 @@ const pagination = reactive({
// //
hideOnSinglePage: false, hideOnSinglePage: false,
// //
size: 'default', 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)
}
}) })
// //
@ -740,20 +731,20 @@ const handleTableChange = (pag: any) => {
loadData(currentSearchParams.value) loadData(currentSearchParams.value)
} }
// - //
// const handlePageChange = (page: number) => { const handlePageChange = (page: number) => {
// console.log(':', page) console.log('页码变化:', page)
// pagination.current = page pagination.current = page
// loadData(currentSearchParams.value) loadData(currentSearchParams.value)
// } }
// - //
// const handlePageSizeChange = (pageSize: number) => { const handlePageSizeChange = (pageSize: number) => {
// console.log(':', pageSize) console.log('每页条数变化:', pageSize)
// pagination.pageSize = pageSize pagination.pageSize = pageSize
// pagination.current = 1 // pagination.current = 1 //
// loadData(currentSearchParams.value) loadData(currentSearchParams.value)
// } }
@ -1132,28 +1123,39 @@ onMounted(() => {
} }
} }
// // -
.arco-pagination { .pagination-container {
margin-top: 24px; position: sticky;
justify-content: center; bottom: 0;
padding: 16px 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 { .arco-pagination {
border-radius: 6px; margin: 0;
margin: 0 4px;
&.arco-pagination-item-active { .arco-pagination-item {
background: var(--color-primary); border-radius: 6px;
border-color: var(--color-primary); 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" :columns="columns"
:data="tableData" :data="tableData"
:loading="loading" :loading="loading"
:pagination="pagination" :pagination="false"
:row-selection="rowSelection" :row-selection="rowSelection"
row-key="equipmentId" row-key="equipmentId"
:scroll="{ x: 'max-content', y: 400 }"
@change="handleTableChange" @change="handleTableChange"
> >
<!-- 设备状态 --> <!-- 设备状态 -->
@ -218,6 +219,23 @@
</a-space> </a-space>
</template> </template>
</a-table> </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> </a-card>
<!-- 新增/编辑弹窗 --> <!-- 新增/编辑弹窗 -->
@ -277,19 +295,7 @@ const pagination = reactive<any>({
showPageSize: true, showPageSize: true,
showJumper: true, showJumper: true,
showTotal: (total: number) => `${total} 条记录`, showTotal: (total: number) => `${total} 条记录`,
pageSizeOptions: [10, 20, 50, 100], // 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)
}
}) })
// //
@ -717,6 +723,21 @@ const handleTableChange = (pag: any) => {
loadData(currentSearchParams.value) 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 = () => { const handleAdd = () => {
modalMode.value = 'add' modalMode.value = 'add'
@ -1003,6 +1024,42 @@ onMounted(() => {
color: var(--color-text-4); color: var(--color-text-4);
font-style: italic; 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;
}
}
}
} }
// //