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.
 
 

450 linhas
21 KiB

  1. import React, { useState, useEffect } from "react";
  2. import classNames from "classnames";
  3. import { makeStyles } from "@material-ui/core/styles";
  4. import ReactHtmlParser from "react-html-parser";
  5. import Dashboard from "@material-ui/icons/Dashboard";
  6. import Icon from "@material-ui/core/Icon";
  7. import NumberFormat from 'react-number-format';
  8. import Rating from '@material-ui/lab/Rating';
  9. import CustomTabs from "components/CustomTabs/CustomTabs.js";
  10. import Select from 'react-select';
  11. import GridContainer from "components/Grid/GridContainer.js";
  12. import Grid from '@material-ui/core/Grid';
  13. import GridItem from "components/Grid/GridItem.js";
  14. import NavPills from "components/NavPills/NavPills.js";
  15. import Card from "components/Card/Card.js";
  16. import CardBody from "components/Card/CardBody.js";
  17. import CardHeader from "components/Card/CardHeader.js";
  18. import CardFooter from "components/Card/CardFooter.js";
  19. import Button from "components/CustomButtons/Button.js";
  20. import styles from "assets/jss/nextjs-material-kit/pages/profilePage.js";
  21. import Carousel from "react-slick";
  22. const useStyles = makeStyles(styles);
  23. const DataProduct = function ({ backend, detailproduct, ...props }) {
  24. console.log(detailproduct);
  25. const classes = useStyles();
  26. const { ...rest } = props;
  27. const imageClasses = classNames(
  28. classes.imgRaised,
  29. classes.imgRoundedCircle,
  30. classes.imgFluid
  31. );
  32. const settings = {
  33. dots: true,
  34. infinite: true,
  35. speed: 500,
  36. slidesToShow: 1,
  37. slidesToScroll: 1,
  38. autoplay: true,
  39. time: 5
  40. };
  41. const [value, setValue] = React.useState(5);
  42. const [value5, setValue5] = React.useState(5);
  43. const [value4, setValue4] = React.useState(4);
  44. const [value3, setValue3] = React.useState(3);
  45. const [value2, setValue2] = React.useState(2);
  46. const [value1, setValue1] = React.useState(1);
  47. const navImageClasses = classNames(classes.imgRounded, classes.imgGallery);
  48. const Productdetails = detailproduct.map((data) => {
  49. return (
  50. <div>
  51. <GridContainer>
  52. <Grid fluid xs={5}>
  53. <div className={classes.section} id="notifications">
  54. <div className={classes.section}>
  55. <div className={classes.container}>
  56. <GridContainer>
  57. <GridItem className={classes.marginAuto}>
  58. <div className="container">
  59. <Carousel>
  60. <img src={`${backend}${data.img[0]["url"]}`}/>
  61. <img src={`${backend}${data.img[1]["url"]}`}/>
  62. <img src={`${backend}${data.img[2]["url"]}`}/>
  63. <img src={`${backend}${data.img[3]["url"]}`}/>
  64. </Carousel>
  65. </div>
  66. <div align="center">
  67. <h3><b>Pilih Harga OTR Daerah</b></h3>
  68. <Select
  69. getOptionLabel={option => `${option.name}`}
  70. getOptionValue={option => option.id}
  71. options={data.product_otrs}
  72. isMulti
  73. instanceId="name"
  74. placeholder="Pilih Harga OTR"
  75. onChange={values => handleName(values)}
  76. />
  77. <h3><b>Ulasan (17)</b></h3>
  78. <h5><b>{data.name}</b></h5>
  79. <GridContainer>
  80. <Grid fluid xs={5}>
  81. <h1><b>5.0</b></h1>
  82. <Rating align="center" name="read-only" value={value} readOnly/>
  83. </Grid>
  84. <Grid fluid xs={5}>
  85. <GridContainer>
  86. <Grid fluid xs={3}>
  87. <Rating name="read-only" value={value5} readOnly/>
  88. </Grid>
  89. <Grid fluid xs={5}>
  90. </Grid>
  91. </GridContainer>
  92. <GridContainer>
  93. <Grid fluid xs={5}>
  94. <Rating name="read-only" value={value4} readOnly/>
  95. </Grid>
  96. <Grid fluid xs={5}>
  97. </Grid>
  98. </GridContainer>
  99. <GridContainer>
  100. <Grid fluid xs={5}>
  101. <Rating name="read-only" value={value3} readOnly/>
  102. </Grid>
  103. <Grid fluid xs={5}>
  104. </Grid>
  105. </GridContainer>
  106. <GridContainer>
  107. <Grid fluid xs={5}>
  108. <Rating name="read-only" value={value2} readOnly/>
  109. </Grid>
  110. <Grid fluid xs={5}>
  111. </Grid>
  112. </GridContainer>
  113. <GridContainer>
  114. <Grid fluid xs={5}>
  115. <Rating name="read-only" value={value1} readOnly/>
  116. </Grid>
  117. <Grid fluid xs={5}>
  118. </Grid>
  119. </GridContainer>
  120. </Grid>
  121. </GridContainer>
  122. </div>
  123. {/* <Button color="info" round href={"/product_detail?s="+data.id}>
  124. <Icon className={classes.icons}>shopping_cart</Icon>Add To Cart
  125. </Button> */}
  126. </GridItem>
  127. </GridContainer>
  128. </div>
  129. </div>
  130. </div>
  131. </Grid>
  132. <Grid xs={7} style={{padding:"40px", marginTop:"-60px"}}>
  133. <h3><b>{data.name}</b></h3>
  134. <Rating name="read-only" value={value} readOnly/>
  135. <div style={{marginTop:"-20px"}}>
  136. <h3><b>
  137. <NumberFormat value={data.price1} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} /> s/d <NumberFormat value={data.price2} displayType={'text'} thousandSeparator={true} prefix={'Rp.'} />
  138. </b></h3>
  139. </div><br/>
  140. <CustomTabs
  141. headerColor="info"
  142. tabs={[
  143. {
  144. tabName: "Detail Product",
  145. tabContent: (
  146. <p className={classes.textCenter}>
  147. <b>{ReactHtmlParser(data.description)}</b>
  148. </p>
  149. ),
  150. },
  151. {
  152. tabName: "Info Penting",
  153. tabContent: (
  154. <p className={classes.textCenter}>
  155. <h4><b>Informasi mengenai prosedur pengiriman, pembelian dan dokumen</b></h4>
  156. <ul>
  157. <li>Kota Palembang, Kayu Agung, Prabumulih, Pangkalan Balai, Betung : 2-3 hari kerja*</li>
  158. <li>Untuk daerah Sungsang/daerah lain yang menggunakan kapal motor, maka motor diantar sampai di dermaga sesuai dengan jadwal yang diinformasikan</li>
  159. <li>Sekayu, Babat Toman, Pendopo, Baturaja, Martapura, Muara Dua, Lahat, Tanjung Enim, Tugu Mulyo, Belitang : 4-5 hari kerja*</li>
  160. <li>Lubuk Linggau, Curup, Pagar Alam : 6-7 hari kerja*</li>
  161. </ul>
  162. <h4><b>Informasi mengenai prosedur pengiriman, pembelian dan dokumen</b></h4>
  163. <h4><b>Harga</b></h4>
  164. <ul>
  165. <li>Harga OTR sudah termasuk biaya pengiriman dan BBN, kecuali tambahan pengenaan pajak progresif kepemilikan kendaraan bermotor (sesuai dengan peraturan yang telah ditetapkan oleh pemerintah)</li>
  166. <li>Harga OTR diatas berlaku untuk KTP domisili PALEMBANG, OGAN ILIR, dan BANYUASIN, diluar wilayah tersebut harap menghubungi kami untuk konfirmasi harga.</li>
  167. <li>Harga OTR sewaktu-waktu dapat berubah.</li>
  168. <li>Proses pemesanan sepeda motor tidak dapat dibatalkan dan warna yang sudah dipesan tidak dapat diubah.</li>
  169. <li>Proses pemesanan yang terkait waktu pengiriman produk dan kelengkapan dokumen yang dibutuhkan untuk pembuatan STNK dan BPKB akan diinformasikan oleh pihak Dealer.</li>
  170. <li>Proses pengiriman sepeda motor akan dilakukan setelah pelunasan transaksi dan dokumen yang dibutuhkan telah lengkap.</li>
  171. </ul>
  172. <h4><b>Dokumen</b></h4>
  173. <ul>
  174. <li>Proses pembuatan STNK setelah KTP diterima oleh pihak dealer adalah 19-25 hari kerja*.</li>
  175. <li>Proses pembuatan BPKB adalah 3-4 bulan.</li>
  176. <li>STNK dan BPKB wajib diambil sendiri oleh pihak yang bersangkutan sesuai dengan identitas yang tertera STNK di dealer yang ditunjuk.</li>
  177. <li>Untuk proses pembuatan STNK dan BPKB sepenuhnya menjadi tanggung jawab dealer terkait.</li>
  178. <li>Buku servis diterima bersamaan dengan pengiriman sepeda motor.</li>
  179. </ul>
  180. <h4><b>*tidak termasuk Sabtu dan Minggu.</b></h4>
  181. </p>
  182. ),
  183. },
  184. ]}
  185. />
  186. </Grid>
  187. </GridContainer>
  188. <GridContainer justify="center">
  189. <GridItem>
  190. <NavPills
  191. color="primary"
  192. align="center"
  193. alignCenter
  194. tabs={[
  195. // {
  196. // tabButton: "Overview",
  197. // tabIcon: Dashboard,
  198. // tabContent: (
  199. // <div>
  200. // <GridItem className={classes.marginAuto}>
  201. // <div align="justify">
  202. // <table>
  203. // <tr>
  204. // <td>
  205. // <h4><b>{ReactHtmlParser(data.overview1)}</b></h4>
  206. // </td>
  207. // <td>
  208. // <img src={`${backend}${data.img_overview1["url"]}`} />
  209. // </td>
  210. // </tr>
  211. // <tr>
  212. // <td>
  213. // <img src={`${backend}${data.img_overview2["url"]}`} />
  214. // </td>
  215. // <td>
  216. // <h4><b>{ReactHtmlParser(data.overview2)}</b></h4>
  217. // </td>
  218. // </tr>
  219. // <tr>
  220. // <td>
  221. // <h4><b>{ReactHtmlParser(data.overview3)}</b></h4>
  222. // </td>
  223. // <td>
  224. // <img src={`${backend}${data.img_overview3["url"]}`} />
  225. // </td>
  226. // </tr>
  227. // <tr>
  228. // <td>
  229. // <img src={`${backend}${data.img_overview4["url"]}`} />
  230. // </td>
  231. // <td>
  232. // <h4><b>{ReactHtmlParser(data.overview4)}</b></h4>
  233. // </td>
  234. // </tr>
  235. // <tr>
  236. // <td>
  237. // <h4><b>{ReactHtmlParser(data.overview5)}</b></h4>
  238. // </td>
  239. // <td>
  240. // <img src={`${backend}${data.img_overview5["url"]}`} />
  241. // </td>
  242. // </tr>
  243. // <tr>
  244. // <td>
  245. // <img src={`${backend}${data.img_overview6["url"]}`} />
  246. // </td>
  247. // <td>
  248. // <h4><b>{ReactHtmlParser(data.overview6)}</b></h4>
  249. // </td>
  250. // </tr>
  251. // <tr>
  252. // <td>
  253. // <h4><b>{ReactHtmlParser(data.overview7)}</b></h4>
  254. // </td>
  255. // <td>
  256. // <img src={`${backend}${data.img_overview7["url"]}`} />
  257. // </td>
  258. // </tr>
  259. // <tr>
  260. // <td>
  261. // <img src={`${backend}${data.img_overview8["url"]}`} />
  262. // </td>
  263. // <td>
  264. // <h4><b>{ReactHtmlParser(data.overview8)}</b></h4>
  265. // </td>
  266. // </tr>
  267. // <tr>
  268. // <td>
  269. // <h4><b>{ReactHtmlParser(data.overview9)}</b></h4>
  270. // </td>
  271. // <td>
  272. // <img src={`${backend}${data.img_overview9["url"]}`} />
  273. // </td>
  274. // </tr>
  275. // <tr>
  276. // <td>
  277. // <img src={`${backend}${data.img_overview10["url"]}`} />
  278. // </td>
  279. // <td>
  280. // <h4><b>{ReactHtmlParser(data.overview10)}</b></h4>
  281. // </td>
  282. // </tr>
  283. // </table>
  284. // </div>
  285. // </GridItem>
  286. // </div>
  287. // ),
  288. // },
  289. {
  290. tabButton: "Overview",
  291. tabIcon: Dashboard,
  292. tabContent: (
  293. <div>
  294. <GridItem className={classes.marginAuto}>
  295. <div align="center">
  296. <table>
  297. <tr>
  298. <td>
  299. <h4><b>{ReactHtmlParser(data.overview1)}</b></h4>
  300. </td>
  301. <td>
  302. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/201912012240262893A2540.jpg"/>
  303. </td>
  304. </tr>
  305. <tr>
  306. <td>
  307. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120516484034670K42560.jpg"/>
  308. </td>
  309. <td>
  310. <h4><b>{ReactHtmlParser(data.overview2)}</b></h4>
  311. </td>
  312. </tr>
  313. <tr>
  314. <td>
  315. <h4><b>{ReactHtmlParser(data.overview3)}</b></h4>
  316. </td>
  317. <td>
  318. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402661202S19702.jpg"/>
  319. </td>
  320. </tr>
  321. <tr>
  322. <td>
  323. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123231136996Y5592.jpg"/>
  324. </td>
  325. <td>
  326. <h4><b>{ReactHtmlParser(data.overview4)}</b></h4>
  327. </td>
  328. </tr>
  329. <tr>
  330. <td>
  331. <h4><b>{ReactHtmlParser(data.overview5)}</b></h4>
  332. </td>
  333. <td>
  334. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173855561Z61407.jpg"/>
  335. </td>
  336. </tr>
  337. <tr>
  338. <td>
  339. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173867373B74912.jpg"/>
  340. </td>
  341. <td>
  342. <h4><b>{ReactHtmlParser(data.overview6)}</b></h4>
  343. </td>
  344. </tr>
  345. <tr>
  346. <td>
  347. <h4><b>{ReactHtmlParser(data.overview7)}</b></h4>
  348. </td>
  349. <td>
  350. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120123173831375M60860.jpg"/>
  351. </td>
  352. </tr>
  353. <tr>
  354. <td>
  355. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402691982X34635.jpg"/>
  356. </td>
  357. <td>
  358. <h4><b>{ReactHtmlParser(data.overview8)}</b></h4>
  359. </td>
  360. </tr>
  361. <tr>
  362. <td>
  363. <h4><b>{ReactHtmlParser(data.overview9)}</b></h4>
  364. </td>
  365. <td>
  366. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/201912012240264043F92645.jpg"/>
  367. </td>
  368. </tr>
  369. <tr>
  370. <td>
  371. <img src="https://www.yamaha-motor.co.id/uploads/products/overview/2019120122402675980Z35071.jpg"/>
  372. </td>
  373. <td>
  374. <h4><b>{ReactHtmlParser(data.overview10)}</b></h4>
  375. </td>
  376. </tr>
  377. </table>
  378. </div>
  379. </GridItem>
  380. </div>
  381. ),
  382. },
  383. {
  384. tabButton: "Specification",
  385. tabIcon: Dashboard,
  386. tabContent: (
  387. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  388. <GridItem className={classes.marginAuto}>
  389. <div align="justify">
  390. <h2>Spesifikasi Mesin</h2>
  391. {ReactHtmlParser(data.spesifikasi_mesin)}<br/><br/>
  392. <h2>Spesifikasi Dimensi</h2>
  393. {ReactHtmlParser(data.spesifikasi_dimensi)}<br/><br/>
  394. <h2>Spesifikasi Rangka</h2>
  395. {ReactHtmlParser(data.spesifikasi_rangka)}<br/><br/>
  396. <h2>Spesifikasi Kelistrikan</h2>
  397. {ReactHtmlParser(data.spesifikasi_kelistrikan)}<br/><br/>
  398. </div>
  399. </GridItem>
  400. </GridContainer>
  401. ),
  402. },
  403. {
  404. tabButton: "Film",
  405. tabIcon: Dashboard,
  406. tabContent: (
  407. <GridContainer justify="center" style={{padding:"40px", marginTop:"-30px"}}>
  408. <GridItem className={classes.marginAuto}>
  409. <div align="justify">
  410. {ReactHtmlParser(data.film)}
  411. </div>
  412. </GridItem>
  413. </GridContainer>
  414. ),
  415. },
  416. ]}
  417. />
  418. </GridItem>
  419. </GridContainer>
  420. </div>
  421. );
  422. })
  423. return (
  424. <Card className={classes.textCenter}>
  425. <div align="center">
  426. <CardHeader color="info">Product Detail</CardHeader>
  427. </div>
  428. <CardBody>
  429. <div>
  430. {Productdetails}
  431. </div>
  432. </CardBody>
  433. <CardFooter className={classes.textMuted} textAlign="center">
  434. © 2020 , All Right Reserved by @Thamrin Brother Company
  435. </CardFooter>
  436. </Card>
  437. );
  438. }
  439. export default DataProduct;