feat(announcement): Popup and pinned

This commit is contained in:
web@ppanel
2024-12-21 00:10:09 +07:00
parent 79621623d5
commit f3680a7020
35 changed files with 465 additions and 351 deletions
+42 -7
View File
@@ -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",
+3 -1
View File
@@ -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": "更新成功",
+4 -2
View File
@@ -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',
},
-15
View File
@@ -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
View File
@@ -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
View File
@@ -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;
};