From bd6a8b7c546cdd7d808b75d08a035c7c8f336cbd Mon Sep 17 00:00:00 2001 From: caturbgs Date: Fri, 10 Dec 2021 14:33:55 +0700 Subject: [PATCH] feat: add roles in Membership --- src/pages/App/MenuList.js | 26 ++++----- src/pages/Membership/Membership.js | 74 +++++++++++-------------- src/pages/Membership/MembershipModal.js | 13 ++++- src/store/index.js | 2 + src/store/membership.js | 2 - src/store/role.js | 34 ++++++++++++ 6 files changed, 91 insertions(+), 60 deletions(-) create mode 100644 src/store/role.js diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index 1e81b44..8068ac5 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -1,7 +1,7 @@ import React, {useEffect, useState} from "react"; import {Menu} from "antd"; import {Link} from "react-router-dom"; -import {CalendarOutlined, HomeOutlined,} from "@ant-design/icons"; +import {HomeOutlined,} from "@ant-design/icons"; import {observer} from "mobx-react-lite"; import {useStore} from "../../utils/useStore"; @@ -39,30 +39,30 @@ export const MenuList = observer((props) => { Home - + {store.authentication.userData.role !== 'Retail' && Membership - - + } + {store.authentication.userData.role !== 'Retail' && Product - - + } + {store.authentication.userData.role === 'Retail' && Transaction - - - - - About - - + } + {/**/} + {/* */} + {/* */} + {/* About*/} + {/* */} + {/**/} ); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 0f599a5..df36bd5 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -1,30 +1,12 @@ -import React, { useEffect, useState } from "react"; -import { - Button, - Card, - Col, - Divider, - Input, - List, - message, - Modal, - Row, - Space, - Table, - Tag, -} from "antd"; -import { useStore } from "../../utils/useStore"; -import { observer } from "mobx-react-lite"; -import { - ExclamationCircleOutlined, - FilterOutlined, - PlusSquareOutlined, -} from "@ant-design/icons"; -import { MembershipModal } from "./MembershipModal"; -import { BreadcumbComponent } from "../../component/BreadcumbComponent"; -import { format } from "date-fns"; +import React, {useEffect, useState} from "react"; +import {Button, Card, Col, Divider, Input, List, message, Modal, Row, Space, Table, Tag,} from "antd"; +import {useStore} from "../../utils/useStore"; +import {observer} from "mobx-react-lite"; +import {ExclamationCircleOutlined, FilterOutlined, PlusSquareOutlined,} from "@ant-design/icons"; +import {MembershipModal} from "./MembershipModal"; +import {BreadcumbComponent} from "../../component/BreadcumbComponent"; -const { Search } = Input; +const {Search} = Input; export const Membership = observer(() => { const store = useStore(); @@ -33,16 +15,18 @@ export const Membership = observer(() => { const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); - const init = async () => { - try { - setIsLoading(true); - await store.membership.getData(); - setIsLoading(false); - } catch (e) { - setIsLoading(false); - } - }; useEffect(() => { + const init = async () => { + try { + setIsLoading(true); + await store.membership.getData(); + await store.role.getData(); + setIsLoading(false); + } catch (e) { + setIsLoading(false); + } + }; + init(); }, []); @@ -78,7 +62,10 @@ export const Membership = observer(() => { - + - diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index b404639..84ff209 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -1,5 +1,7 @@ import React from 'react'; import {Form, Input, Modal, Select,} from 'antd'; +import {capitalize} from "lodash"; +import {useStore} from "../../utils/useStore"; export const MembershipModal = ({ visible, @@ -10,6 +12,7 @@ export const MembershipModal = ({ const [form] = Form.useForm(); const {Option} = Select; const dataStatus = ["true", "false"] + const store = useStore(); return ( @@ -57,10 +60,14 @@ export const MembershipModal = ({ - + {dataStatus.map(it => { - return + return })} diff --git a/src/store/index.js b/src/store/index.js index a5a0d80..8a935c9 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,6 +4,7 @@ import {User} from "./user"; import {Membership} from "./membership"; import {Product} from "./product"; import {TokenUtil} from "../utils/token"; +import {Role} from "./role"; export class Store { ui = new UI(this); @@ -11,6 +12,7 @@ export class Store { user = new User(this); membership = new Membership(this); product = new Product(this); + role = new Role(this); constructor() { TokenUtil.loadToken(); diff --git a/src/store/membership.js b/src/store/membership.js index 786313f..9dad452 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -15,8 +15,6 @@ export class Membership { @action async getData() { const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); - // console.log(response, 'Data user') - // console.log(JSON.stringify(response.body.data), 'Data') this.data = response.body.data ?? [] this.total_data = response.body.total_data ?? 0 } diff --git a/src/store/role.js b/src/store/role.js new file mode 100644 index 0000000..4352187 --- /dev/null +++ b/src/store/role.js @@ -0,0 +1,34 @@ +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; + +export class Role { + page = null; + pageSize = null; + data = []; + total_data = 0 + + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + + async getData() { + const response = await http.get(`/config/roles?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data ?? [] + this.total_data = response.body.total_data ?? 0 + } + + async create(data) { + return await http.post('/users').send(data) + } + + async update(id, data) { + return await http.put('/users/' + id).send(data); + } + + async delete(id) { + return await http.del('/users/' + id); + } +} + +