You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

172 lines
6.8 KiB

  1. // material-ui
  2. import {
  3. Button,
  4. Grid,
  5. // TextField,
  6. // Autocomplete,
  7. Typography
  8. } from '@mui/material';
  9. import MainCard from "components/MainCard";
  10. import { useForm } from "react-hook-form";
  11. import * as React from "react";
  12. // import * as DateUtils from "utils/DateUtils";
  13. import {PNSPS_BUTTON_THEME} from "../../themes/buttonConst";
  14. import {ThemeProvider} from "@emotion/react";
  15. // import * as ComboData from "utils/ComboData";
  16. import * as DateUtils from "utils/DateUtils";
  17. import {DatePicker} from "@mui/x-date-pickers/DatePicker";
  18. import dayjs from "dayjs";
  19. import {DemoItem} from "@mui/x-date-pickers/internals/demo";
  20. import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider";
  21. import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs";
  22. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  23. const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria, onGridReady }) => {
  24. // const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom);
  25. const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom);
  26. const [maxDate] = React.useState(searchCriteria.dateFrom);
  27. // const [status, setStatus] = React.useState(ComboData.paymentStatus[0]);
  28. const [fromDateValue, setFromDateValue] = React.useState("dd / mm / yyyy");
  29. const {
  30. // register,
  31. handleSubmit,
  32. } = useForm()
  33. React.useEffect(() => {
  34. setFromDateValue(minDate);
  35. }, [minDate]);
  36. const onSubmit = () => {
  37. let sentDateFrom = "";
  38. if (fromDateValue != "dd / mm / yyyy") {
  39. sentDateFrom = DateUtils.dateValue(fromDateValue)
  40. }
  41. const temp = {
  42. // code: data.code,
  43. // transNo: data.transNo,
  44. dateFrom: sentDateFrom,
  45. // dateTo: data.dateTo,
  46. // status : (status?.type && status?.type != 'all') ? status?.type : "",
  47. };
  48. applySearch(temp);
  49. };
  50. const generateHandler = () => {
  51. let sentDateFrom = "";
  52. if (fromDateValue != "dd / mm / yyyy") {
  53. sentDateFrom = DateUtils.dateValue(fromDateValue)
  54. }
  55. // const dateTo = getValues("dateTo")
  56. const temp = {
  57. // code: data.code,
  58. // transNo: data.transNo,
  59. dateFrom: sentDateFrom,
  60. dateTo: "",
  61. // status : (status?.type && status?.type != 'all') ? status?.type : "",
  62. };
  63. generateXML(temp);
  64. }
  65. return (
  66. <MainCard xs={12} md={12} lg={12}
  67. border={false}
  68. content={false}
  69. >
  70. <form onSubmit={handleSubmit(onSubmit)} >
  71. <Grid container sx={{ backgroundColor: '#ffffff', ml: 2, mt: 1}} width="98%">
  72. {/*row 1*/}
  73. <Grid item justifyContent="space-between" alignItems="center" sx={{mt:1,ml:3,mb:2.5}}>
  74. <Typography variant="h5" >
  75. Credit Date
  76. </Typography>
  77. </Grid>
  78. {/*row 2*/}
  79. <Grid container display="flex" alignItems={"center"}>
  80. <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}>
  81. <LocalizationProvider dateAdapter={AdapterDayjs}>
  82. <DemoItem components={['DatePicker']}>
  83. <DatePicker
  84. id="dateFrom"
  85. // onError={(newError) => setReceiptFromError(newError)}
  86. slotProps={{
  87. field: { readOnly: true, },
  88. // textField: {
  89. // helperText: receiptFromErrorMessage,
  90. // },
  91. }}
  92. format="DD/MM/YYYY"
  93. label="Credit Date"
  94. value={minDate === null ? null : dayjs(minDate)}
  95. maxDate={maxDate === null ? null : dayjs(maxDate)}
  96. onChange={(newValue) => {
  97. // console.log(newValue)
  98. if(newValue!=null){
  99. setMinDate(newValue);
  100. }
  101. }}
  102. />
  103. </DemoItem >
  104. </LocalizationProvider>
  105. </Grid>
  106. <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}>
  107. {/* <TextField
  108. fullWidth
  109. InputLabelProps={{
  110. shrink: true
  111. }}
  112. {...register("dateTo")}
  113. InputProps={{ inputProps: { min: minDate } }}
  114. onChange={(newValue) => {
  115. setMaxDate(DateUtils.dateValue(newValue));
  116. }}
  117. id="dateTo"
  118. type="date"
  119. label="To"
  120. defaultValue={searchCriteria.dateTo}
  121. /> */}
  122. </Grid>
  123. {/* <Grid item xs={9} s={6} md={4} lg={3}>
  124. </Grid> */}
  125. </Grid>
  126. <Grid container justifyContent="flex-end" direction="row" alignItems="center" spacing={3} sx={{ ml: 3, mr: 3, mb: 3, }}>
  127. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  128. <Grid item >
  129. <Button
  130. variant="contained"
  131. type="submit"
  132. disabled={onGridReady}
  133. >
  134. Preview
  135. </Button>
  136. </Grid>
  137. <Grid item >
  138. <Button
  139. variant="contained"
  140. onClick={generateHandler}
  141. >
  142. Generate
  143. </Button>
  144. </Grid>
  145. </ThemeProvider>
  146. </Grid>
  147. </Grid>
  148. </form>
  149. </MainCard>
  150. );
  151. };
  152. export default SearchPublicNoticeForm;