@ -0,0 +1,47 @@ |
|||
###################################################################### |
|||
# Build Tools |
|||
|
|||
.gradle |
|||
/build/ |
|||
!gradle/wrapper/gradle-wrapper.jar |
|||
|
|||
target/ |
|||
!.mvn/wrapper/maven-wrapper.jar |
|||
|
|||
###################################################################### |
|||
# IDE |
|||
|
|||
### STS ### |
|||
.apt_generated |
|||
.classpath |
|||
.factorypath |
|||
.project |
|||
.settings |
|||
.springBeans |
|||
|
|||
### IntelliJ IDEA ### |
|||
.idea |
|||
*.iws |
|||
*.iml |
|||
*.ipr |
|||
|
|||
### JRebel ### |
|||
rebel.xml |
|||
|
|||
### NetBeans ### |
|||
nbproject/private/ |
|||
build/* |
|||
nbbuild/ |
|||
dist/ |
|||
nbdist/ |
|||
.nb-gradle/ |
|||
|
|||
###################################################################### |
|||
# Others |
|||
*.log |
|||
*.xml.versionsBackup |
|||
*.swp |
|||
|
|||
!*/build/*.java |
|||
!*/build/*.html |
|||
!*/build/*.xml |
|||
@ -1,6 +1,13 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK"> |
|||
<output url="file://$PROJECT_DIR$/out" /> |
|||
<component name="ExternalStorageConfigurationManager" enabled="true" /> |
|||
<component name="MavenProjectsManager"> |
|||
<option name="originalFiles"> |
|||
<list> |
|||
<option value="$PROJECT_DIR$/pom.xml" /> |
|||
</list> |
|||
</option> |
|||
<option name="workspaceImportForciblyTurnedOn" value="true" /> |
|||
</component> |
|||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK" /> |
|||
</project> |
|||
@ -1,8 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ProjectModuleManager"> |
|||
<modules> |
|||
<module fileurl="file://$PROJECT_DIR$/.idea/Changsha_tupu.iml" filepath="$PROJECT_DIR$/.idea/Changsha_tupu.iml" /> |
|||
</modules> |
|||
</component> |
|||
</project> |
|||
@ -0,0 +1,20 @@ |
|||
The MIT License (MIT) |
|||
|
|||
Copyright (c) 2018 RuoYi |
|||
|
|||
Permission is hereby granted, free of charge, to any person obtaining a copy of |
|||
this software and associated documentation files (the "Software"), to deal in |
|||
the Software without restriction, including without limitation the rights to |
|||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
|||
the Software, and to permit persons to whom the Software is furnished to do so, |
|||
subject to the following conditions: |
|||
|
|||
The above copyright notice and this permission notice shall be included in all |
|||
copies or substantial portions of the Software. |
|||
|
|||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
|||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
|||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
|||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
|||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|||
@ -0,0 +1,96 @@ |
|||
<p align="center"> |
|||
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png"> |
|||
</p> |
|||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.8</h1> |
|||
<h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4> |
|||
<p align="center"> |
|||
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a> |
|||
<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.8-brightgreen.svg"></a> |
|||
<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a> |
|||
</p> |
|||
|
|||
## 平台简介 |
|||
|
|||
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 |
|||
|
|||
* 前端采用Vue、Element UI。 |
|||
* 后端采用Spring Boot、Spring Security、Redis & Jwt。 |
|||
* 权限认证使用Jwt,支持多终端认证系统。 |
|||
* 支持加载动态权限菜单,多方式轻松权限控制。 |
|||
* 高效率开发,使用代码生成器可以一键生成前后端代码。 |
|||
* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3),保持同步更新。 |
|||
* 提供了单应用版本[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast),Oracle版本[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。 |
|||
* 不分离版本,请移步[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud) |
|||
* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip) |
|||
* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console) |
|||
|
|||
## 内置功能 |
|||
|
|||
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 |
|||
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 |
|||
3. 岗位管理:配置系统用户所属担任职务。 |
|||
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 |
|||
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 |
|||
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 |
|||
7. 参数管理:对系统动态配置常用参数。 |
|||
8. 通知公告:系统通知公告信息发布维护。 |
|||
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 |
|||
10. 登录日志:系统登录日志记录查询包含登录异常。 |
|||
11. 在线用户:当前系统中活跃用户状态监控。 |
|||
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 |
|||
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 |
|||
14. 系统接口:根据业务代码自动生成相关的api接口文档。 |
|||
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 |
|||
16. 缓存监控:对系统的缓存信息查询,命令统计等。 |
|||
17. 在线构建器:拖动表单元素生成相应的HTML代码。 |
|||
18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 |
|||
|
|||
## 在线体验 |
|||
|
|||
- admin/admin123 |
|||
- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 |
|||
|
|||
演示地址:http://vue.ruoyi.vip |
|||
文档地址:http://doc.ruoyi.vip |
|||
|
|||
## 演示图 |
|||
|
|||
<table> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-936ec82d1f4872e1bc980927654b6007307.png"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"/></td> |
|||
</tr> |
|||
<tr> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"/></td> |
|||
<td><img src="https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"/></td> |
|||
</tr> |
|||
</table> |
|||
|
|||
|
|||
## 若依前后端分离交流群 |
|||
|
|||
QQ群: [](https://jq.qq.com/?_wv=1027&k=5bVB1og) [](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [](https://jq.qq.com/?_wv=1027&k=51G72yr) [](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [](https://jq.qq.com/?_wv=1027&k=SpyH2875) [](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) 点击按钮入群。 |
|||
@ -0,0 +1,12 @@ |
|||
@echo off |
|||
echo. |
|||
echo [信息] 清理工程target生成路径。 |
|||
echo. |
|||
|
|||
%~d0 |
|||
cd %~dp0 |
|||
|
|||
cd .. |
|||
call mvn clean |
|||
|
|||
pause |
|||
@ -0,0 +1,12 @@ |
|||
@echo off |
|||
echo. |
|||
echo [信息] 打包Web工程,生成war/jar包文件。 |
|||
echo. |
|||
|
|||
%~d0 |
|||
cd %~dp0 |
|||
|
|||
cd .. |
|||
call mvn clean package -Dmaven.test.skip=true |
|||
|
|||
pause |
|||
@ -0,0 +1,14 @@ |
|||
@echo off |
|||
echo. |
|||
echo [信息] 使用Jar命令运行Web工程。 |
|||
echo. |
|||
|
|||
cd %~dp0 |
|||
cd ../ruoyi-admin/target |
|||
|
|||
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m |
|||
|
|||
java -jar %JAVA_OPTS% ruoyi-admin.jar |
|||
|
|||
cd bin |
|||
pause |
|||
@ -0,0 +1,23 @@ |
|||
.DS_Store |
|||
node_modules |
|||
/dist |
|||
|
|||
|
|||
# local env files |
|||
.env.local |
|||
.env.*.local |
|||
|
|||
# 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? |
|||
@ -0,0 +1,24 @@ |
|||
# tp |
|||
|
|||
## Project setup |
|||
``` |
|||
npm install |
|||
``` |
|||
|
|||
### Compiles and hot-reloads for development |
|||
``` |
|||
npm run serve |
|||
``` |
|||
|
|||
### Compiles and minifies for production |
|||
``` |
|||
npm run build |
|||
``` |
|||
|
|||
### Lints and fixes files |
|||
``` |
|||
npm run lint |
|||
``` |
|||
|
|||
### Customize configuration |
|||
See [Configuration Reference](https://cli.vuejs.org/config/). |
|||
@ -0,0 +1,5 @@ |
|||
module.exports = { |
|||
presets: [ |
|||
'@vue/cli-plugin-babel/preset' |
|||
] |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
{ |
|||
"compilerOptions": { |
|||
"target": "es5", |
|||
"module": "esnext", |
|||
"baseUrl": "./", |
|||
"moduleResolution": "node", |
|||
"paths": { |
|||
"@/*": [ |
|||
"src/*" |
|||
] |
|||
}, |
|||
"lib": [ |
|||
"esnext", |
|||
"dom", |
|||
"dom.iterable", |
|||
"scripthost" |
|||
] |
|||
} |
|||
} |
|||
@ -0,0 +1,106 @@ |
|||
{ |
|||
"name": "tp", |
|||
"version": "0.1.0", |
|||
"private": true, |
|||
"scripts": { |
|||
"serve": "vue-cli-service serve", |
|||
"build": "vue-cli-service build", |
|||
"lint": "vue-cli-service lint" |
|||
}, |
|||
"dependencies": { |
|||
"@element-plus/icons-vue": "^2.3.1", |
|||
"@vueuse/core": "^10.1.0", |
|||
"axios": "^1.7.7", |
|||
"core-js": "^3.8.3", |
|||
"echarts": "^5.5.1", |
|||
"echarts-wordcloud": "^2.0.0", |
|||
"element-plus": "^2.8.8", |
|||
"fabric": "^6.4.3", |
|||
"neovis.js": "^2.1.0", |
|||
"relation-graph-vue3": "^2.2.11", |
|||
"view-ui-plus": "^1.3.7", |
|||
"vue": "^3.2.13", |
|||
"vue-i18n": "9.0.0", |
|||
"vue-router": "^4.4.5", |
|||
"vue3-treeselect": "^0.1.10" |
|||
}, |
|||
"workspaces": [ |
|||
"packages/*" |
|||
], |
|||
"devDependencies": { |
|||
"@babel/core": "^7.12.16", |
|||
"@babel/eslint-parser": "^7.12.16", |
|||
"@types/events": "^3.0.0", |
|||
"@types/fabric": "^5.3.0", |
|||
"@types/fontfaceobserver": "^2.1.3", |
|||
"@types/lodash-es": "^4.17.7", |
|||
"@types/node": "^18.19.43", |
|||
"@types/uuid": "^9.0.1", |
|||
"@typescript-eslint/eslint-plugin": "^5.54.1", |
|||
"@typescript-eslint/parser": "^5.54.1", |
|||
"@vue/cli-plugin-babel": "~5.0.0", |
|||
"@vue/cli-plugin-eslint": "~5.0.0", |
|||
"@vue/cli-service": "~5.0.0", |
|||
"@webtoon/psd": "^0.4.0", |
|||
"eslint": "^7.32.0", |
|||
"eslint-plugin-vue": "^8.0.3", |
|||
"events": "^3.3.0", |
|||
"fabric-history": "^1.6.0", |
|||
"fontfaceobserver": "^2.1.0", |
|||
"hotkeys-js": "^3.8.8", |
|||
"jsbarcode": "^3.11.6", |
|||
"less": "^4.2.0", |
|||
"less-loader": "^12.2.0", |
|||
"qr-code-styling": "1.6.0-rc.1", |
|||
"qs": "^6.12.1", |
|||
"sass": "^1.75.0", |
|||
"sass-loader": "^16.0.2", |
|||
"tapable": "^2.2.1", |
|||
"typescript": "5.1.6", |
|||
"unplugin-auto-import": "^20.0.0", |
|||
"unplugin-vue-components": "^29.0.0", |
|||
"uuid": "^8.3.2", |
|||
"vis-network": "^9.1.9" |
|||
}, |
|||
"lint-staged": { |
|||
"*.{ts,tsx,js,vue}": [ |
|||
"eslint --fix", |
|||
"prettier --write" |
|||
] |
|||
}, |
|||
"eslintConfig": { |
|||
"root": true, |
|||
"env": { |
|||
"node": true |
|||
}, |
|||
"extends": [ |
|||
"plugin:vue/vue3-essential", |
|||
"eslint:recommended" |
|||
], |
|||
"parserOptions": { |
|||
"parser": "@babel/eslint-parser" |
|||
}, |
|||
"rules": { |
|||
"generator-star-spacing": "off", |
|||
"no-tabs": "off", |
|||
"no-unused-vars": "off", |
|||
"no-console": "off", |
|||
"no-irregular-whitespace": "off", |
|||
"no-debugger": "off", |
|||
"no-redeclare": "off", |
|||
"no-undef": "off", |
|||
"no-empty": "off", |
|||
"no-global-assign": "off", |
|||
"no-prototype-builtins": "off", |
|||
"no-unreachable": "off", |
|||
"no-inner-declarations": "off", |
|||
"no-constant-condition": "off" |
|||
} |
|||
}, |
|||
"browserslist": [ |
|||
"> 1%", |
|||
"last 2 versions", |
|||
"not dead", |
|||
"not ie 11" |
|||
] |
|||
} |
|||
|
After Width: | Height: | Size: 194 KiB |
@ -0,0 +1,17 @@ |
|||
<!DOCTYPE html> |
|||
<html lang=""> |
|||
<head> |
|||
<meta charset="utf-8"> |
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
|||
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
|||
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
|||
<title>天气过程知识图谱</title> |
|||
</head> |
|||
<body> |
|||
<noscript> |
|||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
|||
</noscript> |
|||
<div id="app"></div> |
|||
<!-- built files will be auto injected --> |
|||
</body> |
|||
</html> |
|||
@ -0,0 +1,203 @@ |
|||
<template> |
|||
<router-view ></router-view> |
|||
</template> |
|||
|
|||
<script> |
|||
|
|||
export default { |
|||
name: 'App', |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
@import "./assets/css/common.scss"; |
|||
@import "./assets/css/main.css"; |
|||
@import "./assets/css/vis.css"; |
|||
.selectListInfo{ |
|||
.el-tree-node__content:hover{ |
|||
background: rgba(255, 255, 255, 0.21); |
|||
font-weight: 550; |
|||
.lineInfo{ |
|||
background: #0012ff !important; |
|||
} |
|||
} |
|||
|
|||
.el-tree--highlight-current{ |
|||
.el-tree-node.is-current > .el-tree-node__content { |
|||
background-color: rgba(255, 255, 255, 0.21); |
|||
color: #fff; |
|||
.lineInfo{ |
|||
background: #0012ff !important; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.el-tree-node__content { |
|||
color: #ffffff; |
|||
height: 2vw !important; |
|||
padding-left: 2vw !important; |
|||
padding-right: 2vw !important; |
|||
|
|||
} |
|||
.el-tree-node{ |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.el-tree-node__children { |
|||
overflow: visible !important |
|||
} |
|||
|
|||
.el-tree-node__expand-icon { |
|||
position: absolute !important; |
|||
right: 10% !important; |
|||
width: 1vw; |
|||
height: 1vw; |
|||
} |
|||
|
|||
.el-tree-node is-expanded is-focusable |
|||
.el-tree-node__label { |
|||
padding-left: 15px !important; |
|||
} |
|||
|
|||
.el-tree-node__expand-icon { |
|||
margin-top: 5px; |
|||
-webkit-transform: rotate(-90deg); |
|||
transform: rotate(90deg); |
|||
} |
|||
.el-tree-node__expand-icon.is-leaf { |
|||
display: none; |
|||
} |
|||
/* 三角图标 展开 */ |
|||
.el-tree-node__expand-icon.expanded { |
|||
-webkit-transform: rotate(-90deg); |
|||
transform: rotate(-90deg); |
|||
} |
|||
} |
|||
.rightHeader1{ |
|||
.el-tree-node__content { |
|||
color: #000000; |
|||
height: 2vw !important; |
|||
padding-left: 0 !important; |
|||
padding-right: 0 !important; |
|||
|
|||
} |
|||
.el-tree-node__expand-icon{ |
|||
font-size: 1vw !important; |
|||
} |
|||
.el-tree-node__content:hover{ |
|||
background: rgba(255, 255, 255, 0.21); |
|||
font-weight: 550; |
|||
padding-left: 0 !important; |
|||
padding-right: 0 !important; |
|||
|
|||
.label{ |
|||
color: #0776ff !important; |
|||
|
|||
} |
|||
.lineInfo{ |
|||
background: #0776ff !important; |
|||
} |
|||
} |
|||
.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { |
|||
background-color: rgba(255, 255, 255, 0.21); |
|||
color: #fff; |
|||
.lineInfo{ |
|||
background: #0012ff !important; |
|||
} |
|||
} |
|||
.el-tree--highlight-current |
|||
.el-tree-node.is-current |
|||
> .el-tree-node__content { |
|||
.label{ |
|||
color: #0776ff !important; |
|||
font-weight: bold; |
|||
} |
|||
.lineInfo{ |
|||
background: #0776ff !important; |
|||
} |
|||
|
|||
} |
|||
.el-tree-node is-expanded is-focusable |
|||
.el-tree-node__label { |
|||
padding-left: 15px !important; |
|||
} |
|||
|
|||
.el-tree-node__expand-icon { |
|||
margin-top: 9px; |
|||
-webkit-transform: rotate(-90deg); |
|||
transform: rotate(90deg); |
|||
} |
|||
.el-tree-node__expand-icon.is-leaf { |
|||
display: none; |
|||
} |
|||
/* 三角图标 展开 */ |
|||
.el-tree-node__expand-icon.expanded { |
|||
-webkit-transform: rotate(-90deg); |
|||
transform: rotate(-90deg); |
|||
} |
|||
.custom-tree-node{ |
|||
display: flex; |
|||
background-color: #eef2ff; |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
.el-tree-node__children { |
|||
overflow: visible !important |
|||
} |
|||
.el-tree-node__expand-icon { |
|||
position: absolute !important; |
|||
right: 10% !important; |
|||
width: 1vw; |
|||
height: 1vw; |
|||
color:#1a1a1a; |
|||
} |
|||
|
|||
|
|||
} |
|||
.content1RightInfo { |
|||
margin-top: 0.3vw; |
|||
|
|||
.el-table__header-wrapper { |
|||
font-size: 1vw !important; |
|||
line-height: 1vw !important; |
|||
padding: 0 !important; |
|||
border-radius: 5vw 5vw 5vw 5vw; |
|||
|
|||
} |
|||
|
|||
.el-table__body-wrapper { |
|||
margin-top: 0.2vw; |
|||
|
|||
.el-table__row { |
|||
padding: 1px 0; |
|||
font-size: 1vw; |
|||
} |
|||
|
|||
.cell { |
|||
line-height: 1.5vw; |
|||
} |
|||
} |
|||
.el-table__cell{ |
|||
padding: 2px; |
|||
} |
|||
|
|||
.el-table__header-wrapper .cell { |
|||
line-height: 1.5vw; |
|||
} |
|||
|
|||
.el-table__header-wrapper th { |
|||
background-color: #11b400; |
|||
color: #ffffff; |
|||
|
|||
} |
|||
|
|||
|
|||
.el-table__header-wrapper th:last-child .cell, |
|||
.el-table__body-wrapper tr:first-child td:last-child { |
|||
border-top-right-radius: 8px; |
|||
border-bottom-right-radius: 8px; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,48 @@ |
|||
/* |
|||
* @Author: 秦少卫 |
|||
* @Date: 2024-06-09 13:04:51 |
|||
* @LastEditors: 秦少卫 |
|||
* @LastEditTime: 2024-06-09 15:00:49 |
|||
* @Description: 管理员API |
|||
*/ |
|||
|
|||
import axios from 'axios'; |
|||
const baseURL = import.meta.env.APP_ADMINAPIHOST; |
|||
|
|||
const instance = axios.create({ baseURL }); |
|||
|
|||
instance.interceptors.request.use(function (config) { |
|||
const token = getToken(); |
|||
if (token) { |
|||
config.headers['Authorization'] = `${token}`; |
|||
} |
|||
return config; |
|||
}); |
|||
|
|||
const tokenKey = 'AdminToken'; |
|||
export function getToken() { |
|||
const token = localStorage.getItem(tokenKey); |
|||
return token; |
|||
} |
|||
|
|||
export function setToken(token: string) { |
|||
localStorage.setItem(tokenKey, token); |
|||
} |
|||
|
|||
// 新增模板
|
|||
export const createdTempl = (data: any) => |
|||
instance.post('/content-manager/collection-types/api::templ.templ', data); |
|||
|
|||
// 更新模板
|
|||
export const updataTempl = (id: any, data: any) => |
|||
instance.put(`/content-manager/collection-types/api::templ.templ/${id}`, data); |
|||
|
|||
// 上传图片
|
|||
export const uploadImg = (data: any) => instance.post('/upload', data); |
|||
|
|||
// 更新图片
|
|||
export const deleteImg = (id: string) => instance.delete('/upload/files/' + id); |
|||
|
|||
// 获取详情
|
|||
export const getTempl = (id: string) => |
|||
instance.get(`/content-manager/collection-types/api::templ.templ/${id}`); |
|||
@ -0,0 +1,15 @@ |
|||
import request from '@/utils/request'; |
|||
|
|||
export const selectAticleByRelation = (params) => { |
|||
return request({ |
|||
url: '/api/article/selectAticleByRelation', |
|||
method: 'get', |
|||
params, |
|||
}); |
|||
}; |
|||
export const getArticleInfo = (id) => { |
|||
return request({ |
|||
url: '/api/article/getArticleInfo/'+id, |
|||
method: 'get', |
|||
}); |
|||
}; |
|||
@ -0,0 +1,58 @@ |
|||
|
|||
import request from '@/utils/request'; |
|||
|
|||
|
|||
|
|||
export const getCityInfo = (params) => { |
|||
return request({ |
|||
url: '/api/battle/getCityInfo', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getTreeInfo = (params) => { |
|||
return request({ |
|||
url: '/api/battle/getTreeInfo', |
|||
method: 'get', |
|||
}); |
|||
}; |
|||
|
|||
|
|||
|
|||
export const getCityInfoByName = (params) => { |
|||
return request({ |
|||
url: '/api/battle/getCityInfoByName', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const getGraphByName = (params) => { |
|||
return request({ |
|||
url: '/api/battle/getGraphByName', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
export const getAllInfoList = () => { |
|||
return request({ |
|||
url: '/api/battle/getAllInfoList', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
@ -0,0 +1,18 @@ |
|||
import request from "../../utils/request"; |
|||
|
|||
export const qianwen = (params) => { |
|||
return request({ |
|||
url: '/api/chat/qianwen-ai', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
|
|||
export const getList = (params) => { |
|||
return request({ |
|||
url: '/api/chat/getList', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
|
|||
@ -0,0 +1,253 @@ |
|||
import request from '@/utils/request'; |
|||
|
|||
// 执行Cypher查询
|
|||
export const searchList = (params) => { |
|||
return request({ |
|||
url: '/api/doc/searchList', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const downInfo = (params) => { |
|||
return request({ |
|||
url: '/api/doc/downInfo', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
export const getShouList = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getShouList', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const getDocOne = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getDocOne', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
|
|||
export const getAllHistory = () => { |
|||
return request({ |
|||
url: '/api/doc/getAllHistory', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getAllTitle = () => { |
|||
return request({ |
|||
url: '/api/doc/getAllTitle', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getTitle = () => { |
|||
return request({ |
|||
url: '/api/doc/getTitle', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
export const build = (params) => { |
|||
return request({ |
|||
url: '/api/doc/build', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
export const getAllHistory1 = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getAllHistory1', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getAllHistory2 = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getAllHistory2', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const getDocInfo = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getDocInfo', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getXgInfo = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getXgInfo', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const userChangeDifficult = (params) => { |
|||
return request({ |
|||
url: '/api/doc/userChangeDifficult', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
export const getDifficult = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getDifficult', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
//获取对应知识点的习题
|
|||
export const getDocTestInfo = (docId) => { |
|||
return request({ |
|||
url: '/api/doc/getTestList/' + docId, |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const updateShou11 = (docId) => { |
|||
return request({ |
|||
url: '/api/doc/updateShou11/' + docId, |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
|
|||
export const insertStudentAnswer = (params) => { |
|||
return request({ |
|||
url: '/api/doc/insertStudentAnswer', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
export const updateStudentAnswer = (params) => { |
|||
return request({ |
|||
url: '/api/doc/updateStudentAnswer', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
|
|||
export const addDocCount = (params) => { |
|||
return request({ |
|||
url: '/api/doc/addDocCount', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
export const updateShou = (docId) => { |
|||
return request({ |
|||
url: '/api/doc/updateShou/' + docId, |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const tiwen = (params) => { |
|||
return request({ |
|||
url: '/api/hhr/question/query', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getDocInfo2 = (params) => { |
|||
return request({ |
|||
url: '/api/doc/getDocInfo2', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
@ -0,0 +1,71 @@ |
|||
//import axios from '../axios'
|
|||
import request from '@/utils/request'; |
|||
|
|||
/* |
|||
* 图库接口 |
|||
*/ |
|||
|
|||
// 执行Cypher查询
|
|||
export const getCypherResult = (params) => { |
|||
return request({ |
|||
url: '/api/graph/getCypherResult', |
|||
method: 'get', |
|||
params, |
|||
}); |
|||
}; |
|||
|
|||
// 查询图节点和关系
|
|||
export const getDomainGraph1 = (params) => { |
|||
return request({ |
|||
url: '/api/graph/getDomainGraph', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const getDomainGraphTest = (params) => { |
|||
return request({ |
|||
url: '/api/graph/getDomainGraphTest', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
export const getDomainGraphTest1 = (params) => { |
|||
return request({ |
|||
url: '/api/graph/getDomainGraphTest1', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
|
|||
export const getNodesLabels = (params) => { |
|||
return request({ |
|||
url: '/api/user/search1', |
|||
method: 'get', |
|||
params, |
|||
}); |
|||
}; |
|||
|
|||
// 查询图节点和关系
|
|||
export const getInfoTest = (params) => { |
|||
return request({ |
|||
url: '/api/graph/getInfoTest', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
|
|||
export const getInfoTestAdd = (params) => { |
|||
return request({ |
|||
url: '/api/graph/getInfoTestAdd', |
|||
method: 'post', |
|||
data:params, |
|||
}); |
|||
}; |
|||
export const getpoinAll = () => { |
|||
return request({ |
|||
url: '/api/test/test6', |
|||
method: 'get', |
|||
}); |
|||
}; |
|||
@ -0,0 +1,56 @@ |
|||
import request from "@/utils/request"; |
|||
// 登录方法
|
|||
|
|||
export const loginInfo = (params) => { |
|||
return request({ |
|||
url: '/api/login/doLogin', |
|||
method: 'post', |
|||
data: params, |
|||
}); |
|||
}; |
|||
|
|||
// 注册方法
|
|||
export function registerInfo(data) { |
|||
return request({ |
|||
url: '/api/login/doRegister', |
|||
headers: { |
|||
isToken: false |
|||
}, |
|||
method: 'post', |
|||
data: data |
|||
}) |
|||
} |
|||
|
|||
|
|||
// 注册方法
|
|||
export function getAllClass() { |
|||
return request({ |
|||
url: 'api/login/getAllClass', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
export function getUser() { |
|||
return request({ |
|||
url: 'api/login/getUser', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
export const updateUser = (params) => { |
|||
return request({ |
|||
url: '/api/login/updateUser', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
@ -0,0 +1,103 @@ |
|||
import request from '@/utils/request'; |
|||
|
|||
export const getNumInfo = () => { |
|||
return request({ |
|||
url: '/api/tongji/getNumInfo', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
export const getHuoYueInfo = () => { |
|||
return request({ |
|||
url: '/api/tongji/getHuoYueInfo', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
export const getHuoYueInfo1 = () => { |
|||
return request({ |
|||
url: '/api/tongji/getHuoYueInfo1', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
export const getHuoYueInfo2 = () => { |
|||
return request({ |
|||
url: '/api/tongji/getHuoYueInfo2', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getStudyInfo = () => { |
|||
return request({ |
|||
url: '/api/tongji/getStudyInfo', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getStudyInfoList = () => { |
|||
return request({ |
|||
url: '/api/tongji/getStudyInfoList', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const getStudySmartList = () => { |
|||
return request({ |
|||
url: '/api/tongji/getStudySmartList', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getSmartAllList = () => { |
|||
return request({ |
|||
url: '/api/tongji/getSmartAllList', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
export const getSmartAllInfo = (params) => { |
|||
return request({ |
|||
url: '/api/tongji/getSmartAllInfo', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
export const getDocAllInfo = () => { |
|||
return request({ |
|||
url: '/api/tongji/getDocAllInfo', |
|||
method: 'get', |
|||
}); |
|||
}; |
|||
|
|||
@ -0,0 +1,158 @@ |
|||
//import axios from '../axios'
|
|||
import request from '@/utils/request'; |
|||
|
|||
/* |
|||
* 训练接口 |
|||
*/ |
|||
|
|||
// // 查询训练列表
|
|||
// export const getNodesLabels = (params) => {
|
|||
// return request({
|
|||
// url: '/user/search1',
|
|||
// method: 'get',
|
|||
// params
|
|||
// })
|
|||
// }
|
|||
|
|||
export const getAllTrain = (params) => { |
|||
return request({ |
|||
url: '/api/train/getAllTrain', |
|||
method: 'post', |
|||
data: params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const getTrainInfo = (data) => { |
|||
return request({ |
|||
url: '/api/train/getTrainInfo', |
|||
method: 'post', |
|||
data:data, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const insertsl = (params) => { |
|||
return request({ |
|||
url: '/api/train/insertsl', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const sumbitAnswer = (params) => { |
|||
return request({ |
|||
url: '/api/train/sumbitAnswer', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
export const updateImgs = (params) => { |
|||
return request({ |
|||
url: '/api/train/updateImgs', |
|||
method: 'post', |
|||
data:params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}); |
|||
}; |
|||
|
|||
|
|||
export const updateTrainDifficult = (trainId,difficult) => { |
|||
return request({ |
|||
url: '/api/train/updateTrainDifficult/'+trainId+"/"+difficult, |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
export const updateQuestionDifficult = (questionId,difficult) => { |
|||
return request({ |
|||
url: '/api/train/updateQuestionDifficult/'+questionId+"/"+difficult, |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
// export const getAllTrainType = (questionId,difficult) => {
|
|||
// return request({
|
|||
// url: '/api/train/getAllTrainType',
|
|||
// method: 'get',
|
|||
// })
|
|||
// }
|
|||
export const jiaojuan = (params) => { |
|||
return request({ |
|||
url: '/api/train/jiaojuan', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
export const defen = (params) => { |
|||
return request({ |
|||
url: '/api/train/defen', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
|
|||
export const updateLook = (params) => { |
|||
return request({ |
|||
url: '/api/train/updateLook', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
|
|||
|
|||
export const getAllInfo = (params) => { |
|||
return request({ |
|||
url: '/api/train/getAllInfo', |
|||
method: 'get', |
|||
params, |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
export const getAllTrainType = () => { |
|||
return request({ |
|||
url: '/api/train/getAllTrainType', |
|||
method: 'get', |
|||
headers:{ |
|||
'token':localStorage.getItem('token') |
|||
} |
|||
}) |
|||
} |
|||
|
|||
@ -0,0 +1,10 @@ |
|||
//import axios from '../axios'
|
|||
import request from '@/utils/request'; |
|||
|
|||
export const uploadInfo = (params) => { |
|||
return request({ |
|||
url: '/api/updateload/upload', |
|||
method: 'post', |
|||
data: params, |
|||
}); |
|||
}; |
|||
@ -0,0 +1,45 @@ |
|||
/* |
|||
* @Author: 秦少卫 |
|||
* @Date: 2024-04-24 14:07:06 |
|||
* @LastEditors: 秦少卫 |
|||
* @LastEditTime: 2024-06-12 21:42:00 |
|||
* @Description: 用户接口登录 |
|||
*/ |
|||
|
|||
import qs from 'qs'; |
|||
import axios from 'axios'; |
|||
|
|||
const baseURL = import.meta.env.APP_APIHOST; |
|||
|
|||
const instance = axios.create({ baseURL }); |
|||
|
|||
// web详情
|
|||
export const getWebInfo = () => instance.get('/api/web-site?populate=*'); |
|||
|
|||
// 获取素材分类
|
|||
export const getMaterialTypes = () => instance.get('/api/material-types'); |
|||
|
|||
// 获取素材列表
|
|||
export const getMaterials = (data: any) => instance.get('/api/materials?' + data); |
|||
|
|||
// 获取根据分类获取素材
|
|||
export const getMaterialsByType = (data: any) => |
|||
instance.get('/api/materials?' + qs.stringify(data)); |
|||
|
|||
// 获取字体分类分类
|
|||
export const getFontStyleTypes = () => instance.get('/api/font-style-types'); |
|||
|
|||
// 获取字体素材离别奥列表
|
|||
export const getFontStyles = (data: any) => instance.get('/api/font-styles?' + data); |
|||
|
|||
// 获取根据分类获取字体样式列表
|
|||
export const getFontStyleListByType = (data: any) => |
|||
instance.get('/api/font-styles?' + qs.stringify(data)); |
|||
|
|||
// 获取字体分类分类
|
|||
export const getTmplTypes = () => instance.get('/api/templ-types'); |
|||
// 获取模板列表
|
|||
export const getTmplList = (data: any) => instance.get('/api/templs?' + data); |
|||
|
|||
// 获取banner
|
|||
export const getBannerList = (data: any) => instance.get('/api/banners?' + data); |
|||
@ -0,0 +1,83 @@ |
|||
/* |
|||
* @Author: 秦少卫 |
|||
* @Date: 2024-04-24 14:07:06 |
|||
* @LastEditors: 秦少卫 |
|||
* @LastEditTime: 2024-06-14 16:17:41 |
|||
* @Description: 用户接口登录 |
|||
*/ |
|||
|
|||
import axios from 'axios'; |
|||
const baseURL = import.meta.env.APP_APIHOST; |
|||
|
|||
const instance = axios.create({ baseURL }); |
|||
|
|||
instance.interceptors.request.use(function (config) { |
|||
const token = getToken(); |
|||
if (token) { |
|||
config.headers['Authorization'] = `Bearer ${token}`; |
|||
} |
|||
return config; |
|||
}); |
|||
|
|||
const tokenKey = 'token'; |
|||
function getToken() { |
|||
const token = localStorage.getItem(tokenKey); |
|||
return token; |
|||
} |
|||
|
|||
// 详情
|
|||
export const getUserInfo = (data: any) => instance.get('/api/users/me', data); |
|||
|
|||
// 登录
|
|||
export const login = (data: any) => instance.post('/api/auth/local', data); |
|||
|
|||
// 注册
|
|||
export const register = (data: any) => instance.post('/api/auth/local/register', data); |
|||
|
|||
// 登出
|
|||
export const logout = () => localStorage.setItem(tokenKey, ''); |
|||
|
|||
// 自动登录
|
|||
export const autoLogin = (data: any) => instance.post('/api/custom/autoAuthUser', data); |
|||
|
|||
// 设置token
|
|||
export const setToken = (token: string) => localStorage.setItem(tokenKey, token); |
|||
|
|||
// 获取个人素材列表
|
|||
export const getFileList = (data: any) => instance.get('/api/user-materials?populate=*', data); |
|||
|
|||
// 上传素材
|
|||
export const uploadImg = (data: any) => instance.post('/api/upload', data); |
|||
|
|||
// 创建素材
|
|||
export const createdMaterial = (data: any) => instance.post('/api/user-materials', data); |
|||
|
|||
// 删除素材
|
|||
export const removeMaterial = (id: any) => instance.delete('/api/user-materials/' + id); |
|||
|
|||
// 创建模板
|
|||
export const createdTempl = (data: any) => instance.post('/api/user-templs', data); |
|||
|
|||
// 删除素材
|
|||
export const removeTempl = (data: any) => instance.delete(`/api/user-templs/${data}`); |
|||
|
|||
// 更新素材
|
|||
export const updataTempl = (id: any, data: any) => instance.put(`/api/user-templs/${id}`, data); |
|||
|
|||
// 查询素材列表
|
|||
export const getTmplList = (data: any) => instance.get(`/api/user-templs?${data}`); |
|||
|
|||
// 查询素材列表
|
|||
export const getTmplInfo = (data: any) => instance.get(`/api/user-templs/${data}`); |
|||
|
|||
// 获取用户树菜单
|
|||
export const getUserFileTypeTree = () => instance.get(`/api/user-templ/getUerFileTypeTree`); |
|||
|
|||
// 获取菜单树
|
|||
export const getFileTypeTree = (data: any) => |
|||
instance.get(`/api/custom/getUerFileTypeTree`, { |
|||
params: data, |
|||
}); |
|||
|
|||
// 获取用户树菜单
|
|||
export const getUerFileTree = () => instance.get(`/api/user-templ/getUerFileTree`); |
|||
@ -0,0 +1,363 @@ |
|||
|
|||
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td { |
|||
outline:none; |
|||
margin: 0; |
|||
padding: 0; |
|||
list-style-type:none; |
|||
} |
|||
i,strong { |
|||
font-style: normal; |
|||
font-weight: normal; |
|||
} |
|||
.comtreetable { |
|||
padding: 0 0.8vw; |
|||
// --------------------------------------表格样式 |
|||
//.el-table--border {border: none;} |
|||
.el-table--border::after {background-color: transparent;} |
|||
.el-table__empty-text {color:#D5DDE6;} |
|||
.el-table .caret-wrapper {width: auto;} |
|||
.el-table td, |
|||
.el-table th.is-leaf{border:none !important;border-bottom:1px dashed #063160!important;} |
|||
.el-table::before{background-color:transparent !important;} |
|||
.el-table--striped .el-table__body tr.el-table__row--striped td, |
|||
.el-table, |
|||
.el-table__expanded-cell{background:transparent !important;} |
|||
.el-table__header, |
|||
.el-table th, |
|||
.el-table tr {background-color: rgba(13, 46, 122,0) !important; color:#00A2F6;font-size: 1.3vh;} |
|||
// 隔行换色 |
|||
.el-table .el-table__row.el-table__row--striped{background-color:rgba(13, 46, 122,0) !important;} |
|||
.el-table tbody tr{background-color:rgba(13, 46, 122,0) !important;color:#D5DDE6;} |
|||
.el-table .el-table tbody tr.el-table__row{background-color:rgba(13, 46, 122,0) !important;color:#D5DDE6;} |
|||
// 鼠标划过 |
|||
.el-table__body tr:hover td{ |
|||
background-color: rgba(13, 46, 122,0.6) !important;color:#fff; |
|||
} |
|||
.el-table__body .hover-row td { |
|||
background-color: rgba(13, 46, 122,0) !important;color:#fff; |
|||
} |
|||
//.el-table--border th.gutter:last-of-type { |
|||
// border: none!important; |
|||
//} |
|||
.el-table__expand-icon { |
|||
color: #fff; |
|||
} |
|||
} |
|||
// 公用表格样式 |
|||
.comtable { |
|||
height: 100%; |
|||
// --------------------------------------表格样式 |
|||
.el-table--border {border-color: #225F99;} |
|||
.el-table--border::after {background-color: transparent;} |
|||
.el-table__empty-text {color:#D5DDE6;} |
|||
.el-table .caret-wrapper {width: auto;} |
|||
.el-table td, |
|||
.el-table th.is-leaf{border-color: #225F99;} |
|||
.el-table::before{background-color:transparent !important;} |
|||
.el-table--striped .el-table__body tr.el-table__row--striped td, |
|||
.el-table, |
|||
.el-table__expanded-cell{background:transparent !important;} |
|||
.el-table__header, |
|||
.el-table th, |
|||
.el-table tr {background-color: rgba(3, 68, 126, 0.4) !important; color:#eee;font-size: 1.2vh;} |
|||
// 隔行换色 |
|||
.el-table .el-table__row.el-table__row--striped{background-color:rgba(3, 68, 126, 0) !important;} |
|||
.el-table tbody tr{background-color:rgba(3, 68, 126, 0) !important;color:#D5DDE6;} |
|||
.el-table .el-table tbody tr.el-table__row{background-color:rgba(3, 68, 126, 0) !important;color:#D5DDE6;} |
|||
// 高亮当前行 |
|||
.el-table__body tr.current-row>td { |
|||
background-color: rgba(9, 81, 131, 0.6) !important;color:#fff; |
|||
} |
|||
// 鼠标划过 |
|||
.el-table__body tr:hover td{ |
|||
background-color: rgba(9, 81, 131, 0.6) !important;color:#fff; |
|||
} |
|||
.el-table__body .hover-row td { |
|||
background-color: rgba(9, 81, 131, 0.6) !important;color:#fff; |
|||
} |
|||
.el-table__fixed-right::before, |
|||
.el-table__fixed::before { |
|||
display: none; |
|||
} |
|||
.el-table__fixed-right-patch { |
|||
display: none; |
|||
} |
|||
.el-table--border th.gutter:last-of-type { |
|||
border-color: #225F99; |
|||
} |
|||
.el-table--border { |
|||
border: 1px solid #225F99!important; |
|||
} |
|||
.el-button { |
|||
padding: 0; |
|||
min-height: 0; |
|||
} |
|||
// -----------------------------------------------翻页样式 |
|||
.el-pagination{ |
|||
text-align: right!important; |
|||
padding: 1vh 0; |
|||
} |
|||
.el-pager li, |
|||
.el-pagination .btn-prev, |
|||
.el-pagination .btn-next, |
|||
.el-pager li.btn-quicknext, |
|||
.el-pager li.btn-quickprev { |
|||
font-size: 1.1vh !important; |
|||
margin-right: 0.5vw !important; |
|||
border: 1px solid #225F99 !important; |
|||
border-radius: 5px !important; |
|||
color: #8D9BAC !important; |
|||
background-color: #03447E !important; |
|||
&:hover { |
|||
background: #00AFFF !important; |
|||
color: #fff !important; |
|||
} |
|||
} |
|||
.el-pager li.active { |
|||
background: #00AFFF !important; |
|||
color: #fff !important; |
|||
border: 1px solid #00AFFF !important; |
|||
} |
|||
.el-pagination .el-select .el-input .el-input__inner, |
|||
.el-pagination__editor.el-input .el-input__inner{ |
|||
border: 1px solid #225F99 !important; |
|||
background: #03447E !important; |
|||
color: #fff !important; |
|||
} |
|||
.el-pagination__sizes { |
|||
.el-input__inner{ |
|||
height: 22px !important; |
|||
} |
|||
.el-input--mini .el-input__icon { |
|||
line-height: 22px !important; |
|||
} |
|||
} |
|||
.el-pagination button, |
|||
.el-pagination span:not([class*=suffix]) { |
|||
font-size: 1.1vh !important; |
|||
color:#00AFFF !important; |
|||
} |
|||
} |
|||
// --------------------------------------滚动条样式 |
|||
.page_scroll, .el-table__body-wrapper, .el-textarea__inner{ |
|||
&::-webkit-scrollbar { |
|||
width: 6px; |
|||
height: 6px; |
|||
} |
|||
// 滚动槽 |
|||
&::-webkit-scrollbar-track { |
|||
border-radius:10px; |
|||
} |
|||
// 滚动条的滑块 |
|||
&::-webkit-scrollbar-thumb { |
|||
background-color: rgba(9, 81, 125,0.5); |
|||
border-radius: 3px; |
|||
} |
|||
// 滚动条交汇处 |
|||
&::-webkit-scrollbar-corner { |
|||
background-color: rgba(9, 81, 125,0.5); |
|||
} |
|||
} |
|||
|
|||
// --------------------------------------弹窗样式 |
|||
//.el-dialog { |
|||
// background-color:#021a42 !important; |
|||
// box-shadow: 0px 0px 0px 1px #00a2ff !important; |
|||
//} |
|||
//.el-dialog .el-dialog__header { |
|||
// padding-top:8px; |
|||
// padding-bottom:8px; |
|||
// background-color:#01437b; |
|||
//} |
|||
//.el-dialog .el-dialog__header .el-dialog__title { |
|||
// color:#2fd5ff; |
|||
//} |
|||
//.el-dialog .el-dialog__header .el-dialog__headerbtn { |
|||
// top:10px; |
|||
// right:12px; |
|||
//} |
|||
//.el-dialog .el-dialog__body { |
|||
// padding: 2vh 1vw; |
|||
//} |
|||
//.el-dialog .el-dialog__footer { |
|||
// padding:10px 20px; |
|||
// box-shadow: 0px -1px 0px #084171 !important; |
|||
// background-color:#052253; |
|||
// .el-button--primary { |
|||
// background-color: #01437b; |
|||
// } |
|||
//} |
|||
// -----------------------------------------表单样式 |
|||
.el-form { |
|||
.el-input,.el-select { |
|||
margin-right: 0.8vw; |
|||
.el-input__prefix,.el-input__icon { |
|||
line-height: 4vh!important; |
|||
} |
|||
} |
|||
.el-input__inner,.el-input-group__append { |
|||
height: 4vh!important; |
|||
line-height: 4vh!important; |
|||
background: rgba(1, 31, 80, 0.6); |
|||
border: 1px solid #016AB6; |
|||
color: #fff; |
|||
} |
|||
.el-textarea__inner { |
|||
background: rgba(1, 31, 80, 0.6); |
|||
border: 1px solid #016AB6; |
|||
color: #fff; |
|||
} |
|||
.el-input__inner:hover,.el-textarea__inner:hover { |
|||
border: 1px solid #409EFF!important; |
|||
} |
|||
.el-form-item__label { |
|||
font-size: 1.3vh!important; |
|||
color: #fff; |
|||
} |
|||
.el-switch__label { |
|||
color: #D5DDE6!important; |
|||
} |
|||
.el-switch__label.is-active { |
|||
color: #00AFFF!important; |
|||
} |
|||
} |
|||
// --------------------------------消息框样式 |
|||
.el-message-box { |
|||
background-color:#021a42 !important; |
|||
box-shadow: 0px 0px 0px 1px #00a2ff !important; |
|||
border: none !important; |
|||
} |
|||
.el-message-box .el-message-box__header { |
|||
padding-top:8px; |
|||
padding-bottom:8px; |
|||
background-color:#01437b; |
|||
} |
|||
.el-message-box .el-message-box__header .el-message-box__title { |
|||
color:#2fd5ff; |
|||
} |
|||
.el-message-box .el-message-box__header .el-message-box__headerbtn { |
|||
top:10px; |
|||
right:12px; |
|||
} |
|||
.el-message-box .el-message-box__content { |
|||
padding: 2vh 1vw; |
|||
color: #fff; |
|||
} |
|||
.el-message-box .el-message-box__btns { |
|||
.el-button--primary { |
|||
background-color: #01437b; |
|||
} |
|||
} |
|||
// -------------------------------时间选择器样式 |
|||
.el-date-editor.el-input__inner { |
|||
background: rgba(1, 31, 80, 0.6); |
|||
border: 1px solid #016AB6; |
|||
color: #fff; |
|||
height: 4vh!important; |
|||
line-height: 4vh!important; |
|||
} |
|||
.el-date-editor.el-input__inner:hover { |
|||
border: 1px solid #409EFF!important; |
|||
} |
|||
.el-date-editor { |
|||
.el-range__icon { |
|||
color: #fff; |
|||
} |
|||
.el-input__prefix,.el-input__icon { |
|||
height: 4vh!important; |
|||
line-height: 4vh!important; |
|||
} |
|||
.el-range-input { |
|||
background-color: rgba(2, 55, 112,0)!important; |
|||
color: #fff!important; |
|||
border-radius: 4px; |
|||
} |
|||
.el-date-editor { |
|||
padding-left: 0; |
|||
padding-right: 0; |
|||
} |
|||
.el-range-separator { |
|||
color: #00AFFF!important; |
|||
margin: 0 0vw!important; |
|||
height: 4vh!important; |
|||
line-height: 4vh!important; |
|||
} |
|||
} |
|||
// -------------------------------流星动画效果 |
|||
@keyframes star-ani { |
|||
0% { |
|||
opacity: 0; |
|||
transform: scale(0) translate3d(0, 0, 0); |
|||
} |
|||
20%{ |
|||
opacity: 0.8; |
|||
transform: scale(0.2) translate3d(0px, 5.5vh, 5.5vh); |
|||
} |
|||
40% { |
|||
opacity: 0.8; |
|||
transform: scale(0.4) translate3d(0px, 11vh, 11vh); |
|||
} |
|||
60% { |
|||
opacity: 0.8; |
|||
transform: scale(0.6) translate3d(0px, 16.5vh, 16.5vh); |
|||
} |
|||
80% { |
|||
opacity: 1; |
|||
transform: scale(1) translate3d(0px, 22vh, 22vh); |
|||
} |
|||
100% { |
|||
opacity: 1; |
|||
transform: scale(1.2) translate3d(0px, 27.5vh, 27.5vh); |
|||
} |
|||
} |
|||
|
|||
|
|||
.labelcheck { |
|||
.el-checkbox { |
|||
color: #d5d5d5; |
|||
.el-checkbox__label { |
|||
font-size: 1.2vh; |
|||
} |
|||
} |
|||
.el-checkbox__inner { |
|||
border: 1px solid #009CE7!important; |
|||
background: #023663!important; |
|||
} |
|||
.el-checkbox__input.is-checked+.el-checkbox__label { |
|||
color: #00AFFF; |
|||
} |
|||
} |
|||
|
|||
.dia-search { |
|||
.el-input .el-input__inner{ |
|||
border: 1px solid #225F99 !important; |
|||
background: #03447E !important; |
|||
color: #fff !important; |
|||
} |
|||
} |
|||
|
|||
// vue3-json-viewer样式 |
|||
.jv-container.jv-light { |
|||
background: transparent!important; |
|||
overflow: auto; |
|||
height: 100%; |
|||
} |
|||
.jv-container.jv-light .jv-item.jv-object { |
|||
color: #01BBDF!important; |
|||
} |
|||
.jv-container.jv-light .jv-key { |
|||
color: #01BBDF!important; |
|||
} |
|||
.jv-container.jv-light .jv-item.jv-array { |
|||
color: #01BBDF!important; |
|||
} |
|||
.jv-container.jv-light .jv-ellipsis { |
|||
background-color: #01BBDF!important; |
|||
color: #fff!important; |
|||
} |
|||
.jv-node:after { |
|||
color: #01BBDF!important; |
|||
} |
|||
.jv-container .jv-toggle { |
|||
background-image: url('./assets/img/caret.png')!important; |
|||
} |
|||
@ -0,0 +1,49 @@ |
|||
* { |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
|
|||
html, |
|||
body, |
|||
#app, |
|||
.wrapper { |
|||
width: 100%; |
|||
height: 100%; |
|||
overflow: hidden; |
|||
} |
|||
|
|||
body { |
|||
font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; |
|||
} |
|||
|
|||
a { |
|||
text-decoration: none |
|||
} |
|||
|
|||
|
|||
.content-box { |
|||
position: absolute; |
|||
left: 0; |
|||
right: 0; |
|||
top: 6vh; |
|||
bottom: 0; |
|||
-webkit-transition: left .3s ease-in-out; |
|||
transition: left .3s ease-in-out; |
|||
background: #021329; |
|||
font-size: 1.8vh; |
|||
} |
|||
|
|||
.content { |
|||
width: auto; |
|||
height: calc(100vh - 6vh); |
|||
padding: 1vw; |
|||
box-sizing: border-box; |
|||
} |
|||
|
|||
|
|||
.container { |
|||
height: 100%; |
|||
} |
|||
.homebox { |
|||
color: #fff; |
|||
} |
|||
@ -0,0 +1,603 @@ |
|||
body { |
|||
font-family: "Helvetica Neue", "Microsoft YaHei", "Hiragino Sans GB", |
|||
"WenQuanYi Micro Hei", "Helvetica", "Arial", "Sans-serif"; |
|||
background: #ffffff; |
|||
} |
|||
|
|||
.navbar { |
|||
min-height: 34px; |
|||
border-radius: 0; |
|||
margin-bottom: 0; |
|||
background: #385380; |
|||
} |
|||
|
|||
.navbar-inverse { |
|||
border-color: #385380; |
|||
color: #fff; |
|||
height: 36px; |
|||
} |
|||
|
|||
.navbar-brand { |
|||
padding: 2px 5px; |
|||
height: 34px; |
|||
} |
|||
|
|||
.navbar-right > .dropdown { |
|||
height: 35px; |
|||
} |
|||
|
|||
.navbar-nav > li > a { |
|||
padding-top: 5px; |
|||
padding-bottom: 5px; |
|||
} |
|||
|
|||
.navbar-inverse .navbar-nav > li:hover { |
|||
background-color: #000; |
|||
height: 35px; |
|||
} |
|||
|
|||
.navbar-inverse .navbar-nav > li > a { |
|||
color: #fff; |
|||
} |
|||
|
|||
.dropdown-menu .divider { |
|||
margin: 4px 0; |
|||
} |
|||
|
|||
.studio-header { |
|||
margin: 0 0 20px; |
|||
border-bottom: 1px solid #ddd; |
|||
background-color: #fff; |
|||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); |
|||
height: 28px; |
|||
} |
|||
|
|||
.studio-header .header-title { |
|||
float: left; |
|||
width: auto; |
|||
max-width: 60%; |
|||
margin-left: 15px; |
|||
|
|||
} |
|||
|
|||
.studio-header .header-control-middle { |
|||
margin-left: 30px; |
|||
width: auto; |
|||
float: left; |
|||
} |
|||
|
|||
.studio-header .header-control-right { |
|||
width: auto; |
|||
float: right; |
|||
margin-right: 15px; |
|||
} |
|||
|
|||
.studio-header .header-control-right .nav > li > a { |
|||
padding: 4px 15px; |
|||
border-radius: 0; |
|||
font-size: 14px; |
|||
color: #333; |
|||
} |
|||
|
|||
.studio-header .header-control-right .nav > li > a:hover { |
|||
background-color: #5d5c5c; |
|||
color: #fff; |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.studio-header .header-title h1 { |
|||
font-size: 14px; |
|||
margin: 6px 0; |
|||
} |
|||
|
|||
.studio-header .header-title h1 i { |
|||
margin-right: 6px; |
|||
} |
|||
|
|||
.studio-header-button { |
|||
font-size: 14px; |
|||
padding: 4px 5px; |
|||
float: left; |
|||
} |
|||
|
|||
.schema-bt { |
|||
float: right; |
|||
} |
|||
|
|||
.studio-header .btn-group-sm > .btn, |
|||
.btn-sm { |
|||
padding: 3px 10px; |
|||
} |
|||
|
|||
.btn-default { |
|||
background-image: none; |
|||
} |
|||
|
|||
.studio-header .header-title p { |
|||
color: #666; |
|||
} |
|||
|
|||
.studio-header .btn-link { |
|||
color: #333; |
|||
} |
|||
|
|||
.studio-header .btn-link:hover, |
|||
.studio-header .btn-link:focus { |
|||
background-color: #ddd; |
|||
color: #3071a9; |
|||
text-decoration: none; |
|||
} |
|||
|
|||
td > button.btn { |
|||
padding: 3px 6px; |
|||
margin-left: 4px; |
|||
} |
|||
|
|||
.page-title { |
|||
font-size: 18px; |
|||
margin-bottom: 10px; |
|||
margin-top: 10px; |
|||
color: inherit; |
|||
font-family: inherit; |
|||
font-weight: 500; |
|||
line-height: 1.1; |
|||
} |
|||
|
|||
.modal-header { |
|||
border-bottom: none; |
|||
padding-left: 50px; |
|||
} |
|||
|
|||
.modal-footer { |
|||
border-top: none; |
|||
} |
|||
|
|||
.modal-content { |
|||
border-radius: 0; |
|||
background-color: #fff; |
|||
} |
|||
|
|||
.modal-body { |
|||
padding: 0 50px; |
|||
} |
|||
|
|||
.modal-footer { |
|||
text-align: center; |
|||
} |
|||
|
|||
.card { |
|||
font-size: 14px; |
|||
padding: 3px 0; |
|||
} |
|||
|
|||
.card .panel { |
|||
margin-bottom: 0; |
|||
border-radius: 2px; |
|||
} |
|||
|
|||
.card .panel .panel-body { |
|||
padding: 5px 10px; |
|||
height: 100%; |
|||
} |
|||
|
|||
.card .btn-link { |
|||
color: #333; |
|||
} |
|||
|
|||
.card .btn-link:hover, |
|||
.card .btn-link:focus { |
|||
background-color: #ddd; |
|||
color: #3071a9; |
|||
text-decoration: none; |
|||
} |
|||
|
|||
.card-editor { |
|||
height: auto; |
|||
} |
|||
|
|||
.card-para { |
|||
display: none; |
|||
} |
|||
|
|||
.card-para .form-control { |
|||
width: auto; |
|||
} |
|||
|
|||
.card-para .form-group { |
|||
margin-bottom: 8px; |
|||
} |
|||
|
|||
.card-content-toolbox { |
|||
margin-bottom: 8px; |
|||
} |
|||
|
|||
.card-content { |
|||
height: auto; |
|||
} |
|||
|
|||
.card-footer { |
|||
padding: 5px; |
|||
font-size: 12px; |
|||
color: #ccc; |
|||
} |
|||
|
|||
.card-add:hover .card-add-line { |
|||
border-bottom: 1px solid #ddd; |
|||
} |
|||
|
|||
.card-add-btn { |
|||
text-align: center; |
|||
margin-top: -15px; |
|||
} |
|||
|
|||
.card-add-line { |
|||
width: 100%; |
|||
height: 15px; |
|||
|
|||
} |
|||
|
|||
.schema-view { |
|||
background-color: #fff; |
|||
margin-top: -19px; |
|||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); |
|||
margin-bottom: 20px; |
|||
min-height: 100px; |
|||
} |
|||
|
|||
.graph { |
|||
width: 100%; |
|||
} |
|||
|
|||
.bootstrap-select .dropdown-toggle:focus { |
|||
outline: none !important; |
|||
} |
|||
|
|||
.bootstrap-select .dropdown-toggle:focus li.selected { |
|||
outline: none !important; |
|||
} |
|||
|
|||
li.selected { |
|||
outline: none !important; |
|||
} |
|||
|
|||
.bootstrap-select a:focus { |
|||
outline: none; |
|||
outline-offset: -2px; |
|||
} |
|||
|
|||
.bootstrap-select .dropdown-menu { |
|||
font-size: 12px; |
|||
} |
|||
|
|||
.connection-header { |
|||
float: right; |
|||
padding-bottom: 10px; |
|||
} |
|||
|
|||
.connection-header button span { |
|||
margin-left: 5px; |
|||
} |
|||
|
|||
form { |
|||
font-size: 14px !important; |
|||
} |
|||
|
|||
.has-error { |
|||
border-color: #a94442; |
|||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); |
|||
} |
|||
|
|||
.form-err-message { |
|||
color: #a94442; |
|||
margin-top: 5px; |
|||
|
|||
} |
|||
|
|||
.alert-message { |
|||
margin-top: 20px; |
|||
text-align: center; |
|||
} |
|||
|
|||
.dropdown > a { |
|||
color: #333; |
|||
} |
|||
|
|||
.full-screen { |
|||
margin-top: -3px; |
|||
} |
|||
|
|||
.full-screen-col-md-12 { |
|||
padding: 0 0; |
|||
} |
|||
|
|||
.tab-content { |
|||
padding-top: 5px; |
|||
padding-bottom: 5px; |
|||
} |
|||
|
|||
.code-content { |
|||
overflow-y: scroll; |
|||
overflow-x: scroll; |
|||
height: 250px; |
|||
word-wrap: break-word; |
|||
word-break: break-all; |
|||
} |
|||
|
|||
.card-content .alert { |
|||
/*padding: 0!important;*/ |
|||
margin-bottom: 0 !important; |
|||
} |
|||
|
|||
.html-content { |
|||
padding: 0 5px 0 5px; |
|||
word-wrap: break-word; |
|||
word-break: normal; |
|||
} |
|||
|
|||
.progress-wrapper { |
|||
height: 80px; |
|||
width: 80px; |
|||
margin: auto; |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
bottom: 0; |
|||
right: 0; |
|||
} |
|||
|
|||
.schema { |
|||
padding-top: 5px; |
|||
} |
|||
|
|||
.schema h5 { |
|||
margin-left: 10px; |
|||
} |
|||
|
|||
.schema-span { |
|||
min-width: 50px; |
|||
margin: 0 5px; |
|||
display: inline-block; |
|||
} |
|||
|
|||
.schema-box { |
|||
border-top: 1px solid #ddd; |
|||
padding: 5px; |
|||
width: 100%; |
|||
} |
|||
|
|||
.schema-container { |
|||
padding-bottom: 20px; |
|||
} |
|||
|
|||
.schema-container .label { |
|||
padding: .3em .6em .3em !important; |
|||
} |
|||
|
|||
.vis-tooltip { |
|||
padding: 10px 10px !important; |
|||
white-space: nowrap; |
|||
font-family: Sans-serif !important; |
|||
font-size: 12px !important; |
|||
font-variant: normal !important; |
|||
font-weight: normal !important; |
|||
font-stretch: normal !important; |
|||
/* opacity: .8; */ |
|||
color: #ddd !important; |
|||
background-color: rgba(40, 40, 40, .8) !important; |
|||
-moz-border-radius: 3px; |
|||
-webkit-border-radius: 3px; |
|||
border-radius: 3px !important; |
|||
border: 1px solid #666 !important; |
|||
box-shadow: 0px 0px 5px rgba(255, 255, 255, .2) !important; |
|||
pointer-events: none !important; |
|||
z-index: 999 !important; |
|||
transition: left .4s cubic-bezier(.23, 1, .32, 1), |
|||
top .4s cubic-bezier(.23, 1, .32, 1) !important; |
|||
} |
|||
|
|||
.tooltips-label { |
|||
font-weight: 800 !important; |
|||
} |
|||
|
|||
.data_label { |
|||
display: inline-block; |
|||
color: #eee; |
|||
font-weight: 700; |
|||
margin-left: 0.8vw; |
|||
} |
|||
|
|||
.round-red { |
|||
width: 10px; |
|||
height: 10px; |
|||
display: inline-block; |
|||
font-size: 10px; |
|||
line-heigth: 10px; |
|||
text-align: center; |
|||
color: #f00; |
|||
text-decoration: none; |
|||
} |
|||
|
|||
.round-gray { |
|||
width: 10px; |
|||
height: 10px; |
|||
display: inline-block; |
|||
font-size: 10px; |
|||
line-heigth: 10px; |
|||
text-align: center; |
|||
color: #ccc; |
|||
text-decoration: none; |
|||
} |
|||
|
|||
.react-tabs .nav > li > a { |
|||
padding: 5px 10px; |
|||
color: #5d5c5c; |
|||
border-radius: 3px; |
|||
|
|||
} |
|||
|
|||
.react-tabs .nav > li > a:hover { |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.react-tabs .nav-pills > li.active > a, |
|||
.nav-pills > li.active > a:focus, |
|||
.nav-pills > li.active > a:hover { |
|||
color: #fff; |
|||
background-color: #8a8989; |
|||
} |
|||
|
|||
.err_msg h5 { |
|||
margin-top: 5px; |
|||
} |
|||
|
|||
.err_title .detail { |
|||
min-width: 50px; |
|||
display: inline-block; |
|||
margin-left: 5px; |
|||
padding: .2em .6em .2em; |
|||
} |
|||
|
|||
.err_title .detail:hover { |
|||
background-color: #5d5c5c; |
|||
color: #fff; |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.err_title { |
|||
padding-bottom: 5px; |
|||
} |
|||
|
|||
.detailed_err_msg { |
|||
border-top: 1px #a2a0a0 dashed; |
|||
padding-top: 5px; |
|||
color: #000; |
|||
word-wrap: break-word; |
|||
} |
|||
|
|||
.property_name_span { |
|||
margin-right: 5px; |
|||
font-weight: 700; |
|||
} |
|||
|
|||
.property_value_span { |
|||
margin-left: 5px; |
|||
word-wrap: break-word; |
|||
} |
|||
|
|||
.loading-backdrop { |
|||
position: fixed; |
|||
top: 0; |
|||
right: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
z-index: 1040; |
|||
background: rgba(0, 0, 0, 0.7); |
|||
opacity: .3; |
|||
transition: color .4s, border-color .4s; |
|||
overflow-x: hidden; |
|||
overflow-y: auto; |
|||
} |
|||
|
|||
.loading-image { |
|||
width: 80px; |
|||
height: 80px; |
|||
z-index: 2040; |
|||
} |
|||
|
|||
/* vis */ |
|||
div.vis-network div.vis-navigation div.vis-button { |
|||
border-radius: 0; |
|||
width: 30px; |
|||
height: 30px; |
|||
display: none; |
|||
} |
|||
|
|||
div.vis-network:hover div.vis-navigation div.vis-button { |
|||
display: block; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button:hover { |
|||
box-shadow: none!important; |
|||
background-color: transparent!important; |
|||
} |
|||
div.vis-network div.vis-navigation div.vis-button:active { |
|||
box-shadow: none!important; |
|||
background-color: transparent!important; |
|||
} |
|||
|
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-zoomIn { |
|||
background-image: url(../img/zoom-in.png) !important; |
|||
background-repeat: no-repeat; |
|||
background-position: 50% 50%; |
|||
background-size: 16px 16px; |
|||
bottom: 60px !important; |
|||
right: 2px !important; |
|||
opacity: .5; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-zoomOut { |
|||
background-image: url(../img/zoom-out.png) !important; |
|||
background-size: 16px 16px; |
|||
background-repeat: no-repeat; |
|||
background-position: 50% 50%; |
|||
bottom: 30px !important; |
|||
right: 2px !important; |
|||
opacity: .5; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-zoomExtends { |
|||
background-image: url(../img/shrink.png) !important; |
|||
background-size: 16px 16px; |
|||
background-repeat: no-repeat; |
|||
background-position: 50% 50%; |
|||
bottom: 0px !important; |
|||
right: 2px !important; |
|||
opacity: .5; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-up { |
|||
display: none; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-down { |
|||
display: none; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-left { |
|||
display: none; |
|||
} |
|||
|
|||
div.vis-network div.vis-navigation div.vis-button.vis-right { |
|||
display: none; |
|||
} |
|||
|
|||
.path_value { |
|||
margin-left: 5px; |
|||
margin-right: 5px; |
|||
padding-left: 5px; |
|||
padding-right: 5px; |
|||
} |
|||
|
|||
.query_panel_language { |
|||
padding: 5px 12px; |
|||
margin: 1px; |
|||
} |
|||
|
|||
.alert-list { |
|||
margin-top: 140px; |
|||
position: fixed; |
|||
z-index: 99999; |
|||
width: 60%; |
|||
margin-left: auto; |
|||
margin-right: auto; |
|||
left: 0px; |
|||
right: 0px; |
|||
} |
|||
|
|||
.alert-text { |
|||
word-wrap : break-word; |
|||
} |
|||
.vis-network:focus { |
|||
outline: none!important; |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
export const config = { |
|||
background:'40,47,183', |
|||
node: { //节点的默认配置
|
|||
label: { //标签配置
|
|||
show: false, //是否显示
|
|||
color: '20,20,20', //字体颜色
|
|||
font: 'normal 30px Arial', //字体大小及类型
|
|||
textPosition: 'Bottom_Center' //文字位置 Top_Center,Bottom_Center,Middle_Right,Middle_Center
|
|||
}, |
|||
shape: 'circle', |
|||
showLabel:false, |
|||
}, |
|||
link: { //连线的默认配置
|
|||
label: { //连线标签
|
|||
show: true, //是否显示
|
|||
color: '255,255,255', //字体颜色
|
|||
font: 'normal 13px Arial', //字体大小及类型
|
|||
//background:'220,220,220' //标签背景色
|
|||
}, |
|||
lineType: 'direct', //连线类型,direct,curver,vlink,hlink,vbezier,hbezier,bezier
|
|||
colorType: 'defined', //连线颜色类型 source:继承source颜色,target:继承target颜色 both:用双边颜色,defined:自定义
|
|||
alpha: 1, // 连线透明度
|
|||
showArrow: true, //显示连线箭头
|
|||
}, |
|||
lineColor:'202,202,202', |
|||
layerName:'frDirect', |
|||
|
|||
wheelZoom: 0.8, //开启鼠标滚轮缩放
|
|||
highLightNeiber: false //相邻节点高亮开关
|
|||
} |
|||
@ -0,0 +1,175 @@ |
|||
export const demoData = { |
|||
"nodes":[ |
|||
{ |
|||
"id":"123456", |
|||
"label":"爱妃术有限公司", |
|||
"color":"233,120,120", |
|||
"type":"公司", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"}, |
|||
{"name":"属性二","type":"数值型","unit":"个"}, |
|||
{"name":"属性三","type":"字符型","unit":"次"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"2222", |
|||
"label":"山东暗访十年有限公司", |
|||
"color":"233,120,120", |
|||
"type":"公司", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"}, |
|||
{"name":"属性二","type":"数值型","unit":"个"}, |
|||
{"name":"属性三","type":"字符型","unit":"次"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"3333", |
|||
"label":"山东阿萨德集团有限公司", |
|||
"color":"233,120,120", |
|||
"type":"公司", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"}, |
|||
{"name":"属性二","type":"数值型","unit":"个"}, |
|||
{"name":"属性三","type":"字符型","unit":"次"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"4444", |
|||
"label":"贾墀臭", |
|||
"color":"120,120,233", |
|||
"type":"公司员工", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"5555", |
|||
"label":"邓愍摸", |
|||
"color":"120,233,120", |
|||
"type":"公司高管", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"}, |
|||
{"name":"属性二","type":"数值型","unit":"个"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"6666", |
|||
"label":"邓哿薪", |
|||
"color":"120,233,120", |
|||
"type":"公司高管", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"}, |
|||
{"name":"属性二","type":"数值型","unit":"个"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"7777", |
|||
"label":"孟断簏", |
|||
"color":"120,120,233", |
|||
"type":"公司员工", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"属性一","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
} |
|||
], |
|||
"links":[ |
|||
{ |
|||
"id":"e111", |
|||
"source":"3333", |
|||
"target":"123456", |
|||
"label":"子公司", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"关系属性","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"e222", |
|||
"source":"3333", |
|||
"target":"4444", |
|||
"label":"雇员", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"关系属性","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"e333", |
|||
"source":"2222", |
|||
"target":"7777", |
|||
"label":"员工", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"关系属性","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"e444", |
|||
"source":"3333", |
|||
"target":"7777", |
|||
"label":"员工", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"关系属性","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"e555", |
|||
"source":"3333", |
|||
"target":"2222", |
|||
"label":"投资", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"关系属性","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"e666", |
|||
"source":"2222", |
|||
"target":"3333", |
|||
"label":"子公司" |
|||
}, |
|||
{ |
|||
"id":"e777", |
|||
"source":"2222", |
|||
"target":"6666", |
|||
"label":"股东" |
|||
}, |
|||
{ |
|||
"id":"e888", |
|||
"source":"3333", |
|||
"target":"6666", |
|||
"label":"董事长", |
|||
"properties":{ |
|||
"attributes":[ |
|||
{"name":"关系属性","type":"字符型","unit":"项"} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
"id":"e999", |
|||
"source":"2222", |
|||
"target":"5555", |
|||
"label":"总经理" |
|||
} |
|||
] |
|||
}; |
|||
|
After Width: | Height: | Size: 420 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 203 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 528 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 553 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 690 B |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 872 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 MiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 553 B |
|
After Width: | Height: | Size: 495 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 86 B |
|
After Width: | Height: | Size: 1001 KiB |
|
After Width: | Height: | Size: 413 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 872 KiB |
|
After Width: | Height: | Size: 199 B |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 148 B |
|
After Width: | Height: | Size: 144 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 721 B |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 752 KiB |
|
After Width: | Height: | Size: 1001 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 605 B |
|
After Width: | Height: | Size: 877 B |