From 66f4c724c3f8e428445d5c6e4b3231a4104c1cfa Mon Sep 17 00:00:00 2001 From: jingyang <3161362058@qq.com> Date: Wed, 3 Apr 2024 17:05:47 +0800 Subject: [PATCH] Support link jump Signed-off-by: jingyang <3161362058@qq.com> --- .../providers/workorder/src/api/platform.ts | 4 ++-- .../src/pages/api/platform/feishu.ts | 12 +++++++--- .../providers/workorder/src/pages/index.tsx | 22 +++++++++++++++++++ .../src/pages/workorder/create/index.tsx | 6 ++++- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 frontend/providers/workorder/src/pages/index.tsx diff --git a/frontend/providers/workorder/src/api/platform.ts b/frontend/providers/workorder/src/api/platform.ts index 193d98dca96d..96122d2bfcc6 100644 --- a/frontend/providers/workorder/src/api/platform.ts +++ b/frontend/providers/workorder/src/api/platform.ts @@ -1,7 +1,7 @@ +import { FeishuNotificationParams } from '@/pages/api/platform/feishu'; import { SystemEnvResponse } from '@/pages/api/platform/getEnv'; import { GET, POST } from '@/services/request'; import { AppSession } from '@/types/user'; -import { WorkOrderEditForm } from '@/types/workorder'; import { AxiosProgressEvent } from 'axios'; export const getSystemEnv = () => GET('/api/platform/getEnv'); @@ -35,5 +35,5 @@ export const deleteFileByName = ({ fileName }: { fileName: string }) => { export const AuthByDesktopSession = (payload: { token: string }) => POST('/api/auth/desktop', payload); -export const FeishuNotification = (payload: WorkOrderEditForm) => +export const FeishuNotification = (payload: FeishuNotificationParams) => POST('/api/platform/feishu', payload); diff --git a/frontend/providers/workorder/src/pages/api/platform/feishu.ts b/frontend/providers/workorder/src/pages/api/platform/feishu.ts index 9b4f48f4af1d..c74e425c7be1 100644 --- a/frontend/providers/workorder/src/pages/api/platform/feishu.ts +++ b/frontend/providers/workorder/src/pages/api/platform/feishu.ts @@ -1,12 +1,18 @@ import { verifyAccessToken } from '@/services/backend/auth'; import { jsonRes } from '@/services/backend/response'; import { ApiResp } from '@/services/kubernet'; -import { WorkOrderEditForm } from '@/types/workorder'; +import { WorkOrderType } from '@/types/workorder'; import type { NextApiRequest, NextApiResponse } from 'next'; +export type FeishuNotificationParams = { + type: WorkOrderType; + description: string; + orderId: string; +}; + export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { - const userForm = req.body as WorkOrderEditForm; + const userForm = req.body as FeishuNotificationParams; const { userId } = await verifyAccessToken(req); const feishuUrl = process.env.ADMIN_FEISHU_URL; const feishuCallBackUrl = process.env.ADMIN_FEISHU_CALLBACK_URL; @@ -30,7 +36,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< }, type: 'primary', multi_url: { - url: feishuCallBackUrl, + url: feishuCallBackUrl + `?orderId=${userForm.orderId}`, android_url: '', ios_url: '', pc_url: '' diff --git a/frontend/providers/workorder/src/pages/index.tsx b/frontend/providers/workorder/src/pages/index.tsx new file mode 100644 index 000000000000..4531d85e3d1d --- /dev/null +++ b/frontend/providers/workorder/src/pages/index.tsx @@ -0,0 +1,22 @@ +import { useRouter } from 'next/router'; +import { useEffect } from 'react'; + +export default function Index() { + const router = useRouter(); + + useEffect(() => { + if (router?.query?.orderId) { + const orderId = router?.query?.orderId; + router.push({ + pathname: '/workorder/detail', + query: { + orderId: orderId + } + }); + } else { + router.push('/workorders'); + } + }, [router]); + + return
; +} diff --git a/frontend/providers/workorder/src/pages/workorder/create/index.tsx b/frontend/providers/workorder/src/pages/workorder/create/index.tsx index d4091fad7e85..3d9892c0517e 100644 --- a/frontend/providers/workorder/src/pages/workorder/create/index.tsx +++ b/frontend/providers/workorder/src/pages/workorder/create/index.tsx @@ -64,7 +64,11 @@ export default function EditOrder() { orderId: res.orderId, content: data.description }); - await FeishuNotification(data); + await FeishuNotification({ + type: data.type, + description: data.description, + orderId: res.orderId + }); toast({ status: 'success', title: 'success'