@@ -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:{ | ||||