Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

342 wiersze
15 KiB

  1. import React from 'react';
  2. import { makeStyles } from '@material-ui/core/styles';
  3. import clsx from 'clsx';
  4. import SnackbarContent from "components/Snackbar/SnackbarContent.js";
  5. import Button1 from "components/CustomButtons/Button.js";
  6. import image1 from "../../../assets/img/mail.png"
  7. import GridContainer from "components/Grid/GridContainer.js";
  8. import classNames from "classnames";
  9. import Icon from "@material-ui/core/Icon";
  10. import Grid from '@material-ui/core/Grid';
  11. import TextField from '@material-ui/core/TextField';
  12. import Button from '@material-ui/core/Button';
  13. import Dialog from '@material-ui/core/Dialog';
  14. import ListItemText from '@material-ui/core/ListItemText';
  15. import ListItem from '@material-ui/core/ListItem';
  16. import List from '@material-ui/core/List';
  17. import Divider from '@material-ui/core/Divider';
  18. import AppBar from '@material-ui/core/AppBar';
  19. import Toolbar from '@material-ui/core/Toolbar';
  20. import IconButton from '@material-ui/core/IconButton';
  21. import Typography from '@material-ui/core/Typography';
  22. import CloseIcon from '@material-ui/icons/Close';
  23. import Slide from '@material-ui/core/Slide';
  24. import FormControl from '@material-ui/core/FormControl';
  25. import Select from '@material-ui/core/Select';
  26. import MenuItem from '@material-ui/core/MenuItem';
  27. import Card from "components/Card/Card.js";
  28. import CardBody from "components/Card/CardBody.js";
  29. const useStyles = makeStyles((theme) => ({
  30. root: {
  31. width: '100%',
  32. },
  33. button: {
  34. marginTop: theme.spacing(1),
  35. marginRight: theme.spacing(1),
  36. },
  37. actionsContainer: {
  38. marginBottom: theme.spacing(2),
  39. },
  40. resetContainer: {
  41. padding: theme.spacing(3),
  42. },
  43. appBar: {
  44. position: 'relative',
  45. },
  46. title: {
  47. marginLeft: theme.spacing(2),
  48. flex: 1,
  49. },
  50. root: {
  51. '&:hover': {
  52. backgroundColor: 'transparent',
  53. },
  54. },
  55. icon: {
  56. borderRadius: '50%',
  57. width: 16,
  58. height: 16,
  59. boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',
  60. backgroundColor: '#f5f8fa',
  61. backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',
  62. '$root.Mui-focusVisible &': {
  63. outline: '2px auto rgba(19,124,189,.6)',
  64. outlineOffset: 2,
  65. },
  66. 'input:hover ~ &': {
  67. backgroundColor: '#ebf1f5',
  68. },
  69. 'input:disabled ~ &': {
  70. boxShadow: 'none',
  71. background: 'rgba(206,217,224,.5)',
  72. },
  73. },
  74. checkedIcon: {
  75. backgroundColor: '#137cbd',
  76. backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',
  77. '&:before': {
  78. display: 'block',
  79. width: 16,
  80. height: 16,
  81. backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',
  82. content: '""',
  83. },
  84. 'input:hover ~ &': {
  85. backgroundColor: '#106ba3',
  86. },
  87. },
  88. }));
  89. const Transition = React.forwardRef(function Transition(props, ref) {
  90. return <Slide direction="up" ref={ref} {...props} />;
  91. });
  92. const DataCheckout = function ({ province, cities, midtransClient, backend, checkoutproduct, transactionToken, ...props }) {
  93. console.log('Token :',transactionToken);
  94. const classes = useStyles();
  95. const [open, setOpen] = React.useState(false);
  96. const handleClickOpen = () => {
  97. setOpen(true);
  98. };
  99. const handleClose = () => {
  100. setOpen(false);
  101. };
  102. const { ...rest } = props;
  103. const imageClasses = classNames(
  104. classes.imgRaised,
  105. classes.imgRoundedCircle,
  106. classes.imgFluid
  107. );
  108. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  109. const CheckoutAlamat = checkoutproduct.map((data) => {
  110. return (
  111. <div align="center">
  112. <Card className={classes.textCenter} align="center">
  113. <CardBody>
  114. <div style={{padding:"10px"}}>
  115. <Typography variant="h6" align="left" className={classes.title}>
  116. Alamat Pengiriman
  117. </Typography><br></br>
  118. <img src={image1} style={{width:"1100px"}}/><br></br>
  119. <h5>Yusmar</h5>
  120. <h5>087797315685</h5>
  121. <h5>Thamrin Indrapura Jl.Aipda Karel Satsuit Tubun,17 Ilir, Kec.Ilir Tim.I, Palembang, KOTA PALEMBANG - ILIR TIMUR II, SUMATERA SELATAN, ID 30114</h5>
  122. <Button1 color="info" href={"/yamaha/profile/edit-profile"}>
  123. <Icon className={classes.icons}>cached</Icon>
  124. Ubah Alamat
  125. </Button1>
  126. </div>
  127. </CardBody>
  128. </Card>
  129. </div>
  130. );
  131. })
  132. const CheckoutProdukPesanan = checkoutproduct.map((data) => {
  133. const handleChange = (event) => {
  134. setAge(event.target.value);
  135. };
  136. const handleChanges = (event) => {
  137. setPengiriman(event.target.value);
  138. };
  139. const [age, setAge] = React.useState('');
  140. const [pengiriman, setPengiriman] = React.useState('');
  141. return (
  142. <div align="center">
  143. <Card className={classes.textCenter} align="center">
  144. <CardBody>
  145. <div style={{padding:"10px"}}>
  146. <Typography variant="h6" align="left" className={classes.title}>
  147. Pesanan Produk
  148. </Typography><br></br><hr></hr>
  149. <GridContainer>
  150. <Grid item xs>
  151. <div align="center">
  152. <h4>Produk Dipesan</h4>
  153. <img className={navImageClasses} width="200px" alt="First slide" src={`${backend}${data.img[0]["url"]}`} />
  154. </div>
  155. </Grid>
  156. <Grid item xs>
  157. <div align="center">
  158. <h4></h4><br></br><br></br><br></br><br></br>
  159. <h5>{data.name}</h5>
  160. </div>
  161. </Grid>
  162. <Grid item xs>
  163. <div align="center">
  164. <h4>Warna</h4><br></br><br></br><br></br>
  165. <FormControl className={classes.formControl}>
  166. <Select
  167. labelId="demo-simple-select-label"
  168. id="demo-simple-select"
  169. value={age}
  170. onChange={handleChange}
  171. >
  172. <MenuItem value={10}>Hitam</MenuItem>
  173. <MenuItem value={20}>Merah</MenuItem>
  174. <MenuItem value={30}>Biru</MenuItem>
  175. <MenuItem value={30}>Putih</MenuItem>
  176. </Select>
  177. </FormControl>
  178. </div>
  179. </Grid>
  180. <Grid item xs>
  181. <div align="center">
  182. <h4>Harga Satuan</h4><br></br><br></br><br></br>
  183. <h5>Rp.{data.price}</h5>
  184. </div>
  185. </Grid>
  186. <Grid item xs>
  187. <div align="center">
  188. <h4>Jumlah Unit</h4><br></br><br></br><br></br>
  189. <FormControl className={classes.formControl}>
  190. <TextField
  191. id="outlined-number"
  192. type="number"
  193. align="center"
  194. InputLabelProps={{
  195. shrink: true,
  196. }}
  197. />
  198. </FormControl>
  199. </div>
  200. </Grid>
  201. <Grid item xs>
  202. <div align="center">
  203. <h4>Sub Total Produk</h4><br></br><br></br><br></br>
  204. <h5>Total Rp.{data.price}</h5>
  205. </div>
  206. </Grid>
  207. </GridContainer>
  208. <GridContainer style={{padding:"20px"}}>
  209. <Grid item xs style={{padding:"20px"}}>
  210. <TextField
  211. id="outlined-full-width"
  212. label="Pesan"
  213. style={{ margin: 8 }}
  214. placeholder="( Opsional ) Tinggalkan Pesan Kepada Dealer"
  215. fullWidth
  216. margin="normal"
  217. InputLabelProps={{
  218. shrink: true,
  219. }}
  220. variant="outlined"
  221. />
  222. </Grid>
  223. <Grid item xs style={{padding:"20px"}}><br></br>
  224. <Button variant="outlined" color="primary" onClick={handleClickOpen}>
  225. Pilih Opsi Pengiriman
  226. </Button>
  227. <Dialog fullScreen open={open} onClose={handleClose} TransitionComponent={Transition}>
  228. <AppBar className={classes.appBar}>
  229. <Toolbar>
  230. <IconButton edge="start" color="inherit" onClick={handleClose} aria-label="close">
  231. <CloseIcon />
  232. </IconButton>
  233. <Typography variant="h6" className={classes.title}>
  234. Pilih Opsi Pengiriman
  235. </Typography>
  236. <Button autoFocus color="inherit" onClick={handleClose}>
  237. Pilih
  238. </Button>
  239. </Toolbar>
  240. </AppBar>
  241. <List>
  242. <ListItem button
  243. id="POS"
  244. value={pengiriman}
  245. onChange={handleChanges}
  246. >
  247. <ListItemText primary="POS" secondary="Akan diterima pada tanggal 2 Apr - 6 Apr" />
  248. </ListItem>
  249. <Divider />
  250. <ListItem button
  251. id="JNE"
  252. value={pengiriman}
  253. onChange={handleChanges}
  254. >
  255. <ListItemText primary="JNE" secondary="Akan diterima pada tanggal 30 Mar - 2 Apr" />
  256. </ListItem>
  257. <ListItem button
  258. id="TIKI"
  259. value={pengiriman}
  260. onChange={handleChanges}
  261. >
  262. <ListItemText primary="TIKI" secondary="Akan diterima pada tanggal 1 Apr - 4 Apr, COD (Bayar di Tempat) tidak didukung" />
  263. </ListItem>
  264. </List>
  265. </Dialog>
  266. </Grid>
  267. <Grid item xs align="right" style={{padding:"20px"}}><br></br>
  268. Total Rp. {data.price}
  269. </Grid>
  270. </GridContainer>
  271. </div>
  272. </CardBody>
  273. </Card>
  274. </div>
  275. );
  276. })
  277. return (
  278. <div style={{padding:"50px"}}>
  279. <script type="text/javascript" src="https://app.sandbox.midtrans.com/snap/snap.js" data-client-key="SB-Mid-client-srx674LjNbEybd4-"/>
  280. <div align="center" className={classes.section} id="notifications">
  281. <SnackbarContent
  282. message={
  283. <h2><b>Checkout</b></h2>
  284. }
  285. align="center"
  286. color="danger"
  287. />
  288. </div>
  289. <div>
  290. {CheckoutAlamat}
  291. </div>
  292. <div>
  293. {CheckoutProdukPesanan}
  294. </div>
  295. <div>
  296. <Card className={classes.textCenter} align="center">
  297. <CardBody>
  298. <GridContainer>
  299. <Grid item xs={6} style={{padding:"20px"}}>
  300. <Button1 color="info" href="/yamaha/order/order">
  301. <Icon className={classes.icons}>attach_money</Icon>
  302. Buat Pesanan
  303. </Button1>
  304. </Grid>
  305. <Grid item xs={6} style={{padding:"20px"}}>
  306. <Button1 color="danger" onClick={(e)=>{snap.pay(transactionToken);}} style={{width:"100%"}}>
  307. <Icon className={classes.icons}>attach_money</Icon>
  308. Batalkan Pesanan
  309. </Button1>
  310. </Grid>
  311. </GridContainer>
  312. {/* <GridContainer>
  313. <Grid item xs={6} style={{padding:"20px"}}>
  314. <Button1 color="info" onClick={(e)=>{snap.pay(transactionToken);}} style={{width:"100%"}}>
  315. <Icon className={classes.icons}>attach_money</Icon>
  316. Bayar Pesanan
  317. </Button1>
  318. </Grid>
  319. <Grid item xs={6} style={{padding:"20px"}}>
  320. <Button1 color="info" onClick={(e)=>{snap.pay(transactionToken);}} style={{width:"100%"}}>
  321. <Icon className={classes.icons}>attach_money</Icon>
  322. Bayar Pesanan
  323. </Button1>
  324. </Grid>
  325. </GridContainer> */}
  326. </CardBody>
  327. </Card>
  328. </div>
  329. </div>
  330. );
  331. }
  332. export default DataCheckout;