Compare commits
59 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
faf2d44fbb | ||
|
|
88516d9491 | ||
|
|
88dbbe03ea | ||
|
|
ae1fd2e7cf | ||
|
|
d3931f47bc | ||
|
|
bf9bd59b63 | ||
|
|
fb0ff50837 | ||
|
|
93727a0ac7 | ||
|
|
2641e70c78 | ||
|
|
bc44584698 | ||
|
|
82394dd7a3 | ||
|
|
2e688ad686 | ||
|
|
9b998e0c6d | ||
|
|
1045588301 | ||
|
|
ba86399fd3 | ||
|
|
a89164f885 | ||
|
|
7f2344c82c | ||
|
|
3c8e430533 | ||
|
|
f7209fba53 | ||
|
|
9fae683d8b | ||
|
|
79a2b98a1a | ||
|
|
98b28a631a | ||
|
|
6fec64f515 | ||
|
|
01d5890b35 | ||
|
|
fea583eb5b | ||
|
|
bfe5039a1c | ||
|
|
7a57d944c8 | ||
|
|
ca27e87241 | ||
|
|
e674a1ece4 | ||
|
|
dfb63346d3 | ||
|
|
4d899d48dc | ||
|
|
fa3a3dfcb0 | ||
|
|
e36210aa27 | ||
|
|
20a599594c | ||
|
|
70f8dbae53 | ||
|
|
d8022b2682 | ||
|
|
0d7c5b8ace | ||
|
|
88c9850c44 | ||
|
|
f1ed62cdca | ||
|
|
bfac86d5dd | ||
|
|
341015c584 | ||
|
|
7c5a66978e | ||
|
|
b21fc3f5e7 | ||
|
|
0e52628842 | ||
|
|
f7922cafa5 | ||
|
|
8c5496829e | ||
|
|
8514f051a7 | ||
|
|
61feb29fe2 | ||
|
|
fa29881f04 | ||
|
|
46cb8e7d0b | ||
|
|
b6143bc75e | ||
|
|
92e1ec05d2 | ||
|
|
75f23bb1bf | ||
|
|
5f5731f813 | ||
|
|
55159be0dc | ||
|
|
0c4e1dc7ae | ||
|
|
b4abdeb246 | ||
|
|
7e61dda4aa | ||
|
|
283aafb27d |
@@ -1,3 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
extends: ["@commitlint/config-conventional"]
|
|
||||||
};
|
|
||||||
12
.env
@@ -1,14 +1,8 @@
|
|||||||
# port
|
# port
|
||||||
VITE_DEV_PORT = '8001'
|
VITE_DEV_PORT = '8080'
|
||||||
|
|
||||||
# development path
|
# development path
|
||||||
VITE_DEV_PATH = '/'
|
VITE_DEV_PATH = 'http://1.117.240.165:8080'
|
||||||
|
|
||||||
# production path
|
# production path
|
||||||
VITE_PRO_PATH = '/'
|
VITE_PRO_PATH = 'http://1.117.240.165:8080'
|
||||||
|
|
||||||
# spa-title
|
|
||||||
VITE_GLOB_APP_TITLE = GoView
|
|
||||||
|
|
||||||
# spa shortname
|
|
||||||
VITE_GLOB_APP_SHORT_NAME = GoView
|
|
||||||
22
.eslintrc.js
@@ -9,22 +9,16 @@ module.exports = {
|
|||||||
sourceType: 'module',
|
sourceType: 'module',
|
||||||
ecmaFeatures: {
|
ecmaFeatures: {
|
||||||
jsx: true,
|
jsx: true,
|
||||||
tsx: true
|
tsx: true,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
env: {
|
env: {
|
||||||
node: true,
|
node: true,
|
||||||
// The Follow config only works with eslint-plugin-vue v8.0.0+
|
|
||||||
'vue/setup-compiler-macros': true
|
|
||||||
},
|
},
|
||||||
extends: ['plugin:vue/vue3-essential', 'eslint:recommended'],
|
extends: ["plugin:vue/vue3-essential", "eslint:recommended"],
|
||||||
rules: {
|
rules: {
|
||||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||||
'no-unused-vars': 'off',
|
},
|
||||||
'vue/no-unused-vars': 'off',
|
};
|
||||||
'vue/multi-word-component-names': 'off',
|
|
||||||
'vue/valid-template-root': 'off',
|
|
||||||
'vue/no-mutating-props': 'off'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
1
.gitignore
vendored
@@ -3,4 +3,3 @@ node_modules
|
|||||||
dist
|
dist
|
||||||
dist-ssr
|
dist-ssr
|
||||||
*.local
|
*.local
|
||||||
.vscode
|
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
. "$(dirname -- "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
npx --no-install commitlint -e
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
version: '1.0'
|
|
||||||
name: branch-pipeline
|
|
||||||
displayName: BranchPipeline
|
|
||||||
stages:
|
|
||||||
- stage:
|
|
||||||
name: compile
|
|
||||||
displayName: 编译
|
|
||||||
steps:
|
|
||||||
- step: build@nodejs
|
|
||||||
name: build_nodejs
|
|
||||||
displayName: Nodejs 构建
|
|
||||||
# 支持8.16.2、10.17.0、12.16.1、14.16.0、15.12.0五个版本
|
|
||||||
nodeVersion: 14.16.0
|
|
||||||
# 构建命令:安装依赖 -> 清除上次打包产物残留 -> 执行构建 【请根据项目实际产出进行填写】
|
|
||||||
commands:
|
|
||||||
- npm install && rm -rf ./dist && npm run build
|
|
||||||
# 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
|
|
||||||
artifacts:
|
|
||||||
# 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
|
|
||||||
- name: BUILD_ARTIFACT
|
|
||||||
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
|
|
||||||
path:
|
|
||||||
- ./dist
|
|
||||||
- step: publish@general_artifacts
|
|
||||||
name: publish_general_artifacts
|
|
||||||
displayName: 上传制品
|
|
||||||
# 上游构建任务定义的产物名,默认BUILD_ARTIFACT
|
|
||||||
dependArtifact: BUILD_ARTIFACT
|
|
||||||
# 上传到制品库时的制品命名,默认output
|
|
||||||
artifactName: output
|
|
||||||
dependsOn: build_nodejs
|
|
||||||
- stage:
|
|
||||||
name: release
|
|
||||||
displayName: 发布
|
|
||||||
steps:
|
|
||||||
- step: publish@release_artifacts
|
|
||||||
name: publish_release_artifacts
|
|
||||||
displayName: '发布'
|
|
||||||
# 上游上传制品任务的产出
|
|
||||||
dependArtifact: output
|
|
||||||
# 发布制品版本号
|
|
||||||
version: '1.0.0.0'
|
|
||||||
# 是否开启版本号自增,默认开启
|
|
||||||
autoIncrement: true
|
|
||||||
triggers:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
exclude:
|
|
||||||
- master
|
|
||||||
include:
|
|
||||||
- .*
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
version: '1.0'
|
|
||||||
name: master-pipeline
|
|
||||||
displayName: MasterPipeline
|
|
||||||
stages:
|
|
||||||
- stage:
|
|
||||||
name: compile
|
|
||||||
displayName: 编译
|
|
||||||
steps:
|
|
||||||
- step: build@nodejs
|
|
||||||
name: build_nodejs
|
|
||||||
displayName: Nodejs 构建
|
|
||||||
# 支持8.16.2、10.17.0、12.16.1、14.16.0、15.12.0五个版本
|
|
||||||
nodeVersion: 14.16.0
|
|
||||||
# 构建命令:安装依赖 -> 清除上次打包产物残留 -> 执行构建 【请根据项目实际产出进行填写】
|
|
||||||
commands:
|
|
||||||
- npm install && rm -rf ./dist && npm run build
|
|
||||||
# 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
|
|
||||||
artifacts:
|
|
||||||
# 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
|
|
||||||
- name: BUILD_ARTIFACT
|
|
||||||
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
|
|
||||||
path:
|
|
||||||
- ./dist
|
|
||||||
- step: publish@general_artifacts
|
|
||||||
name: publish_general_artifacts
|
|
||||||
displayName: 上传制品
|
|
||||||
# 上游构建任务定义的产物名,默认BUILD_ARTIFACT
|
|
||||||
dependArtifact: BUILD_ARTIFACT
|
|
||||||
# 上传到制品库时的制品命名,默认output
|
|
||||||
artifactName: output
|
|
||||||
dependsOn: build_nodejs
|
|
||||||
- stage:
|
|
||||||
name: release
|
|
||||||
displayName: 发布
|
|
||||||
steps:
|
|
||||||
- step: publish@release_artifacts
|
|
||||||
name: publish_release_artifacts
|
|
||||||
displayName: '发布'
|
|
||||||
# 上游上传制品任务的产出
|
|
||||||
dependArtifact: output
|
|
||||||
# 发布制品版本号
|
|
||||||
version: '1.0.0.0'
|
|
||||||
# 是否开启版本号自增,默认开启
|
|
||||||
autoIncrement: true
|
|
||||||
triggers:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
version: '1.0'
|
|
||||||
name: pr-pipeline
|
|
||||||
displayName: PRPipeline
|
|
||||||
stages:
|
|
||||||
- stage:
|
|
||||||
name: compile
|
|
||||||
displayName: 编译
|
|
||||||
steps:
|
|
||||||
- step: build@nodejs
|
|
||||||
name: build_nodejs
|
|
||||||
displayName: Nodejs 构建
|
|
||||||
# 支持8.16.2、10.17.0、12.16.1、14.16.0、15.12.0五个版本
|
|
||||||
nodeVersion: 14.16.0
|
|
||||||
# 构建命令:安装依赖 -> 清除上次打包产物残留 -> 执行构建 【请根据项目实际产出进行填写】
|
|
||||||
commands:
|
|
||||||
- npm install && rm -rf ./dist && npm run build
|
|
||||||
# 非必填字段,开启后表示将构建产物暂存,但不会上传到制品库中,7天后自动清除
|
|
||||||
artifacts:
|
|
||||||
# 构建产物名字,作为产物的唯一标识可向下传递,支持自定义,默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址
|
|
||||||
- name: BUILD_ARTIFACT
|
|
||||||
# 构建产物获取路径,是指代码编译完毕之后构建物的所在路径
|
|
||||||
path:
|
|
||||||
- ./dist
|
|
||||||
- step: publish@general_artifacts
|
|
||||||
name: publish_general_artifacts
|
|
||||||
displayName: 上传制品
|
|
||||||
# 上游构建任务定义的产物名,默认BUILD_ARTIFACT
|
|
||||||
dependArtifact: BUILD_ARTIFACT
|
|
||||||
# 上传到制品库时的制品命名,默认output
|
|
||||||
artifactName: output
|
|
||||||
dependsOn: build_nodejs
|
|
||||||
triggers:
|
|
||||||
pr:
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- master
|
|
||||||
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2021-present GoView
|
Copyright (c) 2021-present Naive Ui Admin
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
5
Makefile
@@ -6,20 +6,15 @@ dev:
|
|||||||
dist:
|
dist:
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
view:
|
|
||||||
npm run preview
|
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
npm run lint
|
npm run lint
|
||||||
|
|
||||||
new:
|
new:
|
||||||
npm run new
|
npm run new
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo " make dev [npm run dev] 开发模式"
|
@echo " make dev [npm run dev] 开发模式"
|
||||||
@echo " make dist [npm run build] 编译模式"
|
@echo " make dist [npm run build] 编译模式"
|
||||||
@echo " make view [npm run preview] 预览打包文件"
|
|
||||||
@echo " make new [npm run lint] 通过自动化流程创建代码"
|
@echo " make new [npm run lint] 通过自动化流程创建代码"
|
||||||
@echo " make lint [npm run new] 格式校验"
|
@echo " make lint [npm run new] 格式校验"
|
||||||
214
README.md
@@ -1,166 +1,106 @@
|
|||||||
## 总览
|
## 总览
|
||||||
|

|
||||||
|
|
||||||
<p align="center">
|
**`master-fetch` 分支是带有后端接口请求的分支**
|
||||||
<img src="readme/logo-t-y.png" alt="go-view" />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h4 align="center">开源、精美、便捷的「数据可视化」低代码开发平台</h4>
|
**后端项目地址:[https://gitee.com/MTrun/go-view-serve](https://gitee.com/MTrun/go-view-serve)**
|
||||||
|
|
||||||
#### 😶 **纯前端** 分支: **`master`**
|
**接口说明地址:[https://docs.apipost.cn/preview/5aa85d10a59d66ce/ddb813732007ad2b?target_id=84dbc5b0-158f-4bcb-8f74-793ac604ada3#3e053622-1e76-43f9-a039-756aee822dbb](https://docs.apipost.cn/preview/5aa85d10a59d66ce/ddb813732007ad2b?target_id=84dbc5b0-158f-4bcb-8f74-793ac604ada3#3e053622-1e76-43f9-a039-756aee822dbb)**
|
||||||
|
|
||||||
#### 👻 携带 **后端** 请求分支: **`master-fetch`**
|
## 使用
|
||||||
|
|
||||||
#### 📚 GoView **文档** 地址:[https://www.mtruning.club/](https://www.mtruning.club/)
|
所有的接口地址位置:`src\api\path\*`
|
||||||
|
|
||||||
项目纯前端-Demo 地址:[https://vue.mtruning.club/](https://vue.mtruning.club/)
|
接口地址修改:`.env`
|
||||||
|
|
||||||
项目带后端-Demo 地址:[https://demo.mtruning.club/](https://demo.mtruning.club/)
|
|
||||||
|
|
||||||
文档-源码地址:[https://gitee.com/MTrun/go-view-doc](https://gitee.com/MTrun/go-view-doc)
|
|
||||||
|
|
||||||
#### 🤯 后端项目看这里!
|
|
||||||
|
|
||||||
后端项目 gitee 地址:[https://gitee.com/MTrun/go-view-serve](https://gitee.com/MTrun/go-view-serve)
|
|
||||||
|
|
||||||
接口说明地址:[https://docs.apipost.cn/preview/5aa85d10a59d66ce/ddb813732007ad2b?target_id=84dbc5b0-158f-4bcb-8f74-793ac604ada3#3e053622-1e76-43f9-a039-756aee822dbb](https://docs.apipost.cn/preview/5aa85d10a59d66ce/ddb813732007ad2b?target_id=84dbc5b0-158f-4bcb-8f74-793ac604ada3#3e053622-1e76-43f9-a039-756aee822dbb)
|
|
||||||
|
|
||||||
技术点:
|
|
||||||
|
|
||||||
- 框架:基于 `Vue3` 框架编写,使用 `hooks` 写法抽离部分逻辑,使代码结构更加清晰;
|
|
||||||
|
|
||||||
- 类型:使用 `TypeScript` 进行类型约束,减少未知错误发生概率,可以大胆修改逻辑内容;
|
|
||||||
|
|
||||||
- 性能:多处性能优化,使用页面懒加载、组件动态注册、数据滚动加载等方式,提升页面渲染速度;
|
|
||||||
|
|
||||||
- 存储:拥有本地记忆,部分配置项采用 `storage` 存储本地,提升使用体验;
|
|
||||||
|
|
||||||
- 封装:项目进行了详细的工具类封装如:路由、存储、加/解密、文件处理、主题、NaiveUI 全局方法、组件等
|
|
||||||
|
|
||||||
说明文档:
|
|
||||||

|
|
||||||
|
|
||||||
工作台:
|
|
||||||

|
|
||||||
|
|
||||||
请求配置:
|
|
||||||

|
|
||||||
|
|
||||||
数据过滤:
|
|
||||||

|
|
||||||
|
|
||||||
高级事件编辑:
|
|
||||||

|
|
||||||
|
|
||||||
快捷主页:
|
|
||||||

|
|
||||||
|
|
||||||
主题色:
|
|
||||||

|
|
||||||
|
|
||||||
亮白主题:
|
|
||||||

|
|
||||||
|
|
||||||
主要技术栈为:
|
|
||||||
|
|
||||||
| 名称 | 版本 | 名称 | 版本 |
|
|
||||||
| ------------------- | ----- | ----------- | ------ |
|
|
||||||
| Vue | 3.2.x | TypeScript4 | 4.6.x |
|
|
||||||
| Vite | 2.9.x | NaiveUI | 2.27.x |
|
|
||||||
| ECharts | 5.3.x | Pinia | 2.0.x |
|
|
||||||
| 详见 `package.json` | 😁 | 🥰 | 🤗 |
|
|
||||||
|
|
||||||
开发环境:
|
|
||||||
|
|
||||||
| 名称 | 版本 | 名称 | 版本 |
|
|
||||||
| ---- | ------- | ------- | ----- |
|
|
||||||
| node | 16.14.x | npm | 8.5.x |
|
|
||||||
| pnpm | 7.1.x | windows | 11 |
|
|
||||||
|
|
||||||
已完成图表:
|
|
||||||
|
|
||||||
| 分类 | 名称 | 名称 | 名称 | 名称 |
|
|
||||||
| ------ | ---------------- | ---------- | -------------- | ------------------------ |
|
|
||||||
| 图表 | 柱状图 | 横向柱状图 | 折线图 | 单/多 折线面积图(渐变色) |
|
|
||||||
| \* | 饼图 | 环形图 | 水球图 | 雷达图 |
|
|
||||||
| \* | NaiveUI 多种进度 | 散点图 | 对数回归散点图 | 热力图 |
|
|
||||||
| \* | 漏斗图 | 中国地图 | 高德地图 | 🦊 |
|
|
||||||
| 信息 | 文字 | 渐变文字 | 词云 | 嵌套网页 |
|
|
||||||
| \* | 图片 | 视频 | 😺 | 🐯 |
|
|
||||||
| 列表 | 滚动排名列表 | 滚动表格 | 🐮 | 🐐 |
|
|
||||||
| 小组件 | 边框-01~13 | 装饰-01~05 | 数字翻牌 | 通用时间 |
|
|
||||||
| \* | 数字计数 | 倒计时 | 时钟 | 🦁 |
|
|
||||||
|
|
||||||
## 浏览器支持
|
|
||||||
|
|
||||||
开发和测试平台均在 `Google` 和最新版 `EDGE` 上完成,暂未测试 `IE11` 等其它浏览器,如有需求请自行测试与兼容。
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
本项目采用` pnpm` 进行包管理
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
#建议使用 nrm 切换到淘宝源 https://registry.npmmirror.com/
|
# port
|
||||||
#pnpm
|
VITE_DEV_PORT = '8080'
|
||||||
pnpm install
|
|
||||||
|
|
||||||
#yarn
|
# development path
|
||||||
yarn install
|
VITE_DEV_PATH = 'http://127.0.0.1:8080'
|
||||||
|
|
||||||
#npm
|
# production path
|
||||||
npm install
|
VITE_PRO_PATH = 'http://127.0.0.1:8080'
|
||||||
```
|
```
|
||||||
|
|
||||||
## 启动
|
公共前缀修改:`src\settings\httpSetting.ts`
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
#pnpm
|
// 请求前缀
|
||||||
pnpm dev
|
export const axiosPre = '/goview'
|
||||||
|
|
||||||
# npm
|
|
||||||
npm run dev
|
|
||||||
|
|
||||||
#yarn
|
|
||||||
yarn dev
|
|
||||||
|
|
||||||
#Makefile
|
|
||||||
make dev
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 编译
|
接口封装:`src\api\http.ts`
|
||||||
|
|
||||||
```shell
|
```ts
|
||||||
#pnpm
|
import axiosInstance from './axios'
|
||||||
pnpm run build
|
import { RequestHttpEnum, ContentTypeEnum } from '@/enums/httpEnum'
|
||||||
|
|
||||||
# npm
|
export const get = (url: string, params?: object) => {
|
||||||
npm run build
|
return axiosInstance({
|
||||||
|
url: url,
|
||||||
|
method: RequestHttpEnum.GET,
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#yarn
|
export const post = (url: string, data?: object, headersType?: string) => {
|
||||||
yarn run build
|
return axiosInstance({
|
||||||
|
url: url,
|
||||||
|
method: RequestHttpEnum.POST,
|
||||||
|
data: data,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': headersType || ContentTypeEnum.JSON
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#Makefile
|
export const put = (url: string, data?: object, headersType?: string) => {
|
||||||
make dist
|
return axiosInstance({
|
||||||
|
url: url,
|
||||||
|
method: RequestHttpEnum.PUT,
|
||||||
|
data: data,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': headersType || ContentTypeEnum.JSON
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const del = (url: string, params?: object) => {
|
||||||
|
return axiosInstance({
|
||||||
|
url: url,
|
||||||
|
method: RequestHttpEnum.DELETE,
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取请求函数,默认get
|
||||||
|
export const http = (type?: RequestHttpEnum) => {
|
||||||
|
switch (type) {
|
||||||
|
case RequestHttpEnum.GET:
|
||||||
|
return get
|
||||||
|
|
||||||
|
case RequestHttpEnum.POST:
|
||||||
|
return post
|
||||||
|
|
||||||
|
case RequestHttpEnum.PUT:
|
||||||
|
return put
|
||||||
|
|
||||||
|
case RequestHttpEnum.DELETE:
|
||||||
|
return del
|
||||||
|
|
||||||
|
default:
|
||||||
|
return get
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 代码提交
|
|
||||||
|
|
||||||
- feat: 新功能
|
|
||||||
- fix: 修复 Bug
|
|
||||||
- docs: 文档修改
|
|
||||||
- perf: 性能优化
|
|
||||||
- revert: 版本回退
|
|
||||||
- ci: CICD 集成相关
|
|
||||||
- test: 添加测试代码
|
|
||||||
- refactor: 代码重构
|
|
||||||
- build: 影响项目构建或依赖修改
|
|
||||||
- style: 不影响程序逻辑的代码修改
|
|
||||||
- chore: 不属于以上类型的其他类型(日常事务)
|
|
||||||
|
|
||||||
## 交流
|
## 交流
|
||||||
|
|
||||||
|
|
||||||
QQ 群:1030129384
|
QQ 群:1030129384
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
|
// 打包路径
|
||||||
export const OUTPUT_DIR = 'dist'
|
export const OUTPUT_DIR = 'dist'
|
||||||
|
|
||||||
// monaco-editor 路径
|
|
||||||
export const prefix = `monaco-editor/esm/vs`
|
|
||||||
|
|
||||||
// chunk 警告大小
|
// chunk 警告大小
|
||||||
export const chunkSizeWarningLimit = 2000
|
export const chunkSizeWarningLimit = 2000
|
||||||
|
|
||||||
@@ -14,14 +12,7 @@ export const rollupOptions = {
|
|||||||
output: {
|
output: {
|
||||||
chunkFileNames: 'static/js/[name]-[hash].js',
|
chunkFileNames: 'static/js/[name]-[hash].js',
|
||||||
entryFileNames: 'static/js/[name]-[hash].js',
|
entryFileNames: 'static/js/[name]-[hash].js',
|
||||||
assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
|
assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
|
||||||
manualChunks: {
|
|
||||||
jsonWorker: [`${prefix}/language/json/json.worker`],
|
|
||||||
cssWorker: [`${prefix}/language/css/css.worker`],
|
|
||||||
htmlWorker: [`${prefix}/language/html/html.worker`],
|
|
||||||
tsWorker: [`${prefix}/language/typescript/ts.worker`],
|
|
||||||
editorWorker: [`${prefix}/editor/editor.worker`]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,4 +23,4 @@ export const terserOptions = {
|
|||||||
drop_console: true,
|
drop_console: true,
|
||||||
drop_debugger: true
|
drop_debugger: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
/**
|
|
||||||
* Get the configuration file variable name
|
|
||||||
* @param env
|
|
||||||
*/
|
|
||||||
export const getConfigFileName = (env: Record<string, any>) => {
|
|
||||||
return `__PRODUCTION__${env.VITE_GLOB_APP_SHORT_NAME || '__APP'}__CONF__`
|
|
||||||
.toUpperCase()
|
|
||||||
.replace(/\s/g, '');
|
|
||||||
};
|
|
||||||
21
index.css
@@ -82,4 +82,25 @@
|
|||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 小屏处理 0~1000*/
|
||||||
|
.mobile-terminal {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
#app {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.mobile-terminal {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 200;
|
||||||
|
background-image: linear-gradient(to top, #fff1eb 0%, #ace0f9 100%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -24,6 +24,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="mobile-terminal">
|
||||||
|
<p>请使用 Web 端进行查看</p>
|
||||||
|
</div>
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
33
package.json
@@ -1,51 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "go-view",
|
"name": "go-view",
|
||||||
"version": "1.1.4",
|
"version": "0.0.9",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite --host",
|
||||||
"build": "vue-tsc --noEmit && vite build",
|
"build": "vue-tsc --noEmit && vite build",
|
||||||
"preview": "vite preview",
|
"new": "plop --plopfile ./plop/plopfile.js"
|
||||||
"new": "plop --plopfile ./plop/plopfile.js",
|
|
||||||
"postinstall": "husky install",
|
|
||||||
"lint": "eslint --ext .js,.jsx,.ts,.tsx,.vue src",
|
|
||||||
"lint:fix": "eslint --ext .js,.jsx,.ts,.tsx,.vue src --fix"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
||||||
"@amap/amap-jsapi-types": "^0.0.8",
|
|
||||||
"@types/color": "^3.0.3",
|
"@types/color": "^3.0.3",
|
||||||
"@types/crypto-js": "^4.1.1",
|
"@types/crypto-js": "^4.1.1",
|
||||||
"@types/keymaster": "^1.6.30",
|
"@types/keymaster": "^1.6.30",
|
||||||
"@types/lodash": "^4.14.184",
|
|
||||||
"animate.css": "^4.1.1",
|
"animate.css": "^4.1.1",
|
||||||
"axios": "^0.27.2",
|
"axios": "0.23.0",
|
||||||
"color": "^4.2.3",
|
"color": "^4.2.3",
|
||||||
"crypto-js": "^4.1.1",
|
"crypto-js": "^4.1.1",
|
||||||
"echarts-liquidfill": "^3.1.0",
|
"echarts-liquidfill": "^3.1.0",
|
||||||
"echarts-stat": "^1.2.0",
|
|
||||||
"echarts-wordcloud": "^2.0.0",
|
|
||||||
"gsap": "^3.11.3",
|
|
||||||
"highlight.js": "^11.5.0",
|
"highlight.js": "^11.5.0",
|
||||||
"html2canvas": "^1.4.1",
|
"html2canvas": "^1.4.1",
|
||||||
"keymaster": "^1.6.2",
|
"keymaster": "^1.6.2",
|
||||||
"monaco-editor": "^0.33.0",
|
"naive-ui": "^2.29.0",
|
||||||
"naive-ui": "2.33.4",
|
|
||||||
"pinia": "^2.0.13",
|
"pinia": "^2.0.13",
|
||||||
"screenfull": "^6.0.1",
|
"screenfull": "^6.0.1",
|
||||||
"three": "^0.145.0",
|
|
||||||
"vue": "^3.2.31",
|
"vue": "^3.2.31",
|
||||||
"vue-demi": "^0.13.1",
|
"vue-i18n": "9.1.10",
|
||||||
"vue-i18n": "9.1.9",
|
|
||||||
"vue-router": "4.0.12",
|
"vue-router": "4.0.12",
|
||||||
"vue3-lazyload": "^0.2.5-beta",
|
"vue3-lazyload": "^0.2.5-beta",
|
||||||
"vue3-sketch-ruler": "^1.3.3",
|
"vue3-sketch-ruler": "^1.3.3",
|
||||||
"vuedraggable": "^4.1.0"
|
"vuedraggable": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^17.0.2",
|
|
||||||
"@commitlint/config-conventional": "^17.0.2",
|
|
||||||
"@types/node": "^16.11.26",
|
"@types/node": "^16.11.26",
|
||||||
"@types/three": "^0.144.0",
|
|
||||||
"@typescript-eslint/eslint-plugin": "^5.18.0",
|
"@typescript-eslint/eslint-plugin": "^5.18.0",
|
||||||
"@typescript-eslint/parser": "^5.18.0",
|
"@typescript-eslint/parser": "^5.18.0",
|
||||||
"@vicons/carbon": "^0.12.0",
|
"@vicons/carbon": "^0.12.0",
|
||||||
@@ -54,7 +38,6 @@
|
|||||||
"@vitejs/plugin-vue-jsx": "^1.3.9",
|
"@vitejs/plugin-vue-jsx": "^1.3.9",
|
||||||
"@vue/compiler-sfc": "^3.2.31",
|
"@vue/compiler-sfc": "^3.2.31",
|
||||||
"@vueuse/core": "^7.7.1",
|
"@vueuse/core": "^7.7.1",
|
||||||
"commitlint": "^17.0.2",
|
|
||||||
"default-passive-events": "^2.0.0",
|
"default-passive-events": "^2.0.0",
|
||||||
"echarts": "^5.3.2",
|
"echarts": "^5.3.2",
|
||||||
"eslint": "^8.12.0",
|
"eslint": "^8.12.0",
|
||||||
@@ -62,19 +45,17 @@
|
|||||||
"eslint-plugin-import": "^2.26.0",
|
"eslint-plugin-import": "^2.26.0",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"eslint-plugin-prettier": "^4.0.0",
|
||||||
"eslint-plugin-vue": "^8.5.0",
|
"eslint-plugin-vue": "^8.5.0",
|
||||||
"husky": "^8.0.1",
|
|
||||||
"lodash": "~4.17.21",
|
"lodash": "~4.17.21",
|
||||||
"mockjs": "^1.1.0",
|
"mockjs": "^1.1.0",
|
||||||
"plop": "^3.0.5",
|
"plop": "^3.0.5",
|
||||||
"prettier": "^2.6.2",
|
"prettier": "^2.6.2",
|
||||||
"sass": "^1.49.11",
|
"sass": "^1.49.11",
|
||||||
"sass-loader": "^12.6.0",
|
"sass-loader": "^12.6.0",
|
||||||
"typescript": "4.6.3",
|
"typescript": "^4.6.3",
|
||||||
"vite": "2.9.9",
|
"vite": "2.9.5",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"vite-plugin-importer": "^0.2.5",
|
"vite-plugin-importer": "^0.2.5",
|
||||||
"vite-plugin-mock": "^2.9.6",
|
"vite-plugin-mock": "^2.9.6",
|
||||||
"vite-plugin-monaco-editor": "^1.1.0",
|
|
||||||
"vue-echarts": "^6.0.2",
|
"vue-echarts": "^6.0.2",
|
||||||
"vue-tsc": "^0.28.10"
|
"vue-tsc": "^0.28.10"
|
||||||
}
|
}
|
||||||
|
|||||||
2575
pnpm-lock.yaml
generated
@@ -1,10 +1,10 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
printWidth: 120,
|
printWidth: 80,
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
useTabs: false,
|
useTabs: false,
|
||||||
singleQuote: true,
|
singleQuote: true,
|
||||||
semi: false,
|
semi: false,
|
||||||
trailingComma: "none",
|
trailingComma: "es5",
|
||||||
bracketSpacing: true,
|
bracketSpacing: true,
|
||||||
jsxSingleQuote: true,
|
jsxSingleQuote: true,
|
||||||
jsxBracketSameLine: false,
|
jsxBracketSameLine: false,
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 248 KiB |
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 404 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 398 KiB After Width: | Height: | Size: 398 KiB |
14
src/App.vue
@@ -1,9 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<n-config-provider
|
<n-config-provider
|
||||||
|
:locale="zhCN"
|
||||||
:theme="darkTheme"
|
:theme="darkTheme"
|
||||||
:hljs="hljsTheme"
|
:hljs="hljsTheme"
|
||||||
:locale="locale"
|
:date-locale="dateZhCN"
|
||||||
:date-locale="dateLocale"
|
|
||||||
:theme-overrides="overridesTheme"
|
:theme-overrides="overridesTheme"
|
||||||
>
|
>
|
||||||
<go-app-provider>
|
<go-app-provider>
|
||||||
@@ -14,10 +14,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { NConfigProvider } from 'naive-ui'
|
import { zhCN, dateZhCN, NConfigProvider } from 'naive-ui'
|
||||||
import { GoAppProvider } from '@/components/GoAppProvider'
|
import { GoAppProvider } from '@/components/GoAppProvider'
|
||||||
import { I18n } from '@/components/I18n'
|
import { I18n } from '@/components/I18n'
|
||||||
import { useDarkThemeHook, useThemeOverridesHook, useCode, useLang } from '@/hooks'
|
|
||||||
|
import { useSystemInit, useDarkThemeHook, useThemeOverridesHook, useCode } from '@/hooks'
|
||||||
|
|
||||||
// 暗黑主题
|
// 暗黑主题
|
||||||
const darkTheme = useDarkThemeHook()
|
const darkTheme = useDarkThemeHook()
|
||||||
@@ -28,7 +29,6 @@ const overridesTheme = useThemeOverridesHook()
|
|||||||
// 代码主题
|
// 代码主题
|
||||||
const hljsTheme = useCode()
|
const hljsTheme = useCode()
|
||||||
|
|
||||||
// 全局语言
|
// 系统全局数据初始化
|
||||||
const { locale, dateLocale } = useLang()
|
useSystemInit()
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
14
src/api/axios.config.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { ModuleTypeEnum } from '@/enums/httpEnum'
|
||||||
|
|
||||||
|
// 接口白名单(免登录)
|
||||||
|
export const fetchAllowList = [
|
||||||
|
// 登录
|
||||||
|
`${ModuleTypeEnum.SYSTEM}/login`,
|
||||||
|
// 获取 OSS 接口
|
||||||
|
`${ModuleTypeEnum.SYSTEM}/getOssInfo`,
|
||||||
|
// 预览获取数据
|
||||||
|
`${ModuleTypeEnum.PROJECT}/getData`,
|
||||||
|
]
|
||||||
|
|
||||||
|
// 接口黑名单
|
||||||
|
export const fetchBlockList = []
|
||||||
@@ -1,19 +1,36 @@
|
|||||||
import axios, { AxiosResponse, AxiosRequestConfig } from 'axios'
|
import axios, { AxiosResponse, AxiosRequestConfig } from 'axios'
|
||||||
import { ResultEnum } from "@/enums/httpEnum"
|
import { ResultEnum, RequestHttpHeaderEnum } from "@/enums/httpEnum"
|
||||||
import { ErrorPageNameMap } from "@/enums/pageEnum"
|
import { PageEnum, ErrorPageNameMap } from "@/enums/pageEnum"
|
||||||
import { redirectErrorPage } from '@/utils'
|
import { StorageEnum } from '@/enums/storageEnum'
|
||||||
|
import { axiosPre } from '@/settings/httpSetting'
|
||||||
|
import { SystemStoreEnum, SystemStoreUserInfoEnum } from '@/store/modules/systemStore/systemStore.d'
|
||||||
|
import { redirectErrorPage, getLocalStorage, routerTurnByName, httpErrorHandle } from '@/utils'
|
||||||
|
import { fetchAllowList } from './axios.config'
|
||||||
|
import includes from 'lodash/includes'
|
||||||
|
|
||||||
const axiosInstance = axios.create({
|
const axiosInstance = axios.create({
|
||||||
baseURL: import.meta.env.DEV ? import.meta.env.VITE_DEV_PATH : import.meta.env.VITE_PRO_PATH,
|
baseURL: `${import.meta.env.PROD ? import.meta.env.VITE_PRO_PATH : ''}${axiosPre}`,
|
||||||
timeout: ResultEnum.TIMEOUT,
|
timeout: ResultEnum.TIMEOUT,
|
||||||
})
|
})
|
||||||
|
|
||||||
axiosInstance.interceptors.request.use(
|
axiosInstance.interceptors.request.use(
|
||||||
(config: AxiosRequestConfig) => {
|
(config: AxiosRequestConfig) => {
|
||||||
|
// 白名单校验
|
||||||
|
if (includes(fetchAllowList, config.url)) return config
|
||||||
|
// 获取 token
|
||||||
|
const info = getLocalStorage(StorageEnum.GO_SYSTEM_STORE)
|
||||||
|
// 重新登录
|
||||||
|
if (!info) {
|
||||||
|
routerTurnByName(PageEnum.BASE_LOGIN_NAME)
|
||||||
|
return config
|
||||||
|
}
|
||||||
|
config.headers = {
|
||||||
|
[RequestHttpHeaderEnum.TOKEN]: info[SystemStoreEnum.USER_INFO][SystemStoreUserInfoEnum.USER_TOKEN] || ''
|
||||||
|
}
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
(error: AxiosRequestConfig) => {
|
(err: AxiosRequestConfig) => {
|
||||||
Promise.reject(error)
|
Promise.reject(err)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -21,12 +38,31 @@ axiosInstance.interceptors.request.use(
|
|||||||
axiosInstance.interceptors.response.use(
|
axiosInstance.interceptors.response.use(
|
||||||
(res: AxiosResponse) => {
|
(res: AxiosResponse) => {
|
||||||
const { code } = res.data as { code: number }
|
const { code } = res.data as { code: number }
|
||||||
if (code === ResultEnum.DATA_SUCCESS) return Promise.resolve(res.data)
|
|
||||||
// 重定向
|
// 成功
|
||||||
if (ErrorPageNameMap.get(code)) redirectErrorPage(code)
|
if (code === ResultEnum.SUCCESS) {
|
||||||
|
return Promise.resolve(res.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 登录过期
|
||||||
|
if (code === ResultEnum.TOKEN_OVERDUE) {
|
||||||
|
window['$message'].error(window['$t']('http.token_overdue_message'))
|
||||||
|
routerTurnByName(PageEnum.BASE_LOGIN_NAME)
|
||||||
|
return Promise.resolve(res.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 固定错误码重定向
|
||||||
|
if (ErrorPageNameMap.get(code)) {
|
||||||
|
redirectErrorPage(code)
|
||||||
|
return Promise.resolve(res.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提示错误
|
||||||
|
window['$message'].error(window['$t']((res.data as any).msg))
|
||||||
return Promise.resolve(res.data)
|
return Promise.resolve(res.data)
|
||||||
},
|
},
|
||||||
(err: AxiosResponse) => {
|
(err: AxiosResponse) => {
|
||||||
|
httpErrorHandle()
|
||||||
Promise.reject(err)
|
Promise.reject(err)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
170
src/api/http.ts
@@ -1,19 +1,11 @@
|
|||||||
import axiosInstance from './axios'
|
import axiosInstance from './axios'
|
||||||
import {
|
import { RequestHttpEnum, ContentTypeEnum } from '@/enums/httpEnum'
|
||||||
RequestHttpEnum,
|
|
||||||
ContentTypeEnum,
|
|
||||||
RequestBodyEnum,
|
|
||||||
RequestDataTypeEnum,
|
|
||||||
RequestContentTypeEnum,
|
|
||||||
RequestParamsObjType
|
|
||||||
} from '@/enums/httpEnum'
|
|
||||||
import type { RequestGlobalConfigType, RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d'
|
|
||||||
|
|
||||||
export const get = (url: string, params?: object) => {
|
export const get = (url: string, params?: object) => {
|
||||||
return axiosInstance({
|
return axiosInstance({
|
||||||
url: url,
|
url: url,
|
||||||
method: RequestHttpEnum.GET,
|
method: RequestHttpEnum.GET,
|
||||||
params: params
|
params: params,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,17 +20,6 @@ export const post = (url: string, data?: object, headersType?: string) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const patch = (url: string, data?: object, headersType?: string) => {
|
|
||||||
return axiosInstance({
|
|
||||||
url: url,
|
|
||||||
method: RequestHttpEnum.PATCH,
|
|
||||||
data: data,
|
|
||||||
headers: {
|
|
||||||
'Content-Type': headersType || ContentTypeEnum.JSON
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export const put = (url: string, data?: object, headersType?: ContentTypeEnum) => {
|
export const put = (url: string, data?: object, headersType?: ContentTypeEnum) => {
|
||||||
return axiosInstance({
|
return axiosInstance({
|
||||||
url: url,
|
url: url,
|
||||||
@@ -67,9 +48,6 @@ export const http = (type?: RequestHttpEnum) => {
|
|||||||
case RequestHttpEnum.POST:
|
case RequestHttpEnum.POST:
|
||||||
return post
|
return post
|
||||||
|
|
||||||
case RequestHttpEnum.PATCH:
|
|
||||||
return patch
|
|
||||||
|
|
||||||
case RequestHttpEnum.PUT:
|
case RequestHttpEnum.PUT:
|
||||||
return put
|
return put
|
||||||
|
|
||||||
@@ -80,147 +58,3 @@ export const http = (type?: RequestHttpEnum) => {
|
|||||||
return get
|
return get
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const prefix = 'javascript:'
|
|
||||||
// 对输入字符进行转义处理
|
|
||||||
export const translateStr = (target: string | object) => {
|
|
||||||
if (typeof target === 'string') {
|
|
||||||
if (target.startsWith(prefix)) {
|
|
||||||
const funcStr = target.split(prefix)[1]
|
|
||||||
let result;
|
|
||||||
try {
|
|
||||||
result = new Function(`${funcStr}`)()
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
window['$message'].error('js内容解析有误!')
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
} else {
|
|
||||||
return target
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (const key in target) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(target, key)) {
|
|
||||||
const subTarget = (target as any)[key];
|
|
||||||
(target as any)[key] = translateStr(subTarget)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return target
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* * 自定义请求
|
|
||||||
* @param targetParams 当前组件参数
|
|
||||||
* @param globalParams 全局参数
|
|
||||||
*/
|
|
||||||
export const customizeHttp = (targetParams: RequestConfigType, globalParams: RequestGlobalConfigType) => {
|
|
||||||
if (!targetParams || !globalParams) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 全局
|
|
||||||
const {
|
|
||||||
// 全局请求源地址
|
|
||||||
requestOriginUrl,
|
|
||||||
// 全局请求内容
|
|
||||||
requestParams: globalRequestParams
|
|
||||||
} = globalParams
|
|
||||||
|
|
||||||
// 目标组件(优先级 > 全局组件)
|
|
||||||
const {
|
|
||||||
// 请求地址
|
|
||||||
requestUrl,
|
|
||||||
// 普通 / sql
|
|
||||||
requestContentType,
|
|
||||||
// 获取数据的方式
|
|
||||||
requestDataType,
|
|
||||||
// 请求方式 get/post/del/put/patch
|
|
||||||
requestHttpType,
|
|
||||||
// 请求体类型 none / form-data / x-www-form-urlencoded / json /xml
|
|
||||||
requestParamsBodyType,
|
|
||||||
// SQL 请求对象
|
|
||||||
requestSQLContent,
|
|
||||||
// 请求内容 params / cookie / header / body: 同 requestParamsBodyType
|
|
||||||
requestParams: targetRequestParams
|
|
||||||
} = targetParams
|
|
||||||
|
|
||||||
// 静态排除
|
|
||||||
if (requestDataType === RequestDataTypeEnum.STATIC) return
|
|
||||||
|
|
||||||
if (!requestUrl) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 处理头部
|
|
||||||
let headers: RequestParamsObjType = {
|
|
||||||
...globalRequestParams.Header,
|
|
||||||
...targetRequestParams.Header
|
|
||||||
}
|
|
||||||
headers = translateStr(headers)
|
|
||||||
|
|
||||||
// data 参数
|
|
||||||
let data: RequestParamsObjType | FormData | string = {}
|
|
||||||
// params 参数
|
|
||||||
let params: RequestParamsObjType = { ...targetRequestParams.Params }
|
|
||||||
params = translateStr(params)
|
|
||||||
// form 类型处理
|
|
||||||
let formData: FormData = new FormData()
|
|
||||||
formData.set('default', 'defaultData')
|
|
||||||
// 类型处理
|
|
||||||
|
|
||||||
switch (requestParamsBodyType) {
|
|
||||||
case RequestBodyEnum.NONE:
|
|
||||||
break
|
|
||||||
|
|
||||||
case RequestBodyEnum.JSON:
|
|
||||||
headers['Content-Type'] = ContentTypeEnum.JSON
|
|
||||||
data = translateStr(JSON.parse(targetRequestParams.Body['json']))
|
|
||||||
// json 赋值给 data
|
|
||||||
break
|
|
||||||
|
|
||||||
case RequestBodyEnum.XML:
|
|
||||||
headers['Content-Type'] = ContentTypeEnum.XML
|
|
||||||
// xml 字符串赋值给 data
|
|
||||||
data = translateStr(targetRequestParams.Body['xml'])
|
|
||||||
break
|
|
||||||
|
|
||||||
case RequestBodyEnum.X_WWW_FORM_URLENCODED: {
|
|
||||||
headers['Content-Type'] = ContentTypeEnum.FORM_URLENCODED
|
|
||||||
const bodyFormData = targetRequestParams.Body['x-www-form-urlencoded']
|
|
||||||
for (const i in bodyFormData) formData.set(i, translateStr(bodyFormData[i]))
|
|
||||||
// FormData 赋值给 data
|
|
||||||
data = formData
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
case RequestBodyEnum.FORM_DATA: {
|
|
||||||
headers['Content-Type'] = ContentTypeEnum.FORM_DATA
|
|
||||||
const bodyFormUrlencoded = targetRequestParams.Body['form-data']
|
|
||||||
for (const i in bodyFormUrlencoded) {
|
|
||||||
formData.set(i, translateStr(bodyFormUrlencoded[i]))
|
|
||||||
}
|
|
||||||
// FormData 赋值给 data
|
|
||||||
data = formData
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// sql 处理
|
|
||||||
if (requestContentType === RequestContentTypeEnum.SQL) {
|
|
||||||
headers['Content-Type'] = ContentTypeEnum.JSON
|
|
||||||
data = requestSQLContent
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const url = (new Function("return `" + `${requestOriginUrl}${requestUrl}`.trim() + "`"))();
|
|
||||||
return axiosInstance({
|
|
||||||
url,
|
|
||||||
method: requestHttpType,
|
|
||||||
data,
|
|
||||||
params,
|
|
||||||
headers
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
window['$message'].error('URL地址格式有误!')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,199 +0,0 @@
|
|||||||
{
|
|
||||||
"xAxis": [
|
|
||||||
"12a",
|
|
||||||
"1a",
|
|
||||||
"2a",
|
|
||||||
"3a",
|
|
||||||
"4a",
|
|
||||||
"5a",
|
|
||||||
"6a",
|
|
||||||
"7a",
|
|
||||||
"8a",
|
|
||||||
"9a",
|
|
||||||
"10a",
|
|
||||||
"11a",
|
|
||||||
"12p",
|
|
||||||
"1p",
|
|
||||||
"2p",
|
|
||||||
"3p",
|
|
||||||
"4p",
|
|
||||||
"5p",
|
|
||||||
"6p",
|
|
||||||
"7p",
|
|
||||||
"8p",
|
|
||||||
"9p",
|
|
||||||
"10p",
|
|
||||||
"11p"
|
|
||||||
],
|
|
||||||
"yAxis": ["Saturday", "Friday", "Thursday", "Wednesday", "Tuesday", "Monday", "Sunday"],
|
|
||||||
"seriesData": [
|
|
||||||
[0, 0, "@integer(0, 10)"],
|
|
||||||
[1, 0, "@integer(0, 10)"],
|
|
||||||
[2, 0, "-"],
|
|
||||||
[3, 0, "-"],
|
|
||||||
[4, 0, "-"],
|
|
||||||
[5, 0, "-"],
|
|
||||||
[6, 0, "-"],
|
|
||||||
[7, 0, "-"],
|
|
||||||
[8, 0, "-"],
|
|
||||||
[9, 0, "-"],
|
|
||||||
[10, 0, "-"],
|
|
||||||
[11, 0, "@integer(0, 10)"],
|
|
||||||
[12, 0, "@integer(0, 10)"],
|
|
||||||
[13, 0, "@integer(0, 10)"],
|
|
||||||
[14, 0, "@integer(0, 10)"],
|
|
||||||
[15, 0, "@integer(0, 10)"],
|
|
||||||
[16, 0, "@integer(0, 10)"],
|
|
||||||
[17, 0, "@integer(0, 10)"],
|
|
||||||
[18, 0, "@integer(0, 10)"],
|
|
||||||
[19, 0, "@integer(0, 10)"],
|
|
||||||
[20, 0, "@integer(0, 10)"],
|
|
||||||
[21, 0, "@integer(0, 10)"],
|
|
||||||
[22, 0, "@integer(0, 10)"],
|
|
||||||
[23, 0, "@integer(0, 10)"],
|
|
||||||
[0, 1, 7],
|
|
||||||
[1, 1, "-"],
|
|
||||||
[2, 1, "-"],
|
|
||||||
[3, 1, "-"],
|
|
||||||
[4, 1, "-"],
|
|
||||||
[5, 1, "-"],
|
|
||||||
[6, 1, "-"],
|
|
||||||
[7, 1, "-"],
|
|
||||||
[8, 1, "-"],
|
|
||||||
[9, 1, "-"],
|
|
||||||
[10, 1, "@integer(0, 10)"],
|
|
||||||
[11, 1, "@integer(0, 10)"],
|
|
||||||
[12, 1, "@integer(0, 10)"],
|
|
||||||
[13, 1, "@integer(0, 10)"],
|
|
||||||
[14, 1, "@integer(0, 10)"],
|
|
||||||
[15, 1, "@integer(0, 10)"],
|
|
||||||
[16, 1, "@integer(0, 10)"],
|
|
||||||
[17, 1, "@integer(0, 10)"],
|
|
||||||
[18, 1, "@integer(0, 10)"],
|
|
||||||
[19, 1, "@integer(0, 10)"],
|
|
||||||
[20, 1, "@integer(0, 10)"],
|
|
||||||
[21, 1, "@integer(0, 10)"],
|
|
||||||
[22, 1, "@integer(0, 10)"],
|
|
||||||
[23, 1, "@integer(0, 10)"],
|
|
||||||
[0, 2, 1],
|
|
||||||
[1, 2, 1],
|
|
||||||
[2, 2, "-"],
|
|
||||||
[3, 2, "-"],
|
|
||||||
[4, 2, "-"],
|
|
||||||
[5, 2, "-"],
|
|
||||||
[6, 2, "-"],
|
|
||||||
[7, 2, "-"],
|
|
||||||
[8, 2, "-"],
|
|
||||||
[9, 2, "-"],
|
|
||||||
[10, 2, "@integer(0, 10)"],
|
|
||||||
[11, 2, "@integer(0, 10)"],
|
|
||||||
[12, 2, "@integer(0, 10)"],
|
|
||||||
[13, 2, "@integer(0, 10)"],
|
|
||||||
[14, 2, "@integer(0, 10)"],
|
|
||||||
[15, 2, "@integer(0, 10)"],
|
|
||||||
[16, 2, "@integer(0, 10)"],
|
|
||||||
[17, 2, "@integer(0, 10)"],
|
|
||||||
[18, 2, "@integer(0, 10)"],
|
|
||||||
[19, 2, "@integer(0, 10)"],
|
|
||||||
[20, 2, "@integer(0, 10)"],
|
|
||||||
[21, 2, "@integer(0, 10)"],
|
|
||||||
[22, 2, "@integer(0, 10)"],
|
|
||||||
[23, 2, "@integer(0, 10)"],
|
|
||||||
[0, 3, 7],
|
|
||||||
[1, 3, 3],
|
|
||||||
[2, 3, "-"],
|
|
||||||
[3, 3, "-"],
|
|
||||||
[4, 3, "-"],
|
|
||||||
[5, 3, "-"],
|
|
||||||
[6, 3, "-"],
|
|
||||||
[7, 3, "-"],
|
|
||||||
[8, 3, 1],
|
|
||||||
[9, 3, "-"],
|
|
||||||
[10, 3, "@integer(0, 10)"],
|
|
||||||
[11, 3, "@integer(0, 10)"],
|
|
||||||
[12, 3, "@integer(0, 10)"],
|
|
||||||
[13, 3, "@integer(0, 10)"],
|
|
||||||
[14, 3, "@integer(0, 10)"],
|
|
||||||
[15, 3, "@integer(0, 10)"],
|
|
||||||
[16, 3, "@integer(0, 10)"],
|
|
||||||
[17, 3, "@integer(0, 10)"],
|
|
||||||
[18, 3, "@integer(0, 10)"],
|
|
||||||
[19, 3, "@integer(0, 10)"],
|
|
||||||
[20, 3, "@integer(0, 10)"],
|
|
||||||
[21, 3, "@integer(0, 10)"],
|
|
||||||
[22, 3, "@integer(0, 10)"],
|
|
||||||
[23, 3, "@integer(0, 10)"],
|
|
||||||
[0, 4, "@integer(0, 10)"],
|
|
||||||
[1, 4, "@integer(0, 10)"],
|
|
||||||
[2, 4, "-"],
|
|
||||||
[3, 4, "-"],
|
|
||||||
[4, 4, "-"],
|
|
||||||
[5, 4, "@integer(0, 10)"],
|
|
||||||
[6, 4, "-"],
|
|
||||||
[7, 4, "-"],
|
|
||||||
[8, 4, "-"],
|
|
||||||
[9, 4, "@integer(0, 10)"],
|
|
||||||
[10, 4, "@integer(0, 10)"],
|
|
||||||
[11, 4, "@integer(0, 10)"],
|
|
||||||
[12, 4, "@integer(0, 10)"],
|
|
||||||
[13, 4, "@integer(0, 10)"],
|
|
||||||
[14, 4, "@integer(0, 10)"],
|
|
||||||
[15, 4, "@integer(0, 10)"],
|
|
||||||
[16, 4, "@integer(0, 10)"],
|
|
||||||
[17, 4, "@integer(0, 10)"],
|
|
||||||
[18, 4, "@integer(0, 10)"],
|
|
||||||
[19, 4, "@integer(0, 10)"],
|
|
||||||
[20, 4, "@integer(0, 10)"],
|
|
||||||
[21, 4, "@integer(0, 10)"],
|
|
||||||
[22, 4, "@integer(0, 10)"],
|
|
||||||
[23, 4, "-"],
|
|
||||||
[0, 5, "@integer(0, 10)"],
|
|
||||||
[1, 5, "@integer(0, 10)"],
|
|
||||||
[2, 5, "-"],
|
|
||||||
[3, 5, "@integer(0, 10)"],
|
|
||||||
[4, 5, "-"],
|
|
||||||
[5, 5, "-"],
|
|
||||||
[6, 5, "-"],
|
|
||||||
[7, 5, "-"],
|
|
||||||
[8, 5, "@integer(0, 10)"],
|
|
||||||
[9, 5, "-"],
|
|
||||||
[10, 5, "@integer(0, 10)"],
|
|
||||||
[11, 5, "@integer(0, 10)"],
|
|
||||||
[12, 5, "@integer(0, 10)"],
|
|
||||||
[13, 5, "@integer(0, 10)"],
|
|
||||||
[14, 5, "@integer(0, 10)"],
|
|
||||||
[15, 5, "@integer(0, 10)"],
|
|
||||||
[16, 5, "@integer(0, 10)"],
|
|
||||||
[17, 5, "@integer(0, 10)"],
|
|
||||||
[18, 5, "-"],
|
|
||||||
[19, 5, "@integer(0, 10)"],
|
|
||||||
[20, 5, "@integer(0, 10)"],
|
|
||||||
[21, 5, "@integer(0, 10)"],
|
|
||||||
[22, 5, "@integer(0, 10)"],
|
|
||||||
[23, 5, "-"],
|
|
||||||
[0, 6, "@integer(0, 10)"],
|
|
||||||
[1, 6, "-"],
|
|
||||||
[2, 6, "-"],
|
|
||||||
[3, 6, "-"],
|
|
||||||
[4, 6, "-"],
|
|
||||||
[5, 6, "-"],
|
|
||||||
[6, 6, "-"],
|
|
||||||
[7, 6, "-"],
|
|
||||||
[8, 6, "-"],
|
|
||||||
[9, 6, "-"],
|
|
||||||
[10, 6, "@integer(0, 10)"],
|
|
||||||
[11, 6, "-"],
|
|
||||||
[12, 6, "@integer(0, 10)"],
|
|
||||||
[13, 6, "@integer(0, 10)"],
|
|
||||||
[14, 6, "@integer(0, 10)"],
|
|
||||||
[15, 6, "@integer(0, 10)"],
|
|
||||||
[16, 6, "-"],
|
|
||||||
[17, 6, "-"],
|
|
||||||
[18, 6, "-"],
|
|
||||||
[19, 6, "-"],
|
|
||||||
[20, 6, "@integer(0, 10)"],
|
|
||||||
[21, 6, "@integer(0, 10)"],
|
|
||||||
[22, 6, "@integer(0, 10)"],
|
|
||||||
[23, 6, "@integer(0, 10)"]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -4,104 +4,26 @@ import { RequestHttpEnum } from '@/enums/httpEnum'
|
|||||||
|
|
||||||
// 单个X数据
|
// 单个X数据
|
||||||
export const chartDataUrl = '/mock/chartData'
|
export const chartDataUrl = '/mock/chartData'
|
||||||
export const chartSingleDataUrl = '/mock/chartSingleData'
|
export const rankListUrl = '/mock/RankList'
|
||||||
export const numberFloatUrl = '/mock/number/float'
|
export const numberUrl = '/mock/number'
|
||||||
export const numberIntUrl = '/mock/number/int'
|
|
||||||
export const textUrl = '/mock/text'
|
|
||||||
export const imageUrl = '/mock/image'
|
|
||||||
export const rankListUrl = '/mock/rankList'
|
|
||||||
export const scrollBoardUrl = '/mock/scrollBoard'
|
|
||||||
export const radarUrl = '/mock/radarData'
|
|
||||||
export const heatMapUrl = '/mock/heatMapData'
|
|
||||||
export const scatterBasicUrl = '/mock/scatterBasic'
|
|
||||||
export const mapUrl = '/mock/map'
|
|
||||||
export const capsuleUrl = '/mock/capsule'
|
|
||||||
export const wordCloudUrl = '/mock/wordCloud'
|
|
||||||
export const treemapUrl = '/mock/treemap'
|
|
||||||
export const threeEarth01Url = '/mock/threeEarth01Data'
|
|
||||||
|
|
||||||
const mockObject: MockMethod[] = [
|
const mockObject: MockMethod[] = [
|
||||||
{
|
{
|
||||||
// 正则
|
// 正则
|
||||||
// url: /\/mock\/mockData(|\?\S*)$/,
|
// url: /\/mock\/mockData(|\?\S*)$/,
|
||||||
url: chartDataUrl,
|
url: '/mock/chartData',
|
||||||
method: RequestHttpEnum.GET,
|
method: RequestHttpEnum.GET,
|
||||||
response: () => test.fetchMockData
|
response: () => test.fetchMockData,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: chartSingleDataUrl,
|
url: '/mock/rankList',
|
||||||
method: RequestHttpEnum.GET,
|
method: RequestHttpEnum.GET,
|
||||||
response: () => test.fetchMockSingleData
|
response: () => test.fetchRankList,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: numberFloatUrl,
|
url: '/mock/number',
|
||||||
method: RequestHttpEnum.GET,
|
method: RequestHttpEnum.GET,
|
||||||
response: () => test.fetchNumberFloat
|
response: () => test.fetchNumber,
|
||||||
},
|
|
||||||
{
|
|
||||||
url: numberIntUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchNumberInt
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: textUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchText
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: imageUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchImage(Math.round(Math.random() * 10))
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: rankListUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchRankList
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: scrollBoardUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchScrollBoard
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: radarUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchRadar
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: heatMapUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchHeatmap
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: scatterBasicUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchScatterBasic
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: mapUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchMap
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: capsuleUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchCapsule
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: wordCloudUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchWordCloud
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: treemapUrl,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.fetchTreemap
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: threeEarth01Url,
|
|
||||||
method: RequestHttpEnum.GET,
|
|
||||||
response: () => test.threeEarth01Data
|
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"markers|50": [
|
|
||||||
{
|
|
||||||
"name": "某某地市",
|
|
||||||
"value": "@integer(2, 20)",
|
|
||||||
"position": ["@float(115, 117, 1, 6)", "@float(38, 40, 1, 6)"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"dimensions": ["data1"],
|
|
||||||
"source": [
|
|
||||||
[10.0, "@integer(0, 100)"],
|
|
||||||
[8.07, "@integer(0, 100)"],
|
|
||||||
[13.0, "@integer(0, 100)"],
|
|
||||||
[9.05, "@integer(0, 100)"],
|
|
||||||
[11.0, "@integer(0, 100)"],
|
|
||||||
[14.0, "@integer(0, 100)"],
|
|
||||||
[13.4, "@integer(0, 100)"],
|
|
||||||
[10.0, "@integer(0, 100)"],
|
|
||||||
[14.0, "@integer(0, 100)"],
|
|
||||||
[12.5, "@integer(0, 100)"],
|
|
||||||
[9.15, "@integer(0, 100)"],
|
|
||||||
[11.5, "@integer(0, 100)"],
|
|
||||||
[3.03, "@integer(0, 100)"],
|
|
||||||
[12.2, "@integer(0, 100)"],
|
|
||||||
[2.02, "@integer(0, 100)"],
|
|
||||||
[1.05, "@integer(0, 100)"],
|
|
||||||
[4.05, "@integer(0, 100)"],
|
|
||||||
[6.03, "@integer(0, 100)"],
|
|
||||||
[12.0, "@integer(0, 100)"],
|
|
||||||
[12.0, "@integer(0, 100)"],
|
|
||||||
[7.08, "@integer(0, 100)"],
|
|
||||||
[5.02, "@integer(0, 100)"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dimensions": ["data2"],
|
|
||||||
"source": [
|
|
||||||
[10.0, "@integer(0, 70)"],
|
|
||||||
[8.07, "@integer(0, 70)"],
|
|
||||||
[13.0, "@integer(0, 70)"],
|
|
||||||
[9.05, "@integer(0, 70)"],
|
|
||||||
[11.0, "@integer(0, 70)"],
|
|
||||||
[14.0, "@integer(0, 70)"],
|
|
||||||
[13.4, "@integer(0, 70)"],
|
|
||||||
[10.0, "@integer(0, 70)"],
|
|
||||||
[14.0, "@integer(0, 70)"],
|
|
||||||
[12.5, "@integer(0, 70)"],
|
|
||||||
[9.15, "@integer(0, 70)"],
|
|
||||||
[11.5, "@integer(0, 70)"],
|
|
||||||
[3.03, "@integer(0, 70)"],
|
|
||||||
[12.2, "@integer(0, 70)"],
|
|
||||||
[2.02, "@integer(0, 70)"],
|
|
||||||
[1.05, "@integer(0, 70)"],
|
|
||||||
[4.05, "@integer(0, 70)"],
|
|
||||||
[6.03, "@integer(0, 70)"],
|
|
||||||
[12.0, "@integer(0, 70)"],
|
|
||||||
[12.0, "@integer(0, 70)"],
|
|
||||||
[7.08, "@integer(0, 70)"],
|
|
||||||
[5.02, "@integer(0, 70)"]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,40 +1,4 @@
|
|||||||
import heatmapJson from './heatMapData.json'
|
|
||||||
import scatterJson from './scatter.json'
|
|
||||||
import mapJson from './map.json'
|
|
||||||
import tTreemapJson from './treemap.json'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
// 单图表
|
|
||||||
fetchMockSingleData: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: {
|
|
||||||
dimensions: ['product', 'dataOne'],
|
|
||||||
'source|50': [
|
|
||||||
{
|
|
||||||
product: '@name',
|
|
||||||
'dataOne|0-900': 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 胶囊图
|
|
||||||
fetchCapsule: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: {
|
|
||||||
dimensions: ['name', 'value'],
|
|
||||||
source: [
|
|
||||||
{ name: '厦门', 'value|0-40': 20 },
|
|
||||||
{ name: '南阳', 'value|20-60': 40 },
|
|
||||||
{ name: '北京', 'value|40-80': 60 },
|
|
||||||
{ name: '上海', 'value|60-100': 80 },
|
|
||||||
{ name: '新疆', value: 100 }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 图表
|
// 图表
|
||||||
fetchMockData: {
|
fetchMockData: {
|
||||||
code: 0,
|
code: 0,
|
||||||
@@ -42,185 +6,66 @@ export default {
|
|||||||
msg: '请求成功',
|
msg: '请求成功',
|
||||||
data: {
|
data: {
|
||||||
dimensions: ['product', 'dataOne', 'dataTwo'],
|
dimensions: ['product', 'dataOne', 'dataTwo'],
|
||||||
'source|50': [
|
source: [
|
||||||
{
|
{
|
||||||
product: '@name',
|
product: '@name',
|
||||||
'dataOne|100-900': 3,
|
'dataOne|100-900': 3,
|
||||||
'dataTwo|100-900': 3
|
'dataTwo|100-900': 3,
|
||||||
}
|
},
|
||||||
]
|
{
|
||||||
}
|
product: '@name',
|
||||||
|
'dataOne|100-900': 3,
|
||||||
|
'dataTwo|100-900': 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
product: '@name',
|
||||||
|
'dataOne|100-900': 3,
|
||||||
|
'dataTwo|100-900': 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
product: '@name',
|
||||||
|
'dataOne|100-900': 3,
|
||||||
|
'dataTwo|100-900': 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
product: '@name',
|
||||||
|
'dataOne|100-900': 3,
|
||||||
|
'dataTwo|100-900': 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
product: '@name',
|
||||||
|
'dataOne|100-900': 3,
|
||||||
|
'dataTwo|100-900': 3,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// 排名列表
|
// 排名列表
|
||||||
fetchRankList: {
|
fetchRankList: {
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
'data|50': [{ name: '@name', 'value|100-900': 5 }]
|
|
||||||
},
|
|
||||||
// 轮播表格
|
|
||||||
fetchScrollBoard: {
|
|
||||||
code: 0,
|
code: 0,
|
||||||
status: 200,
|
status: 200,
|
||||||
msg: '请求成功',
|
msg: '请求成功',
|
||||||
data: [
|
data: [
|
||||||
['行1列1', '行1列2', '1'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行2列1', '行2列2', '2'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行3列1', '行3列2', '3'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行4列1', '行4列2', '4'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行5列1', '行5列2', '5'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行6列1', '行6列2', '6'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行7列1', '行7列2', '行7列3'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行8列1', '行8列2', '行8列3'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行9列1', '行9列2', '行9列3'],
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
['行10列1', '行10列2', '行10列3']
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
]
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
|
{ name: '@name', 'value|100-900': 5 },
|
||||||
|
],
|
||||||
},
|
},
|
||||||
// 获取数字-浮点型
|
// 获取数字
|
||||||
fetchNumberFloat: {
|
fetchNumber: {
|
||||||
code: 0,
|
code: 0,
|
||||||
status: 200,
|
status: 200,
|
||||||
msg: '请求成功',
|
msg: '请求成功',
|
||||||
data: '@float(0, 0.99, 1, 4)'
|
data: '@float(0, 0.99)',
|
||||||
},
|
},
|
||||||
// 获取数字-整型
|
|
||||||
fetchNumberInt: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: '@integer(0, 100)'
|
|
||||||
},
|
|
||||||
// 文字
|
|
||||||
fetchText: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: '@paragraph(1, 10)'
|
|
||||||
},
|
|
||||||
// 图片
|
|
||||||
fetchImage: (num: number) => ({
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: `https://robohash.org/${num}`
|
|
||||||
}),
|
|
||||||
// 雷达
|
|
||||||
fetchRadar: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: {
|
|
||||||
radarIndicator: [
|
|
||||||
{ name: '@name', max: 10000 },
|
|
||||||
{ name: '@name', max: 10000 },
|
|
||||||
{ name: '@name', max: 10000 },
|
|
||||||
{ name: '@name', max: 10000 },
|
|
||||||
{ name: '@name', max: 10000 },
|
|
||||||
{ name: '@name', max: 10000 }
|
|
||||||
],
|
|
||||||
seriesData: [
|
|
||||||
{
|
|
||||||
value: [
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)'
|
|
||||||
],
|
|
||||||
name: 'data1'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: [
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)',
|
|
||||||
'@integer(0, 10000)'
|
|
||||||
],
|
|
||||||
name: 'data2'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 热力图
|
|
||||||
fetchHeatmap: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: heatmapJson
|
|
||||||
},
|
|
||||||
// 散点图
|
|
||||||
fetchScatterBasic: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: scatterJson
|
|
||||||
},
|
|
||||||
// 中国地图
|
|
||||||
fetchMap: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: mapJson
|
|
||||||
},
|
|
||||||
// 词云
|
|
||||||
fetchWordCloud: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
name: '@name',
|
|
||||||
value: 8000,
|
|
||||||
textStyle: {
|
|
||||||
color: '#78fbb2'
|
|
||||||
},
|
|
||||||
emphasis: {
|
|
||||||
textStyle: {
|
|
||||||
color: 'red'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' },
|
|
||||||
{ name: '@name', value: '@integer(10, 8000)' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
// 树图
|
|
||||||
fetchTreemap: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: tTreemapJson
|
|
||||||
},
|
|
||||||
// 三维地球
|
|
||||||
threeEarth01Data: {
|
|
||||||
code: 0,
|
|
||||||
status: 200,
|
|
||||||
msg: '请求成功',
|
|
||||||
data: [
|
|
||||||
{
|
|
||||||
startArray: { name: '@name', N: '@integer(10, 100)', E: '@integer(10, 100)' },
|
|
||||||
'endArray|10': [{ name: '@name', N: '@integer(10, 100)', E: '@integer(10, 100)' }]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 1000)",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 500)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 500)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 1000)",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 00)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 500)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 1000)",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 1000)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 1000)",
|
|
||||||
"children": [
|
|
||||||
{
|
|
||||||
"name": "@name",
|
|
||||||
"value": "@integer(0, 1000)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
2
src/api/path/index.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
export * from '@/api/path/project.api'
|
||||||
|
export * from '@/api/path/system.api'
|
||||||
84
src/api/path/project.api.ts
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
import { http } from '@/api/http'
|
||||||
|
import { httpErrorHandle } from '@/utils'
|
||||||
|
import { ContentTypeEnum, RequestHttpEnum, ModuleTypeEnum } from '@/enums/httpEnum'
|
||||||
|
|
||||||
|
// * 项目列表
|
||||||
|
export const projectListApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.GET)(`${ModuleTypeEnum.PROJECT}/list`, data);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 新增项目
|
||||||
|
export const createProjectApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/create`, data);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 获取项目
|
||||||
|
export const fetchProjectApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.GET)(`${ModuleTypeEnum.PROJECT}/getData`, data);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 保存项目
|
||||||
|
export const saveProjectApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/save/data`, data, ContentTypeEnum.FORM_URLENCODED);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 修改项目基础信息
|
||||||
|
export const updateProjectApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/edit`, data);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * 删除项目
|
||||||
|
export const deleteProjectApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.DELETE)(`${ModuleTypeEnum.PROJECT}/delete`, data);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 修改发布状态 [-1未发布,1发布]
|
||||||
|
export const changeProjectReleaseApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.PUT)(`${ModuleTypeEnum.PROJECT}/publish`, data);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 上传文件
|
||||||
|
export const uploadFile = async (url:string, data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.POST)(url, data, ContentTypeEnum.FORM_DATA);
|
||||||
|
return res;
|
||||||
|
} catch {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
42
src/api/path/system.api.ts
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import { http } from '@/api/http'
|
||||||
|
import { httpErrorHandle } from '@/utils'
|
||||||
|
import { RequestHttpEnum, ModuleTypeEnum } from '@/enums/httpEnum'
|
||||||
|
|
||||||
|
// * 登录
|
||||||
|
export const loginApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.SYSTEM}/login`, data);
|
||||||
|
return res;
|
||||||
|
} catch(err) {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 新接口
|
||||||
|
export const newApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const resonse = await http(RequestHttpEnum.POST)(`新接口的路劲/xxx/xxx`, data)
|
||||||
|
} catch (error) {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 登出
|
||||||
|
export const logoutApi = async () => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.GET)(`${ModuleTypeEnum.SYSTEM}/logout`);
|
||||||
|
return res;
|
||||||
|
} catch(err) {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 获取 oss 上传接口
|
||||||
|
export const ossUrlApi = async (data: object) => {
|
||||||
|
try {
|
||||||
|
const res = await http(RequestHttpEnum.GET)(`${ModuleTypeEnum.SYSTEM}/getOssInfo`, data);
|
||||||
|
return res;
|
||||||
|
} catch(err) {
|
||||||
|
httpErrorHandle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
src/assets/images/chart/charts/bar_y2.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 20 KiB |
BIN
src/assets/images/chart/charts/line_gradient2.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 103 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 66 KiB |
BIN
src/assets/images/chart/charts/map_logo.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 14 KiB |
BIN
src/assets/images/chart/charts/point.png
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 20 KiB |
BIN
src/assets/images/chart/charts/static.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 27 KiB |
BIN
src/assets/images/chart/decorates/material_dynamic.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
src/assets/images/chart/decorates/material_static.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 22 KiB |
BIN
src/assets/images/chart/decorates/weather.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/images/chart/decorates/weather_time.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 22 KiB |
BIN
src/assets/images/chart/informations/text_carousel.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.8 KiB |
BIN
src/assets/images/chart/informations/title_diamond.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/assets/images/chart/informations/title_diamond2.png
Normal file
|
After Width: | Height: | Size: 8.7 KiB |
BIN
src/assets/images/chart/informations/title_main.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
BIN
src/assets/images/chart/tables/tables.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/assets/images/chart/tables/tables_categary.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
@@ -1,3 +0,0 @@
|
|||||||
import GoSystemInfo from './index.vue';
|
|
||||||
|
|
||||||
export { GoSystemInfo };
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
<template>
|
|
||||||
<n-modal v-model:show="modelShow" @afterLeave="closeHandle">
|
|
||||||
<n-list bordered class="go-system-info">
|
|
||||||
<template #header>
|
|
||||||
<n-space justify="space-between">
|
|
||||||
<n-h3 class="go-mb-0">关于我们</n-h3>
|
|
||||||
<n-icon size="20" class="go-cursor-pointer" @click="closeHandle">
|
|
||||||
<close-icon></close-icon>
|
|
||||||
</n-icon>
|
|
||||||
</n-space>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<n-list-item>
|
|
||||||
<n-space class="go-my-2" :size="20">
|
|
||||||
<n-text class="item-left">版权声明:</n-text>
|
|
||||||
<n-text>
|
|
||||||
GoView 版权属于
|
|
||||||
<n-a href="https://gitee.com/MTrun/go-view" target="_blank">https://gitee.com/MTrun/go-view</n-a> 项目作者
|
|
||||||
</n-text>
|
|
||||||
</n-space>
|
|
||||||
</n-list-item>
|
|
||||||
|
|
||||||
<n-list-item>
|
|
||||||
<n-space class="go-my-2" :size="20">
|
|
||||||
<n-text class="item-left">协议备注:</n-text>
|
|
||||||
<n-text>
|
|
||||||
请遵守开源 MIT 协议,以上声明 <n-text type="error">不可删除</n-text>,否则视作侵权行为,后果自负!
|
|
||||||
</n-text>
|
|
||||||
</n-space>
|
|
||||||
</n-list-item>
|
|
||||||
|
|
||||||
<n-list-item>
|
|
||||||
<n-space class="go-mt-2" :size="20">
|
|
||||||
<n-text class="item-left">商业授权:</n-text>
|
|
||||||
<n-text>
|
|
||||||
若不想保留版权声明,请通过仓库/交流群 联系项目作者,进行授权
|
|
||||||
</n-text>
|
|
||||||
</n-space>
|
|
||||||
</n-list-item>
|
|
||||||
</n-list>
|
|
||||||
</n-modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { icon } from '@/plugins'
|
|
||||||
|
|
||||||
const { HelpOutlineIcon, CloseIcon } = icon.ionicons5
|
|
||||||
const emit = defineEmits(['update:modelShow'])
|
|
||||||
|
|
||||||
defineProps({
|
|
||||||
modelShow: Boolean
|
|
||||||
})
|
|
||||||
|
|
||||||
const closeHandle = () => {
|
|
||||||
emit('update:modelShow', false)
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
@include go('system-info') {
|
|
||||||
@extend .go-background-filter;
|
|
||||||
min-width: 100px;
|
|
||||||
max-width: 60vw;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
.item-left {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
@include deep() {
|
|
||||||
.n-list-item:not(:last-child) {
|
|
||||||
border-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -115,13 +115,6 @@ const list = reactive<ListType[]>([
|
|||||||
desc: '',
|
desc: '',
|
||||||
value: ''
|
value: ''
|
||||||
},
|
},
|
||||||
{
|
|
||||||
key: SettingStoreEnums.CHART_TOOLS_STATUS_HIDE,
|
|
||||||
value: settingStore.getChartToolsStatusHide,
|
|
||||||
type: 'switch',
|
|
||||||
name: '隐藏工具栏',
|
|
||||||
desc: '鼠标移入时,会展示切换到展开模式',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
key: SettingStoreEnums.CHART_TOOLS_STATUS,
|
key: SettingStoreEnums.CHART_TOOLS_STATUS,
|
||||||
value: settingStore.getChartToolsStatus,
|
value: settingStore.getChartToolsStatus,
|
||||||
@@ -190,14 +183,11 @@ const handleChange = (e: MouseEvent, item: ListType) => {
|
|||||||
width: 100px;
|
width: 100px;
|
||||||
}
|
}
|
||||||
.select-min-width {
|
.select-min-width {
|
||||||
width: 115px;
|
width: 110px;
|
||||||
}
|
}
|
||||||
@include deep() {
|
@include deep() {
|
||||||
.n-list-item {
|
.n-list-item:not(:last-child) {
|
||||||
border-bottom: 0!important;
|
border-bottom: 0;
|
||||||
}
|
|
||||||
.n-list-item__divider {
|
|
||||||
display: none!important;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,17 +20,14 @@
|
|||||||
|
|
||||||
<!-- 系统设置 model -->
|
<!-- 系统设置 model -->
|
||||||
<go-system-set v-model:modelShow="modelShow"></go-system-set>
|
<go-system-set v-model:modelShow="modelShow"></go-system-set>
|
||||||
<!-- 关于软件 model -->
|
|
||||||
<go-system-info v-model:modelShow="modelShowInfo"></go-system-info>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { h, ref } from 'vue'
|
import { h, ref } from 'vue'
|
||||||
import { NAvatar, NText } from 'naive-ui'
|
import { NAvatar, NText } from 'naive-ui'
|
||||||
import { renderIcon } from '@/utils'
|
import { renderIcon } from '@/utils'
|
||||||
import { logout, renderLang } from '@/utils'
|
import { openDoc, logout, renderLang } from '@/utils'
|
||||||
import { GoSystemSet } from '@/components/GoSystemSet/index'
|
import { GoSystemSet } from '@/components/GoSystemSet/index'
|
||||||
import { GoSystemInfo } from '@/components/GoSystemInfo/index'
|
|
||||||
import Person from './person.png'
|
import Person from './person.png'
|
||||||
|
|
||||||
import { icon } from '@/plugins'
|
import { icon } from '@/plugins'
|
||||||
@@ -43,7 +40,6 @@ const {
|
|||||||
|
|
||||||
const t = window['$t']
|
const t = window['$t']
|
||||||
|
|
||||||
const modelShowInfo = ref(false)
|
|
||||||
const modelShow = ref(false)
|
const modelShow = ref(false)
|
||||||
|
|
||||||
// 是否失败
|
// 是否失败
|
||||||
@@ -81,16 +77,16 @@ const options = ref([
|
|||||||
type: 'divider',
|
type: 'divider',
|
||||||
key: 'd1'
|
key: 'd1'
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: renderLang('global.sys_set'),
|
|
||||||
key: 'sysSet',
|
|
||||||
icon: renderIcon(SettingsSharpIcon)
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: renderLang('global.contact'),
|
label: renderLang('global.contact'),
|
||||||
key: 'contact',
|
key: 'contact',
|
||||||
icon: renderIcon(ChatboxEllipsesIcon)
|
icon: renderIcon(ChatboxEllipsesIcon)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: renderLang('global.sys_set'),
|
||||||
|
key: 'sysSet',
|
||||||
|
icon: renderIcon(SettingsSharpIcon)
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'divider',
|
type: 'divider',
|
||||||
key: 'd3'
|
key: 'd3'
|
||||||
@@ -112,15 +108,10 @@ const sysSetHandle = () => {
|
|||||||
modelShow.value = true
|
modelShow.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// 系统设置
|
|
||||||
const sysInfoHandle = () => {
|
|
||||||
modelShowInfo.value = true
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleSelect = (key: string) => {
|
const handleSelect = (key: string) => {
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 'contact':
|
case 'contact':
|
||||||
sysInfoHandle()
|
openDoc()
|
||||||
break
|
break
|
||||||
case 'sysSet':
|
case 'sysSet':
|
||||||
sysSetHandle()
|
sysSetHandle()
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
<!-- eslint-disable vue/valid-template-root -->
|
|
||||||
<template></template>
|
<template></template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
|||||||
@@ -1,124 +1,134 @@
|
|||||||
<template>
|
<template>
|
||||||
<collapse-item v-if="title" name="标题">
|
<collapse-item v-if="title" name="标题">
|
||||||
<template #header>
|
<template #header>
|
||||||
<n-switch v-model:value="title.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-show="inChart"
|
||||||
|
v-model:value="title.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</template>
|
</template>
|
||||||
<setting-item-box name="标题">
|
<setting-item-box name="标题">
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker v-model:value="title.textStyle.color" size="small"></n-color-picker>
|
<n-color-picker
|
||||||
|
v-model:value="title.textStyle.color"
|
||||||
|
size="small"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="大小">
|
<setting-item name="大小">
|
||||||
<n-input-number v-model:value="title.textStyle.fontSize" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
|
v-model:value="title.textStyle.fontSize"
|
||||||
|
:min="1"
|
||||||
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="副标题">
|
<setting-item-box name="副标题">
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker size="small" v-model:value="title.subtextStyle.color"></n-color-picker>
|
<n-color-picker
|
||||||
|
size="small"
|
||||||
|
v-model:value="title.subtextStyle.color"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="大小">
|
<setting-item name="大小">
|
||||||
<n-input-number v-model:value="title.subtextStyle.fontSize" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
</setting-item>
|
v-model:value="title.subtextStyle.fontSize"
|
||||||
</setting-item-box>
|
:min="1"
|
||||||
</collapse-item>
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
<collapse-item v-if="grid" name="容器">
|
|
||||||
<setting-item-box name="距离">
|
|
||||||
<setting-item name="左侧距离">
|
|
||||||
<n-input v-model:value="grid.left" size="small"></n-input>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="右侧距离">
|
|
||||||
<n-input v-model:value="grid.right" size="small"></n-input>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="上侧距离">
|
|
||||||
<n-input v-model:value="grid.top" size="small"></n-input>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="下侧距离">
|
|
||||||
<n-input v-model:value="grid.bottom" size="small"></n-input>
|
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
</collapse-item>
|
</collapse-item>
|
||||||
|
|
||||||
<collapse-item v-if="xAxis" name="X轴">
|
<collapse-item v-if="xAxis" name="X轴">
|
||||||
<template #header>
|
<template #header>
|
||||||
<n-switch v-model:value="xAxis.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-show="inChart"
|
||||||
|
v-model:value="xAxis.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</template>
|
</template>
|
||||||
<setting-item-box name="单位">
|
<setting-item-box name="名称">
|
||||||
<setting-item name="名称">
|
|
||||||
<n-input v-model:value="xAxis.name" size="small"></n-input>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker size="small" v-model:value="xAxis.nameTextStyle.color"></n-color-picker>
|
<n-color-picker
|
||||||
</setting-item>
|
size="small"
|
||||||
<setting-item name="大小">
|
v-model:value="xAxis.nameTextStyle.color"
|
||||||
<n-input-number v-model:value="xAxis.nameTextStyle.fontSize" :min="12" size="small"></n-input-number>
|
></n-color-picker>
|
||||||
</setting-item>
|
|
||||||
<setting-item name="偏移量">
|
|
||||||
<n-input-number v-model:value="xAxis.nameGap" :min="5" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="标签">
|
<setting-item-box name="标签">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="xAxis.axisLabel.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-model:value="xAxis.axisLabel.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker size="small" v-model:value="xAxis.axisLabel.color"></n-color-picker>
|
<n-color-picker
|
||||||
</setting-item>
|
size="small"
|
||||||
<setting-item name="大小">
|
v-model:value="xAxis.axisLabel.color"
|
||||||
<n-input-number v-model:value="xAxis.axisLabel.fontSize" :min="8" size="small"></n-input-number>
|
></n-color-picker>
|
||||||
</setting-item>
|
|
||||||
<setting-item name="偏移量">
|
|
||||||
<n-input-number v-model:value="xAxis.axisLabel.rotate" :min="-90" :max="90" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="轴线">
|
<setting-item-box name="轴线">
|
||||||
<setting-item name="展示">
|
|
||||||
<n-space>
|
|
||||||
<n-switch v-model:value="xAxis.axisLine.show" size="small"></n-switch>
|
|
||||||
</n-space>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker v-model:value="xAxis.axisLine.lineStyle.color" size="small"></n-color-picker>
|
<n-color-picker
|
||||||
|
v-model:value="xAxis.axisLine.lineStyle.color"
|
||||||
|
size="small"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="粗细">
|
<setting-item name="粗细">
|
||||||
<n-input-number v-model:value="xAxis.axisLine.lineStyle.width" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
</setting-item>
|
v-model:value="xAxis.axisLine.lineStyle.width"
|
||||||
<setting-item name="位置">
|
:min="1"
|
||||||
<n-select v-model:value="xAxis.position" size="small" :options="axisConfig.xposition"></n-select>
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="对齐零">
|
<setting-item name="对齐零">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="xAxis.axisLine.onZero" size="small"></n-switch>
|
<n-switch
|
||||||
</n-space>
|
v-model:value="xAxis.axisLine.onZero"
|
||||||
</setting-item>
|
size="small"
|
||||||
<setting-item name="反向">
|
></n-switch>
|
||||||
<n-space>
|
|
||||||
<n-switch v-model:value="xAxis.inverse" size="small"></n-switch>
|
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="刻度">
|
<setting-item-box name="刻度">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="xAxis.axisTick.show" size="small"></n-switch>
|
<n-switch v-model:value="xAxis.axisTick.show" size="small"></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="长度">
|
<setting-item name="长度">
|
||||||
<n-input-number v-model:value="xAxis.axisTick.length" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
|
v-model:value="xAxis.axisTick.length"
|
||||||
|
:min="1"
|
||||||
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="分割线">
|
<setting-item-box name="分割线">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="xAxis.splitLine.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-model:value="xAxis.splitLine.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker v-model:value="xAxis.splitLine.lineStyle.color" size="small"></n-color-picker>
|
<n-color-picker
|
||||||
|
v-model:value="xAxis.splitLine.lineStyle.color"
|
||||||
|
size="small"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="粗细">
|
<setting-item name="粗细">
|
||||||
<n-input-number v-model:value="xAxis.splitLine.lineStyle.width" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
|
v-model:value="xAxis.splitLine.lineStyle.width"
|
||||||
|
:min="1"
|
||||||
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="类型">
|
<setting-item name="类型">
|
||||||
<n-select
|
<n-select
|
||||||
@@ -127,90 +137,111 @@
|
|||||||
:options="axisConfig.splitLint.lineStyle.type"
|
:options="axisConfig.splitLint.lineStyle.type"
|
||||||
></n-select>
|
></n-select>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
|
<setting-item name="位置">
|
||||||
|
<n-select
|
||||||
|
v-model:value="xAxis.position"
|
||||||
|
size="small"
|
||||||
|
:options="axisConfig.xposition"
|
||||||
|
></n-select>
|
||||||
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
</collapse-item>
|
</collapse-item>
|
||||||
|
|
||||||
<collapse-item v-if="yAxis" name="Y轴">
|
<collapse-item v-if="yAxis" name="Y轴">
|
||||||
<template #header>
|
<template #header>
|
||||||
<n-switch v-model:value="yAxis.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-show="inChart"
|
||||||
|
v-model:value="yAxis.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</template>
|
</template>
|
||||||
<setting-item-box name="单位">
|
<setting-item-box name="名称">
|
||||||
<setting-item name="名称">
|
|
||||||
<n-input v-model:value="yAxis.name" size="small"></n-input>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker size="small" v-model:value="yAxis.nameTextStyle.color"></n-color-picker>
|
<n-color-picker
|
||||||
</setting-item>
|
size="small"
|
||||||
<setting-item name="大小">
|
v-model:value="yAxis.nameTextStyle.color"
|
||||||
<n-input-number v-model:value="yAxis.nameTextStyle.fontSize" :min="8" size="small"></n-input-number>
|
></n-color-picker>
|
||||||
</setting-item>
|
|
||||||
<setting-item name="偏移量">
|
|
||||||
<n-input-number v-model:value="yAxis.nameGap" :min="5" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="标签">
|
<setting-item-box name="标签">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="yAxis.axisLabel.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-model:value="yAxis.axisLabel.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker size="small" v-model:value="yAxis.axisLabel.color"></n-color-picker>
|
<n-color-picker
|
||||||
</setting-item>
|
size="small"
|
||||||
<setting-item name="大小">
|
v-model:value="yAxis.axisLabel.color"
|
||||||
<n-input-number v-model:value="yAxis.axisLabel.fontSize" :min="8" size="small"></n-input-number>
|
></n-color-picker>
|
||||||
</setting-item>
|
|
||||||
<setting-item name="偏移量">
|
|
||||||
<n-input-number v-model:value="yAxis.axisLabel.rotate" :min="-90" :max="90" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="轴线">
|
<setting-item-box name="轴线">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="yAxis.axisLine.show" size="small"></n-switch>
|
<n-switch v-model:value="yAxis.axisLine.show" size="small"></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker v-model:value="yAxis.axisLine.lineStyle.color" size="small"></n-color-picker>
|
<n-color-picker
|
||||||
|
v-model:value="yAxis.axisLine.lineStyle.color"
|
||||||
|
size="small"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="粗细">
|
<setting-item name="粗细">
|
||||||
<n-input-number v-model:value="yAxis.axisLine.lineStyle.width" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
</setting-item>
|
v-model:value="yAxis.axisLine.lineStyle.width"
|
||||||
<setting-item name="位置">
|
:min="1"
|
||||||
<n-select v-model:value="yAxis.position" size="small" :options="axisConfig.yposition"></n-select>
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="对齐零">
|
<setting-item name="对齐零">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="yAxis.axisLine.onZero" size="small"></n-switch>
|
<n-switch
|
||||||
</n-space>
|
v-model:value="yAxis.axisLine.onZero"
|
||||||
</setting-item>
|
size="small"
|
||||||
<setting-item name="反向">
|
></n-switch>
|
||||||
<n-space>
|
|
||||||
<n-switch v-model:value="yAxis.inverse" size="small"></n-switch>
|
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="刻度">
|
<setting-item-box name="刻度">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="yAxis.axisTick.show" size="small"></n-switch>
|
<n-switch v-model:value="yAxis.axisTick.show" size="small"></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="长度">
|
<setting-item name="长度">
|
||||||
<n-input-number v-model:value="yAxis.axisTick.length" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
|
v-model:value="yAxis.axisTick.length"
|
||||||
|
:min="1"
|
||||||
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="分割线">
|
<setting-item-box name="分割线">
|
||||||
<setting-item name="展示">
|
<setting-item v-show="inChart" name="展示">
|
||||||
<n-space>
|
<n-space>
|
||||||
<n-switch v-model:value="yAxis.splitLine.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-model:value="yAxis.splitLine.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</n-space>
|
</n-space>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="颜色">
|
<setting-item name="颜色">
|
||||||
<n-color-picker v-model:value="yAxis.splitLine.lineStyle.color" size="small"></n-color-picker>
|
<n-color-picker
|
||||||
|
v-model:value="yAxis.splitLine.lineStyle.color"
|
||||||
|
size="small"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="粗细">
|
<setting-item name="粗细">
|
||||||
<n-input-number v-model:value="yAxis.splitLine.lineStyle.width" :min="1" size="small"></n-input-number>
|
<n-input-number
|
||||||
|
v-model:value="yAxis.splitLine.lineStyle.width"
|
||||||
|
:min="1"
|
||||||
|
size="small"
|
||||||
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
<setting-item name="类型">
|
<setting-item name="类型">
|
||||||
<n-select
|
<n-select
|
||||||
@@ -219,70 +250,44 @@
|
|||||||
:options="axisConfig.splitLint.lineStyle.type"
|
:options="axisConfig.splitLint.lineStyle.type"
|
||||||
></n-select>
|
></n-select>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
|
<setting-item name="位置">
|
||||||
|
<n-select
|
||||||
|
v-model:value="yAxis.position"
|
||||||
|
size="small"
|
||||||
|
:options="axisConfig.yposition"
|
||||||
|
></n-select>
|
||||||
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
</collapse-item>
|
</collapse-item>
|
||||||
|
|
||||||
<collapse-item v-if="legend" name="图例">
|
<collapse-item v-if="legend" name="图例">
|
||||||
<template #header>
|
<template #header>
|
||||||
<n-switch v-model:value="legend.show" size="small"></n-switch>
|
<n-switch
|
||||||
|
v-show="inChart"
|
||||||
|
v-model:value="legend.show"
|
||||||
|
size="small"
|
||||||
|
></n-switch>
|
||||||
</template>
|
</template>
|
||||||
<setting-item-box name="图例文字">
|
<setting-item-box name="图例文字">
|
||||||
<setting-item>
|
<setting-item>
|
||||||
<n-color-picker size="small" v-model:value="legend.textStyle.color"></n-color-picker>
|
<n-color-picker
|
||||||
|
size="small"
|
||||||
|
v-model:value="legend.textStyle.color"
|
||||||
|
></n-color-picker>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
</collapse-item>
|
</collapse-item>
|
||||||
|
|
||||||
<collapse-item v-if="visualMap" name="视觉映射">
|
|
||||||
<template #header>
|
|
||||||
<n-switch v-model:value="visualMap.show" size="small"></n-switch>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<setting-item-box name="范围">
|
|
||||||
<setting-item name="最小值">
|
|
||||||
<n-input-number v-model:value="visualMap.min" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="最大值">
|
|
||||||
<n-input-number v-model:value="visualMap.max" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
|
||||||
</setting-item-box>
|
|
||||||
|
|
||||||
<setting-item-box name="颜色">
|
|
||||||
<setting-item :name="`层级-${index + 1}`" v-for="(item, index) in visualMap.inRange.color" :key="index">
|
|
||||||
<n-color-picker v-model:value="visualMap.inRange.color[index]" size="small"></n-color-picker>
|
|
||||||
</setting-item>
|
|
||||||
</setting-item-box>
|
|
||||||
|
|
||||||
<setting-item-box name="控制块">
|
|
||||||
<setting-item name="放置方向">
|
|
||||||
<n-select v-model:value="visualMap.orient" size="small" :options="axisConfig.visualMap.orient"></n-select>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="宽度">
|
|
||||||
<n-input-number v-model:value="visualMap.itemWidth" :min="5" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="高度">
|
|
||||||
<n-input-number v-model:value="visualMap.itemHeight" :min="5" size="small"></n-input-number>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="反转">
|
|
||||||
<n-space>
|
|
||||||
<n-switch v-model:value="visualMap.inverse" size="small"></n-switch>
|
|
||||||
</n-space>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item name="拖拽组件实时更新">
|
|
||||||
<n-space>
|
|
||||||
<n-switch v-model:value="visualMap.realtime" size="small"></n-switch>
|
|
||||||
</n-space>
|
|
||||||
</setting-item>
|
|
||||||
</setting-item-box>
|
|
||||||
<global-setting-position :targetData="visualMap"></global-setting-position>
|
|
||||||
</collapse-item>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { PropType, computed } from 'vue'
|
import { PropType, computed } from 'vue'
|
||||||
import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
|
import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
|
||||||
import { axisConfig } from '@/packages/chartConfiguration/echarts/index'
|
import { axisConfig } from '@/packages/chartConfiguration/echarts/index'
|
||||||
import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting'
|
import {
|
||||||
|
CollapseItem,
|
||||||
|
SettingItemBox,
|
||||||
|
SettingItem
|
||||||
|
} from '@/components/Pages/ChartItemSetting'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
optionData: {
|
optionData: {
|
||||||
@@ -311,12 +316,4 @@ const yAxis = computed(() => {
|
|||||||
const legend = computed(() => {
|
const legend = computed(() => {
|
||||||
return props.optionData.legend
|
return props.optionData.legend
|
||||||
})
|
})
|
||||||
|
|
||||||
const grid = computed(() => {
|
|
||||||
return props.optionData.grid
|
|
||||||
})
|
|
||||||
|
|
||||||
const visualMap = computed(() => {
|
|
||||||
return props.optionData.visualMap
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
<template>
|
|
||||||
<setting-item-box v-if="targetData" name="位置">
|
|
||||||
<setting-item :name="`偏移 X:${targetData.left || 0}px`">
|
|
||||||
<n-input-number v-model:value="targetData.left" size="small" step="10"></n-input-number>
|
|
||||||
</setting-item>
|
|
||||||
<setting-item :name="`偏移 Y:${targetData.top || 0}px`">
|
|
||||||
<n-input-number v-model:value="targetData.top" size="small" step="10"></n-input-number>
|
|
||||||
</setting-item>
|
|
||||||
</setting-item-box>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { PropType, reactive } from 'vue'
|
|
||||||
import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
|
|
||||||
|
|
||||||
type positionType = {
|
|
||||||
top?: number | string | null
|
|
||||||
left?: number | string | null
|
|
||||||
right?: number | string | null
|
|
||||||
bottom?: number | string | null
|
|
||||||
}
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
targetData: {
|
|
||||||
type: Object as PropType<positionType>,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
@@ -8,9 +8,9 @@
|
|||||||
</n-text>
|
</n-text>
|
||||||
<div
|
<div
|
||||||
class="item-right"
|
class="item-right"
|
||||||
|
justify="space-between"
|
||||||
:style="{
|
:style="{
|
||||||
gridTemplateColumns: alone ? '1fr' : '1fr 1fr',
|
gridTemplateColumns: alone ? '1fr' : '1fr 1fr'
|
||||||
...itemRightStyle
|
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
@@ -28,11 +28,6 @@ defineProps({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
required: false
|
required: false
|
||||||
},
|
|
||||||
itemRightStyle: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {},
|
|
||||||
required: false
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
@@ -53,6 +48,7 @@ $leftWidth: 60px;
|
|||||||
.item-right {
|
.item-right {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-column-gap: 10px;
|
grid-column-gap: 10px;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
width: calc(100% - #{$leftWidth});
|
width: calc(100% - #{$leftWidth});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
<n-input-number
|
<n-input-number
|
||||||
v-model:value="chartAttr.w"
|
v-model:value="chartAttr.w"
|
||||||
:min="50"
|
:min="50"
|
||||||
:disabled="isGroup"
|
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="px"
|
placeholder="px"
|
||||||
>
|
>
|
||||||
@@ -14,7 +13,6 @@
|
|||||||
<n-input-number
|
<n-input-number
|
||||||
v-model:value="chartAttr.h"
|
v-model:value="chartAttr.h"
|
||||||
:min="50"
|
:min="50"
|
||||||
:disabled="isGroup"
|
|
||||||
size="small"
|
size="small"
|
||||||
placeholder="px"
|
placeholder="px"
|
||||||
>
|
>
|
||||||
@@ -34,10 +32,6 @@ const props = defineProps({
|
|||||||
chartAttr: {
|
chartAttr: {
|
||||||
type: Object as PropType<Omit<PickCreateComponentType<'attr'>, 'node' | 'conNode'>>,
|
type: Object as PropType<Omit<PickCreateComponentType<'attr'>, 'node' | 'conNode'>>,
|
||||||
required: true
|
required: true
|
||||||
},
|
|
||||||
isGroup: {
|
|
||||||
type: Boolean,
|
|
||||||
required: false
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,13 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-show="isGroup">
|
|
||||||
<n-divider n-divider style="margin: 10px 0"></n-divider>
|
|
||||||
<n-tag type="warning"> 解散分组「 {{ isCanvas ? '滤镜' : '滤镜 / 变换' }} 」也将消失!</n-tag>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<collapse-item :name="isCanvas ? '滤镜' : '滤镜 / 变换'">
|
<collapse-item :name="isCanvas ? '滤镜' : '滤镜 / 变换'">
|
||||||
<template #header>
|
|
||||||
<n-switch v-model:value="chartStyles.filterShow" size="small"></n-switch>
|
|
||||||
</template>
|
|
||||||
<setting-item-box name="色相" :alone="true">
|
<setting-item-box name="色相" :alone="true">
|
||||||
<setting-item :name="`值:${chartStyles.hueRotate}deg`">
|
<setting-item :name="`值:${chartStyles.hueRotate}deg`">
|
||||||
<!-- 透明度 -->
|
<!-- 透明度 -->
|
||||||
@@ -21,7 +13,9 @@
|
|||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="饱和度" :alone="true">
|
<setting-item-box name="饱和度" :alone="true">
|
||||||
<setting-item :name="`值:${(parseFloat(String(chartStyles.saturate)) * 100).toFixed(0)}%`">
|
<setting-item
|
||||||
|
:name="`值:${(parseFloat(String(chartStyles.saturate)) * 100).toFixed(0)}%`"
|
||||||
|
>
|
||||||
<!-- 透明度 -->
|
<!-- 透明度 -->
|
||||||
<n-slider
|
<n-slider
|
||||||
v-model:value="chartStyles.saturate"
|
v-model:value="chartStyles.saturate"
|
||||||
@@ -33,7 +27,9 @@
|
|||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="对比度" :alone="true">
|
<setting-item-box name="对比度" :alone="true">
|
||||||
<setting-item :name="`值:${(parseFloat(String(chartStyles.contrast)) * 100).toFixed(0)}%`">
|
<setting-item
|
||||||
|
:name="`值:${(parseFloat(String(chartStyles.contrast)) * 100).toFixed(0)}%`"
|
||||||
|
>
|
||||||
<!-- 透明度 -->
|
<!-- 透明度 -->
|
||||||
<n-slider
|
<n-slider
|
||||||
v-model:value="chartStyles.contrast"
|
v-model:value="chartStyles.contrast"
|
||||||
@@ -45,7 +41,9 @@
|
|||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="亮度" :alone="true">
|
<setting-item-box name="亮度" :alone="true">
|
||||||
<setting-item :name="`值:${(parseFloat(String(chartStyles.brightness)) * 100).toFixed(0)}%`">
|
<setting-item
|
||||||
|
:name="`值:${(parseFloat(String(chartStyles.brightness)) * 100).toFixed(0)}%`"
|
||||||
|
>
|
||||||
<!-- 透明度 -->
|
<!-- 透明度 -->
|
||||||
<n-slider
|
<n-slider
|
||||||
v-model:value="chartStyles.brightness"
|
v-model:value="chartStyles.brightness"
|
||||||
@@ -57,7 +55,9 @@
|
|||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
<setting-item-box name="透明度" :alone="true">
|
<setting-item-box name="透明度" :alone="true">
|
||||||
<setting-item :name="`值:${(parseFloat(String(chartStyles.opacity)) * 100).toFixed(0)}%`">
|
<setting-item
|
||||||
|
:name="`值:${(parseFloat(String(chartStyles.opacity)) * 100).toFixed(0)}%`"
|
||||||
|
>
|
||||||
<!-- 透明度 -->
|
<!-- 透明度 -->
|
||||||
<n-slider
|
<n-slider
|
||||||
v-model:value="chartStyles.opacity"
|
v-model:value="chartStyles.opacity"
|
||||||
@@ -68,25 +68,7 @@
|
|||||||
></n-slider>
|
></n-slider>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
|
|
||||||
<!-- 混合模式 -->
|
|
||||||
<setting-item-box v-if="!isCanvas" :alone="true">
|
|
||||||
<template #name>
|
|
||||||
<n-text>混合</n-text>
|
|
||||||
<n-tooltip trigger="hover">
|
|
||||||
<template #trigger>
|
|
||||||
<n-icon size="21" :depth="3">
|
|
||||||
<help-outline-icon></help-outline-icon>
|
|
||||||
</n-icon>
|
|
||||||
</template>
|
|
||||||
<n-text>视频组件需要底色透明一般选中滤色</n-text>
|
|
||||||
</n-tooltip>
|
|
||||||
</template>
|
|
||||||
<setting-item>
|
|
||||||
<n-select v-model:value="chartStyles.blendMode" size="small" filterable :options="BlendModeEnumList"></n-select>
|
|
||||||
</setting-item>
|
|
||||||
</setting-item-box>
|
|
||||||
|
|
||||||
<!-- 变换 -->
|
<!-- 变换 -->
|
||||||
<setting-item-box v-if="!isCanvas" name="旋转°">
|
<setting-item-box v-if="!isCanvas" name="旋转°">
|
||||||
<setting-item name="Z轴(平面) - 旋转">
|
<setting-item name="Z轴(平面) - 旋转">
|
||||||
@@ -142,41 +124,37 @@
|
|||||||
></n-input-number>
|
></n-input-number>
|
||||||
</setting-item>
|
</setting-item>
|
||||||
</setting-item-box>
|
</setting-item-box>
|
||||||
|
|
||||||
<!-- 提示 -->
|
|
||||||
<n-tag type="warning"> 若预览时大屏模糊,可以尝试关闭滤镜进行修复 </n-tag>
|
|
||||||
</collapse-item>
|
</collapse-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { PropType } from 'vue'
|
import { PropType } from 'vue'
|
||||||
import { PickCreateComponentType, BlendModeEnumList } from '@/packages/index.d'
|
import { PickCreateComponentType } from '@/packages/index.d'
|
||||||
import { SettingItemBox, SettingItem, CollapseItem } from '@/components/Pages/ChartItemSetting'
|
import {
|
||||||
import { icon } from '@/plugins'
|
SettingItemBox,
|
||||||
|
SettingItem,
|
||||||
|
CollapseItem,
|
||||||
|
} from '@/components/Pages/ChartItemSetting'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
isGroup: {
|
|
||||||
type: Boolean,
|
|
||||||
required: false
|
|
||||||
},
|
|
||||||
isCanvas: {
|
isCanvas: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
chartStyles: {
|
chartStyles: {
|
||||||
type: Object as PropType<Omit<PickCreateComponentType<'styles'>, 'animations'>>,
|
type: Object as PropType<Omit<PickCreateComponentType<'styles'>, 'animations'>>,
|
||||||
required: true
|
required: true,
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
const { HelpOutlineIcon } = icon.ionicons5
|
// 百分比格式化persen
|
||||||
|
|
||||||
// 百分比格式化 person
|
|
||||||
const sliderFormatTooltip = (v: string) => {
|
const sliderFormatTooltip = (v: string) => {
|
||||||
|
// @ts-ignore
|
||||||
return `${(parseFloat(v) * 100).toFixed(0)}%`
|
return `${(parseFloat(v) * 100).toFixed(0)}%`
|
||||||
}
|
}
|
||||||
// 角度格式化
|
// 角度格式化
|
||||||
const degFormatTooltip = (v: string) => {
|
const degFormatTooltip = (v: string) => {
|
||||||
|
// @ts-ignore
|
||||||
return `${v}deg`
|
return `${v}deg`
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -5,9 +5,6 @@ import CollapseItem from './CollapseItem.vue'
|
|||||||
|
|
||||||
// 全局配置属性
|
// 全局配置属性
|
||||||
import GlobalSetting from './GlobalSetting.vue'
|
import GlobalSetting from './GlobalSetting.vue'
|
||||||
// 全局配置属性-位置
|
|
||||||
import GlobalSettingPosition from './GlobalSettingPosition.vue'
|
|
||||||
|
|
||||||
// 名称
|
// 名称
|
||||||
import NameSetting from './NameSetting.vue'
|
import NameSetting from './NameSetting.vue'
|
||||||
// 方向
|
// 方向
|
||||||
@@ -17,4 +14,4 @@ import SizeSetting from './SizeSetting.vue'
|
|||||||
// 样式
|
// 样式
|
||||||
import StylesSetting from './StylesSetting.vue'
|
import StylesSetting from './StylesSetting.vue'
|
||||||
|
|
||||||
export { CollapseItem, SettingItemBox, SettingItem, GlobalSetting, GlobalSettingPosition, NameSetting, PositionSetting, SizeSetting, StylesSetting }
|
export { CollapseItem, SettingItemBox, SettingItem, GlobalSetting, NameSetting, PositionSetting, SizeSetting, StylesSetting }
|
||||||
|
|||||||