diff --git a/src/pages/reimbursement/mine/MyReimbursement.tsx b/src/pages/reimbursement/mine/MyReimbursement.tsx index 9a6c4bd..edca481 100644 --- a/src/pages/reimbursement/mine/MyReimbursement.tsx +++ b/src/pages/reimbursement/mine/MyReimbursement.tsx @@ -25,6 +25,7 @@ export type Department = { departmentName: string; } export type TableListItem = { + key:number; id: number; beginDate: number; duration: number; @@ -43,6 +44,7 @@ export type TableListItem = { let fakeData: TableListItem[] = []; for (let i = 0; i < 94; i++) { fakeData.push({ + key:i, id: i + 1, beginDate: Date.UTC(2022, i % 11 + 1, i % 28 + 1), endDate: Date.UTC(2022, i % 11 + 1, i % 28 + 1) + 1000 * 60 * 60 * 24 * i + 1, @@ -72,7 +74,7 @@ class Subpage extends React.Component { tableAction = React.createRef(); departments = new Map() - constructor(props: {}) { + constructor(props: any) { super(props); this.state = { searchWord: "", @@ -182,11 +184,8 @@ class Subpage extends React.Component { search(value: string, form: FormProps['form'], dom: ReactNode[]) { this.setState({searchWord: value}); - if (value === "") { - // @ts-ignore - this.tableAction.current.reloadAndRest() - } - this.tableAction.current?.reload() + // @ts-ignore + this.tableAction.current.reloadAndRest() } create() { @@ -199,13 +198,33 @@ class Subpage extends React.Component { } - async converter(value: Reimbursement[] | undefined, pageSize: number | undefined) { + async converter(value: Reimbursement[] | undefined | Reimbursement, pageSize: number | undefined) { if (value === undefined) { return [] } let result: TableListItem[] = [] + if("reimbursementAdditionalAmount" in value){ + result.push({ + key:1, + id: value.reimbursementId, + beginDate: Date.parse(value.reimbursementDepartureInvoice.invoiceDate), + endDate: Date.parse(value.reimbursementDepartureInvoice.invoiceDate) + value.reimbursementTripDuration * 24 * 60 * 60 * 1000, + duration: value.reimbursementTripDuration, + OD: [value.reimbursementDepartureName, value.reimbursementDestinationName], + amount: value.reimbursementInvoiceAmount + value.reimbursementAdditionalAmount, + invoiceAmount: value.reimbursementInvoiceAmount, + additionalAmount: value.reimbursementAdditionalAmount, + status: value.reimbursementStatus % 6, + departmentId: value.reimbursementSubmitDepartment.departmentId, + submitDateTime: Date.parse(value.reimbursementSubmitTime), + detail: "查看详情", + back: value.reimbursementDestinationInvoice !== undefined, + }) + return result + } for (let i = 0; i < value.length; i++) { result.push({ + key:i, id: value[i].reimbursementId, beginDate: Date.parse(value[i].reimbursementDepartureInvoice.invoiceDate), endDate: Date.parse(value[i].reimbursementDepartureInvoice.invoiceDate) + value[i].reimbursementTripDuration * 24 * 60 * 60 * 1000, @@ -246,7 +265,7 @@ class Subpage extends React.Component { current = (current === undefined ? 0 : current) pageSize = (pageSize === undefined ? 5 : pageSize) let params: any = { - current: current, + pageNum: current - 1, pageSize: pageSize, } if (filter.status !== undefined && filter.status !== null && filter.status.length !== 0) { @@ -281,15 +300,21 @@ class Subpage extends React.Component { params['sortBy'] = "reimbursementDepartureDate" params['asc'] = (sort.beginDate === "ascend") } - console.log(params) let response = await axiosInstance.get('common/reimbursement', {params: params}) tableListDataSource = await this.converter(response.data.records, pageSize) - console.log(response.data.records) totalRecordLength = response.data.total } else { - let response = await axiosInstance.get('common/reimbursement/' + this.state.searchWord.trim(), {}) - tableListDataSource = await this.converter(response.data.records, pageSize) + let response = await axiosInstance.get('common/reimbursement/' + Number(this.state.searchWord.trim()), {}).catch(error => { + tableListDataSource = [] + totalRecordLength = 0 + return Promise.resolve({ + data: tableListDataSource, + success: false, + total: totalRecordLength, + }); + }) + tableListDataSource = await this.converter(response.data, pageSize) totalRecordLength = tableListDataSource.length } @@ -375,7 +400,7 @@ class Subpage extends React.Component { function MyReimbursement() { return ( <> - + ) } diff --git a/src/pages/reimbursement/mine/ReimbursementCreate.tsx b/src/pages/reimbursement/mine/ReimbursementCreate.tsx index 935b8f6..80e87e6 100644 --- a/src/pages/reimbursement/mine/ReimbursementCreate.tsx +++ b/src/pages/reimbursement/mine/ReimbursementCreate.tsx @@ -6,8 +6,8 @@ import { Form, Input, InputNumber, - Modal, notification, - Row + Modal, notification, Popover, + Row, Select, Tag } from "antd"; import {FormInstance} from "antd/es/form"; import {Invoice} from "../../../models/Reimbursement"; @@ -21,7 +21,7 @@ import {FieldData} from "rc-field-form/lib/interface"; import {invoiceTypeNameMap} from "../../../models/Invoice"; import SingleInvoiceSelector from "./component/SingleInvoiceSelector"; import MultiInvoiceSelector from "./component/MultiInvoiceSelector"; -import {StatisticCard} from "@ant-design/pro-components"; +import {ActionType, StatisticCard} from "@ant-design/pro-components"; const {Operation} = StatisticCard; @@ -37,11 +37,14 @@ const openNotification = (hint: string) => { class ReimbursementCreate extends React.Component { formRef = React.createRef(); + actionRef = React.createRef(); invoiceSelector1 = React.createRef(); invoiceSelector2 = React.createRef(); invoiceSelector3 = React.createRef(); departments: { departmentId: number, departmentName: string }[] = []; + place: { placeName: string, subsidyPerDay: number }[] = [] + constructor(props: {}) { super(props); let managingDepartment = store.getState().staff.managingDepartment @@ -66,8 +69,12 @@ class ReimbursementCreate extends React.Component { icon: , }) }) + axiosInstance.get("common/place").then((res) => { + this.place = res.data + this.formRef.current?.setFieldsValue({departureName: "", destinationName: ""}) + this.formRef.current?.resetFields(["departureName", "destinationName"]) + }) store.subscribe(this.handleStoreChange); - console.log(store.getState().staff.staffDepartments) this.state = { loading: false, open: this.props.open, @@ -90,7 +97,7 @@ class ReimbursementCreate extends React.Component { } handleStoreChange = () => { - this.departments=[] + this.departments = [] let managingDepartment = store.getState().staff.managingDepartment if (managingDepartment !== null && managingDepartment !== undefined) { this.departments.push({ @@ -154,7 +161,7 @@ class ReimbursementCreate extends React.Component { axiosInstance.post("common/reimbursement", params).then(response => { openNotification("提交成功") - this.setState({open: false}) + this.cancel() this.props.tableAction.current?.reload() }).catch(error => { console.log(error) @@ -162,7 +169,22 @@ class ReimbursementCreate extends React.Component { }) } cancel = () => { - this.setState({open: false}) + this.formRef.current?.resetFields() + this.setState({ + loading: false, + open: false, + invoices: [], + selectedDepartment: {id: this.departments[0].departmentId, name: this.departments[0].departmentName}, + back: false, + duration: 0, + departureInvoice: null, + destinationInvoice: null, + otherInvoices: [], + departureName: "", + destinationName: "", + note: "", + departmentId: -1, + }) } changeDuration = (value: number | null) => { return @@ -215,7 +237,19 @@ class ReimbursementCreate extends React.Component { } return res } - + calculateAddition = () => { + if(store.getState().staff.staffBase===this.formRef.current?.getFieldValue("destinationName")) + return {value:0,hint:"出差地点与基地相同,无补贴"} + let addition = 0 + this.place.map((item)=>{ + if(addition===this.formRef.current?.getFieldValue("destinationName")) + addition=item.subsidyPerDay + }) + let days=0 + if(this.state.duration!==undefined) + days=this.state.duration + return {value:addition*days,hint:"每日补贴"+addition+"元,共"+days+"天"} + } render() { return ( { duration: 0 }}> - + - + +