├── .npmrc ├── .stylelintignore ├── src ├── plugins │ ├── shepherd.ts │ ├── avue.ts │ ├── xlsx.ts │ └── element-plus.ts ├── utils │ ├── cookie.ts │ ├── validate.ts │ ├── time.ts │ ├── ajax.ts │ ├── storage.ts │ └── helper.ts ├── assets │ └── images │ │ ├── 404.png │ │ ├── logo.png │ │ ├── logout.png │ │ └── 404-cloud.png ├── store │ ├── index.ts │ └── modules │ │ ├── user.ts │ │ ├── permission.ts │ │ └── app.ts ├── constant │ └── role.ts ├── styles │ ├── _mixins.scss │ ├── variables.ts │ ├── _variables.scss │ └── nprogress.scss ├── layout │ ├── components │ │ ├── index.ts │ │ ├── AppMain.vue │ │ ├── Sidebar │ │ │ ├── SidebarItemLink.vue │ │ │ ├── index.vue │ │ │ └── SidebarItem.vue │ │ └── Navbar.vue │ └── Layout.vue ├── views │ ├── data │ │ ├── Article.vue │ │ ├── Resource.vue │ │ ├── ProxyConfig.vue │ │ ├── Category.vue │ │ ├── WebhookLog.vue │ │ ├── CustomQuery.vue │ │ ├── Hook.vue │ │ └── Feed.vue │ ├── admin │ │ ├── User.vue │ │ ├── DailyCount.vue │ │ └── System.vue │ ├── Docs.vue │ ├── user │ │ └── Personal.vue │ ├── About.vue │ ├── Home.vue │ ├── Page404.vue │ ├── Register.vue │ └── Login.vue ├── App.vue ├── components │ ├── index.ts │ ├── Hamburger.vue │ ├── Breadcrumb.vue │ ├── CrudList.vue │ └── CrudForm.vue ├── vite-env.d.ts ├── config │ └── env.ts ├── hooks │ ├── use-id-transformer.ts │ ├── use-statistics.ts │ └── use-crud-ajax.ts ├── api │ └── index.ts ├── main.ts ├── permission.ts ├── interfaces │ └── avue.d.ts └── router │ └── index.ts ├── commitlint.config.ts ├── public └── favicon.ico ├── .husky ├── pre-commit └── commit-msg ├── .vscode └── extensions.json ├── eslint.config.js ├── auto-imports.d.ts ├── tsconfig.node.json ├── .github ├── mergify.yml ├── workflows │ ├── todo.yml │ ├── test.yml │ ├── release.yml │ └── deploy.yml ├── dependabot.yml ├── FUNDING.yml └── ISSUE_TEMPLATE │ ├── feature_request.yml │ ├── question.yml │ └── bug_report.yml ├── .gitignore ├── vercel.json ├── .editorconfig ├── .env ├── .stylelintrc.js ├── .releaserc.js ├── api └── index.ts ├── tsconfig.json ├── CODE_OF_CONDUCT.md ├── components.d.ts ├── CONTRIBUTING.md ├── index.html ├── README.md ├── vite.config.ts └── package.json /.npmrc: -------------------------------------------------------------------------------- 1 | strict-peer-dependencies=false 2 | package-lock=true 3 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | /dist/ 2 | /test/ 3 | *.min.css 4 | *.js 5 | *.ts 6 | _* -------------------------------------------------------------------------------- /src/plugins/shepherd.ts: -------------------------------------------------------------------------------- 1 | import 'shepherd.js/dist/css/shepherd.css' 2 | 3 | -------------------------------------------------------------------------------- /src/utils/cookie.ts: -------------------------------------------------------------------------------- 1 | // import { useCookies } from '@vueuse/integrations/useCookies' 2 | -------------------------------------------------------------------------------- /commitlint.config.ts: -------------------------------------------------------------------------------- 1 | // commitlint.config.ts 2 | export default { 3 | extends: ['cmyr'], 4 | } 5 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaoMeiYouRen/rss-impact-web/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install lint-staged 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaoMeiYouRen/rss-impact-web/HEAD/src/assets/images/404.png -------------------------------------------------------------------------------- /.husky/commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | npx --no-install commitlint --edit "$1" 5 | -------------------------------------------------------------------------------- /src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaoMeiYouRen/rss-impact-web/HEAD/src/assets/images/logo.png -------------------------------------------------------------------------------- /src/assets/images/logout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaoMeiYouRen/rss-impact-web/HEAD/src/assets/images/logout.png -------------------------------------------------------------------------------- /src/assets/images/404-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaoMeiYouRen/rss-impact-web/HEAD/src/assets/images/404-cloud.png -------------------------------------------------------------------------------- /src/plugins/avue.ts: -------------------------------------------------------------------------------- 1 | import Avue from '@smallwei/avue' 2 | import '@smallwei/avue/lib/index.css' 3 | 4 | export default Avue 5 | -------------------------------------------------------------------------------- /src/store/index.ts: -------------------------------------------------------------------------------- 1 | import { createPinia } from 'pinia' 2 | 3 | const store = createPinia() 4 | 5 | export default store 6 | -------------------------------------------------------------------------------- /src/constant/role.ts: -------------------------------------------------------------------------------- 1 | export enum Role { 2 | user = 'user', 3 | admin = 'admin', 4 | } 5 | 6 | export type RoleType = 'user' | 'admin' 7 | 8 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'eslint/config' 2 | import cmyr from 'eslint-config-cmyr/vue' 3 | export default defineConfig([cmyr, 4 | ]) 5 | -------------------------------------------------------------------------------- /src/styles/_mixins.scss: -------------------------------------------------------------------------------- 1 | /* Mixins */ 2 | @mixin clearfix { 3 | &:after { 4 | content: ""; 5 | display: table; 6 | clear: both; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/plugins/xlsx.ts: -------------------------------------------------------------------------------- 1 | import * as XLSX from 'xlsx' 2 | 3 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 4 | // @ts-ignore 5 | window.XLSX = XLSX 6 | -------------------------------------------------------------------------------- /src/layout/components/index.ts: -------------------------------------------------------------------------------- 1 | export { default as AppMain } from './AppMain.vue' 2 | export { default as Navbar } from './Navbar.vue' 3 | export { default as Sidebar } from './Sidebar/index.vue' 4 | -------------------------------------------------------------------------------- /src/views/data/Article.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /src/views/admin/User.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 13 | -------------------------------------------------------------------------------- /src/views/data/Resource.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /src/views/data/ProxyConfig.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /src/plugins/element-plus.ts: -------------------------------------------------------------------------------- 1 | import ElementPlus from 'element-plus' 2 | import 'element-plus/dist/index.css' 3 | import * as ElementPlusIconsVue from '@element-plus/icons-vue' 4 | 5 | export { 6 | ElementPlus, 7 | ElementPlusIconsVue, 8 | } 9 | -------------------------------------------------------------------------------- /auto-imports.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | // noinspection JSUnusedGlobalSymbols 5 | // Generated by unplugin-auto-import 6 | // biome-ignore lint: disable 7 | export {} 8 | declare global { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "bundler", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": [ 9 | "vite.config.ts" 10 | ] 11 | } -------------------------------------------------------------------------------- /.github/mergify.yml: -------------------------------------------------------------------------------- 1 | pull_request_rules: 2 | - name: automatic merge for Dependabot pull requests 3 | conditions: 4 | - check-success=Test 5 | - author~=^dependabot(|-preview)\[bot\]$ 6 | - label=dependencies 7 | actions: 8 | merge: 9 | method: rebase 10 | -------------------------------------------------------------------------------- /src/styles/variables.ts: -------------------------------------------------------------------------------- 1 | export interface IScssVariables { 2 | menuBg: string 3 | menuText: string 4 | menuActiveText: string 5 | } 6 | 7 | export const variables: IScssVariables = { 8 | menuBg: '#304156', 9 | menuText: '#bfcbd9', 10 | menuActiveText: '#409EFF', 11 | } 12 | 13 | export default variables 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | .vercel 27 | 28 | sonda-report.html 29 | -------------------------------------------------------------------------------- /src/views/data/Category.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 18 | -------------------------------------------------------------------------------- /src/views/data/WebhookLog.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 14 | 15 | 17 | -------------------------------------------------------------------------------- /src/views/Docs.vue: -------------------------------------------------------------------------------- 1 |