diff --git a/.gitignore b/.gitignore
index 7575959..6f1c4f3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,3 +24,4 @@ yarn-error.log*
/.idea
/package-lock.json
+/yarn.lock
diff --git a/src/component/CommisionComponent.js b/src/component/CommisionComponent.js
new file mode 100644
index 0000000..98a5cc0
--- /dev/null
+++ b/src/component/CommisionComponent.js
@@ -0,0 +1,244 @@
+import React, {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 {capitalize} from "lodash";
+import {useStore} from "../utils/useStore";
+import {LINKS} from "../routes/app";
+
+export const CommisionComponent = observer((props) => {
+ const store = useStore();
+ const [form] = Form.useForm();
+ const {Option} = Select;
+ const history = useHistory();
+ const [idData, setIdData] = useState('');
+ const [confirmLoading, setConfirmLoading] = useState(false);
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.product.getDataSubCategories();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ const handleEditButton = (data) => {
+ console.log(data, "isi data")
+ form.setFieldsValue({
+ name: data.name,
+ npwp: data.npwp,
+ address: data.address,
+
+ });
+ store.product.visibleModalProduct = true;
+ setIdData(data.id);
+ }
+
+ const columns = [
+ {
+ title: "Name",
+ dataIndex: "name",
+ key: "name",
+ },
+ {
+ title: "Npwp",
+ dataIndex: "npwp",
+ key: "npwp",
+ },
+ {
+ title: "Address",
+ dataIndex: "address",
+ key: "address",
+ },
+ {
+ title: "Status",
+ dataIndex: "status",
+ key: "status",
+ render: (text, record) => (
+
+ {record?.status === true ? " ACTIVE" : "INACTIVE"}
+
+ ),
+ },
+ {
+ title: "Action",
+ key: "action",
+ render: (text, record) => (
+
+
+
+
+ ),
+ },
+ ];
+
+ const deleteData = async (id) => {
+ try {
+ console.log(id);
+ await store.product.delete(id);
+ message.success("Data Berhasil Dihapus");
+ history.push(LINKS.PRODUCT);
+ } catch (err) {
+ console.log("error", err);
+ message.error("Gagal menghapus");
+ }
+ };
+
+ const handleDelete = (id) => {
+ Modal.confirm({
+ title: "Are you sure delete this record?",
+ icon: ,
+ okText: "Yes",
+ okType: "primary",
+ cancelText: "Cancel",
+ onOk() {
+ return deleteData(id);
+ },
+ onCancel() {
+ console.log("Cancel");
+ },
+ });
+ };
+
+ const handleCancel = () => {
+ setIdData('')
+ store.product.visibleModalProduct = false;
+ }
+
+ const handleSubmit = async (data) => {
+ console.log(data, "isi data2")
+ if (idData !== '') {
+ setConfirmLoading(true);
+ try {
+ await store.product.update(idData, data)
+ message.success("Success Update Data Member")
+ } catch (e) {
+ message.error("Failed Update Data Member")
+ }
+ setConfirmLoading(false);
+ store.product.visibleModalProduct = false;
+ setIdData('');
+ form.resetFields();
+ } else {
+ setConfirmLoading(true);
+ try {
+ await store.partner.create(data)
+ message.success("Success Add New Member")
+ } catch (e) {
+ console.log(e, "apa errornya")
+ message.error("Failed Add Member")
+ }
+ setConfirmLoading(false);
+ store.product.visibleModalProduct = false;
+ setIdData('');
+ form.resetFields();
+ }
+ }
+
+ return (
+
+
{
+ let pageNumber = page.current;
+ store.product.pageSize = page.pageSize;
+ store.product.page = pageNumber - 1;
+ // store.membership.isLoading = true;
+ await store.product.getData();
+ // store.membership.isLoading = false;
+ }}
+ />
+
+ {
+ form.resetFields();
+ handleCancel();
+ }}
+ onOk={() => {
+ form
+ .validateFields()
+ .then((values) => {
+ console.log(values, "isi form")
+ handleSubmit(values);
+ form.resetFields();
+ })
+ .catch((info) => {
+ console.error("Validate Failed:", info);
+ });
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+});
diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js
new file mode 100644
index 0000000..f91e120
--- /dev/null
+++ b/src/component/PartnerComponent.js
@@ -0,0 +1,244 @@
+import React, {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 {capitalize} from "lodash";
+import {useStore} from "../utils/useStore";
+import {LINKS} from "../routes/app";
+
+export const PartnerComponent = observer((props) => {
+ const store = useStore();
+ const [form] = Form.useForm();
+ const {Option} = Select;
+ const history = useHistory();
+ const [idData, setIdData] = useState('');
+ const [confirmLoading, setConfirmLoading] = useState(false);
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.partner.getDataSubCategories();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ const handleEditButton = (data) => {
+ console.log(data, "isi data")
+ form.setFieldsValue({
+ name: data.name,
+ npwp: data.npwp,
+ address: data.address,
+
+ });
+ store.partner.visibleModalPartner = true;
+ setIdData(data.id);
+ }
+
+ const columns = [
+ {
+ title: "Name",
+ dataIndex: "name",
+ key: "name",
+ },
+ {
+ title: "Npwp",
+ dataIndex: "npwp",
+ key: "npwp",
+ },
+ {
+ title: "Address",
+ dataIndex: "address",
+ key: "address",
+ },
+ {
+ title: "Status",
+ dataIndex: "status",
+ key: "status",
+ render: (text, record) => (
+
+ {record?.status === true ? " ACTIVE" : "INACTIVE"}
+
+ ),
+ },
+ {
+ title: "Action",
+ key: "action",
+ render: (text, record) => (
+
+
+
+
+ ),
+ },
+ ];
+
+ const deleteData = async (id) => {
+ try {
+ console.log(id);
+ await store.product.delete(id);
+ message.success("Data Berhasil Dihapus");
+ history.push(LINKS.PRODUCT);
+ } catch (err) {
+ console.log("error", err);
+ message.error("Gagal menghapus");
+ }
+ };
+
+ const handleDelete = (id) => {
+ Modal.confirm({
+ title: "Are you sure delete this record?",
+ icon: ,
+ okText: "Yes",
+ okType: "primary",
+ cancelText: "Cancel",
+ onOk() {
+ return deleteData(id);
+ },
+ onCancel() {
+ console.log("Cancel");
+ },
+ });
+ };
+
+ const handleCancel = () => {
+ setIdData('')
+ store.partner.visibleModalPartner = false;
+ }
+
+ const handleSubmit = async (data) => {
+ console.log(data, "isi data2")
+ if (idData !== '') {
+ setConfirmLoading(true);
+ try {
+ await store.partner.update(idData, data)
+ message.success("Success Update Data Member")
+ } catch (e) {
+ message.error("Failed Update Data Member")
+ }
+ setConfirmLoading(false);
+ store.partner.visibleModalPartner = false;
+ setIdData('');
+ form.resetFields();
+ } else {
+ setConfirmLoading(true);
+ try {
+ await store.partner.create(data)
+ message.success("Success Add New Member")
+ } catch (e) {
+ console.log(e, "apa errornya")
+ message.error("Failed Add Member")
+ }
+ setConfirmLoading(false);
+ store.partner.visibleModalPartner = false;
+ setIdData('');
+ form.resetFields();
+ }
+ }
+
+ return (
+
+
{
+ let pageNumber = page.current;
+ store.partner.pageSize = page.pageSize;
+ store.partner.page = pageNumber - 1;
+ // store.membership.isLoading = true;
+ await store.partner.getData();
+ // store.membership.isLoading = false;
+ }}
+ />
+
+ {
+ form.resetFields();
+ handleCancel();
+ }}
+ onOk={() => {
+ form
+ .validateFields()
+ .then((values) => {
+ console.log(values, "isi form")
+ handleSubmit(values);
+ form.resetFields();
+ })
+ .catch((info) => {
+ console.error("Validate Failed:", info);
+ });
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+});
diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js
index e139217..3266a2e 100644
--- a/src/component/ProductComponent.js
+++ b/src/component/ProductComponent.js
@@ -177,9 +177,25 @@ export const ProductComponent = observer((props) => {
{
+ let pageNumber = page.current;
+ store.product.pageSize = page.pageSize;
+ store.product.page = pageNumber - 1;
+ // store.membership.isLoading = true;
+ await store.product.getData();
+ // store.membership.isLoading = false;
+ }}
/>
+
{
+ const store = useStore();
+ const [form] = Form.useForm();
+ const { Option } = Select;
+ const history = useHistory();
+ const [idData, setIdData] = useState("");
+ const [confirmLoading, setConfirmLoading] = useState(false);
+ const [isLoading, setIsLoading] = useState(false);
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.product.getDataSubCategories();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ const handleEditButton = (data) => {
+ console.log(data, "isi data");
+ form.setFieldsValue({
+ name: data.name,
+ code: data.code,
+ status:data.status
+ });
+ store.supplier.visibleModalSupplier = true;
+ setIdData(data.id);
+ };
+
+ const columns = [
+ {
+ title: "Name",
+ dataIndex: "name",
+ key: "name",
+ },
+ {
+ title: "Kode",
+ dataIndex: "code",
+ key: "code",
+ },
+ {
+ title: "Status",
+ dataIndex: "status",
+ key: "status",
+ render: (text, record) => (
+
+ {record?.status === true ? " ACTIVE" : "INACTIVE"}
+
+ ),
+ },
+ {
+ title: "Action",
+ key: "action",
+ render: (text, record) => (
+
+
+
+
+ ),
+ },
+ ];
+
+ const deleteData = async (id) => {
+ try {
+ console.log(id);
+ await store.product.delete(id);
+ message.success("Data Berhasil Dihapus");
+ history.push(LINKS.PRODUCT);
+ } catch (err) {
+ console.log("error", err);
+ message.error("Gagal menghapus");
+ }
+ };
+
+ const handleDelete = (id) => {
+ Modal.confirm({
+ title: "Are you sure delete this record?",
+ icon: ,
+ okText: "Yes",
+ okType: "primary",
+ cancelText: "Cancel",
+ onOk() {
+ return deleteData(id);
+ },
+ onCancel() {
+ console.log("Cancel");
+ },
+ });
+ };
+
+ const handleCancel = () => {
+ setIdData("");
+ store.supplier.visibleModalSupplier = false;
+ };
+
+ const handleSubmit = async (data) => {
+ console.log(data, "isi data2");
+ if (idData !== "") {
+ setConfirmLoading(true);
+ try {
+ await store.supplier.update(idData, data);
+ message.success("Success Update Data Member");
+ } catch (e) {
+ message.error("Failed Update Data Member");
+ }
+ setConfirmLoading(false);
+ store.supplier.visibleModalSupplier = false;
+ setIdData("");
+ form.resetFields();
+ } else {
+ setConfirmLoading(true);
+ try {
+ await store.supplier.create(data);
+ message.success("Success Add New Member");
+ //await store.supplier.getData()
+ } catch (e) {
+ console.log(e, "apa errornya");
+ message.error("Failed Add Member");
+ }
+ setConfirmLoading(false);
+ store.supplier.visibleModalSupplier = false;
+ setIdData("");
+ form.resetFields();
+ }
+ };
+
+ return (
+
+
{
+ let pageNumber = page.current;
+ store.supplier.pageSize = page.pageSize;
+ store.supplier.page = pageNumber - 1;
+ // store.membership.isLoading = true;
+ await store.supplier.getData();
+ // store.membership.isLoading = false;
+ }}
+ />
+
+ {
+ form.resetFields();
+ handleCancel();
+ }}
+ onOk={() => {
+ form
+ .validateFields()
+ .then((values) => {
+ console.log(values, "isi form");
+ handleSubmit(values);
+ form.resetFields();
+ })
+ .catch((info) => {
+ console.error("Validate Failed:", info);
+ });
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ );
+});
diff --git a/src/index.css b/src/index.css
index 1e43dce..47e2225 100644
--- a/src/index.css
+++ b/src/index.css
@@ -56,4 +56,10 @@ code {
.shadow {
box-shadow: 0 7px 14px 0 rgba(60, 66, 87, 0.05), 0 3px 6px 0 rgba(0, 0, 0, 0.05);
-}
\ No newline at end of file
+}
+.ant-menu-sub.ant-menu-inline{
+ background-color: #e3e8ee !important;
+}
+.ant-menu-submenu-arrow{
+ padding-right: 40px !important;
+}
diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js
index 77d14f3..b1bb129 100644
--- a/src/pages/App/DesktopLayout.js
+++ b/src/pages/App/DesktopLayout.js
@@ -1,451 +1,500 @@
-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,} 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 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 } 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";
-const {Text, Paragraph} = Typography;
-const {Header, Content, Sider} = Layout;
+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 &&
+
+ PPOB
+
+
+ Admin
+
+
+ {}} />
+
+ )}
+
+ {store.ui.mediaQuery.isMobile && (
+ {
+ store.ui.toggleLeftDrawerIsShown();
+ }}
+ visible={store.ui.leftDrawerIsShown}
+ key={"dashboard-drawer"}
+ bodyStyle={{
+ padding: 0,
+ paddingTop: 20,
+ }}
+ >
+
+
+
+
+ )}
+
+
+
+ {store.ui.mediaQuery.isMobile && (
+
+
+
+ }
+ onClick={() => {
+ store.ui.toggleLeftDrawerIsShown();
+ }}
+ />
-
- PPOB
-
-
- Admin
-
+ {/*

*/}
+ {/*
*/}
+ {/* {store.authentication.userData.role || "Apps"}*/}
+ {/**/}
-
{
- }}/>
- }
-
- {store.ui.mediaQuery.isMobile && (
- {
- store.ui.toggleLeftDrawerIsShown()
- }}
- visible={store.ui.leftDrawerIsShown}
- key={"dashboard-drawer"}
- bodyStyle={{
- padding: 0,
- paddingTop: 20,
- }}
- >
-
-
-
-
- )}
-
-
+
+ Profile
+
+
+ {
+ store.authentication.logout();
+ history.push("/login");
+ }}
+ >
+ Sign out
+
+
+ }
+ title={
+
+ {store.user.data.username}
+
+ {store.authentication.userData.username}
+
+
+ }
+ trigger="click"
+ visible={clicked}
+ onVisibleChange={() => setClicked(!clicked)}
+ >
+
+ ) : (
+
+ )
+ }
+ />
+
+
+
+ {/*
*/}
+
+ )}
+
+ {store.ui.mediaQuery.isDesktop && (
+
-
+
- {store.ui.mediaQuery.isMobile && (
-
-
-
- }
- onClick={() => {
- store.ui.toggleLeftDrawerIsShown();
- }}
- />
-
- {/*

*/}
- {/*
*/}
- {/* {store.authentication.userData.role || "Apps"}*/}
- {/**/}
-
-
-
-
- Profile
-
-
- {
- store.authentication.logout();
- history.push("/login");
- }}
- >
- Sign out
-
-
- }
- title={
-
- {store.user.data.username}
-
- {store.authentication.userData.username}
-
-
- }
- trigger="click"
- visible={clicked}
- onVisibleChange={() => setClicked(!clicked)}
- >
-
- ) : (
-
- )
- }
- />
-
-
-
- {/*
*/}
-
- )}
-
- {store.ui.mediaQuery.isDesktop && (
-
-
-
-
-
-
- Profile
-
-
- {
- store.authentication.logout();
- history.push("/login");
- }}
- >
- Sign out
-
-
- }
- title={
-
- {store.user.data.email}{" "}
-
- {store.authentication.userData.username}
-
-
- }
- trigger="click"
- visible={clicked}
- onVisibleChange={() => setClicked(!clicked)}
- >
-
- ) : (
-
- )
- }
- />
-
-
-
- )}
-
-
-
-
+
+
+ Profile
+
+
+ {
+ store.authentication.logout();
+ history.push("/login");
+ }}
>
-
-
-
-
+ Sign out
+
+
+ }
+ title={
+
+ {store.user.data.email}{" "}
+
+ {store.authentication.userData.username}
+
+
+ }
+ trigger="click"
+ visible={clicked}
+ onVisibleChange={() => setClicked(!clicked)}
+ >
+
+ ) : (
+
+ )
+ }
+ />
+
+
+ )}
+
+
+
+
+
+
- );
+
+
+ );
});
diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js
index 5a79b91..19e699d 100644
--- a/src/pages/App/MenuList.js
+++ b/src/pages/App/MenuList.js
@@ -1,76 +1,112 @@
-import React, {useEffect, useState} from "react";
-import {Menu} from "antd";
-import {Link} from "react-router-dom";
-import {HomeOutlined, UserOutlined,} from "@ant-design/icons";
-import {observer} from "mobx-react-lite";
-import {useStore} from "../../utils/useStore";
-import {LINKS} from "../../routes/app";
+import React, { useEffect, useState } from "react";
+import { Menu } from "antd";
+import { Link } from "react-router-dom";
+import {
+ HomeOutlined,
+ UserOutlined,
+ AppstoreOutlined,
+ MenuUnfoldOutlined,
+ DatabaseOutlined,
+ MoneyCollectOutlined,
+ ProjectOutlined,
+ FileProtectOutlined
+} from "@ant-design/icons";
+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 (
+
+ );
});
diff --git a/src/pages/Config/Commision.js b/src/pages/Config/Commision.js
new file mode 100644
index 0000000..099f158
--- /dev/null
+++ b/src/pages/Config/Commision.js
@@ -0,0 +1,86 @@
+import React, {useEffect, useState} from "react";
+import {Button, Card, Col, Input, Row, Tabs} from "antd";
+import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
+import {CommisionComponent} from "../../component/CommisionComponent";
+import {LINKS} from "../../routes/app";
+
+const {TabPane} = Tabs;
+const {Search} = Input;
+
+export const Commision = observer(() => {
+ const [isLoading, setIsLoading] = useState(false);
+ const store = useStore();
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.partner.getDataCategories();
+ await store.partner.getData();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ const handleChangeTabPane = async (key) => {
+ store.product.filterCategory = key;
+ console.log(key);
+ };
+
+ const routeData = [
+ {
+ route: LINKS.HOME,
+ name: "Home",
+ },
+ {
+ route: LINKS.PARTNER,
+ name: Partner,
+ },
+ ];
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ))
+
+
+
+ );
+});
diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js
new file mode 100644
index 0000000..2f95ab2
--- /dev/null
+++ b/src/pages/Config/Partner.js
@@ -0,0 +1,86 @@
+import React, {useEffect, useState} from "react";
+import {Button, Card, Col, Input, Row, Tabs} from "antd";
+import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
+import {PartnerComponent} from "../../component/PartnerComponent";
+import {LINKS} from "../../routes/app";
+
+const {TabPane} = Tabs;
+const {Search} = Input;
+
+export const Partner = observer(() => {
+ const [isLoading, setIsLoading] = useState(false);
+ const store = useStore();
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.partner.getDataCategories();
+ await store.partner.getData();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ const handleChangeTabPane = async (key) => {
+ store.product.filterCategory = key;
+ console.log(key);
+ };
+
+ const routeData = [
+ {
+ route: LINKS.HOME,
+ name: "Home",
+ },
+ {
+ route: LINKS.PARTNER,
+ name: Partner,
+ },
+ ];
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ))
+
+
+
+ );
+});
diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js
new file mode 100644
index 0000000..7f86231
--- /dev/null
+++ b/src/pages/Config/Supplier.js
@@ -0,0 +1,86 @@
+import React, {useEffect, useState} from "react";
+import {Button, Card, Col, Input, Row, Tabs} from "antd";
+import {FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
+import {SupplierComponent} from "../../component/SupplierComponent";
+import {LINKS} from "../../routes/app";
+
+const {TabPane} = Tabs;
+const {Search} = Input;
+
+export const Supplier = observer(() => {
+ const [isLoading, setIsLoading] = useState(false);
+ const store = useStore();
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.supplier.getDataCategories();
+ await store.supplier.getData();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ const handleChangeTabPane = async (key) => {
+ store.product.filterCategory = key;
+ console.log(key);
+ };
+
+ const routeData = [
+ {
+ route: LINKS.HOME,
+ name: "Home",
+ },
+ {
+ route: LINKS.SUPPLIER,
+ name: Supplier,
+ },
+ ];
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ))
+
+
+
+ );
+});
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index 485c01f..848a9fc 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -204,26 +204,26 @@ export const Membership = observer(() => {
{store.ui.mediaQuery.isDesktop && (
{
- // store.membership.pageSize = page.pageSize;
- // store.membership.page = page.current;
- // store.membership.getData();
- // }}
- // current={store.membership.page}
- // loading={store.membership.pageSize}
+ key="1"
+ hasEmpty
+ columns={columns}
+ dataSource={store.membership.data}
+ bordered
+ pagination={{
+ pageSize: store.membership.pageSize,
+ total: store.membership.total_data,
+ current: store.membership.page + 1,
+ showSizeChanger: true,
+ simple: false
+ }}
+ onChange={async (page) => {
+ let pageNumber = page.current;
+ store.membership.pageSize = page.pageSize;
+ store.membership.page = pageNumber - 1;
+ // store.membership.isLoading = true;
+ await store.membership.getData();
+ // store.membership.isLoading = false;
+ }}
/>
)}
diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js
index 146a475..f7471f1 100644
--- a/src/pages/Product/Product.js
+++ b/src/pages/Product/Product.js
@@ -76,9 +76,7 @@ export const Product = observer(() => {
tab={item.name}
key={item.id}
>
-
+
))}
diff --git a/src/pages/Transaction/Pulsa.js b/src/pages/Transaction/Pulsa.js
index ded433a..9397be8 100644
--- a/src/pages/Transaction/Pulsa.js
+++ b/src/pages/Transaction/Pulsa.js
@@ -1,25 +1,65 @@
-import React from "react";
-import {Button, Card, Col, Dropdown, Menu, message, Modal, Row, Space,} from "antd";
-import {DownOutlined, TabletOutlined, UserOutlined} from "@ant-design/icons";
+import React, { useEffect, useState } from "react";
+import { useStore } from "../../utils/useStore";
+import { Button, Card, Col, Dropdown, Menu, message, Modal, Row, Space, } from "antd";
+import { DownOutlined, TabletOutlined, UserOutlined } from "@ant-design/icons";
export const Pulsa = () => {
- function handleMenuClick(e) {
- message.info("Click on menu item.");
- console.log("click", e);
+ const store = useStore();
+
+ const [isLoading, setIsLoading] = useState(false);
+
+ const [productData, setProductData] = useState([])
+ const [productFilter, setProductFilter] = useState("")
+ // useEffect(()=>{
+ // if(!productFilter){
+ // setProductData(store.transaction.data)
+ // }
+ // },[productFilter])
+
+ useEffect(() => {
+ const init = async () => {
+ try {
+ setIsLoading(true);
+ await store.transaction.getDataSubCategories();
+ await store.transaction.getData();
+ setIsLoading(false);
+ } catch (e) {
+ setIsLoading(false);
+ }
+ };
+
+ init();
+ }, []);
+
+ // data
+ useEffect(() => {
+ console.log('âš¡ transaction data store', store.transaction.data)
+ setProductData(store.transaction.data)
+ }, [store.transaction.data])
+
+ // Subcategory
+ useEffect(() => {
+ console.log('âš¡ transaction subcategory store', store.transaction.dataSubCategories)
+ }, [store.transaction.dataSubCategories])
+
+
+ function handleMenuClick(item) {
+ message.info("âš¡ Click on menu item.");
+ console.log("âš¡ click", item);
+ setProductFilter(item.name)
}
const menu = (
-