- added export all in membership
This commit is contained in:
parent
c25fdc88c9
commit
429ed99d01
|
@ -15,26 +15,28 @@ import {
|
||||||
Tag,
|
Tag,
|
||||||
Select,
|
Select,
|
||||||
Option,
|
Option,
|
||||||
Typography,
|
Typography, DatePicker,
|
||||||
} from "antd";
|
} from "antd";
|
||||||
import { useStore } from "../../utils/useStore";
|
import { useStore } from "../../utils/useStore";
|
||||||
import { observer } from "mobx-react-lite";
|
import { observer } from "mobx-react-lite";
|
||||||
import {
|
import {
|
||||||
DownloadOutlined,
|
DownloadOutlined,
|
||||||
PlusSquareOutlined,
|
PlusSquareOutlined,
|
||||||
FilterOutlined,
|
FilterOutlined, ExportOutlined,
|
||||||
} from "@ant-design/icons";
|
} from "@ant-design/icons";
|
||||||
import { MembershipModal } from "./MembershipModal";
|
import { MembershipModal } from "./MembershipModal";
|
||||||
import { BreadcumbComponent } from "../../component/BreadcumbComponent";
|
import { BreadcumbComponent } from "../../component/BreadcumbComponent";
|
||||||
import { LINKS } from "../../routes/app";
|
import { LINKS } from "../../routes/app";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { ModalLoaderContext } from "../../utils/modal";
|
import { ModalLoaderContext } from "../../utils/modal";
|
||||||
|
import moment from "moment";
|
||||||
|
|
||||||
export const Membership = observer(() => {
|
export const Membership = observer(() => {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
const { Title } = Typography;
|
const { Title } = Typography;
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
|
const [formExport] = Form.useForm();
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
const [visibleModal, setVisibleModal] = useState(false);
|
const [visibleModal, setVisibleModal] = useState(false);
|
||||||
const [isVisibleTopUpModal, setIsVisibleTopUpModal] = useState(false);
|
const [isVisibleTopUpModal, setIsVisibleTopUpModal] = useState(false);
|
||||||
|
@ -44,6 +46,9 @@ export const Membership = observer(() => {
|
||||||
const modalLoader = useContext(ModalLoaderContext);
|
const modalLoader = useContext(ModalLoaderContext);
|
||||||
const [filterMembership, setFilterMembership] = useState([]);
|
const [filterMembership, setFilterMembership] = useState([]);
|
||||||
const [filterPartner, setFilterPartner] = useState([]);
|
const [filterPartner, setFilterPartner] = useState([]);
|
||||||
|
const [filterBuyer, setFilterBuyer] = useState("");
|
||||||
|
const [modalExport, setModalExport] = useState(false);
|
||||||
|
const [filterSupplier, setFilterSupplier] = useState("");
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const init = async () => {
|
const init = async () => {
|
||||||
|
@ -52,8 +57,10 @@ export const Membership = observer(() => {
|
||||||
const isAdmin = store.authentication.userData.role === "Admin";
|
const isAdmin = store.authentication.userData.role === "Admin";
|
||||||
await getData();
|
await getData();
|
||||||
await store.membership.getData();
|
await store.membership.getData();
|
||||||
|
await store.membership.getDataFilter();
|
||||||
await store.membership.getDataBySuperior();
|
await store.membership.getDataBySuperior();
|
||||||
await store.partner.getData();
|
await store.partner.getData();
|
||||||
|
await store.supplier.getData();
|
||||||
await store.role.getData(isAdmin);
|
await store.role.getData(isAdmin);
|
||||||
modalLoader.setLoading(false);
|
modalLoader.setLoading(false);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -167,6 +174,29 @@ export const Membership = observer(() => {
|
||||||
setDestination(null);
|
setDestination(null);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleSubmitExport = async () => {
|
||||||
|
const date = formExport.getFieldsValue();
|
||||||
|
const dataAll ={
|
||||||
|
dateStart: moment(date.start_date).format("YYYY-MM-DD"),
|
||||||
|
dateEnd: moment(date.end_date).format("YYYY-MM-DD"),
|
||||||
|
supplier: filterSupplier,
|
||||||
|
buyer: filterBuyer
|
||||||
|
}
|
||||||
|
modalLoader.setLoading(true);
|
||||||
|
try {
|
||||||
|
await store.transaction.exportTransactionAll(dataAll)
|
||||||
|
// console.log('responseiniyak', response);
|
||||||
|
// message.success("Success export");
|
||||||
|
setModalExport(false);
|
||||||
|
modalLoader.setLoading(false);
|
||||||
|
} catch (e) {
|
||||||
|
setModalExport(false);
|
||||||
|
console.error(e, "apa errornya");
|
||||||
|
message.error(e.response?.body?.message || "Failed to export");
|
||||||
|
modalLoader.setLoading(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
title: "Nama",
|
title: "Nama",
|
||||||
|
@ -344,6 +374,16 @@ export const Membership = observer(() => {
|
||||||
Filter
|
Filter
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
|
{store.authentication.userData.role === "Admin" && (
|
||||||
|
<Button
|
||||||
|
style={{
|
||||||
|
marginLeft: "10px"
|
||||||
|
}}
|
||||||
|
onClick={() => setModalExport(true)}
|
||||||
|
>
|
||||||
|
<ExportOutlined /> Export
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12} style={{ textAlign: "right" }}>
|
<Col span={12} style={{ textAlign: "right" }}>
|
||||||
{/* <Search
|
{/* <Search
|
||||||
|
@ -616,6 +656,78 @@ export const Membership = observer(() => {
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
|
<Modal
|
||||||
|
visible={modalExport}
|
||||||
|
title={"Export"}
|
||||||
|
onOk={handleSubmitExport}
|
||||||
|
onCancel={() => {
|
||||||
|
setModalExport(false);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Row>
|
||||||
|
<Col span={24}>
|
||||||
|
<Form layout="vertical" name="filter" form={formExport}>
|
||||||
|
<Form.Item
|
||||||
|
name="start_date"
|
||||||
|
label="Dari"
|
||||||
|
rules={[{ required: true, message: "Please input Date!" }]}
|
||||||
|
>
|
||||||
|
<DatePicker style={{ width: "100%" }} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
name="end_date"
|
||||||
|
label="Sampai"
|
||||||
|
rules={[{ required: true, message: "Please input Date!" }]}
|
||||||
|
>
|
||||||
|
<DatePicker style={{ width: "100%" }} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
name="supplier"
|
||||||
|
label="Supplier"
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
mode={"single"}
|
||||||
|
placeholder="Choose Supplier"
|
||||||
|
onChange={(val) => {
|
||||||
|
setFilterSupplier(val);
|
||||||
|
}}
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
value={filterSupplier}
|
||||||
|
>
|
||||||
|
<Option value="all">All Supplier</Option>
|
||||||
|
{store.supplier.data.map((item) => (
|
||||||
|
<Option value={item.id} key={item.id}>
|
||||||
|
{item.name}
|
||||||
|
</Option>
|
||||||
|
))}
|
||||||
|
</Select>
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
name="buyer"
|
||||||
|
label="Buyer"
|
||||||
|
>
|
||||||
|
<Select
|
||||||
|
mode={"single"}
|
||||||
|
placeholder="Choose Buyer"
|
||||||
|
onChange={(val) => {
|
||||||
|
setFilterBuyer(val);
|
||||||
|
}}
|
||||||
|
style={{ width: "100%" }}
|
||||||
|
value={filterBuyer}
|
||||||
|
>
|
||||||
|
<Option value="all">All Buyer</Option>
|
||||||
|
{store.membership.dataFilterMembership.map((item) => (
|
||||||
|
<Option value={item.id} key={item.id}>
|
||||||
|
{item.name} ({item.username})
|
||||||
|
</Option>
|
||||||
|
))}
|
||||||
|
</Select>
|
||||||
|
</Form.Item>
|
||||||
|
</Form>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,6 +5,7 @@ export class Membership {
|
||||||
page = 0;
|
page = 0;
|
||||||
pageSize = 10
|
pageSize = 10
|
||||||
data = [];
|
data = [];
|
||||||
|
dataFilterMembership = [];
|
||||||
total_data = 0;
|
total_data = 0;
|
||||||
dataTotal=0;
|
dataTotal=0;
|
||||||
|
|
||||||
|
@ -44,6 +45,26 @@ export class Membership {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getDataFilter() {
|
||||||
|
try {
|
||||||
|
const response = await http.get(`/users?page=${this.page}&pageSize=1000&superior=${this.filterMembership}&type=${this.filterPartner}`);
|
||||||
|
this.dataFilterMembership = response.body.data ?? []
|
||||||
|
this.dataFilterMembership = response.body.data.map((item, idx) => {
|
||||||
|
item.key = idx;
|
||||||
|
item.name = item?.user_detail?.name;
|
||||||
|
item.username = item?.username
|
||||||
|
item.phone_number = item?.user_detail?.phone_number;
|
||||||
|
item.roleId = item?.roles.id;
|
||||||
|
item.roleName = item?.roles.name;
|
||||||
|
return item
|
||||||
|
}) ?? []
|
||||||
|
|
||||||
|
console.log(this.dataTotal)
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async getDetail(id) {
|
async getDetail(id) {
|
||||||
try {
|
try {
|
||||||
const response = await http.get(`/users/`+id);
|
const response = await http.get(`/users/`+id);
|
||||||
|
|
|
@ -303,4 +303,27 @@ export class Transaction {
|
||||||
console.error(e,':)')
|
console.error(e,':)')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exportTransactionAll(data) {
|
||||||
|
try {
|
||||||
|
axios({
|
||||||
|
url: appConfig.apiUrl + `/excel/history-user/export-all`,
|
||||||
|
headers: {"Authorization" : `Bearer ${TokenUtil.accessToken}`},
|
||||||
|
method: 'POST',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob'
|
||||||
|
}).then((response) => {
|
||||||
|
var fileDownload = require('react-file-download');
|
||||||
|
message.success("Success export");
|
||||||
|
fileDownload(response.data, `Mutasi Transaksi ${data.dateStart} - ${data.dateEnd}.xlsx`);
|
||||||
|
return fileDownload;
|
||||||
|
}).catch(function (error) {
|
||||||
|
message.error("No data to export");
|
||||||
|
return error;
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e,':)')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user