| @@ -42,7 +42,7 @@ const LocaleSelector = () => { | |||||
| }; | }; | ||||
| const iconBackColorOpen = 'grey.300'; | const iconBackColorOpen = 'grey.300'; | ||||
| const iconBackColor = 'grey.100'; | |||||
| const iconBackColor = '#ffffff'; | |||||
| return ( | return ( | ||||
| <Box sx={{ flexShrink: 0, ml: 0.75 }}> | <Box sx={{ flexShrink: 0, ml: 0.75 }}> | ||||
| @@ -67,6 +67,18 @@ export default function SearchDemandNote({ recordList, reloadFun }) { | |||||
| } | } | ||||
| const doUploadFile = (event) => { | |||||
| let file = event.target.files[0]; | |||||
| HttpUtils.postWithFiles({ | |||||
| url:UrlUtils.DEMAND_NOTE_ATTACH, | |||||
| files:[file], | |||||
| onSuccess() { | |||||
| if (reloadFun) reloadFun(); | |||||
| }, | |||||
| }); | |||||
| document.getElementById("uploadFileBtn").value = ""; | |||||
| } | |||||
| const markPaid = () => { | const markPaid = () => { | ||||
| setConfirmPopUp(false); | setConfirmPopUp(false); | ||||
| let idList = []; | let idList = []; | ||||
| @@ -171,11 +183,32 @@ export default function SearchDemandNote({ recordList, reloadFun }) { | |||||
| return ( | return ( | ||||
| <div style={{ height: '100%', width: '100%' }}> | <div style={{ height: '100%', width: '100%' }}> | ||||
| <Grid container maxWidth justifyContent="flex-start"> | <Grid container maxWidth justifyContent="flex-start"> | ||||
| <Grid item sx={{ ml: 3, mr: 3, mb: 3, mt: 3 }}> | |||||
| <input | |||||
| id="uploadFileBtn" | |||||
| name="file" | |||||
| type="file" | |||||
| accept=".pdf" | |||||
| style={{ display: 'none' }} | |||||
| onChange={(event) => { | |||||
| doUploadFile(event) | |||||
| }} | |||||
| /> | |||||
| <label htmlFor="uploadFileBtn"> | |||||
| <Button | |||||
| component="span" | |||||
| variant="contained" | |||||
| size="large" | |||||
| > | |||||
| <Typography variant="h5">Attach DN</Typography> | |||||
| </Button> | |||||
| </label> | |||||
| </Grid> | |||||
| <Grid item sx={{ ml: 3, mr: 3, mb: 3, mt: 3 }}> | <Grid item sx={{ ml: 3, mr: 3, mb: 3, mt: 3 }}> | ||||
| <Button | <Button | ||||
| size="large" | size="large" | ||||
| variant="contained" | variant="contained" | ||||
| onClick={()=>setSendPopUp(true)} | |||||
| onClick={() => setSendPopUp(true)} | |||||
| sx={{ | sx={{ | ||||
| textTransform: 'capitalize', | textTransform: 'capitalize', | ||||
| alignItems: 'end' | alignItems: 'end' | ||||
| @@ -201,7 +234,7 @@ export default function SearchDemandNote({ recordList, reloadFun }) { | |||||
| <Button | <Button | ||||
| size="large" | size="large" | ||||
| variant="contained" | variant="contained" | ||||
| onClick={()=>setConfirmPopUp(true)} | |||||
| onClick={() => setConfirmPopUp(true)} | |||||
| sx={{ | sx={{ | ||||
| textTransform: 'capitalize', | textTransform: 'capitalize', | ||||
| alignItems: 'end' | alignItems: 'end' | ||||
| @@ -9,7 +9,7 @@ import { | |||||
| // Grid, | // Grid, | ||||
| Stack, | Stack, | ||||
| Typography, | Typography, | ||||
| Button, | |||||
| Button, StepLabel, | |||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import VisibilityIcon from '@mui/icons-material/Visibility'; | import VisibilityIcon from '@mui/icons-material/Visibility'; | ||||
| @@ -22,34 +22,11 @@ const CustomFormWizard = Loadable(lazy(() => import('./auth-forms/BusCustomFormW | |||||
| const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom'))); | const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom'))); | ||||
| import axios from "axios"; | import axios from "axios"; | ||||
| import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | ||||
| import {useTheme} from "@emotion/react"; | |||||
| // import CustomFormWizard from './auth-forms/BusCustomFormWizard'; | // import CustomFormWizard from './auth-forms/BusCustomFormWizard'; | ||||
| // import AuthWrapper from './AuthWrapperCustom'; | // import AuthWrapper from './AuthWrapperCustom'; | ||||
| // ================================|| REGISTER ||================================ // | // ================================|| REGISTER ||================================ // | ||||
| const stepStyle = { | |||||
| width: "40%", | |||||
| boxShadow: 2, | |||||
| backgroundColor: "#FFFFFF", | |||||
| padding: 2, | |||||
| "& .Mui-active": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "warning.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "warning.main" | |||||
| } | |||||
| }, | |||||
| "& .Mui-completed": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "secondary.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "secondary.main" | |||||
| } | |||||
| } | |||||
| } | |||||
| const steps = ['個人資料', '預覽', '完成提交']; | const steps = ['個人資料', '預覽', '完成提交']; | ||||
| const BusRegister = () => { | const BusRegister = () => { | ||||
| @@ -59,6 +36,39 @@ const BusRegister = () => { | |||||
| const [username, setUsername] = useState("") | const [username, setUsername] = useState("") | ||||
| const [base64Url, setBase64Url] = useState("") | const [base64Url, setBase64Url] = useState("") | ||||
| const [checkCode, setCheckCode] = useState("") | const [checkCode, setCheckCode] = useState("") | ||||
| const theme = useTheme(); | |||||
| const stepStyle = { | |||||
| [theme.breakpoints.up('lg')]: { | |||||
| width: '40%', | |||||
| }, | |||||
| [theme.breakpoints.up('md')]: { | |||||
| width: '70%', | |||||
| }, | |||||
| [theme.breakpoints.up('xs')]: { | |||||
| width: '95%', | |||||
| }, | |||||
| boxShadow: 1, | |||||
| backgroundColor: "#FFFFFF", | |||||
| padding: 2, | |||||
| "& .Mui-active": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "warning.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "warning.main" | |||||
| } | |||||
| }, | |||||
| "& .Mui-completed": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "secondary.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "secondary.main" | |||||
| } | |||||
| } | |||||
| } | |||||
| const totalSteps = () => { | const totalSteps = () => { | ||||
| return steps.length; | return steps.length; | ||||
| @@ -131,7 +141,7 @@ const BusRegister = () => { | |||||
| return ( | return ( | ||||
| // <AuthWrapper> | // <AuthWrapper> | ||||
| <Stack sx={{ width: '100%', fontSize: '2rem', paddingTop: '65px', bgcolor: 'backgroundColor.default' }} alignItems="center"> | |||||
| <Stack sx={{ width: '100%', fontSize: '2rem', paddingTop: '35px', bgcolor: 'backgroundColor.default' }} alignItems="center"> | |||||
| <Stepper activeStep={activeStep} sx={stepStyle}> | <Stepper activeStep={activeStep} sx={stepStyle}> | ||||
| {steps.map((label, index) => ( | {steps.map((label, index) => ( | ||||
| <Step key={label} completed={completed[index]} readOnly={true}> | <Step key={label} completed={completed[index]} readOnly={true}> | ||||
| @@ -140,14 +150,26 @@ const BusRegister = () => { | |||||
| (<StepButton | (<StepButton | ||||
| // onClick={handleStep(index)} | // onClick={handleStep(index)} | ||||
| > | > | ||||
| <Typography variant="step1">{label}</Typography> | |||||
| <StepLabel sx={{ | |||||
| flexDirection: 'column', | |||||
| "& .MuiStepLabel-iconContainer": { | |||||
| paddingRight: 0 | |||||
| }}}> | |||||
| <Typography variant="step1">{label}</Typography> | |||||
| </StepLabel> | |||||
| </StepButton>) : | </StepButton>) : | ||||
| (<StepButton | (<StepButton | ||||
| sx={activeStep === 2 ? { "& .MuiSvgIcon-root": { color: "warning.main", fontSize: "2rem" } } : allStepsCompleted() ? { "& .MuiSvgIcon-root": { color: "secondary.main", fontSize: "2rem" } } : { color: "rgba(0, 0, 0, 0.38)" }} | sx={activeStep === 2 ? { "& .MuiSvgIcon-root": { color: "warning.main", fontSize: "2rem" } } : allStepsCompleted() ? { "& .MuiSvgIcon-root": { color: "secondary.main", fontSize: "2rem" } } : { color: "rgba(0, 0, 0, 0.38)" }} | ||||
| icon={<VisibilityIcon />} | icon={<VisibilityIcon />} | ||||
| // onClick={handleStep(index)} | // onClick={handleStep(index)} | ||||
| > | > | ||||
| <Typography variant="step1">{label}</Typography> | |||||
| <StepLabel sx={{ | |||||
| flexDirection: 'column', | |||||
| "& .MuiStepLabel-iconContainer": { | |||||
| paddingRight: 0 | |||||
| }}}> | |||||
| <Typography variant="step1">{label}</Typography> | |||||
| </StepLabel> | |||||
| </StepButton>) | </StepButton>) | ||||
| } | } | ||||
| @@ -12,7 +12,7 @@ import { | |||||
| // Grid, | // Grid, | ||||
| Stack, | Stack, | ||||
| Typography, | Typography, | ||||
| Button, | |||||
| Button, StepLabel, | |||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import VisibilityIcon from '@mui/icons-material/Visibility'; | import VisibilityIcon from '@mui/icons-material/Visibility'; | ||||
| import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | ||||
| @@ -22,33 +22,11 @@ import Loadable from 'components/Loadable'; | |||||
| import { lazy } from 'react'; | import { lazy } from 'react'; | ||||
| import { notifyActionError } from 'utils/CommonFunction'; | import { notifyActionError } from 'utils/CommonFunction'; | ||||
| import axios from "axios"; | import axios from "axios"; | ||||
| import {useTheme} from "@emotion/react"; | |||||
| const CustomFormWizard = Loadable(lazy(() => import('./auth-forms/CustomFormWizard'))); | const CustomFormWizard = Loadable(lazy(() => import('./auth-forms/CustomFormWizard'))); | ||||
| const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom'))); | const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom'))); | ||||
| // ================================|| REGISTER ||================================ // | // ================================|| REGISTER ||================================ // | ||||
| const stepStyle = { | |||||
| width: "40%", | |||||
| boxShadow: 1, | |||||
| backgroundColor: "#FFFFFF", | |||||
| padding: 2, | |||||
| "& .Mui-active": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "warning.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "warning.main" | |||||
| } | |||||
| }, | |||||
| "& .Mui-completed": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "secondary.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "secondary.main" | |||||
| } | |||||
| } | |||||
| } | |||||
| const steps = ['個人資料', '預覽', '完成提交']; | const steps = ['個人資料', '預覽', '完成提交']; | ||||
| const Register = () => { | const Register = () => { | ||||
| @@ -58,6 +36,39 @@ const Register = () => { | |||||
| const [username, setUsername] = useState(""); | const [username, setUsername] = useState(""); | ||||
| const [base64Url, setBase64Url] = useState("") | const [base64Url, setBase64Url] = useState("") | ||||
| const [checkCode, setCheckCode] = useState("") | const [checkCode, setCheckCode] = useState("") | ||||
| const theme = useTheme(); | |||||
| const stepStyle = { | |||||
| [theme.breakpoints.up('lg')]: { | |||||
| width: '40%', | |||||
| }, | |||||
| [theme.breakpoints.up('md')]: { | |||||
| width: '70%', | |||||
| }, | |||||
| [theme.breakpoints.up('xs')]: { | |||||
| width: '95%', | |||||
| }, | |||||
| boxShadow: 1, | |||||
| backgroundColor: "#FFFFFF", | |||||
| padding: 2, | |||||
| "& .Mui-active": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "warning.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "warning.main" | |||||
| } | |||||
| }, | |||||
| "& .Mui-completed": { | |||||
| "&.MuiStepIcon-root": { | |||||
| color: "secondary.main", | |||||
| fontSize: "2rem", | |||||
| }, | |||||
| "& .MuiStepConnector-line": { | |||||
| borderColor: "secondary.main" | |||||
| } | |||||
| } | |||||
| } | |||||
| const totalSteps = () => { | const totalSteps = () => { | ||||
| return steps.length; | return steps.length; | ||||
| @@ -132,27 +143,39 @@ const Register = () => { | |||||
| return ( | return ( | ||||
| // <AuthWrapper> | // <AuthWrapper> | ||||
| <Stack sx={{ width: '100%', fontSize: '2rem', paddingTop: '65px', bgcolor: 'backgroundColor.default' }} alignItems="center"> | |||||
| <Stack sx={{ width: '100%', fontSize: '2rem', paddingTop: '35px', bgcolor: 'backgroundColor.default' }} alignItems="center"> | |||||
| <Stepper activeStep={activeStep} sx={stepStyle}> | <Stepper activeStep={activeStep} sx={stepStyle}> | ||||
| {steps.map((label, index) => ( | {steps.map((label, index) => ( | ||||
| <Step key={label} completed={completed[index]} readOnly={true}> | |||||
| { | |||||
| index < 2 ? | |||||
| (<StepButton | |||||
| // onClick={handleStep(index)} | |||||
| > | |||||
| <Typography variant="step1">{label}</Typography> | |||||
| </StepButton>) : | |||||
| (<StepButton | |||||
| sx={activeStep === 2 ? { "& .MuiSvgIcon-root": { color: "warning.main", fontSize: "2rem" } } : allStepsCompleted() ? { "& .MuiSvgIcon-root": { color: "secondary.main", fontSize: "2rem" } } : { color: "rgba(0, 0, 0, 0.38)" }} | |||||
| icon={<VisibilityIcon />} | |||||
| // onClick={handleStep(index)} | |||||
| > | |||||
| <Typography variant="step1">{label}</Typography> | |||||
| </StepButton>) | |||||
| } | |||||
| <Step key={label} completed={completed[index]} readOnly={true}> | |||||
| { | |||||
| index < 2 ? | |||||
| (<StepButton | |||||
| // onClick={handleStep(index)} | |||||
| > | |||||
| <StepLabel sx={{ | |||||
| flexDirection: 'column', | |||||
| "& .MuiStepLabel-iconContainer": { | |||||
| paddingRight: 0 | |||||
| }}}> | |||||
| <Typography variant="step1">{label}</Typography> | |||||
| </StepLabel> | |||||
| </StepButton>) : | |||||
| (<StepButton | |||||
| sx={activeStep === 2 ? { "& .MuiSvgIcon-root": { color: "warning.main", fontSize: "2rem" } } : allStepsCompleted() ? { "& .MuiSvgIcon-root": { color: "secondary.main", fontSize: "2rem" } } : { color: "rgba(0, 0, 0, 0.38)" }} | |||||
| icon={<VisibilityIcon />} | |||||
| // onClick={handleStep(index)} | |||||
| > | |||||
| <StepLabel sx={{ | |||||
| flexDirection: 'column', | |||||
| "& .MuiStepLabel-iconContainer": { | |||||
| paddingRight: 0 | |||||
| }}}> | |||||
| <Typography variant="step1">{label}</Typography> | |||||
| </StepLabel> | |||||
| </StepButton>) | |||||
| } | |||||
| </Step> | |||||
| </Step> | |||||
| ))} | ))} | ||||
| </Stepper> | </Stepper> | ||||
| {allStepsCompleted() ? ( | {allStepsCompleted() ? ( | ||||
| @@ -184,6 +207,7 @@ const Register = () => { | |||||
| disabled={true} | disabled={true} | ||||
| onClick={handleBack} | onClick={handleBack} | ||||
| sx={{ mr: 1 }} | sx={{ mr: 1 }} | ||||
| variant="h5" | |||||
| > | > | ||||
| <Typography variant="h5">返回</Typography> | <Typography variant="h5">返回</Typography> | ||||
| </Button> | </Button> | ||||
| @@ -193,6 +217,7 @@ const Register = () => { | |||||
| disabled={activeStep === 0} | disabled={activeStep === 0} | ||||
| onClick={handleBack} | onClick={handleBack} | ||||
| sx={{ mr: 1 }} | sx={{ mr: 1 }} | ||||
| variant="h5" | |||||
| > | > | ||||
| <Typography variant="h5">返回</Typography> | <Typography variant="h5">返回</Typography> | ||||
| </Button> | </Button> | ||||
| @@ -739,9 +739,8 @@ const BusCustomFormWizard = (props) => { | |||||
| )} | )} | ||||
| </Stack> | </Stack> | ||||
| <Grid container spacing={2} alignItems="center"> | <Grid container spacing={2} alignItems="center"> | ||||
| <Grid item> | |||||
| <Grid item sx={{mt:1}}> | |||||
| <Typography variant="subtitle1"> | <Typography variant="subtitle1"> | ||||
| <br /> | |||||
| •至少8個字元,字元越多越好 <br /> | •至少8個字元,字元越多越好 <br /> | ||||
| •字母和數字的混合<br /> | •字母和數字的混合<br /> | ||||
| •英文字母大寫與小寫的混合<br /> | •英文字母大寫與小寫的混合<br /> | ||||
| @@ -763,7 +762,6 @@ const BusCustomFormWizard = (props) => { | |||||
| <Grid item xs={12} md={12}> | <Grid item xs={12} md={12}> | ||||
| <Typography variant="subtitle1"> | <Typography variant="subtitle1"> | ||||
| <br /> | |||||
| •請輸入機構/公司英文名稱或中文名稱<br /> | •請輸入機構/公司英文名稱或中文名稱<br /> | ||||
| •Please enter the English/Chinese name of the organisation/company | •Please enter the English/Chinese name of the organisation/company | ||||
| </Typography> | </Typography> | ||||
| @@ -834,7 +832,7 @@ const BusCustomFormWizard = (props) => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={6}> | <Grid item xs={12} md={6}> | ||||
| <Stack spacing={1}> | <Stack spacing={1}> | ||||
| <InputLabel htmlFor="brNo-signup"> | |||||
| <InputLabel htmlFor="brNo-signup" sx={{ whiteSpace: 'pre-wrap', wordWrap: 'break-word' }}> | |||||
| <Typography variant="pnspsFormHeader"> | <Typography variant="pnspsFormHeader"> | ||||
| 商業登記證號碼 (e.g. 12341234-123-12-12-1) | 商業登記證號碼 (e.g. 12341234-123-12-12-1) | ||||
| <span style={{ color: '#f10000' }}>*</span> | <span style={{ color: '#f10000' }}>*</span> | ||||
| @@ -966,8 +964,7 @@ const BusCustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| setSelectedAddress4(newValue); | setSelectedAddress4(newValue); | ||||
| }} | }} | ||||
| size="small" | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, /*"#address4-combo": { padding: "0px 0px 0px 0px" },*/ "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address4-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} placeholder="區域 (只適用於香港)" />} | renderInput={(params) => <TextField {...params} placeholder="區域 (只適用於香港)" />} | ||||
| /> | /> | ||||
| <Autocomplete | <Autocomplete | ||||
| @@ -975,11 +972,10 @@ const BusCustomFormWizard = (props) => { | |||||
| id="address5-combo" | id="address5-combo" | ||||
| value={selectedAddress5} | value={selectedAddress5} | ||||
| options={address5ComboList} | options={address5ComboList} | ||||
| size="small" | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| if (newValue !== null) { | if (newValue !== null) { | ||||
| setSelectedAddress5(newValue); | setSelectedAddress5(newValue); | ||||
| if (newValue == '香港') { | |||||
| if (newValue === '香港') { | |||||
| setCheckCountry(false) | setCheckCountry(false) | ||||
| } else { | } else { | ||||
| setSelectedAddress4(""); | setSelectedAddress4(""); | ||||
| @@ -991,7 +987,7 @@ const BusCustomFormWizard = (props) => { | |||||
| } | } | ||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, /*"#address5-combo": { padding: "0px 0px 0px 0px" },*/ "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | ||||
| /> | /> | ||||
| {formik.touched.address1 && formik.errors.address1 && ( | {formik.touched.address1 && formik.errors.address1 && ( | ||||
| @@ -771,7 +771,7 @@ const CustomFormWizard = (props) => { | |||||
| </FormHelperText> | </FormHelperText> | ||||
| )} | )} | ||||
| </Stack> | </Stack> | ||||
| <FormControl fullWidth sx={{ mt: 1 }}> | |||||
| <FormControl fullWidth sx={{ mt: 2 }}> | |||||
| <Grid container spacing={2} alignItems="center"> | <Grid container spacing={2} alignItems="center"> | ||||
| <Grid item> | <Grid item> | ||||
| <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: '7px' }} /> | <Box sx={{ bgcolor: level?.color, width: 85, height: 8, borderRadius: '7px' }} /> | ||||
| @@ -970,6 +970,11 @@ const CustomFormWizard = (props) => { | |||||
| // sx={{height:"53px"}} | // sx={{height:"53px"}} | ||||
| startAdornment={<InputAdornment position="start">(</InputAdornment>} | startAdornment={<InputAdornment position="start">(</InputAdornment>} | ||||
| endAdornment={<InputAdornment position="end">)</InputAdornment>} | endAdornment={<InputAdornment position="end">)</InputAdornment>} | ||||
| sx={{ | |||||
| '& .MuiOutlinedInput-input': { | |||||
| padding: '5px 5px 5px 5px', // Set the desired padding inline | |||||
| }, | |||||
| }} | |||||
| inputProps={{ | inputProps={{ | ||||
| maxLength: 1, | maxLength: 1, | ||||
| onKeyDown: (e) => { | onKeyDown: (e) => { | ||||
| @@ -1163,7 +1168,7 @@ const CustomFormWizard = (props) => { | |||||
| onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
| setSelectedAddress4(newValue); | setSelectedAddress4(newValue); | ||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "48px" }, "#address4-combo": { padding: "0px 0px 0px 0px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address4-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} placeholder="區域 (只適用於香港)" />} | renderInput={(params) => <TextField {...params} placeholder="區域 (只適用於香港)" />} | ||||
| /> | /> | ||||
| <Autocomplete | <Autocomplete | ||||
| @@ -1186,7 +1191,7 @@ const CustomFormWizard = (props) => { | |||||
| } | } | ||||
| }} | }} | ||||
| sx={{ "& .MuiInputBase-root": { height: "48px" }, "#address5-combo": { padding: "0px 0px 0px 0px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| sx={{ "& .MuiInputBase-root": { height: "41px" }, "#address5-combo": { padding: "0px 0px 0px 3px" }, "& .MuiAutocomplete-endAdornment": { top: "auto" }, }} | |||||
| renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | renderInput={(params) => <TextField {...params} placeholder="國家/地區" />} | ||||
| /> | /> | ||||
| {formik.touched.address1 && formik.errors.address1 && ( | {formik.touched.address1 && formik.errors.address1 && ( | ||||
| @@ -77,7 +77,7 @@ export default function UploadFileTable({ recordList, setUpdateRows, }) { | |||||
| id: 'name', | id: 'name', | ||||
| field: 'name', | field: 'name', | ||||
| headerName: <Typography variant="h6">檔案名稱</Typography>, | headerName: <Typography variant="h6">檔案名稱</Typography>, | ||||
| flex: 5, | |||||
| flex: 4, | |||||
| }, | }, | ||||
| { | { | ||||
| id: 'size', | id: 'size', | ||||
| @@ -87,7 +87,7 @@ export default function UploadFileTable({ recordList, setUpdateRows, }) { | |||||
| // console.log(params) | // console.log(params) | ||||
| return Math.ceil(params.value / 1024) + " KB"; | return Math.ceil(params.value / 1024) + " KB"; | ||||
| }, | }, | ||||
| flex: 1, | |||||
| flex: 2, | |||||
| }, | }, | ||||
| ]; | ]; | ||||
| @@ -128,7 +128,7 @@ export const PNSPS_LONG_BUTTON_THEME = createTheme({ | |||||
| root: { | root: { | ||||
| fontSize: '1.0rem', | fontSize: '1.0rem', | ||||
| height: '40px', | height: '40px', | ||||
| width: '40vw', // Default width for xs screen sizes | |||||
| width: '70vw', // Default width for xs screen sizes | |||||
| '@media (min-width: 600px)': { // sm breakpoint | '@media (min-width: 600px)': { // sm breakpoint | ||||
| width: '30vw', | width: '30vw', | ||||
| }, | }, | ||||
| @@ -136,7 +136,7 @@ export const PNSPS_LONG_BUTTON_THEME = createTheme({ | |||||
| width: '25vw', | width: '25vw', | ||||
| }, | }, | ||||
| '@media (min-width: 1280px)': { // lg breakpoint | '@media (min-width: 1280px)': { // lg breakpoint | ||||
| width: '14vw', | |||||
| width: '19vw', | |||||
| }, | }, | ||||
| textTransform: "none", | textTransform: "none", | ||||
| alignItems: 'center' | alignItems: 'center' | ||||
| @@ -104,6 +104,7 @@ export const DEMAND_NOTE_LIST = apiPath+'/demandNote/list';//GET | |||||
| export const DEMAND_NOTE_LOAD = apiPath+'/demandNote/load';//GET | export const DEMAND_NOTE_LOAD = apiPath+'/demandNote/load';//GET | ||||
| export const DEMAND_NOTE_SEND = apiPath+'/demandNote/send-dn';//POST | export const DEMAND_NOTE_SEND = apiPath+'/demandNote/send-dn';//POST | ||||
| export const DEMAND_NOTE_MARK_PAID = apiPath+'/demandNote/mark-as-paid';//POST | export const DEMAND_NOTE_MARK_PAID = apiPath+'/demandNote/mark-as-paid';//POST | ||||
| export const DEMAND_NOTE_ATTACH = apiPath+'/demandNote/attach';//POST | |||||
| @@ -86,54 +86,9 @@ export const fileDownload = ({url, fileId, skey, filename, onResponse, onError}) | |||||
| }); | }); | ||||
| }; | }; | ||||
| // export const reportDownload = ({url, onError}) =>{ | |||||
| // axios.get( url, | |||||
| // { | |||||
| // responseType: 'blob', | |||||
| // } | |||||
| // ).then( | |||||
| // (response)=>{ | |||||
| // const filename = response.headers | |||||
| // .get("content-disposition") | |||||
| // .split("filename=")[1] | |||||
| // .split('"')[1].trim(); | |||||
| // const url = URL.createObjectURL(response.data); | |||||
| // const a = document.createElement('a'); | |||||
| // a.href = url; | |||||
| // a.setAttribute("download", filename); | |||||
| // document.body.appendChild(a); | |||||
| // a.click(); | |||||
| // document.body.removeChild(a); | |||||
| // URL.revokeObjectURL(url); | |||||
| // } | |||||
| // ).catch(error => { | |||||
| // return handleError(error,onError); | |||||
| // }); | |||||
| // }; | |||||
| export const fileUpload = ({ refType, refId, files, refCode, onSuccess, onFail, onError}) =>{ | |||||
| // console.log(files); | |||||
| // var formData = new FormData(); | |||||
| // for (let i = 0; i < files.length; i++){ | |||||
| // const file = files[i] | |||||
| // formData.append("multipartFileList", file); | |||||
| // } | |||||
| // // formData.append("multipartFile", file); | |||||
| // formData.append("refType", refType); | |||||
| // formData.append("refId", refId); | |||||
| // if(refCode){ | |||||
| // formData.append("refCode", refCode); | |||||
| // } | |||||
| // console.log(formData) | |||||
| // axios.post(FILE_UP_POST,formData,{ | |||||
| // headers: { | |||||
| // "Content-Type":"multipart/form-data" | |||||
| // } | |||||
| // }).then( | |||||
| // (response)=>{ | |||||
| // onResponse(response,onSuccess,onFail); | |||||
| // } | |||||
| // ).catch(error => { return handleError(error, onError); }); | |||||
| export const fileUpload = ({refType, refId, files, refCode, onSuccess, onFail, onError}) =>{ | |||||
| postWithFiles({ | postWithFiles({ | ||||
| url: FILE_UP_POST, | url: FILE_UP_POST, | ||||
| params:{ | params:{ | ||||