diff --git a/backend/app/http/posts.go b/backend/app/http/posts.go index 9303ba8..e3d883d 100644 --- a/backend/app/http/posts.go +++ b/backend/app/http/posts.go @@ -27,7 +27,7 @@ type posts struct { } // List posts -// @Router / [get] +// @Router /api/posts [get] // @Bind pagination query // @Bind query query // @Bind user local @@ -37,14 +37,14 @@ func (ctl *posts) List(ctx fiber.Ctx, pagination *requests.Pagination, query *Li } // Show -// @Router /show/:id [get] +// @Router /api/posts/show/:id [get] // @Bind id path func (ctl *posts) Show(ctx fiber.Ctx, id int64) (*model.Posts, error) { return models.Posts.GetByID(ctx.Context(), id) } // Mine posts -// @Router /mine [get] +// @Router /api/posts/mine [get] // @Bind pagination query // @Bind query query func (ctl *posts) Mine(ctx fiber.Ctx, pagination *requests.Pagination, query *ListQuery) (*requests.Pager, error) { @@ -56,7 +56,7 @@ func (ctl *posts) Mine(ctx fiber.Ctx, pagination *requests.Pagination, query *Li var buyTpl string // Buy -// @Router /buy/:id [get] +// @Router /api/posts/buy/:id [get] // @Bind id path func (ctl *posts) Buy(ctx fiber.Ctx, id int64) error { var userId int64 = 1 diff --git a/backend/app/http/routes.gen.go b/backend/app/http/routes.gen.go index f088284..dbb0dd8 100644 --- a/backend/app/http/routes.gen.go +++ b/backend/app/http/routes.gen.go @@ -50,25 +50,25 @@ func (r *Routes) Register(router fiber.Router) { )) // 注册路由组: posts - router.Get("/", DataFunc3( + router.Get("/api/posts", DataFunc3( r.posts.List, Query[requests.Pagination]("pagination"), Query[ListQuery]("query"), Local[*model.Users]("user"), )) - router.Get("/show/:id", DataFunc1( + router.Get("/api/posts/show/:id", DataFunc1( r.posts.Show, PathParam[int64]("id"), )) - router.Get("/mine", DataFunc2( + router.Get("/api/posts/mine", DataFunc2( r.posts.Mine, Query[requests.Pagination]("pagination"), Query[ListQuery]("query"), )) - router.Get("/buy/:id", Func1( + router.Get("/api/posts/buy/:id", Func1( r.posts.Buy, PathParam[int64]("id"), )) diff --git a/backend/app/middlewares/mid_auth.go b/backend/app/middlewares/mid_auth.go index a7f07bd..fc2a826 100644 --- a/backend/app/middlewares/mid_auth.go +++ b/backend/app/middlewares/mid_auth.go @@ -34,6 +34,7 @@ func (f *Middlewares) Auth(ctx fiber.Ctx) error { if strings.HasPrefix(ctx.Path(), "/auth/") { return ctx.Next() } + return ctx.Next() fullUrl := string(ctx.Request().URI().FullURI()) u, err := url.Parse(fullUrl) diff --git a/frontend/wechat/bun.lock b/frontend/wechat/bun.lock index 076fed3..4116340 100644 --- a/frontend/wechat/bun.lock +++ b/frontend/wechat/bun.lock @@ -4,21 +4,18 @@ "": { "name": "wechat", "dependencies": { - "@primeuix/themes": "^1.0.3", "@tailwindcss/vite": "^4.1.4", "@vueuse/core": "^13.1.0", "pinia": "^3.0.2", - "primeicons": "^7.0.0", - "primevue": "^4.3.3", "tailwindcss": "^4.1.4", "vue": "^3.5.13", + "vue-icons-plus": "^0.1.8", "vue-router": "^4.5.0", }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.2", "autoprefixer": "^10.4.21", "postcss": "^8.5.3", - "tailwindcss-primeui": "^0.6.1", "vite": "^6.3.0", }, }, @@ -84,18 +81,6 @@ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], - "@primeuix/styled": ["@primeuix/styled@0.5.1", "https://registry.npmmirror.com/@primeuix/styled/-/styled-0.5.1.tgz", { "dependencies": { "@primeuix/utils": "^0.5.3" } }, "sha512-5Ftw/KSauDPClQ8F2qCyCUF7cIUEY4yLNikf0rKV7Vsb8zGYNK0dahQe7CChaR6M2Kn+NA2DSBSk76ZXqj6Uog=="], - - "@primeuix/styles": ["@primeuix/styles@1.0.3", "https://registry.npmmirror.com/@primeuix/styles/-/styles-1.0.3.tgz", { "dependencies": { "@primeuix/styled": "^0.5.1" } }, "sha512-yHj/Q+fosJ1736Ty5lRbpqhKa9piou+xZPPppNHUDshq0+XhrFwDGggvPGmDAJyUIM+ChM/Nj8lPY/AwTNXAkg=="], - - "@primeuix/themes": ["@primeuix/themes@1.0.3", "https://registry.npmmirror.com/@primeuix/themes/-/themes-1.0.3.tgz", { "dependencies": { "@primeuix/styled": "^0.5.1" } }, "sha512-f/1qadrv5TFMHfvtVv4Y9zjrkeDP2BO/cuzbHBO9DYxKL6YBIPT9BjKec2K4Kg8PcfGm6CAvxAvICadJSWejRw=="], - - "@primeuix/utils": ["@primeuix/utils@0.5.3", "https://registry.npmmirror.com/@primeuix/utils/-/utils-0.5.3.tgz", {}, "sha512-7SGh7734wcF1/uK6RzO6Z6CBjGQ97GDHfpyl2F1G/c7R0z9hkT/V72ypDo82AWcCS7Ta07oIjDpOCTkSVZuEGQ=="], - - "@primevue/core": ["@primevue/core@4.3.3", "https://registry.npmmirror.com/@primevue/core/-/core-4.3.3.tgz", { "dependencies": { "@primeuix/styled": "^0.5.0", "@primeuix/utils": "^0.5.1" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-kSkN5oourG7eueoFPIqiNX3oDT/f0I5IRK3uOY/ytz+VzTZp5yuaCN0Nt42ZQpVXjDxMxDvUhIdaXVrjr58NhQ=="], - - "@primevue/icons": ["@primevue/icons@4.3.3", "https://registry.npmmirror.com/@primevue/icons/-/icons-4.3.3.tgz", { "dependencies": { "@primeuix/utils": "^0.5.1", "@primevue/core": "4.3.3" } }, "sha512-ouQaxHyeFB6MSfEGGbjaK5Qv9efS1xZGetZoU5jcPm090MSYLFtroP1CuK3lZZAQals06TZ6T6qcoNukSHpK5w=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.40.0", "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", { "os": "android", "cpu": "arm" }, "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg=="], "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.40.0", "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", { "os": "android", "cpu": "arm64" }, "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w=="], @@ -286,10 +271,6 @@ "postcss-value-parser": ["postcss-value-parser@4.2.0", "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - "primeicons": ["primeicons@7.0.0", "https://registry.npmmirror.com/primeicons/-/primeicons-7.0.0.tgz", {}, "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw=="], - - "primevue": ["primevue@4.3.3", "https://registry.npmmirror.com/primevue/-/primevue-4.3.3.tgz", { "dependencies": { "@primeuix/styled": "^0.5.0", "@primeuix/styles": "^1.0.0", "@primeuix/utils": "^0.5.1", "@primevue/core": "4.3.3", "@primevue/icons": "4.3.3" } }, "sha512-nooYVoEz5CdP3EhUkD6c3qTdRmpLHZh75fBynkUkl46K8y5rksHTjdSISiDijwTA5STQIOkyqLb+RM+HQ6nC1Q=="], - "rfdc": ["rfdc@1.4.1", "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], "rollup": ["rollup@4.40.0", "https://registry.npmmirror.com/rollup/-/rollup-4.40.0.tgz", { "dependencies": { "@types/estree": "1.0.7" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.40.0", "@rollup/rollup-android-arm64": "4.40.0", "@rollup/rollup-darwin-arm64": "4.40.0", "@rollup/rollup-darwin-x64": "4.40.0", "@rollup/rollup-freebsd-arm64": "4.40.0", "@rollup/rollup-freebsd-x64": "4.40.0", "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", "@rollup/rollup-linux-arm-musleabihf": "4.40.0", "@rollup/rollup-linux-arm64-gnu": "4.40.0", "@rollup/rollup-linux-arm64-musl": "4.40.0", "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", "@rollup/rollup-linux-riscv64-gnu": "4.40.0", "@rollup/rollup-linux-riscv64-musl": "4.40.0", "@rollup/rollup-linux-s390x-gnu": "4.40.0", "@rollup/rollup-linux-x64-gnu": "4.40.0", "@rollup/rollup-linux-x64-musl": "4.40.0", "@rollup/rollup-win32-arm64-msvc": "4.40.0", "@rollup/rollup-win32-ia32-msvc": "4.40.0", "@rollup/rollup-win32-x64-msvc": "4.40.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w=="], @@ -302,8 +283,6 @@ "tailwindcss": ["tailwindcss@4.1.4", "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-4.1.4.tgz", {}, "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A=="], - "tailwindcss-primeui": ["tailwindcss-primeui@0.6.1", "https://registry.npmmirror.com/tailwindcss-primeui/-/tailwindcss-primeui-0.6.1.tgz", { "peerDependencies": { "tailwindcss": ">=3.1.0" } }, "sha512-T69Rylcrmnt8zy9ik+qZvsLuRIrS9/k6rYJSIgZ1trnbEzGDDQSCIdmfyZknevqiHwpSJHSmQ9XT2C+S/hJY4A=="], - "tapable": ["tapable@2.2.1", "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz", {}, "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="], "tinyglobby": ["tinyglobby@0.2.12", "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.12.tgz", { "dependencies": { "fdir": "^6.4.3", "picomatch": "^4.0.2" } }, "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww=="], @@ -314,6 +293,8 @@ "vue": ["vue@3.5.13", "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz", { "dependencies": { "@vue/compiler-dom": "3.5.13", "@vue/compiler-sfc": "3.5.13", "@vue/runtime-dom": "3.5.13", "@vue/server-renderer": "3.5.13", "@vue/shared": "3.5.13" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ=="], + "vue-icons-plus": ["vue-icons-plus@0.1.8", "https://registry.npmmirror.com/vue-icons-plus/-/vue-icons-plus-0.1.8.tgz", { "peerDependencies": { "vue": ">=2.7.0" } }, "sha512-Xc4hDsD/oP9waSUf44nSaFBhUPo+QkpKclx0S7//5BRACpXymctbit02epek0VRW6nb81pR486XmxPP/ofm2yQ=="], + "vue-router": ["vue-router@4.5.0", "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz", { "dependencies": { "@vue/devtools-api": "^6.6.4" }, "peerDependencies": { "vue": "^3.2.0" } }, "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "https://registry.npmmirror.com/@emnapi/core/-/core-1.4.3.tgz", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], diff --git a/frontend/wechat/package.json b/frontend/wechat/package.json index ab516ef..d639ef7 100644 --- a/frontend/wechat/package.json +++ b/frontend/wechat/package.json @@ -1,29 +1,26 @@ { - "name": "wechat", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "@primeuix/themes": "^1.0.3", - "@tailwindcss/vite": "^4.1.4", - "@vueuse/core": "^13.1.0", - "pinia": "^3.0.2", - "primeicons": "^7.0.0", - "primevue": "^4.3.3", - "tailwindcss": "^4.1.4", - "vue": "^3.5.13", - "vue-router": "^4.5.0" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^5.2.2", - "autoprefixer": "^10.4.21", - "postcss": "^8.5.3", - "tailwindcss-primeui": "^0.6.1", - "vite": "^6.3.0" - } -} + "name": "wechat", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@tailwindcss/vite": "^4.1.4", + "@vueuse/core": "^13.1.0", + "pinia": "^3.0.2", + "tailwindcss": "^4.1.4", + "vue": "^3.5.13", + "vue-icons-plus": "^0.1.8", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.2", + "autoprefixer": "^10.4.21", + "postcss": "^8.5.3", + "vite": "^6.3.0" + } +} \ No newline at end of file diff --git a/frontend/wechat/src/components/ArticleListItem.vue b/frontend/wechat/src/components/ArticleListItem.vue new file mode 100644 index 0000000..dbe9075 --- /dev/null +++ b/frontend/wechat/src/components/ArticleListItem.vue @@ -0,0 +1,65 @@ + + + diff --git a/frontend/wechat/src/components/HelloWorld.vue b/frontend/wechat/src/components/HelloWorld.vue deleted file mode 100644 index 76bfda6..0000000 --- a/frontend/wechat/src/components/HelloWorld.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/frontend/wechat/src/layouts/MainLayout.vue b/frontend/wechat/src/layouts/MainLayout.vue index 896003b..e91f376 100644 --- a/frontend/wechat/src/layouts/MainLayout.vue +++ b/frontend/wechat/src/layouts/MainLayout.vue @@ -1,25 +1,26 @@ diff --git a/frontend/wechat/src/main.js b/frontend/wechat/src/main.js index 380af50..7e447ef 100644 --- a/frontend/wechat/src/main.js +++ b/frontend/wechat/src/main.js @@ -1,14 +1,7 @@ -import Aura from '@primeuix/themes/aura'; import { createPinia } from 'pinia'; -import PrimeVue from 'primevue/config'; -import ConfirmationService from 'primevue/confirmationservice'; -import ToastService from 'primevue/toastservice'; import { createApp } from 'vue'; import App from './App.vue'; import { router } from './router.js'; - -// Import only the required PrimeVue styles -import 'primeicons/primeicons.css'; // Icons import './style.css'; @@ -17,24 +10,5 @@ const app = createApp(App) const pinia = createPinia() app.use(pinia); - app.use(router); -app.use(PrimeVue, { - theme: { - preset: Aura, - }, - ripple: true, - options: { - darkModeSelector: '.my-app-dark', - } -}) - -// Register the ConfirmationService to fix the error -app.use(ConfirmationService); - -// Register the ToastService -app.use(ToastService); - -// Remove global component registrations - app.mount('#app'); diff --git a/frontend/wechat/src/router.js b/frontend/wechat/src/router.js index f35b039..e3d5a25 100644 --- a/frontend/wechat/src/router.js +++ b/frontend/wechat/src/router.js @@ -24,7 +24,7 @@ const routes = [ ] }, { - path: '/article/:id', + path: '/posts/:id', name: 'article-detail', component: () => import('@/views/ArticleDetail.vue') } diff --git a/frontend/wechat/src/stores/article.js b/frontend/wechat/src/stores/article.js index 5b28d94..679ad9d 100644 --- a/frontend/wechat/src/stores/article.js +++ b/frontend/wechat/src/stores/article.js @@ -14,10 +14,11 @@ export const useArticleStore = defineStore('article', { if (this.loading || !this.hasMore) return this.loading = true try { - const response = await fetch(`/api/articles?page=${this.page}&q=${this.searchQuery}`) + const response = await fetch(`/api/posts?page=${this.page}&q=${this.searchQuery}`) const data = await response.json() - this.articles = [...this.articles, ...data.items] - this.hasMore = data.hasMore + const items = data.items || [] + this.articles = [...this.articles, ...items] + this.hasMore = items.length > 0 // 只有当返回的列表为空时,才设置 hasMore 为 false this.page++ } finally { this.loading = false diff --git a/frontend/wechat/src/stores/article_list.json b/frontend/wechat/src/stores/article_list.json new file mode 100644 index 0000000..e135c57 --- /dev/null +++ b/frontend/wechat/src/stores/article_list.json @@ -0,0 +1,297 @@ +{ + "page": 7, + "limit": 10, + "total": 100, + "items": [ + { + "id": 40, + "created_at": "2025-04-11T15:03:25.666419Z", + "updated_at": "2025-04-11T15:03:25.666419Z", + "deleted_at": null, + "status": 1, + "title": "test-title-39", + "description": "test-description-39", + "content": "test-content-39", + "price": 6747, + "discount": 98, + "views": 8091, + "likes": 9914, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 8143 + }, + { + "type": "video", + "media": 2977 + } + ] + }, + { + "id": 39, + "created_at": "2025-04-11T15:03:25.661237Z", + "updated_at": "2025-04-11T15:03:25.661237Z", + "deleted_at": null, + "status": 1, + "title": "test-title-38", + "description": "test-description-38", + "content": "test-content-38", + "price": 2891, + "discount": 45, + "views": 4462, + "likes": 6110, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 5431 + }, + { + "type": "video", + "media": 3866 + } + ] + }, + { + "id": 38, + "created_at": "2025-04-11T15:03:25.657112Z", + "updated_at": "2025-04-11T15:03:25.657112Z", + "deleted_at": null, + "status": 1, + "title": "test-title-37", + "description": "test-description-37", + "content": "test-content-37", + "price": 904, + "discount": 70, + "views": 8988, + "likes": 816, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 3307 + }, + { + "type": "video", + "media": 2933 + } + ] + }, + { + "id": 37, + "created_at": "2025-04-11T15:03:25.65266Z", + "updated_at": "2025-04-11T15:03:25.65266Z", + "deleted_at": null, + "status": 1, + "title": "test-title-36", + "description": "test-description-36", + "content": "test-content-36", + "price": 4476, + "discount": 45, + "views": 9910, + "likes": 9295, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 3472 + }, + { + "type": "video", + "media": 3283 + } + ] + }, + { + "id": 36, + "created_at": "2025-04-11T15:03:25.644946Z", + "updated_at": "2025-04-11T15:03:25.644946Z", + "deleted_at": null, + "status": 1, + "title": "test-title-35", + "description": "test-description-35", + "content": "test-content-35", + "price": 7397, + "discount": 56, + "views": 2486, + "likes": 673, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 1183 + }, + { + "type": "video", + "media": 9735 + } + ] + }, + { + "id": 35, + "created_at": "2025-04-11T15:03:25.640256Z", + "updated_at": "2025-04-11T15:03:25.640256Z", + "deleted_at": null, + "status": 1, + "title": "test-title-34", + "description": "test-description-34", + "content": "test-content-34", + "price": 3733, + "discount": 15, + "views": 3705, + "likes": 1863, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 8713 + }, + { + "type": "video", + "media": 9442 + } + ] + }, + { + "id": 34, + "created_at": "2025-04-11T15:03:25.634088Z", + "updated_at": "2025-04-11T15:03:25.634088Z", + "deleted_at": null, + "status": 1, + "title": "test-title-33", + "description": "test-description-33", + "content": "test-content-33", + "price": 6591, + "discount": 12, + "views": 3834, + "likes": 7400, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 7429 + }, + { + "type": "video", + "media": 9401 + } + ] + }, + { + "id": 33, + "created_at": "2025-04-11T15:03:25.628572Z", + "updated_at": "2025-04-11T15:03:25.628572Z", + "deleted_at": null, + "status": 1, + "title": "test-title-32", + "description": "test-description-32", + "content": "test-content-32", + "price": 3740, + "discount": 92, + "views": 7324, + "likes": 3705, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 8942 + }, + { + "type": "video", + "media": 2618 + } + ] + }, + { + "id": 32, + "created_at": "2025-04-11T15:03:25.623885Z", + "updated_at": "2025-04-11T15:03:25.623885Z", + "deleted_at": null, + "status": 1, + "title": "test-title-31", + "description": "test-description-31", + "content": "test-content-31", + "price": 1839, + "discount": 37, + "views": 4750, + "likes": 2995, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 7409 + }, + { + "type": "video", + "media": 8843 + } + ] + }, + { + "id": 31, + "created_at": "2025-04-11T15:03:25.61745Z", + "updated_at": "2025-04-11T15:03:25.61745Z", + "deleted_at": null, + "status": 1, + "title": "test-title-30", + "description": "test-description-30", + "content": "test-content-30", + "price": 2297, + "discount": 56, + "views": 715, + "likes": 1224, + "tags": [ + "tag1", + "tag2", + "tag3" + ], + "assets": [ + { + "type": "audio", + "media": 9268 + }, + { + "type": "video", + "media": 4416 + } + ] + } + ] +} \ No newline at end of file diff --git a/frontend/wechat/src/style.css b/frontend/wechat/src/style.css index c376756..a461c50 100644 --- a/frontend/wechat/src/style.css +++ b/frontend/wechat/src/style.css @@ -1,4 +1 @@ -@import "tailwindcss"; -@import "tailwindcss-primeui"; - -@custom-variant dark (&:where(.my-app-dark, .my-app-dark *)); \ No newline at end of file +@import "tailwindcss"; \ No newline at end of file diff --git a/frontend/wechat/src/views/ArticleDetail.vue b/frontend/wechat/src/views/ArticleDetail.vue index 52b8e30..dae51f0 100644 --- a/frontend/wechat/src/views/ArticleDetail.vue +++ b/frontend/wechat/src/views/ArticleDetail.vue @@ -14,14 +14,31 @@ onMounted(async () => { + + \ No newline at end of file diff --git a/frontend/wechat/src/views/ArticleList.vue b/frontend/wechat/src/views/ArticleList.vue index a5bacc9..08356b6 100644 --- a/frontend/wechat/src/views/ArticleList.vue +++ b/frontend/wechat/src/views/ArticleList.vue @@ -1,7 +1,8 @@