Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

267 linhas
12 KiB

  1. // material-ui
  2. import {
  3. Grid, Typography, Button,
  4. // Dialog, DialogTitle, DialogContent, DialogActions,
  5. } from '@mui/material';
  6. import MainCard from "components/MainCard";
  7. import * as React from "react";
  8. import * as FieldUtils from "utils/FieldUtils";
  9. import * as HttpUtils from 'utils/HttpUtils';
  10. import * as UrlUtils from "utils/ApiPathConst";
  11. import { useFormik } from 'formik';
  12. import * as yup from 'yup';
  13. const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent')));
  14. import Loadable from 'components/Loadable';
  15. import { lazy } from 'react';
  16. import { notifySaveSuccess, } from 'utils/CommonFunction';
  17. import {FormattedMessage, useIntl} from "react-intl";
  18. import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst";
  19. import {ThemeProvider} from "@emotion/react";
  20. import * as ComboData from "utils/ComboData";
  21. // import {
  22. // isPrimaryLoggedIn,
  23. // } from "utils/Utils";
  24. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  25. const UserInformationCard_Organization_Pub = ({ userData, loadDataFun,}) => {
  26. const intl = useIntl();
  27. const [currentUserData, setCurrentUserData] = React.useState(userData);
  28. // const [isWarningPopUp, setIsWarningPopUp] = React.useState(false);
  29. // const [warningText, setWarningText] = React.useState("");
  30. // const [isConfirmPopUp, setIsConfirmPopUp] = React.useState(false);
  31. // const [confirmText, setConfirmText] = React.useState("");
  32. // const [confirmAction, setConfirmAction] = React.useState();
  33. const [editMode, setEditMode] = React.useState(false);
  34. const [onReady, setOnReady] = React.useState(false);
  35. React.useEffect(() => {
  36. //if state data are ready and assign to different field
  37. // console.log(currentApplicationDetailData)
  38. if (Object.keys(currentUserData).length > 0) {
  39. setOnReady(true);
  40. // console.log(currentUserData)
  41. }
  42. }, [currentUserData]);
  43. function displayErrorMsg(errorMsg) {
  44. return <Typography variant="errorMessage1">{errorMsg}</Typography>
  45. }
  46. const formik = useFormik({
  47. enableReinitialize: true,
  48. initialValues: currentUserData,
  49. validationSchema: yup.object().shape({
  50. tel_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'require3Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))),
  51. phoneNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'require8Number'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))),
  52. }),
  53. onSubmit: (values) => {
  54. // console.log(values);
  55. HttpUtils.post({
  56. url: UrlUtils.POST_PUB_ORG_USER,
  57. params: {
  58. contactTel: {
  59. countryCode: values.tel_countryCode,
  60. phoneNumber: values.phoneNumber
  61. },
  62. faxNo: {
  63. countryCode: values.fax_countryCode,
  64. faxNumber: values.faxNumber
  65. },
  66. preferLocale: values.preferLocale.type
  67. },
  68. onSuccess: function () {
  69. notifySaveSuccess()
  70. loadDataFun();
  71. }
  72. });
  73. }
  74. });
  75. React.useEffect(() => {
  76. if (Object.keys(userData).length > 0) {
  77. setCurrentUserData(userData);
  78. }
  79. }, [userData]);
  80. const onEditClick = () => {
  81. setEditMode(true);
  82. };
  83. // const onFocus = () => {
  84. // loadDataFun();
  85. // window.removeEventListener("focus", onFocus)
  86. // }
  87. return (
  88. <MainCard elevation={0}
  89. border={false}
  90. content={false}
  91. >
  92. {!onReady ?
  93. <LoadingComponent />
  94. :
  95. <form onSubmit={formik.handleSubmit}>
  96. {/*top button*/}
  97. <Grid container alignItems="center" justifyContent="flex-start">
  98. <Grid item s={12} md={12} lg={12} sx={{ lg:{mb: 3}, mt: 2 }}>
  99. <Grid container direction="row" justifyContent="flex-start">
  100. {editMode ?
  101. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  102. <Grid item xs={4} sx={{ ml: 3, mr: 3 }}>
  103. <Button
  104. variant="contained"
  105. onClick={loadDataFun}
  106. color="cancel"
  107. >
  108. <FormattedMessage id="resetAndBack" />
  109. </Button>
  110. </Grid>
  111. <Grid item xs={4} sx={{ ml: 3, mr: 3 }}>
  112. <Button
  113. variant="contained"
  114. type="submit"
  115. color="success"
  116. >
  117. <FormattedMessage id="save" />
  118. </Button>
  119. </Grid>
  120. </ThemeProvider>
  121. :
  122. <ThemeProvider theme={PNSPS_BUTTON_THEME}>
  123. <Grid item sx={{ ml:3, mr: 3 }}>
  124. <Button
  125. variant="contained"
  126. onClick={onEditClick}
  127. >
  128. <FormattedMessage id="edit" />
  129. </Button>
  130. </Grid>
  131. </ThemeProvider>
  132. }
  133. </Grid>
  134. </Grid>
  135. </Grid>
  136. {/*end top button*/}
  137. <div style={{ paddingLeft: 24, paddingRight: 24 }}>
  138. {/* <Typography variant="h4" sx={{ mt: 3, mb: 2, mr: 3, borderBottom: "1px solid black" }}>
  139. <FormattedMessage id="userDetail" />
  140. </Typography> */}
  141. <Grid container spacing={1}>
  142. <Grid item xs={12} lg={12}>
  143. {FieldUtils.getTextField({
  144. label: intl.formatMessage({id: 'userLoginName'}) + ":",
  145. valueName: "username",
  146. disabled: true,
  147. form: formik
  148. })}
  149. </Grid>
  150. <Grid item xs={12} lg={12}>
  151. {FieldUtils.getTextField({
  152. label: intl.formatMessage({id: 'userContactName'}) + ":",
  153. valueName: "contactPerson",
  154. disabled: true,
  155. form: formik
  156. })}
  157. </Grid>
  158. <Grid item xs={12} lg={12}>
  159. {FieldUtils.getTextField({
  160. label: intl.formatMessage({id: 'userContactEmail'}) + ":",
  161. valueName: "emailBus",
  162. disabled: true,
  163. form: formik
  164. })}
  165. </Grid>
  166. <Grid item xs={12} lg={12}>
  167. {FieldUtils.getPhoneField({
  168. label: intl.formatMessage({id: 'userContactNumber'}) + ":",
  169. valueName: {
  170. code: "tel_countryCode",
  171. num: "phoneNumber"
  172. },
  173. disabled: (!editMode),
  174. form: formik
  175. })}
  176. </Grid>
  177. <Grid item xs={12} lg={12}>
  178. {FieldUtils.getPhoneField({
  179. label: intl.formatMessage({id: 'contactFaxNumber'}) + ":",
  180. valueName: {
  181. code: "fax_countryCode",
  182. num: "faxNumber"
  183. },
  184. disabled: (!editMode),
  185. form: formik
  186. })}
  187. </Grid>
  188. <Grid item xs={12} lg={12}>
  189. {FieldUtils.getTextField({
  190. label: intl.formatMessage({id: 'primaryUser'}) + ":",
  191. valueName: "primaryUser",
  192. disabled: true,
  193. form: formik
  194. })}
  195. </Grid>
  196. <Grid item xs={12} lg={12}>
  197. {FieldUtils.getComboField({
  198. label: intl.formatMessage({id: 'language'}) + ":",
  199. valueName: "preferLocale",
  200. dataList: ComboData.Locale,
  201. getOptionLabel: (option) => option.label? option.label: "",
  202. disabled: (!editMode),
  203. form: formik
  204. })}
  205. </Grid>
  206. </Grid>
  207. </div>
  208. <br />
  209. </form>
  210. }
  211. {/* <div>
  212. <Dialog open={isWarningPopUp} onClose={() => setIsWarningPopUp(false)} >
  213. <DialogTitle><Typography variant="h3">Warning</Typography></DialogTitle>
  214. <DialogContent style={{ display: 'flex', }}>
  215. <Typography variant="h4" style={{ padding: '16px' }}>{warningText}</Typography>
  216. </DialogContent>
  217. <DialogActions>
  218. <Button onClick={() => setIsWarningPopUp(false)}><Typography variant="h5">Close</Typography></Button>
  219. </DialogActions>
  220. </Dialog>
  221. </div>
  222. <div>
  223. <Dialog open={isConfirmPopUp} onClose={() => setIsConfirmPopUp(false)} >
  224. <DialogTitle><Typography variant="h3">Confirm</Typography></DialogTitle>
  225. <DialogContent style={{ display: 'flex', }}>
  226. <Typography variant="h4" style={{ padding: '16px' }}>{confirmText}</Typography>
  227. </DialogContent>
  228. <DialogActions>
  229. <Button onClick={() => { setIsConfirmPopUp(false) }}><Typography variant="h5">Close</Typography></Button>
  230. <Button onClick={() => { confirmAction?.function(); }}><Typography variant="h5">Confirm</Typography></Button>
  231. </DialogActions>
  232. </Dialog>
  233. </div> */}
  234. </MainCard>
  235. );
  236. };
  237. export default UserInformationCard_Organization_Pub;