This commit is contained in:
MoreStrive
2024-05-30 18:06:50 +07:00
parent 8ca31c6b18
commit 2aa5607c48
147 changed files with 5815 additions and 1 deletions
+9
View File
@@ -0,0 +1,9 @@
import { createRouter, defineEventHandler, useBase } from 'h3'
import * as DynamicPageCtrl from '~/server/models/dynamic-page'
const router = createRouter()
router.get('/getByCode/:code', defineEventHandler(DynamicPageCtrl.getDynamicPageByCode))
router.get('/get-by-id/:id', defineEventHandler(DynamicPageCtrl.getDynamicPageById))
export default useBase('/api/services', router.handler)
+30
View File
@@ -0,0 +1,30 @@
import { createRouter, defineEventHandler, useBase } from 'h3'
import * as DynamicPageCtrl from '~/server/models/dynamic-page'
const router = createRouter()
router.get('/get-by-code/:slug', defineEventHandler(async (event : any) => {
try {
const { apiUrl } = useRuntimeConfig().public
const slug = event.context.params.slug;
const { item } : any = await $fetch(`${apiUrl}/cms/overview-page/1`)
return item
} catch (error) {
handleError(error);
}
}))
router.get('/get-by-id/:id', defineEventHandler(async (event : any) => {
try {
const { apiUrl } = useRuntimeConfig().public
const slug = event.context.params.slug;
const { item } : any = await $fetch(`${apiUrl}/cms/overview-page/1`)
return item
} catch (error) {
handleError(error);
}
}))
export default useBase('/api/services', router.handler)
+128
View File
@@ -0,0 +1,128 @@
interface Base {
createdBy?: string | number
createdOn?: string
updatedBy?: string | number
updatedOn?: string
}
interface PageSettings {
label?: string; // Nhãn
layout?: string; // Bố cục
template?: string; // Bản mẫu
mainLink?: boolean; // Liên kết chính
footerLink?: boolean; // Liên kết chân trang
sidebarLink?: boolean; // Liên kết trượt bên
floatingLink?: boolean; // Liên kết bám nổi
dataType?: string; // Loại dữ liệu: Section, Category, Topic, Event, Collection, Article, Tag, Author, Poll, Quiz, Survey, Advertising, Other
dataQuery?: string; // Truy vấn dữ liệu: IDS | NEW | VIEW | SQL | REQUEST | PARAM | ...
dataResult?: string; // Kết quả dữ liệu (Json)
}
interface PageSectionSettings {
label?: string; // Nhãn
layout?: string; // Bố cục
template?: string; // Bản mẫu
}
interface PageComponentSettings {
label?: string; // Nhãn
layout?: string; // Bố cục
template?: string; // Bản mẫu
dataType?: string; // Loại dữ liệu: Section, Category, Topic, Event, Collection, Article, Tag, Author, Poll, Quiz, Survey, Advertising, Other
dataQuery?: string; // Truy vấn dữ liệu: IDS | NEW | VIEW | SQL | REQUEST | ...
dataResult?: string; // Kết quả dữ liệu (Json)
}
interface PageSection extends Base {
id?: number; // Mã định danh
siteId?: number; // Mã hệ thống
pageId?: number; // Mã trang
parentId?: number; // Mã vùng cha
title?: string; // Tiêu đề
slug?: string; // (Anchor)
code?: string; // Mã nhận diện
content?: string; // Nội dung
keywords?: string; // Từ khóa
description?: string; // Mô tả
type?: number; // Phân loại: PageSectionType
features?: string; // Đặc trưng: Featured (nổi bật)
taxonomy?: string; // Phân loại: Block | Module | Navigation
settings?: PageSectionSettings; // Thiết lập: PageSectionSettings (Json)
isPublished?: boolean; // Đã xuất bản
publishedBy?: number; // Xuất bản bởi
publishedOn?: string; // Xuất bản vào lúc (string)
expiresOn?: string; // Hết hạn vào lúc (string)
order?: number; // Thứ tự sắp xếp
status?: number; // Trạng thái
}
interface PageComponent extends Base {
id?: number; // Mã định danh
siteId?: number; // Mã hệ thống
pageId?: number; // Mã trang
sectionId?: number; // Mã vùng
title?: string; // Tiêu đề
code?: string; // Mã nhận diện
content?: string; // Nội dung
type?: number; // Phân loại: PageComponentType
features?: string; // Đặc trưng: Featured (nổi bật)
taxonomy?: string; // Phân loại
settings?: PageComponentSettings; // Thiết lập: PageComponentSettings (Json)
isPublished?: boolean; // Đã xuất bản
publishedBy?: number; // Xuất bản bởi
publishedOn?: string; // Xuất bản vào lúc (string)
expiresOn?: string; // Hết hạn vào lúc (string)
order?: number; // Thứ tự sắp xếp
status?: number; // Trạng thái
}
interface Page extends Base {
id?: number; // Mã định danh
siteId?: number; // Mã hệ thống
parentId?: number; // Mã trang cha
title?: string; // Tiêu đề
slug?: string; // Slug
code?: string; // Mã nhận diện
content?: string; // Nội dung
favicon?: string; // Biểu tượng
keywords?: string; // Từ khóa
thumbnail?: string; // Ảnh đại diện
description?: string; // Mô tả
type?: number; // Phân loại: PageType
features?: string; // Đặc trưng: Featured (nổi bật)
taxonomy?: string; // Phân nhóm
settings?: PageSettings; // Thiết lập: PageSettings (Json)
isPublished?: boolean; // Đã xuất bản
publishedBy?: number; // Đã xuất bản bởi
publishedOn?: string; // Đã xuất bản vào lúc (string)
expiresOn?: string; // Đã hết hạn vào lúc (string)
order?: number; // Thứ tự sắp xếp
status?: number; // Trạng thái
components?: PageComponent[];
sections?: PageSection[];
}
export const getDynamicPageByCode = async (event : any) => {
try {
const { apiUrl } = useRuntimeConfig().public
const slug = event.context.params.slug;
const { item }: any = await $fetch(`${apiUrl}/cms/overview-page/slug:${slug}`)
console.log('============')
console.log(item)
console.log('============')
return { item }
} catch (error) {
handleError(error);
}
}
export const getDynamicPageById = async (event : any) => {
try {
const { apiUrl } = useRuntimeConfig().public
const id = event.context.params.id;
const { item }: any = await $fetch(`${apiUrl}/cms/overview-page/${id}`, {
method: 'GET',
})
return { item }
} catch (error) {
handleError(error);
}
}
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "../.nuxt/tsconfig.server.json"
}
+11
View File
@@ -0,0 +1,11 @@
import { H3Error} from 'h3'
export function handleError(error: any){
const h3Error = new H3Error('')
h3Error.statusCode = error.statusCode||500
h3Error.statusMessage = error.statusMessage||'Internal Server Error'
h3Error.data = error.data
throw createError(h3Error)
}