From 73d23b8958b48ae3460a71c7f207a4a8ea8087f6 Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 16:06:18 +0700
Subject: [PATCH 01/13] fix: create payback fix image
---
src/pages/Payback/PaybackModal.js | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js
index f5229ef..6420dae 100644
--- a/src/pages/Payback/PaybackModal.js
+++ b/src/pages/Payback/PaybackModal.js
@@ -12,7 +12,7 @@ export const PaybackModal = ({initialData}) => {
const [image, setImage] = useState("");
const [fileList, setFileList] = useState([]);
const [previewImage, setPreviewImage] = useState("");
- const [previewVisible, setPreviewVisible] = useState(false);
+ const [responseFilename, setResponseFilename] = useState("");
const [loading, setLoading] = useState(false);
const modalLoader = useContext(ModalLoaderContext);
@@ -34,6 +34,7 @@ export const PaybackModal = ({initialData}) => {
const file = args.file;
const res = await http.upload(file);
setImage(`${appConfig.apiUrl}/config/image/${res.body.filename}`);
+ setResponseFilename(res.body.filename);
setFileList([{
uid: '-1',
name: 'image',
@@ -62,7 +63,8 @@ export const PaybackModal = ({initialData}) => {
try {
const request = {
...data,
- destination: store.authentication.profileData.superior?.id
+ destination: store.authentication.profileData.superior?.id,
+ image_prove: responseFilename
}
await store.payback.create(request);
message.success("Success Add Payback");
@@ -75,20 +77,20 @@ export const PaybackModal = ({initialData}) => {
}
modalLoader.setLoading(false);
form.resetFields();
- store.payback.visibleModalPayback = false;
setImage("");
setFileList([]);
setPreviewImage("");
- setPreviewVisible(false);
+ setResponseFilename("");
+ store.payback.visibleModalPayback = false;
};
const handleCancel = () => {
form.resetFields();
- store.payback.visibleModalPayback = false;
setImage("");
setFileList([]);
setPreviewImage("");
- setPreviewVisible(false);
+ setResponseFilename("");
+ store.payback.visibleModalPayback = false;
}
return (
@@ -126,7 +128,6 @@ export const PaybackModal = ({initialData}) => {
fileList={fileList}
onPreview={(file) => {
setPreviewImage(file.url || file.filename);
- setPreviewVisible(file.url || file.filename);
}}
showUploadList={true}
onChange={handleChange}
From 81d6407367edbcff811ebac40e33a63f46af3bb6 Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 16:19:45 +0700
Subject: [PATCH 02/13] fix: dsplay image in payback
---
src/pages/Payback/Payback.js | 12 ++++++------
src/pages/Payback/PaybackModal.js | 2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js
index 729ccb7..521f9e0 100644
--- a/src/pages/Payback/Payback.js
+++ b/src/pages/Payback/Payback.js
@@ -6,6 +6,7 @@ import {CheckCircleOutlined, CloseOutlined, FilterOutlined,} from "@ant-design/i
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {LINKS} from "../../routes/app";
import {ModalLoaderContext} from "../../utils/modal";
+import {appConfig} from "../../config/app";
const {Search} = Input;
@@ -39,12 +40,11 @@ export const Payback = observer(() => {
dataIndex: "image_prove",
key: "image_prove",
render: (text, record) => (
-
+
),
},
{
diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js
index 6420dae..144ee42 100644
--- a/src/pages/Payback/PaybackModal.js
+++ b/src/pages/Payback/PaybackModal.js
@@ -76,12 +76,12 @@ export const PaybackModal = ({initialData}) => {
message.error(e.message);
}
modalLoader.setLoading(false);
+ store.payback.visibleModalPayback = false;
form.resetFields();
setImage("");
setFileList([]);
setPreviewImage("");
setResponseFilename("");
- store.payback.visibleModalPayback = false;
};
const handleCancel = () => {
From 9a596abeca83e1ed0ad93d0e3d7f4b04e9cc0b63 Mon Sep 17 00:00:00 2001
From: "ajat91.sudrajat"
Date: Wed, 22 Dec 2021 16:45:20 +0700
Subject: [PATCH 03/13] Edit Menu Product
---
src/component/CategoryComponent.js | 2 +-
src/component/CommissionComponent.js | 2 +-
src/component/PartnerComponent.js | 2 +-
src/component/ProductComponent.js | 34 ++++++++++++++--------------
src/component/Subcategory.js | 2 +-
src/component/SupplierComponent.js | 2 +-
src/pages/Membership/Membership.js | 4 ++--
src/store/product.js | 1 +
8 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js
index 9005485..753342e 100644
--- a/src/component/CategoryComponent.js
+++ b/src/component/CategoryComponent.js
@@ -139,7 +139,7 @@ export const CategoryComponent = observer((props) => {
store.category.pageSize = page.pageSize;
store.category.page = pageNumber - 1;
modalLoader.setLoading(true);
- //await store.category.getData();
+ await store.category.getData();
modalLoader.setLoading(false);
}}
/>
diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js
index 0cf36e8..ae730ca 100644
--- a/src/component/CommissionComponent.js
+++ b/src/component/CommissionComponent.js
@@ -82,7 +82,7 @@ export const CommissionComponent = observer((props) => {
store.commission.pageSize = page.pageSize;
store.commission.page = pageNumber - 1;
modalLoader.setLoading(true);
- //await store.commission.getData();
+ await store.commission.getData();
modalLoader.setLoading(false);
}}
/>
diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js
index 5e49029..7a3afd0 100644
--- a/src/component/PartnerComponent.js
+++ b/src/component/PartnerComponent.js
@@ -211,7 +211,7 @@ export const PartnerComponent = observer((props) => {
store.partner.pageSize = page.pageSize;
store.partner.page = pageNumber - 1;
modalLoader.setLoading(true);
- //await store.partner.getData();
+ await store.partner.getData();
modalLoader.setLoading(false);
}}
/>
diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js
index 40a6a34..31c5663 100644
--- a/src/component/ProductComponent.js
+++ b/src/component/ProductComponent.js
@@ -37,23 +37,23 @@ export const ProductComponent = observer((props) => {
const columns = [
{
title: "Kode",
- dataIndex: "code",
- key: "code",
+ dataIndex: "product_code",
+ key: "product_code",
},
{
title: "Produk",
- dataIndex: ["name"],
- key: "name",
+ dataIndex: ["product_name"],
+ key: "product_name",
},
{
title: "Harga Beli",
- dataIndex: ["currentPrice", "price"],
- key: ["currentPrice", "price"],
+ dataIndex: ["current_price_price"],
+ key: ["current_price_price"],
},
{
title: "Harga Jual",
- dataIndex: ["currentPrice", "mark_up_price"],
- key: ["currentPrice", "mark_up_price"],
+ dataIndex: ["mark_up_price"],
+ key: ["mark_up_price"],
},
// {
// title: "Gangguan",
@@ -74,10 +74,10 @@ export const ProductComponent = observer((props) => {
key: "tersedia",
render: (text, record) => (
- {record?.status === "ACTIVE" ? " Tersedia" : "Tidak"}
+ {record?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"}
),
},
@@ -235,7 +235,7 @@ export const ProductComponent = observer((props) => {
store.product.pageSize = page.pageSize;
store.product.page = pageNumber - 1;
modalLoader.setLoading(true);
- //await store.product.getData();
+ await store.product.getData();
modalLoader.setLoading(false);
}}
/>
@@ -276,15 +276,15 @@ export const ProductComponent = observer((props) => {
>
- Nama Produk : {item.name}
- Harga Beli : {item.currentPrice.price}
+ {item.product_name}
+ Harga Beli : {item.current_price_price}
- Harga Jual : {item.currentPrice.mark_up_price}
+ Harga Jual : {item.mark_up_price}
@@ -299,10 +299,10 @@ export const ProductComponent = observer((props) => {
}}
>
- {item?.status === "ACTIVE" ? " Tersedia" : "Tidak"}
+ {item?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"}
diff --git a/src/component/Subcategory.js b/src/component/Subcategory.js
index 283aedc..f3f442b 100644
--- a/src/component/Subcategory.js
+++ b/src/component/Subcategory.js
@@ -126,7 +126,7 @@ export const SubcategoryComponent = observer((props) => {
store.subcategory.pageSize = page.pageSize;
store.subcategory.page = pageNumber - 1;
modalLoader.setLoading(true);
- // await getData();
+ await getData();
modalLoader.setLoading(false);
}}
/>
diff --git a/src/component/SupplierComponent.js b/src/component/SupplierComponent.js
index dce358e..af6b6e4 100644
--- a/src/component/SupplierComponent.js
+++ b/src/component/SupplierComponent.js
@@ -219,7 +219,7 @@ export const SupplierComponent = observer((props) => {
store.supplier.pageSize = page.pageSize;
store.supplier.page = pageNumber - 1;
modalLoader.setLoading(true);
- //await store.supplier.getData();
+ await store.supplier.getData();
modalLoader.setLoading(false);
}}
/>
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index 9126636..83c9402 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -404,9 +404,9 @@ export const Membership = observer(() => {
Role : {item.roleName}
- Saldo Supplier : {item.amount} {" "}
+ Saldo Supplier : {item.coa.amount} {" "}
- Saldo System : {item.amount}
+ Saldo System : {item.coa.amount}
}
diff --git a/src/store/product.js b/src/store/product.js
index e03b223..e71957a 100644
--- a/src/store/product.js
+++ b/src/store/product.js
@@ -31,6 +31,7 @@ export class Product {
async getData() {
try {
const response = await http.get(`/product/all?supplier=${this.filterSupplier}&sub-category=${this.filterSubCategory}&page=${this.page}&pageSize=${this.pageSize}`);
+ //console.log(response)
this.data = response.body.data.map((item, idx) => {
item.key = idx;
return item
From 119fa6d0bd2b363892613b6b9794bc50bb85ddec Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 16:57:42 +0700
Subject: [PATCH 04/13] style: adjust number to currency format
---
src/component/CommissionComponent.js | 6 ++---
src/component/ProductComponent.js | 10 +++++++
...Subcategory.js => SubcategoryComponent.js} | 27 +++++--------------
src/pages/Payback/Payback.js | 11 +++++---
src/pages/Payback/PaybackFromUser.js | 5 ++++
src/pages/Product/Subcategory.js | 6 ++---
src/pages/Profile/Profile.js | 5 ++++
7 files changed, 41 insertions(+), 29 deletions(-)
rename src/component/{Subcategory.js => SubcategoryComponent.js} (94%)
diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js
index ae730ca..f6bbdfc 100644
--- a/src/component/CommissionComponent.js
+++ b/src/component/CommissionComponent.js
@@ -1,9 +1,8 @@
-import React, {useContext, useEffect, useState} from "react";
-import {Button, Form, Input, message, Modal, Select, Space, Table,} from "antd";
+import React, {useContext, useState} from "react";
+import {Button, Form, Input, message, Modal, Space, Table,} from "antd";
import {observer} from "mobx-react-lite";
import {useHistory} from "react-router-dom";
import {useStore} from "../utils/useStore";
-import {LINKS} from "../routes/app";
import {ModalLoaderContext} from "../utils/modal";
export const CommissionComponent = observer((props) => {
@@ -32,6 +31,7 @@ export const CommissionComponent = observer((props) => {
title: "Amount",
dataIndex: "commission",
key: "commission",
+ render: (text) => {text}% ,
},
{
title: "Action",
diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js
index c10741a..fcd3c2f 100644
--- a/src/component/ProductComponent.js
+++ b/src/component/ProductComponent.js
@@ -48,11 +48,21 @@ export const ProductComponent = observer((props) => {
title: "Harga Beli",
dataIndex: "current_price_price",
key: "current_price_price",
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: "Harga Jual",
dataIndex: "mark_up_price",
key: "mark_up_price",
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
// {
// title: "Gangguan",
diff --git a/src/component/Subcategory.js b/src/component/SubcategoryComponent.js
similarity index 94%
rename from src/component/Subcategory.js
rename to src/component/SubcategoryComponent.js
index f3f442b..0b01a76 100644
--- a/src/component/Subcategory.js
+++ b/src/component/SubcategoryComponent.js
@@ -1,30 +1,17 @@
-import React, { useContext, useState,useEffect } from "react";
-import {
- Button,
- Form,
- Input,
- message,
- Modal,
- Select,
- Space,
- Table,
- List,
- Tag,
- Divider,
-} from "antd";
-import { observer } from "mobx-react-lite";
-import { useHistory } from "react-router-dom";
-import { useStore } from "../utils/useStore";
-import { ModalLoaderContext } from "../utils/modal";
+import React, {useContext, useEffect, useState} from "react";
+import {Button, Divider, Form, Input, List, message, Modal, Select, Space, Table,} from "antd";
+import {observer} from "mobx-react-lite";
+import {useStore} from "../utils/useStore";
+import {ModalLoaderContext} from "../utils/modal";
export const SubcategoryComponent = observer((props) => {
const store = useStore();
const [form] = Form.useForm();
- const { Option } = Select;
+ const {Option} = Select;
const [idData, setIdData] = useState("");
const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
-
+
getData()
}, [])
const getData = async () => {
diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js
index 521f9e0..a4036b9 100644
--- a/src/pages/Payback/Payback.js
+++ b/src/pages/Payback/Payback.js
@@ -48,9 +48,14 @@ export const Payback = observer(() => {
),
},
{
- title: "Amount",
- dataIndex: "amount",
- key: "amount",
+ title: "Amount",
+ dataIndex: "amount",
+ key: "amount",
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: "Action",
diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js
index 6db5368..680b064 100644
--- a/src/pages/Payback/PaybackFromUser.js
+++ b/src/pages/Payback/PaybackFromUser.js
@@ -56,6 +56,11 @@ export const PaybackFromUser = observer(() => {
title: "Amount",
dataIndex: "amount",
key: "amount",
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
];
diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js
index 402ab7f..0ffa767 100644
--- a/src/pages/Product/Subcategory.js
+++ b/src/pages/Product/Subcategory.js
@@ -1,11 +1,11 @@
-import React, {useContext, useEffect, useState} from "react";
-import {Button, Card, Col, Input, Row,message} from "antd";
+import React, {useContext, useEffect} from "react";
+import {Button, Card, Col, Input, message, Row} from "antd";
import {PlusSquareOutlined} from "@ant-design/icons";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {LINKS} from "../../routes/app";
-import {SubcategoryComponent} from "../../component/Subcategory";
+import {SubcategoryComponent} from "../../component/SubcategoryComponent";
import {ModalLoaderContext} from "../../utils/modal";
const {Search} = Input;
diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js
index 1096b36..f6ec408 100644
--- a/src/pages/Profile/Profile.js
+++ b/src/pages/Profile/Profile.js
@@ -42,6 +42,11 @@ export const Profile = observer(() => {
dataIndex: 'mark_up_price',
key: 'mark_up_price',
width: '20%',
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: 'Name',
From 9460935e0a56126deeb8a8613274064bd282f439 Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 16:58:24 +0700
Subject: [PATCH 05/13] style: add margin into profile popover
---
src/index.css | 7 +-
src/pages/App/DesktopLayout.js | 173 +++++++++++++++++----------------
2 files changed, 94 insertions(+), 86 deletions(-)
diff --git a/src/index.css b/src/index.css
index 3c1a8ed..18d9f14 100644
--- a/src/index.css
+++ b/src/index.css
@@ -61,8 +61,9 @@ code {
background-color: #e3e8ee !important;
}
.ant-menu-submenu-arrow{
- padding-right: 40px !important;
+ padding-right: 40px !important;
}
+
.ant-breadcrumb {
margin-bottom: 10px !important;
}
@@ -70,4 +71,8 @@ code {
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
color: #ed1f24 !important;
border-color: #ed1f24 !important;
+}
+
+.profile-container .ant-popover-inner-content {
+ padding: 0 !important;
}
\ No newline at end of file
diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js
index ffe6524..047bd99 100644
--- a/src/pages/App/DesktopLayout.js
+++ b/src/pages/App/DesktopLayout.js
@@ -1,64 +1,64 @@
-import React, { useState } from "react";
-import { Button, Drawer, Layout, Menu, Popover, Typography } from "antd";
-import { MenuList } from "./MenuList";
-import { Link, useHistory } from "react-router-dom";
+import React, {useState} from "react";
+import {Button, Drawer, Layout, Menu, Popover, Typography} from "antd";
+import {MenuList} from "./MenuList";
+import {Link, useHistory} from "react-router-dom";
import {
- HomeOutlined,
- MenuOutlined,
- UserOutlined,
- ProfileOutlined,
- DatabaseOutlined,
- FileAddOutlined,
- FileSyncOutlined,
- FileProtectOutlined,
- ShoppingCartOutlined,
- AlipayOutlined,
- PayCircleOutlined
+ AlipayOutlined,
+ DatabaseOutlined,
+ FileAddOutlined,
+ FileProtectOutlined,
+ FileSyncOutlined,
+ HomeOutlined,
+ MenuOutlined,
+ PayCircleOutlined,
+ ProfileOutlined,
+ ShoppingCartOutlined,
+ UserOutlined
} from "@ant-design/icons";
-import { AppRoute, LINKS } from "../../routes/app";
-import { useStore } from "../../utils/useStore";
-import { observer } from "mobx-react-lite";
-import { useMediaQuery } from "react-responsive";
+import {AppRoute, LINKS} from "../../routes/app";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
+import {useMediaQuery} from "react-responsive";
-const { Text, Paragraph } = Typography;
-const { Header, Content, Sider } = Layout;
-const { SubMenu } = Menu;
+const {Text, Paragraph} = Typography;
+const {Header, Content, Sider} = Layout;
+const {SubMenu} = Menu;
export const DesktopLayout = observer(() => {
- let history = useHistory();
- const xl = useMediaQuery({ minWidth: 1024 });
- const store = useStore();
- const [clicked, setClicked] = useState(false);
+ let history = useHistory();
+ const xl = useMediaQuery({minWidth: 1024});
+ const store = useStore();
+ const [clicked, setClicked] = useState(false);
- return (
-
- {store.ui.mediaQuery.isDesktop && (
-
+ {store.ui.mediaQuery.isDesktop && (
+
{
autoAdjustOverflow={true}
placement="bottomRight"
content={
-
-
-
- Profile
-
-
- {
- store.authentication.logout();
- history.push("/login");
- }}
+
- Sign out
-
-
+ {store.authentication.userData.role !== "Admin" && (
+
+
+
+ Profile
+
+
+ )}
+
{
+ store.authentication.logout();
+ history.push("/login");
+ }}
+ >
+ Sign out
+
+
}
title={
- {store.user.data.email}{" "}
-
- {store.authentication.userData.username}
-
+
+ {store.authentication.userData.username}
+
}
trigger="click"
From 78626fd6e949e30fa329585debf80d26187791e2 Mon Sep 17 00:00:00 2001
From: "ajat91.sudrajat"
Date: Wed, 22 Dec 2021 17:52:05 +0700
Subject: [PATCH 06/13] Role Access
---
src/component/ProductComponent.js | 169 +++++++++++++++++------------
src/pages/Membership/DetailUser.js | 2 +-
src/pages/Membership/Membership.js | 58 +++++++---
src/pages/Product/Product.js | 89 +++++++++------
4 files changed, 199 insertions(+), 119 deletions(-)
diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js
index fcd3c2f..36f9042 100644
--- a/src/component/ProductComponent.js
+++ b/src/component/ProductComponent.js
@@ -1,18 +1,33 @@
-import React, {useContext, useState} from "react";
-import {Button, Col, Divider, Form, Input, List, 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 {useStore} from "../utils/useStore";
-import {LINKS} from "../routes/app";
-import {ModalLoaderContext} from "../utils/modal";
+import React, { useContext, useState } from "react";
+import {
+ Button,
+ Col,
+ Divider,
+ Form,
+ Input,
+ InputNumber,
+ List,
+ 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 { 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 [filterSupplier, setFilterSupplier] = useState([]);
@@ -49,20 +64,20 @@ export const ProductComponent = observer((props) => {
dataIndex: "current_price_price",
key: "current_price_price",
render: (text) =>
- new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
- }).format(text),
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: "Harga Jual",
dataIndex: "mark_up_price",
key: "mark_up_price",
render: (text) =>
- new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
- }).format(text),
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
// {
// title: "Gangguan",
@@ -94,14 +109,14 @@ export const ProductComponent = observer((props) => {
title: "Action",
key: "action",
render: (text, record) => (
- {
- history.push(LINKS.DETAILPRODUCT.replace(":id", record.id));
- //console.log(record.id)
- }}
- >
- Detail
-
+ {
+ history.push(LINKS.DETAILPRODUCT.replace(":id", record.id));
+ //console.log(record.id)
+ }}
+ >
+ Detail
+
),
},
];
@@ -207,12 +222,12 @@ export const ProductComponent = observer((props) => {
const footerLayoutFilter = [
Remove Filter
,
@@ -302,9 +317,7 @@ export const ProductComponent = observer((props) => {
{item.product_name}
Harga Beli : {item.current_price_price}
-
- Harga Jual : {item.mark_up_price}
-
+ Harga Jual : {item.mark_up_price}
@@ -318,10 +331,14 @@ export const ProductComponent = observer((props) => {
}}
>
- {item?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"}
+ {item?.product_status === "ACTIVE"
+ ? " Tersedia"
+ : "Tidak"}
@@ -367,14 +384,26 @@ export const ProductComponent = observer((props) => {
label="Price"
rules={[{ required: true, message: "Please input price!" }]}
>
-
+
+ `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
+ }
+ parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")}
+ />
-
+
+ `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
+ }
+ parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")}
+ />
{
>
{store.category.dataSubCategories.map((item) => (
-
- {item.name}
-
+
+ {item.name}
+
))}
@@ -422,18 +451,18 @@ export const ProductComponent = observer((props) => {
Filter Supplier
{
- setFilterSupplier(val);
- }}
- style={{marginBottom: "20px", width: "100%"}}
- value={filterSupplier}
+ mode={"multiple"}
+ placeholder="Choose Supplier"
+ onChange={(val) => {
+ setFilterSupplier(val);
+ }}
+ style={{ marginBottom: "20px", width: "100%" }}
+ value={filterSupplier}
>
{store.supplier.data.map((item) => (
-
- {item.name}
-
+
+ {item.name}
+
))}
@@ -442,16 +471,16 @@ export const ProductComponent = observer((props) => {
Filter Categories
handleFilterCategory(val)}
- style={{marginBottom: "20px", width: "100%"}}
- value={store.product.filterCategory || []}
+ mode={"multiple"}
+ placeholder="Choose Category"
+ onChange={async (val) => handleFilterCategory(val)}
+ style={{ marginBottom: "20px", width: "100%" }}
+ value={store.product.filterCategory || []}
>
{store.category.data.map((item) => (
-
- {item.name}
-
+
+ {item.name}
+
))}
@@ -460,18 +489,18 @@ export const ProductComponent = observer((props) => {
Filter Sub-Categories
{
- setFilterSubCategories(val);
- }}
- style={{marginBottom: "20px", width: "100%"}}
- value={filterSubCategories}
+ mode={"multiple"}
+ placeholder="Choose Sub-Category"
+ onChange={(val) => {
+ setFilterSubCategories(val);
+ }}
+ style={{ marginBottom: "20px", width: "100%" }}
+ value={filterSubCategories}
>
{store.product.dataSubCategories.map((item) => (
-
- {item.name}
-
+
+ {item.name}
+
))}
diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js
index fe5bfdc..d2649d0 100644
--- a/src/pages/Membership/DetailUser.js
+++ b/src/pages/Membership/DetailUser.js
@@ -125,7 +125,7 @@ export const DetailUser = observer(() => {
-
History User Transaction
+
History Top Up
{
console.log('clicked filter')
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index ab473cf..887861b 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -1,16 +1,32 @@
-import React, {useContext, useEffect, useState} from "react";
-import {Button, Card, Col, Divider, Form, Input, List, message, Modal, Row, Select, Space, Table, Tag,} from "antd";
-import {useStore} from "../../utils/useStore";
-import {observer} from "mobx-react-lite";
-import {DownloadOutlined, PlusSquareOutlined,} from "@ant-design/icons";
-import {MembershipModal} from "./MembershipModal";
-import {BreadcumbComponent} from "../../component/BreadcumbComponent";
-import {LINKS} from "../../routes/app";
-import {useHistory} from "react-router-dom";
-import {ModalLoaderContext} from "../../utils/modal";
+import React, { useContext, useEffect, useState } from "react";
+import {
+ Button,
+ Card,
+ Col,
+ Divider,
+ Form,
+ Input,
+ List,
+ message,
+ Modal,
+ Row,
+ Select,
+ Space,
+ Table,
+ Tag,
+ InputNumber
+} from "antd";
+import { useStore } from "../../utils/useStore";
+import { observer } from "mobx-react-lite";
+import { DownloadOutlined, PlusSquareOutlined } from "@ant-design/icons";
+import { MembershipModal } from "./MembershipModal";
+import { BreadcumbComponent } from "../../component/BreadcumbComponent";
+import { LINKS } from "../../routes/app";
+import { useHistory } from "react-router-dom";
+import { ModalLoaderContext } from "../../utils/modal";
-const {Search} = Input;
-const {Option} = Select;
+const { Search } = Input;
+const { Option } = Select;
export const Membership = observer(() => {
const history = useHistory();
const [form] = Form.useForm();
@@ -212,6 +228,7 @@ export const Membership = observer(() => {
},
];
+ if (store.authentication.userData.role !== "Admin") columns.pop();
const routeData = [
{
route: LINKS.HOME,
@@ -385,9 +402,14 @@ export const Membership = observer(() => {
Role : {item.roleName}
- Saldo Supplier : {item.coa.amount} {" "}
+
+ Saldo Supplier : {item.coa.amount}
+ {" "}
+
+
+ Saldo System : {item.coa.amount}
+ {" "}
- Saldo System : {item.coa.amount}
}
@@ -461,7 +483,13 @@ export const Membership = observer(() => {
label="Amount"
rules={[{ required: true, message: "Please input amount!" }]}
>
-
+
+ `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
+ }
+ parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")}
+ />
diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js
index 95f4c34..6b58872 100644
--- a/src/pages/Product/Product.js
+++ b/src/pages/Product/Product.js
@@ -1,14 +1,18 @@
-import React, {useContext, useEffect} from "react";
-import {Button, Card, Col, Input, message, Row, Upload} from "antd";
-import {FilterOutlined, PlusSquareOutlined, UploadOutlined,} from "@ant-design/icons";
-import {BreadcumbComponent} from "../../component/BreadcumbComponent";
-import {useStore} from "../../utils/useStore";
-import {observer} from "mobx-react-lite";
-import {ProductComponent} from "../../component/ProductComponent";
-import {LINKS} from "../../routes/app";
-import {ModalLoaderContext} from "../../utils/modal";
+import React, { useContext, useEffect } from "react";
+import { Button, Card, Col, Input, message, Row, Upload } from "antd";
+import {
+ FilterOutlined,
+ PlusSquareOutlined,
+ UploadOutlined,
+} from "@ant-design/icons";
+import { BreadcumbComponent } from "../../component/BreadcumbComponent";
+import { useStore } from "../../utils/useStore";
+import { observer } from "mobx-react-lite";
+import { ProductComponent } from "../../component/ProductComponent";
+import { LINKS } from "../../routes/app";
+import { ModalLoaderContext } from "../../utils/modal";
-const {Search} = Input;
+const { Search } = Input;
export const Product = observer(() => {
const store = useStore();
@@ -53,40 +57,59 @@ export const Product = observer(() => {
-
+
- {
- store.product.visibleModalFilterProduct = true
- }}>
-
+ {
+ store.product.visibleModalFilterProduct = true;
+ }}
+ >
+
Filter
-
+
-
- }>
- Upload Product
-
-
-
(store.product.visibleModalProduct = true)}>
- New
-
+ }}
+ />
+ {store.authentication.userData.role === "Admin" && (
+
+
+ }
+ >
+ Upload Product
+
+
+
(store.product.visibleModalProduct = true)}
+ >
+ New
+
+
+ )}
-
+
);
From 7928df9fc657368dd6f9052c9df3f21ab8ed909f Mon Sep 17 00:00:00 2001
From: "ajat91.sudrajat"
Date: Wed, 22 Dec 2021 18:01:11 +0700
Subject: [PATCH 07/13] Role Access
---
src/pages/Product/Product.js | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js
index 6b58872..72a9940 100644
--- a/src/pages/Product/Product.js
+++ b/src/pages/Product/Product.js
@@ -74,7 +74,6 @@ export const Product = observer(() => {
display: store.ui.mediaQuery.isMobile ? "" : "flex",
justifyContent: "flex-end",
textAlign: "right",
- //width:store.authentication.userData.role === "Admin" ? 100 : ''
}}
>
{
}}
/>
{store.authentication.userData.role === "Admin" && (
-
+
}
From a115d8488ba2d676e269eb6843baf03ba2a1b28c Mon Sep 17 00:00:00 2001
From: "ajat91.sudrajat"
Date: Wed, 22 Dec 2021 19:27:25 +0700
Subject: [PATCH 08/13] Handling Error
---
src/component/TopupsaldoModal.js | 28 +++++++++++++++++-----------
src/pages/Membership/DetailUser.js | 7 +++++--
src/pages/Membership/Membership.js | 21 ++++++++++++++-------
src/store/transaction.js | 16 ++++++++++++++++
4 files changed, 52 insertions(+), 20 deletions(-)
diff --git a/src/component/TopupsaldoModal.js b/src/component/TopupsaldoModal.js
index 376869e..cd9ff86 100644
--- a/src/component/TopupsaldoModal.js
+++ b/src/component/TopupsaldoModal.js
@@ -1,8 +1,8 @@
-import React, {useContext} from "react";
-import {Form, Input, message, Modal} from "antd";
-import {observer} from "mobx-react-lite";
-import {useStore} from "../utils/useStore";
-import {ModalLoaderContext} from "../utils/modal";
+import React, { useContext } from "react";
+import { Form, Input, message, Modal, InputNumber } from "antd";
+import { observer } from "mobx-react-lite";
+import { useStore } from "../utils/useStore";
+import { ModalLoaderContext } from "../utils/modal";
export const TopupsaldoModal = observer((props) => {
const store = useStore();
@@ -27,7 +27,7 @@ export const TopupsaldoModal = observer((props) => {
store.supplier.visibleModalTransaction = false;
form.resetFields();
};
-
+
return (
{
-
+
-
+
+ `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
+ }
+ parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")}
+ />
diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js
index d2649d0..2583356 100644
--- a/src/pages/Membership/DetailUser.js
+++ b/src/pages/Membership/DetailUser.js
@@ -7,12 +7,14 @@ import {observer} from "mobx-react-lite";
import {FilterOutlined} from "@ant-design/icons";
import {format, parseISO} from "date-fns";
import {ModalLoaderContext} from "../../utils/modal";
+import { useParams } from "react-router-dom";
const {Title, Text} = Typography;
export const DetailUser = observer(() => {
const store = useStore();
const modalLoader = useContext(ModalLoaderContext);
+ const { id } = useParams();
const routeData = [
{
@@ -24,12 +26,13 @@ export const DetailUser = observer(() => {
name:
Detail User ,
},
];
-
+console.log(id)
useEffect(() => {
(async () => {
modalLoader.setLoading(true);
await Promise.allSettled([
store.authentication.getProfile(),
+ store.transaction.getDataHistoryTopUp(id),
store.transaction.getDataHistoryTransaction(),
]);
modalLoader.setLoading(false);
@@ -83,7 +86,7 @@ export const DetailUser = observer(() => {
Name
-
{store.authentication.profileData?.userDetail?.name}
+
{store.transaction.data.name}
Role
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index 887861b..811b9fc 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -14,7 +14,7 @@ import {
Space,
Table,
Tag,
- InputNumber
+ InputNumber,
} from "antd";
import { useStore } from "../../utils/useStore";
import { observer } from "mobx-react-lite";
@@ -101,10 +101,16 @@ export const Membership = observer(() => {
};
}
+ let response = null;
+
(await store.authentication.userData.role) === "Admin"
- ? store.transaction.distributeAdmin(data)
- : store.transaction.distribute(data);
- message.success("Success Top Up");
+ ? (response = await store.transaction.distributeAdmin(data))
+ : (response = await store.transaction.distribute(data));
+
+ response?.body?.statusCode === 200
+ ? message.success("Success Top Up")
+ : message.error("Failed Top Up");
+
modalLoader.setLoading(false);
//await store.supplier.getData()
} catch (e) {
@@ -217,8 +223,9 @@ export const Membership = observer(() => {
{
+ await store.transaction.getDataHistoryTopUp(record.id)
history.push(LINKS.DETAILUSER.replace(":id", record.id));
- //console.log(record.id)
+ console.log(record.id);
}}
>
Detail
@@ -465,7 +472,7 @@ export const Membership = observer(() => {
}}
>
{
))}
-
+ */}
Date: Wed, 22 Dec 2021 20:18:38 +0700
Subject: [PATCH 09/13] style: add logout icon, and hide profile menu on admin
---
src/pages/App/DesktopLayout.js | 70 ++++++++++++++++++----------------
1 file changed, 38 insertions(+), 32 deletions(-)
diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js
index 047bd99..90ca4ee 100644
--- a/src/pages/App/DesktopLayout.js
+++ b/src/pages/App/DesktopLayout.js
@@ -9,6 +9,7 @@ import {
FileProtectOutlined,
FileSyncOutlined,
HomeOutlined,
+ LogoutOutlined,
MenuOutlined,
PayCircleOutlined,
ProfileOutlined,
@@ -353,41 +354,45 @@ export const DesktopLayout = observer(() => {
autoAdjustOverflow={true}
placement="bottomRight"
content={
-
-
-
- Profile
-
-
- {
- store.authentication.logout();
- history.push("/login");
- }}
+
- Sign out
-
-
+ {store.authentication.userData.role !== "Admin" &&
+
+
+ Profile
+
+
+ }
+ {
+ store.authentication.logout();
+ history.push("/login");
+ }}
+ >
+
+ Sign out
+
+
}
title={
-
- {store.user.data.username}
-
- {store.authentication.userData.username}
-
-
+
+ {store.user.data.username}
+
+ {store.authentication.userData.username}
+
+
}
trigger="click"
visible={clicked}
@@ -475,6 +480,7 @@ export const DesktopLayout = observer(() => {
history.push("/login");
}}
>
+
Sign out
From 4facb71d4fb01760ca7da1be827d85bf27d859e4 Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 20:29:21 +0700
Subject: [PATCH 10/13] style: adjust width column payback
---
src/pages/Payback/Payback.js | 50 +++++++++++++++++++-----------------
1 file changed, 26 insertions(+), 24 deletions(-)
diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js
index a4036b9..3423829 100644
--- a/src/pages/Payback/Payback.js
+++ b/src/pages/Payback/Payback.js
@@ -51,36 +51,38 @@ export const Payback = observer(() => {
title: "Amount",
dataIndex: "amount",
key: "amount",
+ width: '20%',
render: (text) =>
new Intl.NumberFormat("id-ID", {
style: "currency",
currency: "IDR",
}).format(text),
},
- {
- title: "Action",
- dataIndex: "amount",
- key: "action",
- render: (text, record) => (
-
- {
- await handleAction(record, "accept");
- }}
- icon={ }
- style={{
- backgroundColor: "#1bb91d",
- color: "#fff",
- borderColor: "#1bb91d",
- }}
- >
- Accept
-
- {
- await handleAction(record, "reject");
- }}
- icon={ }
+ {
+ title: "Action",
+ dataIndex: "amount",
+ key: "action",
+ width: '10%',
+ render: (text, record) => (
+
+ {
+ await handleAction(record, "accept");
+ }}
+ icon={ }
+ style={{
+ backgroundColor: "#1bb91d",
+ color: "#fff",
+ borderColor: "#1bb91d",
+ }}
+ >
+ Accept
+
+ {
+ await handleAction(record, "reject");
+ }}
+ icon={ }
style={{
backgroundColor: "#ff1c1c",
color: "#fff",
From a47ae4c85f4b525da4dcd94ea6dafc4a7511f654 Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 20:33:37 +0700
Subject: [PATCH 11/13] style: remove get supplier
---
src/pages/Membership/Membership.js | 82 +++++++-----------------------
1 file changed, 17 insertions(+), 65 deletions(-)
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index 811b9fc..c997bcd 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -1,4 +1,4 @@
-import React, { useContext, useEffect, useState } from "react";
+import React, {useContext, useEffect, useState} from "react";
import {
Button,
Card,
@@ -6,6 +6,7 @@ import {
Divider,
Form,
Input,
+ InputNumber,
List,
message,
Modal,
@@ -14,19 +15,18 @@ import {
Space,
Table,
Tag,
- InputNumber,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { observer } from "mobx-react-lite";
-import { DownloadOutlined, PlusSquareOutlined } from "@ant-design/icons";
-import { MembershipModal } from "./MembershipModal";
-import { BreadcumbComponent } from "../../component/BreadcumbComponent";
-import { LINKS } from "../../routes/app";
-import { useHistory } from "react-router-dom";
-import { ModalLoaderContext } from "../../utils/modal";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
+import {DownloadOutlined, PlusSquareOutlined} from "@ant-design/icons";
+import {MembershipModal} from "./MembershipModal";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {LINKS} from "../../routes/app";
+import {useHistory} from "react-router-dom";
+import {ModalLoaderContext} from "../../utils/modal";
-const { Search } = Input;
-const { Option } = Select;
+const {Search} = Input;
+const {Option} = Select;
export const Membership = observer(() => {
const history = useHistory();
const [form] = Form.useForm();
@@ -46,7 +46,6 @@ export const Membership = observer(() => {
await getData();
await store.role.getData(isAdmin);
- await store.supplier.getData();
modalLoader.setLoading(false);
} catch (e) {
console.error(e);
@@ -137,26 +136,15 @@ export const Membership = observer(() => {
key: "role",
},
{
- title: "Saldo di Supplier",
+ title: "Saldo",
dataIndex: ["coa", "amount"],
key: ["coa", "amount"],
width: "20%",
render: (text) =>
- new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
- }).format(text),
- },
- {
- title: "Saldo di System",
- dataIndex: ["coa_undistribute", "amount"],
- key: ["coa_undistribute", "amount"],
- width: "20%",
- render: (text) =>
- new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
- }).format(text),
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: "Status",
@@ -289,29 +277,6 @@ export const Membership = observer(() => {
}
};
- const handleDetail = (record) => {
- // Modal.confirm({
- // title: "Are you sure delete this record?",
- // icon: ,
- // okText: "Yes",
- // okType: "primary",
- // cancelText: "Cancel",
- // async onOk() {
- // try {
- // //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya
- // await store.membership.delete(record);
- // message.success("Success Delete Data");
- // await getData();
- // } catch (e) {
- // message.error("Failed Delete Data");
- // }
- // },
- // onCancel() {
- // console.log("Cancel");
- // },
- // });
- };
-
return (
@@ -472,19 +437,6 @@ export const Membership = observer(() => {
}}
>
-
- {store.supplier.data.map((item) => (
-
- {item.code}
-
- ))}
-
- */}
Date: Wed, 22 Dec 2021 20:44:06 +0700
Subject: [PATCH 12/13] feat: rewrite writing variable
---
src/component/ProductComponent.js | 20 +++----
src/pages/App/DesktopLayout.js | 6 +-
src/pages/App/MenuList.js | 59 ++++++++++---------
src/pages/Membership/DetailUser.js | 4 +-
src/pages/Membership/Membership.js | 36 +++++------
src/pages/Payback/PaybackFromUser.js | 2 +-
.../{DetailProduct.js => ProductDetail.js} | 12 ++--
src/routes/app.js | 16 ++---
8 files changed, 80 insertions(+), 75 deletions(-)
rename src/pages/Product/{DetailProduct.js => ProductDetail.js} (93%)
diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js
index 36f9042..47aadb3 100644
--- a/src/component/ProductComponent.js
+++ b/src/component/ProductComponent.js
@@ -1,4 +1,4 @@
-import React, { useContext, useState } from "react";
+import React, {useContext, useState} from "react";
import {
Button,
Col,
@@ -15,19 +15,19 @@ import {
Tag,
Typography,
} 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 {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";
-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 [filterSupplier, setFilterSupplier] = useState([]);
@@ -111,7 +111,7 @@ export const ProductComponent = observer((props) => {
render: (text, record) => (
{
- history.push(LINKS.DETAILPRODUCT.replace(":id", record.id));
+ history.push(LINKS.PRODUCT_DETAIL.replace(":id", record.id));
//console.log(record.id)
}}
>
diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js
index 90ca4ee..0769e58 100644
--- a/src/pages/App/DesktopLayout.js
+++ b/src/pages/App/DesktopLayout.js
@@ -220,9 +220,9 @@ export const DesktopLayout = observer(() => {
)}
{store.authentication.userData.role !== "Admin" && (
-
-
- Payback
+
+
+ Payback
)}
diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js
index 8f744c3..5ece71d 100644
--- a/src/pages/App/MenuList.js
+++ b/src/pages/App/MenuList.js
@@ -1,35 +1,36 @@
-import React, { useEffect, useState } from "react";
-import { Menu } from "antd";
-import { Link } from "react-router-dom";
+import React, {useEffect, useState} from "react";
+import {Menu} from "antd";
+import {Link} from "react-router-dom";
import {
- AppstoreOutlined,
- DatabaseOutlined,
- FileAddOutlined,
- FileProtectOutlined,
- FileSyncOutlined,
- HomeOutlined,
- MenuUnfoldOutlined,
- MoneyCollectOutlined,
- ProfileOutlined,
- ProjectOutlined,
- ShoppingCartOutlined,
- UserOutlined,
- AlipayOutlined,
- PayCircleOutlined,
+ AlipayOutlined,
+ AppstoreOutlined,
+ DatabaseOutlined,
+ FileAddOutlined,
+ FileProtectOutlined,
+ FileSyncOutlined,
+ HomeOutlined,
+ MenuUnfoldOutlined,
+ MoneyCollectOutlined,
+ PayCircleOutlined,
+ ProfileOutlined,
+ ProjectOutlined,
+ ShoppingCartOutlined,
+ UserOutlined,
} from "@ant-design/icons";
-import { observer } from "mobx-react-lite";
-import { useStore } from "../../utils/useStore";
-import { LINKS } from "../../routes/app";
+import {observer} from "mobx-react-lite";
+import {useStore} from "../../utils/useStore";
+import {LINKS} from "../../routes/app";
-const { SubMenu } = Menu;
+const {SubMenu} = Menu;
export const MenuList = observer((props) => {
- const store = useStore();
- useEffect(() => {}, []);
+ const store = useStore();
+ useEffect(() => {
+ }, []);
- const [setKeys, setSetKeys] = useState(["dashboard"]);
+ const [setKeys, setSetKeys] = useState(["dashboard"]);
- return (
+ return (
{
)}
{store.authentication.userData.role !== "Admin" && (
-
-
- Payback
-
+
+
+ Payback
+
)}
diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js
index 2583356..ca040f0 100644
--- a/src/pages/Membership/DetailUser.js
+++ b/src/pages/Membership/DetailUser.js
@@ -7,7 +7,7 @@ import {observer} from "mobx-react-lite";
import {FilterOutlined} from "@ant-design/icons";
import {format, parseISO} from "date-fns";
import {ModalLoaderContext} from "../../utils/modal";
-import { useParams } from "react-router-dom";
+import {useParams} from "react-router-dom";
const {Title, Text} = Typography;
@@ -22,7 +22,7 @@ export const DetailUser = observer(() => {
name: "Home",
},
{
- route: LINKS.DETAILUSER,
+ route: LINKS.USER_DETAIL,
name: Detail User ,
},
];
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index c997bcd..b7fd1e5 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -1,20 +1,20 @@
import React, {useContext, useEffect, useState} from "react";
import {
- Button,
- Card,
- Col,
- Divider,
- Form,
- Input,
- InputNumber,
- List,
- message,
- Modal,
- Row,
- Select,
- Space,
- Table,
- Tag,
+ Button,
+ Card,
+ Col,
+ Divider,
+ Form,
+ Input,
+ InputNumber,
+ List,
+ message,
+ Modal,
+ Row,
+ Select,
+ Space,
+ Table,
+ Tag,
} from "antd";
import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
@@ -211,9 +211,9 @@ export const Membership = observer(() => {
{
- await store.transaction.getDataHistoryTopUp(record.id)
- history.push(LINKS.DETAILUSER.replace(":id", record.id));
- console.log(record.id);
+ await store.transaction.getDataHistoryTopUp(record.id)
+ history.push(LINKS.USER_DETAIL.replace(":id", record.id));
+ console.log(record.id);
}}
>
Detail
diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js
index 680b064..3cca08e 100644
--- a/src/pages/Payback/PaybackFromUser.js
+++ b/src/pages/Payback/PaybackFromUser.js
@@ -70,7 +70,7 @@ export const PaybackFromUser = observer(() => {
name: "Home",
},
{
- route: LINKS.PAYBACKFROMUSER,
+ route: LINKS.PAYBACK_FROM_USER,
name: Payback User ,
},
];
diff --git a/src/pages/Product/DetailProduct.js b/src/pages/Product/ProductDetail.js
similarity index 93%
rename from src/pages/Product/DetailProduct.js
rename to src/pages/Product/ProductDetail.js
index 40640e4..79887af 100644
--- a/src/pages/Product/DetailProduct.js
+++ b/src/pages/Product/ProductDetail.js
@@ -10,7 +10,7 @@ import {ModalLoaderContext} from "../../utils/modal";
const {Title, Text} = Typography;
-export const DetailProduct = observer(() => {
+export const ProductDetail = observer(() => {
const store = useStore();
const modalLoader = useContext(ModalLoaderContext);
@@ -20,8 +20,12 @@ export const DetailProduct = observer(() => {
name: "Home",
},
{
- route: LINKS.DETAILPRODUCT,
- name: Detail Product ,
+ route: LINKS.PRODUCT,
+ name: Product ,
+ },
+ {
+ route: LINKS.PRODUCT_DETAIL,
+ name: Product Detail ,
},
];
@@ -75,7 +79,7 @@ export const DetailProduct = observer(() => {
- Detail Product
+ Product Detail
diff --git a/src/routes/app.js b/src/routes/app.js
index 04bc5ab..9f2d29c 100644
--- a/src/routes/app.js
+++ b/src/routes/app.js
@@ -4,7 +4,7 @@ import {About} from "../pages/About/About";
import {Membership} from "../pages/Membership/Membership";
import {DetailUser} from "../pages/Membership/DetailUser";
import {Product} from "../pages/Product/Product";
-import {DetailProduct} from "../pages/Product/DetailProduct";
+import {ProductDetail} from "../pages/Product/ProductDetail";
import {Transaction} from "../pages/Transaction/Transaction";
import {Profile} from "../pages/Profile/Profile";
import {Commission} from "../pages/Config/Commission";
@@ -27,10 +27,10 @@ export const LINKS = {
SUPPLIER: "/app/supplier",
CATEGORY: "/app/category",
PAYBACK: "/app/payback",
- PAYBACKFROMUSER: "/app/payback-from-user",
+ PAYBACK_FROM_USER: "/app/payback-from-user",
SUBCATEGORY: "/app/subcategory",
- DETAILUSER: "/app/detail-user",
- DETAILPRODUCT: "/app/detail-product",
+ USER_DETAIL: "/app/user-detail",
+ PRODUCT_DETAIL: "/app/product-detail",
};
export const AppRoute = () => {
@@ -38,16 +38,16 @@ export const AppRoute = () => {
-
+
-
-
+
+
-
+
From 6c5891d4079a7f707ec51f93217772290d921d71 Mon Sep 17 00:00:00 2001
From: caturbgs
Date: Wed, 22 Dec 2021 21:07:30 +0700
Subject: [PATCH 13/13] fix: upload button still loading
---
src/pages/Payback/PaybackModal.js | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js
index 144ee42..34683ec 100644
--- a/src/pages/Payback/PaybackModal.js
+++ b/src/pages/Payback/PaybackModal.js
@@ -37,18 +37,20 @@ export const PaybackModal = ({initialData}) => {
setResponseFilename(res.body.filename);
setFileList([{
uid: '-1',
- name: 'image',
+ name: res.body.filename,
status: 'done',
url: `${appConfig.apiUrl}/config/image/${res.body.filename}`,
}]);
+ setLoading(false);
};
const handleChange = (info) => {
+ console.log(info, "apa isi onchange")
if (info.file.status === 'uploading') {
setLoading(true);
- return;
+ } else {
+ setLoading(false)
}
- setLoading(false)
};
const uploadButton = (