update build admin
This commit is contained in:
parent
d819ea9850
commit
6cf2cd4de4
|
|
@ -0,0 +1,109 @@
|
||||||
|
import { generateNestParams, handleError, handleSuccess } from '.';
|
||||||
|
import axios from '../lib/axios';
|
||||||
|
import { IAdmin } from '../system/type';
|
||||||
|
import { removeFalsyValues } from '../utils';
|
||||||
|
|
||||||
|
export const getAdmins = async (params: Record<string, string | number>) => {
|
||||||
|
return await axios({
|
||||||
|
url: 'admins',
|
||||||
|
params: generateNestParams(params),
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'GET',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const updateAdmin = async (admin: Partial<IAdmin>) => {
|
||||||
|
const { email, fullname, permissions } = removeFalsyValues(admin);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { data } = await axios({
|
||||||
|
url: 'admins/' + admin.id,
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'PUT',
|
||||||
|
data: { email, fullname, permissions },
|
||||||
|
});
|
||||||
|
|
||||||
|
handleSuccess(data);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
handleError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const grantNewPasswordAdmin = async (admin: Partial<IAdmin>) => {
|
||||||
|
const { password } = removeFalsyValues(admin);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { data } = await axios({
|
||||||
|
url: 'admins/grant-new-password/' + admin.id,
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'POST',
|
||||||
|
data: { password },
|
||||||
|
});
|
||||||
|
|
||||||
|
handleSuccess(data);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
handleError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const createAdmin = async (admin: Omit<IAdmin, 'id' | 'created_at' | 'updated_at' | 'is_system_account'>) => {
|
||||||
|
const newData = removeFalsyValues(admin);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { data } = await axios({
|
||||||
|
url: 'admins',
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'POST',
|
||||||
|
data: newData,
|
||||||
|
});
|
||||||
|
|
||||||
|
handleSuccess(data);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
handleError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const deleteAdmin = async (admin: IAdmin) => {
|
||||||
|
try {
|
||||||
|
const { data } = await axios({
|
||||||
|
url: 'admins/' + admin.id,
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'DELETE',
|
||||||
|
});
|
||||||
|
|
||||||
|
handleSuccess(data);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
handleError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const deletesAdmin = async (admins: IAdmin[]) => {
|
||||||
|
const ids = admins.reduce((prev, cur) => {
|
||||||
|
prev.push(cur.id);
|
||||||
|
return prev;
|
||||||
|
}, [] as number[]);
|
||||||
|
try {
|
||||||
|
const { data } = await axios({
|
||||||
|
url: 'admins/deletes',
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'POST',
|
||||||
|
data: {
|
||||||
|
ids,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
handleSuccess(data);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
} catch (error) {
|
||||||
|
handleError(error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { generateNestParams } from '.';
|
||||||
|
import axios from '../lib/axios';
|
||||||
|
|
||||||
|
export const getPermissions = async (params: Record<string, string | number>) => {
|
||||||
|
return await axios({
|
||||||
|
url: 'permissions',
|
||||||
|
params: generateNestParams(params),
|
||||||
|
withCredentials: true,
|
||||||
|
method: 'GET',
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -4,11 +4,9 @@ import { useForm, zodResolver } from '@mantine/form';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import { updateBid } from '../../apis/bid';
|
import { updateWebBid } from '../../apis/web-bid';
|
||||||
import { createWebBid, updateWebBid } from '../../apis/web-bid';
|
|
||||||
import { useConfirmStore } from '../../lib/zustand/use-confirm';
|
import { useConfirmStore } from '../../lib/zustand/use-confirm';
|
||||||
import { IWebBid } from '../../system/type';
|
import { IWebBid } from '../../system/type';
|
||||||
import { extractDomain } from '../../utils';
|
|
||||||
export interface IWebBidModelProps extends ModalProps {
|
export interface IWebBidModelProps extends ModalProps {
|
||||||
data: IWebBid | null;
|
data: IWebBid | null;
|
||||||
onUpdated?: () => void;
|
onUpdated?: () => void;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ import { useForm, zodResolver } from '@mantine/form';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import { updateBid } from '../../apis/bid';
|
|
||||||
import { createWebBid, updateWebBid } from '../../apis/web-bid';
|
import { createWebBid, updateWebBid } from '../../apis/web-bid';
|
||||||
import { useConfirmStore } from '../../lib/zustand/use-confirm';
|
import { useConfirmStore } from '../../lib/zustand/use-confirm';
|
||||||
import { IWebBid } from '../../system/type';
|
import { IWebBid } from '../../system/type';
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
export { default as usePermissions } from './use-permissions';
|
export { default as usePermissions } from './use-permissions';
|
||||||
export { default as useCategories } from './use-categories';
|
|
||||||
export { default as useTags } from './use-tags';
|
|
||||||
|
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
import { useEffect, useState } from 'react';
|
|
||||||
import { getCategories } from '../apis/category';
|
|
||||||
import { ICategory } from '../system/type';
|
|
||||||
import { ComboboxData } from '@mantine/core';
|
|
||||||
|
|
||||||
export default function usePermissions() {
|
|
||||||
const [data, setData] = useState<ICategory[]>([]);
|
|
||||||
|
|
||||||
const handleGetData = async () => {
|
|
||||||
const result = await getCategories({ per_page: 100 });
|
|
||||||
|
|
||||||
if (!result || !result.data?.data) return;
|
|
||||||
|
|
||||||
setData(result.data.data);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
handleGetData();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return {
|
|
||||||
data,
|
|
||||||
select: data.map((item) => {
|
|
||||||
return { label: item.name, value: String(item.id) };
|
|
||||||
}) as ComboboxData,
|
|
||||||
refresh: handleGetData,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
import { ComboboxData } from '@mantine/core';
|
|
||||||
import { useEffect, useState } from 'react';
|
|
||||||
import { getTags } from '../apis/tag';
|
|
||||||
import { ITag } from '../system/type';
|
|
||||||
|
|
||||||
export default function useTags() {
|
|
||||||
const [data, setData] = useState<ITag[]>([]);
|
|
||||||
|
|
||||||
const handleGetData = async () => {
|
|
||||||
const result = await getTags({ per_page: 100 });
|
|
||||||
|
|
||||||
if (!result || !result.data?.data) return;
|
|
||||||
|
|
||||||
setData(result.data.data);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
handleGetData();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return {
|
|
||||||
data,
|
|
||||||
select: data.map((item) => {
|
|
||||||
return { label: item.name, value: String(item.id) };
|
|
||||||
}) as ComboboxData,
|
|
||||||
refresh: handleGetData,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -3,3 +3,10 @@ export const mappingStatusColors = {
|
||||||
'out-bid': 'red',
|
'out-bid': 'red',
|
||||||
'win-bid': 'green',
|
'win-bid': 'green',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const mappingPermissionsColors = {
|
||||||
|
POST: 'blue',
|
||||||
|
DELETE: 'red',
|
||||||
|
GET: 'green',
|
||||||
|
PUT: 'yellow',
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -54,3 +54,9 @@ export interface IWebBid extends ITimestamp {
|
||||||
active: boolean;
|
active: boolean;
|
||||||
children: IBid[];
|
children: IBid[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IPermission extends ITimestamp {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue