瀏覽代碼

update invoice search money format

saturday_normal_hour
cyril.tsui 6 月之前
父節點
當前提交
9ff4921b6f
共有 1 個檔案被更改,包括 61 行新增4 行删除
  1. +61
    -4
      src/components/InvoiceSearch/InvoiceSearch.tsx

+ 61
- 4
src/components/InvoiceSearch/InvoiceSearch.tsx 查看文件

@@ -13,7 +13,7 @@ import { deleteInvoice, importIssuedInovice, importReceivedInovice, updateInvoic
import { deleteDialog, errorDialogWithContent, successDialog } from "../Swal/CustomAlerts"; import { deleteDialog, errorDialogWithContent, successDialog } from "../Swal/CustomAlerts";
import { invoiceList, issuedInvoiceList, issuedInvoiceSearchForm, receivedInvoiceList, receivedInvoiceSearchForm } from "@/app/api/invoices"; import { invoiceList, issuedInvoiceList, issuedInvoiceSearchForm, receivedInvoiceList, receivedInvoiceSearchForm } from "@/app/api/invoices";
import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
import { GridCellParams, GridColDef, GridEventListener, GridRowId, GridRowModes, GridRowModesModel } from "@mui/x-data-grid";
import { GridCellParams, GridColDef, GridEventListener, GridRenderEditCellParams, GridRowId, GridRowModes, GridRowModesModel, GridValueFormatterParams } from "@mui/x-data-grid";
import { useGridApiRef } from "@mui/x-data-grid"; import { useGridApiRef } from "@mui/x-data-grid";
import StyledDataGrid from "../StyledDataGrid"; import StyledDataGrid from "../StyledDataGrid";


@@ -22,8 +22,11 @@ import CreateInvoiceModal from "./CreateInvoiceModal";
import { ProjectResult } from "@/app/api/projects"; import { ProjectResult } from "@/app/api/projects";
import { IMPORT_INVOICE, IMPORT_RECEIPT } from "@/middleware"; import { IMPORT_INVOICE, IMPORT_RECEIPT } from "@/middleware";
import InvoiceSearchLoading from "./InvoiceSearchLoading"; import InvoiceSearchLoading from "./InvoiceSearchLoading";
import { NumberFormatValues, NumericFormat } from "react-number-format";



interface CustomMoneyComponentProps {
params: GridRenderEditCellParams;
}


interface Props { interface Props {
invoices: invoiceList[]; invoices: invoiceList[];
@@ -287,6 +290,48 @@ const InvoiceSearch: React.FC<Props> & SubComponents = ({ invoices, projects, ab
// setSelectedRow([]); // setSelectedRow([]);
}; };


// Money format : 000,000,000.00
const CustomMoneyFormat = useCallback((value: number) => {
if (value) {
return moneyFormatter.format(value);
} else {
return ""
}
}, [])

const CustomMoneyComponent: React.FC<CustomMoneyComponentProps> = ({ params }) => {
const { id, value, field } = params;
const ref = React.useRef();

const handleValueChange = (newValue: NumberFormatValues) => {
apiRef.current.setEditCellValue({ id, field, value: newValue.value });
};

return <NumericFormat
fullWidth
prefix="HK$"
onValueChange={(values) => {
console.log(values)
handleValueChange(values)
}}
customInput={TextField}
thousandSeparator
valueIsNumericString
decimalScale={2}
fixedDecimalScale
value={value}
inputRef={ref}
InputProps={{
sx: {
'& .MuiInputBase-input': {
textAlign: 'right',
mb: 2
}
}
}}
/>;
}

const combinedColumns = useMemo<Column<invoiceList>[]>( const combinedColumns = useMemo<Column<invoiceList>[]>(
() => [ () => [
{ {
@@ -329,7 +374,13 @@ const InvoiceSearch: React.FC<Props> & SubComponents = ({ invoices, projects, ab
headerName: t("Amount (HKD)"), headerName: t("Amount (HKD)"),
editable: true, editable: true,
flex: 0.5, flex: 0.5,
type: 'number'
type: 'number',
renderEditCell: (params: GridRenderEditCellParams) => {
return <CustomMoneyComponent params={params} />
},
valueFormatter: (params: GridValueFormatterParams) => {
return CustomMoneyFormat(params.value as number)
}
}, },
{ {
field: "receiptDate", field: "receiptDate",
@@ -351,7 +402,13 @@ const InvoiceSearch: React.FC<Props> & SubComponents = ({ invoices, projects, ab
headerName: t("Actual Received Amount (HKD)"), headerName: t("Actual Received Amount (HKD)"),
editable: true, editable: true,
flex: 0.5, flex: 0.5,
type: 'number'
type: 'number',
renderEditCell: (params: GridRenderEditCellParams) => {
return <CustomMoneyComponent params={params} />
},
valueFormatter: (params: GridValueFormatterParams) => {
return CustomMoneyFormat(params.value as number)
}
}, },
], ],
[t] [t]


Loading…
取消
儲存