@ -0,0 +1,15 @@ |
|||
# http://editorconfig.org |
|||
|
|||
root = true |
|||
|
|||
[*] # 表示所有文件适用 |
|||
charset = utf-8 # 设置文件字符集为 utf-8 |
|||
indent_style = space # 缩进风格(tab | space) |
|||
indent_size = 2 # 缩进大小 |
|||
end_of_line = lf # 控制换行类型(lf | cr | crlf) |
|||
trim_trailing_whitespace = true # 去除行首的任意空白字符 |
|||
insert_final_newline = true # 始终在文件末尾插入一个新行 |
|||
|
|||
[*.md] # 表示仅 md 文件适用以下规则 |
|||
max_line_length = off |
|||
trim_trailing_whitespace = false |
@ -0,0 +1,5 @@ |
|||
## 开发环境 |
|||
VITE_APP_ENV = 'development' |
|||
VITE_APP_TITLE = 'vue-vite-project-admin' |
|||
VITE_APP_PORT = 8089 |
|||
VITE_APP_BASE_API = '/dev-api' ## '/dev-api'线上接口 '/mock'本地模拟数据 |
@ -0,0 +1,5 @@ |
|||
## 生产环境 |
|||
VITE_APP_ENV = 'production' |
|||
VITE_APP_TITLE = 'vue-vite-project-admin' |
|||
VITE_APP_PORT = 8089 |
|||
VITE_APP_BASE_API = 'http://10.10.10.56:9000/' |
@ -0,0 +1,5 @@ |
|||
## 模拟环境 |
|||
VITE_APP_ENV = 'staging' |
|||
VITE_APP_TITLE = 'vue-vite-project-admin' |
|||
VITE_APP_PORT = 8089 |
|||
VITE_APP_BASE_API = '/mock' |
@ -0,0 +1,19 @@ |
|||
*.sh |
|||
node_modules |
|||
*.md |
|||
*.woff |
|||
*.ttf |
|||
.vscode |
|||
.idea |
|||
dist |
|||
/public |
|||
/docs |
|||
.husky |
|||
.local |
|||
/bin |
|||
.eslintrc.js |
|||
prettier.config.js |
|||
src/assets |
|||
|
|||
auto-imports.d.ts |
|||
components.d.ts |
@ -0,0 +1,269 @@ |
|||
{ |
|||
"globals": { |
|||
"EffectScope": true, |
|||
"ElForm": true, |
|||
"ElMessage": true, |
|||
"ElMessageBox": true, |
|||
"ElTree": true, |
|||
"asyncComputed": true, |
|||
"autoResetRef": true, |
|||
"computed": true, |
|||
"computedAsync": true, |
|||
"computedEager": true, |
|||
"computedInject": true, |
|||
"computedWithControl": true, |
|||
"controlledComputed": true, |
|||
"controlledRef": true, |
|||
"createApp": true, |
|||
"createEventHook": true, |
|||
"createGlobalState": true, |
|||
"createInjectionState": true, |
|||
"createReactiveFn": true, |
|||
"createSharedComposable": true, |
|||
"createUnrefFn": true, |
|||
"customRef": true, |
|||
"debouncedRef": true, |
|||
"debouncedWatch": true, |
|||
"defineAsyncComponent": true, |
|||
"defineComponent": true, |
|||
"eagerComputed": true, |
|||
"effectScope": true, |
|||
"extendRef": true, |
|||
"getCurrentInstance": true, |
|||
"getCurrentScope": true, |
|||
"h": true, |
|||
"ignorableWatch": true, |
|||
"inject": true, |
|||
"isDefined": true, |
|||
"isProxy": true, |
|||
"isReactive": true, |
|||
"isReadonly": true, |
|||
"isRef": true, |
|||
"makeDestructurable": true, |
|||
"markRaw": true, |
|||
"nextTick": true, |
|||
"onActivated": true, |
|||
"onBeforeMount": true, |
|||
"onBeforeUnmount": true, |
|||
"onBeforeUpdate": true, |
|||
"onClickOutside": true, |
|||
"onDeactivated": true, |
|||
"onErrorCaptured": true, |
|||
"onKeyStroke": true, |
|||
"onLongPress": true, |
|||
"onMounted": true, |
|||
"onRenderTracked": true, |
|||
"onRenderTriggered": true, |
|||
"onScopeDispose": true, |
|||
"onServerPrefetch": true, |
|||
"onStartTyping": true, |
|||
"onUnmounted": true, |
|||
"onUpdated": true, |
|||
"pausableWatch": true, |
|||
"provide": true, |
|||
"reactify": true, |
|||
"reactifyObject": true, |
|||
"reactive": true, |
|||
"reactiveComputed": true, |
|||
"reactiveOmit": true, |
|||
"reactivePick": true, |
|||
"readonly": true, |
|||
"ref": true, |
|||
"refAutoReset": true, |
|||
"refDebounced": true, |
|||
"refDefault": true, |
|||
"refThrottled": true, |
|||
"refWithControl": true, |
|||
"resolveComponent": true, |
|||
"resolveDirective": true, |
|||
"resolveRef": true, |
|||
"resolveUnref": true, |
|||
"shallowReactive": true, |
|||
"shallowReadonly": true, |
|||
"shallowRef": true, |
|||
"syncRef": true, |
|||
"syncRefs": true, |
|||
"templateRef": true, |
|||
"throttledRef": true, |
|||
"throttledWatch": true, |
|||
"toRaw": true, |
|||
"toReactive": true, |
|||
"toRef": true, |
|||
"toRefs": true, |
|||
"triggerRef": true, |
|||
"tryOnBeforeMount": true, |
|||
"tryOnBeforeUnmount": true, |
|||
"tryOnMounted": true, |
|||
"tryOnScopeDispose": true, |
|||
"tryOnUnmounted": true, |
|||
"unref": true, |
|||
"unrefElement": true, |
|||
"until": true, |
|||
"useActiveElement": true, |
|||
"useArrayEvery": true, |
|||
"useArrayFilter": true, |
|||
"useArrayFind": true, |
|||
"useArrayFindIndex": true, |
|||
"useArrayFindLast": true, |
|||
"useArrayJoin": true, |
|||
"useArrayMap": true, |
|||
"useArrayReduce": true, |
|||
"useArraySome": true, |
|||
"useArrayUnique": true, |
|||
"useAsyncQueue": true, |
|||
"useAsyncState": true, |
|||
"useAttrs": true, |
|||
"useBase64": true, |
|||
"useBattery": true, |
|||
"useBluetooth": true, |
|||
"useBreakpoints": true, |
|||
"useBroadcastChannel": true, |
|||
"useBrowserLocation": true, |
|||
"useCached": true, |
|||
"useClipboard": true, |
|||
"useCloned": true, |
|||
"useColorMode": true, |
|||
"useConfirmDialog": true, |
|||
"useCounter": true, |
|||
"useCssModule": true, |
|||
"useCssVar": true, |
|||
"useCssVars": true, |
|||
"useCurrentElement": true, |
|||
"useCycleList": true, |
|||
"useDark": true, |
|||
"useDateFormat": true, |
|||
"useDebounce": true, |
|||
"useDebounceFn": true, |
|||
"useDebouncedRefHistory": true, |
|||
"useDeviceMotion": true, |
|||
"useDeviceOrientation": true, |
|||
"useDevicePixelRatio": true, |
|||
"useDevicesList": true, |
|||
"useDisplayMedia": true, |
|||
"useDocumentVisibility": true, |
|||
"useDraggable": true, |
|||
"useDropZone": true, |
|||
"useElementBounding": true, |
|||
"useElementByPoint": true, |
|||
"useElementHover": true, |
|||
"useElementSize": true, |
|||
"useElementVisibility": true, |
|||
"useEventBus": true, |
|||
"useEventListener": true, |
|||
"useEventSource": true, |
|||
"useEyeDropper": true, |
|||
"useFavicon": true, |
|||
"useFetch": true, |
|||
"useFileDialog": true, |
|||
"useFileSystemAccess": true, |
|||
"useFocus": true, |
|||
"useFocusWithin": true, |
|||
"useFps": true, |
|||
"useFullscreen": true, |
|||
"useGamepad": true, |
|||
"useGeolocation": true, |
|||
"useIdle": true, |
|||
"useImage": true, |
|||
"useInfiniteScroll": true, |
|||
"useIntersectionObserver": true, |
|||
"useInterval": true, |
|||
"useIntervalFn": true, |
|||
"useKeyModifier": true, |
|||
"useLastChanged": true, |
|||
"useLocalStorage": true, |
|||
"useMagicKeys": true, |
|||
"useManualRefHistory": true, |
|||
"useMediaControls": true, |
|||
"useMediaQuery": true, |
|||
"useMemoize": true, |
|||
"useMemory": true, |
|||
"useMounted": true, |
|||
"useMouse": true, |
|||
"useMouseInElement": true, |
|||
"useMousePressed": true, |
|||
"useMutationObserver": true, |
|||
"useNavigatorLanguage": true, |
|||
"useNetwork": true, |
|||
"useNow": true, |
|||
"useObjectUrl": true, |
|||
"useOffsetPagination": true, |
|||
"useOnline": true, |
|||
"usePageLeave": true, |
|||
"useParallax": true, |
|||
"usePermission": true, |
|||
"usePointer": true, |
|||
"usePointerLock": true, |
|||
"usePointerSwipe": true, |
|||
"usePreferredColorScheme": true, |
|||
"usePreferredContrast": true, |
|||
"usePreferredDark": true, |
|||
"usePreferredLanguages": true, |
|||
"usePreferredReducedMotion": true, |
|||
"usePrevious": true, |
|||
"useRafFn": true, |
|||
"useRefHistory": true, |
|||
"useResizeObserver": true, |
|||
"useScreenOrientation": true, |
|||
"useScreenSafeArea": true, |
|||
"useScriptTag": true, |
|||
"useScroll": true, |
|||
"useScrollLock": true, |
|||
"useSessionStorage": true, |
|||
"useShare": true, |
|||
"useSlots": true, |
|||
"useSorted": true, |
|||
"useSpeechRecognition": true, |
|||
"useSpeechSynthesis": true, |
|||
"useStepper": true, |
|||
"useStorage": true, |
|||
"useStorageAsync": true, |
|||
"useStyleTag": true, |
|||
"useSupported": true, |
|||
"useSwipe": true, |
|||
"useTemplateRefsList": true, |
|||
"useTextDirection": true, |
|||
"useTextSelection": true, |
|||
"useTextareaAutosize": true, |
|||
"useThrottle": true, |
|||
"useThrottleFn": true, |
|||
"useThrottledRefHistory": true, |
|||
"useTimeAgo": true, |
|||
"useTimeout": true, |
|||
"useTimeoutFn": true, |
|||
"useTimeoutPoll": true, |
|||
"useTimestamp": true, |
|||
"useTitle": true, |
|||
"useToNumber": true, |
|||
"useToString": true, |
|||
"useToggle": true, |
|||
"useTransition": true, |
|||
"useUrlSearchParams": true, |
|||
"useUserMedia": true, |
|||
"useVModel": true, |
|||
"useVModels": true, |
|||
"useVibrate": true, |
|||
"useVirtualList": true, |
|||
"useWakeLock": true, |
|||
"useWebNotification": true, |
|||
"useWebSocket": true, |
|||
"useWebWorker": true, |
|||
"useWebWorkerFn": true, |
|||
"useWindowFocus": true, |
|||
"useWindowScroll": true, |
|||
"useWindowSize": true, |
|||
"watch": true, |
|||
"watchArray": true, |
|||
"watchAtMost": true, |
|||
"watchDebounced": true, |
|||
"watchEffect": true, |
|||
"watchIgnorable": true, |
|||
"watchOnce": true, |
|||
"watchPausable": true, |
|||
"watchPostEffect": true, |
|||
"watchSyncEffect": true, |
|||
"watchThrottled": true, |
|||
"watchTriggerable": true, |
|||
"watchWithFilter": true, |
|||
"whenever": true |
|||
} |
|||
} |
@ -0,0 +1,33 @@ |
|||
|
|||
module.exports = { |
|||
env: { |
|||
browser: true, |
|||
es2021: true, |
|||
node: true, |
|||
}, |
|||
parser: 'vue-eslint-parser', |
|||
// https://eslint.vuejs.org/user-guide/#bundle-configurations
|
|||
extends: [ |
|||
'eslint:recommended', |
|||
'plugin:vue/vue3-essential', |
|||
'plugin:@typescript-eslint/recommended', |
|||
"./.eslintrc-auto-import.json" |
|||
], |
|||
parserOptions: { |
|||
ecmaVersion: 'latest', |
|||
sourceType: 'module', |
|||
parser: '@typescript-eslint/parser', |
|||
}, |
|||
plugins: ['vue', '@typescript-eslint'], |
|||
rules: { |
|||
'vue/multi-word-component-names': 'off', |
|||
'@typescript-eslint/no-empty-function': 'off', // 关闭空方法检查
|
|||
'@typescript-eslint/no-explicit-any': 'off', // 关闭any类型的警告
|
|||
'vue/no-v-model-argument': 'off' |
|||
}, |
|||
// https://eslint.org/docs/latest/use/configure/language-options#specifying-globals
|
|||
globals: { |
|||
DialogOption: 'readonly', |
|||
OptionType:'readonly' |
|||
} |
|||
}; |
@ -0,0 +1,17 @@ |
|||
node_modules |
|||
.DS_Store |
|||
dist |
|||
dist-ssr |
|||
*.local |
|||
|
|||
# Editor directories and files |
|||
.idea |
|||
.vscode |
|||
*.suo |
|||
*.ntvs* |
|||
*.njsproj |
|||
*.sln |
|||
*.local |
|||
|
|||
package-lock.json |
|||
pnpm-lock.yaml |
@ -0,0 +1,9 @@ |
|||
/dist/* |
|||
.local |
|||
.output.js |
|||
/node_modules/** |
|||
|
|||
**/*.svg |
|||
**/*.sh |
|||
|
|||
/public/* |
@ -0,0 +1,38 @@ |
|||
/** |
|||
* 代码格式化配置 |
|||
*/ |
|||
module.exports = { |
|||
// 一行最多 120 字符..
|
|||
printWidth: 120, |
|||
// 指定每个缩进级别的空格数
|
|||
tabWidth: 2, |
|||
// 使用制表符而不是空格缩进行
|
|||
useTabs: false, |
|||
// 在语句末尾打印分号
|
|||
semi: true, |
|||
// 使用单引号而不是双引号
|
|||
singleQuote: true, |
|||
// 更改引用对象属性的时间 可选值"<as-needed|consistent|preserve>"
|
|||
quoteProps: 'as-needed', |
|||
// 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"<none|es5|all>",默认none
|
|||
trailingComma: 'none', |
|||
// 在对象文字中的括号之间打印空格
|
|||
bracketSpacing: true, |
|||
// 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x
|
|||
arrowParens: 'avoid', |
|||
// 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码
|
|||
rangeStart: 0, |
|||
rangeEnd: Infinity, |
|||
// 指定要使用的解析器,不需要写文件开头的 @prettier
|
|||
requirePragma: false, |
|||
// 不需要自动在文件开头插入 @prettier
|
|||
insertPragma: false, |
|||
// 换行设置 always\never\preserve
|
|||
proseWrap: 'preserve', |
|||
// 指定HTML文件的全局空格敏感度 css\strict\ignore
|
|||
htmlWhitespaceSensitivity: 'css', |
|||
// Vue文件脚本和样式标签缩进
|
|||
vueIndentScriptAndStyle: false, |
|||
// 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
|
|||
endOfLine: 'lf' |
|||
}; |
@ -0,0 +1,16 @@ |
|||
# Luenmei Operational Cockpit MS |
|||
|
|||
> 联美运营驾驶舱管理系统 |
|||
|
|||
## Build Setup |
|||
|
|||
``` bash |
|||
# install dependencies |
|||
npm install |
|||
|
|||
# serve with hot reload at localhost:8080 |
|||
npm run dev |
|||
|
|||
# build for production with minification |
|||
npm run build |
|||
``` |
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,117 @@ |
|||
<!DOCTYPE html> |
|||
<html> |
|||
|
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
|||
<meta name="viewport" |
|||
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"> |
|||
<meta name="apple-mobile-web-app-capable" content="yes" /> |
|||
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> |
|||
<meta name="format-detection" content="telphone=no, email=no" /> |
|||
<meta name="format-detection" content="telphone=no, email=no" /> |
|||
<title>联美运营驾驶舱管理系统</title> |
|||
<link rel="icon" href="" type="image/x-icon"> |
|||
<meta name="apple-mobile-web-app-title" content="联美运营驾驶舱管理系统"> |
|||
<meta name="keywords" content="数据大屏,管理系统"> |
|||
<meta name="description" content="联美运营驾驶舱管理系统"> |
|||
<meta name="author" content="Daniel"> |
|||
<meta name="copyright" content="Daniel"> |
|||
<link rel="icon" href="/favicon.ico" type="image/x-icon"> |
|||
<script type="module" src="/src/main.ts"></script> |
|||
<style> |
|||
:root { |
|||
--sk-size: 40px; |
|||
--sk-color: #409eff; |
|||
} |
|||
|
|||
.loading-home { |
|||
width: 100vw; |
|||
height: 100vh; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
z-index: 999999; |
|||
} |
|||
|
|||
.loading-grid { |
|||
width: var(--sk-size); |
|||
height: var(--sk-size); |
|||
} |
|||
|
|||
.loading-cube { |
|||
width: 33.33%; |
|||
height: 33.33%; |
|||
background-color: var(--sk-color); |
|||
float: left; |
|||
animation: loading-grid 1.3s infinite ease-in-out; |
|||
} |
|||
|
|||
.loading-cube:nth-child(1) { |
|||
animation-delay: 0.2s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(2) { |
|||
animation-delay: 0.3s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(3) { |
|||
animation-delay: 0.4s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(4) { |
|||
animation-delay: 0.1s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(5) { |
|||
animation-delay: 0.2s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(6) { |
|||
animation-delay: 0.3s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(7) { |
|||
animation-delay: 0.0s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(8) { |
|||
animation-delay: 0.1s; |
|||
} |
|||
|
|||
.loading-cube:nth-child(9) { |
|||
animation-delay: 0.2s; |
|||
} |
|||
|
|||
@keyframes loading-grid { |
|||
0%, |
|||
70%, |
|||
100% { |
|||
transform: scale3D(1, 1, 1); |
|||
} |
|||
35% { |
|||
transform: scale3D(0, 0, 1); |
|||
} |
|||
} |
|||
</style> |
|||
</head> |
|||
|
|||
<body> |
|||
<div id="app"> |
|||
<div class="loading-home"> |
|||
<div class="loading-grid"> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
<div class="loading-cube"></div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</body> |
|||
|
|||
</html> |
@ -0,0 +1,70 @@ |
|||
{ |
|||
"name": "luenmei-operational-cockpit-ms", |
|||
"version": "1.0.0", |
|||
"scripts": { |
|||
"dev": "vite serve --mode development", |
|||
"build:prod": "vite build --mode production &&vue-tsc --noEmit", |
|||
"build:stage": "vite build --mode staging", |
|||
"serve": "vite preview", |
|||
"lint": "eslint src/**/*.{ts,js,vue} --fix", |
|||
"prepare": "husky install", |
|||
"prettier": "prettier --write ." |
|||
}, |
|||
"dependencies": { |
|||
"@types/mockjs": "^1.0.7", |
|||
"@vueuse/core": "^9.1.1", |
|||
"@wangeditor/editor": "^5.0.0", |
|||
"@wangeditor/editor-for-vue": "^5.1.10", |
|||
"axios": "^1.3.4", |
|||
"echarts": "^5.2.2", |
|||
"element-plus": "^2.2.32", |
|||
"mitt": "^3.0.1", |
|||
"mockjs": "^1.1.0", |
|||
"nprogress": "^0.2.0", |
|||
"path-browserify": "^1.0.1", |
|||
"path-to-regexp": "^6.2.0", |
|||
"pinia": "^2.0.12", |
|||
"screenfull": "^6.0.2", |
|||
"terser": "^5.17.6", |
|||
"vue": "^3.2.45", |
|||
"vue-i18n": "^9.1.9", |
|||
"vue-router": "^4.1.6", |
|||
"vxe-table": "^4.5.6", |
|||
"xe-utils": "^3.5.12", |
|||
"xgplayer": "^3.0.2" |
|||
}, |
|||
"devDependencies": { |
|||
"@commitlint/cli": "^16.2.3", |
|||
"@commitlint/config-conventional": "^16.2.1", |
|||
"@iconify-json/ep": "^1.1.8", |
|||
"@types/nprogress": "^0.2.0", |
|||
"@types/path-browserify": "^1.0.0", |
|||
"@typescript-eslint/eslint-plugin": "^5.19.0", |
|||
"@typescript-eslint/parser": "^5.19.0", |
|||
"@vicons/antd": "^0.12.0", |
|||
"@vicons/ionicons5": "^0.12.0", |
|||
"@vicons/tabler": "^0.12.0", |
|||
"@vitejs/plugin-vue": "^4.2.3", |
|||
"autoprefixer": "^10.4.13", |
|||
"eslint": "^8.34.0", |
|||
"eslint-config-prettier": "^8.5.0", |
|||
"eslint-plugin-prettier": "^4.0.0", |
|||
"eslint-plugin-vue": "^9.9.0", |
|||
"fast-glob": "^3.2.11", |
|||
"husky": "^7.0.4", |
|||
"naive-ui": "^2.34.4", |
|||
"postcss": "^8.4.20", |
|||
"prettier": "^2.6.2", |
|||
"sass": "^1.53.0", |
|||
"typescript": "^4.7.4", |
|||
"unplugin-auto-import": "^0.13.0", |
|||
"unplugin-icons": "^0.15.1", |
|||
"unplugin-vue-components": "^0.23.0", |
|||
"vite": "^4.3.9", |
|||
"vite-plugin-svg-icons": "^2.0.1", |
|||
"vue-eslint-parser": "^9.1.0", |
|||
"vue-tsc": "^0.35.0" |
|||
}, |
|||
"repository": "https://gitee.com/fuguobin/vue-vite-project-admin.git", |
|||
"author": "Daniel" |
|||
} |
After Width: | Height: | Size: 4.2 KiB |
@ -0,0 +1,11 @@ |
|||
<template> |
|||
<el-config-provider :locale="appStore.locale" :size="appStore.size"> |
|||
<router-view /> |
|||
</el-config-provider> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
import { ElConfigProvider } from 'element-plus'; |
|||
import { useAppStore } from '@/store/modules/app'; |
|||
const appStore = useAppStore(); |
|||
</script> |
@ -0,0 +1,37 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { CaptchaResult, LoginData, LoginResult } from './types'; |
|||
|
|||
/** |
|||
* 登录API |
|||
* |
|||
* @param data {LoginData} |
|||
* @returns |
|||
*/ |
|||
export function loginApi(data: LoginData): AxiosPromise<LoginResult> { |
|||
return request({ |
|||
url: '/login', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 注销API |
|||
*/ |
|||
export function logoutApi() { |
|||
return request({ |
|||
url: '/logout', |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取验证码 |
|||
*/ |
|||
export function getCaptchaApi(): AxiosPromise<CaptchaResult> { |
|||
return request({ |
|||
url: '/api/v1/auth/captcha', |
|||
method: 'get' |
|||
}); |
|||
} |
@ -0,0 +1,49 @@ |
|||
/** |
|||
* 登录请求参数 |
|||
*/ |
|||
export interface LoginData { |
|||
/** |
|||
* 用户名 |
|||
*/ |
|||
username: string; |
|||
/** |
|||
* 密码 |
|||
*/ |
|||
password: string; |
|||
} |
|||
|
|||
/** |
|||
* 登录响应 |
|||
*/ |
|||
export interface LoginResult { |
|||
/** |
|||
* 访问token |
|||
*/ |
|||
token?: string; |
|||
/** |
|||
* 过期时间(单位:毫秒) |
|||
*/ |
|||
expires?: number; |
|||
/** |
|||
* 刷新token |
|||
*/ |
|||
refreshToken?: string; |
|||
/** |
|||
* token 类型 |
|||
*/ |
|||
tokenType?: string; |
|||
} |
|||
|
|||
/** |
|||
* 验证码响应 |
|||
*/ |
|||
export interface CaptchaResult { |
|||
/** |
|||
* 验证码缓存key |
|||
*/ |
|||
verifyCodeKey: string; |
|||
/** |
|||
* 验证码图片Base64字符串 |
|||
*/ |
|||
verifyCodeBase64: string; |
|||
} |
@ -0,0 +1,77 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { DeptForm, DeptQuery, DeptVO } from './types'; |
|||
|
|||
/** |
|||
* 部门树形表格 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listDepts(queryParams?: DeptQuery): AxiosPromise<DeptVO[]> { |
|||
return request({ |
|||
url: '/api/v1/dept', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 部门下拉列表 |
|||
*/ |
|||
export function listDeptOptions(): AxiosPromise<[]> { |
|||
return request({ |
|||
url: '/api/v1/dept/options', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取部门详情 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getDeptForm(id: number): AxiosPromise<DeptForm> { |
|||
return request({ |
|||
url: '/api/v1/dept/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 新增部门 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addDept(data: DeptForm) { |
|||
return request({ |
|||
url: '/api/v1/dept', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改部门 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateDept(id: number, data: DeptForm) { |
|||
return request({ |
|||
url: '/api/v1/dept/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除部门 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteDept(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/dept/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
@ -0,0 +1,71 @@ |
|||
/** |
|||
* 部门查询参数 |
|||
*/ |
|||
export interface DeptQuery { |
|||
keywords?: string; |
|||
status?: number; |
|||
} |
|||
|
|||
/** |
|||
* 部门类型 |
|||
*/ |
|||
export interface DeptVO { |
|||
/** |
|||
* 子部门 |
|||
*/ |
|||
children?: DeptVO[]; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 父部门ID |
|||
*/ |
|||
parentId?: number; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 修改时间 |
|||
*/ |
|||
updateTime?: Date; |
|||
} |
|||
|
|||
/** |
|||
* 部门表单类型 |
|||
*/ |
|||
export interface DeptForm { |
|||
/** |
|||
* 部门ID(新增不填) |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 父部门ID |
|||
*/ |
|||
parentId: number; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
} |
@ -0,0 +1,50 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { deviceVo } from './types'; |
|||
|
|||
/** |
|||
* 获取用户部门 |
|||
*/ |
|||
export function getDept(): AxiosPromise<[]> { |
|||
return request({ |
|||
url: '/bi/configuration/getMenu', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取设备列表 |
|||
* |
|||
* @param params 部门Id |
|||
*/ |
|||
export function getDeviceList(params: number): AxiosPromise<deviceVo> { |
|||
return request({ |
|||
url: '/bi/configuration/getDeviceListByDept/'+params, |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取设备列表 |
|||
* |
|||
* @param params 设备Id |
|||
*/ |
|||
export function getViewInfo(params: number): AxiosPromise<deviceVo> { |
|||
return request({ |
|||
url: '/bi/configuration/getViewInfoById/'+params, |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 配置项修改 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function editConfig(data: any) { |
|||
return request({ |
|||
url: '/dc/dcUserMonitorConfig/A', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
@ -0,0 +1,34 @@ |
|||
/** |
|||
* 部门列表 |
|||
*/ |
|||
export interface menuVo { |
|||
createBy: null; |
|||
createTime: null; |
|||
updateBy: null; |
|||
updateTime: null; |
|||
remark: null; |
|||
deptId: number; |
|||
parentId: number; |
|||
ancestors: string; |
|||
deptName: string; |
|||
orderNum: number; |
|||
leader: string; |
|||
phone: string; |
|||
email: string; |
|||
status: string; |
|||
delFlag: null; |
|||
parentName: string; |
|||
children?: menuVo[]; |
|||
} |
|||
|
|||
/** |
|||
* 设备列表 |
|||
*/ |
|||
export interface deviceVo { |
|||
deviceUUID: string; |
|||
deviceName: string; |
|||
partionCounts: number; |
|||
orgCode: number; |
|||
sourceType: string; |
|||
ifControl: number; |
|||
} |
@ -0,0 +1,34 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { FileInfo } from './types'; |
|||
|
|||
/** |
|||
* 上传文件 |
|||
* |
|||
* @param file |
|||
*/ |
|||
export function uploadFileApi(file: File): AxiosPromise<FileInfo> { |
|||
const formData = new FormData(); |
|||
formData.append('file', file); |
|||
return request({ |
|||
url: '/api/v1/files', |
|||
method: 'post', |
|||
data: formData, |
|||
headers: { |
|||
'Content-Type': 'multipart/form-data' |
|||
} |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除文件 |
|||
* |
|||
* @param filePath 文件完整路径 |
|||
*/ |
|||
export function deleteFileApi(filePath?: string) { |
|||
return request({ |
|||
url: '/api/v1/files', |
|||
method: 'delete', |
|||
params: { filePath: filePath } |
|||
}); |
|||
} |
@ -0,0 +1,7 @@ |
|||
/** |
|||
* 文件API类型声明 |
|||
*/ |
|||
export interface FileInfo { |
|||
name: string; |
|||
url: string; |
|||
} |
@ -0,0 +1,87 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { MenuQuery, MenuVO, MenuForm } from './types'; |
|||
|
|||
/** |
|||
* 获取路由列表 |
|||
*/ |
|||
export function listRoutes() { |
|||
return request({ |
|||
url: '/getRouters', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取菜单树形列表 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listMenus(queryParams: MenuQuery): AxiosPromise<MenuVO[]> { |
|||
return request({ |
|||
url: '/system/menu/roleMenuTreeselect', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取菜单下拉树形列表 |
|||
*/ |
|||
export function listMenuOptions(): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/api/v1/menus/options', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取菜单表单数据 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getMenuForm(id: number): AxiosPromise<MenuForm> { |
|||
return request({ |
|||
url: '/api/v1/menus/' + id + '/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加菜单 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addMenu(data: MenuForm) { |
|||
return request({ |
|||
url: '/api/v1/menus', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改菜单 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateMenu(id: string, data: MenuForm) { |
|||
return request({ |
|||
url: '/api/v1/menus/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除菜单 |
|||
* |
|||
* @param id 菜单ID |
|||
*/ |
|||
export function deleteMenu(id: number) { |
|||
return request({ |
|||
url: '/api/v1/menus/' + id, |
|||
method: 'delete' |
|||
}); |
|||
} |
@ -0,0 +1,115 @@ |
|||
import { MenuTypeEnum } from '@/enums/MenuTypeEnum'; |
|||
|
|||
/** |
|||
* 菜单查询参数类型 |
|||
*/ |
|||
export interface MenuQuery { |
|||
keywords?: string; |
|||
} |
|||
|
|||
/** |
|||
* 菜单视图对象类型 |
|||
*/ |
|||
export interface MenuVO { |
|||
/** |
|||
* 子菜单 |
|||
*/ |
|||
children?: MenuVO[]; |
|||
/** |
|||
* 组件路径 |
|||
*/ |
|||
component?: string; |
|||
/** |
|||
* ICON |
|||
*/ |
|||
icon?: string; |
|||
/** |
|||
* 菜单ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 菜单名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 父菜单ID |
|||
*/ |
|||
parentId?: number; |
|||
/** |
|||
* 按钮权限标识 |
|||
*/ |
|||
perm?: string; |
|||
/** |
|||
* 跳转路径 |
|||
*/ |
|||
redirect?: string; |
|||
/** |
|||
* 路由名称 |
|||
*/ |
|||
routeName?: string; |
|||
/** |
|||
* 路由相对路径 |
|||
*/ |
|||
routePath?: string; |
|||
/** |
|||
* 菜单排序(数字越小排名越靠前) |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 菜单类型 |
|||
*/ |
|||
type?: MenuTypeEnum; |
|||
/** |
|||
* 菜单是否可见(1:显示;0:隐藏) |
|||
*/ |
|||
visible?: number; |
|||
} |
|||
|
|||
/** |
|||
* 菜单表单对象类型 |
|||
*/ |
|||
export interface MenuForm { |
|||
/** |
|||
* 菜单ID |
|||
*/ |
|||
id?: string; |
|||
/** |
|||
* 父菜单ID |
|||
*/ |
|||
parentId?: number; |
|||
/** |
|||
* 菜单名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 菜单是否可见(1:是;0:否;) |
|||
*/ |
|||
visible: number; |
|||
icon?: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort: number; |
|||
/** |
|||
* 组件路径 |
|||
*/ |
|||
component?: string; |
|||
/** |
|||
* 路由路径 |
|||
*/ |
|||
path?: string; |
|||
/** |
|||
* 跳转路由路径 |
|||
*/ |
|||
redirect?: string; |
|||
|
|||
/** |
|||
* 菜单类型 |
|||
*/ |
|||
type: MenuTypeEnum; |
|||
|
|||
/** |
|||
* 权限标识 |
|||
*/ |
|||
perm?: string; |
|||
} |
@ -0,0 +1,112 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { RoleQuery, RolePageResult, RoleForm } from './types'; |
|||
|
|||
/** |
|||
* 获取分页数据 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getProPage( |
|||
queryParams?: RoleQuery |
|||
): AxiosPromise<RolePageResult> { |
|||
return request({ |
|||
url: '/api/v1/pro/page', |
|||
method: 'get', |
|||
data: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色下拉数据 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listBrandsOptions( |
|||
queryParams?: RoleQuery |
|||
): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/api/v1/brands/options', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色的菜单ID集合 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getRoleMenuIds(roleId: number): AxiosPromise<number[]> { |
|||
return request({ |
|||
url: '/api/v1/roles/menuIds', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 分配菜单权限给角色 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function updateRoleMenus( |
|||
roleId: number, |
|||
data: number[] |
|||
): AxiosPromise<any> { |
|||
return request({ |
|||
url: '/api/v1/roles/' + roleId + '/menus', |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色详情 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getproForm(id: number): AxiosPromise<RoleForm> { |
|||
return request({ |
|||
url: '/api/v1/pro/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加角色 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addRole(data: RoleForm) { |
|||
return request({ |
|||
url: '/api/v1/roles', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 更新角色 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateRole(id: number, data: RoleForm) { |
|||
return request({ |
|||
url: '/api/v1/roles/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 批量删除角色,多个以英文逗号(,)分割 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteRoles(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/roles/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
@ -0,0 +1,91 @@ |
|||
/** |
|||
* 角色查询参数 |
|||
*/ |
|||
export interface RoleQuery extends PageQuery { |
|||
keywords?: string; |
|||
} |
|||
|
|||
/** |
|||
* 角色分页对象 |
|||
*/ |
|||
export interface RolePageVO { |
|||
/** |
|||
* 角色编码 |
|||
*/ |
|||
code?: string; |
|||
|
|||
/** |
|||
* 角色ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 角色名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 角色状态 |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 修改时间 |
|||
*/ |
|||
updateTime?: Date; |
|||
} |
|||
|
|||
/** |
|||
* 角色分页 |
|||
*/ |
|||
export type RolePageResult = PageResult<RolePageVO[]>; |
|||
|
|||
/** |
|||
* 商品表单对象 |
|||
*/ |
|||
export interface RoleForm { |
|||
/** |
|||
* 角色ID |
|||
*/ |
|||
id?: number; |
|||
|
|||
/** |
|||
* 商品名称 |
|||
*/ |
|||
name: string; |
|||
|
|||
/** |
|||
* 商品品牌 |
|||
*/ |
|||
brands: string; |
|||
|
|||
/** |
|||
* 商品价格 |
|||
*/ |
|||
price?: number; |
|||
|
|||
/** |
|||
* 商品图片 |
|||
*/ |
|||
picture: string; |
|||
|
|||
/** |
|||
* 商品类别 |
|||
*/ |
|||
category?: RoleForm[]; |
|||
|
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
|
|||
/** |
|||
* 介绍 |
|||
*/ |
|||
desc?: string; |
|||
} |
@ -0,0 +1,112 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { RoleQuery, RolePageResult, RoleForm } from './types'; |
|||
|
|||
/** |
|||
* 获取角色分页数据 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getRolePage( |
|||
queryParams?: RoleQuery |
|||
): AxiosPromise<RolePageResult> { |
|||
return request({ |
|||
url: '/api/v1/roles/page', |
|||
method: 'get', |
|||
data: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色下拉数据 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function listRoleOptions( |
|||
queryParams?: RoleQuery |
|||
): AxiosPromise<OptionType[]> { |
|||
return request({ |
|||
url: '/api/v1/roles/options', |
|||
method: 'get', |
|||
params: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色的菜单ID集合 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getRoleMenuIds(roleId: number): AxiosPromise<number[]> { |
|||
return request({ |
|||
url: '/api/v1/roles/menuIds', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 分配菜单权限给角色 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function updateRoleMenus( |
|||
roleId: number, |
|||
data: number[] |
|||
): AxiosPromise<any> { |
|||
return request({ |
|||
url: '/api/v1/roles/' + roleId + '/menus', |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取角色详情 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getRoleForm(id: number): AxiosPromise<RoleForm> { |
|||
return request({ |
|||
url: '/api/v1/roles/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加角色 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addRole(data: RoleForm) { |
|||
return request({ |
|||
url: '/api/v1/roles', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 更新角色 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateRole(id: number, data: RoleForm) { |
|||
return request({ |
|||
url: '/api/v1/roles/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 批量删除角色,多个以英文逗号(,)分割 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteRoles(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/roles/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
@ -0,0 +1,78 @@ |
|||
/** |
|||
* 角色查询参数 |
|||
*/ |
|||
export interface RoleQuery extends PageQuery { |
|||
keywords?: string; |
|||
} |
|||
|
|||
/** |
|||
* 角色分页对象 |
|||
*/ |
|||
export interface RolePageVO { |
|||
/** |
|||
* 角色编码 |
|||
*/ |
|||
code?: string; |
|||
|
|||
/** |
|||
* 角色ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 角色名称 |
|||
*/ |
|||
name?: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 角色状态 |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 修改时间 |
|||
*/ |
|||
updateTime?: Date; |
|||
} |
|||
|
|||
/** |
|||
* 角色分页 |
|||
*/ |
|||
export type RolePageResult = PageResult<RolePageVO[]>; |
|||
|
|||
/** |
|||
* 角色表单对象 |
|||
*/ |
|||
export interface RoleForm { |
|||
/** |
|||
* 角色ID |
|||
*/ |
|||
id?: number; |
|||
|
|||
/** |
|||
* 角色编码 |
|||
*/ |
|||
code: string; |
|||
/** |
|||
* 数据权限 |
|||
*/ |
|||
dataScope?: number; |
|||
|
|||
/** |
|||
* 角色名称 |
|||
*/ |
|||
name: string; |
|||
/** |
|||
* 排序 |
|||
*/ |
|||
sort?: number; |
|||
/** |
|||
* 角色状态(1-正常;0-停用) |
|||
*/ |
|||
status?: number; |
|||
} |
@ -0,0 +1,58 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { TableVo } from './types'; |
|||
|
|||
/** |
|||
* 获取左侧菜单 |
|||
*/ |
|||
export function getMenu(): AxiosPromise<[]> { |
|||
return request({ |
|||
url: '/bi/opt/getMenu', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取热源信息 |
|||
*/ |
|||
export function getStationInfo(): AxiosPromise<[]> { |
|||
return request({ |
|||
url: '/bi/opt/getStationInfo', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取表格header |
|||
*/ |
|||
export function getTableHeader(): AxiosPromise<[]> { |
|||
return request({ |
|||
url: '/bi/opt/getTableHeader', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取表格数据 |
|||
* |
|||
* @param id |
|||
*/ |
|||
export function getTableData(params: number): AxiosPromise<TableVo> { |
|||
return request({ |
|||
url: '/bi/opt/getTableData/'+params, |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 配置项修改 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function editConfig(data: any) { |
|||
return request({ |
|||
url: '/dc/dcUserMonitorConfig/A', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
@ -0,0 +1,58 @@ |
|||
/** |
|||
* 表格参数 |
|||
*/ |
|||
export interface TableVo { |
|||
id: string; |
|||
deviceuuid: string; |
|||
areaid: string; |
|||
C018: object; |
|||
C019: object; |
|||
C020: object; |
|||
C021: object; |
|||
C022: object; |
|||
C023: object; |
|||
C024: object; |
|||
C025: object; |
|||
source: string; |
|||
data: string; |
|||
C007: object; |
|||
C026: object; |
|||
C027: object; |
|||
C028: object; |
|||
C029: object; |
|||
C005: object; |
|||
C006: object; |
|||
C001: object; |
|||
C002: object; |
|||
C003: object; |
|||
C004: object; |
|||
C008: object; |
|||
C009: object; |
|||
C010: object; |
|||
C011: object; |
|||
C012: object; |
|||
C013: object; |
|||
C014: object; |
|||
C015: object; |
|||
C016: boolean; |
|||
C017: object; |
|||
C030: object; |
|||
C031: object; |
|||
C032: object; |
|||
C033: object; |
|||
C034: object; |
|||
C035: object; |
|||
C036: object; |
|||
C037: object; |
|||
C038: object; |
|||
C039: object; |
|||
C040: object; |
|||
C041: object; |
|||
C042: object; |
|||
C043: object; |
|||
C044: object; |
|||
C045: object; |
|||
C046: object; |
|||
C047: object; |
|||
C048: object; |
|||
} |
@ -0,0 +1,154 @@ |
|||
import request from '@/utils/request'; |
|||
import { AxiosPromise } from 'axios'; |
|||
import { UserForm, UserInfo, UserPageVO, UserQuery } from './types'; |
|||
|
|||
/** |
|||
* 登录成功后获取用户信息(昵称、头像、权限集合和角色集合) |
|||
*/ |
|||
export function getUserInfo(): AxiosPromise<UserInfo> { |
|||
return request({ |
|||
url: '/getInfo', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取用户分页列表 |
|||
* |
|||
* @param queryParams |
|||
*/ |
|||
export function getUserPage( |
|||
queryParams: UserQuery |
|||
): AxiosPromise<PageResult<UserPageVO[]>> { |
|||
return request({ |
|||
url: '/api/v1/users/page', |
|||
method: 'get', |
|||
data: queryParams |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 获取用户表单详情 |
|||
* |
|||
* @param userId |
|||
*/ |
|||
export function getUserForm(userId: number): AxiosPromise<UserForm> { |
|||
return request({ |
|||
url: '/api/v1/users/form', |
|||
method: 'get' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 添加用户 |
|||
* |
|||
* @param data |
|||
*/ |
|||
export function addUser(data: any) { |
|||
return request({ |
|||
url: '/api/v1/users', |
|||
method: 'post', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改用户 |
|||
* |
|||
* @param id |
|||
* @param data |
|||
*/ |
|||
export function updateUser(id: number, data: UserForm) { |
|||
return request({ |
|||
url: '/api/v1/users/' + id, |
|||
method: 'put', |
|||
data: data |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改用户状态 |
|||
* |
|||
* @param id |
|||
* @param status |
|||
*/ |
|||
export function updateUserStatus(id: number, status: number) { |
|||
return request({ |
|||
url: '/api/v1/users/' + id + '/status', |
|||
method: 'patch', |
|||
params: { status: status } |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 修改用户密码 |
|||
* |
|||
* @param id |
|||
* @param password |
|||
*/ |
|||
export function updateUserPassword(id: number, password: string) { |
|||
return request({ |
|||
url: '/api/v1/users/' + id + '/password', |
|||
method: 'patch', |
|||
params: { password: password } |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 删除用户 |
|||
* |
|||
* @param ids |
|||
*/ |
|||
export function deleteUsers(ids: string) { |
|||
return request({ |
|||
url: '/api/v1/users/' + ids, |
|||
method: 'delete' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 下载用户导入模板 |
|||
* |
|||
* @returns |
|||
*/ |
|||
export function downloadTemplateApi() { |
|||
return request({ |
|||
url: '/api/v1/users/template', |
|||
method: 'get', |
|||
responseType: 'arraybuffer' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 导出用户 |
|||
* |
|||
* @param queryParams |
|||
* @returns |
|||
*/ |
|||
export function exportUser(queryParams: UserQuery) { |
|||
return request({ |
|||
url: '/api/v1/users/_export', |
|||
method: 'get', |
|||
params: queryParams, |
|||
responseType: 'arraybuffer' |
|||
}); |
|||
} |
|||
|
|||
/** |
|||
* 导入用户 |
|||
* |
|||
* @param file |
|||
*/ |
|||
export function importUser(deptId: number, file: File) { |
|||
const formData = new FormData(); |
|||
formData.append('file', file); |
|||
return request({ |
|||
url: '/api/v1/users/_import', |
|||
method: 'post', |
|||
params: { deptId: deptId }, |
|||
data: formData, |
|||
headers: { |
|||
'Content-Type': 'multipart/form-data' |
|||
} |
|||
}); |
|||
} |
@ -0,0 +1,115 @@ |
|||
/** |
|||
* 登录用户信息 |
|||
*/ |
|||
export interface UserInfo { |
|||
// nickname: string;
|
|||
// avatar: string;
|
|||
// roles: string[];
|
|||
// perms: string[];
|
|||
permissions: string[]; |
|||
roles: string[]; |
|||
loginIp: string; |
|||
user?: object; |
|||
} |
|||
|
|||
/** |
|||
* 用户查询对象类型 |
|||
*/ |
|||
export interface UserQuery extends PageQuery { |
|||
keywords?: string; |
|||
status?: number; |
|||
deptId?: number; |
|||
} |
|||
|
|||
/** |
|||
* 用户分页对象 |
|||
*/ |
|||
export interface UserPageVO { |
|||
/** |
|||
* 用户头像地址 |
|||
*/ |
|||
avatar?: string; |
|||
/** |
|||
* 创建时间 |
|||
*/ |
|||
createTime?: Date; |
|||
/** |
|||
* 部门名称 |
|||
*/ |
|||
deptName?: string; |
|||
/** |
|||
* 用户邮箱 |
|||
*/ |
|||
email?: string; |
|||
/** |
|||
* 性别 |
|||
*/ |
|||
genderLabel?: string; |
|||
/** |
|||
* 用户ID |
|||
*/ |
|||
id?: number; |
|||
/** |
|||
* 手机号 |
|||
*/ |
|||
mobile?: string; |
|||
/** |
|||
* 用户昵称 |
|||
*/ |
|||
nickname?: string; |
|||
/** |
|||
* 角色名称,多个使用英文逗号(,)分割 |
|||
*/ |
|||
roleNames?: string; |
|||
/** |
|||
* 用户状态(1:启用;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 用户名 |
|||
*/ |
|||
username?: string; |
|||
} |
|||
|
|||
/** |
|||
* 用户表单类型 |
|||
*/ |
|||
export interface UserForm { |
|||
/** |
|||
* 用户头像 |
|||
*/ |
|||
avatar?: string; |
|||
/** |
|||
* 部门ID |
|||
*/ |
|||
deptId?: number; |
|||
/** |
|||
* 邮箱 |
|||
*/ |
|||
email?: string; |
|||
/** |
|||
* 性别 |
|||
*/ |
|||
sex?: number; |
|||
/** |
|||
* 用户ID |
|||
*/ |
|||
id?: number; |
|||
mobile?: string; |
|||
/** |
|||
* 昵称 |
|||
*/ |
|||
nickname?: string; |
|||
/** |
|||
* 角色ID集合 |
|||
*/ |
|||
roleIds?: number[]; |
|||
/** |
|||
* 用户状态(1:正常;0:禁用) |
|||
*/ |
|||
status?: number; |
|||
/** |
|||
* 用户名 |
|||
*/ |
|||
username?: string; |
|||
} |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 4.7 KiB |
@ -0,0 +1,539 @@ |
|||
/* Logo 字体 */ |
|||
@font-face { |
|||
font-family: "iconfont logo"; |
|||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); |
|||
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), |
|||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), |
|||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), |
|||
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); |
|||
} |
|||
|
|||
.logo { |
|||
font-family: "iconfont logo"; |
|||
font-size: 160px; |
|||
font-style: normal; |
|||
-webkit-font-smoothing: antialiased; |
|||
-moz-osx-font-smoothing: grayscale; |
|||
} |
|||
|
|||
/* tabs */ |
|||
.nav-tabs { |
|||
position: relative; |
|||
} |
|||
|
|||
.nav-tabs .nav-more { |
|||
position: absolute; |
|||
right: 0; |
|||
bottom: 0; |
|||
height: 42px; |
|||
line-height: 42px; |
|||
color: #666; |
|||
} |
|||
|
|||
#tabs { |
|||
border-bottom: 1px solid #eee; |
|||
} |
|||
|
|||
#tabs li { |
|||
cursor: pointer; |
|||
width: 100px; |
|||
height: 40px; |
|||
line-height: 40px; |
|||
text-align: center; |
|||
font-size: 16px; |
|||
border-bottom: 2px solid transparent; |
|||
position: relative; |
|||
z-index: 1; |
|||
margin-bottom: -1px; |
|||
color: #666; |
|||
} |
|||
|
|||
|
|||
#tabs .active { |
|||
border-bottom-color: #f00; |
|||
color: #222; |
|||
} |
|||
|
|||
.tab-container .content { |
|||
display: none; |
|||
} |
|||
|
|||
/* 页面布局 */ |
|||
.main { |
|||
padding: 30px 100px; |
|||
width: 960px; |
|||
margin: 0 auto; |
|||
} |
|||
|
|||
.main .logo { |
|||
color: #333; |
|||
text-align: left; |
|||
margin-bottom: 30px; |
|||
line-height: 1; |
|||
height: 110px; |
|||
margin-top: -50px; |
|||
overflow: hidden; |
|||
*zoom: 1; |
|||
} |
|||
|
|||
.main .logo a { |
|||
font-size: 160px; |
|||
color: #333; |
|||
} |
|||
|
|||
.helps { |
|||
margin-top: 40px; |
|||
} |
|||
|
|||
.helps pre { |
|||
padding: 20px; |
|||
margin: 10px 0; |
|||
border: solid 1px #e7e1cd; |
|||
background-color: #fffdef; |
|||
overflow: auto; |
|||
} |
|||
|
|||
.icon_lists { |
|||
width: 100% !important; |
|||
overflow: hidden; |
|||
*zoom: 1; |
|||
} |
|||
|
|||
.icon_lists li { |
|||
width: 100px; |
|||
margin-bottom: 10px; |
|||
margin-right: 20px; |
|||
text-align: center; |
|||
list-style: none !important; |
|||
cursor: default; |
|||
} |
|||
|
|||
.icon_lists li .code-name { |
|||
line-height: 1.2; |
|||
} |
|||
|
|||
.icon_lists .icon { |
|||
display: block; |
|||
height: 100px; |
|||
line-height: 100px; |
|||
font-size: 42px; |
|||
margin: 10px auto; |
|||
color: #333; |
|||
-webkit-transition: font-size 0.25s linear, width 0.25s linear; |
|||
-moz-transition: font-size 0.25s linear, width 0.25s linear; |
|||
transition: font-size 0.25s linear, width 0.25s linear; |
|||
} |
|||
|
|||
.icon_lists .icon:hover { |
|||
font-size: 100px; |
|||
} |
|||
|
|||
.icon_lists .svg-icon { |
|||
/* 通过设置 font-size 来改变图标大小 */ |
|||
width: 1em; |
|||
/* 图标和文字相邻时,垂直对齐 */ |
|||
vertical-align: -0.15em; |
|||
/* 通过设置 color 来改变 SVG 的颜色/fill */ |
|||
fill: currentColor; |
|||
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 |
|||
normalize.css 中也包含这行 */ |
|||
overflow: hidden; |
|||
} |
|||
|
|||
.icon_lists li .name, |
|||
.icon_lists li .code-name { |
|||
color: #666; |
|||
} |
|||
|
|||
/* markdown 样式 */ |
|||
.markdown { |
|||
color: #666; |
|||
font-size: 14px; |
|||
line-height: 1.8; |
|||
} |
|||
|
|||
.highlight { |
|||
line-height: 1.5; |
|||
} |
|||
|
|||
.markdown img { |
|||
vertical-align: middle; |
|||
max-width: 100%; |
|||
} |
|||
|
|||
.markdown h1 { |
|||
color: #404040; |
|||
font-weight: 500; |
|||
line-height: 40px; |
|||
margin-bottom: 24px; |
|||
} |
|||
|
|||
.markdown h2, |
|||
.markdown h3, |
|||
.markdown h4, |
|||
.markdown h5, |
|||
.markdown h6 { |
|||
color: #404040; |
|||
margin: 1.6em 0 0.6em 0; |
|||
font-weight: 500; |
|||
clear: both; |
|||
} |
|||
|
|||
.markdown h1 { |
|||
font-size: 28px; |
|||
} |
|||
|
|||
.markdown h2 { |
|||
font-size: 22px; |
|||
} |
|||
|
|||
.markdown h3 { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
.markdown h4 { |
|||
font-size: 14px; |
|||
} |
|||
|
|||
.markdown h5 { |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.markdown h6 { |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.markdown hr { |
|||
height: 1px; |
|||
border: 0; |
|||
background: #e9e9e9; |
|||
margin: 16px 0; |
|||
clear: both; |
|||
} |
|||
|
|||
.markdown p { |
|||
margin: 1em 0; |
|||
} |
|||
|
|||
.markdown>p, |
|||
.markdown>blockquote, |
|||
.markdown>.highlight, |
|||
.markdown>ol, |
|||
.markdown>ul { |
|||
width: 80%; |
|||
} |
|||
|
|||
.markdown ul>li { |
|||
list-style: circle; |
|||
} |
|||
|
|||
.markdown>ul li, |
|||
.markdown blockquote ul>li { |
|||
margin-left: 20px; |
|||
padding-left: 4px; |
|||
} |
|||
|
|||
.markdown>ul li p, |
|||
.markdown>ol li p { |
|||
margin: 0.6em 0; |
|||
} |
|||
|
|||
.markdown ol>li { |
|||
list-style: decimal; |
|||
} |
|||
|
|||
.markdown>ol li, |
|||
.markdown blockquote ol>li { |
|||
margin-left: 20px; |
|||
padding-left: 4px; |
|||
} |
|||
|
|||
.markdown code { |
|||
margin: 0 3px; |
|||
padding: 0 5px; |
|||
background: #eee; |
|||
border-radius: 3px; |
|||
} |
|||
|
|||
.markdown strong, |
|||
.markdown b { |
|||
font-weight: 600; |
|||
} |
|||
|
|||
.markdown>table { |
|||
border-collapse: collapse; |
|||
border-spacing: 0px; |
|||
empty-cells: show; |
|||
border: 1px solid #e9e9e9; |
|||
width: 95%; |
|||
margin-bottom: 24px; |
|||
} |
|||
|
|||
.markdown>table th { |
|||
white-space: nowrap; |
|||
color: #333; |
|||
font-weight: 600; |
|||
} |
|||
|
|||
.markdown>table th, |
|||
.markdown>table td { |
|||
border: 1px solid #e9e9e9; |
|||
padding: 8px 16px; |
|||
text-align: left; |
|||
} |
|||
|
|||
.markdown>table th { |
|||
background: #F7F7F7; |
|||
} |
|||
|
|||
.markdown blockquote { |
|||
font-size: 90%; |
|||
color: #999; |
|||
border-left: 4px solid #e9e9e9; |
|||
padding-left: 0.8em; |
|||
margin: 1em 0; |
|||
} |
|||
|
|||
.markdown blockquote p { |
|||
margin: 0; |
|||
} |
|||
|
|||
.markdown .anchor { |
|||
opacity: 0; |
|||
transition: opacity 0.3s ease; |
|||
margin-left: 8px; |
|||
} |
|||
|
|||
.markdown .waiting { |
|||
color: #ccc; |
|||
} |
|||
|
|||
.markdown h1:hover .anchor, |
|||
.markdown h2:hover .anchor, |
|||
.markdown h3:hover .anchor, |
|||
.markdown h4:hover .anchor, |
|||
.markdown h5:hover .anchor, |
|||
.markdown h6:hover .anchor { |
|||
opacity: 1; |
|||
display: inline-block; |
|||
} |
|||
|
|||
.markdown>br, |
|||
.markdown>p>br { |
|||
clear: both; |
|||
} |
|||
|
|||
|
|||
.hljs { |
|||
display: block; |
|||
background: white; |
|||
padding: 0.5em; |
|||
color: #333333; |
|||
overflow-x: auto; |
|||
} |
|||
|
|||
.hljs-comment, |
|||
.hljs-meta { |
|||
color: #969896; |
|||
} |
|||
|
|||
.hljs-string, |
|||
.hljs-variable, |
|||
.hljs-template-variable, |
|||
.hljs-strong, |
|||
.hljs-emphasis, |
|||
.hljs-quote { |
|||
color: #df5000; |
|||
} |
|||
|
|||
.hljs-keyword, |
|||
.hljs-selector-tag, |
|||
.hljs-type { |
|||
color: #a71d5d; |
|||
} |
|||
|
|||
.hljs-literal, |
|||
.hljs-symbol, |
|||
.hljs-bullet, |
|||
.hljs-attribute { |
|||
color: #0086b3; |
|||
} |
|||
|
|||
.hljs-section, |
|||
.hljs-name { |
|||
color: #63a35c; |
|||
} |
|||
|
|||
.hljs-tag { |
|||
color: #333333; |
|||
} |
|||
|
|||
.hljs-title, |
|||
.hljs-attr, |
|||
.hljs-selector-id, |
|||
.hljs-selector-class, |
|||
.hljs-selector-attr, |
|||
.hljs-selector-pseudo { |
|||
color: #795da3; |
|||
} |
|||
|
|||
.hljs-addition { |
|||
color: #55a532; |
|||
background-color: #eaffea; |
|||
} |
|||
|
|||
.hljs-deletion { |
|||
color: #bd2c00; |
|||
background-color: #ffecec; |
|||
} |
|||
|
|||
.hljs-link { |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
/* 代码高亮 */ |
|||
/* PrismJS 1.15.0 |
|||
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ |
|||
/** |
|||
* prism.js default theme for JavaScript, CSS and HTML |
|||
* Based on dabblet (http://dabblet.com) |
|||
* @author Lea Verou |
|||
*/ |
|||
code[class*="language-"], |
|||
pre[class*="language-"] { |
|||
color: black; |
|||
background: none; |
|||
text-shadow: 0 1px white; |
|||
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; |
|||
text-align: left; |
|||
white-space: pre; |
|||
word-spacing: normal; |
|||
word-break: normal; |
|||
word-wrap: normal; |
|||
line-height: 1.5; |
|||
|
|||
-moz-tab-size: 4; |
|||
-o-tab-size: 4; |
|||
tab-size: 4; |
|||
|
|||
-webkit-hyphens: none; |
|||
-moz-hyphens: none; |
|||
-ms-hyphens: none; |
|||
hyphens: none; |
|||
} |
|||
|
|||
pre[class*="language-"]::-moz-selection, |
|||
pre[class*="language-"] ::-moz-selection, |
|||
code[class*="language-"]::-moz-selection, |
|||
code[class*="language-"] ::-moz-selection { |
|||
text-shadow: none; |
|||
background: #b3d4fc; |
|||
} |
|||
|
|||
pre[class*="language-"]::selection, |
|||
pre[class*="language-"] ::selection, |
|||
code[class*="language-"]::selection, |
|||
code[class*="language-"] ::selection { |
|||
text-shadow: none; |
|||
background: #b3d4fc; |
|||
} |
|||
|
|||
@media print { |
|||
|
|||
code[class*="language-"], |
|||
pre[class*="language-"] { |
|||
text-shadow: none; |
|||
} |
|||
} |
|||
|
|||
/* Code blocks */ |
|||
pre[class*="language-"] { |
|||
padding: 1em; |
|||
margin: .5em 0; |
|||
overflow: auto; |
|||
} |
|||
|
|||
:not(pre)>code[class*="language-"], |
|||
pre[class*="language-"] { |
|||
background: #f5f2f0; |
|||
} |
|||
|
|||
/* Inline code */ |
|||
:not(pre)>code[class*="language-"] { |
|||
padding: .1em; |
|||
border-radius: .3em; |
|||
white-space: normal; |
|||
} |
|||
|
|||
.token.comment, |
|||
.token.prolog, |
|||
.token.doctype, |
|||
.token.cdata { |
|||
color: slategray; |
|||
} |
|||
|
|||
.token.punctuation { |
|||
color: #999; |
|||
} |
|||
|
|||
.namespace { |
|||
opacity: .7; |
|||
} |
|||
|
|||
.token.property, |
|||
.token.tag, |
|||
.token.boolean, |
|||
.token.number, |
|||
.token.constant, |
|||
.token.symbol, |
|||
.token.deleted { |
|||
color: #905; |
|||
} |
|||
|
|||
.token.selector, |
|||
.token.attr-name, |
|||
.token.string, |
|||
.token.char, |
|||
.token.builtin, |
|||
.token.inserted { |
|||
color: #690; |
|||
} |
|||
|
|||
.token.operator, |
|||
.token.entity, |
|||
.token.url, |
|||
.language-css .token.string, |
|||
.style .token.string { |
|||
color: #9a6e3a; |
|||
background: hsla(0, 0%, 100%, .5); |
|||
} |
|||
|
|||
.token.atrule, |
|||
.token.attr-value, |
|||
.token.keyword { |
|||
color: #07a; |
|||
} |
|||
|
|||
.token.function, |
|||
.token.class-name { |
|||
color: #DD4A68; |
|||
} |
|||
|
|||
.token.regex, |
|||
.token.important, |
|||
.token.variable { |
|||
color: #e90; |
|||
} |
|||
|
|||
.token.important, |
|||
.token.bold { |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.token.italic { |
|||
font-style: italic; |
|||
} |
|||
|
|||
.token.entity { |
|||
cursor: help; |
|||
} |
@ -0,0 +1,223 @@ |
|||
@font-face { |
|||
font-family: "iconfont"; /* Project id 3987011 */ |
|||
src: url('iconfont.woff2?t=1693533922330') format('woff2'), |
|||
url('iconfont.woff?t=1693533922330') format('woff'), |
|||
url('iconfont.ttf?t=1693533922330') format('truetype'); |
|||
} |
|||
|
|||
.iconfont { |
|||
font-family: "iconfont" !important; |
|||
font-size: 16px; |
|||
font-style: normal; |
|||
-webkit-font-smoothing: antialiased; |
|||
-moz-osx-font-smoothing: grayscale; |
|||
} |
|||
|
|||
.icon-decline:before { |
|||
content: "\eb04"; |
|||
} |
|||
|
|||
.icon-rise:before { |
|||
content: "\eb05"; |
|||
} |
|||
|
|||
.icon-visits-chart:before { |
|||
content: "\e6a5"; |
|||
} |
|||
|
|||
.icon-user-visits:before { |
|||
content: "\e651"; |
|||
} |
|||
|
|||
.icon-turnover:before { |
|||
content: "\ec18"; |
|||
} |
|||
|
|||
.icon-num-transactions:before { |
|||
content: "\e682"; |
|||
} |
|||
|
|||
.icon-num-download:before { |
|||
content: "\e6f8"; |
|||
} |
|||
|
|||
.icon-user-mgt:before { |
|||
content: "\e617"; |
|||
} |
|||
|
|||
.icon-home:before { |
|||
content: "\e62e"; |
|||
} |
|||
|
|||
.icon-set-edit:before { |
|||
content: "\eb61"; |
|||
} |
|||
|
|||
.icon-app-mgt:before { |
|||
content: "\eb8f"; |
|||
} |
|||
|
|||
.icon-setting:before { |
|||
content: "\e78e"; |
|||
} |
|||
|
|||
.icon-folder-open:before { |
|||
content: "\e7d1"; |
|||
} |
|||
|
|||
.icon-image:before { |
|||
content: "\e7de"; |
|||
} |
|||
|
|||
.icon-cloud-download:before { |
|||
content: "\ec1d"; |
|||
} |
|||
|
|||
.icon-cloud-upload:before { |
|||
content: "\ec1e"; |
|||
} |
|||
|
|||
.icon-role-mgt:before { |
|||
content: "\e645"; |
|||
} |
|||
|
|||
.icon-key:before { |
|||
content: "\e775"; |
|||
} |
|||
|
|||
.icon-safe-code:before { |
|||
content: "\e627"; |
|||
} |
|||
|
|||
.icon-safe:before { |
|||
content: "\ec4d"; |
|||
} |
|||
|
|||
.icon-other:before { |
|||
content: "\e60b"; |
|||
} |
|||
|
|||
.icon-page-right:before { |
|||
content: "\e65b"; |
|||
} |
|||
|
|||
.icon-search:before { |
|||
content: "\e63c"; |
|||
} |
|||
|
|||
.icon-setup:before { |
|||
content: "\eb8d"; |
|||
} |
|||
|
|||
.icon-reset:before { |
|||
content: "\e614"; |
|||
} |
|||
|
|||
.icon-camera:before { |
|||
content: "\e666"; |
|||
} |
|||
|
|||
.icon-qrcode:before { |
|||
content: "\e6b0"; |
|||
} |
|||
|
|||
.icon-delete:before { |
|||
content: "\e6b4"; |
|||
} |
|||
|
|||
.icon-address:before { |
|||
content: "\e652"; |
|||
} |
|||
|
|||
.icon-clock:before { |
|||
content: "\e890"; |
|||
} |
|||
|
|||
.icon-location:before { |
|||
content: "\e63d"; |
|||
} |
|||
|
|||
.icon-scan:before { |
|||
content: "\e68b"; |
|||
} |
|||
|
|||
.icon-edit:before { |
|||
content: "\e6aa"; |
|||
} |
|||
|
|||
.icon-page-left:before { |
|||
content: "\e659"; |
|||
} |
|||
|
|||
.icon-font-size:before { |
|||
content: "\e689"; |
|||
} |
|||
|
|||
.icon-filter:before { |
|||
content: "\e648"; |
|||
} |
|||
|
|||
.icon-ashbin:before { |
|||
content: "\e665"; |
|||
} |
|||
|
|||
.icon-code:before { |
|||
content: "\e667"; |
|||
} |
|||
|
|||
.icon-copy:before { |
|||
content: "\e66a"; |
|||
} |
|||
|
|||
.icon-link:before { |
|||
content: "\e676"; |
|||
} |
|||
|
|||
.icon-layers:before { |
|||
content: "\e675"; |
|||
} |
|||
|
|||
.icon-fullscreen:before { |
|||
content: "\e677"; |
|||
} |
|||
|
|||
.icon-menu:before { |
|||
content: "\e678"; |
|||
} |
|||
|
|||
.icon-minus:before { |
|||
content: "\e67a"; |
|||
} |
|||
|
|||
.icon-refresh:before { |
|||
content: "\e67b"; |
|||
} |
|||
|
|||
.icon-scanning:before { |
|||
content: "\e67d"; |
|||
} |
|||
|
|||
.icon-close-other:before { |
|||
content: "\e624"; |
|||
} |
|||
|
|||
.icon-close:before { |
|||
content: "\e668"; |
|||
} |
|||
|
|||
.icon-arrow-down:before { |
|||
content: "\e688"; |
|||
} |
|||
|
|||
.icon-language:before { |
|||
content: "\e739"; |
|||
} |
|||
|
|||
.icon-lock:before { |
|||
content: "\e62a"; |
|||
} |
|||
|
|||
.icon-user:before { |
|||
content: "\e828"; |
|||
} |
|||
|
@ -0,0 +1,373 @@ |
|||
{ |
|||
"id": "3987011", |
|||
"name": "vue3后台管理系统", |
|||
"font_family": "iconfont", |
|||
"css_prefix_text": "icon-", |
|||
"description": "", |
|||
"glyphs": [ |
|||
{ |
|||
"icon_id": "5387575", |
|||
"name": "箭头_切换向下", |
|||
"font_class": "decline", |
|||
"unicode": "eb04", |
|||
"unicode_decimal": 60164 |
|||
}, |
|||
{ |
|||
"icon_id": "5387578", |
|||
"name": "箭头_切换向上", |
|||
"font_class": "rise", |
|||
"unicode": "eb05", |
|||
"unicode_decimal": 60165 |
|||
}, |
|||
{ |
|||
"icon_id": "6033101", |
|||
"name": "访问量", |
|||
"font_class": "visits-chart", |
|||
"unicode": "e6a5", |
|||
"unicode_decimal": 59045 |
|||
}, |
|||
{ |
|||
"icon_id": "7956168", |
|||
"name": "总访问量", |
|||
"font_class": "user-visits", |
|||
"unicode": "e651", |
|||
"unicode_decimal": 58961 |
|||
}, |
|||
{ |
|||
"icon_id": "26442901", |
|||
"name": "订单成交额", |
|||
"font_class": "turnover", |
|||
"unicode": "ec18", |
|||
"unicode_decimal": 60440 |
|||
}, |
|||
{ |
|||
"icon_id": "26908793", |
|||
"name": "成交数据-01", |
|||
"font_class": "num-transactions", |
|||
"unicode": "e682", |
|||
"unicode_decimal": 59010 |
|||
}, |
|||
{ |
|||
"icon_id": "31500093", |
|||
"name": "下载数量", |
|||
"font_class": "num-download", |
|||
"unicode": "e6f8", |
|||
"unicode_decimal": 59128 |
|||
}, |
|||
{ |
|||
"icon_id": "1348257", |
|||
"name": "用户管理", |
|||
"font_class": "user-mgt", |
|||
"unicode": "e617", |
|||
"unicode_decimal": 58903 |
|||
}, |
|||
{ |
|||
"icon_id": "2675009", |
|||
"name": "首页", |
|||
"font_class": "home", |
|||
"unicode": "e62e", |
|||
"unicode_decimal": 58926 |
|||
}, |
|||
{ |
|||
"icon_id": "3868263", |
|||
"name": "编辑", |
|||
"font_class": "set-edit", |
|||
"unicode": "eb61", |
|||
"unicode_decimal": 60257 |
|||
}, |
|||
{ |
|||
"icon_id": "4347582", |
|||
"name": "icon_应用管理", |
|||
"font_class": "app-mgt", |
|||
"unicode": "eb8f", |
|||
"unicode_decimal": 60303 |
|||
}, |
|||
{ |
|||
"icon_id": "4765891", |
|||
"name": "setting", |
|||
"font_class": "setting", |
|||
"unicode": "e78e", |
|||
"unicode_decimal": 59278 |
|||
}, |
|||
{ |
|||
"icon_id": "4766847", |
|||
"name": "folder-open", |
|||
"font_class": "folder-open", |
|||
"unicode": "e7d1", |
|||
"unicode_decimal": 59345 |
|||
}, |
|||
{ |
|||
"icon_id": "4766917", |
|||
"name": "image", |
|||
"font_class": "image", |
|||
"unicode": "e7de", |
|||
"unicode_decimal": 59358 |
|||
}, |
|||
{ |
|||
"icon_id": "4932635", |
|||
"name": "云端下载", |
|||
"font_class": "cloud-download", |
|||
"unicode": "ec1d", |
|||
"unicode_decimal": 60445 |
|||
}, |
|||
{ |
|||
"icon_id": "4932636", |
|||
"name": "云端上传", |
|||
"font_class": "cloud-upload", |
|||
"unicode": "ec1e", |
|||
"unicode_decimal": 60446 |
|||
}, |
|||
{ |
|||
"icon_id": "6447176", |
|||
"name": "角色管理", |
|||
"font_class": "role-mgt", |
|||
"unicode": "e645", |
|||
"unicode_decimal": 58949 |
|||
}, |
|||
{ |
|||
"icon_id": "6150969", |
|||
"name": "key", |
|||
"font_class": "key", |
|||
"unicode": "e775", |
|||
"unicode_decimal": 59253 |
|||
}, |
|||
{ |
|||
"icon_id": "1599882", |
|||
"name": "网商银行无线端_安全", |
|||
"font_class": "safe-code", |
|||
"unicode": "e627", |
|||
"unicode_decimal": 58919 |
|||
}, |
|||
{ |
|||
"icon_id": "5961299", |
|||
"name": "安全", |
|||
"font_class": "safe", |
|||
"unicode": "ec4d", |
|||
"unicode_decimal": 60493 |
|||
}, |
|||
{ |
|||
"icon_id": "13106274", |
|||
"name": "其他", |
|||
"font_class": "other", |
|||
"unicode": "e60b", |
|||
"unicode_decimal": 58891 |
|||
}, |
|||
{ |
|||
"icon_id": "8777535", |
|||
"name": "page_last", |
|||
"font_class": "page-right", |
|||
"unicode": "e65b", |
|||
"unicode_decimal": 58971 |
|||
}, |
|||
{ |
|||
"icon_id": "8776842", |
|||
"name": "search", |
|||
"font_class": "search", |
|||
"unicode": "e63c", |
|||
"unicode_decimal": 58940 |
|||
}, |
|||
{ |
|||
"icon_id": "4347549", |
|||
"name": "icon_设置", |
|||
"font_class": "setup", |
|||
"unicode": "eb8d", |
|||
"unicode_decimal": 60301 |
|||
}, |
|||
{ |
|||
"icon_id": "27253675", |
|||
"name": "重置", |
|||
"font_class": "reset", |
|||
"unicode": "e614", |
|||
"unicode_decimal": 58900 |
|||
}, |
|||
{ |
|||
"icon_id": "30414", |
|||
"name": "camera", |
|||
"font_class": "camera", |
|||
"unicode": "e666", |
|||
"unicode_decimal": 58982 |
|||
}, |
|||
{ |
|||
"icon_id": "32472", |
|||
"name": "qr_code", |
|||
"font_class": "qrcode", |
|||
"unicode": "e6b0", |
|||
"unicode_decimal": 59056 |
|||
}, |
|||
{ |
|||
"icon_id": "32477", |
|||
"name": "delete", |
|||
"font_class": "delete", |
|||
"unicode": "e6b4", |
|||
"unicode_decimal": 59060 |
|||
}, |
|||
{ |
|||
"icon_id": "658000", |
|||
"name": "地址", |
|||
"font_class": "address", |
|||
"unicode": "e652", |
|||
"unicode_decimal": 58962 |
|||
}, |
|||
{ |
|||
"icon_id": "2076264", |
|||
"name": "闹钟", |
|||
"font_class": "clock", |
|||
"unicode": "e890", |
|||
"unicode_decimal": 59536 |
|||
}, |
|||
{ |
|||
"icon_id": "9690751", |
|||
"name": "地址", |
|||
"font_class": "location", |
|||
"unicode": "e63d", |
|||
"unicode_decimal": 58941 |
|||
}, |
|||
{ |
|||
"icon_id": "16617390", |
|||
"name": "scan", |
|||
"font_class": "scan", |
|||
"unicode": "e68b", |
|||
"unicode_decimal": 59019 |
|||
}, |
|||
{ |
|||
"icon_id": "16618154", |
|||
"name": "edit", |
|||
"font_class": "edit", |
|||
"unicode": "e6aa", |
|||
"unicode_decimal": 59050 |
|||
}, |
|||
{ |
|||
"icon_id": "8777532", |
|||
"name": "page_first", |
|||
"font_class": "page-left", |
|||
"unicode": "e659", |
|||
"unicode_decimal": 58969 |
|||
}, |
|||
{ |
|||
"icon_id": "24502124", |
|||
"name": "字体大小", |
|||
"font_class": "font-size", |
|||
"unicode": "e689", |
|||
"unicode_decimal": 59017 |
|||
}, |
|||
{ |
|||
"icon_id": "8777080", |
|||
"name": "filter", |
|||
"font_class": "filter", |
|||
"unicode": "e648", |
|||
"unicode_decimal": 58952 |
|||
}, |
|||
{ |
|||
"icon_id": "15838430", |
|||
"name": "ashbin", |
|||
"font_class": "ashbin", |
|||
"unicode": "e665", |
|||
"unicode_decimal": 58981 |
|||
}, |
|||
{ |
|||
"icon_id": "15838443", |
|||
"name": "code", |
|||
"font_class": "code", |
|||
"unicode": "e667", |
|||
"unicode_decimal": 58983 |
|||
}, |
|||
{ |
|||
"icon_id": "15838456", |
|||
"name": "copy", |
|||
"font_class": "copy", |
|||
"unicode": "e66a", |
|||
"unicode_decimal": 58986 |
|||
}, |
|||
{ |
|||
"icon_id": "15838493", |
|||
"name": "link", |
|||
"font_class": "link", |
|||
"unicode": "e676", |
|||
"unicode_decimal": 58998 |
|||
}, |
|||
{ |
|||
"icon_id": "15838496", |
|||
"name": "layers", |
|||
"font_class": "layers", |
|||
"unicode": "e675", |
|||
"unicode_decimal": 58997 |
|||
}, |
|||
{ |
|||
"icon_id": "15838498", |
|||
"name": "fullscreen-expand", |
|||
"font_class": "fullscreen", |
|||
"unicode": "e677", |
|||
"unicode_decimal": 58999 |
|||
}, |
|||
{ |
|||
"icon_id": "15838501", |
|||
"name": "menu", |
|||
"font_class": "menu", |
|||
"unicode": "e678", |
|||
"unicode_decimal": 59000 |
|||
}, |
|||
{ |
|||
"icon_id": "15838514", |
|||
"name": "minus", |
|||
"font_class": "minus", |
|||
"unicode": "e67a", |
|||
"unicode_decimal": 59002 |
|||
}, |
|||
{ |
|||
"icon_id": "15838519", |
|||
"name": "refresh", |
|||
"font_class": "refresh", |
|||
"unicode": "e67b", |
|||
"unicode_decimal": 59003 |
|||
}, |
|||
{ |
|||
"icon_id": "15838527", |
|||
"name": "scanning", |
|||
"font_class": "scanning", |
|||
"unicode": "e67d", |
|||
"unicode_decimal": 59005 |
|||
}, |
|||
{ |
|||
"icon_id": "33077825", |
|||
"name": "关闭其他-01", |
|||
"font_class": "close-other", |
|||
"unicode": "e624", |
|||
"unicode_decimal": 58916 |
|||
}, |
|||
{ |
|||
"icon_id": "15838444", |
|||
"name": "close", |
|||
"font_class": "close", |
|||
"unicode": "e668", |
|||
"unicode_decimal": 58984 |
|||
}, |
|||
{ |
|||
"icon_id": "15838582", |
|||
"name": "arrow-down-filling", |
|||
"font_class": "arrow-down", |
|||
"unicode": "e688", |
|||
"unicode_decimal": 59016 |
|||
}, |
|||
{ |
|||
"icon_id": "31061118", |
|||
"name": "中英切换", |
|||
"font_class": "language", |
|||
"unicode": "e739", |
|||
"unicode_decimal": 59193 |
|||
}, |
|||
{ |
|||
"icon_id": "611345", |
|||
"name": "密码", |
|||
"font_class": "lock", |
|||
"unicode": "e62a", |
|||
"unicode_decimal": 58922 |
|||
}, |
|||
{ |
|||
"icon_id": "34452814", |
|||
"name": "customer-fill", |
|||
"font_class": "user", |
|||
"unicode": "e828", |
|||
"unicode_decimal": 59432 |
|||
} |
|||
] |
|||
} |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 179 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 395 B |
After Width: | Height: | Size: 279 B |
After Width: | Height: | Size: 647 B |
After Width: | Height: | Size: 284 B |
After Width: | Height: | Size: 693 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 927 B |
After Width: | Height: | Size: 909 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 356 B |
After Width: | Height: | Size: 818 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 944 B |
After Width: | Height: | Size: 421 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 320 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 730 B |
After Width: | Height: | Size: 1001 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 914 B |
After Width: | Height: | Size: 883 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 821 B |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 561 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 211 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 689 B |