refactor: 悦码项目重构
8
.env
Normal file
@ -0,0 +1,8 @@
|
||||
# 项目名称
|
||||
VITE_APP_TITLE = Admin
|
||||
|
||||
# 公共基础路径, 详见: https://cn.vitejs.dev/guide/build.html#public-base-path
|
||||
VITE_BASE_URL = /
|
||||
|
||||
# enable mock in production
|
||||
VITE_MOCK_IN_PROD = true
|
11
.gitattributes
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# https://docs.github.com/cn/get-started/getting-started-with-git/configuring-git-to-handle-line-endings
|
||||
|
||||
# Automatically normalize line endings (to LF) for all text-based files.
|
||||
* text=auto eol=lf
|
||||
|
||||
# Declare files that will always have CRLF line endings on checkout.
|
||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.{ico,png,jpg,jpeg,gif,webp,svg,woff,woff2} binary
|
41
.gitignore
vendored
@ -1,25 +1,38 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
.cache
|
||||
.turbo
|
||||
.nx
|
||||
.nx/cache
|
||||
|
||||
tests/server/static
|
||||
tests/server/static/upload
|
||||
|
||||
.local
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
.eslintcache
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
*pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
# .vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
localSet.js
|
||||
|
||||
# auto generate file
|
||||
types/auto-imports.d.ts
|
||||
types/components.d.ts
|
||||
|
||||
# Turbo
|
||||
.turbo
|
||||
|
24
.npmrc
@ -1,6 +1,22 @@
|
||||
# 默认使用淘宝镜像源
|
||||
registry=https://registry.npmmirror.com/
|
||||
|
||||
# 公司私有源配置
|
||||
# 使用淘宝镜像源
|
||||
registry = https://registry.npmmirror.com
|
||||
@sy:registry=http://sy-registry.shiyue.com
|
||||
|
||||
# 根据需要提升含有以下的依赖包到根 node_modules 目录下
|
||||
public-hoist-pattern[]=husky
|
||||
public-hoist-pattern[]=*eslint*
|
||||
public-hoist-pattern[]=@eslint*
|
||||
public-hoist-pattern[]=*prettier*
|
||||
public-hoist-pattern[]=lint-staged
|
||||
public-hoist-pattern[]=*stylelint*
|
||||
public-hoist-pattern[]=@commitlint*
|
||||
public-hoist-pattern[]=core-js
|
||||
|
||||
# 提升所有依赖到根 node_modules 目录下,相当于 public-hoist-pattern[]=*,与上面一种方式一般二选一使用
|
||||
# 极不推荐用这样的方式解决依赖问题,这样没有充分利用 pnpm 依赖访问安全性的优势,又走回了 npm / yarn 的老路。
|
||||
# shamefully-hoist=true
|
||||
|
||||
enable-pre-post-scripts=true
|
||||
engine-strict=true
|
||||
package-manager-strict=false
|
||||
strict-peer-dependencies=false
|
7
.vscode/extensions.json
vendored
@ -1,7 +0,0 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"Vue.volar",
|
||||
"Vue.vscode-typescript-vue-plugin",
|
||||
"dbaeumer.vscode-eslint"
|
||||
]
|
||||
}
|
9
apps/designer/.editorconfig
Normal file
@ -0,0 +1,9 @@
|
||||
[*.{js, jsx, ts, tsx, vue, mjs}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
ij_javascript_spaces_within_imports = true
|
||||
ij_html_do_not_indent_children_of_tags = html, body, thead, tbody, tfoot, script
|
||||
ij_javascript_space_before_function_left_parenth = true
|
||||
ij_javascript_use_semicolon_after_statement = true
|
33
apps/designer/.gitignore
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
.DS_Store
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
.history
|
||||
|
||||
# Project
|
||||
package-lock.json
|
||||
yarn-lock.json
|
||||
pnpm-lock.yaml
|
||||
tsconfig.tsbuildinfo
|
||||
node_modules
|
||||
coverage
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
.vtj/logs
|
||||
.vtj/histories
|
15
apps/designer/.npmrc
Normal file
@ -0,0 +1,15 @@
|
||||
registry = https://registry.npmmirror.com
|
||||
@sy:registry=http://sy-registry.shiyue.com
|
||||
|
||||
|
||||
# 根据需要提升含有以下的依赖包到根 node_modules 目录下
|
||||
# public-hoist-pattern[]=core-js
|
||||
# public-hoist-pattern[]=*@vtj*
|
||||
|
||||
# 提升所有依赖到根 node_modules 目录下,相当于 public-hoist-pattern[]=*,与上面一种方式一般二选一使用
|
||||
# 极不推荐用这样的方式解决依赖问题,这样没有充分利用 pnpm 依赖访问安全性的优势,又走回了 npm / yarn 的老路。
|
||||
# shamefully-hoist=true
|
||||
|
||||
enable-pre-post-scripts=true
|
||||
engine-strict=true
|
||||
package-manager-strict=false
|
20
apps/designer/.prettierrc
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"arrowParens": "always",
|
||||
"bracketSpacing": true,
|
||||
"bracketSameLine": true,
|
||||
"endOfLine": "lf",
|
||||
"htmlWhitespaceSensitivity": "css",
|
||||
"insertPragma": false,
|
||||
"jsxBracketSameLine": true,
|
||||
"jsxSingleQuote": true,
|
||||
"printWidth": 80,
|
||||
"proseWrap": "preserve",
|
||||
"quoteProps": "as-needed",
|
||||
"requirePragma": false,
|
||||
"semi": true,
|
||||
"singleQuote": true,
|
||||
"tabWidth": 2,
|
||||
"trailingComma": "none",
|
||||
"useTabs": false,
|
||||
"vueIndentScriptAndStyle": false
|
||||
}
|
5
apps/designer/.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"vue.volar"
|
||||
]
|
||||
}
|
19
apps/designer/.vtj/files/45t7j3xqi.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "Test",
|
||||
"locked": false,
|
||||
"inject": [],
|
||||
"state": {},
|
||||
"lifeCycles": {},
|
||||
"methods": {},
|
||||
"computed": {},
|
||||
"watch": [],
|
||||
"css": "",
|
||||
"props": [],
|
||||
"emits": [],
|
||||
"slots": [],
|
||||
"dataSources": {},
|
||||
"__VTJ_BLOCK__": true,
|
||||
"__VERSION__": "1739842497674",
|
||||
"id": "45t7j3xqi",
|
||||
"nodes": []
|
||||
}
|
13288
apps/designer/.vtj/materials/@sy/low-code-designer.json
Normal file
176
apps/designer/.vtj/projects/@sy/low-code-designer.json
Normal file
@ -0,0 +1,176 @@
|
||||
{
|
||||
"__VTJ_PROJECT__": true,
|
||||
"id": "@sy/low-code-designer",
|
||||
"platform": "web",
|
||||
"name": "低代码编辑器",
|
||||
"homepage": "",
|
||||
"description": "低代码编辑器",
|
||||
"dependencies": [
|
||||
{
|
||||
"package": "vue",
|
||||
"version": "latest",
|
||||
"library": "Vue",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/vue/vue.global.prod.js"
|
||||
],
|
||||
"assetsLibrary": "VueMaterial",
|
||||
"required": true,
|
||||
"official": true,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"package": "vue-router",
|
||||
"version": "latest",
|
||||
"library": "VueRouter",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/vue-router/vue-router.global.prod.js"
|
||||
],
|
||||
"assetsLibrary": "VueRouterMaterial",
|
||||
"required": true,
|
||||
"official": true,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"package": "@vtj/utils",
|
||||
"version": "latest",
|
||||
"library": "VtjUtils",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/@vtj/utils/index.umd.js"
|
||||
],
|
||||
"required": true,
|
||||
"official": true,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"package": "@vtj/icons",
|
||||
"version": "latest",
|
||||
"library": "VtjIcons",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/@vtj/icons/style.css",
|
||||
"@vtj/materials/deps/@vtj/icons/index.umd.js"
|
||||
],
|
||||
"required": true,
|
||||
"official": true,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"package": "@vueuse/core",
|
||||
"version": "latest",
|
||||
"library": "VueUse",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/@vueuse/shared/index.iife.min.js",
|
||||
"@vtj/materials/deps/@vueuse/core/index.iife.min.js"
|
||||
],
|
||||
"required": false,
|
||||
"official": true,
|
||||
"enabled": true,
|
||||
"platform": [
|
||||
"web",
|
||||
"h5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"package": "element-plus",
|
||||
"version": "latest",
|
||||
"library": "ElementPlus",
|
||||
"localeLibrary": "ElementPlusLocaleZhCn",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/element-plus/dark/css-vars.css",
|
||||
"@vtj/materials/deps/element-plus/index.css",
|
||||
"@vtj/materials/deps/element-plus/zh-cn.js",
|
||||
"@vtj/materials/deps/element-plus/index.full.min.js"
|
||||
],
|
||||
"assetsUrl": "@vtj/materials/assets/element/index.umd.js",
|
||||
"assetsLibrary": "ElementPlusMaterial",
|
||||
"required": false,
|
||||
"official": true,
|
||||
"enabled": true,
|
||||
"platform": "web"
|
||||
},
|
||||
{
|
||||
"package": "@vtj/ui",
|
||||
"version": "latest",
|
||||
"library": "VtjUI",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/vxe-table/style.min.css",
|
||||
"@vtj/materials/deps/@vtj/ui/style.css",
|
||||
"@vtj/materials/deps/xe-utils/xe-utils.umd.min.js",
|
||||
"@vtj/materials/deps/vxe-table/index.umd.min.js",
|
||||
"@vtj/materials/deps/@vtj/ui/index.umd.js"
|
||||
],
|
||||
"assetsUrl": "@vtj/materials/assets/ui/index.umd.js",
|
||||
"assetsLibrary": "VtjUIMaterial",
|
||||
"required": false,
|
||||
"official": true,
|
||||
"enabled": false,
|
||||
"platform": "web"
|
||||
},
|
||||
{
|
||||
"package": "ant-design-vue",
|
||||
"version": "latest",
|
||||
"library": "antd",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/ant-design-vue/reset.css",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/dayjs.min.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/customParseFormat.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/weekday.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/localeData.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/weekOfYear.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/weekYear.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/advancedFormat.js",
|
||||
"@vtj/materials/deps/ant-design-vue/dayjs/plugin/quarterOfYear.js",
|
||||
"@vtj/materials/deps/ant-design-vue/antd.min.js"
|
||||
],
|
||||
"assetsUrl": "@vtj/materials/assets/antdv/index.umd.js",
|
||||
"assetsLibrary": "AntdvMaterial",
|
||||
"required": false,
|
||||
"official": true,
|
||||
"enabled": false,
|
||||
"platform": [
|
||||
"web"
|
||||
]
|
||||
},
|
||||
{
|
||||
"package": "@vtj/charts",
|
||||
"version": "latest",
|
||||
"library": "VtjCharts",
|
||||
"urls": [
|
||||
"@vtj/materials/deps/echarts/echarts.min.js",
|
||||
"@vtj/materials/deps/@vtj/charts/index.umd.js"
|
||||
],
|
||||
"assetsUrl": "@vtj/materials/assets/charts/index.umd.js",
|
||||
"assetsLibrary": "VtjChartsMaterial",
|
||||
"required": false,
|
||||
"official": true,
|
||||
"enabled": false,
|
||||
"platform": [
|
||||
"web",
|
||||
"h5"
|
||||
]
|
||||
}
|
||||
],
|
||||
"pages": [
|
||||
{
|
||||
"dir": false,
|
||||
"name": "Test",
|
||||
"title": "1",
|
||||
"icon": "",
|
||||
"mask": true,
|
||||
"hidden": false,
|
||||
"raw": false,
|
||||
"pure": false,
|
||||
"meta": "",
|
||||
"cache": false,
|
||||
"id": "45t7j3xqi",
|
||||
"type": "page"
|
||||
}
|
||||
],
|
||||
"blocks": [],
|
||||
"apis": [],
|
||||
"meta": [],
|
||||
"config": {
|
||||
"title": "",
|
||||
"themeSwitchable": false
|
||||
},
|
||||
"__BASE_PATH__": "/"
|
||||
}
|
4
apps/designer/env.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"PORTAL_HOST": "sso-sit.newpearl.com",
|
||||
"PORTAL_HOST_I": "soi-sit.newpearl.com"
|
||||
}
|
1
apps/designer/env.local.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
apps/designer/env.sit.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
1
apps/designer/env.uat.json
Normal file
@ -0,0 +1 @@
|
||||
{}
|
18
apps/designer/index.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="shortcut icon" href="/logo.svg" type="image/x-icon" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta
|
||||
http-equiv="Cache-Control"
|
||||
content="no-cache, no-store, must-revalidate" />
|
||||
<meta http-equiv="Pragma" content="no-cache" />
|
||||
<meta http-equiv="Expires" content="0" />
|
||||
<title>VTJ Web Project Template</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="low-code-designer"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
35
apps/designer/package.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "@sy/low-code-designer",
|
||||
"description": "低代码编辑器",
|
||||
"private": true,
|
||||
"version": "1.0.0-1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "cross-env ENV_TYPE=local vite",
|
||||
"build": "npm run build:prod",
|
||||
"build:sit": "vue-tsc && cross-env ENV_TYPE=sit vite build",
|
||||
"build:uat": "vue-tsc && cross-env ENV_TYPE=uat vite build",
|
||||
"build:pre": "vue-tsc && cross-env ENV_TYPE=pre vite build",
|
||||
"build:prod": "cross-env ENV_TYPE=live vite build",
|
||||
"preview": "vite preview",
|
||||
"clean:lock": "rimraf pnpm-lock.yaml && rimraf package.lock.json",
|
||||
"clean:lib": "rimraf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vtj/materials": "^0.9.30",
|
||||
"@vtj/renderer": "^0.9.30",
|
||||
"@vtj/ui": "^0.9.30",
|
||||
"@vtj/web": "^0.9.30",
|
||||
"element-plus": "^2.9.4",
|
||||
"vue": "~3.5.13",
|
||||
"vue-router": "~4.5.0",
|
||||
"core-js": "^3.40.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sy/vite-plugin-http2-proxy": "workspace:*",
|
||||
"@vtj/cli": "^0.9.8",
|
||||
"@vtj/local": "^0.9.30",
|
||||
"vite": "6.1.0",
|
||||
"vite-plugin-mkcert": "^1.17.6"
|
||||
}
|
||||
}
|
7
apps/designer/proxy.config.ts
Normal file
@ -0,0 +1,7 @@
|
||||
export default {
|
||||
'/api': {
|
||||
target: 'https://sso-sit.newpearl.com',
|
||||
changeOrigin: true,
|
||||
ws: true
|
||||
}
|
||||
};
|
BIN
apps/designer/public/favicon.ico
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
apps/designer/public/logo.png
Normal file
After Width: | Height: | Size: 12 KiB |
1
apps/designer/public/logo.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1711803009570" class="icon" viewBox="0 0 1280 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1500" width="320" height="256" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M557.85 1023l-122-35.4c-12.8-3.6-20-17-16.4-29.8L692.45 17.4c3.6-12.8 17-20 29.8-16.4l122 35.4c12.8 3.6 20 17 16.4 29.8L587.65 1006.6c-3.8 12.8-17 20.2-29.8 16.4z m-228-224.4l87-92.8c9.2-9.8 8.6-25.4-1.6-34.4L234.05 512l181.2-159.4c10.2-9 11-24.6 1.6-34.4l-87-92.8c-9-9.6-24.2-10.2-34-1L7.65 494.4c-10.2 9.4-10.2 25.6 0 35l288.2 270.2c9.8 9.2 25 8.8 34-1z m654.4 1.2l288.2-270.2c10.2-9.4 10.2-25.6 0-35L984.25 224.2c-9.6-9-24.8-8.6-34 1L863.25 318c-9.2 9.8-8.6 25.4 1.6 34.4L1046.05 512l-181.2 159.4c-10.2 9-11 24.6-1.6 34.4l87 92.8c9 9.8 24.2 10.2 34 1.2z" fill="#0157fe" p-id="1501"></path></svg>
|
After Width: | Height: | Size: 931 B |
51
apps/designer/src/App.vue
Normal file
@ -0,0 +1,51 @@
|
||||
<template>
|
||||
<ElConfigProvider :locale="zhCn">
|
||||
<Suspense>
|
||||
<XMask
|
||||
:title="title"
|
||||
:logo="logo || _logo"
|
||||
:menus="menus"
|
||||
:disabled="disabled"
|
||||
:pure="pure"
|
||||
:actions="actions"
|
||||
@action-click="onActionClick"
|
||||
:theme="themeSwitchable"></XMask>
|
||||
</Suspense>
|
||||
</ElConfigProvider>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { Suspense } from 'vue';
|
||||
import { ElConfigProvider, ElMessage } from 'element-plus';
|
||||
import {
|
||||
XMask,
|
||||
useMask,
|
||||
Bell,
|
||||
Lock,
|
||||
SwitchButton,
|
||||
type ActionBarItems,
|
||||
type ActionProps
|
||||
} from '@vtj/web';
|
||||
import zhCn from 'element-plus/es/locale/lang/zh-cn';
|
||||
import _logo from './assets/logo.svg';
|
||||
const { disabled, title, menus, logo, themeSwitchable, pure } = useMask();
|
||||
|
||||
const actions: ActionBarItems = [
|
||||
{
|
||||
name: 'message',
|
||||
icon: Bell,
|
||||
badge: 1
|
||||
},
|
||||
{
|
||||
name: 'lock',
|
||||
icon: Lock
|
||||
},
|
||||
{
|
||||
name: 'logout',
|
||||
icon: SwitchButton
|
||||
}
|
||||
];
|
||||
|
||||
const onActionClick = (action: ActionProps) => {
|
||||
ElMessage.success(`click: ${action.name}`);
|
||||
};
|
||||
</script>
|
BIN
apps/designer/src/assets/logo.png
Normal file
After Width: | Height: | Size: 12 KiB |
1
apps/designer/src/assets/logo.svg
Normal file
@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1711803009570" class="icon" viewBox="0 0 1280 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1500" width="320" height="256" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M557.85 1023l-122-35.4c-12.8-3.6-20-17-16.4-29.8L692.45 17.4c3.6-12.8 17-20 29.8-16.4l122 35.4c12.8 3.6 20 17 16.4 29.8L587.65 1006.6c-3.8 12.8-17 20.2-29.8 16.4z m-228-224.4l87-92.8c9.2-9.8 8.6-25.4-1.6-34.4L234.05 512l181.2-159.4c10.2-9 11-24.6 1.6-34.4l-87-92.8c-9-9.6-24.2-10.2-34-1L7.65 494.4c-10.2 9.4-10.2 25.6 0 35l288.2 270.2c9.8 9.2 25 8.8 34-1z m654.4 1.2l288.2-270.2c10.2-9.4 10.2-25.6 0-35L984.25 224.2c-9.6-9-24.8-8.6-34 1L863.25 318c-9.2 9.8-8.6 25.4 1.6 34.4L1046.05 512l-181.2 159.4c-10.2 9-11 24.6-1.6 34.4l87 92.8c9 9.8 24.2 10.2 34 1.2z" fill="#0157fe" p-id="1501"></path></svg>
|
After Width: | Height: | Size: 931 B |
38
apps/designer/src/components/HelloWorld.vue
Normal file
@ -0,0 +1,38 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
|
||||
defineProps<{ msg: string }>()
|
||||
|
||||
const count = ref(0)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<h1>{{ msg }}</h1>
|
||||
|
||||
<div class="card">
|
||||
<button type="button" @click="count++">count is {{ count }}</button>
|
||||
<p>
|
||||
Edit
|
||||
<code>components/HelloWorld.vue</code> to test HMR
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Check out
|
||||
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
|
||||
>create-vue</a
|
||||
>, the official Vue + Vite starter
|
||||
</p>
|
||||
<p>
|
||||
Install
|
||||
<a href="https://github.com/vuejs/language-tools" target="_blank">Volar</a>
|
||||
in your IDE for a better DX
|
||||
</p>
|
||||
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.read-the-docs {
|
||||
color: #888;
|
||||
}
|
||||
</style>
|
28
apps/designer/src/env.d.ts
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
declare module '*.vue' {
|
||||
import type { DefineComponent } from 'vue';
|
||||
const component: DefineComponent<{}, {}, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
declare namespace NodeJS {
|
||||
interface ProcessEnv {
|
||||
[key: string]: any;
|
||||
}
|
||||
}
|
||||
|
||||
declare module global {
|
||||
interface Window {}
|
||||
}
|
||||
|
||||
declare module 'vue' {
|
||||
interface ComponentCustomProperties {
|
||||
$uploader: any;
|
||||
$reqeust: any;
|
||||
$apis: any;
|
||||
$libs: any;
|
||||
}
|
||||
}
|
||||
|
||||
export {};
|
48
apps/designer/src/main.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import {
|
||||
createProvider,
|
||||
LocalService,
|
||||
createModules,
|
||||
NodeEnv,
|
||||
autoUpdate,
|
||||
notify,
|
||||
loading,
|
||||
createAdapter,
|
||||
createServiceRequest
|
||||
} from '@vtj/web';
|
||||
import { createApp } from 'vue';
|
||||
import router from './router';
|
||||
import App from './App.vue';
|
||||
import { name, description } from '../package.json';
|
||||
import './style/index.scss';
|
||||
|
||||
const app = createApp(App);
|
||||
const adapter = createAdapter({ loading, notify });
|
||||
const service = new LocalService(createServiceRequest(notify));
|
||||
|
||||
// const modules = createModules();
|
||||
// console.log('modules', modules);
|
||||
const { provider, onReady } = createProvider({
|
||||
nodeEnv: process.env.NODE_ENV as NodeEnv,
|
||||
modules: createModules(),
|
||||
service,
|
||||
adapter,
|
||||
router,
|
||||
dependencies: {
|
||||
Vue: () => import('vue'),
|
||||
VueRouter: () => import('vue-router')
|
||||
},
|
||||
project: {
|
||||
id: name,
|
||||
name: description
|
||||
}
|
||||
});
|
||||
|
||||
onReady(async () => {
|
||||
app.use(router);
|
||||
app.use(provider);
|
||||
app.mount('#low-code-designer');
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
autoUpdate();
|
||||
}
|
19
apps/designer/src/router/index.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import { createRouter, createWebHistory } from 'vue-router';
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
routes: [
|
||||
{
|
||||
path: '/unauthorized',
|
||||
name: 'Unauthorized',
|
||||
component: () => import('@/views/unauthorized.vue')
|
||||
},
|
||||
{
|
||||
path: '/:pathMatch(.*)*',
|
||||
name: 'NotFound',
|
||||
component: () => import('@/views/not-found.vue')
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
export default router;
|
11
apps/designer/src/style/index.scss
Normal file
@ -0,0 +1,11 @@
|
||||
@use '@vtj/web/src/index.scss';
|
||||
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
10
apps/designer/src/views/not-found.vue
Normal file
@ -0,0 +1,10 @@
|
||||
<template>
|
||||
<XContainer class="not-found" fit justify="center">
|
||||
<ElEmpty description="找不到页面【404】"></ElEmpty>
|
||||
</XContainer>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { XContainer } from '@vtj/web';
|
||||
import { ElEmpty } from 'element-plus';
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
10
apps/designer/src/views/unauthorized.vue
Normal file
@ -0,0 +1,10 @@
|
||||
<template>
|
||||
<XContainer class="unauthorized" fit justify="center">
|
||||
<ElEmpty description="无权限访问该页面"></ElEmpty>
|
||||
</XContainer>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { XContainer } from '@vtj/ui';
|
||||
import { ElEmpty } from 'element-plus';
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
27
apps/designer/tsconfig.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"extends": "./node_modules/@vtj/cli/config/tsconfig.web.json",
|
||||
"compilerOptions": {
|
||||
"noUnusedLocals": false,
|
||||
"noUnusedParameters": false,
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
],
|
||||
"$vtj/*": [
|
||||
".vtj/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"src"
|
||||
],
|
||||
"exclude": [
|
||||
".vtj",
|
||||
],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
}
|
13
apps/designer/tsconfig.node.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"skipLibCheck": true,
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"allowSyntheticDefaultImports": true
|
||||
},
|
||||
"include": [
|
||||
"vite.config.ts",
|
||||
"proxy.config.ts"
|
||||
]
|
||||
}
|
19
apps/designer/vite.config.ts
Normal file
@ -0,0 +1,19 @@
|
||||
import { createViteConfig } from '@vtj/cli';
|
||||
import { createDevTools } from '@vtj/local';
|
||||
import mkcert from 'vite-plugin-mkcert';
|
||||
import Http2Proxy from '@sy/vite-plugin-http2-proxy';
|
||||
import type { UserConfig, ConfigEnv } from 'vite';
|
||||
const config = createViteConfig({
|
||||
plugins: [createDevTools(), mkcert({ source: 'coding' }), Http2Proxy()]
|
||||
});
|
||||
|
||||
// export default config;
|
||||
|
||||
export default ({ command, mode }: ConfigEnv): UserConfig => {
|
||||
return {
|
||||
...config,
|
||||
server: {
|
||||
cors: true
|
||||
}
|
||||
};
|
||||
};
|
5
apps/platform/.browserslistrc
Normal file
@ -0,0 +1,5 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
||||
not ie 11
|
||||
chrome 79
|
19
apps/platform/.dockerignore
Normal file
@ -0,0 +1,19 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
.vscode/
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
tests/**/coverage/
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
|
8
apps/platform/.env
Normal file
@ -0,0 +1,8 @@
|
||||
# 项目名称
|
||||
VITE_APP_TITLE = Admin
|
||||
|
||||
# 公共基础路径, 详见: https://cn.vitejs.dev/guide/build.html#public-base-path
|
||||
VITE_BASE_URL = /
|
||||
|
||||
# enable mock in production
|
||||
VITE_MOCK_IN_PROD = true
|
8
apps/platform/.env.development
Normal file
@ -0,0 +1,8 @@
|
||||
# 只在开发模式中被载入
|
||||
ENV = 'development'
|
||||
|
||||
# 公共基础路径, 详见: https://cn.vitejs.dev/guide/build.html#public-base-path
|
||||
VITE_BASE_URL = /
|
||||
|
||||
# base api url
|
||||
VITE_BASE_API_URL = 'http://8.134.216.72:8080/'
|
8
apps/platform/.env.production
Normal file
@ -0,0 +1,8 @@
|
||||
# 只在生产模式中被载入
|
||||
ENV = 'production'
|
||||
|
||||
# base api url
|
||||
VITE_BASE_API_URL = 'http://127.0.0.1:8080/'
|
||||
|
||||
# 公共基础路径, 详见: https://cn.vitejs.dev/guide/build.html#public-base-path
|
||||
VITE_BASE_URL = /
|
11
apps/platform/.gitattributes
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# https://docs.github.com/cn/get-started/getting-started-with-git/configuring-git-to-handle-line-endings
|
||||
|
||||
# Automatically normalize line endings (to LF) for all text-based files.
|
||||
* text=auto eol=lf
|
||||
|
||||
# Declare files that will always have CRLF line endings on checkout.
|
||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.{ico,png,jpg,jpeg,gif,webp,svg,woff,woff2} binary
|
35
apps/platform/.gitignore
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
.cache
|
||||
.turbo
|
||||
.nx
|
||||
.nx/cache
|
||||
|
||||
tests/server/static
|
||||
tests/server/static/upload
|
||||
|
||||
.local
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
.eslintcache
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
*pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
# .vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# auto generate file
|
||||
types/auto-imports.d.ts
|
||||
types/components.d.ts
|
22
apps/platform/.npmrc
Normal file
@ -0,0 +1,22 @@
|
||||
# 使用淘宝镜像源
|
||||
registry = https://registry.npmmirror.com
|
||||
@sy:registry=http://sy-registry.shiyue.com
|
||||
|
||||
|
||||
# 根据需要提升含有以下的依赖包到根 node_modules 目录下
|
||||
# public-hoist-pattern[]=husky
|
||||
# public-hoist-pattern[]=*eslint*
|
||||
# public-hoist-pattern[]=@eslint*
|
||||
# public-hoist-pattern[]=*prettier*
|
||||
# public-hoist-pattern[]=lint-staged
|
||||
# public-hoist-pattern[]=*stylelint*
|
||||
# public-hoist-pattern[]=@commitlint*
|
||||
# public-hoist-pattern[]=core-js
|
||||
|
||||
# 提升所有依赖到根 node_modules 目录下,相当于 public-hoist-pattern[]=*,与上面一种方式一般二选一使用
|
||||
# 极不推荐用这样的方式解决依赖问题,这样没有充分利用 pnpm 依赖访问安全性的优势,又走回了 npm / yarn 的老路。
|
||||
# shamefully-hoist=true
|
||||
|
||||
enable-pre-post-scripts=true
|
||||
engine-strict=true
|
||||
package-manager-strict=false
|
81
apps/platform/CHANGELOG.md
Normal file
@ -0,0 +1,81 @@
|
||||
# 1.1.0 (2022-09-02)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- :bug: router navigation bug ([b550a7a](https://github.com/buqiyuan/vite-vue3-admin/commit/b550a7a01b486cfd161ccb8efd7bca9a0ed35627))
|
||||
- :bug:生成路由出错问题 ([917e3f0](https://github.com/buqiyuan/vite-vue3-admin/commit/917e3f07209851a3df0b7e220e38df4df7612a68))
|
||||
- :bug:修复某些权限码传参错误 ([47071ef](https://github.com/buqiyuan/vite-vue3-admin/commit/47071efa7beb2e210151405e2a1c7e74d6dff4f1))
|
||||
- :bug:fix BASE_URL to VITE_BASE_URL ([3d32e82](https://github.com/buqiyuan/vite-vue3-admin/commit/3d32e82b838aea3c8a928989d2aa55c5d125a8ab))
|
||||
- 面包屑导航和弹窗拖拽后宽度问题 ([ae96559](https://github.com/buqiyuan/vite-vue3-admin/commit/ae96559fb82a87908a40b425701eaa0ee1993aa7))
|
||||
- 删除一些多余的旧代码 ([9eaa568](https://github.com/buqiyuan/vite-vue3-admin/commit/9eaa568a104e7ab1980c0d2069cbedddb4a4934b))
|
||||
- add menu type judgment ([144a539](https://github.com/buqiyuan/vite-vue3-admin/commit/144a53942a9229cb5e0286ae3452b644d66621e6))
|
||||
- **component:** :bug:修复 dynamicTable ts 类型错误 ([58b9275](https://github.com/buqiyuan/vite-vue3-admin/commit/58b9275758625f583aed644923431df72acb9687))
|
||||
- **components:** [dynamic-table] initial fetchData did not carry the default value ([3aaedcf](https://github.com/buqiyuan/vite-vue3-admin/commit/3aaedcf3c0551477e05dec85fb86d4e5af62b193))
|
||||
- **components:** [dynamic-table] parameter missing ([1e306d7](https://github.com/buqiyuan/vite-vue3-admin/commit/1e306d77d205cc9fe69fb19d860f5e014e8accc8))
|
||||
- **dynamic-table:** add onChangeParams param for dataRequest ([f381c79](https://github.com/buqiyuan/vite-vue3-admin/commit/f381c793529b6711994e001d29d1b8e6dc016631))
|
||||
- fix the aformPropsKeys ([#22](https://github.com/buqiyuan/vite-vue3-admin/issues/22)) ([e1c21be](https://github.com/buqiyuan/vite-vue3-admin/commit/e1c21bea3dddee1fefc9465142f390b0252ebcb4))
|
||||
- invalid regular expression in safari ([3939f82](https://github.com/buqiyuan/vite-vue3-admin/commit/3939f8229561959cb46982f64c54f4348258a1bd)), closes [#20](https://github.com/buqiyuan/vite-vue3-admin/issues/20)
|
||||
- isAsyncFunction ([71aca13](https://github.com/buqiyuan/vite-vue3-admin/commit/71aca13b8055cd38c9f49a4d370c935312fa4d6f))
|
||||
- **pages:** about page link issues ([62c840c](https://github.com/buqiyuan/vite-vue3-admin/commit/62c840ccec3aa4b4237a182d750db933797c1c92))
|
||||
- **projects:** 修复 tabs-view 下拉菜单溢出 ([a43353d](https://github.com/buqiyuan/vite-vue3-admin/commit/a43353dc89f8395278b6988f7a2dd8c372ff0d7f))
|
||||
- remove topLevelAwait usage ([6653da6](https://github.com/buqiyuan/vite-vue3-admin/commit/6653da65f7a6d9738a39c955fb4dcb6d4f553235))
|
||||
- router redirect error when logout ([4073cb6](https://github.com/buqiyuan/vite-vue3-admin/commit/4073cb651b3bf45c16ce5f965fb7dddd3fab3bcd))
|
||||
- **router:** 第一次进入页面缓存失效问题 ([1b79adc](https://github.com/buqiyuan/vite-vue3-admin/commit/1b79adc072c1c9b6518cc4c05846dfd47c954989))
|
||||
- **schema-form:** update props issue ([ff1da5e](https://github.com/buqiyuan/vite-vue3-admin/commit/ff1da5e4f9723392f8af6a5286131f8cbf3c2bf8))
|
||||
- some css style issues ([9db10b0](https://github.com/buqiyuan/vite-vue3-admin/commit/9db10b058c8ba212cf51c94c10d2f37705ff7112))
|
||||
- some route file path error ([c89b131](https://github.com/buqiyuan/vite-vue3-admin/commit/c89b131d77c0ee8036813a2d377774bb854c652d))
|
||||
- some ts type issue ([60ea702](https://github.com/buqiyuan/vite-vue3-admin/commit/60ea702d7fe9cc88f85c07cdb0cd6fe5f3c56669))
|
||||
- svg can not loaded ([6aec46a](https://github.com/buqiyuan/vite-vue3-admin/commit/6aec46a00412a2b02e4090faca6722717a739550))
|
||||
- **utils:** [is] always false of isPromise ([8479111](https://github.com/buqiyuan/vite-vue3-admin/commit/84791110a87ab48f131c91e73508c2547fff8b25))
|
||||
- xlsx.js not default export in new versions [#8](https://github.com/buqiyuan/vite-vue3-admin/issues/8) ([a0b0fc8](https://github.com/buqiyuan/vite-vue3-admin/commit/a0b0fc8c78e1cf75e5ed7e48aee03dc7ce364db4))
|
||||
|
||||
### Features
|
||||
|
||||
- 表格列设置工具栏 ([a934e12](https://github.com/buqiyuan/vite-vue3-admin/commit/a934e123426fab27fcbfbf47181f3355f584974a))
|
||||
- 当前用户角色权限变更时实时更新权限菜单 ([89918a2](https://github.com/buqiyuan/vite-vue3-admin/commit/89918a2195b119f480f498d420bb29016d557846))
|
||||
- 服务监控页面 ([0c3d61f](https://github.com/buqiyuan/vite-vue3-admin/commit/0c3d61fbdf4b0ecb1375990c06f5b039bed37085))
|
||||
- 全局挂载 Reflect 反射对象 ([f6f4675](https://github.com/buqiyuan/vite-vue3-admin/commit/f6f4675fba8e94b8b8bb67eff79d1205e3b06fff))
|
||||
- 新增按钮权限 ([5538d38](https://github.com/buqiyuan/vite-vue3-admin/commit/5538d387925b7bd53f332643903f9e4cacad0908))
|
||||
- **components:** [dynamic-table] cell support defaultEditable ([125bb08](https://github.com/buqiyuan/vite-vue3-admin/commit/125bb08ef2563f4dd4f3883da679e739e3f80bad))
|
||||
- **components:** [dynamic-table] support cell edit ([4411b0e](https://github.com/buqiyuan/vite-vue3-admin/commit/4411b0e49feeb93b3d1034fc038c9a778d7312af))
|
||||
- **components:** [ProjectSetting] add layout mode ([815b0c2](https://github.com/buqiyuan/vite-vue3-admin/commit/815b0c2cdc063a848b88cfe35519b0755b279282))
|
||||
- edit-row-table support save loading ([4d0eea6](https://github.com/buqiyuan/vite-vue3-admin/commit/4d0eea6d30d8b09d30cafb6e3bb4b80bb806c675))
|
||||
- support for nested routes ([9d9e1d8](https://github.com/buqiyuan/vite-vue3-admin/commit/9d9e1d856f01e0164c88a18583957d20ace95654))
|
||||
- **tools:** :art: add project config drawer ([c1f0de0](https://github.com/buqiyuan/vite-vue3-admin/commit/c1f0de05f25bbbadbcbc9f4a105e8d721b008bbb))
|
||||
- update basic-form demo ([27f95ec](https://github.com/buqiyuan/vite-vue3-admin/commit/27f95ec4e7c1b57fca5af379165960167aea2e1b))
|
||||
- **views:** add about page ([0a34802](https://github.com/buqiyuan/vite-vue3-admin/commit/0a34802b7ef2d2727df4b3b769bd4d664ace2bfa))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
- **tableColumns:** customRender is easy ([#10](https://github.com/buqiyuan/vite-vue3-admin/issues/10)) ([e069f3c](https://github.com/buqiyuan/vite-vue3-admin/commit/e069f3c164f92e414638cb2f681013c7dc7727a0))
|
||||
- use vite-plugin-style-import replace unplugin-vue-components [#5](https://github.com/buqiyuan/vite-vue3-admin/issues/5) ([10540eb](https://github.com/buqiyuan/vite-vue3-admin/commit/10540eb1de36f4cd6048f86e5b0363109d571760))
|
||||
|
||||
## 1.0.2 (2022-03-15)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- :bug: router navigation bug ([b550a7a](https://github.com/buqiyuan/vite-vue3-admin/commit/b550a7a01b486cfd161ccb8efd7bca9a0ed35627))
|
||||
- :bug:生成路由出错问题 ([917e3f0](https://github.com/buqiyuan/vite-vue3-admin/commit/917e3f07209851a3df0b7e220e38df4df7612a68))
|
||||
- :bug:修复某些权限码传参错误 ([47071ef](https://github.com/buqiyuan/vite-vue3-admin/commit/47071efa7beb2e210151405e2a1c7e74d6dff4f1))
|
||||
- :bug:fix BASE_URL to VITE_BASE_URL ([3d32e82](https://github.com/buqiyuan/vite-vue3-admin/commit/3d32e82b838aea3c8a928989d2aa55c5d125a8ab))
|
||||
- 面包屑导航和弹窗拖拽后宽度问题 ([ae96559](https://github.com/buqiyuan/vite-vue3-admin/commit/ae96559fb82a87908a40b425701eaa0ee1993aa7))
|
||||
- 删除一些多余的旧代码 ([9eaa568](https://github.com/buqiyuan/vite-vue3-admin/commit/9eaa568a104e7ab1980c0d2069cbedddb4a4934b))
|
||||
- **component:** :bug:修复 dynamicTable ts 类型错误 ([58b9275](https://github.com/buqiyuan/vite-vue3-admin/commit/58b9275758625f583aed644923431df72acb9687))
|
||||
- remove topLevelAwait usage ([6653da6](https://github.com/buqiyuan/vite-vue3-admin/commit/6653da65f7a6d9738a39c955fb4dcb6d4f553235))
|
||||
- **router:** 第一次进入页面缓存失效问题 ([1b79adc](https://github.com/buqiyuan/vite-vue3-admin/commit/1b79adc072c1c9b6518cc4c05846dfd47c954989))
|
||||
- some route file path error ([c89b131](https://github.com/buqiyuan/vite-vue3-admin/commit/c89b131d77c0ee8036813a2d377774bb854c652d))
|
||||
- svg can not loaded ([6aec46a](https://github.com/buqiyuan/vite-vue3-admin/commit/6aec46a00412a2b02e4090faca6722717a739550))
|
||||
- xlsx.js not default export in new versions [#8](https://github.com/buqiyuan/vite-vue3-admin/issues/8) ([a0b0fc8](https://github.com/buqiyuan/vite-vue3-admin/commit/a0b0fc8c78e1cf75e5ed7e48aee03dc7ce364db4))
|
||||
|
||||
### Features
|
||||
|
||||
- 表格列设置工具栏 ([a934e12](https://github.com/buqiyuan/vite-vue3-admin/commit/a934e123426fab27fcbfbf47181f3355f584974a))
|
||||
- 服务监控页面 ([0c3d61f](https://github.com/buqiyuan/vite-vue3-admin/commit/0c3d61fbdf4b0ecb1375990c06f5b039bed37085))
|
||||
- 全局挂载 Reflect 反射对象 ([f6f4675](https://github.com/buqiyuan/vite-vue3-admin/commit/f6f4675fba8e94b8b8bb67eff79d1205e3b06fff))
|
||||
- 新增按钮权限 ([5538d38](https://github.com/buqiyuan/vite-vue3-admin/commit/5538d387925b7bd53f332643903f9e4cacad0908))
|
||||
- **views:** add about page ([0a34802](https://github.com/buqiyuan/vite-vue3-admin/commit/0a34802b7ef2d2727df4b3b769bd4d664ace2bfa))
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
- **tableColumns:** customRender is easy ([#10](https://github.com/buqiyuan/vite-vue3-admin/issues/10)) ([e069f3c](https://github.com/buqiyuan/vite-vue3-admin/commit/e069f3c164f92e414638cb2f681013c7dc7727a0))
|
||||
- use vite-plugin-style-import replace unplugin-vue-components [#5](https://github.com/buqiyuan/vite-vue3-admin/issues/5) ([10540eb](https://github.com/buqiyuan/vite-vue3-admin/commit/10540eb1de36f4cd6048f86e5b0363109d571760))
|
29
apps/platform/Dockerfile
Normal file
@ -0,0 +1,29 @@
|
||||
|
||||
# https://stackoverflow.com/questions/53681522/share-variable-in-multi-stage-dockerfile-arg-before-from-not-substituted
|
||||
ARG PROJECT_DIR=/vue3-antdv-admin
|
||||
|
||||
FROM node:20-slim as builder
|
||||
ARG PROJECT_DIR
|
||||
WORKDIR $PROJECT_DIR
|
||||
|
||||
# 安装pnpm
|
||||
RUN npm install -g pnpm
|
||||
|
||||
COPY . ./
|
||||
# 安装依赖
|
||||
# 若网络不通,可以使用淘宝源
|
||||
# RUN pnpm config set registry https://registry.npmmirror.com
|
||||
RUN pnpm install
|
||||
|
||||
# 构建项目
|
||||
ENV VITE_BASE_URL=/
|
||||
RUN pnpm build
|
||||
|
||||
|
||||
FROM nginx:alpine as production
|
||||
ARG PROJECT_DIR
|
||||
|
||||
COPY --from=builder $PROJECT_DIR/dist/ /usr/share/nginx/html
|
||||
# COPY --from=builder $PROJECT_DIR/nginx.conf /etc/nginx/nginx.conf
|
||||
|
||||
EXPOSE 80
|
42
apps/platform/README.md
Normal file
@ -0,0 +1,42 @@
|
||||
## 安装使用
|
||||
|
||||
- 安装依赖
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
|
||||
```
|
||||
|
||||
- 运行
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
- 打包
|
||||
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
## vscode 配置
|
||||
|
||||
安装项目根目录 `.vscode` 推荐的插件,再安装 `Volar`,并禁用 `Vetur`,重启 vscode 即可。
|
||||
|
||||
## Git 贡献提交规范
|
||||
|
||||
- 参考 [vue](https://github.com/vuejs/vue/blob/dev/.github/COMMIT_CONVENTION.md) 规范 ([Angular](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular))
|
||||
|
||||
- `feat` 增加新功能
|
||||
- `fix` 修复问题/BUG
|
||||
- `style` 代码风格相关无影响运行结果的
|
||||
- `perf` 优化/性能提升
|
||||
- `refactor` 重构
|
||||
- `revert` 撤销修改
|
||||
- `test` 测试相关
|
||||
- `docs` 文档/注释
|
||||
- `chore` 依赖更新/脚手架配置修改等
|
||||
- `workflow` 工作流改进
|
||||
- `ci` 持续集成
|
||||
- `types` 类型定义文件更改
|
||||
- `wip` 开发中
|
34
apps/platform/commitlint.config.mjs
Normal file
@ -0,0 +1,34 @@
|
||||
/** @type {import("@commitlint/types").UserConfig} */
|
||||
export default {
|
||||
ignores: [(commit) => commit.includes('init')],
|
||||
extends: ['@commitlint/config-conventional'],
|
||||
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',
|
||||
'perf',
|
||||
'style',
|
||||
'docs',
|
||||
'test',
|
||||
'refactor',
|
||||
'build',
|
||||
'ci',
|
||||
'chore',
|
||||
'revert',
|
||||
'wip',
|
||||
'workflow',
|
||||
'types',
|
||||
'release',
|
||||
],
|
||||
],
|
||||
},
|
||||
};
|
15
apps/platform/docker-compose.yml
Normal file
@ -0,0 +1,15 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
vue3-antdv-admin:
|
||||
# 从当前路径构建镜像
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: production
|
||||
image: buqiyuan/vue3-antdv-admin:latest
|
||||
ports:
|
||||
- '80:80'
|
||||
env_file:
|
||||
- .env
|
||||
- .env.production
|
206
apps/platform/eslint.config.mjs
Normal file
@ -0,0 +1,206 @@
|
||||
import js from '@eslint/js';
|
||||
import pluginVue from 'eslint-plugin-vue';
|
||||
import * as parserVue from 'vue-eslint-parser';
|
||||
import configPrettier from 'eslint-config-prettier';
|
||||
import pluginPrettier from 'eslint-plugin-prettier';
|
||||
import pluginImport from 'eslint-plugin-import';
|
||||
import { defineFlatConfig } from 'eslint-define-config';
|
||||
import * as parserTypeScript from '@typescript-eslint/parser';
|
||||
import pluginTypeScript from '@typescript-eslint/eslint-plugin';
|
||||
import unusedImports from 'eslint-plugin-unused-imports';
|
||||
|
||||
export default defineFlatConfig([
|
||||
{
|
||||
...js.configs.recommended,
|
||||
plugins: {
|
||||
prettier: pluginPrettier,
|
||||
},
|
||||
rules: {
|
||||
...configPrettier.rules,
|
||||
...pluginPrettier.configs.recommended.rules,
|
||||
'no-debugger': 'off',
|
||||
'no-unused-vars': [
|
||||
'error',
|
||||
{
|
||||
argsIgnorePattern: '^_',
|
||||
varsIgnorePattern: '^_',
|
||||
},
|
||||
],
|
||||
'prettier/prettier': [
|
||||
'error',
|
||||
{
|
||||
endOfLine: 'auto',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.?([cm])ts', '**/*.?([cm])tsx'],
|
||||
languageOptions: {
|
||||
parser: parserTypeScript,
|
||||
parserOptions: {
|
||||
sourceType: 'module',
|
||||
},
|
||||
},
|
||||
plugins: {
|
||||
'@typescript-eslint': pluginTypeScript,
|
||||
},
|
||||
rules: {
|
||||
...pluginTypeScript.configs.strict.rules,
|
||||
'@typescript-eslint/ban-types': 'off',
|
||||
'@typescript-eslint/no-unused-vars': 'off',
|
||||
'@typescript-eslint/no-unused-expressions': 'off',
|
||||
'@typescript-eslint/no-invalid-void-type': 'off',
|
||||
'@typescript-eslint/no-redeclare': 'error',
|
||||
'@typescript-eslint/ban-ts-comment': 'off',
|
||||
'@typescript-eslint/prefer-ts-expect-error': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
'@typescript-eslint/prefer-as-const': 'warn',
|
||||
'@typescript-eslint/no-empty-function': 'off',
|
||||
'@typescript-eslint/no-empty-object-type': 'off',
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
'@typescript-eslint/no-import-type-side-effects': 'error',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
||||
'@typescript-eslint/consistent-type-imports': [
|
||||
'error',
|
||||
{ disallowTypeAnnotations: false, fixStyle: 'inline-type-imports' },
|
||||
],
|
||||
'@typescript-eslint/prefer-literal-enum-member': ['error', { allowBitwiseExpressions: true }],
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.d.ts'],
|
||||
rules: {
|
||||
'eslint-comments/no-unlimited-disable': 'off',
|
||||
'import/no-duplicates': 'off',
|
||||
'unused-imports/no-unused-vars': 'off',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.?([cm])js'],
|
||||
rules: {
|
||||
'@typescript-eslint/no-require-imports': 'off',
|
||||
'@typescript-eslint/no-var-requires': 'off',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.vue'],
|
||||
languageOptions: {
|
||||
parser: parserVue,
|
||||
parserOptions: {
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
extraFileExtensions: ['.vue'],
|
||||
parser: parserTypeScript,
|
||||
sourceType: 'module',
|
||||
},
|
||||
},
|
||||
plugins: {
|
||||
vue: pluginVue,
|
||||
},
|
||||
processor: pluginVue.processors['.vue'],
|
||||
rules: {
|
||||
...pluginVue.configs.base.rules,
|
||||
...pluginVue.configs['vue3-essential'].rules,
|
||||
...pluginVue.configs['vue3-recommended'].rules,
|
||||
'no-undef': 'off',
|
||||
'no-unused-vars': 'off',
|
||||
'vue/no-v-html': 'off',
|
||||
'vue/require-default-prop': 'off',
|
||||
'vue/require-explicit-emits': 'off',
|
||||
'vue/multi-word-component-names': 'off',
|
||||
'vue/no-setup-props-reactivity-loss': 'off',
|
||||
'vue/html-self-closing': [
|
||||
'error',
|
||||
{
|
||||
html: {
|
||||
void: 'always',
|
||||
normal: 'always',
|
||||
component: 'always',
|
||||
},
|
||||
svg: 'always',
|
||||
math: 'always',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.vue', '**/*.?([cm])ts', '**/*.?([cm])tsx'],
|
||||
plugins: {
|
||||
import: pluginImport,
|
||||
'unused-imports': unusedImports,
|
||||
},
|
||||
rules: {
|
||||
'import/first': 'error',
|
||||
'import/no-duplicates': 'error',
|
||||
'import/order': [
|
||||
'error',
|
||||
{
|
||||
groups: [
|
||||
'builtin',
|
||||
'external',
|
||||
'internal',
|
||||
'parent',
|
||||
'sibling',
|
||||
'index',
|
||||
'object',
|
||||
'type',
|
||||
],
|
||||
|
||||
pathGroups: [
|
||||
{
|
||||
pattern: 'vue',
|
||||
group: 'external',
|
||||
position: 'before',
|
||||
},
|
||||
{
|
||||
pattern: '@vue/**',
|
||||
group: 'external',
|
||||
position: 'before',
|
||||
},
|
||||
{
|
||||
pattern: 'ant-design-vue',
|
||||
group: 'internal',
|
||||
},
|
||||
],
|
||||
pathGroupsExcludedImportTypes: ['type'],
|
||||
},
|
||||
],
|
||||
|
||||
'unused-imports/no-unused-imports': 'error',
|
||||
// 如需保存时自动删除未引用代码,可注释掉该规则
|
||||
'unused-imports/no-unused-vars': [
|
||||
'warn',
|
||||
{
|
||||
vars: 'all',
|
||||
varsIgnorePattern: '^_',
|
||||
args: 'after-used',
|
||||
argsIgnorePattern: '^_',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
linterOptions: {
|
||||
reportUnusedDisableDirectives: 'off',
|
||||
},
|
||||
ignores: [
|
||||
'src/assets/**',
|
||||
'*.sh',
|
||||
'node_modules',
|
||||
'*.md',
|
||||
'*.woff',
|
||||
'*.ttf',
|
||||
'.vscode',
|
||||
'.idea',
|
||||
'dist',
|
||||
'/public',
|
||||
'/docs',
|
||||
'.husky',
|
||||
'.local',
|
||||
'/bin',
|
||||
'Dockerfile',
|
||||
],
|
||||
},
|
||||
]);
|
17
apps/platform/index.html
Normal file
@ -0,0 +1,17 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="referrer" content="origin" />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0"
|
||||
/>
|
||||
<title>Vite App</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
8
apps/platform/lint-staged.config.mjs
Normal file
@ -0,0 +1,8 @@
|
||||
/** @type {import('lint-staged').Config} */
|
||||
export default {
|
||||
'*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
|
||||
'*.json': ['prettier --write'],
|
||||
'*.vue': ['eslint --fix', 'prettier --write', 'stylelint --fix --allow-empty-input'],
|
||||
'*.{scss,less,styl,html}': ['stylelint --fix --allow-empty-input', 'prettier --write'],
|
||||
'*.md': ['prettier --write'],
|
||||
};
|
104
apps/platform/openapi.config.ts
Normal file
@ -0,0 +1,104 @@
|
||||
import { generateService } from '@umijs/openapi';
|
||||
import type { RequestOptions } from './src/utils/request';
|
||||
|
||||
const re = /controller[-_ .](\w)/gi;
|
||||
|
||||
// swagger-typescript-api
|
||||
generateService({
|
||||
schemaPath: 'http://127.0.0.1:7001/api-docs-json',
|
||||
serversPath: './src/api/backend',
|
||||
requestOptionsType: 'RequestOptions',
|
||||
// 自定义网络请求函数路径
|
||||
requestImportStatement: `
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from "@/utils/request";
|
||||
`,
|
||||
hook: {
|
||||
afterOpenApiDataInited(openAPIData) {
|
||||
const schemas = openAPIData.components?.schemas;
|
||||
if (schemas) {
|
||||
Object.values(schemas).forEach((schema) => {
|
||||
if ('$ref' in schema) {
|
||||
return;
|
||||
}
|
||||
if (schema.properties) {
|
||||
Object.values(schema.properties).forEach((prop) => {
|
||||
if ('$ref' in prop) {
|
||||
return;
|
||||
}
|
||||
// 匡正文件上传的参数类型
|
||||
if (prop.format === 'binary') {
|
||||
prop.type = 'object';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
return openAPIData;
|
||||
},
|
||||
// @ts-ignore
|
||||
customFunctionName(operationObject, apiPath) {
|
||||
const { operationId } = operationObject;
|
||||
|
||||
if (!operationId) {
|
||||
console.warn('[Warning] no operationId', apiPath);
|
||||
return;
|
||||
}
|
||||
|
||||
const funcName = operationId.replace(re, (_all, letter) => letter.toUpperCase());
|
||||
|
||||
operationObject.operationId = funcName;
|
||||
|
||||
return funcName;
|
||||
},
|
||||
// @ts-ignore
|
||||
customFileNames(operationObject, apiPath) {
|
||||
const { operationId } = operationObject;
|
||||
|
||||
if (!operationId) {
|
||||
console.warn('[Warning] no operationId', apiPath);
|
||||
return;
|
||||
}
|
||||
const controllerName = operationId.split(re)[0];
|
||||
const moduleName = operationObject.tags?.[0].split(' - ')[0];
|
||||
|
||||
// 移除 query 参数的默认值
|
||||
operationObject.parameters?.forEach((param) => {
|
||||
if ('in' in param && param.in === 'query' && param.schema) {
|
||||
if (!('$ref' in param.schema) && param.schema.default) {
|
||||
Reflect.deleteProperty(param.schema, 'default');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (moduleName === controllerName) {
|
||||
return [controllerName];
|
||||
} else if (moduleName && moduleName !== controllerName) {
|
||||
return [`${moduleName}_${controllerName}`];
|
||||
}
|
||||
return;
|
||||
},
|
||||
customType(schemaObject, namespace, defaultGetType) {
|
||||
const type = defaultGetType(schemaObject, namespace);
|
||||
// 提取出 data 的类型
|
||||
const regex = /API\.ResOp & { 'data'\?: (.+); }/;
|
||||
return type.replace(regex, '$1');
|
||||
},
|
||||
customOptionsDefaultValue(data): RequestOptions {
|
||||
const { summary } = data;
|
||||
|
||||
if (summary?.startsWith('创建') || summary?.startsWith('新增')) {
|
||||
return { successMsg: '创建成功' };
|
||||
} else if (summary?.startsWith('更新')) {
|
||||
return { successMsg: '更新成功' };
|
||||
} else if (summary?.startsWith('删除')) {
|
||||
return { successMsg: '删除成功' };
|
||||
}
|
||||
|
||||
return {};
|
||||
},
|
||||
},
|
||||
});
|
120
apps/platform/package.json
Normal file
@ -0,0 +1,120 @@
|
||||
{
|
||||
"name": "@sy/low-code-platform",
|
||||
"version": "1.0.0-1",
|
||||
"packageManager": "pnpm@9.4.0",
|
||||
"type": "module",
|
||||
"engines": {
|
||||
"node": ">=20",
|
||||
"pnpm": ">=9.0.2"
|
||||
},
|
||||
"author": {
|
||||
"name": "wangxuefeng",
|
||||
"email": "wangxuefeng@shiyue.com"
|
||||
},
|
||||
"scripts": {
|
||||
"preinstall": "npx only-allow pnpm",
|
||||
"serve": "npm run dev",
|
||||
"dev": "vite dev",
|
||||
"build": "rimraf dist && cross-env NODE_ENV=production vite build",
|
||||
"build:watch": "rimraf dist && cross-env NODE_ENV=production vite build --watch",
|
||||
"preview": "vite preview",
|
||||
"preview:watch": "npm run build:watch && vite preview",
|
||||
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
|
||||
"test:gzip": "npx http-server dist --cors --gzip -c-1",
|
||||
"test:br": "npx http-server dist --cors --brotli -c-1",
|
||||
"clean:lock": "rimraf pnpm-lock.yaml && rimraf package.lock.json",
|
||||
"clean:lib": "rimraf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons-vue": "~7.0.1",
|
||||
"@iconify/vue": "^4.3.0",
|
||||
"@vueuse/core": "~11.1.0",
|
||||
"ant-design-vue": "~4.2.6",
|
||||
"axios": "~1.7.9",
|
||||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "~1.11.13",
|
||||
"file-saver": "~2.0.5",
|
||||
"licia-es": "^1.46.0",
|
||||
"lodash-es": "~4.17.21",
|
||||
"mitt": "~3.0.1",
|
||||
"nprogress": "1.0.0-1",
|
||||
"pinia": "~2.2.8",
|
||||
"pinia-plugin-persistedstate": "^4.2.0",
|
||||
"qs": "~6.13.1",
|
||||
"sortablejs": "~1.15.6",
|
||||
"vue": "~3.5.13",
|
||||
"vue-i18n": "^11.1.1",
|
||||
"vue-router": "~4.4.5",
|
||||
"vue-types": "~5.1.3",
|
||||
"vue-virtual-scroller": "2.0.0-beta.8",
|
||||
"wujie-vue3": "^1.0.24",
|
||||
"xlsx": "~0.18.5",
|
||||
"core-js": "^3.40.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@sy/vite-plugin-http2-proxy": "workspace:*",
|
||||
"@commitlint/cli": "~19.5.0",
|
||||
"@commitlint/config-conventional": "~19.5.0",
|
||||
"@iconify-json/ant-design": "^1.2.5",
|
||||
"@iconify-json/ep": "^1.2.2",
|
||||
"@iconify/json": "^2.2.307",
|
||||
"@sy/low-code-designer": "workspace:*",
|
||||
"@types/crypto-js": "^4.2.2",
|
||||
"@types/lodash-es": "~4.17.12",
|
||||
"@types/node": "~22.7.9",
|
||||
"@types/qs": "^6.9.18",
|
||||
"@types/sortablejs": "^1.15.8",
|
||||
"@typescript-eslint/eslint-plugin": "~8.11.0",
|
||||
"@typescript-eslint/parser": "~8.11.0",
|
||||
"@umijs/openapi": "^1.13.0",
|
||||
"@vitejs/plugin-vue": "~5.1.5",
|
||||
"@vitejs/plugin-vue-jsx": "~4.0.1",
|
||||
"@vue/tsconfig": "^0.5.1",
|
||||
"commitizen": "~4.3.1",
|
||||
"conventional-changelog-cli": "~4.1.0",
|
||||
"cross-env": "~7.0.3",
|
||||
"eslint": "~9.13.0",
|
||||
"eslint-config-prettier": "~9.1.0",
|
||||
"eslint-define-config": "~2.1.0",
|
||||
"eslint-plugin-import": "~2.31.0",
|
||||
"eslint-plugin-prettier": "~5.2.3",
|
||||
"eslint-plugin-unused-imports": "^4.1.4",
|
||||
"eslint-plugin-vue": "~9.29.1",
|
||||
"less": "~4.2.2",
|
||||
"lint-staged": "~15.2.11",
|
||||
"msw": "^2.7.0",
|
||||
"postcss": "~8.4.49",
|
||||
"postcss-html": "~1.7.0",
|
||||
"postcss-less": "~6.0.0",
|
||||
"prettier": "~3.3.3",
|
||||
"rimraf": "~6.0.1",
|
||||
"stylelint": "~16.10.0",
|
||||
"stylelint-config-property-sort-order-smacss": "^10.0.0",
|
||||
"stylelint-config-recommended": "~14.0.1",
|
||||
"stylelint-config-recommended-vue": "~1.5.0",
|
||||
"stylelint-config-standard": "~36.0.1",
|
||||
"stylelint-order": "~6.0.4",
|
||||
"stylelint-prettier": "^5.0.3",
|
||||
"typescript": "~5.6.3",
|
||||
"unocss": "^65.5.0",
|
||||
"unplugin-vue-components": "~0.27.5",
|
||||
"vite": "~6.1.0",
|
||||
"vite-plugin-checker": "~0.8.0",
|
||||
"vite-plugin-inspect": "^10.2.1",
|
||||
"vite-plugin-mkcert": "^1.17.6",
|
||||
"vite-plugin-svg-icons": "~2.0.1",
|
||||
"vite-plugin-vue-inspector": "^5.3.1",
|
||||
"vue-eslint-parser": "~9.4.3",
|
||||
"vue-tsc": "~2.1.10"
|
||||
},
|
||||
"keywords": [
|
||||
"vue",
|
||||
"ant-design-vue",
|
||||
"vue3",
|
||||
"ts",
|
||||
"tsx",
|
||||
"admin",
|
||||
"typescript"
|
||||
],
|
||||
"target": "web"
|
||||
}
|
11
apps/platform/prettier.config.mjs
Normal file
@ -0,0 +1,11 @@
|
||||
/** @type {import('prettier').Config} */
|
||||
export default {
|
||||
printWidth: 100,
|
||||
semi: true,
|
||||
vueIndentScriptAndStyle: true,
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
proseWrap: 'never',
|
||||
htmlWhitespaceSensitivity: 'strict',
|
||||
endOfLine: 'auto',
|
||||
};
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
1
apps/platform/public/iconfont.js
Normal file
30
apps/platform/src/App.vue
Normal file
@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<ProConfigProvider
|
||||
:theme="{
|
||||
algorithm: [compactAlgorithm],
|
||||
}"
|
||||
>
|
||||
<Suspense>
|
||||
<router-view v-slot="{ Component }">
|
||||
<transition>
|
||||
<keep-alive v-if="route.meta.keepAlive">
|
||||
<component :is="Component" v-if="route.meta.keepAlive" :key="route.path" />
|
||||
</keep-alive>
|
||||
<component :is="Component" v-else :key="route.path" />
|
||||
</transition>
|
||||
</router-view>
|
||||
</Suspense>
|
||||
<LockScreen />
|
||||
</ProConfigProvider>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { theme } from 'ant-design-vue';
|
||||
|
||||
import { LockScreen } from '@/components/basic/lockscreen';
|
||||
import { useRoute } from 'vue-router';
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
const { compactAlgorithm } = theme;
|
||||
</script>
|
64
apps/platform/src/api/backend/api/account.ts
Normal file
@ -0,0 +1,64 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 账户登出 GET /api/account/logout */
|
||||
export async function accountLogout(options?: RequestOptions) {
|
||||
return request<any>('/api/account/logout', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取菜单列表 GET /api/account/menus */
|
||||
export async function accountMenu(options?: RequestOptions) {
|
||||
return request<API.AccountMenus[]>('/api/account/menus', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更改账户密码 POST /api/account/password */
|
||||
export async function accountPassword(body: API.PasswordUpdateDto, options?: RequestOptions) {
|
||||
return request<any>('/api/account/password', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取权限列表 GET /api/account/permissions */
|
||||
export async function accountPermissions(options?: RequestOptions) {
|
||||
return request<string[]>('/api/account/permissions', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取账户资料 GET /api/account/profile */
|
||||
export async function accountProfile(options?: RequestOptions) {
|
||||
return request<API.AccountInfo>('/api/account/profile', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更改账户资料 PUT /api/account/update */
|
||||
export async function accountUpdate(body: API.AccountUpdateDto, options?: RequestOptions) {
|
||||
return request<any>('/api/account/update', {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
32
apps/platform/src/api/backend/api/auth.ts
Normal file
@ -0,0 +1,32 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 登录 POST /api/auth/login */
|
||||
export async function authLogin(body: API.LoginDto, options?: RequestOptions) {
|
||||
return request<API.LoginToken>('/api/auth/login', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 注册 POST /api/auth/register */
|
||||
export async function authRegister(body: API.RegisterDto, options?: RequestOptions) {
|
||||
return request<any>('/api/auth/register', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
20
apps/platform/src/api/backend/api/authEmail.ts
Normal file
@ -0,0 +1,20 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 发送邮箱验证码 POST /api/auth/email/send */
|
||||
export async function emailSendEmailCode(body: API.SendEmailCodeDto, options?: RequestOptions) {
|
||||
return request<any>('/api/auth/email/send', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
82
apps/platform/src/api/backend/api/businessTodo.ts
Normal file
@ -0,0 +1,82 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取Todo列表 GET /api/todos */
|
||||
export async function todoList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TodoListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<API.TodoEntity[]>('/api/todos', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 创建Todo POST /api/todos */
|
||||
export async function todoCreate(body: API.TodoDto, options?: RequestOptions) {
|
||||
return request<any>('/api/todos', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取Todo详情 GET /api/todos/${param0} */
|
||||
export async function todoInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TodoInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.TodoEntity>(`/api/todos/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新Todo PUT /api/todos/${param0} */
|
||||
export async function todoUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TodoUpdateParams,
|
||||
body: API.TodoUpdateDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/todos/${param0}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除Todo DELETE /api/todos/${param0} */
|
||||
export async function todoDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TodoDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/todos/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
23
apps/platform/src/api/backend/api/captcha.ts
Normal file
@ -0,0 +1,23 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取登录图片验证码 GET /api/auth/captcha/img */
|
||||
export async function captchaCaptchaByImg(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.CaptchaCaptchaByImgParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<API.ImageCaptcha>('/api/auth/captcha/img', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
73
apps/platform/src/api/backend/api/health.ts
Normal file
@ -0,0 +1,73 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 此处后端没有提供注释 GET /api/health/database */
|
||||
export async function healthCheckDatabase(options?: RequestOptions) {
|
||||
return request<{
|
||||
status?: string;
|
||||
info?: Record<string, any>;
|
||||
error?: Record<string, any>;
|
||||
details?: Record<string, any>;
|
||||
}>('/api/health/database', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 此处后端没有提供注释 GET /api/health/disk */
|
||||
export async function healthCheckDisk(options?: RequestOptions) {
|
||||
return request<{
|
||||
status?: string;
|
||||
info?: Record<string, any>;
|
||||
error?: Record<string, any>;
|
||||
details?: Record<string, any>;
|
||||
}>('/api/health/disk', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 此处后端没有提供注释 GET /api/health/memory-heap */
|
||||
export async function healthCheckMemoryHeap(options?: RequestOptions) {
|
||||
return request<{
|
||||
status?: string;
|
||||
info?: Record<string, any>;
|
||||
error?: Record<string, any>;
|
||||
details?: Record<string, any>;
|
||||
}>('/api/health/memory-heap', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 此处后端没有提供注释 GET /api/health/memory-rss */
|
||||
export async function healthCheckMemoryRss(options?: RequestOptions) {
|
||||
return request<{
|
||||
status?: string;
|
||||
info?: Record<string, any>;
|
||||
error?: Record<string, any>;
|
||||
details?: Record<string, any>;
|
||||
}>('/api/health/memory-rss', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 此处后端没有提供注释 GET /api/health/network */
|
||||
export async function healthCheckNetwork(options?: RequestOptions) {
|
||||
return request<{
|
||||
status?: string;
|
||||
info?: Record<string, any>;
|
||||
error?: Record<string, any>;
|
||||
details?: Record<string, any>;
|
||||
}>('/api/health/network', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
54
apps/platform/src/api/backend/api/index.ts
Normal file
@ -0,0 +1,54 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
// API 更新时间:
|
||||
// API 唯一标识:
|
||||
import * as auth from './auth';
|
||||
import * as account from './account';
|
||||
import * as captcha from './captcha';
|
||||
import * as authEmail from './authEmail';
|
||||
import * as systemUser from './systemUser';
|
||||
import * as systemRole from './systemRole';
|
||||
import * as systemMenu from './systemMenu';
|
||||
import * as systemParamConfig from './systemParamConfig';
|
||||
import * as systemLog from './systemLog';
|
||||
import * as systemDept from './systemDept';
|
||||
import * as systemDictType from './systemDictType';
|
||||
import * as systemDictItem from './systemDictItem';
|
||||
import * as systemTask from './systemTask';
|
||||
import * as systemOnline from './systemOnline';
|
||||
import * as systemSse from './systemSse';
|
||||
import * as systemServe from './systemServe';
|
||||
import * as toolsStorage from './toolsStorage';
|
||||
import * as systemEmail from './systemEmail';
|
||||
import * as toolsUpload from './toolsUpload';
|
||||
import * as health from './health';
|
||||
import * as netDiskManage from './netDiskManage';
|
||||
import * as netDiskOverview from './netDiskOverview';
|
||||
import * as businessTodo from './businessTodo';
|
||||
import * as user from './user';
|
||||
export default {
|
||||
auth,
|
||||
account,
|
||||
captcha,
|
||||
authEmail,
|
||||
systemUser,
|
||||
systemRole,
|
||||
systemMenu,
|
||||
systemParamConfig,
|
||||
systemLog,
|
||||
systemDept,
|
||||
systemDictType,
|
||||
systemDictItem,
|
||||
systemTask,
|
||||
systemOnline,
|
||||
systemSse,
|
||||
systemServe,
|
||||
toolsStorage,
|
||||
systemEmail,
|
||||
toolsUpload,
|
||||
health,
|
||||
netDiskManage,
|
||||
netDiskOverview,
|
||||
businessTodo,
|
||||
user,
|
||||
};
|
133
apps/platform/src/api/backend/api/netDiskManage.ts
Normal file
@ -0,0 +1,133 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 复制文件或文件夹,支持批量 POST /api/netdisk/manage/copy */
|
||||
export async function netDiskManageCopy(body: API.FileOpDto, options?: RequestOptions) {
|
||||
return request<any>('/api/netdisk/manage/copy', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 剪切文件或文件夹,支持批量 POST /api/netdisk/manage/cut */
|
||||
export async function netDiskManageCut(body: API.FileOpDto, options?: RequestOptions) {
|
||||
return request<any>('/api/netdisk/manage/cut', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除文件或文件夹 POST /api/netdisk/manage/delete */
|
||||
export async function netDiskManageDelete(body: API.DeleteDto, options?: RequestOptions) {
|
||||
return request<any>('/api/netdisk/manage/delete', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取下载链接,不支持下载文件夹 GET /api/netdisk/manage/download */
|
||||
export async function netDiskManageDownload(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.NetDiskManageDownloadParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<string>('/api/netdisk/manage/download', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取文件详细信息 GET /api/netdisk/manage/info */
|
||||
export async function netDiskManageInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.NetDiskManageInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<API.SFileInfoDetail>('/api/netdisk/manage/info', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取文件列表 GET /api/netdisk/manage/list */
|
||||
export async function netDiskManageList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.NetDiskManageListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<API.SFileList>('/api/netdisk/manage/list', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 添加文件备注 POST /api/netdisk/manage/mark */
|
||||
export async function netDiskManageMark(body: API.MarkFileDto, options?: RequestOptions) {
|
||||
return request<any>('/api/netdisk/manage/mark', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 创建文件夹,支持多级 POST /api/netdisk/manage/mkdir */
|
||||
export async function netDiskManageMkdir(body: API.MKDirDto, options?: RequestOptions) {
|
||||
return request<any>('/api/netdisk/manage/mkdir', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 重命名文件或文件夹 POST /api/netdisk/manage/rename */
|
||||
export async function netDiskManageRename(body: API.RenameDto, options?: RequestOptions) {
|
||||
return request<any>('/api/netdisk/manage/rename', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取上传Token,无Token前端无法上传 GET /api/netdisk/manage/token */
|
||||
export async function netDiskManageToken(options?: RequestOptions) {
|
||||
return request<API.UploadToken>('/api/netdisk/manage/token', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
16
apps/platform/src/api/backend/api/netDiskOverview.ts
Normal file
@ -0,0 +1,16 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取网盘空间数据统计 GET /api/netdisk/overview/desc */
|
||||
export async function netDiskOverviewSpace(options?: RequestOptions) {
|
||||
return request<API.OverviewSpaceInfo>('/api/netdisk/overview/desc', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
82
apps/platform/src/api/backend/api/systemDept.ts
Normal file
@ -0,0 +1,82 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取部门列表 GET /api/system/depts */
|
||||
export async function deptList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DeptListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<API.DeptEntity[]>('/api/system/depts', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 创建部门 POST /api/system/depts */
|
||||
export async function deptCreate(body: API.DeptDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/depts', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询部门信息 GET /api/system/depts/${param0} */
|
||||
export async function deptInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DeptInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.DeptEntity>(`/api/system/depts/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新部门 PUT /api/system/depts/${param0} */
|
||||
export async function deptUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DeptUpdateParams,
|
||||
body: API.DeptDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/depts/${param0}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除部门 DELETE /api/system/depts/${param0} */
|
||||
export async function deptDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DeptDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/depts/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
91
apps/platform/src/api/backend/api/systemDictItem.ts
Normal file
@ -0,0 +1,91 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取字典项列表 GET /api/system/dict-item */
|
||||
export async function dictItemList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictItemListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.DictItemEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/dict-item', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 新增字典项 POST /api/system/dict-item */
|
||||
export async function dictItemCreate(body: API.DictItemDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/dict-item', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询字典项信息 GET /api/system/dict-item/${param0} */
|
||||
export async function dictItemInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictItemInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.DictItemEntity>(`/api/system/dict-item/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新字典项 POST /api/system/dict-item/${param0} */
|
||||
export async function dictItemUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictItemUpdateParams,
|
||||
body: API.DictItemDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/dict-item/${param0}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除指定的字典项 DELETE /api/system/dict-item/${param0} */
|
||||
export async function dictItemDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictItemDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/dict-item/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
99
apps/platform/src/api/backend/api/systemDictType.ts
Normal file
@ -0,0 +1,99 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取字典类型列表 GET /api/system/dict-type */
|
||||
export async function dictTypeList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictTypeListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.DictTypeEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/dict-type', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 新增字典类型 POST /api/system/dict-type */
|
||||
export async function dictTypeCreate(body: API.DictTypeDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/dict-type', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询字典类型信息 GET /api/system/dict-type/${param0} */
|
||||
export async function dictTypeInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictTypeInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.DictTypeEntity>(`/api/system/dict-type/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新字典类型 POST /api/system/dict-type/${param0} */
|
||||
export async function dictTypeUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictTypeUpdateParams,
|
||||
body: API.DictTypeDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/dict-type/${param0}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除指定的字典类型 DELETE /api/system/dict-type/${param0} */
|
||||
export async function dictTypeDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.DictTypeDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/dict-type/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 一次性获取所有的字典类型(不分页) GET /api/system/dict-type/select-options */
|
||||
export async function dictTypeGetAll(options?: RequestOptions) {
|
||||
return request<API.DictTypeEntity[]>('/api/system/dict-type/select-options', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
20
apps/platform/src/api/backend/api/systemEmail.ts
Normal file
@ -0,0 +1,20 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 发送邮件 POST /api/tools/email/send */
|
||||
export async function emailSend(body: API.EmailSendDto, options?: RequestOptions) {
|
||||
return request<any>('/api/tools/email/send', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
80
apps/platform/src/api/backend/api/systemLog.ts
Normal file
@ -0,0 +1,80 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 查询验证码日志列表 GET /api/system/log/captcha/list */
|
||||
export async function logCaptchaList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.LogCaptchaListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.CaptchaLogEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/log/captcha/list', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询登录日志列表 GET /api/system/log/login/list */
|
||||
export async function logLoginLogPage(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.LogLoginLogPageParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.LoginLogInfo[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/log/login/list', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询任务日志列表 GET /api/system/log/task/list */
|
||||
export async function logTaskList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.LogTaskListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.TaskLogEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/log/task/list', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
90
apps/platform/src/api/backend/api/systemMenu.ts
Normal file
@ -0,0 +1,90 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取所有菜单列表 GET /api/system/menus */
|
||||
export async function menuList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.MenuListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<API.MenuItemInfo[]>('/api/system/menus', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 新增菜单或权限 POST /api/system/menus */
|
||||
export async function menuCreate(body: API.MenuDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/menus', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取菜单或权限信息 GET /api/system/menus/${param0} */
|
||||
export async function menuInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.MenuInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/menus/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新菜单或权限 PUT /api/system/menus/${param0} */
|
||||
export async function menuUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.MenuUpdateParams,
|
||||
body: API.MenuUpdateDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/menus/${param0}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除菜单或权限 DELETE /api/system/menus/${param0} */
|
||||
export async function menuDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.MenuDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/menus/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取后端定义的所有权限集 GET /api/system/menus/permissions */
|
||||
export async function menuGetPermissions(options?: RequestOptions) {
|
||||
return request<string[]>('/api/system/menus/permissions', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
28
apps/platform/src/api/backend/api/systemOnline.ts
Normal file
@ -0,0 +1,28 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 下线指定在线用户 POST /api/system/online/kick */
|
||||
export async function onlineKick(body: API.KickDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/online/kick', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询当前在线用户 GET /api/system/online/list */
|
||||
export async function onlineList(options?: RequestOptions) {
|
||||
return request<API.OnlineUserInfo[]>('/api/system/online/list', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
91
apps/platform/src/api/backend/api/systemParamConfig.ts
Normal file
@ -0,0 +1,91 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取参数配置列表 GET /api/system/param-config */
|
||||
export async function paramConfigList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.ParamConfigListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.ParamConfigEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/param-config', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 新增参数配置 POST /api/system/param-config */
|
||||
export async function paramConfigCreate(body: API.ParamConfigDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/param-config', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询参数配置信息 GET /api/system/param-config/${param0} */
|
||||
export async function paramConfigInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.ParamConfigInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.ParamConfigEntity>(`/api/system/param-config/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新参数配置 POST /api/system/param-config/${param0} */
|
||||
export async function paramConfigUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.ParamConfigUpdateParams,
|
||||
body: API.ParamConfigDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/param-config/${param0}`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除指定的参数配置 DELETE /api/system/param-config/${param0} */
|
||||
export async function paramConfigDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.ParamConfigDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/param-config/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
91
apps/platform/src/api/backend/api/systemRole.ts
Normal file
@ -0,0 +1,91 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取角色列表 GET /api/system/roles */
|
||||
export async function roleList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.RoleListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.RoleEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/roles', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 新增角色 POST /api/system/roles */
|
||||
export async function roleCreate(body: API.RoleDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/roles', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取角色信息 GET /api/system/roles/${param0} */
|
||||
export async function roleInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.RoleInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.RoleInfo>(`/api/system/roles/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新角色 PUT /api/system/roles/${param0} */
|
||||
export async function roleUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.RoleUpdateParams,
|
||||
body: API.RoleUpdateDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/roles/${param0}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除角色 DELETE /api/system/roles/${param0} */
|
||||
export async function roleDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.RoleDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/roles/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
16
apps/platform/src/api/backend/api/systemServe.ts
Normal file
@ -0,0 +1,16 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取服务器运行信息 GET /api/system/serve/stat */
|
||||
export async function serveStat(options?: RequestOptions) {
|
||||
return request<API.ServeStatInfo>('/api/system/serve/stat', {
|
||||
method: 'GET',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
22
apps/platform/src/api/backend/api/systemSse.ts
Normal file
@ -0,0 +1,22 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 服务端推送消息 GET /api/sse/${param0} */
|
||||
export async function sseSse(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.SseSseParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { uid: param0, ...queryParams } = params;
|
||||
return request<Record<string, any>>(`/api/sse/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
133
apps/platform/src/api/backend/api/systemTask.ts
Normal file
@ -0,0 +1,133 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取任务列表 GET /api/system/tasks */
|
||||
export async function taskList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.TaskEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/tasks', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 添加任务 POST /api/system/tasks */
|
||||
export async function taskCreate(body: API.TaskDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/tasks', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询任务详细信息 GET /api/system/tasks/${param0} */
|
||||
export async function taskInfo(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskInfoParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.TaskEntity>(`/api/system/tasks/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新任务 PUT /api/system/tasks/${param0} */
|
||||
export async function taskUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskUpdateParams,
|
||||
body: API.TaskUpdateDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/tasks/${param0}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除任务 DELETE /api/system/tasks/${param0} */
|
||||
export async function taskDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/tasks/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 手动执行一次任务 PUT /api/system/tasks/${param0}/once */
|
||||
export async function taskOnce(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskOnceParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/tasks/${param0}/once`, {
|
||||
method: 'PUT',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 启动任务 PUT /api/system/tasks/${param0}/start */
|
||||
export async function taskStart(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskStartParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/tasks/${param0}/start`, {
|
||||
method: 'PUT',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 停止任务 PUT /api/system/tasks/${param0}/stop */
|
||||
export async function taskStop(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.TaskStopParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/tasks/${param0}/stop`, {
|
||||
method: 'PUT',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
110
apps/platform/src/api/backend/api/systemUser.ts
Normal file
@ -0,0 +1,110 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 获取用户列表 GET /api/system/users */
|
||||
export async function userList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.UserListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.UserEntity[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/system/users', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 新增用户 POST /api/system/users */
|
||||
export async function userCreate(body: API.UserDto, options?: RequestOptions) {
|
||||
return request<any>('/api/system/users', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '创建成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询用户 GET /api/system/users/${param0} */
|
||||
export async function userRead(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.UserReadParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<API.UserEntity>(`/api/system/users/${param0}`, {
|
||||
method: 'GET',
|
||||
params: { ...queryParams },
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更新用户 PUT /api/system/users/${param0} */
|
||||
export async function userUpdate(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.UserUpdateParams,
|
||||
body: API.UserUpdateDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/users/${param0}`, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || { successMsg: '更新成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除用户 DELETE /api/system/users/${param0} */
|
||||
export async function userDelete(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.UserDeleteParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/users/${param0}`, {
|
||||
method: 'DELETE',
|
||||
params: { ...queryParams },
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 更改用户密码 POST /api/system/users/${param0}/password */
|
||||
export async function userPassword(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.UserPasswordParams,
|
||||
body: API.UserPasswordDto,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
const { id: param0, ...queryParams } = params;
|
||||
return request<any>(`/api/system/users/${param0}/password`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
params: { ...queryParams },
|
||||
data: body,
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
44
apps/platform/src/api/backend/api/toolsStorage.ts
Normal file
@ -0,0 +1,44 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 删除文件 POST /api/tools/storage/delete */
|
||||
export async function storageDelete(body: API.StorageDeleteDto, options?: RequestOptions) {
|
||||
return request<any>('/api/tools/storage/delete', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
data: body,
|
||||
...(options || { successMsg: '删除成功' }),
|
||||
});
|
||||
}
|
||||
|
||||
/** 获取本地存储列表 GET /api/tools/storage/list */
|
||||
export async function storageList(
|
||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||
params: API.StorageListParams,
|
||||
options?: RequestOptions,
|
||||
) {
|
||||
return request<{
|
||||
items?: API.StorageInfo[];
|
||||
meta?: {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
}>('/api/tools/storage/list', {
|
||||
method: 'GET',
|
||||
params: {
|
||||
...params,
|
||||
},
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
40
apps/platform/src/api/backend/api/toolsUpload.ts
Normal file
@ -0,0 +1,40 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
/**
|
||||
* 该文件为 @umijs/openapi 插件自动生成,请勿随意修改。如需修改请通过配置 openapi.config.ts 进行定制化。
|
||||
* */
|
||||
|
||||
import { request, type RequestOptions } from '@/utils/request';
|
||||
|
||||
/** 上传 POST /api/tools/upload */
|
||||
export async function uploadUpload(body: API.FileUploadDto, file?: File, options?: RequestOptions) {
|
||||
const formData = new FormData();
|
||||
|
||||
if (file) {
|
||||
formData.append('file', file);
|
||||
}
|
||||
|
||||
Object.keys(body).forEach((ele) => {
|
||||
const item = (body as any)[ele];
|
||||
|
||||
if (item !== undefined && item !== null) {
|
||||
if (typeof item === 'object' && !(item instanceof File)) {
|
||||
if (item instanceof Array) {
|
||||
item.forEach((f) => formData.append(ele, f || ''));
|
||||
} else {
|
||||
formData.append(ele, JSON.stringify(item));
|
||||
}
|
||||
} else {
|
||||
formData.append(ele, item);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return request<any>('/api/tools/upload', {
|
||||
method: 'POST',
|
||||
data: formData,
|
||||
requestType: 'form',
|
||||
...(options || {}),
|
||||
});
|
||||
}
|
1284
apps/platform/src/api/backend/api/typings.d.ts
vendored
Normal file
29
apps/platform/src/api/backend/api/user.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
enum Api {
|
||||
Login = '/boyanghu/iotree-service/platform/login',
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 登录接口参数
|
||||
*/
|
||||
export interface LoginParams {
|
||||
phone: string;
|
||||
type: number; // 0短信 1密码
|
||||
code?: string;
|
||||
password?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 用户登录
|
||||
*/
|
||||
export function loginApi(params: LoginParams) {
|
||||
return request({
|
||||
url: Api.Login,
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
data: params,
|
||||
});
|
||||
}
|
11
apps/platform/src/api/demo/dict.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
export type DictType = 'gender' | 'sell_status';
|
||||
|
||||
export async function getDictData(params: { type: DictType }) {
|
||||
return request<LabelValueOptions>({
|
||||
url: '/dict/data',
|
||||
method: 'GET',
|
||||
params,
|
||||
});
|
||||
}
|
33
apps/platform/src/api/demo/hero.ts
Normal file
@ -0,0 +1,33 @@
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
/**
|
||||
* @description 获取王者荣耀英雄列表
|
||||
*/
|
||||
export function getWzryHeroList(query: API.PageParams) {
|
||||
return request({
|
||||
url: '/demo/wzry/hero_list',
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取英雄联盟英雄列表
|
||||
*/
|
||||
export function getLolHeroList(query: API.PageParams) {
|
||||
return request({
|
||||
url: '/demo/lol/hero_list',
|
||||
method: 'get',
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取英雄联盟英雄列表
|
||||
*/
|
||||
export function getLolHeroInfo({ id }) {
|
||||
return request({
|
||||
url: `/demo/lol/hero_info/${id}`,
|
||||
method: 'get',
|
||||
});
|
||||
}
|
14
apps/platform/src/api/demo/select.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
interface DemoOptionsItem {
|
||||
name: string;
|
||||
id: string;
|
||||
}
|
||||
|
||||
export async function optionsListApi(params?: Recordable) {
|
||||
return request<DemoOptionsItem[]>({
|
||||
url: '/select/getDemoOptions',
|
||||
method: 'GET',
|
||||
params,
|
||||
});
|
||||
}
|
26
apps/platform/src/api/demo/user.ts
Normal file
@ -0,0 +1,26 @@
|
||||
import { request } from '@/utils/request';
|
||||
|
||||
enum Api {
|
||||
Login = '/boyanghu/iotree-service/platform/login',
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 登录接口参数
|
||||
*/
|
||||
export interface LoginParams {
|
||||
phone: string;
|
||||
password?: string;
|
||||
code?: string;
|
||||
type: number; // 0短信 1密码
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 用户登录
|
||||
*/
|
||||
export function loginApi(params: LoginParams) {
|
||||
return request({
|
||||
url: Api.Login,
|
||||
method: 'POST',
|
||||
data: params,
|
||||
});
|
||||
}
|
5
apps/platform/src/api/index.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import Api from './backend/api';
|
||||
|
||||
export { Api };
|
||||
|
||||
export default Api;
|
36
apps/platform/src/api/typings.d.ts
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
// @ts-ignore
|
||||
/* eslint-disable */
|
||||
|
||||
declare namespace API {
|
||||
/** 全局通过表格查询返回结果 */
|
||||
type TableListResult<T = any> = {
|
||||
items?: T;
|
||||
meta?: PaginationResult;
|
||||
};
|
||||
|
||||
/** 全局通用表格分页返回数据结构 */
|
||||
type PaginationResult = {
|
||||
itemCount?: number;
|
||||
totalItems?: number;
|
||||
itemsPerPage?: number;
|
||||
totalPages?: number;
|
||||
currentPage?: number;
|
||||
};
|
||||
|
||||
/** 全局通用表格分页请求参数 */
|
||||
type PageParams<T = any> = {
|
||||
page?: number;
|
||||
pageSize?: number;
|
||||
} & {
|
||||
[P in keyof T]?: T[P];
|
||||
};
|
||||
|
||||
type ErrorResponse = {
|
||||
/** 业务约定的错误码 */
|
||||
errorCode: string;
|
||||
/** 业务上的错误信息 */
|
||||
errorMessage?: string;
|
||||
/** 业务上的请求是否成功 */
|
||||
success?: boolean;
|
||||
};
|
||||
}
|
BIN
apps/platform/src/assets/404.gif
Normal file
After Width: | Height: | Size: 160 KiB |
1
apps/platform/src/assets/analysis.svg
Normal file
After Width: | Height: | Size: 12 KiB |
39
apps/platform/src/assets/icons/dark.svg
Normal file
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1">
|
||||
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
|
||||
<feMerge>
|
||||
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect>
|
||||
<filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4">
|
||||
<feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
|
||||
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
|
||||
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
|
||||
</filter>
|
||||
</defs>
|
||||
<g id="配置面板" width="48" height="40" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="setting-copy-2" width="48" height="40" transform="translate(-1190.000000, -136.000000)">
|
||||
<g id="Group-8" width="48" height="40" transform="translate(1167.000000, 0.000000)">
|
||||
<g id="Group-5-Copy-5" filter="url(#filter-1)" transform="translate(25.000000, 137.000000)">
|
||||
<mask id="mask-3" fill="white">
|
||||
<use xlink:href="#path-2"></use>
|
||||
</mask>
|
||||
<g id="Rectangle-18">
|
||||
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
|
||||
<use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use>
|
||||
</g>
|
||||
<rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="48" height="10"></rect>
|
||||
<rect id="Rectangle-18" fill="#303648" mask="url(#mask-3)" x="0" y="0" width="16" height="40"></rect>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
1
apps/platform/src/assets/icons/file-type-code.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506354975" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2334" width="64" height="64"><path d="M137.90246 0.00041a48.573421 48.573421 0 0 0-35.589106 15.293433A53.964778 53.964778 0 0 0 87.0404 50.934149V968.345622a48.706541 48.706541 0 0 0 15.272954 35.640306 49.97118 49.97118 0 0 0 35.589106 15.293434h746.336982a48.639981 48.639981 0 0 0 35.589105-15.293434 50.37054 50.37054 0 0 0 15.272954-35.640306V288.717094L646.727857 0.00041H137.90246z" fill="#FF8976" p-id="2335"></path><path d="M935.101501 288.717094h-237.445025c-27.822069-0.6656-50.22718-23.075831-50.928619-50.93374V0.00041l288.373644 288.716684z" fill="#FFD0C8" p-id="2336"></path><path d="M415.257869 564.731064l-124.70267 49.26974 124.70267 49.27486v39.096305l-172.175291-68.756453v-39.096304l172.175291-68.756453v38.963185zM539.02358 451.686629h39.045104l-95.016922 254.801818h-38.978544l94.950362-254.801818z m67.860452 212.377515l124.702671-49.26974-124.702671-49.269741v-39.101424l172.175292 67.957733v39.895024l-172.175292 68.823012V664.064144z" fill="#FFFFFF" p-id="2337"></path></svg>
|
After Width: | Height: | Size: 1.1 KiB |
1
apps/platform/src/assets/icons/file-type-dir.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506230415" class="icon" viewBox="0 0 1208 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1594" width="64" height="64"><path d="M132.51584 120.4736h879.4368c33.26976 0 60.2368 26.96704 60.2368 60.23168v409.6c0 33.26976-26.96704 60.2368-60.2368 60.2368H132.51584c-33.26464 0-60.23168-26.96704-60.23168-60.2368v-409.6c0-33.26464 26.96704-60.2368 60.23168-60.2368z" fill="#F9B552" p-id="1595"></path><path d="M469.8368 0c73.18528 0 132.51584 59.33056 132.51584 132.51584v84.3264h469.8368c73.18528 0 132.51584 59.33568 132.51584 132.52096v542.12096c0 73.18528-59.33056 132.51584-132.51584 132.51584H132.51584A132.51584 132.51584 0 0 1 0 891.48416V349.3632c0-4.03456 0.1792-8.06912 0.54272-12.04736A134.25664 134.25664 0 0 1 0 325.2736V132.51584C0 59.33056 59.33056 0 132.51584 0h337.32096z" fill="#FFCF5C" p-id="1596"></path></svg>
|
After Width: | Height: | Size: 853 B |
1
apps/platform/src/assets/icons/file-type-docx.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506254031" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1741" width="64" height="64"><path d="M594.944 0l335.12448 341.31968v563.2c0 65.9968-52.50048 119.48032-117.29408 119.48032H209.54624c-64.7936 0-117.2992-53.5296-117.2992-119.48032V119.48032C92.25216 53.48352 144.75776 0 209.55136 0H594.944z" fill="#5895FF" p-id="1742"></path><path d="M930.06848 341.31968h-211.9168c-64.74752 0-123.20768-59.48928-123.20768-125.4912V0l335.12448 341.31968z" fill="#FFFFFF" fill-opacity=".4" p-id="1743"></path><path d="M427.37664 725.31968V768H259.8144v-42.68032h167.56224zM594.944 640v42.68032H259.8144V640H594.944z m0-85.31968v42.63936H259.8144v-42.63936H594.944z m0-85.36064V512H259.8144v-42.68032H594.944z" fill="#FFFFFF" p-id="1744"></path></svg>
|
After Width: | Height: | Size: 800 B |
1
apps/platform/src/assets/icons/file-type-excel.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506332655" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2186" width="64" height="64"><path d="M594.944 0l335.12448 341.31968v563.2c0 65.9968-52.50048 119.48032-117.29408 119.48032H209.54624c-64.7936 0-117.2992-53.5296-117.2992-119.48032V119.48032C92.25216 53.48352 144.75776 0 209.55136 0H594.944z" fill="#1ABF74" p-id="2187"></path><path d="M930.06848 341.31968h-211.9168c-64.74752 0-123.20768-59.48928-123.20768-125.4912V0l335.12448 341.31968z" fill="#FFFFFF" fill-opacity=".4" p-id="2188"></path><path d="M594.61632 426.82368v0.2304h0.09216V768H566.8352v-0.0512h-83.968 0.04608H399.7696h0.0512-139.91936v-28.3904l0.0512-0.04608v-85.82656h-0.0512v-28.39552h0.0512v-85.82656h-0.09728v-28.39552l0.09216-0.04608V455.168h-0.09216v-28.3904h334.70976l0.04608 0.04608z m-222.62784 226.86208H287.88224v85.82656h84.10624v-85.82656z m83.08224 0h-55.2448v85.82656h55.19872v-85.82656h0.0512z m111.75936 0H482.90816v85.82656H566.784v-85.82656h0.04608z m-194.8416-114.2272H287.88224v85.83168h84.10624v-85.82656z m83.08224 0h-55.2448v85.83168h55.19872v-85.82656h0.0512z m111.75936 0H482.90816v85.83168H566.784v-85.82656h0.04608z m0-84.24448H287.88224v55.808H566.784V455.168l0.04608 0.0512z" fill="#FFFFFF" p-id="2189"></path></svg>
|
After Width: | Height: | Size: 1.2 KiB |
1
apps/platform/src/assets/icons/file-type-img.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506370346" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2482" width="64" height="64"><path d="M137.90246 0.00041a48.573421 48.573421 0 0 0-35.589106 15.293433A53.964778 53.964778 0 0 0 87.0404 50.934149V968.345622a48.706541 48.706541 0 0 0 15.272954 35.640306 49.97118 49.97118 0 0 0 35.589106 15.293434h746.336982a48.639981 48.639981 0 0 0 35.589105-15.293434 50.37054 50.37054 0 0 0 15.272954-35.640306V288.717094L646.727857 0.00041H137.90246z" fill="#FF5562" p-id="2483"></path><path d="M935.101501 288.717094h-237.445025c-27.822069-0.6656-50.22718-23.075831-50.928619-50.93374V0.00041l288.373644 288.716684z" fill="#FFBBC0" p-id="2484"></path><path d="M772.290686 715.069564l-106.239957-164.766655a16.593913 16.593913 0 0 0-14.412794-7.649276 18.851832 18.851832 0 0 0-14.407675 7.649276l-56.837097 88.299485-127.221709-206.131117a16.527353 16.527353 0 0 0-14.407674-7.644157 18.851832 18.851832 0 0 0-14.412795 7.649277L249.656655 715.264123a15.447034 15.447034 0 0 0 0 16.957434 15.667194 15.667194 0 0 0 14.407675 8.509436h493.547322a18.851832 18.851832 0 0 0 15.272954-8.509436 16.977913 16.977913 0 0 0-0.7936-16.957434l0.19968-0.199679zM628.070584 403.149048a42.490863 42.490863 0 0 0 26.14271 39.306225 42.388463 42.388463 0 0 0 46.264301-9.169917 42.531823 42.531823 0 0 0 9.226236-46.310381 42.429423 42.429423 0 0 0-39.203824-26.24511c-23.408631 0-42.393583 18.979832-42.434543 42.419183z" fill="#FFFFFF" p-id="2485"></path></svg>
|
After Width: | Height: | Size: 1.5 KiB |
1
apps/platform/src/assets/icons/file-type-music.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506298580" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2038" width="64" height="64"><path d="M594.944 0l335.12448 341.31968v563.2c0 65.9968-52.50048 119.48032-117.29408 119.48032H209.54624c-64.7936 0-117.2992-53.5296-117.2992-119.48032V119.48032C92.25216 53.48352 144.75776 0 209.55136 0H594.944z" fill="#FFC547" p-id="2039"></path><path d="M930.06848 341.31968h-211.9168c-64.74752 0-123.20768-59.48928-123.20768-125.4912V0l335.12448 341.31968z" fill="#FFFFFF" fill-opacity=".4" p-id="2040"></path><path d="M568.7808 446.464V675.84a27.2384 27.2384 0 0 1-6.79424 18.24768 45.66016 45.66016 0 0 1-17.31584 12.38016 112.64 112.64 0 0 1-20.80256 6.51776c-6.9376 1.43872-13.40416 2.18624-19.40992 2.18624-6.05184 0-12.52352-0.74752-19.40992-2.14016a112.45568 112.45568 0 0 1-20.80768-6.56384 45.70624 45.70624 0 0 1-17.31584-12.38016A27.22816 27.22816 0 0 1 440.08448 675.84c0-6.84032 2.3296-12.89216 6.84032-18.24768a45.70624 45.70624 0 0 1 17.31584-12.38016c6.98368-2.93376 13.91616-5.12 20.80768-6.51776 6.8864-1.4848 13.35808-2.18624 19.4048-2.18624 14.05952 0 26.95168 2.65216 38.63552 8.00768V534.528L388.608 583.07584v145.21856a27.22816 27.22816 0 0 1-6.79936 18.2016 45.66016 45.66016 0 0 1-17.31584 12.38016 112.64 112.64 0 0 1-20.80256 6.56384c-6.9376 1.39776-13.40416 2.14016-19.40992 2.14016-6.05184 0-12.52352-0.69632-19.40992-2.14016a112.50176 112.50176 0 0 1-20.80768-6.51776A45.70624 45.70624 0 0 1 266.752 746.496a27.23328 27.23328 0 0 1-6.84544-18.24768c0-6.79424 2.3296-12.89216 6.84544-18.19648a45.70624 45.70624 0 0 1 17.31072-12.38016c6.98368-2.93376 13.92128-5.12 20.80768-6.56384a94.80192 94.80192 0 0 1 19.4048-2.14016c14.05952 0 26.9568 2.65216 38.63552 7.95648V498.87232a19.87584 19.87584 0 0 1 13.68576-18.84672l167.28576-52.41344c1.80224-0.57856 3.6864-0.86016 5.5808-0.83968 5.4016 0 9.96352 1.90976 13.68576 5.72928 3.77344 3.86048 5.632 8.46848 5.632 13.96224z" fill="#FFFFFF" p-id="2041"></path></svg>
|
After Width: | Height: | Size: 1.9 KiB |
1
apps/platform/src/assets/icons/file-type-office.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg t="1619506408333" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2778" width="64" height="64"><path d="M116.91008 0h552.05888l262.77376 257.70496V995.4304c0 15.7696-13.19936 28.5696-29.46048 28.5696H116.91008c-16.26112 0-29.45536-12.8-29.45536-28.5696V28.5696C87.4496 12.8 100.64896 0 116.91008 0z" fill="#4A8DFF" p-id="2779"></path><path d="M668.96896 0v229.13536c0 15.79008 13.19936 28.5696 29.46048 28.5696h233.31328L668.96896 0z" fill="#E5F0FF" p-id="2780"></path><path d="M722.7648 823.53664c25.3952 26.96192 71.7056 9.55392 71.7056-26.96704V371.44064h-82.51392v321.97632l-163.96288-174.1824c-7.81312-8.29952-18.87232-13.0304-30.464-13.0304-11.58656 0-22.64064 4.73088-30.45888 13.0304l-163.96288 174.1824v-321.9968H240.62976v425.14944c0 36.52096 46.31552 53.92896 71.71072 26.96704l205.2096-217.99424 205.2096 217.99424z" fill="#FFFFFF" p-id="2781"></path></svg>
|
After Width: | Height: | Size: 919 B |