123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import PharmacyHttpClient from '@request/pharmacy.request.ts';
- import SystemHttpClient from '@request/system.request.ts';
- import type { ResponseData } from 'alova';
- import { requestMethodFactory } from '@/platform/request.ts';
- import type { AccountModel } from '@model/account.model.ts';
- import { defaultMenus, type MenuPath, menus as menusMap } from '@/router/menu.ts';
- interface AccountData {
- token: string;
- account: AccountModel;
- }
- export function loginMethod(data: { username: string; password: string }) {
- return requestMethodFactory(
- PharmacyHttpClient.Post<string, ResponseData>(`/login/v2`, data, {
- transform(data) {
- return data?.token ?? '';
- },
- }),
- );
- }
- export function getAccountMethod(token: string) {
- return requestMethodFactory(
- SystemHttpClient.Get<AccountData, ResponseData>(`/user/getInfo`, {
- headers: { Authorization: token },
- transform(data) {
- const user = data?.user;
- return {
- token,
- account: {
- id: user?.userId?.toString(),
- name: user?.nickName ?? user?.userName ?? '',
- username: user?.userName,
- nickname: user?.nickName,
- },
- };
- },
- }),
- );
- }
- export function getMenusMethod({ token, ...account }: AccountData) {
- return requestMethodFactory(
- SystemHttpClient.Get<AccountData & { menus: typeof defaultMenus }, ResponseData[]>(`/menu/getPdaRouters`, {
- headers: { Authorization: token },
- transform(data) {
- let menus;
- if (Array.isArray(data)) {
- menus = data.map(({ path, meta }) => {
- const name = meta?.title || (menusMap[path as MenuPath]?.title ?? '');
- return { path, name };
- }).filter(Boolean);
- } else {
- menus = defaultMenus;
- }
- return Object.assign(account, { token, menus });
- },
- }),
- );
- }
|