diff --git a/frontend/portal/.editorconfig b/frontend/portal/.editorconfig new file mode 100644 index 0000000..b585a76 --- /dev/null +++ b/frontend/portal/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/frontend/portal/.eslintrc.cjs b/frontend/portal/.eslintrc.cjs new file mode 100644 index 0000000..ec96cff --- /dev/null +++ b/frontend/portal/.eslintrc.cjs @@ -0,0 +1,23 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution'); + +module.exports = { + root: true, + env: { + node: true + }, + extends: ['plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-prettier'], + parserOptions: { + ecmaVersion: 'latest' + }, + rules: { + 'vue/multi-word-component-names': 'off', + 'vue/no-reserved-component-names': 'off', + 'vue/component-tags-order': [ + 'error', + { + order: ['script', 'template', 'style'] + } + ] + } +}; diff --git a/frontend/portal/.gitignore b/frontend/portal/.gitignore new file mode 100644 index 0000000..d45df1c --- /dev/null +++ b/frontend/portal/.gitignore @@ -0,0 +1,14 @@ +node_modules +coverage +*.log* +.nuxt +.nitro +.cache +.output +.env +dist +.DS_Store +.idea +.eslintcache +api-generator/typedoc.json +**/.DS_Store diff --git a/frontend/portal/.prettierrc.json b/frontend/portal/.prettierrc.json new file mode 100644 index 0000000..d19df35 --- /dev/null +++ b/frontend/portal/.prettierrc.json @@ -0,0 +1,10 @@ +{ + "useTabs": false, + "tabWidth": 4, + "trailingComma": "none", + "semi": true, + "singleQuote": true, + "vueIndentScriptAndStyle": false, + "printWidth": 250, + "bracketSameLine": false +} diff --git a/frontend/portal/AGENTS.md b/frontend/portal/AGENTS.md new file mode 100644 index 0000000..27ca2b4 --- /dev/null +++ b/frontend/portal/AGENTS.md @@ -0,0 +1,7 @@ +# Frontend Portal Guidelines + +## API Access Constraints + +- `frontend/portal` 业务禁止调用任何 `/super/v1/*` 接口(包括本地开发的 Vite 代理)。 +- Portal 仅允许使用面向用户/租户公开的接口前缀(例如 `/v1/*`,具体以后端实际路由为准)。 + diff --git a/frontend/portal/CHANGELOG.md b/frontend/portal/CHANGELOG.md new file mode 100644 index 0000000..35bb68c --- /dev/null +++ b/frontend/portal/CHANGELOG.md @@ -0,0 +1,70 @@ +# Changelog + +## 4.3.0 (2025-02-26) + +**Implemented New Features and Enhancements** + +- Update PrimeVue version + +## 4.2.0 (2024-12-09) + +**Implemented New Features and Enhancements** + +- Refactored dashboard sections to components +- Migrate sass from @import to @use + +## 4.1.0 (2024-07-29) + +- Changed menu button location at topbar +- Add border to overlay menu +- Animation for mobile mask +- Fixed chart colors + +## 4.0.0 (2024-07-29) + +- Updated to PrimeVue v4 + +## 3.10.0 (2024-03-11) + +**Migration Guide** + +- Update theme files. + +**Implemented New Features and Enhancements** + +- Upgrade to PrimeVue 3.49.1 + +## 3.9.0 (2023-11-01) + +**Migration Guide** + +- Update theme files. + +**Implemented New Features and Enhancements** + +- Upgrade to PrimeVue 3.39.0 + +## 3.8.0 (2023-07-24) + +**Migration Guide** + +- Update theme files. +- Update assets style files +- Remove code highlight + +**Implemented New Features and Enhancements** + +- Upgrade to PrimeVue 3.30.2 + +## 3.7.0 (2023-05-06) + +- Upgrade to PrimeVue 3.28.0 + +**Implemented New Features and Enhancements** + +## 3.6.0 (2023-04-12) + +**Implemented New Features and Enhancements** + +- Upgrade to PrimeVue 3.26.1 +- Upgrade to vite 4.2.1 diff --git a/frontend/portal/LICENSE.md b/frontend/portal/LICENSE.md new file mode 100644 index 0000000..e58be7f --- /dev/null +++ b/frontend/portal/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018-2022 PrimeTek + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/frontend/portal/README.md b/frontend/portal/README.md new file mode 100644 index 0000000..c0aa873 --- /dev/null +++ b/frontend/portal/README.md @@ -0,0 +1,3 @@ +Sakai is an application template for Vue based on the [create-vue](https://github.com/vuejs/create-vue), the recommended way to start a Vite-powered Vue projects. + +Visit the [documentation](https://sakai.primevue.org/documentation) to get started. diff --git a/frontend/portal/index.html b/frontend/portal/index.html new file mode 100644 index 0000000..2975cdc --- /dev/null +++ b/frontend/portal/index.html @@ -0,0 +1,17 @@ + + + +
+ + + +{{code}}
+ + “Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.” +
+Sed blandit libero volutpat sed cras. Fames ac turpis egestas integer. Placerat in egestas erat...
+ +
+ + Sakai is an application template for Vue based on the create-vue, the recommended way to start a Vite-powered Vue + projects. To get started, clone the repository from GitHub and install the dependencies with npm or yarn. +
+
+git clone https://github.com/primefaces/sakai-vue
+npm install
+npm run dev
+
+ Navigate to http://localhost:5173/ to view the application in your local environment.
+ +npm run dev
+
+ Templates consists of a couple folders, demos and layout have been separated so that you can easily remove what is not necessary for your application.
++ Main menu is defined at src/layout/AppMenu.vue file. Update the model property to + define your own menu items. +
+ ++ The src/layout/composables/layout.js is a composable that manages the layout state changes including dark mode, PrimeVue theme, menu modes and states. If you + change the initial values like the preset or colors, make sure to apply them at PrimeVue config at main.js as well. +
+ +The demo pages are developed with Tailwind CSS however the core application shell mainly uses custom CSS.
+ ++ CSS variables used in the template derive their values from the PrimeVue styled mode presets, use the files under assets/layout/_variables.scss to customize + according to your requirements. +
+ +To get started, create a Nuxt project.
+
+npx nuxi@latest init sakai-nuxt
+
+ Add Prime related libraries to the project.
+
+npm install primevue @primevue/themes tailwindcss-primeui primeicons
+npm install --save-dev @primevue/nuxt-module
+
+ Add PrimeVue-Nuxt module to nuxt.config.js
+
+modules: [
+ '@primevue/nuxt-module',
+]
+
+ Install Tailwind CSS with Nuxt using official documentation.
+ ++ Add tailwindcss-primeui package as a plugin to tailwind.config.js +
+
+plugins: [require('tailwindcss-primeui')]
+
+ Add PrimeVue to in nuxt.config.js
+
+import Aura from '@primevue/themes/aura';
+
+primevue: {
+ options: {
+ theme: {
+ preset: Aura,
+ options: {
+ darkModeSelector: '.app-dark'
+ }
+ }
+ }
+}
+
+ + Copy src/assets folder and paste them to assets folder to your Nuxt project. + And add to nuxt.config.js +
+
+css: ['~/assets/tailwind.css', '~/assets/styles.scss']
+
+ Change app.vue
+
+<template>
+ <NuxtLayout>
+ <NuxtPage />
+ </NuxtLayout>
+</template>
+
+ Create layouts/default.vue and paste this code:
+
+<script setup>
+import AppLayout from './AppLayout.vue';
+</script>
+
+<template>
+ <AppLayout />
+</template>
+
+ + Create layouts folder and copy src/layout folder and paste them. And then + create composables/use-layout.vue and replace it with + src/layout/composables/layout.js. Then remove this line: +
+
+import { useLayout } from '@/layout/composables/layout';
+
+ As a final step, copy the following folders:
+Use this page to start from scratch and place your custom content.
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Vitae et leo duis ut diam. Ultricies mi quis hendrerit dolor magna eget est lorem. Amet consectetur + adipiscing elit ut. Nam libero justo laoreet sit amet. Pharetra massa massa ultricies mi quis hendrerit dolor magna. Est ultricies integer quis auctor elit sed vulputate. Consequat ac felis donec et. Tellus orci ac auctor + augue mauris. Semper feugiat nibh sed pulvinar proin gravida hendrerit lectus a. Tincidunt arcu non sodales neque sodales. Metus aliquam eleifend mi in nulla posuere sollicitudin aliquam ultrices. Sodales ut etiam sit amet + nisl purus. Cursus sit amet dictum sit amet. Tristique senectus et netus et malesuada fames ac turpis egestas. Et tortor consequat id porta nibh venenatis cras sed. Diam maecenas ultricies mi eget mauris. Eget egestas purus + viverra accumsan in nisl nisi. Suscipit adipiscing bibendum est ultricies integer. Mattis aliquam faucibus purus in massa tempor nec. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit + anim id est laborum. +
++ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt + explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Consectetur, adipisci velit, sed quia non + numquam eius modi. +
++ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique + sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil + impedit quo minus. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea + commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit + anim id est laborum. +
++ Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt + explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Consectetur, adipisci velit, sed quia non + numquam eius modi. +
++ At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique + sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil + impedit quo minus. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est + laborum. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est + laborum. +
+ +
+ {{ data.country.name }}
+
+ {{ slotProps.data.country.name }}
+ + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Inventore sed consequuntur error repudiandae numquam deserunt quisquam repellat libero asperiores earum nam nobis, culpa ratione quam perferendis esse, + cupiditate neque quas! +
+ + ++ Ready-to-use UI blocks for building beautiful applications. A comprehensive collection of components designed to speed up your development process. +
++ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +
+ +
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
+Risus nec feugiat in fermentum posuere urna nec. Posuere sollicitudin aliquam ultrices sagittis.
+Ornare suspendisse sed nisi lacus sed viverra tellus. Neque volutpat ac tincidunt vitae semper.
+Fermentum et sollicitudin ac orci phasellus egestas tellus rutrum tellus.
+Nec tincidunt praesent semper feugiat. Sed adipiscing diam donec adipiscing tristique risus nec feugiat.
+Mattis rhoncus urna neque viverra justo nec ultrices. Id cursus metus aliquam eleifend.
+Lorem ipsum dolor sit, amet consectetur adipisicing elit. Velit numquam eligendi quos.
+Lorem ipsum dolor sit, amet consectetur adipisicing elit. Velit numquam eligendi quos.
+Lorem ipsum dolor sit, amet consectetur adipisicing elit. Velit numquam eligendi quos.
+