This commit is contained in:
make
2025-04-06 21:51:01 +08:00
commit 3792acd4c7
408 changed files with 42349 additions and 0 deletions

15
.editorconfig Normal file
View File

@@ -0,0 +1,15 @@
# @see: http://editorconfig.org
root = true
[*] # 表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
end_of_line = lf # 控制换行类型(lf | cr | crlf)
insert_final_newline = true # 始终在文件末尾插入一个新行
indent_style = space # 缩进风格tab | space
indent_size = 4 # 缩进大小
max_line_length = 130 # 最大行长度
[*.md] # 表示仅对 md 文件适用以下规则
max_line_length = off # 关闭最大行长度限制
trim_trailing_whitespace = false # 关闭末尾空格修剪

18
.env.development.example Normal file
View File

@@ -0,0 +1,18 @@
#本地环境
VITE_USER_NODE_ENV=development
#公共基础路径
VITE_PUBLIC_PATH=/
#路由模式
#Optional:hash|history
VITE_ROUTER_MODE=hash
#打包时是否删除console
VITE_DROP_CONSOLE=true
#是否开启VitePWA
VITE_PWA=false
#开发环境接口地址
VITE_API_URL=/api
#以下部署需要改动的----
#开发环境跨域代理,支持配置多个
VITE_PROXY=[["/api","https://api.123.com"]]
#当前项目网址
VITE_URL=https://api.123.com

8
.env.example Normal file
View File

@@ -0,0 +1,8 @@
#title
VITE_GLOB_APP_TITLE=**管理系统
#本地运行端口号
VITE_PORT=7777
#启动时自动打开浏览器
VITE_OPEN=true
#打包后是否生成包分析文件
VITE_REPORT=false

23
.env.production.example Normal file
View File

@@ -0,0 +1,23 @@
#线上环境
VITE_USER_NODE_ENV=production
#公共基础路径
VITE_PUBLIC_PATH=./
#路由模式
#Optional:hash|history
VITE_ROUTER_MODE=hash
#是否启用gzip或brotli压缩打包如果需要多个压缩规则可以使用“,”分隔
#Optional:gzip|brotli|none
VITE_BUILD_COMPRESS=none
#打包压缩后是否删除源文件
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE=false
#打包时是否删除console
VITE_DROP_CONSOLE=true
#是否开启VitePWA
VITE_PWA=true
#打包输出目录
VITE_OUT_PATH=dist
#以下部署需要改动的----
#开发环境跨域代理,支持配置多个
VITE_API_URL=https://api.123.live
#当前项目网址
VITE_URL=https://api.123.com/

23
.env.test.example Normal file
View File

@@ -0,0 +1,23 @@
#测试环境
VITE_USER_NODE_ENV=test
#公共基础路径
VITE_PUBLIC_PATH=./
#路由模式
#Optional:hash|history
VITE_ROUTER_MODE=hash
#是否启用gzip或brotli压缩打包如果需要多个压缩规则可以使用“,”分隔
#Optional:gzip|brotli|none
VITE_BUILD_COMPRESS=none
#打包压缩后是否删除源文件
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE=false
#打包时是否删除console
VITE_DROP_CONSOLE=true
#是否开启VitePWA
VITE_PWA=false
#打包输出目录
VITE_OUT_PATH=test
#以下部署需要改动的----
#测试环境接口地址
VITE_API_URL=https://api.123.live
#当前项目网址
VITE_URL=https://api.123.com/

16
.eslintignore Normal file
View File

@@ -0,0 +1,16 @@
*.sh
node_modules
*.md
*.woff
*.ttf
.vscode
.idea
dist
/public
/docs
.husky
.local
/bin
/src/mock/*
stats.html
*

68
.eslintrc.cjs Normal file
View File

@@ -0,0 +1,68 @@
// @see: http://eslint.cn
module.exports = {
root: true,
env: {
browser: true,
node: true,
es6: true
},
// 指定如何解析语法
parser: "vue-eslint-parser",
// 优先级低于 parse 的语法解析配置
parserOptions: {
parser: "@typescript-eslint/parser",
ecmaVersion: 2020,
sourceType: "module",
jsxPragma: "React",
ecmaFeatures: {
jsx: true
}
},
// 继承某些已有的规则
extends: ["plugin:vue/vue3-recommended", "plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"],
/**
* "off" 或 0 ==> 关闭规则
* "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
* "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
*/
rules: {
// eslint (http://eslint.cn/docs/rules)
"no-var": "error", // 要求使用 let 或 const 而不是 var
"no-multiple-empty-lines": ["error", { max: 1 }], // 不允许多个空行
"prefer-const": "off", // 使用 let 关键字声明但在初始分配后从未重新分配的变量,要求使用 const
"no-use-before-define": "off", // 禁止在 函数/类/变量 定义之前使用它们
// typeScript (https://typescript-eslint.io/rules)
"@typescript-eslint/no-unused-vars": "error", // 禁止定义未使用的变量
"@typescript-eslint/prefer-ts-expect-error": "error", // 禁止使用 @ts-ignore
"@typescript-eslint/ban-ts-comment": "error", // 禁止 @ts-<directive> 使用注释或要求在指令后进行描述
"@typescript-eslint/no-inferrable-types": "off", // 可以轻松推断的显式类型可能会增加不必要的冗长
"@typescript-eslint/no-namespace": "off", // 禁止使用自定义 TypeScript 模块和命名空间
"@typescript-eslint/no-explicit-any": "off", // 禁止使用 any 类型
"@typescript-eslint/ban-types": "off", // 禁止使用特定类型
"@typescript-eslint/no-var-requires": "off", // 允许使用 require() 函数导入模块
"@typescript-eslint/no-empty-function": "off", // 禁止空函数
"@typescript-eslint/no-non-null-assertion": "off", // 不允许使用后缀运算符的非空断言(!)
// vue (https://eslint.vuejs.org/rules)
"vue/script-setup-uses-vars": "error", // 防止<script setup>使用的变量<template>被标记为未使用,此规则仅在启用该 no-unused-vars 规则时有效
"vue/v-slot-style": "error", // 强制执行 v-slot 指令样式
"vue/no-mutating-props": "error", // 不允许改变组件 prop
"vue/custom-event-name-casing": "error", // 为自定义事件名称强制使用特定大小写
"vue/html-closing-bracket-newline": [
"error"
// {
// singleline: "never",
// multiline: "never"
// }
], // 在标签的右括号之前要求或禁止换行
"vue/attribute-hyphenation": "error", // 对模板中的自定义组件强制执行属性命名样式my-prop="prop"
"vue/attributes-order": "off", // vue api使用顺序强制执行属性顺序
"vue/no-v-html": "off", // 禁止使用 v-html
"vue/require-default-prop": "off", // 此规则要求为每个 prop 为必填时,必须提供默认值
"vue/multi-word-component-names": "off", // 要求组件名称始终为 “-” 链接的单词
"vue/no-setup-props-destructure": "off", // 禁止解构 props 传递给 setup
'prettier/prettier': 'off'
}
};

33
.gitignore vendored Normal file
View File

@@ -0,0 +1,33 @@
# Logs
./logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
package-lock.json
.env
.env.development
.env.test
.env.production
src/customize
node_modules
dist
test
dist-ssr
stats.html
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
!.vscode/settings.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
vite.config.ts.timestamp*

4
.husky/commit-msg Normal file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx --no-install commitlint --edit $1

4
.husky/pre-commit Normal file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run lint:lint-staged

9
.prettierignore Normal file
View File

@@ -0,0 +1,9 @@
/dist/*
.local
/node_modules/**
**/*.svg
**/*.sh
/public/*
stats.html

41
.prettierrc.cjs Normal file
View File

@@ -0,0 +1,41 @@
// @see: https://www.prettier.cn
module.exports = {
// 指定最大换行长度
printWidth: 130,
// 缩进制表符宽度 | 空格数
tabWidth: 4,
// 使用制表符而不是空格缩进行 (true制表符false空格)
useTabs: false,
// 结尾不用分号 (truefalse没有)
semi: true,
// 使用单引号 (true单引号false双引号)
singleQuote: false,
// 在对象字面量中决定是否将属性名用引号括起来 可选值 "<as-needed|consistent|preserve>"
quoteProps: "as-needed",
// 在JSX中使用单引号而不是双引号 (true单引号false双引号)
jsxSingleQuote: false,
// 多行时尽可能打印尾随逗号 可选值"<none|es5|all>"
trailingComma: "none",
// 在对象,数组括号与文字之间加空格 "{ foo: bar }" (truefalse没有)
bracketSpacing: true,
// 将 > 多行元素放在最后一行的末尾,而不是单独放在下一行 (true放末尾false单独一行)
bracketSameLine: false,
// (x) => {} 箭头函数参数只有一个时是否要有小括号 (avoid省略括号always不省略括号)
arrowParens: "avoid",
// 指定要使用的解析器,不需要写文件开头的 @prettier
requirePragma: false,
// 可以在文件顶部插入一个特殊标记,指定该文件已使用 Prettier 格式化
insertPragma: false,
// 用于控制文本是否应该被换行以及如何进行换行
proseWrap: "preserve",
// 在html中空格是否是敏感的 "css" - 遵守 CSS 显示属性的默认值, "strict" - 空格被认为是敏感的 "ignore" - 空格被认为是不敏感的
htmlWhitespaceSensitivity: "css",
// 控制在 Vue 单文件组件中 <script> 和 <style> 标签内的代码缩进方式
vueIndentScriptAndStyle: false,
// 换行符使用 lf 结尾是 可选值 "<auto|lf|crlf|cr>"
endOfLine: "auto",
// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码 (rangeStart开始rangeEnd结束)
rangeStart: 0,
rangeEnd: Infinity
};

28
.project Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>IOMS-ADMIN</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.aptana.ide.core.unifiedBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.aptana.projects.webnature</nature>
</natures>
<filteredResources>
<filter>
<id>1700473558718</id>
<name></name>
<type>26</type>
<matcher>
<id>org.eclipse.ui.ide.multiFilter</id>
<arguments>1.0-name-matches-false-false-node_modules</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

4
.stylelintignore Normal file
View File

@@ -0,0 +1,4 @@
/dist/*
/public/*
public/*
stats.html

40
.stylelintrc.cjs Normal file
View File

@@ -0,0 +1,40 @@
// @see: https://stylelint.io
module.exports = {
root: true,
// 继承某些已有的规则
extends: [
"stylelint-config-standard", // 配置 stylelint 拓展插件
"stylelint-config-html/vue", // 配置 vue 中 template 样式格式化
"stylelint-config-standard-scss", // 配置 stylelint scss 插件
"stylelint-config-recommended-vue/scss", // 配置 vue 中 scss 样式格式化
"stylelint-config-recess-order" // 配置 stylelint css 属性书写顺序插件,
],
overrides: [
// 扫描 .vue/html 文件中的 <style> 标签内的样式
{
files: ["**/*.{vue,html}"],
customSyntax: "postcss-html"
}
],
rules: {
"function-url-quotes": "always", // URL 的引号 "always(必须加上引号)"|"never(没有引号)"
"color-hex-length": "long", // 指定 16 进制颜色的简写或扩写 "short(16进制简写)"|"long(16进制扩写)"
"rule-empty-line-before": "never", // 要求或禁止在规则之前的空行 "always(规则之前必须始终有一个空行)"|"never(规则前绝不能有空行)"|"always-multi-line(多行规则之前必须始终有一个空行)"|"never-multi-line(多行规则之前绝不能有空行)"
"font-family-no-missing-generic-family-keyword": null, // 禁止在字体族名称列表中缺少通用字体族关键字
"scss/at-import-partial-extension": null, // 解决不能使用 @import 引入 scss 文件
"property-no-unknown": null, // 禁止未知的属性
"no-empty-source": null, // 禁止空源码
"selector-class-pattern": null, // 强制选择器类名的格式
"value-no-vendor-prefix": null, // 关闭 vendor-prefix (为了解决多行省略 -webkit-box)
"no-descending-specificity": null, // 不允许较低特异性的选择器出现在覆盖较高特异性的选择器
"value-keyword-case": null, // 解决在 scss 中使用 v-bind 大写单词报错
"selector-pseudo-class-no-unknown": [
true,
{
ignorePseudoClasses: ["global", "v-deep", "deep"]
}
]
},
ignoreFiles: ["**/*.js", "**/*.jsx", "**/*.tsx", "**/*.ts"]
};

14
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,14 @@
{
"recommendations": [
"vue.volar",
"vue.vscode-typescript-vue-plugin",
"hollowtree.vue-snippets",
"dbaeumer.vscode-eslint",
"stylelint.vscode-stylelint",
"esbenp.prettier-vscode",
"editorconfig.editorconfig",
"streetsidesoftware.code-spell-checker",
"syler.sass-indented",
"mikestead.dotenv"
]
}

96
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,96 @@
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.stylelint": "explicit"
},
"stylelint.enable": true,
"stylelint.validate": ["css", "less", "postcss", "scss", "vue", "sass", "html"],
"files.eol": "\n",
"typescript.tsdk": "node_modules/typescript/lib",
"[vue]": {
"editor.defaultFormatter": "octref.vetur"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[less]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"cSpell.words": [
"AMAP",
"apng",
"axios",
"Biao",
"brotli",
"cascader",
"commitlint",
"contentleft",
"contentright",
"CSDN",
"daterange",
"datetimerange",
"echarts",
"fangda",
"geeker",
"Gitee",
"hexs",
"iconfont",
"juejin",
"liquidfill",
"longpress",
"monthrange",
"nprogress",
"officedocument",
"openxmlformats",
"Pageable",
"persistedstate",
"pinia",
"pjpeg",
"Prefixs",
"screenfull",
"sortablejs",
"sousuo",
"spreadsheetml",
"styl",
"stylelint",
"stylelintignore",
"stylelintrc",
"suoxiao",
"truetype",
"tuichu",
"unplugin",
"unref",
"VITE",
"vuedraggable",
"vueuse",
"Vuex",
"wangeditor",
"xiala",
"xiaoxi",
"Yahei",
"yiwen",
"zhongyingwen",
"zhuti"
]
}

246
CHANGELOG.md Normal file
View File

@@ -0,0 +1,246 @@
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [1.1.0](https://github.com/HalseySpicy/Geeker-Admin/compare/v1.0.0...v1.1.0) (2023-07-09)
### Features
- 🚀 add proTable instance type ([8262f04](https://github.com/HalseySpicy/Geeker-Admin/commit/8262f045734d055148720738a80fee0e0c779ceb))
- 🚀 optimize code and add VitePWA ([523f676](https://github.com/HalseySpicy/Geeker-Admin/commit/523f676feee5105eae15d05b57063227be26d3df))
- 🚀 optimize code and update plugins ([5cff3c7](https://github.com/HalseySpicy/Geeker-Admin/commit/5cff3c7e50331ede07d57613cc49658904e7cf1a))
- 🚀 optimize irregular code ([d406ef2](https://github.com/HalseySpicy/Geeker-Admin/commit/d406ef2bb5e0d0522f5e0ce38c3b9d0aa47c7cd2))
- 🚀 proTable radio selection example ([f58291f](https://github.com/HalseySpicy/Geeker-Admin/commit/f58291f96468b816607c31df87326ebd7d0a5c5a))
- 🚀 proTable search component custom rendering ([#189](https://github.com/HalseySpicy/Geeker-Admin/issues/189)) ([89f03db](https://github.com/HalseySpicy/Geeker-Admin/commit/89f03db2db41160b9ac5398d64712fabff399c4c))
- 🚀 proTable supports static table data ([9a3e85d](https://github.com/HalseySpicy/Geeker-Admin/commit/9a3e85d21d6c8872bbc915c42d48eb8658a1db63))
- 🚀 update Gitee address ([0608be9](https://github.com/HalseySpicy/Geeker-Admin/commit/0608be9ba6a9f01f73ed67671d340cf0c1d99261))
- 🚀 update stylelint configuration ([d62aae8](https://github.com/HalseySpicy/Geeker-Admin/commit/d62aae868e7d6aad87f0ba8706ab9744d5da04dd))
- 🚀 update theme, modify bugs ([7a3a7a3](https://github.com/HalseySpicy/Geeker-Admin/commit/7a3a7a3d665c0356c0272947292de750dd0be8d8))
### Bug Fixes
- 🧩 fix eslint error ([a980a1a](https://github.com/HalseySpicy/Geeker-Admin/commit/a980a1aa7808895af46c85e0e26a53f66d1119fa))
## [1.0.0](https://github.com/HalseySpicy/Geeker-Admin/compare/v0.0.7...v1.0.0) (2023-04-15)
### Features
- 🚀 升级依赖插件 && 新增树型 ProTbale 示例(更多查看详情) ([ed0ea75](https://github.com/HalseySpicy/Geeker-Admin/commit/ed0ea757555f047f6890632e598ee3293d3598cd))
- 🚀 升级依赖插件 && 修复 bug(查看详情) ([4febadc](https://github.com/HalseySpicy/Geeker-Admin/commit/4febadc10dd794ec8ea1c7864a3771b1b477f743))
- 🚀 新增路由白名单访问控制 ([97dc264](https://github.com/HalseySpicy/Geeker-Admin/commit/97dc26484c6eead2ae4c8c79d50b550f24f19a02))
- 🚀 优化 ProTable && 面包屑导航 ([905d7f1](https://github.com/HalseySpicy/Geeker-Admin/commit/905d7f1fd2b18d9650e6ba7d439dfdcf50363d11))
- 🚀 优化代码 ([cd333df](https://github.com/HalseySpicy/Geeker-Admin/commit/cd333dfe5de2aa7fa415326e6a06b83d3bd260d5))
- 🚀 优化代码和样式细节 ([5b4b926](https://github.com/HalseySpicy/Geeker-Admin/commit/5b4b9266de4f420f32fca70dadb76242d129e604))
- 🚀 优化代码和样式细节 ([756094c](https://github.com/HalseySpicy/Geeker-Admin/commit/756094c402e14841c07cd6062b701929f7f31737))
- 🚀 优化代码逻辑 && 更新微信群二维码 ([629e824](https://github.com/HalseySpicy/Geeker-Admin/commit/629e8243466fda5da9f0ec781aa0b584e49f4501))
- 🚀 优化代码细节问题 ([a6a6ced](https://github.com/HalseySpicy/Geeker-Admin/commit/a6a6cedeb40f2f7901f0dcd0ec7f1c283a491c61))
- 🚀 优化样式、代码细节 ([1b02f45](https://github.com/HalseySpicy/Geeker-Admin/commit/1b02f457162267b090ad946e0bad91e5d0dd14b1))
- 🚀 allow nested tree enum data ([c2fa2be](https://github.com/HalseySpicy/Geeker-Admin/commit/c2fa2be54a6af0309ba45bd4ca68170c66edc357))
- 🚀 refactoring project configuration ([7ede988](https://github.com/HalseySpicy/Geeker-Admin/commit/7ede988bae3ad0b33d9e5ac1ea6145c4d7aa89e6))
- **ProTable:** 🚀 插槽引入 ElTable 的 scope可获取$index 等 ([4cb7dba](https://github.com/HalseySpicy/Geeker-Admin/commit/4cb7dba40c10e693e324b7c647aa65917aeb0b02))
### Bug Fixes
- 🧩 修复 ImportExcel 组件 bug ([ab7e9dd](https://github.com/HalseySpicy/Geeker-Admin/commit/ab7e9dde400aa80ec2e9fa58d9f2168fc3d14f18))
- 🧩 修复 ImportExcel 组件 bug ([803ba58](https://github.com/HalseySpicy/Geeker-Admin/commit/803ba58a2c3fae7f6d8783ca534e2b41c987f027))
- 🧩 修复 ProTable 组件打印功能 bug ([a88b7df](https://github.com/HalseySpicy/Geeker-Admin/commit/a88b7df4623e30459ef3c92196b720efcb200f2f))
- 🧩 修复 TreeFilter 组件默认值 bug ([8e515f0](https://github.com/HalseySpicy/Geeker-Admin/commit/8e515f0d4058f573cbd53281ef68aec38b8dacb9))
- 🧩 修复 TreeFilter 组件默认值 bug ([f23a94d](https://github.com/HalseySpicy/Geeker-Admin/commit/f23a94d6edf442babdc4cd5a52ea63ebbbcac44f))
- 🧩 修复 useDebounceFn 错误使用 ([99d4278](https://github.com/HalseySpicy/Geeker-Admin/commit/99d4278a29b7fa970caba55f43134cebd1d3bec6))
- 🧩 修复多图片上传预览初始化异常 ([d1a917f](https://github.com/HalseySpicy/Geeker-Admin/commit/d1a917f10326b7742b4445c495de12603df658c1))
- 🧩 修复分栏布局路径匹配 bug ([b06bd12](https://github.com/HalseySpicy/Geeker-Admin/commit/b06bd123fa6af0dcb7d5cc9bc9215f13b91ace5f))
- 🧩 修复横向布局下最大化失效 ([e416ddb](https://github.com/HalseySpicy/Geeker-Admin/commit/e416ddb732ae336ca4e7e43ebdeb89b24085d1b1))
- 🧩 修复路由重置 bug ([52b7e66](https://github.com/HalseySpicy/Geeker-Admin/commit/52b7e66febf1db9cd3325eb0e1e45213ff1528c2))
- 🧩 修复弱类型检查错误 ([b32310e](https://github.com/HalseySpicy/Geeker-Admin/commit/b32310ed2f546e3efa918d5f7eee2c3868a98cb7))
### 0.0.7 (2022-12-28)
### Features
- 🚀 二次封装 wangEditor 富文本编辑器(50%) ([4f8e266](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4f8e266b7dd25a7df18d302e88e14454bfa3816b))
- 🚀 更新插件、优化代码(请查看详情) ([dac6dec](https://gitee.com/HalseySpicy/Geeker-Admin/commit/dac6dec75466c19731ad7cf083f8c39940342140))
- 🚀 更新微信群二维码 ([7e890d0](https://gitee.com/HalseySpicy/Geeker-Admin/commit/7e890d0afe0a11170d73e3c2c4ef04d37a582e94))
- 🚀 请求全局 loading 更改为可配置 ([a75d62f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a75d62f627195ac420cf24ad7f51245b2e5bf04e))
- 🚀 升级 element-plus 到 2.25 ([e98c035](https://gitee.com/HalseySpicy/Geeker-Admin/commit/e98c035caa6d1ab04319673e0db65837c6887126))
- 🚀 升级 vite、vue 版本 && 优化分栏布局样式 ([b2b1b59](https://gitee.com/HalseySpicy/Geeker-Admin/commit/b2b1b599bc1fa0f1c64c5c58fb31d3719f415301))
- 🚀 使用属性透传重构 ProTable 组件 ([a428e89](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a428e89a3784c826eceaaee548b97975afbe1d45))
- 🚀 添加 wangEditor 组件 ([d6d2fa7](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d6d2fa7d27887bb4a9e40e9d7037d4621812e16a))
- 🚀 完成 wangEditor 富文本二次封装 ([7362bfb](https://gitee.com/HalseySpicy/Geeker-Admin/commit/7362bfbff19224045e3bb20fa939a78c556cc805))
- 🚀 完善按钮、菜单权限示例 ([6793f0c](https://gitee.com/HalseySpicy/Geeker-Admin/commit/6793f0cd7372b8a080f6d2649b05cdd0c62bd853))
- 🚀 新增 主题色、灰色模式、色弱模式 配置 ([7821157](https://gitee.com/HalseySpicy/Geeker-Admin/commit/7821157059ed9c21d2844f75049f8fa999b19944))
- 🚀 新增 pro-form ([3ab5a5b](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3ab5a5b4f63fca227944ab6cc7928f6bf1f88ed4))
- 🚀 新增 protable 打印、列对齐方式功能 ([c22879e](https://gitee.com/HalseySpicy/Geeker-Admin/commit/c22879e7e80ff9ef662c39daa25b11f5f17d17ca))
- 🚀 新增 protbale 功能, 请查看详情 ([17f2bcd](https://gitee.com/HalseySpicy/Geeker-Admin/commit/17f2bcd67362365579ed8a572a3a9d17368ac64e))
- 🚀 新增 SVG Icons ([977602c](https://gitee.com/HalseySpicy/Geeker-Admin/commit/977602c30b8997cb51426fe9498392edc249561d))
- 🚀 新增 treeFilter 组件标题属性 ([20c755f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/20c755f59f3ae2b0380e6549bb56bb22317d750e))
- 🚀 新增 treeFilter data 参数 ([4280766](https://gitee.com/HalseySpicy/Geeker-Admin/commit/428076635d7a0e9f80109274d9523cf91aa5a10c))
- 🚀 新增暗黑模式 ([215e499](https://gitee.com/HalseySpicy/Geeker-Admin/commit/215e499634b516234e653eac27a611d5f51ea6da))
- 🚀 新增菜单搜索功能 ([4aa0eef](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4aa0eefaf427a2aa1aebd2b78dc049ffa776e838))
- 🚀 新增动态路由 ([551fefc](https://gitee.com/HalseySpicy/Geeker-Admin/commit/551fefc2e66b067d9e64d3b0cfbf47dfa1057d98))
- 🚀 新增分栏布局 ([de37143](https://gitee.com/HalseySpicy/Geeker-Admin/commit/de37143e93c0cc5be2ff52466dce344ab9270f0d))
- 🚀 新增功能 && 修复 bug(查看详情) ([1ab183f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/1ab183f1551cb8beb77243c2953b0119409dd6a5))
- 🚀 新增功能 && 修复 bug(查看详情) ([4c0bc5f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4c0bc5fd3c111e1cac636cad104c83ffb1168679))
- 🚀 新增功能(查看详情) ([cbd8dc2](https://gitee.com/HalseySpicy/Geeker-Admin/commit/cbd8dc2387576f525c0e49f81d540fbad3cb5e81))
- 🚀 新增横向、纵向、经典布局切换 ([1046de4](https://gitee.com/HalseySpicy/Geeker-Admin/commit/1046de4c7d5f805b10c5cea5325b063e3d6dd84f))
- 🚀 新增界面配置功能 ([39ffc5e](https://gitee.com/HalseySpicy/Geeker-Admin/commit/39ffc5e9a77da3294055f23f8c87a4a44f3622f7))
- 🚀 新增路由相关功能 ([9679eed](https://gitee.com/HalseySpicy/Geeker-Admin/commit/9679eed1edd0c1f08c17465f590d4ca0365985ee)), closes [#71](https://gitee.com/HalseySpicy/Geeker-Admin/issues/71) [#72](https://gitee.com/HalseySpicy/Geeker-Admin/issues/72) [#49](https://gitee.com/HalseySpicy/Geeker-Admin/issues/49)
- 🚀 新增请求示例,参见 loginApi ([d49b227](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d49b227762ae48c3ca08f0dec02a3667daac8532))
- 🚀 新增图标选择组件 ([ce5e165](https://gitee.com/HalseySpicy/Geeker-Admin/commit/ce5e165aed842074a9f7ac66ea97290710b541ee))
- 🚀 新增图片上传组件 ([c50c421](https://gitee.com/HalseySpicy/Geeker-Admin/commit/c50c421bc3c5f7af68184cda88262c6fb1bd07e0))
- 🚀 新增图片上传组件属性 ([d7670ed](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d7670ed94608c5410f3102d7b9427d8d856204b1))
- 🚀 新增系统管理模块 ([23748e1](https://gitee.com/HalseySpicy/Geeker-Admin/commit/23748e185e80e3b774b42114427934228a57d3aa))
- 🚀 新增消息通知 ([66836b6](https://gitee.com/HalseySpicy/Geeker-Admin/commit/66836b69781ccc55402a3887d091149885864442))
- 🚀 新增页面刷新功能 ([5223a41](https://gitee.com/HalseySpicy/Geeker-Admin/commit/5223a416d17568d5b2cae7b16b637e0f39134223))
- 🚀 新增引导页 ([4fb6fb3](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4fb6fb3a3eb34f82576e2378c311ff580f65226d))
- 🚀 新增组件参数配置文档 ([0e11fc5](https://gitee.com/HalseySpicy/Geeker-Admin/commit/0e11fc59175d5d74730c3cb1fa2579effcca6e48))
- 🚀 修改 keepAlive 逻辑 ([168ca13](https://gitee.com/HalseySpicy/Geeker-Admin/commit/168ca13e796c8cc366caa3d6e05090acdaefef75))
- 🚀 修改 pinia 持久化插件 ([a7691ae](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a7691aea614a035c4d381838149e08ad8477e49f))
- 🚀 优化代码注释 && 升级 element 到 2.2.6 ([b84512b](https://gitee.com/HalseySpicy/Geeker-Admin/commit/b84512b3b102b00faa2f9241a32f5fbe27da4307))
- 🚀 优化注释 && 代码细节问题 ([9d0ffa5](https://gitee.com/HalseySpicy/Geeker-Admin/commit/9d0ffa5ddecc4c73bec51208b05a6d44b1523b1f))
- 🚀 预定义主题颜色 ([8219178](https://gitee.com/HalseySpicy/Geeker-Admin/commit/82191789bcf6d21c623aa61c5a64e502cea44c2c))
- 🚀 增加 SearchForm 属性透传 ([eadb89b](https://gitee.com/HalseySpicy/Geeker-Admin/commit/eadb89b687596980a82401f44c53430081078d04))
- 🚀 增加表格 treeFilter、更新整体布局样式 ([719b78f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/719b78f317589b983bc4b852b3bfd63a60d42a46))
- 🚀 增加布局方式切换,样式已完成 ([5745b93](https://gitee.com/HalseySpicy/Geeker-Admin/commit/5745b93a6cc00519c1a02977b8c0437502d867e6))
- 🚀 增加分类筛选器 ([c95a1c0](https://gitee.com/HalseySpicy/Geeker-Admin/commit/c95a1c054ee9eacae470bcaae7574d5c989b86a2))
- 🚀 增加全局错误拦截 && 修改细节问题 请查看详情 ([0496184](https://gitee.com/HalseySpicy/Geeker-Admin/commit/04961847eb7df004d1e9f562e78ea3d5f851ea49))
### Bug Fixes
- 🧩 菜单搜索过滤掉 isHide 为 true 的菜单 ([c6bab35](https://gitee.com/HalseySpicy/Geeker-Admin/commit/c6bab356f0cde7e3dc6f69dfac115239c2453776))
- 🧩 解决 useTable 查询参数 bug ([a86e408](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a86e4089b6da8ab6a55bc84e069d665c06471676))
- 🧩 去除登陆页默认账号 ([3dda3fe](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3dda3fee3fef38fdafcfdf3b1bf16e73033c6fe0))
- 🧩 删除 protable 组件 image 配置属性 ([d699fe7](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d699fe7bd55eaaccfad9b94105c1b43ae64d1c34))
- 🧩 修复 国际化 产生的 bug ([ec4f74a](https://gitee.com/HalseySpicy/Geeker-Admin/commit/ec4f74ae654e7287fc08bb31fa3ee3d2c76164eb))
- 🧩 修复 axios 请求超时未拦截错误 ([856468e](https://gitee.com/HalseySpicy/Geeker-Admin/commit/856468e84f8356d35c25097f3115dfe3d496914c))
- 🧩 修复 bug ([3714abd](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3714abdc4826034791ccb3fc8249d946ec3a4e16))
- 🧩 修复 Pro-Tabel 列设置 bug ([a3b86a0](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a3b86a06a6d9cd4b6f7ac6e108727a0b4852e9a0))
- 🧩 修复 pro-table 格式报错问题 ([2ef11fd](https://gitee.com/HalseySpicy/Geeker-Admin/commit/2ef11fda6d373c3214df801ae789cafc1a033dcb))
- 🧩 修复布局样式 bug ([2f1cd64](https://gitee.com/HalseySpicy/Geeker-Admin/commit/2f1cd6442f359909301e3d95b0ed4dc9d2dbe7c6))
- 🧩 修复打包错误 ([243ebfc](https://gitee.com/HalseySpicy/Geeker-Admin/commit/243ebfc5280ddc013056c6708b44df35fe18f613))
- 🧩 修复打包失败 ([31698fe](https://gitee.com/HalseySpicy/Geeker-Admin/commit/31698fea6478d60343a9ad49ae0fc6db7a42c184))
- 🧩 修复打包失败问题 ([1778651](https://gitee.com/HalseySpicy/Geeker-Admin/commit/1778651781a1bb8bfe4ea61dafb9b48773fef5d7))
- 🧩 修复分栏布局 bug ([113274a](https://gitee.com/HalseySpicy/Geeker-Admin/commit/113274a87e2dacf694648f3a304c7ac37e2262d0))
- 🧩 修复经典布局展示 bug ([b95e237](https://gitee.com/HalseySpicy/Geeker-Admin/commit/b95e2376d06c6a6a35f72743e3fe8c1569fda008))
- 🧩 修复路由跳转两次不能携带参数问题 ([8b583f3](https://gitee.com/HalseySpicy/Geeker-Admin/commit/8b583f3d5f05b77ec2a35082557bae431441a586))
- 🧩 修复请求 header 参数丢失 bug ([3598dbc](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3598dbc2a83aaacf9dada4e2c38a3ca27cbe4cfd))
- 🧩 修复上传组件细节问题 ([8528358](https://gitee.com/HalseySpicy/Geeker-Admin/commit/8528358925ea809cf52f55015355345e87607351))
- 🧩 修复 BUG ([4bf2988](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4bf29881dd41fad256f1beb5affcd5ba6599e17d))
- 🧩 修复 BUG ([c93aaf7](https://gitee.com/HalseySpicy/Geeker-Admin/commit/c93aaf700112decd158e9a5a9c1f83eff1773e91))
- 🧩 修复 loading 请求 bug ([a3270ec](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a3270ecfa2e7c2484729ae6fd599febcc4f7be6b))
- 🧩 修复 vercel 打包失败 ([e63dee1](https://gitee.com/HalseySpicy/Geeker-Admin/commit/e63dee1f9653f4f95d0330275c5f5e8b530564c9))
- 🧩 修改 Pro-Table 表头渲染方式 ([aa57294](https://gitee.com/HalseySpicy/Geeker-Admin/commit/aa5729489942eaa6dca9928b70153af2de753a9c))
- 🧩 修改 useTable 存在的 bug ([5bb55b3](https://gitee.com/HalseySpicy/Geeker-Admin/commit/5bb55b32c0b46bbf55fa0d49efe3a15d0b1673a4))
- 🧩 修改 useTable 钩子中的 bug ([675aed8](https://gitee.com/HalseySpicy/Geeker-Admin/commit/675aed806e62c236b40bc933402c86085289df4e))
- 🧩 修改 useTable 携带默认查询参数 bug ([ee585b2](https://gitee.com/HalseySpicy/Geeker-Admin/commit/ee585b29f3129b7143a10947fdd3184b197ad883))
- 🧩 修改代码细节 && 优化注释 ([d86cb1f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d86cb1feb32e11a29e1c2bee54ea788c6c828d75))
- 🧩 修改当菜单设置 isHide=true 时面包屑报错 ([66885c5](https://gitee.com/HalseySpicy/Geeker-Admin/commit/66885c5cc15c10ccadcd49a7bee27a821663e8a7))
- 🧩 修改文件导出失败 bug ([208e720](https://gitee.com/HalseySpicy/Geeker-Admin/commit/208e720688969d2bc0fa0a6cc2bae3e3b991c806))
- 🧩 修改 BUG ([540048a](https://gitee.com/HalseySpicy/Geeker-Admin/commit/540048a09be9b0df5443e275f38f43c80dcde51f))
- 🧩 fix use pinia bug ([609aa69](https://gitee.com/HalseySpicy/Geeker-Admin/commit/609aa69aa9b3e0bb4e667ee7f76ab44051c2d2e8))
- 修复登录后白屏 ([f986c5c](https://gitee.com/HalseySpicy/Geeker-Admin/commit/f986c5c44fc1df8d5c6a90e90239c06928e2f4a1))
- **el-table:** 🧩 修复 el-table 在 safari 浏览器错乱 ([b776a48](https://gitee.com/HalseySpicy/Geeker-Admin/commit/b776a483636547c7cee723846ec33b2842550d13))
### 0.0.6 (2022-08-22)
### Features
- 🚀 二次封装 wangEditor 富文本编辑器(50%) ([4f8e266](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4f8e266b7dd25a7df18d302e88e14454bfa3816b))
- 🚀 请求全局 loading 更改为可配置 ([a75d62f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a75d62f627195ac420cf24ad7f51245b2e5bf04e))
- 🚀 升级 element-plus 到 2.25 ([e98c035](https://gitee.com/HalseySpicy/Geeker-Admin/commit/e98c035caa6d1ab04319673e0db65837c6887126))
- 🚀 添加 wangEditor 组件 ([d6d2fa7](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d6d2fa7d27887bb4a9e40e9d7037d4621812e16a))
- 🚀 完成 wangEditor 富文本二次封装 ([7362bfb](https://gitee.com/HalseySpicy/Geeker-Admin/commit/7362bfbff19224045e3bb20fa939a78c556cc805))
- 🚀 新增 主题色、灰色模式、色弱模式 配置 ([7821157](https://gitee.com/HalseySpicy/Geeker-Admin/commit/7821157059ed9c21d2844f75049f8fa999b19944))
- 🚀 新增 pro-form ([3ab5a5b](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3ab5a5b4f63fca227944ab6cc7928f6bf1f88ed4))
- 🚀 新增 protbale 功能, 请查看详情 ([17f2bcd](https://gitee.com/HalseySpicy/Geeker-Admin/commit/17f2bcd67362365579ed8a572a3a9d17368ac64e))
- 🚀 新增 SVG Icons ([977602c](https://gitee.com/HalseySpicy/Geeker-Admin/commit/977602c30b8997cb51426fe9498392edc249561d))
- 🚀 新增 treeFilter data 参数 ([4280766](https://gitee.com/HalseySpicy/Geeker-Admin/commit/428076635d7a0e9f80109274d9523cf91aa5a10c))
- 🚀 新增暗黑模式 ([215e499](https://gitee.com/HalseySpicy/Geeker-Admin/commit/215e499634b516234e653eac27a611d5f51ea6da))
- 🚀 新增菜单搜索功能 ([4aa0eef](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4aa0eefaf427a2aa1aebd2b78dc049ffa776e838))
- 🚀 新增界面配置功能 ([39ffc5e](https://gitee.com/HalseySpicy/Geeker-Admin/commit/39ffc5e9a77da3294055f23f8c87a4a44f3622f7))
- 🚀 新增请求示例,参见 loginApi ([d49b227](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d49b227762ae48c3ca08f0dec02a3667daac8532))
- 🚀 新增图标选择组件 ([ce5e165](https://gitee.com/HalseySpicy/Geeker-Admin/commit/ce5e165aed842074a9f7ac66ea97290710b541ee))
- 🚀 新增图片上传组件 ([c50c421](https://gitee.com/HalseySpicy/Geeker-Admin/commit/c50c421bc3c5f7af68184cda88262c6fb1bd07e0))
- 🚀 新增图片上传组件属性 ([d7670ed](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d7670ed94608c5410f3102d7b9427d8d856204b1))
- 🚀 新增引导页 ([4fb6fb3](https://gitee.com/HalseySpicy/Geeker-Admin/commit/4fb6fb3a3eb34f82576e2378c311ff580f65226d))
- 🚀 新增组件参数配置文档 ([0e11fc5](https://gitee.com/HalseySpicy/Geeker-Admin/commit/0e11fc59175d5d74730c3cb1fa2579effcca6e48))
- 🚀 修改 pinia 持久化插件 ([a7691ae](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a7691aea614a035c4d381838149e08ad8477e49f))
- 🚀 优化代码注释 && 升级 element 到 2.2.6 ([b84512b](https://gitee.com/HalseySpicy/Geeker-Admin/commit/b84512b3b102b00faa2f9241a32f5fbe27da4307))
- 🚀 优化注释 && 代码细节问题 ([9d0ffa5](https://gitee.com/HalseySpicy/Geeker-Admin/commit/9d0ffa5ddecc4c73bec51208b05a6d44b1523b1f))
- 🚀 预定义主题颜色 ([8219178](https://gitee.com/HalseySpicy/Geeker-Admin/commit/82191789bcf6d21c623aa61c5a64e502cea44c2c))
- 🚀 增加 SearchForm 属性透传 ([eadb89b](https://gitee.com/HalseySpicy/Geeker-Admin/commit/eadb89b687596980a82401f44c53430081078d04))
- 🚀 增加表格 treeFilter、更新整体布局样式 ([719b78f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/719b78f317589b983bc4b852b3bfd63a60d42a46))
### Bug Fixes
- 🧩 解决 useTable 查询参数 bug ([a86e408](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a86e4089b6da8ab6a55bc84e069d665c06471676))
- 🧩 去除登陆页默认账号 ([3dda3fe](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3dda3fee3fef38fdafcfdf3b1bf16e73033c6fe0))
- 🧩 删除 protable 组件 image 配置属性 ([d699fe7](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d699fe7bd55eaaccfad9b94105c1b43ae64d1c34))
- 🧩 修复 国际化 产生的 bug ([ec4f74a](https://gitee.com/HalseySpicy/Geeker-Admin/commit/ec4f74ae654e7287fc08bb31fa3ee3d2c76164eb))
- 🧩 修复 axios 请求超时未拦截错误 ([856468e](https://gitee.com/HalseySpicy/Geeker-Admin/commit/856468e84f8356d35c25097f3115dfe3d496914c))
- 🧩 修复 Pro-Tabel 列设置 bug ([a3b86a0](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a3b86a06a6d9cd4b6f7ac6e108727a0b4852e9a0))
- 🧩 修复 pro-table 格式报错问题 ([2ef11fd](https://gitee.com/HalseySpicy/Geeker-Admin/commit/2ef11fda6d373c3214df801ae789cafc1a033dcb))
- 🧩 修复打包失败问题 ([1778651](https://gitee.com/HalseySpicy/Geeker-Admin/commit/1778651781a1bb8bfe4ea61dafb9b48773fef5d7))
- 🧩 修复路由跳转两次不能携带参数问题 ([8b583f3](https://gitee.com/HalseySpicy/Geeker-Admin/commit/8b583f3d5f05b77ec2a35082557bae431441a586))
- 🧩 修复请求 header 参数丢失 bug ([3598dbc](https://gitee.com/HalseySpicy/Geeker-Admin/commit/3598dbc2a83aaacf9dada4e2c38a3ca27cbe4cfd))
- 🧩 修复上传组件细节问题 ([8528358](https://gitee.com/HalseySpicy/Geeker-Admin/commit/8528358925ea809cf52f55015355345e87607351))
- 🧩 修复 loading 请求 bug ([a3270ec](https://gitee.com/HalseySpicy/Geeker-Admin/commit/a3270ecfa2e7c2484729ae6fd599febcc4f7be6b))
- 🧩 修改 Pro-Table 表头渲染方式 ([aa57294](https://gitee.com/HalseySpicy/Geeker-Admin/commit/aa5729489942eaa6dca9928b70153af2de753a9c))
- 🧩 修改 useTable 存在的 bug ([5bb55b3](https://gitee.com/HalseySpicy/Geeker-Admin/commit/5bb55b32c0b46bbf55fa0d49efe3a15d0b1673a4))
- 🧩 修改 useTable 钩子中的 bug ([675aed8](https://gitee.com/HalseySpicy/Geeker-Admin/commit/675aed806e62c236b40bc933402c86085289df4e))
- 🧩 修改 useTable 携带默认查询参数 bug ([ee585b2](https://gitee.com/HalseySpicy/Geeker-Admin/commit/ee585b29f3129b7143a10947fdd3184b197ad883))
- 🧩 修改代码细节 && 优化注释 ([d86cb1f](https://gitee.com/HalseySpicy/Geeker-Admin/commit/d86cb1feb32e11a29e1c2bee54ea788c6c828d75))
- 🧩 修改文件导出失败 bug ([208e720](https://gitee.com/HalseySpicy/Geeker-Admin/commit/208e720688969d2bc0fa0a6cc2bae3e3b991c806))
- 🧩 fix use pinia bug ([609aa69](https://gitee.com/HalseySpicy/Geeker-Admin/commit/609aa69aa9b3e0bb4e667ee7f76ab44051c2d2e8))
- 修复登录后白屏 ([f986c5c](https://gitee.com/HalseySpicy/Geeker-Admin/commit/f986c5c44fc1df8d5c6a90e90239c06928e2f4a1))
### [0.0.5](https://github.com/HalseySpicy/Geeker-Admin/compare/v0.0.4...v0.0.5) (2022-07-21)
### Features
- 🚀 新增请求示例,参见 loginApi ([d49b227](https://github.com/HalseySpicy/Geeker-Admin/commit/d49b227762ae48c3ca08f0dec02a3667daac8532))
### Bug Fixes
- 🧩 解决 useTable 查询参数 bug ([a86e408](https://github.com/HalseySpicy/Geeker-Admin/commit/a86e4089b6da8ab6a55bc84e069d665c06471676))
- 🧩 修复 axios 请求超时未拦截错误 ([856468e](https://github.com/HalseySpicy/Geeker-Admin/commit/856468e84f8356d35c25097f3115dfe3d496914c))
- 🧩 修复请求 header 参数丢失 bug ([3598dbc](https://github.com/HalseySpicy/Geeker-Admin/commit/3598dbc2a83aaacf9dada4e2c38a3ca27cbe4cfd))
### [0.0.4](https://github.com/HalseySpicy/Geeker-Admin/compare/v0.0.3...v0.0.4) (2022-07-12)
### Features
- 🚀 新增 主题色、灰色模式、色弱模式 配置 ([7821157](https://github.com/HalseySpicy/Geeker-Admin/commit/7821157059ed9c21d2844f75049f8fa999b19944))
- 🚀 新增 pro-form ([3ab5a5b](https://github.com/HalseySpicy/Geeker-Admin/commit/3ab5a5b4f63fca227944ab6cc7928f6bf1f88ed4))
- 🚀 新增菜单搜索功能 ([4aa0eef](https://github.com/HalseySpicy/Geeker-Admin/commit/4aa0eefaf427a2aa1aebd2b78dc049ffa776e838))
- 🚀 新增界面配置功能 ([39ffc5e](https://github.com/HalseySpicy/Geeker-Admin/commit/39ffc5e9a77da3294055f23f8c87a4a44f3622f7))
- 🚀 预定义主题颜色 ([8219178](https://github.com/HalseySpicy/Geeker-Admin/commit/82191789bcf6d21c623aa61c5a64e502cea44c2c))
- 🚀 增加 SearchForm 属性透传 ([eadb89b](https://github.com/HalseySpicy/Geeker-Admin/commit/eadb89b687596980a82401f44c53430081078d04))
### Bug Fixes
- 🧩 修复 pro-table 格式报错问题 ([2ef11fd](https://github.com/HalseySpicy/Geeker-Admin/commit/2ef11fda6d373c3214df801ae789cafc1a033dcb))
- 🧩 修改文件导出失败 bug ([208e720](https://github.com/HalseySpicy/Geeker-Admin/commit/208e720688969d2bc0fa0a6cc2bae3e3b991c806))
- 🧩 fix use pinia bug ([609aa69](https://github.com/HalseySpicy/Geeker-Admin/commit/609aa69aa9b3e0bb4e667ee7f76ab44051c2d2e8))
### [0.0.2](https://github.com/HalseySpicy/Geeker-Admin/compare/v0.0.3...v0.0.2) (2022-06-29)
### 0.0.2 (2022-06-20)
### Features
- 🚀 请求全局 loading 更改为可配置 ([a75d62f](https://github.com/HalseySpicy/Geeker-Admin/commit/a75d62f627195ac420cf24ad7f51245b2e5bf04e))
- 🚀 升级 element-plus 到 2.2.5 ([e98c035](https://github.com/HalseySpicy/Geeker-Admin/commit/e98c035caa6d1ab04319673e0db65837c6887126))
- 🚀 新增暗黑模式 ([215e499](https://github.com/HalseySpicy/Geeker-Admin/commit/215e499634b516234e653eac27a611d5f51ea6da))
- 🚀 新增图标选择组件 ([ce5e165](https://github.com/HalseySpicy/Geeker-Admin/commit/ce5e165aed842074a9f7ac66ea97290710b541ee))
- 🚀 修改 pinia 持久化插件 ([a7691ae](https://github.com/HalseySpicy/Geeker-Admin/commit/a7691aea614a035c4d381838149e08ad8477e49f))
- 🚀 优化代码注释 && 升级 element 到 2.2.6 ([b84512b](https://github.com/HalseySpicy/Geeker-Admin/commit/b84512b3b102b00faa2f9241a32f5fbe27da4307))
### Bug Fixes
- 🧩 去除登陆页默认账号 ([3dda3fe](https://github.com/HalseySpicy/Geeker-Admin/commit/3dda3fee3fef38fdafcfdf3b1bf16e73033c6fe0))
- 🧩 修复 Pro-Table 列设置 bug ([a3b86a0](https://github.com/HalseySpicy/Geeker-Admin/commit/a3b86a06a6d9cd4b6f7ac6e108727a0b4852e9a0))
- 🧩 修复 loading 请求 bug ([a3270ec](https://github.com/HalseySpicy/Geeker-Admin/commit/a3270ecfa2e7c2484729ae6fd599febcc4f7be6b))
- 🧩 修改 Pro-Table 表头渲染方式 ([aa57294](https://github.com/HalseySpicy/Geeker-Admin/commit/aa5729489942eaa6dca9928b70153af2de753a9c))
- 🧩 修改 useTable 存在的 bug ([5bb55b3](https://github.com/HalseySpicy/Geeker-Admin/commit/5bb55b32c0b46bbf55fa0d49efe3a15d0b1673a4))
- 🧩 修改 useTable 钩子中的 bug ([675aed8](https://github.com/HalseySpicy/Geeker-Admin/commit/675aed806e62c236b40bc933402c86085289df4e))
- 🧩 修改 useTable 携带默认查询参数 bug ([ee585b2](https://github.com/HalseySpicy/Geeker-Admin/commit/ee585b29f3129b7143a10947fdd3184b197ad883))

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2022 Halsey
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.

161
README.md Normal file
View File

@@ -0,0 +1,161 @@
# Geeker-Admin
## 环境
node 18+
## 介绍 📖
这是一个极简的 Geeker-Admin 管理后台。它包含了 ElementPlus、axios、iconfont、权限控制、代码检查lint、cz-git 和主题布局切换等,构建后台所必需的功能。
## 在线预览 👀
- [预览链接](https://admin.spicyboy.cn)
## 代码仓库 ⭐
- [GitHub 仓库](https://github.com/HalseySpicy/Geeker-Admin/tree/template)
## 项目文档 📚
- [文档地址](https://docs.spicyboy.cn)
## 安装使用步骤 📔
1. **克隆仓库:**
```bash
# GitHub
git clone https://github.com/HalseySpicy/Geeker-Admin/tree/template
```
2. **安装依赖:**
```bash
npm install
```
3. **运行项目:**
```bash
npm serve
```
4. **构建项目:**
```bash
# 开发环境
npm build:dev
# 测试环境
npm build:test
# 生产环境
npm build:pro
```
5. **代码检查与格式化:**
```bash
# eslint 检查代码
pnpm lint:eslint
# prettier 格式化代码
pnpm lint:prettier
# stylelint 格式化样式
pnpm lint:stylelint
```
6. **提交代码:**
```bash
# 提交代码(提交前会自动执行 lint:lint-staged 命令)
pnpm commit
feat: add new feature
```
## 项目后台接口 🧩
项目后台接口完全采用 Mock 数据,特别感谢以下 Mock 平台的支持:
- [FastMock](https://www.fastmock.site)
- [EasyMock](https://mock.mengxuegu.com)
## 全项目格式化
要在整个项目上运行格式化,请在项目路径下的命令行窗口中执行以下命令:
```text
prettier --write "\*_/_.{js,jsx,ts,tsx,css,scss,html,json,md,vue}"
prettier --write "**/*.{js,jsx,ts,tsx,css,scss,html,json,md,vue}"
```
完成格式化后,请关闭并重新打开 VSCode 项目。
## 部署步骤
### nvm 安装
```bash
su www
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
# 执行以下命令
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
nvm -v
nvm install 20
```
### 应用部署
```bash
# 以 root 用户执行
# 将宝塔站点目录改为 www
chown -R www:www /www/wwwroot
su www
# 定义变量
AppName=NovelAdmin
API_DOMAIN=https://api.***.xyz # 使用真实的 API 地址
cd ~
git clone ssh://git@git.nu0g.com:16868/root/NovelAdmin.git $AppName
cd $AppName
git fetch
git checkout prod
nvm use 20
npx npm install
cp -f .env.production.example .env.production
# 使用 sed 替换字符串
sed -i "s|https://api.pro.com|$API_DOMAIN|g" .env.production
ln -s ~/$AppName /www/wwwroot/$AppName
npx npm run build:pro
# 部署完成后的提示
echo "部署完成:$AppName"
```

46
build/getEnv.ts Normal file
View File

@@ -0,0 +1,46 @@
import path from "path";
export function isDevFn(mode: string): boolean {
return mode === "development";
}
export function isProdFn(mode: string): boolean {
return mode === "production";
}
export function isTestFn(mode: string): boolean {
return mode === "test";
}
/**
* Whether to generate package preview
*/
export function isReportMode(): boolean {
return process.env.VITE_REPORT === "true";
}
// Read all environment variable configuration files to process.env
export function wrapperEnv(envConf: Recordable): ViteEnv {
const ret: any = {};
for (const envName of Object.keys(envConf)) {
let realName = envConf[envName].replace(/\\n/g, "\n");
realName = realName === "true" ? true : realName === "false" ? false : realName;
if (envName === "VITE_PORT") realName = Number(realName);
if (envName === "VITE_PROXY") {
try {
realName = JSON.parse(realName);
} catch (error) {}
}
ret[envName] = realName;
}
return ret;
}
/**
* Get user root directory
* @param dir file path
*/
export function getRootPath(...dir: string[]) {
return path.resolve(process.cwd(), ...dir);
}

98
build/plugins.ts Normal file
View File

@@ -0,0 +1,98 @@
import { resolve } from "path";
import { PluginOption } from "vite";
import { VitePWA } from "vite-plugin-pwa";
import { visualizer } from "rollup-plugin-visualizer";
import { createHtmlPlugin } from "vite-plugin-html";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import eslintPlugin from "vite-plugin-eslint";
import viteCompression from "vite-plugin-compression";
import vueSetupExtend from "unplugin-vue-setup-extend-plus/vite";
/**
* 创建 vite 插件
* @param viteEnv
*/
export const createVitePlugins = (viteEnv: ViteEnv): (PluginOption | PluginOption[])[] => {
const { VITE_GLOB_APP_TITLE, VITE_REPORT, VITE_PWA } = viteEnv;
return [
vue(),
// vue 可以使用 jsx/tsx 语法
vueJsx(),
// esLint 报错信息显示在浏览器界面上
eslintPlugin(),
// name 可以写在 script 标签上
vueSetupExtend({}),
// 创建打包压缩配置
createCompression(viteEnv),
// 注入变量到 html 文件
createHtmlPlugin({
inject: {
data: { title: VITE_GLOB_APP_TITLE }
}
}),
// 使用 svg 图标
createSvgIconsPlugin({
iconDirs: [resolve(process.cwd(), "src/assets/icons")],
symbolId: "icon-[dir]-[name]"
}),
// vitePWA
VITE_PWA && createVitePwa(viteEnv),
// 是否生成包预览,分析依赖包大小做优化处理
VITE_REPORT && (visualizer({ filename: "stats.html", gzipSize: true, brotliSize: true }) as PluginOption)
];
};
/**
* @description 根据 compress 配置,生成不同的压缩规则
* @param viteEnv
*/
const createCompression = (viteEnv: ViteEnv): PluginOption | PluginOption[] => {
const { VITE_BUILD_COMPRESS = "none", VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv;
const compressList = VITE_BUILD_COMPRESS.split(",");
const plugins: PluginOption[] = [];
if (compressList.includes("gzip")) {
plugins.push(
viteCompression({
ext: ".gz",
algorithm: "gzip",
deleteOriginFile: VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
})
);
}
if (compressList.includes("brotli")) {
plugins.push(
viteCompression({
ext: ".br",
algorithm: "brotliCompress",
deleteOriginFile: VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE
})
);
}
return plugins;
};
/**
* @description VitePwa
* @param viteEnv
*/
const createVitePwa = (viteEnv: ViteEnv): PluginOption | PluginOption[] => {
const { VITE_GLOB_APP_TITLE, VITE_URL } = viteEnv;
return VitePWA({
registerType: "autoUpdate",
manifest: {
name: VITE_GLOB_APP_TITLE,
short_name: VITE_GLOB_APP_TITLE,
theme_color: "#ffffff",
icons: [
{
src: VITE_URL + "src/customize/images/logo.png",
sizes: "100x100",
type: "image/png"
}
]
}
});
};

30
build/proxy.ts Normal file
View File

@@ -0,0 +1,30 @@
import type { ProxyOptions } from "vite";
type ProxyItem = [string, string];
type ProxyList = ProxyItem[];
type ProxyTargetList = Record<string, ProxyOptions>;
/**
* 创建代理,用于解析 .env.development 代理配置
* @param list
*/
export function createProxy(list: ProxyList = []) {
const ret: ProxyTargetList = {};
for (const [prefix, target] of list) {
const httpsRE = /^https:\/\//;
const isHttps = httpsRE.test(target);
// https://github.com/http-party/node-http-proxy#options
ret[prefix] = {
target: target,
changeOrigin: true,
ws: true,
rewrite: path => path.replace(new RegExp(`^${prefix}`), ""),
// https is require secure=false
...(isHttps ? { secure: false } : {})
};
}
return ret;
}

162
commitlint.config.cjs Normal file
View File

@@ -0,0 +1,162 @@
// @see: https://cz-git.qbenben.com/zh/guide
const fs = require("fs");
const path = require("path");
const scopes = fs
.readdirSync(path.resolve(__dirname, "src"), { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name.replace(/s$/, ""));
/** @type {import('cz-git').UserConfig} */
module.exports = {
ignores: [commit => commit.includes("init")],
extends: ["@commitlint/config-conventional"],
rules: {
// @see: https://commitlint.js.org/#/reference-rules
"body-leading-blank": [2, "always"],
"footer-leading-blank": [1, "always"],
"header-max-length": [2, "always", 108],
"subject-empty": [2, "never"],
"type-empty": [2, "never"],
"subject-case": [0],
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"build",
"ci",
"chore",
"revert",
"wip",
"workflow",
"types",
"release"
]
]
},
prompt: {
messages: {
type: "Select the type of change that you're committing:",
scope: "Denote the SCOPE of this change (optional):",
customScope: "Denote the SCOPE of this change:",
subject: "Write a SHORT, IMPERATIVE tense description of the change:\n",
body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',
footerPrefixsSelect: "Select the ISSUES type of changeList by this change (optional):",
customFooterPrefixs: "Input ISSUES prefix:",
footer: "List any ISSUES by this change. E.g.: #31, #34:\n",
confirmCommit: "Are you sure you want to proceed with the commit above?"
// 中文版
// type: "选择你要提交的类型 :",
// scope: "选择一个提交范围(可选):",
// customScope: "请输入自定义的提交范围 :",
// subject: "填写简短精炼的变更描述 :\n",
// body: '填写更加详细的变更描述(可选)。使用 "|" 换行 :\n',
// breaking: '列举非兼容性重大的变更(可选)。使用 "|" 换行 :\n',
// footerPrefixsSelect: "选择关联issue前缀可选:",
// customFooterPrefixs: "输入自定义issue前缀 :",
// footer: "列举关联issue (可选) 例如: #31, #I3244 :\n",
// confirmCommit: "是否提交或修改commit ?"
},
types: [
{
value: "feat",
name: "feat: 🚀 A new feature",
emoji: "🚀"
},
{
value: "fix",
name: "fix: 🧩 A bug fix",
emoji: "🧩"
},
{
value: "docs",
name: "docs: 📚 Documentation only changes",
emoji: "📚"
},
{
value: "style",
name: "style: 🎨 Changes that do not affect the meaning of the code",
emoji: "🎨"
},
{
value: "refactor",
name: "refactor: ♻️ A code change that neither fixes a bug nor adds a feature",
emoji: "♻️"
},
{
value: "perf",
name: "perf: ⚡️ A code change that improves performance",
emoji: "⚡️"
},
{
value: "test",
name: "test: ✅ Adding missing tests or correcting existing tests",
emoji: "✅"
},
{
value: "build",
name: "build: 📦️ Changes that affect the build system or external dependencies",
emoji: "📦️"
},
{
value: "ci",
name: "ci: 🎡 Changes to our CI configuration files and scripts",
emoji: "🎡"
},
{
value: "chore",
name: "chore: 🔨 Other changes that don't modify src or test files",
emoji: "🔨"
},
{
value: "revert",
name: "revert: ⏪️ Reverts a previous commit",
emoji: "⏪️"
},
{
value: "wip",
name: "wip: 🕔 work in process",
emoji: "🕔"
},
{
value: "workflow",
name: "workflow: 📋 workflow improvements",
emoji: "📋"
},
{
value: "type",
name: "type: 🔰 type definition file changes",
emoji: "🔰"
}
// 中文版
// { value: "feat", name: "特性: 🚀 新增功能", emoji: "🚀" },
// { value: "fix", name: "修复: 🧩 修复缺陷", emoji: "🧩" },
// { value: "docs", name: "文档: 📚 文档变更", emoji: "📚" },
// { value: "style", name: "格式: 🎨 代码格式(不影响功能,例如空格、分号等格式修正)", emoji: "🎨" },
// { value: "refactor", name: "重构: ♻️ 代码重构(不包括 bug 修复、功能新增)", emoji: "♻️" },
// { value: "perf", name: "性能: ⚡️ 性能优化", emoji: "⚡️" },
// { value: "test", name: "测试: ✅ 添加疏漏测试或已有测试改动", emoji: "✅" },
// { value: "build", name: "构建: 📦️ 构建流程、外部依赖变更(如升级 npm 包、修改 webpack 配置等)", emoji: "📦️" },
// { value: "ci", name: "集成: 🎡 修改 CI 配置、脚本", emoji: "🎡" },
// { value: "revert", name: "回退: ⏪️ 回滚 commit", emoji: "⏪️" },
// { value: "chore", name: "其他: 🔨 对构建过程或辅助工具和库的更改(不影响源文件、测试用例)", emoji: "🔨" },
// { value: "wip", name: "开发: 🕔 正在开发中", emoji: "🕔" },
// { value: "workflow", name: "工作流: 📋 工作流程改进", emoji: "📋" },
// { value: "types", name: "类型: 🔰 类型定义文件修改", emoji: "🔰" }
],
useEmoji: true,
scopes: [...scopes],
customScopesAlign: "bottom",
emptyScopesAlias: "empty",
customScopesAlias: "custom",
allowBreakingChanges: ["feat", "fix"]
}
};

105
index.html Normal file
View File

@@ -0,0 +1,105 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="src/customize/images/favicon.ico?v=123" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%- title %></title>
</head>
<body>
<div id="app">
<style>
html,
body,
#app {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.loading-box {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.loading-box .loading-wrap {
display: flex;
align-items: center;
justify-content: center;
padding: 98px;
}
.dot {
position: relative;
box-sizing: border-box;
display: inline-block;
width: 32px;
height: 32px;
font-size: 32px;
transform: rotate(45deg);
animation: ant-rotate 1.2s infinite linear;
}
.dot i {
position: absolute;
display: block;
width: 14px;
height: 14px;
background-color: #409eff;
border-radius: 100%;
opacity: 0.3;
transform: scale(0.75);
transform-origin: 50% 50%;
animation: ant-spin-move 1s infinite linear alternate;
}
.dot i:nth-child(1) {
top: 0;
left: 0;
}
.dot i:nth-child(2) {
top: 0;
right: 0;
animation-delay: 0.4s;
}
.dot i:nth-child(3) {
right: 0;
bottom: 0;
animation-delay: 0.8s;
}
.dot i:nth-child(4) {
bottom: 0;
left: 0;
animation-delay: 1.2s;
}
@keyframes ant-rotate {
to {
transform: rotate(405deg);
}
}
@keyframes ant-spin-move {
to {
opacity: 1;
}
}
</style>
<div class="loading-box">
<div class="loading-wrap">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div>
</div>
</div>
<script>
const globalState = JSON.parse(window.localStorage.getItem("IOMS-global"));
if (globalState) {
const dot = document.querySelectorAll(".dot i");
const html = document.querySelector("html");
dot.forEach(item => (item.style.background = globalState.primary));
if (globalState.isDark) html.style.background = "#141414";
}
</script>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

8
lint-staged.config.cjs Normal file
View File

@@ -0,0 +1,8 @@
module.exports = {
"*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": ["prettier --write--parser json"],
"package.json": ["prettier --write"],
"*.vue": ["eslint --fix", "prettier --write", "stylelint --fix"],
"*.{scss,less,styl,html}": ["stylelint --fix", "prettier --write"],
"*.md": ["prettier --write"]
};

124
package.json Normal file
View File

@@ -0,0 +1,124 @@
{
"name": "geeker-admin",
"private": true,
"version": "1.2.0",
"type": "module",
"description": "geeker-admin open source management system",
"author": {
"name": "Geeker",
"email": "848130454@qq.com",
"url": "https://github.com/HalseySpicy"
},
"license": "MIT",
"homepage": "https://github.com/HalseySpicy/Geeker-Admin",
"repository": {
"type": "git",
"url": "git@github.com:HalseySpicy/Geeker-Admin.git"
},
"bugs": {
"url": "https://github.com/HalseySpicy/Geeker-Admin/issues"
},
"scripts": {
"dev": "vite",
"serve": "vite",
"build": "vite build",
"build:dev": " vite build --mode development",
"build:test": "vite build --mode test",
"build:pro": "vite build --mode production",
"type:check": "vue-tsc --noEmit --skipLibCheck",
"preview": "npm run build:dev && vite preview",
"lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src",
"lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
"lint:stylelint": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
"lint:lint-staged": "lint-staged",
"prepare": "husky install",
"release": "standard-version",
"commit": "git add -A && czg && git push"
},
"dependencies": {
"@element-plus/icons-vue": "^2.1.0",
"@vueuse/core": "^10.4.1",
"axios": "^1.5.0",
"dayjs": "^1.11.9",
"dplayer": "^1.27.1",
"echarts": "^5.4.0",
"echarts-liquidfill": "^3.1.0",
"element-plus": "^2.7.7",
"hls.js": "^1.5.7",
"md5": "^2.3.0",
"mitt": "^3.0.1",
"nprogress": "^0.2.0",
"pinia": "^2.1.6",
"pinia-plugin-persistedstate": "^3.2.0",
"print-js": "^1.6.0",
"qrcode": "^1.5.3",
"qs": "^6.11.2",
"screenfull": "^6.0.2",
"sortablejs": "^1.15.0",
"typescript": "^5.1.6",
"vue": "^3.3.4",
"vue-router": "^4.2.4"
},
"devDependencies": {
"@commitlint/cli": "^17.7.1",
"@commitlint/config-conventional": "^17.7.0",
"@types/md5": "^2.3.2",
"@types/nprogress": "^0.2.0",
"@types/qs": "^6.9.8",
"@types/sortablejs": "^1.15.2",
"@typescript-eslint/eslint-plugin": "^7.11.0",
"@typescript-eslint/parser": "^7.11.0",
"@vitejs/plugin-vue": "^4.3.4",
"@vitejs/plugin-vue-jsx": "^3.0.2",
"autoprefixer": "^10.4.15",
"cz-git": "^1.7.1",
"czg": "^1.7.1",
"eslint": "^8.49.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-vue": "^9.17.0",
"husky": "^8.0.3",
"lint-staged": "^14.0.1",
"postcss": "^8.4.29",
"postcss-html": "^1.5.0",
"prettier": "^3.1.0",
"rollup-plugin-visualizer": "^5.9.2",
"sass": "^1.66.1",
"standard-version": "^9.5.0",
"stylelint": "^15.10.3",
"stylelint-config-html": "^1.1.0",
"stylelint-config-recess-order": "^4.3.0",
"stylelint-config-recommended-scss": "^13.0.0",
"stylelint-config-recommended-vue": "^1.5.0",
"stylelint-config-standard": "^34.0.0",
"stylelint-config-standard-scss": "^11.0.0",
"unplugin-vue-setup-extend-plus": "^1.0.0",
"vite": "^4.4.9",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-html": "^3.2.0",
"vite-plugin-pwa": "^0.16.5",
"vite-plugin-svg-icons": "^2.0.1",
"vue-tsc": "^1.8.11"
},
"engines": {
"node": ">=16.0.0"
},
"browserslist": {
"production": [
"> 1%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"config": {
"commitizen": {
"path": "node_modules/cz-git"
}
}
}

8440
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

5
postcss.config.cjs Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
plugins: {
autoprefixer: {}
}
};

1
public/vue.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>

After

Width:  |  Height:  |  Size: 496 B

23
src/App.vue Normal file
View File

@@ -0,0 +1,23 @@
<template>
<el-config-provider :locale="locale" :size="assemblySize" :button="buttonConfig">
<router-view></router-view>
</el-config-provider>
</template>
<script setup lang="ts">
import { reactive, computed } from "vue";
import { useTheme } from "@/hooks/useTheme";
import { ElConfigProvider } from "element-plus";
import { useGlobalStore } from "@/stores/modules/global";
import locale from "element-plus/es/locale/lang/zh-cn";
const globalStore = useGlobalStore();
// init theme
const { initTheme } = useTheme();
initTheme();
// element assemblySize
const assemblySize = computed(() => globalStore.assemblySize);
// element button config
const buttonConfig = reactive({ autoInsertSpace: false });
</script>

79
src/api/config/index.ts Normal file
View File

@@ -0,0 +1,79 @@
// 登录
export const loginApiUrl = "/guest/login";
// 配置
export const getSystemConfigListApiUrl = "/system/config/list";
export const getSystemConfigSaveApiUrl = "/system/config/save";
// 资源端点
export const getSystemZyddListApiUrl = "/system/zydd/list";
export const getSystemZyddSaveApiUrl = "/system/zydd/save";
// 计划任务列表
export const getSystemPlanListApiUrl = "/system/plan/list";
export const getSystemPlanSaveApiUrl = "/system/plan/save";
// 采集配置列表
export const getSystemCjpzListApiUrl = "/system/cjpz/list";
export const getSystemCjpzSaveApiUrl = "/system/cjpz/save";
// 用户信息
export const getSystemUserInfoApiUrl = "/system/user/info";
// 用户列表
export const getSystemUserlistApiUrl = "/system/user/list";
// 视频分类 /shipin/fenlei/list?page=1&limit=10&key=
export const getShipinFenleiApiUrl = "/shipin/fenlei/list";
// 视频列表 /shipin/main/list?page=1&limit=10&key=
export const getShipinMainListApiUrl = "/shipin/main/list";
// 视频列表 -批量设置每日推荐视频
export const getShipinMainMrtjApiUrl = "/shipin/main/mrtj";
export const getShipinMainVipApiUrl = "/shipin/main/vip";
// seo关键词
export const getKeyWordListApiUrl = "/system/keyword/list";
export const getKeyWordSaveApiUrl = "/system/keyword/save";
export const getKeyWordDelApiUrl = "/system/keyword/del";
// 小说分类
export const getXiaoShuoFenleiApiUrl = "/novel/category/list";
// 小说章节
export const getXiaoZhangJieYouApiUrl = "/xiaoshuo/zhangjie/list";
// 小说列表
export const getXiaoShuoMainListApiUrl = "/novel/list";
// 广告分组 /guanggao/main/group/list?page=1&limit=10&key=
export const getGuangGaoMainGroupListApiUrl = "/guanggao/main/group/list";
// 广告列表 /guanggao/main/list?page=1&limit=10&key=
export const getGuangGaoMainListApiUrl = "/guanggao/main/list";
//广告配置
export const getGuangGaoGgpzListApiUrl = "/guanggao/ggpz/list";
export const getGuangGaoGgpzSaveApiUrl = "/guanggao/ggpz/save";
// 漫画分类 /manhua/fenlei/list?page=1&limit=10&key=
export const getManHuaFenleiApiUrl = "/manhua/fenlei/list";
// 漫画章节 /shipin/nvyou/list?page=1&limit=10&key=
export const getManHuaZhangJieApiUrl = "/manhua/zhangjie/list";
// 漫画列表 /shipin/main/list?page=1&limit=10&key=
export const getManHuaMainListApiUrl = "/manhua/main/list";
// 设置广告分组 /guanggao/main/group/save 传参form-data 参数 ggfz_code ggfz_name ggfz_id
export const getGuangGaoMainGroupSaveApiUrl = "/guanggao/main/group/save";
// 删除广告分组 /guanggao/main/group/del 传参form-data 参数 ggfz_id
export const getGuangGaoMainGroupDelApiUrl = "/guanggao/main/group/del";
// 设置广告 /guanggao/main/group/save 传参form-data 参数 gg_id ggfz_id gg_lei_xing gg_tu_pian gg_wen_zi gg_tiao_zhuan_di_zhi
export const getGuangGaoMainSaveApiUrl = "/guanggao/main/save";
// 删除广告 /guanggao/main/group/del 传参form-data 参数 gg_id
export const getGuangGaoMainDelApiUrl = "/guanggao/main/del";
// 参数模板列表
export const getTkdargListUrl = "/site/tkdarg/list";
// 模板列表
export const getTemplateListUrl = "/site/template/list";
// 替换模板分组列表
export const getSubjectFomartGroupList = "/site/subject/fomart/group/list";
// 替换模板列表
export const getSubjectFomartList = "/site/subject/fomart/list";

View File

@@ -0,0 +1,99 @@
// 后端微服务模块前缀
export const PORT1 = "/geeker";
export const ADMIN = "/admin";
/**
* @name 服务端口-系统
*/
export const SYSTEM_PORT = "/admin/system";
export const DOMAIN_PORT = "/admin/domain";
export const USER_PORT = SYSTEM_PORT + "/user";
export const ROLE_PORT = SYSTEM_PORT + "/role";
export const NODE_PORT = SYSTEM_PORT + "/node";
export const TASK_PORT = SYSTEM_PORT + "/task";
export const MSG_PORT = "/admin/msg/task";
export const DOWNLOAD_PORT = "/admin/report/down";
export const CONFIG_PORT = SYSTEM_PORT + "/config";
export const SYS_CONFIG_PORT = SYSTEM_PORT + "/sysconfig";
export const RES_SOURCE_PORT = "/admin/resource";
/**
* @name 服务端口-视频
*/
export const VIDEO_PORT = ADMIN + "/video";
/**
* @name 服务端口-标签
*/
export const TAG_PORT = ADMIN + "/tag";
/**
* @name 服务端口-图册
*/
export const ATLAS_PORT = ADMIN + "/atlas";
/**
* @name 服务端口-小说
*/
export const NOVEL_PORT = ADMIN + "/novel";
/**
* @name 服务端口-漫画
*/
export const MANGA_PORT = ADMIN + "/manga";
/**
* @name 服务端口-TAG
*/
export const TAB_BATCH_PORT = ADMIN + "/tab";
/**
* @name 服务端口-APP用户列表
*/
export const MI_USER_PORT = ADMIN + "/miaouser";
/**
* @name 服务端口-视频反馈列表
*/
export const FEEDBACK_PORT = ADMIN + "/feedback";
/**
* @name 服务端口-搜索词管理
*/
export const SEARCH_PORT = ADMIN + "/search";
/**
* @name 服务端口-站点
*/
export const SITE_PORT = ADMIN + "/site";
/**
* @name 服务端口-推广等级
*/
export const SPREAD_PORT = ADMIN + "/spread";
/**
* @name 服务端口-分享管理
*/
export const SHARE_PORT = ADMIN + "/share";
/**
* @name 服务端口-邮箱管理
*/
export const EMAIL_PORT = ADMIN + "/email";
/**
* @name 服务端口-活动管理
*/
export const ACTIVITY_PORT = ADMIN + "/activity";
/**
* @name 服务端口-缓存管理
*/
export const CACHE_PORT = SYSTEM_PORT + "/cache";
/**
* @name 服务端口-财务管理
*/
//金币账户
export const FINANCE_PORT = ADMIN + "/finance";
export const ACCOUNT_PORT = FINANCE_PORT + "/account";
//VIP
export const RECHARGE_PORT = FINANCE_PORT + "/recharge";
export const ORDER_PORT = RECHARGE_PORT + "/order";
export const PACKAGE_PORT = RECHARGE_PORT + "/package";
//渠道
export const CHANNEL_PORT = ADMIN + "/channel";

View File

@@ -0,0 +1,47 @@
// ? 暂未使用,目前使用全局 Loading 来控制重复请求
import { CustomAxiosRequestConfig } from "../index";
import qs from "qs";
// 声明一个 Map 用于存储每个请求的标识 和 取消函数
let pendingMap = new Map<string, AbortController>();
// 序列化参数
export const getPendingUrl = (config: CustomAxiosRequestConfig) =>
[config.method, config.url, qs.stringify(config.data), qs.stringify(config.params)].join("&");
export class AxiosCanceler {
/**
* @description: 添加请求
* @param {Object} config
* @return void
*/
addPending(config: CustomAxiosRequestConfig) {
// 在请求开始前,对之前的请求做检查取消操作
this.removePending(config);
const url = getPendingUrl(config);
const controller = new AbortController();
config.signal = controller.signal;
pendingMap.set(url, controller);
}
/**
* @description: 移除请求
* @param {Object} config
*/
removePending(config: CustomAxiosRequestConfig) {
const url = getPendingUrl(config);
// 如果在 pending 中存在当前请求标识,需要取消当前请求
const controller = pendingMap.get(url);
controller && controller.abort();
}
/**
* @description: 清空所有pending
*/
removeAllPending() {
pendingMap.forEach(controller => {
controller && controller.abort();
});
pendingMap.clear();
}
}

View File

@@ -0,0 +1,43 @@
import { ElMessage } from "element-plus";
/**
* @description: 校验网络请求状态码
* @param {Number} status
* @return void
*/
export const checkStatus = (status: number) => {
switch (status) {
case 400:
ElMessage.error("请求失败!请您稍后重试");
break;
case 401:
ElMessage.error("登录失效!请您重新登录");
break;
case 403:
ElMessage.error("当前账号无权限访问!");
break;
case 404:
ElMessage.error("你所访问的资源不存在!");
break;
case 405:
ElMessage.error("请求方式错误!请您稍后重试");
break;
case 408:
ElMessage.error("请求超时!请您稍后重试");
break;
case 500:
ElMessage.error("服务异常!");
break;
case 502:
ElMessage.error("网关错误!");
break;
case 503:
ElMessage.error("服务不可用!");
break;
case 504:
ElMessage.error("网关超时!");
break;
default:
ElMessage.error("请求失败!");
}
};

110
src/api/index.ts Normal file
View File

@@ -0,0 +1,110 @@
import axios, { AxiosInstance, AxiosError, AxiosRequestConfig, InternalAxiosRequestConfig, AxiosResponse } from "axios";
import { showFullScreenLoading, tryHideFullScreenLoading } from "@/config/serviceLoading";
import { LOGIN_URL } from "@/config";
import { ElMessage } from "element-plus";
import { ResultData } from "@/api/interface";
import { ResultEnum } from "@/enums/httpEnum";
import { checkStatus } from "./helper/checkStatus";
import { useUserStore } from "@/stores/modules/user";
import router from "@/routers";
export interface CustomAxiosRequestConfig extends InternalAxiosRequestConfig {
noLoading?: boolean;
}
const config = {
// 默认地址请求地址,可在 .env.** 文件中修改
baseURL: import.meta.env.VITE_API_URL as string,
// 设置超时时间
timeout: ResultEnum.TIMEOUT as number
// 跨域时候允许携带凭证
// withCredentials: true
};
class RequestHttp {
service: AxiosInstance;
public constructor(config: AxiosRequestConfig) {
// instantiation
this.service = axios.create(config);
/**
* @description 请求拦截器
* 客户端发送请求 -> [请求拦截器] -> 服务器
* token校验(JWT) : 接受服务器返回的 token,存储到 vuex/pinia/本地储存当中
*/
this.service.interceptors.request.use(
(config: CustomAxiosRequestConfig) => {
const userStore = useUserStore();
// 当前请求不需要显示 loading在 api 服务中通过指定的第三个参数: { noLoading: true } 来控制
config.noLoading || showFullScreenLoading();
if (config.headers && typeof config.headers.set === "function") {
config.headers.set("admin-token", userStore.token);
}
return config;
},
(error: AxiosError) => {
return Promise.reject(error);
}
);
/**
* @description 响应拦截器
* 服务器换返回信息 -> [拦截统一处理] -> 客户端JS获取到信息
*/
this.service.interceptors.response.use(
(response: AxiosResponse) => {
const { data } = response;
const userStore = useUserStore();
tryHideFullScreenLoading();
// 登陆失效
if (data.code == ResultEnum.OVERDUE) {
userStore.setToken("");
router.replace(LOGIN_URL);
ElMessage.error(data.msg);
return Promise.reject(data);
}
// 全局错误信息拦截(防止下载文件的时候返回数据流,没有 code 直接报错)
if (data.code && data.code !== ResultEnum.SUCCESS) {
ElMessage.error(data.message);
return Promise.reject(data);
}
// 成功请求(在页面上除非特殊情况,否则不用处理失败逻辑)
return data;
},
async (error: AxiosError) => {
const { response } = error;
tryHideFullScreenLoading();
// 请求超时 && 网络错误单独判断,没有 response
if (error.message.indexOf("timeout") !== -1) ElMessage.error("请求超时!请您稍后重试");
if (error.message.indexOf("Network Error") !== -1) ElMessage.error("网络错误!请您稍后重试");
// 根据服务器响应的错误状态码,做不同的处理
if (response) checkStatus(response.status);
// 服务器结果都没有返回(可能服务器错误可能客户端断网),断网处理:可以跳转到断网页面
if (!window.navigator.onLine) router.replace("/500");
return Promise.reject(error);
}
);
}
/**
* @description 常用请求方法封装
*/
get<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {
return this.service.get(url, { params, ..._object });
}
post<T>(url: string, params?: object | string, _object = {}): Promise<ResultData<T>> {
return this.service.post(url, params, _object);
}
put<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {
return this.service.put(url, params, _object);
}
delete<T>(url: string, params?: any, _object = {}): Promise<ResultData<T>> {
return this.service.delete(url, { params, ..._object });
}
download(url: string, params?: object, _object = {}): Promise<BlobPart> {
return this.service.post(url, params, { ..._object, responseType: "blob" });
}
}
export default new RequestHttp(config);

View File

@@ -0,0 +1,30 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace DriveList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
a_id?: number;
}
// 删除接口
export interface delParams {
a_id?: string;
}
// 列表接口响应
export interface ResList {
a_id: number;
a_status: any;
code: any;
name: any;
config: any;
free_vip_day: any;
value: any;
description: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,33 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ManageList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
a_id?: number;
a_code: any;
a_name: any;
a_config: any;
a_status: any;
}
// 删除接口
export interface delParams {
a_id?: string;
}
// 列表接口响应
export interface ResList {
a_id: number;
a_code: any;
a_name: any;
a_config: any;
description: any;
value: any;
a_status: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,40 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ByList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
byrz_id?: number;
byrz_mingzi: string;
}
// 删除接口
export interface delParams {
byrz_id?: string;
}
// 列表接口响应
export interface ResList {
byrz_id?: number;
byrz_mingzi: string;
byrz_nianling: any;
byrz_juli: any;
byrz_dianhua: any;
byrz_shijian: any;
byrz_jieshao: any;
byrz_jieshao_01: any;
byrz_jieshao_02: any;
byrz_diqu: any;
byrz_dizhi: any;
byrz_type: any;
byrz_cover: any;
byrz_cover_url: any;
byrz_img_url: any;
byrz_source_code: any;
created_at: string;
name: any;
url: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,28 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ConfigList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ggpz_id?: number;
ggpz_code: string;
ggpz_val: string;
ggpz_description: string;
}
// 删除接口
export interface delParams {
ggpz_id?: string;
}
// 列表接口响应
export interface ResList {
ggpz_id?: number;
ggpz_code: string;
ggpz_val: string;
ggpz_description: string;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,26 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace GroupList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ggfz_id?: number;
ggfz_name: string;
ggfz_code: string;
}
// 删除接口
export interface delParams {
ggfz_id?: string;
}
// 列表接口响应
export interface ResList {
ggfz_id?: number;
ggfz_name: string;
ggfz_code: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,43 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace LfList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
lf_id?: number;
lf_mingzi: string;
}
// 删除接口
export interface delParams {
lf_id?: string;
}
// 列表接口响应
export interface ResList {
lf_id?: number;
lf_mingzi: string;
lf_avatar: any;
lf_avatar_url: any;
lf_nianling: any;
lf_shengao: any;
lf_tizhong: any;
lf_xiongwei: any;
lf_juli: any;
lf_dianhua: any;
lf_shijian: any;
lf_xiangmu: any;
lf_jieshao: any;
lf_diqu: any;
lf_dizhi: any;
lf_type: any;
lf_cover: any;
lf_cover_url: any;
lf_source_code: any;
created_at: string;
name: any;
url: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,102 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace adList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
gg_id?: number;
ggfz_id: any;
gg_lei_xing: any;
gg_tu_pian: any;
gg_wen_zi: any;
gg_tiao_zhuan_di_zhi: any;
}
// 删除接口
export interface delParams {
gg_id?: string;
}
// 列表接口响应
export interface ResList {
gg_id?: number;
ggfz_id: any;
gg_lei_xing: any;
gg_tu_pian: any;
gg_wen_zi: any;
gg_tiao_zhuan_di_zhi: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}
export namespace adList22 {
export interface List {
a_id: any; // 广告 ID
ag_id: string; // 广告分组 ID
at_content: any; // 广告分组 ID
a_title: string; // 广告标题
a_content: any; // 广告内容
a_status: any; // 是否显示:0=不显示,1=显示
created_at?: string; // 添加时间
updated_at?: string; // 更新时间
target: any;
link_type: any;
cover: any;
a_type: any;
at_id: any;
si_id: any;
column?: any;
to?: any;
from?: any;
source_si_id?: any;
target_si_id?: any;
a_description: any;
}
// 查询接口
export interface ReqParams extends ReqPage {
page: number;
limit: number;
key?: string;
}
export interface delParams {
a_id?: string;
}
export interface batchParams {
a_id?: string;
cover?: string;
a_title?: string;
target?: string;
link_type?: string;
}
export interface cloneParams {
source_si_id?: string;
target_si_id?: string;
}
export interface batchReplaceParams {
si_id?: string;
column?: string;
to?: string;
from?: string;
}
}
export namespace adTemplate {
export interface List {
at_id: number; // 广告模板 id
at_coce: string; // 广告模板分组编码
at_name: string; // 广告模板名称
at_description: string; // 广告模板描述
at_content: any; // 广告模板内容。如:风格等信息
created_at: string; // 添加时间
updated_at: string; // 更新时间
a_type: any;
}
// 查询接口
export interface ReqParams extends ReqPage {
page: number;
limit: number;
key?: string;
}
}

View File

@@ -0,0 +1,27 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace YxList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
yx_id?: number;
yx_ming_zi: string;
}
// 删除接口
export interface delParams {
yx_id?: string;
}
// 列表接口响应
export interface ResList {
yx_id?: number;
yx_ming_zi: any;
yx_tu_pian: any;
yx_lei_xing: any;
yx_tu_pian_url: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,26 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ZbList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
zb_id?: number;
}
// 删除接口
export interface delParams {
zb_id?: string;
}
// 列表接口响应
export interface ResList {
zb_id?: number;
zb_ming_zi: any;
zb_dan_mu: any;
zb_feng_mian_url: any;
zb_feng_mian: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,45 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ZyList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
gfzy_id?: number;
gfzy_mingzi: string;
}
// 删除接口
export interface delParams {
gfzy_id?: string;
}
// 列表接口响应
export interface ResList {
gfzy_id?: number;
gfzy_mingzi: string;
gfzy_avatar: any;
gfzy_img: any;
gfzy_nianling: any;
gfzy_shengao: any;
gfzy_tizhong: any;
gfzy_xiongwei: any;
gfzy_juli: any;
gfzy_dianhua: any;
gfzy_shijian: any;
gfzy_xiangmu: any;
gfzy_jieshao: any;
gfzy_diqu: any;
gfzy_dizhi: any;
gfzy_type: any;
gfzy_cover: any;
gfzy_cover_url: any;
gfzy_img_url: any;
gfzy_source_code: any;
gfzy_xingbie: any;
created_at: string;
name: any;
url: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,47 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace AtlasList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
at_id?: number;
at_name: string;
at_status: number;
at_wonderful_site_id: any;
at_recommend_site_id: any;
at_cover: string;
at_tag: any;
at_source: any;
}
// 删除接口
export interface delParams {
at_id?: string;
}
// 列表接口响应
export interface ResList {
at_id: number;
at_name: string;
at_status: any;
at_wonderful_site_id: any;
at_recommend_site_id: any;
at_wonderful_site_id_detail: any;
at_recommend_site_id_detail: any;
at_cover: any;
at_cover_code: any;
at_cover_edit: any;
at_cover_detail: any;
searchText: any;
at_tag: any;
at_tag_detail: any;
t_name: any;
at_source: any;
at_source_detail: any;
fm_id: any;
name: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,29 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ChannelStatisticsList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
csc_id: number;
csc_name: string;
csc_code: string;
csc_statistical_code: string;
}
// 删除接口
export interface delParams {
csc_id?: string;
}
// 列表接口响应
export interface ResList {
csc_id: number;
csc_name: string;
csc_code: string;
csc_statistical_code: string;
created_at: string;
updated_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,33 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ContentList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
ee_code?: string;
ee_id?: string;
}
// 保存接口
export interface saveParams {
ec_id?: number;
}
// 删除接口
export interface delParams {
ec_id?: string;
}
// 列表接口响应
export interface ResList {
ec_id: number;
ec_from: any;
ec_html: any;
ec_subject: any;
ec_text: any;
ec_to: any;
ec_date: any;
ee_code: any;
ee_id: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,27 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace EventList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ee_id?: number;
}
// 删除接口
export interface delParams {
ee_id?: string;
}
// 列表接口响应
export interface ResList {
ee_id: number;
ee_code: any;
ee_accept_email: any;
ee_content: string;
ee_describe: string;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,28 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace AccountList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
mu_id?: number;
}
// 删除接口
export interface delParams {
mu_id?: string;
}
// 列表接口响应
export interface ResList {
mu_id: string;
uf_balance: any;
mu_nickname: any;
mu_username: number;
mu_email: any;
mu_is_vip: any;
expire_vip_day: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,35 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace TransactionList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
}
// 保存接口
export interface saveParams {
ft_id?: number;
}
// 删除接口
export interface delParams {
ft_id?: string;
}
// 列表接口响应
export interface ResList {
ft_id: number;
mu_id: number;
ft_order_no: string;
tp_purpose_code: any;
ft_operation: any;
ft_amount: any;
ft_remaining_balance: any;
ft_description: string;
tp_purpose: any;
mu_nickname: any;
mu_username: any;
mu_email: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,36 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace FeedbackList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
}
// 保存接口
export interface saveParams {
rf_id?: number;
rf_state: any;
}
// 删除接口
export interface delParams {
rf_id?: string;
}
// 列表接口响应
export interface ResList {
rf_id: number;
vo_id: number;
rf_type: any;
rf_screenshot_detail: any;
rf_state: any;
vo_order_no: string;
vp_id: any;
vp_name: any;
rf_pay_time: any;
rf_description: string;
rf_contact: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,38 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace OrderList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
vo_status?: any;
created_at_start?: any;
created_at_end?: any;
}
// 保存接口
export interface saveParams {
vo_id?: number;
}
// 删除接口
export interface delParams {
vo_id?: string;
}
// 列表接口响应
export interface ResList {
vo_id: number;
mu_id: string;
vp_name: string;
vo_status: any;
vo_price: any;
vo_vip_day: number;
vo_order_no: number;
vo_out_order_no: string;
vo_out_channel_code: number;
vo_out_business_type: number;
vo_success_at: number;
mu_nickname: number;
mu_username: number;
mu_email: number;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,42 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace PackageList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
}
// 保存接口
export interface saveParams {
vp_id?: number;
vp_name: string;
vp_vip_day: any;
vp_status: any;
vp_tag_price: number;
vp_real_price: number;
vp_best_describe: string;
vp_icon: string;
package_sort: number;
}
// 删除接口
export interface delParams {
vp_id?: string;
}
// 列表接口响应
export interface ResList {
vp_id: number;
vp_name: string;
vp_vip_day: any;
vp_status: any;
vp_tag_price: number;
vp_real_price: number;
vp_best_describe: string;
vp_icon_detail: string;
vp_icon: any;
package_sort: any;
vp_sort: number;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

114
src/api/interface/index.ts Normal file
View File

@@ -0,0 +1,114 @@
// 请求响应参数不包含data
export interface Result {
code: string;
message: string;
}
// 请求响应参数包含data
export interface ResultData<T = any> extends Result {
data: T;
}
// 分页响应参数
export interface ResPage<T> {
item: T[];
items: T[];
page: number;
total: number;
limit: number;
total_pages: number;
}
// 分页请求参数
export interface ReqPage {
page: number;
limit: number;
}
// 分页请求参数
export interface type {
type: any;
}
// 文件上传模块
export namespace Upload {
export interface ResFileUrl {
fileUrl: string;
}
}
// 文件下载模块
export namespace Download {
export interface ResFileUrl {
type: number;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}
// 执行任务
export namespace Task {
export interface ResFileUrl {
msg_id: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}
// 登录模块
export namespace Login {
export interface ReqLoginForm {
au_name: string;
au_pwd: string;
}
export interface ResLogin {
admin_token: string;
}
export interface ResAuthButtons {
[key: string]: string[];
}
}
export namespace LogsList {
// 查询接口
export interface ReqParams extends ReqPage {
pr_name?: string;
}
// 列表接口响应
export interface ResList {
ol_id: number; // 否 ID
au_id: number; // 是 用户ID
au_name: string; // 是 用户名
ol_description: string; // 是 操作日志
c_id: number; // 是 公司id
created_at: string; // 是 添加时间
updated_at: string; // 否 更新时间
deleted_at: string; // 否 删除时间
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}
export namespace NoticeSetting {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ntt_code: string; // 是 通知类型编码
nt_status: number; // 是 是否启用,0=>否,1=>是
ta_id: string; // 是 使用的机器人ID
nt_tagged_users: string; // 是 需要@的人的名字
}
// 列表接口响应
export interface ResList {
ntt_id: number; // 否 通知类型模板ID
ntt_name: string; // 是 通知类型的名称
ntt_code: string; // 是 通知类型编码
nt_status: number; // 是 是否启用,0=>否,1=>是
ta_id: string; // 否 使用的机器人ID
telegram_account: any; // 是 使用的机器人详情
nt_tagged_users: string; // 是 需要@的人的名字
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,43 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ChapterList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
mhzj_id?: number;
mhxq_id: number;
mhzj_pai_xu: any;
mhzj_ming_zi: any;
mhzj_nei_rong: any;
mhzj_source_id: any;
mhzj_source_code: any;
}
export interface batchParams {
mhxq_id: number;
mhzj_id?: any;
}
// 删除接口
export interface delParams {
mhzj_id?: string;
}
// 列表接口响应
export interface ResList {
mhzj_id?: any;
mhxq_id: number;
mhzj_pai_xu: any;
mhzj_ming_zi: any;
mhzj_nei_rong: any;
mhzj_nei_rong_url: any;
mhzj_source_id: any;
mhzj_source_code: any;
cover_code: any;
created_at: string;
name: any;
url: any;
encrypted: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,25 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace fenLeiList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
mhfl_id?: number;
mhfl_ming_zi: string;
mhfl_source_code: any;
}
// 删除接口
export interface delParams {
mhfl_id?: string;
}
// 列表接口响应
export interface ResList {
mhfl_id: any;
mhfl_ming_zi: string;
mhfl_source_code: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,35 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace MangaList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
mhxq_id?: number;
}
// 删除接口
export interface delParams {
mhxq_id?: string;
}
// 列表接口响应
export interface ResList {
mhxq_id: number;
mhxq_ming_zi: any;
mhxq_cover: any;
mhfl_id: any;
mhxq_zuo_zhe: any;
mhxq_zhuang_tai: any;
mhxq_geng_xin_shi_jian: any;
mhxq_biao_qian: any;
mhxq_jian_jie: any;
mhxq_source_id: any;
mhxq_source_code: any;
created_at: string;
name: any;
url: any;
https_cover_url: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,47 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace MiUserList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
mu_status?: any;
mu_vip?: any;
mu_start_time?: any;
mu_end_time?: any;
si_id?: any;
}
// 保存接口
export interface saveParams {
mu_id?: number;
mu_name: string;
mu_nickname: string;
mu_status: any;
mu_email: string;
mu_pwd: string;
mu_referrer_id: any;
mu_vip_expired: any;
}
// 删除接口
export interface delParams {
mu_id?: string;
}
// 列表接口响应
export interface ResList {
mu_id: number;
si_id: any;
si_name: any;
mu_name: string;
mu_nickname: string;
mu_status: any;
mu_email: string;
mu_pwd: string;
mu_referrer_id: any;
mu_vip: any;
mu_email_verified: any;
mu_channel_code: any;
mu_channel_domain: any;
mu_avatar: any;
mu_vip_expired: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,30 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ChapterList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
xszj_id?: number;
xsxq_id: any;
xszj_nei_rong: any;
xszj_ming_zi: any;
xszj_pai_xu: any;
}
// 删除接口
export interface delParams {
xszj_id?: string;
}
// 列表接口响应
export interface ResList {
xszj_id?: number;
xsxq_id: any;
xszj_nei_rong: any;
xszj_ming_zi: any;
xszj_pai_xu: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,26 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace fenLeiList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
xsfl_id?: number;
xsfl_name: string;
xsfl_source_code: string;
}
// 删除接口
export interface delParams {
xsfl_id?: string;
}
// 列表接口响应
export interface ResList {
xsfl_id: any;
xsfl_name: any;
items: any;
xsfl_source_code: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,35 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace NovelList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: number;
}
// 保存接口
export interface saveParams {
n_id?: number;
n_name: string;
n_author: string;
n_cover: any;
n_tags: any;
n_source_id: any;
n_at_status: any;
n_slide_status: any;
n_type: any;
n_last_update: string;
}
// 删除接口
export interface delParams {
n_id?: string;
}
// 列表接口响应
export interface ResList {
xsxq_tag: any;
xsxq_id: any;
items: any;
https_cover_url: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,26 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace SearchGroupList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
sg_id?: number;
sg_name: string;
sg_order: number;
}
// 删除接口
export interface delParams {
sg_id?: string;
}
// 列表接口响应
export interface ResList {
sg_id: number;
sg_name: string;
sg_order: number;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,28 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace SearchKeyList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
sw_id?: number;
sw_title: string;
sw_status: string;
sw_html_path: string;
}
// 删除接口
export interface delParams {
sw_id?: string;
}
// 列表接口响应
export interface ResList {
sw_id?: number;
sw_title: any;
sw_status: any;
sw_html_path: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,25 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace LinkList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
sl_id?: number;
sl_link: any;
}
// 删除接口
export interface delParams {
sl_id?: string;
}
// 列表接口响应
export interface ResList {
sl_id: number;
sl_link: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,25 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace SpeechList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ss_id?: number;
ss_speech: any;
}
// 删除接口
export interface delParams {
ss_id?: string;
}
// 列表接口响应
export interface ResList {
ss_id: number;
ss_speech: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,66 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace SiteList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
}
// 保存接口
export interface saveParams {
si_id?: number;
si_code: string;
si_status: any;
si_name: any;
si_url: any;
si_cinema: any;
si_email: any;
si_retrieve_email: any;
si_website_bulletin: any;
si_customer_service: any;
si_retrieve_page: any;
si_logo_url: any;
si_logo: any;
si_route_url: any;
si_statistical_code: any;
si_guide_statistical_code: any;
si_group_chat_address: any;
si_cdn_url: any;
si_template: any;
si_jenkins_url: any;
}
// 删除接口
export interface delParams {
si_id?: string;
}
export interface buildParams {
si_jenkins_url?: string;
}
// 列表接口响应
export interface ResList {
si_id: number;
si_code: string;
si_status: any;
si_name: any;
si_url: any;
si_cinema: any;
si_email: any;
si_retrieve_email: any;
si_website_bulletin: any;
si_customer_service: any;
si_retrieve_page: any;
si_group_chat_address: any;
si_logo_url: any;
si_statistical_code: any;
si_guide_statistical_code: any;
si_logo: any;
si_route_url: any;
created_at: string;
si_cdn_url: any;
si_template: any;
si_deploy_site_jenkins: any;
si_deploy_landing_jenkins: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,28 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace GroupList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
sfg_id?: number;
sfg_name: string;
sfg_description: string;
}
// 删除接口
export interface delParams {
sfg_id?: string;
}
// 列表接口响应
export interface ResList {
sfg_id?: number;
sfg_name: string;
sfg_description: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,28 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace SubjectFomartList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
sf_id?: number;
sf_name: string;
sf_description: string;
}
// 删除接口
export interface delParams {
sf_id?: string;
}
// 列表接口响应
export interface ResList {
sf_id?: number;
sf_name: string;
sf_description: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,27 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace SpreadList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
rl_id?: number;
rl_level: any;
rl_commission_percentage: any;
}
// 删除接口
export interface delParams {
rl_id?: string;
}
// 列表接口响应
export interface ResList {
rl_id: number;
rl_level: any;
rl_commission_percentage: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,33 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ReferralList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
re_id?: string;
re_level?: string;
have_referral_people?: string;
}
// 保存接口
export interface saveParams {
mu_id?: number;
}
// 删除接口
export interface delParams {
mu_id?: string;
}
// 列表接口响应
export interface ResList {
mu_id: number;
mu_username: any;
mu_nickname: any;
rl_level: any;
re_referral_num: any;
re_recharge_amount: any;
re_commission_amount: any;
rl_commission_percentage: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,94 @@
import { ReqPage } from "@/api/interface/index";
export namespace adGroup {
export interface List {
ag_id: number; // 广告分组 id
at_id: number; // 广告模板
ag_code: string; // 广告分组编码
ag_name: string; // 广告分组名
created_at: string; // 添加时间
updated_at: string; // 更新时间
ag_description: string; // 更新时间
}
export interface saveParams {
ag_id: number;
ag_name: any;
ag_description: any;
}
// 查询接口
export interface ReqParams extends ReqPage {
page: number;
limit: number;
key?: string;
}
}
export namespace adList {
export interface List {
a_id: any; // 广告 ID
ag_id: string; // 广告分组 ID
at_content: any; // 广告分组 ID
a_title: string; // 广告标题
a_content: any; // 广告内容
a_status: any; // 是否显示:0=不显示,1=显示
created_at?: string; // 添加时间
updated_at?: string; // 更新时间
target: any;
link_type: any;
cover: any;
a_type: any;
at_id: any;
si_id: any;
column?: any;
to?: any;
from?: any;
source_si_id?: any;
target_si_id?: any;
a_description: any;
}
// 查询接口
export interface ReqParams extends ReqPage {
page: number;
limit: number;
key?: string;
}
export interface delParams {
a_id?: string;
}
export interface batchParams {
a_id?: string;
cover?: string;
a_title?: string;
target?: string;
link_type?: string;
}
export interface cloneParams {
source_si_id?: string;
target_si_id?: string;
}
export interface batchReplaceParams {
si_id?: string;
column?: string;
to?: string;
from?: string;
}
}
export namespace adTemplate {
export interface List {
at_id: number; // 广告模板 id
at_coce: string; // 广告模板分组编码
at_name: string; // 广告模板名称
at_description: string; // 广告模板描述
at_content: any; // 广告模板内容。如:风格等信息
created_at: string; // 添加时间
updated_at: string; // 更新时间
a_type: any;
}
// 查询接口
export interface ReqParams extends ReqPage {
page: number;
limit: number;
key?: string;
}
}

View File

@@ -0,0 +1,32 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace adminUserList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
au_name: number; // Y 用户名
ar_id: number; // Y 角色ID
au_id?: number; // N 用户id[提交修改,不提交新增]
au_pwd: string; // N 用户密码
c_id: number; // N 公司id[超级管理员/总公司设置用户必须传送c_id也就是公司]
}
// 删除接口
export interface delParams {
au_id?: string;
}
// 列表接口响应
export interface ResList {
au_id: number; // Y 用户id
au_name: string; // Y 用户名
ar_id: number; // Y 角色ID
c_id: number; // Y 公司ID
created_at: string; // Y 添加时间
updated_at: string; // Y 更新时间
au_pwd: string; //
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,31 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace BotSetting {
// 查询接口
export interface ReqParams extends ReqPage {
pr_name?: string;
}
// 保存接口
export interface saveParams {
ta_id?: number; // 否 ID ,有则修改,无则新增
ta_name: string; // 是 机器人名字
ta_token: string; // 是 机器人TOKEN
ta_chat_id: string; // 是 机器人群ID
}
// 删除接口
export interface delParams {
ta_id?: string;
}
// 列表接口响应
export interface ResList {
ta_id: number; // 否 ID
ta_name: string; // 是 机器人名字
ta_token: string; // 是 机器人TOKEN
ta_chat_id: string; // 是 机器人群ID
c_id: number; // 是 公司id
created_at: string; // 是 添加时间
updated_at: string; // 否 更新时间
deleted_at: string; // 否 删除时间
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,23 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace EsList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
}
// 保存接口
export interface saveParams {
index_name: any;
}
// 删除接口
export interface delParams {}
// 列表接口响应
export interface ResList {
index: any;
name: any;
index_name: any;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,33 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ManageList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
key: any;
}
// 删除接口
export interface delParams {
key?: any;
cache_tag?: any;
}
// 列表接口响应
export interface ResList {
key: any;
suffix: any;
prefix: any;
cache_tag: any;
value: any;
name: any;
cache_tag_name: any;
item: any;
p_tag: any;
p_id: any;
children: any;
length: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,41 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace Company {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
c_id?: number;
c_superpower: number;
c_code: string;
c_name: string;
c_sign_key: string;
c_notify_url: string;
c_withdrawal_rate?: number; //int 是 提现费率
c_min_withdrawal_amount?: number; //int 是 起提金额
c_free_withdrawal_amount?: number; //int 是 免手续费提现金额
}
// 删除接口
export interface delParams {
c_id?: string;
}
// 列表接口响应
export interface ResList {
c_id: number; // Y id
c_superpower: number; // Y 是否拥有所有数据权限0=否,1=是
c_code: string; // Y 公司编码
c_name: string; // Y 公司名称
c_init_user: string; // Y 创建时间
c_init_pwd: string; // Y 更新时间
created_at: string; // Y
updated_at: string; // Y
c_sign_key?: string; // Y
c_notify_url?: string; // Y
c_withdrawal_rate?: number; //int 是 提现费率
c_min_withdrawal_amount?: number; //int 是 起提金额
c_free_withdrawal_amount?: number; //int 是 免手续费提现金额
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,27 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace ConfigList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
sc_id?: number;
sc_code: string;
sc_val: string;
sc_description: string;
}
// 删除接口
export interface delParams {
sc_id: string;
}
// 列表接口响应
export interface ResList {
sc_id: number;
sc_code: string;
sc_val: string;
sc_description: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,24 @@
// import { ReqPage, ResultData } from "@/api/interface/index";
import { ReqPage } from "@/api/interface/index";
export namespace Endpoint {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
export interface saveParams {
zydd_id?: number;
zydd_domain: any;
}
// 列表接口响应
export interface List {
zydd_id: number;
zydd_domain: any;
zydd_ming_zi: any;
zydd_code: any;
created_at: string;
}
export interface delParams {
zydd_id?: string;
}
}

View File

@@ -0,0 +1,23 @@
// import { ReqPage, ResultData } from "@/api/interface/index";
import { ReqPage } from "@/api/interface/index";
export namespace EndpointGroup {
// 列表接口响应
export interface List {
reg_id: number; // 资源端点分组 ID
reg_code: string; // 资源端点分组编码
reg_name: string; // 资源端点分组名称
reg_description: string;
created_at: string; // 添加时间
updated_at: string; // 更新时间
}
// 查询接口
export interface ReqParams extends ReqPage {
page: number;
limit: number;
key?: string;
}
export interface delParams {
reg_id?: string;
}
}

View File

@@ -0,0 +1,27 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace GatherList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
cjpz_id: any;
cjpz_val: string;
cjpz_code: string;
}
// 删除接口
export interface delParams {
cjpz_id?: string;
}
// 列表接口响应
export interface ResList {
cjpz_id: number;
cjpz_val: string;
cjpz_code: any;
cjpz_description: string;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,21 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace LogsList {
// 查询接口
export interface ReqParams extends ReqPage {
pr_name?: string;
}
// 列表接口响应
export interface ResList {
ol_id: number; // 否 ID
au_id: number; // 是 用户ID
au_name: string; // 是 用户名
ol_description: string; // 是 操作日志
c_id: number; // 是 公司id
created_at: string; // 是 添加时间
updated_at: string; // 否 更新时间
deleted_at: string; // 否 删除时间
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,36 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace NodeList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
an_id: number;
an_name: string;
an_code: string;
an_is_dir: number;
an_pid: number;
an_is_hidden: number;
}
// 删除接口
export interface delParams {
an_id?: string;
}
// 列表接口响应
export interface ResList {
id: number;
an_id: number;
an_pid: number;
an_name: string;
an_code: string;
label: string;
an_is_dir: number;
an_is_hidden: number;
created_at: number;
children: ResList[];
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,30 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace NoticeSetting {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ntt_code: string; // 是 通知类型编码
nt_status: number; // 是 是否启用,0=>否,1=>是
ta_id: string; // 是 使用的机器人ID
nt_tagged_users: string; // 是 需要@的人的名字
}
// 删除接口
// export interface delParams {
// ta_id?: string;
// }
// 列表接口响应
export interface ResList {
ntt_id: number; // 否 通知类型模板ID
ntt_name: string; // 是 通知类型的名称
ntt_code: string; // 是 通知类型编码
nt_status: number; // 是 是否启用,0=>否,1=>是
ta_id: any; // 否 使用的机器人ID
telegram_account: any; // 是 使用的机器人详情
nt_tagged_users: string; // 是 需要@的人的名字
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,32 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace RoleList {
export interface ListReq extends ReqPage {}
export interface ListResp {
ar_id: number;
an_id?: string;
ar_name: string;
created_at: string;
updated_at: string;
admin_role_node: admin_role_node[];
an_ids: string;
}
export interface CreateReq {
ar_name: string;
ar_id: number;
an_id: string;
}
export interface CreateResp extends ResultData {}
export interface DeleteReq {
ar_id: string;
}
export interface admin_role_node {
an_id: number;
ar_id: number;
}
export interface DeleteResp extends ResultData {}
}

View File

@@ -0,0 +1,34 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace taskPlan {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
pt_enable: number; // Y 任务开关,0=关闭,1=开启
pt_limit: number; // Y 任务频率,单位:秒
pt_id?: number; // Y ID
pt_name: any;
}
// 删除接口
export interface delParams {
pt_id?: string;
}
// 列表接口响应
export interface ResList {
pt_id: number; // Y id
pt_enable: any; // Y 任务开关,0=关闭,1=开启
pt_limit?: any | undefined; // Y 任务频率
created_at: any; // Y 创建时间
pt_name: any;
pt_last_exec: any;
}
// map接口
export interface ResMap {
p_id: number;
p_name: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,30 @@
interface AdminRoleNode {
an_id: number;
an_pid: number;
an_name: string;
an_code: string;
//children?: AdminRoleNode[];
children?: AdminRoleNode[] | undefined;
}
export interface AdminRole {
admin_role_node: AdminRoleNode;
an_id: number;
ar_id: number;
an_name: string;
}
export interface WebRoute {
path: string;
name: string;
component?: string;
meta: {
an_id?: number;
icon: string;
title: string;
isLink: string;
isHide: boolean;
isFull: boolean;
isAffix: boolean;
isKeepAlive: boolean;
};
children?: WebRoute[];
}

View File

@@ -0,0 +1,44 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace TabList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
}
// 保存接口
export interface saveParams {
tab_id?: number;
tab_name: string;
tab_code: string;
tab_iframe_url: string;
tab_open_mode: any;
tab_tag_status: any;
tab_tag_type: any;
tab_tag: any;
tab_icon: any;
tab_highlight_icon: any;
tab_order: number;
}
// 删除接口
export interface delParams {
tab_id?: string;
}
// 列表接口响应
export interface ResList {
tab_id: number;
tab_name: string;
tab_code: string;
tab_iframe_url: string;
tab_open_mode: any;
tab_tag_detail: any;
tab_tag_status: any;
tab_tag_type: any;
tab_tag: any;
tab_icon: any;
tab_highlight_icon: any;
searchText: any;
tab_order: number;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,40 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace TagList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
t_type?: any;
t_hidden?: any;
}
// 保存接口
export interface saveParams {
t_id?: number;
t_name: string;
t_hidden: number;
t_type: number;
t_order: number;
t_logo: string;
t_probability: any;
}
export interface batchParams {
t_id?: number;
t_probability: any;
}
// 删除接口
export interface delParams {
t_id?: string;
}
// 列表接口响应
export interface ResList {
t_id: any;
t_name: string;
t_hidden: any;
t_type: number;
t_order: number;
t_logo: string;
created_at: string;
t_probability: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,28 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace fenLeiList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
fl_id?: number;
fl_mingzi: string;
fl_leixing: any;
}
// 删除接口
export interface delParams {
fl_id?: string;
}
// 列表接口响应
export interface ResList {
fl_id: any;
fl_mingzi: any;
items: any;
fl_leixing: any;
fl_pid: any;
children: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,41 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace VideoList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
sp_is_vip?: string;
fl_id?: string;
}
// 保存接口
export interface saveParams {
sp_id?: number;
sp_name: string;
sp_fengmian: any;
}
export interface batchParams {
sp_id?: any;
v_wonderful_site_id: any;
v_recommend_site_id: any;
}
// 删除接口
export interface delParams {
sp_id?: string;
}
// 列表接口响应
export interface ResList {
sp_id: any;
sp_name: string;
fl_id: any;
sp_fangwen: any;
sp_fengmian: any;
sp_biaoqian: any;
sp_is_vip: any;
sp_fengmian_url: any;
sp_shichang: any;
sp_source_code: any;
created_at: any;
message: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,24 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace nvYouList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
}
// 保存接口
export interface saveParams {
ny_id?: number;
}
// 删除接口
export interface delParams {
ny_id?: string;
}
// 列表接口响应
export interface ResList {
ny_id: any;
ny_cover_url: any;
ny_pinyin: any;
ny_name: any;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,34 @@
import { ReqPage, ResultData } from "@/api/interface/index";
export namespace videoFeedbackList {
// 查询接口
export interface ReqParams extends ReqPage {
key?: string;
vf_reason?: any;
}
// 保存接口
export interface saveParams {
vf_id?: number;
v_name: string;
mu_name: number;
vf_status: any;
vf_reason: string;
vf_remarks: number;
}
// 删除接口
export interface delParams {
vf_id?: string;
}
// 列表接口响应
export interface ResList {
vf_id: number;
v_name: string;
mu_name: number;
vf_status: any;
vf_reason: string;
vf_ip: string;
vf_remarks: number;
created_at: string;
}
// 保存删除响应接口
export interface ResData extends ResultData {}
}

View File

@@ -0,0 +1,23 @@
import { ResPage, ResultData } from "@/api/interface/index";
import { DriveList } from "@/api/interface/activity/drive";
import { ACTIVITY_PORT } from "@/api/config/servicePort";
import http from "@/api";
/**
* @name 活动列表
*/
export const getList = (params: DriveList.ReqParams) => {
return http.get<ResPage<DriveList.ResList>>(ACTIVITY_PORT + `/drive/list`, params);
};
/**
* @name 设置活动
*/
export const saveData = (params: DriveList.saveParams) => {
return http.post<ResPage<ResultData>>(ACTIVITY_PORT + `/manage/save`, params);
};
/**
* @name 删除活动
*/
export const deleteItem = (params: DriveList.delParams) => {
return http.post<ResPage<ResultData>>(ACTIVITY_PORT + `/drive/del`, params);
};

View File

@@ -0,0 +1,23 @@
import { ResPage, ResultData } from "@/api/interface/index";
import { ManageList } from "@/api/interface/activity/manage";
import { ACTIVITY_PORT } from "@/api/config/servicePort";
import http from "@/api";
/**
* @name 分享链接列表
*/
export const getList = (params: ManageList.ReqParams) => {
return http.get<ResPage<ManageList.ResList>>(ACTIVITY_PORT + `/manage/list`, params);
};
/**
* @name 设置分享链接
*/
export const saveData = (params: ManageList.saveParams) => {
return http.post<ResPage<ResultData>>(ACTIVITY_PORT + `/manage/save`, params);
};
/**
* @name 删除分享链接
*/
export const deleteItem = (params: ManageList.delParams) => {
return http.post<ResPage<ResultData>>(ACTIVITY_PORT + `/manage/del`, params);
};

11
src/api/modules/ad/by.ts Normal file
View File

@@ -0,0 +1,11 @@
import { ResPage } from "@/api/interface/index";
import { ByList } from "@/api/interface/ad/by";
import http from "@/api";
import { getGuangGaoBaoYangRuZhuListApiUrl } from "@/api/config";
/**
* @name 广告列表 -- by
*/
export const ListApi = (params: ByList.ReqParams) => {
return http.get<ResPage<ByList.ResList>>(getGuangGaoBaoYangRuZhuListApiUrl, params);
};

View File

@@ -0,0 +1,29 @@
import { ResPage, ResultData } from "@/api/interface/index";
import { ConfigList } from "@/api/interface/ad/config";
import { getGuangGaoGgpzListApiUrl, getGuangGaoGgpzSaveApiUrl } from "@/api/config";
import http from "@/api";
/**
* @name 广告配置列表
*/
export const getList = (params: ConfigList.ReqParams) => {
return http.get<ResPage<ConfigList.ResList>>(getGuangGaoGgpzListApiUrl, params);
};
export const getAllList = () => {
return http.get<ResPage<ConfigList.ResList>>(getGuangGaoGgpzListApiUrl, { limit: 1000, page: 1 });
};
/**
* @name 设置广告配置
*/
export const saveData = (params: ConfigList.saveParams) => {
return http.post<ResPage<ResultData>>(getGuangGaoGgpzSaveApiUrl, params);
};
/**
/**
* @name 删除广告配置
*/
export const deleteItem = (params: ConfigList.delParams) => {
return http.post<ResPage<ResultData>>(getGuangGaoGgpzSaveApiUrl, params);
};

View File

@@ -0,0 +1,36 @@
import { ResPage, ResultData } from "@/api/interface/index";
import { GroupList } from "@/api/interface/ad/group";
import { getGuangGaoMainGroupListApiUrl, getGuangGaoMainGroupSaveApiUrl, getGuangGaoMainGroupDelApiUrl } from "@/api/config";
import http from "@/api";
/**
* @name 广告分组列表
*/
export const getList = (params: GroupList.ReqParams) => {
return http.get<ResPage<GroupList.ResList>>(getGuangGaoMainGroupListApiUrl, params);
};
export const getAllList = () => {
return http.get<ResPage<GroupList.ResList>>(getGuangGaoMainGroupListApiUrl, { limit: 1000, page: 1 });
};
/**
* @name 设置广告分组
*/
export const saveData = (params: GroupList.saveParams) => {
return http.post<ResPage<ResultData>>(getGuangGaoMainGroupSaveApiUrl, params);
};
/**
/**
* @name 删除广告分组
*/
export const deleteItem = (params: GroupList.delParams) => {
return http.post<ResPage<ResultData>>(getGuangGaoMainGroupDelApiUrl, params);
};
/**
* @name 广告分组列表--全部数据
*/
export const adGroupAllListApi = () => {
return http.get(getGuangGaoMainGroupListApiUrl, { page: 1, limit: 365 });
};

11
src/api/modules/ad/lf.ts Normal file
View File

@@ -0,0 +1,11 @@
import { ResPage } from "@/api/interface/index";
import { LfList } from "@/api/interface/ad/lf";
import http from "@/api";
import { getGuangGaoLouFengListApiUrl } from "@/api/config";
/**
* @name 广告列表 -- lf
*/
export const ListApi = (params: LfList.ReqParams) => {
return http.get<ResPage<LfList.ResList>>(getGuangGaoLouFengListApiUrl, params);
};

Some files were not shown because too many files have changed in this diff Show More