diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index bd4c46a..7a3afd0 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -1,11 +1,23 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Button, Form, Input, message, Modal, Select, Space, Table, Tag,} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useEffect, useState } from "react"; +import { + Button, + Form, + Input, + message, + Modal, + Select, + Space, + Table, + Tag, + List, + Divider, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; export const PartnerComponent = observer((props) => { const store = useStore(); @@ -78,7 +90,7 @@ export const PartnerComponent = observer((props) => { render: (text, record) => ( {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -121,7 +133,7 @@ export const PartnerComponent = observer((props) => { const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", - icon: , + icon: , okText: "Yes", okType: "primary", cancelText: "Cancel", @@ -181,36 +193,126 @@ export const PartnerComponent = observer((props) => { }; return (
- { - let pageNumber = page.current; - store.partner.pageSize = page.pageSize; - store.partner.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.partner.getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.partner.pageSize = page.pageSize; + store.partner.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.partner.getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.partner.pageSize = page.pageSize; + store.partner.page = page.current; + modalLoader.setLoading(true); + await store.partner.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.partner.pageSize, + total: store.partner.total_data, + current: store.partner.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.partner.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Nama : {item.name}
+ Npwp : {item.npwp}
+ Address : {item.address} + + + + {/* */} + + +

+

+
+ } + /> +
+

+ + {item?.status === true ? " ACTIVE" : "INACTIVE"} + +

+
+ + + + ); + }} + /> + )} { label="Name" rules={[ idData - ? {required: false} - : {required: true, message: "Please input password name!"}, + ? { required: false } + : { required: true, message: "Please input password name!" }, ]} > - + )} {!idData && ( @@ -251,11 +353,11 @@ export const PartnerComponent = observer((props) => { label="Owner" rules={[ idData - ? {required: false} - : {required: true, message: "Please input password owner!"}, + ? { required: false } + : { required: true, message: "Please input password owner!" }, ]} > - + )} {((idData && isChangePassword) || !idData) && ( @@ -264,14 +366,14 @@ export const PartnerComponent = observer((props) => { label="Password Account" rules={[ idData - ? {required: false} + ? { required: false } : { - required: true, - message: "Please input password account!", - }, + required: true, + message: "Please input password account!", + }, ]} > - + )} {!idData && ( @@ -280,11 +382,14 @@ export const PartnerComponent = observer((props) => { label="Phone Number" rules={[ idData - ? {required: false} - : {required: true, message: "Please input password phone number!"}, + ? { required: false } + : { + required: true, + message: "Please input password phone number!", + }, ]} > - + )} {!isChangePassword && ( @@ -294,25 +399,25 @@ export const PartnerComponent = observer((props) => { label="Npwp" rules={[ idData - ? {required: false} - : {required: true, message: "Please input npwp!"}, + ? { required: false } + : { required: true, message: "Please input npwp!" }, ]} > - + - + )} diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 9d62954..4b0b143 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -1,28 +1,42 @@ -import React, {useContext, useState} from "react"; -import {Button, Col, Form, Input, message, Modal, Row, Select, Table, Tag, Typography} from "antd"; -import {observer} from "mobx-react-lite"; -import {ExclamationCircleOutlined} from "@ant-design/icons"; -import {useHistory} from "react-router-dom"; -import {capitalize} from "lodash"; -import {useStore} from "../utils/useStore"; -import {LINKS} from "../routes/app"; -import {ModalLoaderContext} from "../utils/modal"; +import React, { useContext, useState } from "react"; +import { + Button, + Col, + Form, + Input, + message, + Modal, + Row, + Select, + Table, + Divider, + Tag, + Typography, + List, +} from "antd"; +import { observer } from "mobx-react-lite"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { useHistory } from "react-router-dom"; +import { capitalize } from "lodash"; +import { useStore } from "../utils/useStore"; +import { LINKS } from "../routes/app"; +import { ModalLoaderContext } from "../utils/modal"; -const {Title, Text} = Typography; +const { Title, Text } = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); - const {Option} = Select; + const { Option } = Select; const history = useHistory(); - const [idData, setIdData] = useState(''); + const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState(null); const [filterCategories, setFilterCategories] = useState(null); const [filterSubCategories, setFilterSubCategories] = useState(null); const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { - console.log(data, "isi data") + console.log(data, "isi data"); form.setFieldsValue({ name: data.name, price: data.price, @@ -33,7 +47,7 @@ export const ProductComponent = observer((props) => { }); store.product.visibleModalProduct = true; setIdData(data.id); - } + }; const columns = [ { @@ -76,12 +90,12 @@ export const ProductComponent = observer((props) => { render: (text, record) => ( {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"} ), - } + }, ]; const deleteData = async (id) => { @@ -99,7 +113,7 @@ export const ProductComponent = observer((props) => { const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", - icon: , + icon: , okText: "Yes", okType: "primary", cancelText: "Cancel", @@ -113,39 +127,39 @@ export const ProductComponent = observer((props) => { }; const handleCancel = () => { - setIdData('') + setIdData(""); store.product.visibleModalProduct = false; - } + }; const handleSubmit = async (data) => { - console.log(data, "isi data2") - if (idData !== '') { + console.log(data, "isi data2"); + if (idData !== "") { modalLoader.setLoading(true); try { - await store.product.update(idData, data) - message.success("Success Update Data Member") + await store.product.update(idData, data); + message.success("Success Update Data Member"); } catch (e) { - message.error("Failed Update Data Member") + message.error("Failed Update Data Member"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; - setIdData(''); + setIdData(""); form.resetFields(); } else { modalLoader.setLoading(true); try { - await store.product.create(data) - message.success("Success Add New Member") + await store.product.create(data); + message.success("Success Add New Member"); } catch (e) { - console.log(e, "apa errornya") - message.error("Failed Add Member") + console.log(e, "apa errornya"); + message.error("Failed Add Member"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; - setIdData(''); + setIdData(""); form.resetFields(); } - } + }; const handleRemoveFilter = async () => { store.product.filterSupplier = null; @@ -174,39 +188,132 @@ export const ProductComponent = observer((props) => { }; const footerLayoutFilter = [ - , - , - - ] + , + , + , + ]; return (
-
{ - let pageNumber = page.current; - store.product.pageSize = page.pageSize; - store.product.page = pageNumber - 1; - modalLoader.setLoading(true); - await store.product.getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.product.pageSize = page.pageSize; + store.product.page = pageNumber - 1; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.product.pageSize = page.pageSize; + store.product.page = page.current; + modalLoader.setLoading(true); + await store.product.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.product.pageSize, + total: store.product.total_data, + current: store.product.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.product.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Nama Produk : {item.name}
+ Harga Beli : {item.currentPrice.price} +
+ + Harga Jual : {item.currentPrice.mark_up_price} + +

+

+
+ } + /> +
+

+ + {item?.status === "ACTIVE" ? " Tersedia" : "Tidak"} + +

+
+ + + + ); + }} + /> + )} { form .validateFields() .then((values) => { - console.log(values, "isi form") + console.log(values, "isi form"); handleSubmit(values); form.resetFields(); }) @@ -229,42 +336,39 @@ export const ProductComponent = observer((props) => { }); }} > -
+ - + - + - + - + {store.product.dataSubCategories.map((item) => ( @@ -294,14 +400,16 @@ export const ProductComponent = observer((props) => { >
- Filter Supplier + + Filter Supplier + - Filter Categories + + Filter Categories + - Filter Sub-Categories + + Filter Sub-Categories +
{ - let pageNumber = page.current; - store.subcategory.pageSize = page.pageSize; - store.subcategory.page = pageNumber - 1; - modalLoader.setLoading(true); - await getData(); - modalLoader.setLoading(false); - }} - /> - + {store.ui.mediaQuery.isDesktop && ( +
{ + let pageNumber = page.current; + store.subcategory.pageSize = page.pageSize; + store.subcategory.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + )} + {store.ui.mediaQuery.isMobile && ( + { + store.subcategory.pageSize = page.pageSize; + store.subcategory.page = page.current; + modalLoader.setLoading(true); + await store.subcategory.getData(); + modalLoader.setLoading(false); + }, + pageSize: store.subcategory.pageSize, + total: store.subcategory.total_data, + current: store.subcategory.page, + style: { marginBottom: "1rem", marginRight: "1rem" }, + }} + dataSource={store.subcategory.data} + style={{ padding: 0 }} + renderItem={(item) => { + return ( +
+ + +

+ Sub Category : {item.name}
+ Category : {item.categoryName} +
+

+

+
+ } + /> +
+

+ +

+
+ + + + ); + }} + /> + )} { name="code" label="Code" rules={[ - {required: true, message: "Please input code category!"}, + { required: true, message: "Please input code category!" }, ]} > - + )} - + {!idData && ( - - -
+ + +
{ + setPreviewImage(file.url || file.filename); + setPreviewVisible(file.url || file.filename); + }} + showUploadList={true} + onChange={handleChange} + beforeUpload={(file) => beforeUpload(file)} + customRequest={(args) => uploadHandler(args)} + onRemove={(file) => { + setImage(''); + setLoading(false); + setFileList([]); + }} > - {!firstIndexFileList ? uploadButton : null} + + {image === "" ? uploadButton : null}
Max size of file 2 mb
-
-
Preview
-
- preview -
-
{previewTitle}
-
- {previewUpload} - {previewTitle && {`${previewTitle ?? ""}`}} -
-
-
-
- - - - -
+ + + + + + ); }; diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index c4806ff..95750f5 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -63,7 +63,7 @@ export const Product = observer(() => {
-
+
{ - const request = superagent - .post(appConfig.apiUrl + '/files') + let req = superagent + .post(appConfig.apiUrl + '/config/upload-files') .attach('file', file) .use(authIntercept) .use(attachSuperagentLogger); + if (TokenUtil.accessToken) { + req = req.set('Authorization', 'Bearer ' + TokenUtil.accessToken); + } - return request; + return req; }, uploadAntd: (args) => { const file = args.file;