|
@@ -23,6 +23,11 @@ function WorkRecordList() {
|
|
|
const [selectedMonth, setSelectedMonth] = useState(null)
|
|
const [selectedMonth, setSelectedMonth] = useState(null)
|
|
|
const [selectedSettlement, setSelectedSettlement] = useState(null)
|
|
const [selectedSettlement, setSelectedSettlement] = useState(null)
|
|
|
|
|
|
|
|
|
|
+ // Pagination states
|
|
|
|
|
+ const [currentPage, setCurrentPage] = useState(1)
|
|
|
|
|
+ const [pageSize, setPageSize] = useState(20)
|
|
|
|
|
+ const [total, setTotal] = useState(0)
|
|
|
|
|
+
|
|
|
// Batch settlement modal states
|
|
// Batch settlement modal states
|
|
|
const [batchModalVisible, setBatchModalVisible] = useState(false)
|
|
const [batchModalVisible, setBatchModalVisible] = useState(false)
|
|
|
const [batchPersonId, setBatchPersonId] = useState(null)
|
|
const [batchPersonId, setBatchPersonId] = useState(null)
|
|
@@ -61,7 +66,10 @@ function WorkRecordList() {
|
|
|
setLoading(true)
|
|
setLoading(true)
|
|
|
setError(null)
|
|
setError(null)
|
|
|
try {
|
|
try {
|
|
|
- const params = {}
|
|
|
|
|
|
|
+ const params = {
|
|
|
|
|
+ page: currentPage,
|
|
|
|
|
+ page_size: pageSize
|
|
|
|
|
+ }
|
|
|
if (selectedPersonId) {
|
|
if (selectedPersonId) {
|
|
|
params.person_id = selectedPersonId
|
|
params.person_id = selectedPersonId
|
|
|
}
|
|
}
|
|
@@ -77,6 +85,10 @@ function WorkRecordList() {
|
|
|
}
|
|
}
|
|
|
const response = await workRecordApi.getAll(params)
|
|
const response = await workRecordApi.getAll(params)
|
|
|
setWorkRecords(response.data || [])
|
|
setWorkRecords(response.data || [])
|
|
|
|
|
+ // Update pagination from backend response
|
|
|
|
|
+ if (response.pagination) {
|
|
|
|
|
+ setTotal(response.pagination.total)
|
|
|
|
|
+ }
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
const errorMsg = error.message || '获取工作记录失败'
|
|
const errorMsg = error.message || '获取工作记录失败'
|
|
|
setError(errorMsg)
|
|
setError(errorMsg)
|
|
@@ -93,7 +105,24 @@ function WorkRecordList() {
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
fetchWorkRecords()
|
|
fetchWorkRecords()
|
|
|
- }, [selectedPersonId, selectedDate, selectedMonth, selectedSettlement])
|
|
|
|
|
|
|
+ }, [selectedPersonId, selectedDate, selectedMonth, selectedSettlement, currentPage, pageSize])
|
|
|
|
|
+
|
|
|
|
|
+ // Reset to page 1 when filter conditions change
|
|
|
|
|
+ const handleFilterChange = (setter) => (value) => {
|
|
|
|
|
+ setCurrentPage(1)
|
|
|
|
|
+ setter(value)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Handle pagination change
|
|
|
|
|
+ const handleTableChange = (pagination) => {
|
|
|
|
|
+ if (pagination.current !== currentPage) {
|
|
|
|
|
+ setCurrentPage(pagination.current)
|
|
|
|
|
+ }
|
|
|
|
|
+ if (pagination.pageSize !== pageSize) {
|
|
|
|
|
+ setPageSize(pagination.pageSize)
|
|
|
|
|
+ setCurrentPage(1) // Reset to page 1 when page size changes
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
const handleAdd = () => {
|
|
const handleAdd = () => {
|
|
|
setEditingRecord(null)
|
|
setEditingRecord(null)
|
|
@@ -131,6 +160,7 @@ function WorkRecordList() {
|
|
|
setSelectedDate(null)
|
|
setSelectedDate(null)
|
|
|
setSelectedMonth(null)
|
|
setSelectedMonth(null)
|
|
|
setSelectedSettlement(null)
|
|
setSelectedSettlement(null)
|
|
|
|
|
+ setCurrentPage(1)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const handleToggleSettlement = async (record) => {
|
|
const handleToggleSettlement = async (record) => {
|
|
@@ -311,7 +341,7 @@ function WorkRecordList() {
|
|
|
allowClear
|
|
allowClear
|
|
|
style={{ width: '100%' }}
|
|
style={{ width: '100%' }}
|
|
|
value={selectedPersonId}
|
|
value={selectedPersonId}
|
|
|
- onChange={setSelectedPersonId}
|
|
|
|
|
|
|
+ onChange={handleFilterChange(setSelectedPersonId)}
|
|
|
options={persons.map(p => ({ label: p.name, value: p.id }))}
|
|
options={persons.map(p => ({ label: p.name, value: p.id }))}
|
|
|
/>
|
|
/>
|
|
|
</Col>
|
|
</Col>
|
|
@@ -319,7 +349,7 @@ function WorkRecordList() {
|
|
|
<DatePicker.MonthPicker
|
|
<DatePicker.MonthPicker
|
|
|
placeholder="选择月份"
|
|
placeholder="选择月份"
|
|
|
value={selectedMonth}
|
|
value={selectedMonth}
|
|
|
- onChange={setSelectedMonth}
|
|
|
|
|
|
|
+ onChange={handleFilterChange(setSelectedMonth)}
|
|
|
format="YYYY-MM"
|
|
format="YYYY-MM"
|
|
|
style={{ width: '100%' }}
|
|
style={{ width: '100%' }}
|
|
|
/>
|
|
/>
|
|
@@ -328,7 +358,7 @@ function WorkRecordList() {
|
|
|
<DatePicker
|
|
<DatePicker
|
|
|
placeholder="选择日期"
|
|
placeholder="选择日期"
|
|
|
value={selectedDate}
|
|
value={selectedDate}
|
|
|
- onChange={setSelectedDate}
|
|
|
|
|
|
|
+ onChange={handleFilterChange(setSelectedDate)}
|
|
|
style={{ width: '100%' }}
|
|
style={{ width: '100%' }}
|
|
|
/>
|
|
/>
|
|
|
</Col>
|
|
</Col>
|
|
@@ -338,7 +368,7 @@ function WorkRecordList() {
|
|
|
allowClear
|
|
allowClear
|
|
|
style={{ width: '100%' }}
|
|
style={{ width: '100%' }}
|
|
|
value={selectedSettlement}
|
|
value={selectedSettlement}
|
|
|
- onChange={setSelectedSettlement}
|
|
|
|
|
|
|
+ onChange={handleFilterChange(setSelectedSettlement)}
|
|
|
options={[
|
|
options={[
|
|
|
{ label: '已结算', value: true },
|
|
{ label: '已结算', value: true },
|
|
|
{ label: '未结算', value: false }
|
|
{ label: '未结算', value: false }
|
|
@@ -359,11 +389,16 @@ function WorkRecordList() {
|
|
|
tableLayout="auto"
|
|
tableLayout="auto"
|
|
|
scroll={isMobile ? undefined : { x: 800 }}
|
|
scroll={isMobile ? undefined : { x: 800 }}
|
|
|
size={isMobile ? 'small' : 'middle'}
|
|
size={isMobile ? 'small' : 'middle'}
|
|
|
|
|
+ onChange={handleTableChange}
|
|
|
pagination={{
|
|
pagination={{
|
|
|
|
|
+ current: currentPage,
|
|
|
|
|
+ pageSize: pageSize,
|
|
|
|
|
+ total: total,
|
|
|
showSizeChanger: !isMobile,
|
|
showSizeChanger: !isMobile,
|
|
|
showQuickJumper: !isMobile,
|
|
showQuickJumper: !isMobile,
|
|
|
showTotal: (total) => `共 ${total} 条`,
|
|
showTotal: (total) => `共 ${total} 条`,
|
|
|
- size: isMobile ? 'small' : 'default'
|
|
|
|
|
|
|
+ size: isMobile ? 'small' : 'default',
|
|
|
|
|
+ pageSizeOptions: ['10', '20', '50', '100']
|
|
|
}}
|
|
}}
|
|
|
/>
|
|
/>
|
|
|
<WorkRecordForm
|
|
<WorkRecordForm
|