✨ feat(announcement): Popup and pinned
This commit is contained in:
@@ -5,7 +5,6 @@ import {
|
||||
deleteAnnouncement,
|
||||
getAnnouncementList,
|
||||
updateAnnouncement,
|
||||
updateAnnouncementEnable,
|
||||
} from '@/services/admin/announcement';
|
||||
import { ConfirmButton } from '@repo/ui/confirm-button';
|
||||
import { format } from '@shadcn/ui/lib/date-fns';
|
||||
@@ -51,16 +50,52 @@ export default function Page() {
|
||||
}}
|
||||
columns={[
|
||||
{
|
||||
accessorKey: 'enable',
|
||||
header: t('enable'),
|
||||
accessorKey: 'show',
|
||||
header: t('show'),
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
<Switch
|
||||
defaultChecked={row.getValue('enable')}
|
||||
defaultChecked={row.getValue('show')}
|
||||
onCheckedChange={async (checked) => {
|
||||
await updateAnnouncementEnable({
|
||||
id: row.original.id,
|
||||
enable: checked,
|
||||
await updateAnnouncement({
|
||||
...row.original,
|
||||
show: checked,
|
||||
});
|
||||
ref.current?.refresh();
|
||||
}}
|
||||
/>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: 'pinned',
|
||||
header: t('pinned'),
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
<Switch
|
||||
defaultChecked={row.getValue('pinned')}
|
||||
onCheckedChange={async (checked) => {
|
||||
await updateAnnouncement({
|
||||
...row.original,
|
||||
pinned: checked,
|
||||
});
|
||||
ref.current?.refresh();
|
||||
}}
|
||||
/>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
accessorKey: 'popup',
|
||||
header: t('popup'),
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
<Switch
|
||||
defaultChecked={row.getValue('popup')}
|
||||
onCheckedChange={async (checked) => {
|
||||
await updateAnnouncement({
|
||||
...row.original,
|
||||
popup: checked,
|
||||
});
|
||||
ref.current?.refresh();
|
||||
}}
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Zadejte"
|
||||
},
|
||||
"hide": "skrýt",
|
||||
"pinned": "Připnuto",
|
||||
"popup": "vyskakovací okno",
|
||||
"show": "Zobrazit",
|
||||
"title": "Titul",
|
||||
"updateSuccess": "Aktualizace byla úspěšná",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Bitte eingeben"
|
||||
},
|
||||
"hide": "Verbergen",
|
||||
"pinned": "Angeheftet",
|
||||
"popup": "Popup",
|
||||
"show": "Anzeigen",
|
||||
"title": "Titel",
|
||||
"updateSuccess": "Aktualisierung erfolgreich",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Please enter"
|
||||
},
|
||||
"hide": "Hide",
|
||||
"pinned": "Pinned",
|
||||
"popup": "Popup",
|
||||
"show": "Show",
|
||||
"title": "Title",
|
||||
"updateSuccess": "Update Success",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Por favor, introduce"
|
||||
},
|
||||
"hide": "Ocultar",
|
||||
"pinned": "Fijado",
|
||||
"popup": "Ventana emergente",
|
||||
"show": "mostrar",
|
||||
"title": "Título",
|
||||
"updateSuccess": "Actualización exitosa",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Por favor, ingresa"
|
||||
},
|
||||
"hide": "Ocultar",
|
||||
"pinned": "Fijado",
|
||||
"popup": "ventana emergente",
|
||||
"show": "Mostrar",
|
||||
"title": "Título",
|
||||
"updateSuccess": "Actualización exitosa",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Syötä"
|
||||
},
|
||||
"hide": "piilota",
|
||||
"pinned": "Kiinnitetty",
|
||||
"popup": "ponnahdusikkuna",
|
||||
"show": "Näytä",
|
||||
"title": "Otsikko",
|
||||
"updateSuccess": "Päivitys onnistui",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Veuillez entrer"
|
||||
},
|
||||
"hide": "Masquer",
|
||||
"pinned": "Épinglé",
|
||||
"popup": "Fenêtre contextuelle",
|
||||
"show": "afficher",
|
||||
"title": "Titre",
|
||||
"updateSuccess": "Mise à jour réussie",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "कृपया दर्ज करें"
|
||||
},
|
||||
"hide": "छिपाएं",
|
||||
"pinned": "पिन किया हुआ",
|
||||
"popup": "पॉपअप",
|
||||
"show": "प्रदर्शित करें",
|
||||
"title": "शीर्षक",
|
||||
"updateSuccess": "अपडेट सफल",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Kérjük, adja meg"
|
||||
},
|
||||
"hide": "elrejt",
|
||||
"pinned": "Kiemelt",
|
||||
"popup": "Felugró ablak",
|
||||
"show": "Megjelenítés",
|
||||
"title": "Cím",
|
||||
"updateSuccess": "Sikeres frissítés",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "入力してください"
|
||||
},
|
||||
"hide": "隠す",
|
||||
"pinned": "固定",
|
||||
"popup": "ポップアップ",
|
||||
"show": "表示",
|
||||
"title": "タイトル",
|
||||
"updateSuccess": "更新が成功しました",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "입력하세요"
|
||||
},
|
||||
"hide": "숨기기",
|
||||
"pinned": "고정",
|
||||
"popup": "팝업",
|
||||
"show": "표시",
|
||||
"title": "제목",
|
||||
"updateSuccess": "업데이트 성공",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Vennligst skriv inn"
|
||||
},
|
||||
"hide": "skjul",
|
||||
"pinned": "Festet",
|
||||
"popup": "Popup",
|
||||
"show": "Vis",
|
||||
"title": "Tittel",
|
||||
"updateSuccess": "Oppdatering vellykket",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Wprowadź"
|
||||
},
|
||||
"hide": "ukryj",
|
||||
"pinned": "Przypięte",
|
||||
"popup": "wyskakujące okienko",
|
||||
"show": "Pokaż",
|
||||
"title": "Tytuł",
|
||||
"updateSuccess": "Aktualizacja zakończona pomyślnie",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Por favor, insira"
|
||||
},
|
||||
"hide": "ocultar",
|
||||
"pinned": "Fixado",
|
||||
"popup": "Janela pop-up",
|
||||
"show": "mostrar",
|
||||
"title": "Título",
|
||||
"updateSuccess": "Atualização bem-sucedida",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Introduceți"
|
||||
},
|
||||
"hide": "ascunde",
|
||||
"pinned": "Fixat",
|
||||
"popup": "fereastră pop-up",
|
||||
"show": "afișare",
|
||||
"title": "Titlu",
|
||||
"updateSuccess": "Actualizare reușită",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Пожалуйста, введите"
|
||||
},
|
||||
"hide": "скрыть",
|
||||
"pinned": "Закреплено",
|
||||
"popup": "всплывающее окно",
|
||||
"show": "Показать",
|
||||
"title": "Заголовок",
|
||||
"updateSuccess": "Обновление успешно",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "กรุณาใส่"
|
||||
},
|
||||
"hide": "ซ่อน",
|
||||
"pinned": "ปักหมุด",
|
||||
"popup": "ป๊อปอัพ",
|
||||
"show": "แสดง",
|
||||
"title": "หัวข้อ",
|
||||
"updateSuccess": "อัปเดตสำเร็จ",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Lütfen giriniz"
|
||||
},
|
||||
"hide": "gizle",
|
||||
"pinned": "Sabitlenmiş",
|
||||
"popup": "açılır pencere",
|
||||
"show": "göster",
|
||||
"title": "Başlık",
|
||||
"updateSuccess": "Güncelleme başarılı",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Будь ласка, введіть"
|
||||
},
|
||||
"hide": "приховати",
|
||||
"pinned": "Закріплено",
|
||||
"popup": "спливаюче вікно",
|
||||
"show": "Показати",
|
||||
"title": "Заголовок",
|
||||
"updateSuccess": "Оновлення успішне",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "Vui lòng nhập"
|
||||
},
|
||||
"hide": "Ẩn",
|
||||
"pinned": "Ghim",
|
||||
"popup": "Cửa sổ bật lên",
|
||||
"show": "Hiển thị",
|
||||
"title": "Tiêu đề",
|
||||
"updateSuccess": "Cập nhật thành công",
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"deleteSuccess": "删除成功",
|
||||
"edit": "编辑",
|
||||
"editAnnouncement": "编辑公告",
|
||||
"enable": "启用",
|
||||
"enable": "是否显示",
|
||||
"form": {
|
||||
"cancel": "取消",
|
||||
"confirm": "确认",
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "请输入"
|
||||
},
|
||||
"hide": "隐藏",
|
||||
"pinned": "置顶",
|
||||
"popup": "弹窗",
|
||||
"show": "显示",
|
||||
"title": "标题",
|
||||
"updateSuccess": "更新成功",
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
"titlePlaceholder": "請輸入"
|
||||
},
|
||||
"hide": "隱藏",
|
||||
"pinned": "置頂",
|
||||
"popup": "彈窗",
|
||||
"show": "顯示",
|
||||
"title": "標題",
|
||||
"updateSuccess": "更新成功",
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
const config = [
|
||||
{
|
||||
requestLibPath: "import request from '@/utils/request';",
|
||||
schemaPath: 'https://docs.ppanel.dev/swagger/common.json',
|
||||
schemaPath:
|
||||
'https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/common.json',
|
||||
serversPath: './services',
|
||||
projectName: 'common',
|
||||
},
|
||||
{
|
||||
requestLibPath: "import request from '@/utils/request';",
|
||||
schemaPath: 'https://docs.ppanel.dev/swagger/admin.json',
|
||||
schemaPath:
|
||||
'https://raw.githubusercontent.com/perfect-panel/ppanel-docs/refs/heads/main/public/swagger/admin.json',
|
||||
serversPath: './services',
|
||||
projectName: 'admin',
|
||||
},
|
||||
|
||||
@@ -62,21 +62,6 @@ export async function getAnnouncement(
|
||||
});
|
||||
}
|
||||
|
||||
/** Update announcement enable PUT /v1/admin/announcement/enable */
|
||||
export async function updateAnnouncementEnable(
|
||||
body: API.UpdateAnnouncementEnableRequest,
|
||||
options?: { [key: string]: any },
|
||||
) {
|
||||
return request<API.Response & { data?: any }>('/v1/admin/announcement/enable', {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** Get announcement list GET /v1/admin/announcement/list */
|
||||
export async function getAnnouncementList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
|
||||
+6
-5
@@ -11,8 +11,9 @@ declare namespace API {
|
||||
id: number;
|
||||
title: string;
|
||||
content: string;
|
||||
enable: boolean;
|
||||
type: number;
|
||||
show: boolean;
|
||||
pinned: boolean;
|
||||
popup: boolean;
|
||||
created_at: number;
|
||||
updated_at: number;
|
||||
};
|
||||
@@ -82,7 +83,6 @@ declare namespace API {
|
||||
type CreateAnnouncementRequest = {
|
||||
title: string;
|
||||
content: string;
|
||||
type: number;
|
||||
};
|
||||
|
||||
type CreateApplicationRequest = {
|
||||
@@ -823,8 +823,9 @@ declare namespace API {
|
||||
id: number;
|
||||
title: string;
|
||||
content: string;
|
||||
enable: boolean;
|
||||
type: number;
|
||||
show: boolean;
|
||||
pinned: boolean;
|
||||
popup: boolean;
|
||||
};
|
||||
|
||||
type UpdateApplicationRequest = {
|
||||
|
||||
+4
-2
@@ -3,8 +3,9 @@ declare namespace API {
|
||||
id: number;
|
||||
title: string;
|
||||
content: string;
|
||||
enable: boolean;
|
||||
type: number;
|
||||
show: boolean;
|
||||
pinned: boolean;
|
||||
popup: boolean;
|
||||
created_at: number;
|
||||
updated_at: number;
|
||||
};
|
||||
@@ -321,6 +322,7 @@ declare namespace API {
|
||||
server: number[];
|
||||
show: boolean;
|
||||
sell: boolean;
|
||||
sort: number;
|
||||
created_at: number;
|
||||
updated_at: number;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user