Initial commit

main
lijun 2025-04-12 22:14:08 +08:00 committed by lj7788@126.com
commit 8f94044319
692 changed files with 132910 additions and 0 deletions

50
.gitignore vendored 100644
View File

@ -0,0 +1,50 @@
######################################################################
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
target/
!.mvn/wrapper/maven-wrapper.jar
######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### JRebel ###
rebel.xml
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/
*.css.map
######################################################################
# Others
*.log
*.xml.versionsBackup
*.swp
!*/build/*.java
!*/build/*.html
!*/build/*.xml
glendale.demo2/node_modules/

2
README.md 100644
View File

@ -0,0 +1,2 @@
# docs

View File

@ -0,0 +1,3 @@
> 1%
last 2 versions
not ie <= 10

View File

@ -0,0 +1,39 @@
[*]
charset=utf-8
end_of_line=lf
insert_final_newline=false
indent_style=space
indent_size=2
[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
indent_style=space
indent_size=2
[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
indent_style=space
indent_size=2
[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
indent_style=space
indent_size=2
[*.svg]
indent_style=space
indent_size=2
[*.js.map]
indent_style=space
indent_size=2
[*.less]
indent_style=space
indent_size=2
[*.vue]
indent_style=space
indent_size=2
[{.analysis_options,*.yml,*.yaml}]
indent_style=space
indent_size=2

View File

@ -0,0 +1,22 @@
NODE_ENV=production
VUE_APP_PREVIEW=false
VUE_APP_TITLE=服务器端渲染3D/BIM/GIS轻量化引擎-葛兰岱尔
VUE_APP_GRANT_TYPE=password
VUE_APP_SCOPE=Design
VUE_APP_CLIENT_ID=Design_BIM
VUE_APP_CLIENT_SECRET=1q2w3e*
VUE_APP_GRANT_TYPE_Phone=PhoneCodeGrantType
VUE_APP_SCOPE_Phone=Design
VUE_APP_CLIENT_ID_Phone=Design_Phone
VUE_APP_CLIENT_SECRET_Phone=1q2w3e*
#项目默认封面图片
VUE_APP_PROJECT_IMG=/image/pro-bg.png
#签名:复制分享链接
VUE_APP_COPY_SIGN=----中国“数字孪生”3D轻量化技术专家葛兰岱尔为您提供技术支持----
#广告API
VUE_APP_ADVISE_API=http://tmadv.glendale.top

View File

@ -0,0 +1,4 @@
NODE_ENV=development
VUE_APP_PREVIEW=true

View File

@ -0,0 +1,6 @@
NODE_ENV=production
VUE_APP_PREVIEW=true
#项目默认封面图片
VUE_APP_PROJECT_IMG=/image/pro-bg.png
#签名:复制分享链接
VUE_APP_COPY_SIGN=----中国“数字孪生”3D轻量化技术专家葛兰岱尔为您提供技术支持----

View File

@ -0,0 +1,75 @@
module.exports = {
root: true,
env: {
node: true
},
'extends': [
'plugin:vue/strongly-recommended',
// '@vue/standard'
],
rules: {
'no-console': 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'generator-star-spacing': 'off',
'no-mixed-operators': 0,
'vue/max-attributes-per-line': [
2,
{
'singleline': 100,
'multiline': {
'max': 1,
'allowFirstLine': true
}
}
],
'vue/attribute-hyphenation': 0,
'vue/html-self-closing': 0,
'vue/component-name-in-template-casing': 0,
'vue/html-closing-bracket-spacing': 0,
'vue/singleline-html-element-content-newline': 0,
'vue/no-unused-components': 0,
'vue/multiline-html-element-content-newline': 0,
'vue/no-use-v-if-with-v-for': 0,
'vue/html-closing-bracket-newline': 0,
'vue/no-parsing-error': 0,
'no-tabs': 0,
'quotes': [
2,
'single',
{
'avoidEscape': true,
'allowTemplateLiterals': true
}
],
'semi': [
2,
'never',
{
'beforeStatementContinuationChars': 'never'
}
],
'no-delete-var': 2,
'prefer-const': [
2,
{
'ignoreReadBeforeAssign': false
}
],
'template-curly-spacing': 'off',
'indent': 'off'
},
parserOptions: {
parser: 'babel-eslint'
},
overrides: [
{
files: [
'**/__tests__/*.{j,t}s?(x)',
'**/tests/unit/**/*.spec.{j,t}s?(x)'
],
env: {
jest: true
}
}
]
}

View File

@ -0,0 +1,5 @@
{
"rules": {
"space-before-function-paren": 0
}
}

View File

@ -0,0 +1,6 @@
{
"printWidth": 120,
"semi": false,
"singleQuote": true,
"prettier.spaceBeforeFunctionParen": true
}

View File

@ -0,0 +1,7 @@
language: node_js
node_js:
- 10.15.0
cache: yarn
script:
- yarn
- yarn run lint --no-fix && yarn run build

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Anan Yang
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,31 @@
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
const IS_PREVIEW = process.env.VUE_APP_PREVIEW === 'true'
const plugins = []
if (IS_PROD && !IS_PREVIEW) {
// 去除日志的插件,
plugins.push('transform-remove-console')
}
// lazy load ant-design-vue
// if your use import on Demand, Use this code
plugins.push(['import', {
'libraryName': 'ant-design-vue',
'libraryDirectory': 'es',
'style': true // `style: true` 会加载 less 文件
}])
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset',
[
'@babel/preset-env',
{
'useBuiltIns': 'entry',
'corejs': 3
}
]
],
plugins,
compact:false
}

View File

@ -0,0 +1,49 @@
const ThemeColorReplacer = require('webpack-theme-color-replacer')
const generate = require('@ant-design/colors/lib/generate').default
const getAntdSerials = (color) => {
// 淡化即less的tint
const lightens = new Array(9).fill().map((t, i) => {
return ThemeColorReplacer.varyColor.lighten(color, i / 10)
})
const colorPalettes = generate(color)
const rgb = ThemeColorReplacer.varyColor.toNum3(color.replace('#', '')).join(',')
return lightens.concat(colorPalettes).concat(rgb)
}
const themePluginOption = {
fileName: 'css/theme-colors-[contenthash:8].css',
matchColors: getAntdSerials('#1890ff'), // 主色系列
// 改变样式选择器,解决样式覆盖问题
changeSelector (selector) {
switch (selector) {
case '.ant-calendar-today .ant-calendar-date':
return ':not(.ant-calendar-selected-date):not(.ant-calendar-selected-day)' + selector
case '.ant-btn:focus,.ant-btn:hover':
return '.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger)'
case '.ant-btn.active,.ant-btn:active':
return '.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger)'
case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
case '.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon':
return ':not(.ant-steps-item-process)' + selector
// fixed https://github.com/vueComponent/ant-design-vue-pro/issues/876
case '.ant-steps-item-process .ant-steps-item-icon':
return ':not(.ant-steps-item-custom)' + selector
case '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover':
case '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal > .ant-menu-submenu-selected,.ant-menu-horizontal > .ant-menu-submenu:hover':
return '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover'
case '.ant-menu-horizontal > .ant-menu-item-selected > a':
case '.ant-menu-horizontal>.ant-menu-item-selected>a':
return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a'
case '.ant-menu-horizontal > .ant-menu-item > a:hover':
case '.ant-menu-horizontal>.ant-menu-item>a:hover':
return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover'
default :
return selector
}
}
}
const createThemeColorReplacerPlugin = () => new ThemeColorReplacer(themePluginOption)
module.exports = createThemeColorReplacerPlugin

View File

@ -0,0 +1,115 @@
export default {
theme: [
{
key: 'dark',
fileName: 'dark.css',
theme: 'dark'
},
{
key: '#F5222D',
fileName: '#F5222D.css',
modifyVars: {
'@primary-color': '#F5222D'
}
},
{
key: '#FA541C',
fileName: '#FA541C.css',
modifyVars: {
'@primary-color': '#FA541C'
}
},
{
key: '#FAAD14',
fileName: '#FAAD14.css',
modifyVars: {
'@primary-color': '#FAAD14'
}
},
{
key: '#13C2C2',
fileName: '#13C2C2.css',
modifyVars: {
'@primary-color': '#13C2C2'
}
},
{
key: '#52C41A',
fileName: '#52C41A.css',
modifyVars: {
'@primary-color': '#52C41A'
}
},
{
key: '#2F54EB',
fileName: '#2F54EB.css',
modifyVars: {
'@primary-color': '#2F54EB'
}
},
{
key: '#722ED1',
fileName: '#722ED1.css',
modifyVars: {
'@primary-color': '#722ED1'
}
},
{
key: '#F5222D',
theme: 'dark',
fileName: 'dark-#F5222D.css',
modifyVars: {
'@primary-color': '#F5222D'
}
},
{
key: '#FA541C',
theme: 'dark',
fileName: 'dark-#FA541C.css',
modifyVars: {
'@primary-color': '#FA541C'
}
},
{
key: '#FAAD14',
theme: 'dark',
fileName: 'dark-#FAAD14.css',
modifyVars: {
'@primary-color': '#FAAD14'
}
},
{
key: '#13C2C2',
theme: 'dark',
fileName: 'dark-#13C2C2.css',
modifyVars: {
'@primary-color': '#13C2C2'
}
},
{
key: '#52C41A',
theme: 'dark',
fileName: 'dark-#52C41A.css',
modifyVars: {
'@primary-color': '#52C41A'
}
},
{
key: '#2F54EB',
theme: 'dark',
fileName: 'dark-#2F54EB.css',
modifyVars: {
'@primary-color': '#2F54EB'
}
},
{
key: '#722ED1',
theme: 'dark',
fileName: 'dark-#722ED1.css',
modifyVars: {
'@primary-color': '#722ED1'
}
}
]
}

View File

@ -0,0 +1,31 @@
为首屏增加 加载动画
====
## 需求
> 为了缓解用户第一次访问时,加载 JS 过大所导致用户等待白屏时间过长导致的用户体验不好,进行的一个优化动效。
## 实现方案
1. 将 动画加载 dom 元素放在 #appVue 生命周期开始时,会自动清掉 #app 下的所有元素。
2. 将 动画加载 dom 元素放在 body 下Vue 生命周期开始时 App.vue (created, mounted) 调用 `@/utils/utll` 下的 removeLoadingAnimate(#id, timeout) 则会移除加载动画
最后一步:
将样式插入到 `public/index.html` 文件的 `<head></head>` 最好写成内联 `<style>动画样式</style>`
----
目前提供有两个样式,均在 `public/loading` 文件夹内。且 pro 已经默认使用了一套 loading 动画方案,可以直接参考 `public/index.html`
## 写在最后
目前 pro 有页面 overflow 显示出浏览器滚动条时,页面会抖动一下的问题。
欢迎各位提供能解决的方案和实现 demo。如果在条件允许的情况下建议请直接使用 pro 进行改造,也欢迎直接 PR 到 pro 的仓库

View File

@ -0,0 +1,40 @@
先增加依赖
```bash
// npm
$ npm install --save-dev webpack-bundle-analyzer
// or yarn
$ yarn add webpack-bundle-analyzer -D
```
配置文件 `vue.config.js` 增加 `configureWebpack.plugins` 参数
```
const path = require('path')
const webpack = require('webpack')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
function resolve (dir) {
return path.join(__dirname, dir)
}
// vue.config.js
module.exports = {
configureWebpack: {
plugins: [
// Ignore all locale files of moment.js
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
// 依赖大小分析工具
new BundleAnalyzerPlugin(),
]
},
...
}
```
启动 `cli``build` 命令进行项目编译,编译完成时,会自动运行一个 http://localhost:8888 的地址,完整显示了支持库依赖

View File

@ -0,0 +1,23 @@
module.exports = {
moduleFileExtensions: [
'js',
'jsx',
'json',
'vue'
],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
snapshotSerializers: [
'jest-serializer-vue'
],
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
],
testURL: 'http://localhost/'
}

View File

@ -0,0 +1,11 @@
{
"compilerOptions": {
"target": "es6",
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"exclude": ["node_modules", "dist"],
"include": ["src/**/*"]
}

View File

@ -0,0 +1,81 @@
{
"name": "glendale.design.bim",
"version": "3.0.2",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint",
"build:preview": "vue-cli-service build --mode preview",
"lint:nofix": "vue-cli-service lint --no-fix"
},
"dependencies": {
"@ant-design-vue/pro-layout": "^1.0.8",
"@antv/data-set": "^0.10.2",
"@logicflow/core": "^0.7.9",
"@logicflow/extension": "^0.7.9",
"@vue/composition-api": "^1.4.5",
"ant-design-vue": "^1.7.6",
"axios": "^0.26.1",
"canvas": "^3.1.0",
"core-js": "^3.1.2",
"downloadjs": "^1.4.7",
"echarts": "^4.9.0",
"echarts-liquidfill": "^3.1.0",
"file-saver": "^2.0.5",
"html2canvas": "^1.4.1",
"lib-flexible": "^0.3.2",
"lodash.clonedeep": "^4.5.0",
"lodash.get": "^4.4.2",
"lodash.pick": "^4.4.0",
"moment": "^2.24.0",
"nprogress": "^0.2.0",
"pdfobject": "^2.2.7",
"postcss-px2rem": "^0.3.0",
"px2rem-loader": "^0.1.9",
"spark-md5": "^3.0.2",
"store": "^2.0.12",
"v-viewer": "^1.6.4",
"vcolorpicker": "^1.1.0",
"vconsole": "^3.9.5",
"vue": "^2.6.14",
"vue-clipboard2": "^0.2.1",
"vue-cropper": "0.4.9",
"vue-i18n": "8.26.7",
"vue-monoplasty-slide-verify": "^1.3.1",
"vue-pdf": "^4.3.0",
"vue-qr": "3.2.4",
"vue-router": "^3.5.2",
"vue-svg-component-runtime": "^1.0.1",
"vuescroll": "^4.17.3",
"vuex": "^3.1.1",
"xlsx": "^0.17.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.0.4",
"@vue/cli-plugin-eslint": "^4.0.4",
"@vue/cli-plugin-router": "^4.0.4",
"@vue/cli-plugin-unit-jest": "^4.0.4",
"@vue/cli-plugin-vuex": "^4.0.4",
"@vue/cli-service": "^4.0.4",
"@vue/eslint-config-standard": "^4.0.0",
"@vue/test-utils": "^1.0.0-beta.29",
"babel-eslint": "^10.0.1",
"babel-plugin-import": "^1.12.2",
"babel-plugin-transform-remove-console": "^6.9.4",
"copy-webpack-plugin": "5.1.2",
"eslint": "^5.16.0",
"eslint-plugin-html": "^5.0.0",
"eslint-plugin-vue": "^5.2.3",
"git-revision-webpack-plugin": "^3.0.6",
"less": "^3.0.4",
"less-loader": "^5.0.0",
"script-loader": "^0.7.2",
"vue-svg-icon-loader": "^2.1.1",
"vue-template-compiler": "^2.6.14",
"webpack-theme-color-replacer": "^1.3.12"
},
"main": "index.js",
"license": "MIT"
}

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

View File

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="<%= BASE_URL %>bimlogo.ico">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<style>
body{
overflow: hidden;
}
.first-loading-wrp {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
min-height: 420px;
height: 100%
}
.first-loading-wrp>h1 {
font-size: 26px
}
.first-loading-wrp .loading-wrp {
padding: 98px;
display: flex;
justify-content: center;
align-items: center
}
.dot {
animation: antRotate 1.2s infinite linear;
transform: rotate(45deg);
position: relative;
display: inline-block;
font-size: 32px;
width: 32px;
height: 32px;
box-sizing: border-box
}
.dot i {
width: 14px;
height: 14px;
position: absolute;
display: block;
background-color: #1890ff;
border-radius: 100%;
transform: scale(.75);
transform-origin: 50% 50%;
opacity: .3;
animation: antSpinMove 1s infinite linear alternate
}
.dot i:nth-child(1) {
top: 0;
left: 0
}
.dot i:nth-child(2) {
top: 0;
right: 0;
-webkit-animation-delay: .4s;
animation-delay: .4s
}
.dot i:nth-child(3) {
right: 0;
bottom: 0;
-webkit-animation-delay: .8s;
animation-delay: .8s
}
.dot i:nth-child(4) {
bottom: 0;
left: 0;
-webkit-animation-delay: 1.2s;
animation-delay: 1.2s
}
@keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg)
}
}
@-webkit-keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg)
}
}
@keyframes antSpinMove {
to {
opacity: 1
}
}
@-webkit-keyframes antSpinMove {
to {
opacity: 1
}
}
</style>
<!-- require cdn assets css 0x1ea2-->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
<% } %>
<script src="/static/BIMGISEngine2.js"></script>
</head>
<body>
<noscript>
<strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to
continue.</strong>
</noscript>
<div id="app">
<div class="first-loading-wrp">
<h1>正在加载中...</h1>
<div class="loading-wrp">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div>
<!-- <div style="display: flex; justify-content: center; align-items: center;">Ant Design</div> -->
</div>
</div>
<!-- require cdn assets js -->
<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
<script type="text/javascript" src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
<% } %>
<!-- built files will be auto injected -->
</body>
</html>
<script>
var api;
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

View File

@ -0,0 +1,37 @@
<template>
<a-config-provider :locale="locale">
<div id="app">
<router-view />
</div>
</a-config-provider>
</template>
<script>
import request from '@/utils/request'
import qs from 'qs'
import zhCN from 'ant-design-vue/es/locale/zh_CN'
// import zhtw from 'ant-design-vue/lib/locale-provider/zh_TW.js'
// import { i18nRender } from '@/locales'
// 3
// import moment from 'moment'
// import 'moment/locale/zh-tw'
// moment.locale('zh-tw')
export default {
data() {
return {
locale: zhCN,
}
},
// computed: {
// locale () {
// //
// const { title } = this.$route.meta
// title && (setDocumentTitle(`${i18nRender(title)} - ${domTitle}`))
// // en-USzh-CN
// return this.$i18n.getLocaleMessage('zh-CN').antLocale
// }
// }
}
</script>

View File

@ -0,0 +1,166 @@
import request from '@/utils/request'
import { transformAbpListQuery, buildPagingQueryResult } from '@/utils/abpParamsTransform'
const api = {
combine: `/api/app/combine`,//合摸
flatten: `/api/app/combine-flatten`,//合摸压平
}
//保存合模
export function saveModelClosing(parameter) {
let url = api.combine;
return request({
url: url,
method: 'post',
data: parameter
});
}
//getCombineList
/**查询合摸列表 */
export function getCombineList(parameter) {
const queryParams = transformAbpListQuery(parameter)//使用stable展示列表需要转换一下数据格式
return request({
url: api.combine,
method: 'get',
params: queryParams
}).then(data => {
return buildPagingQueryResult(parameter, data)
})
}
//getCombineList
/**查询文档列表 */
export function getDocumentList(id) {
return request({
url: api.combine / GetDocument,
method: 'get',
params: { id: id }
}).then(data => {
return data
})
}
/**
* 查询合模树结构-并且带
* @param {*} projectId 项目Id
* @param {*} combineName 合模名称
* @returns
*/
export function getCombine(projectId, combineName) {
return request({
url: `${api.combine}/getalllistasync`,
method: 'get',
params: { projectId: projectId, combineName: combineName }
})
}
export function deleted(id) {
return request({
url: `${api.combine}/${id}`,
method: 'delete',
})
}
export function getClampById(id) {
return request({
url: `${api.combine}/${id}`,
method: 'get',
})
}
export function getHasClampById(docId) {
return request({
url: `${api.combine}/has-combine/${docId}`,
method: 'get',
})
}
//公开
export function openStatusClamping(parameter) {
return request({
url: `${api.combine}/set-open`,
method: 'post',
params: { isOpen: parameter.isOpen },
data: parameter.id,
});
}
/**
* 获取合模日志
*/
export function getCombineLogs(combineId) {
return request({
url: `${api.combineLog}/by-combine-id/${combineId}`,
method: 'get'
})
}
/**
* 分页查询合模压平列表
* @param {*} CombineId 合模ID
* @param {*} MaxResultCount 一页多少条数据
* @param {*} SkipCount
* @returns
*/
export function getCombineFlatten(parameter) {
return request({
url: `${api.flatten}`,
method: 'get',
params: parameter,
})
}
/**
* 添加合模压平
* @param {*} combineId 合模id
* @param {*} flattenName 压平名称
* @param {*} flattenHeight 压平高度
* @param {*} flattenScope 压平范围
* @returns
*/
export function addCombineFlatten(parameter) {
return request({
url: `${api.flatten}`,
method: 'post',
data: parameter,
})
}
/**
* 根据压平id删除压平
* @param {*} id 压平id
* @returns
*/
export function deleteCombineFlatten(id) {
return request({
url: `${api.flatten}/${id}`,
method: 'delete',
})
}
/**合模封面设置 */
export function combineProjectCover(id, BlobName) {
return request({
url: `${api.combine}/${id}/blob-name?BlobName=${BlobName}`,
method: 'put',
})
}
/**存储可视距离等配置 */
export function combineModelConfig(params) {
return request({
url: `${api.combine}/${params.id}/model-config/${params.DocumentId}?ModelConfig=${params.ModelConfig}`,
method: 'put',
data: params
})
}
/**存储场景设置等配置 */
export function combineSceneConfig(params) {
return request({
url: `${api.combine}/${params.id}/scene-config?SceneConfig=${params.SceneConfig}`,
method: 'put',
data: params
})
}

View File

@ -0,0 +1,274 @@
var PI = 3.1415926535897932384626;
var a = 6378245.0;
var ee = 0.00669342162296594323;
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
function gcj02towgs84(lng, lat) {
lng = lng * 1;
lat = lat * 1;
if (out_of_china(lng, lat)) {
return [lng, lat]
}
else {
var dlat = transformlat(lng - 105.0, lat - 35.0);
var dlng = transformlng(lng - 105.0, lat - 35.0);
var radlat = lat / 180.0 * PI;
var magic = Math.sin(radlat);
magic = 1 - ee * magic * magic;
var sqrtmagic = Math.sqrt(magic);
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
var mglat = lat + dlat;
var mglng = lng + dlng;
return [lng * 2 - mglng, lat * 2 - mglat]
}
};
function transformlat(lng, lat) {
var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
return ret
};
function transformlng(lng, lat) {
var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
return ret
};
function out_of_china(lng, lat) {
return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
};
// 百度坐标系转WGS-84坐标
function bd09_to_wgs84(lng, lat) {
lng = lng * 1;
lat = lat * 1;
var gcj02Coord = bd09_to_gcj02(lng, lat);
var wgs84Coord = gcj02_to_wgs84(gcj02Coord[0], gcj02Coord[1]);
return wgs84Coord;
};
// 百度坐标系(BD-09)转火星坐标系(GCJ-02)
function bd09_to_gcj02(lng, lat) {
var x = lng - 0.0065;
var y = lat - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(y * x_PI);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
return [gg_lng, gg_lat];
};
// 火星坐标系(GCJ-02)转WGS-84
function gcj02_to_wgs84(lng, lat) {
if (out_of_china(lng, lat)) {
return [lng, lat];
}
else {
var dlat = transformlat(lng - 105.0, lat - 35.0);
var dlng = transformlng(lng - 105.0, lat - 35.0);
var radlat = lat / 180.0 * PI;
var magic = Math.sin(radlat);
magic = 1 - ee * magic * magic;
var sqrtmagic = Math.sqrt(magic);
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
var mglat = lat + dlat;
var mglng = lng + dlng;
return [lng * 2 - mglng, lat * 2 - mglat];
}
};
var _FE = 500000;// 东纬偏移FE = 500000米
var _FN = 0;//纬度偏移
//var _a = 6378240;// 长半轴 a西安80为 6378240北京54为 6378245
// var _af = 1 / 298.25722101;// 扁率α西安80为 1 / 298.25722101 北京54为 1 / 298.257223563
//西安80或北京54转WGS-84
function c80_to_wgs84(coor_x, coor_y, _a, _af) {
var a = 0, Alfa = 0;
var a0, a2, a4, a6, a8;
//double radlat, radlon, radl0, l;
var b, t, sb, cb, ita, e1, ee;
var X, CentralData;
var N, c, v;
var Bf0, Bf1, dB, FBf, bf;
var itaf, tf;
var Nf, Mf;
var B, L, dietaB, dietal;
var sinBf, cosBf;
var Coeficient_a0 = new Array(5);
var divNames = "BIMDiv";
if (CurrentScenario == 2) {
divNames = "GISDiv";
}
var Central = $("." + divNames + " #centralLongitude").val();//中央经度
CentralData = Central * Math.PI / 180.0;
a = _a; //长半轴 a
Alfa = _af; //扁率
//东纬偏移FE = 500000米 + 带号 * 1000000
coor_y -= _FE;
/*计算b,e1,e*/
b = a * (1 - Alfa);
var ms_e1 = (a / b) * (a / b) - 1;
var ms_e2 = 1 - (b / a) * (b / a);
e1 = Math.sqrt(ms_e1);//(a / b) * (a / b) - 1
ee = Math.sqrt(ms_e2);//1 - (b / a) * (b / a)
//ES5Math.Sqrt不能输入非数值变量计算ES6加入扩展运算符可以...
//var test = Math.sqrt(0.0067);
//try {
// e1 = Math.Sqrt(...ms_e1);//(a / b) * (a / b) - 1
// ee = Math.Sqrt(...ms_e2);//1 - (b / a) * (b / a)
//} catch (e) {
// console.log(e.msg());
//}
/*计算a0 a2 a4 a6 a8*/
a0a2a4a6a8(a, ee, Coeficient_a0);
a0 = Coeficient_a0[0];
a2 = Coeficient_a0[1];
a4 = Coeficient_a0[2];
a6 = Coeficient_a0[3];
a8 = Coeficient_a0[4];
X = coor_x;
Bf0 = X / a0;
do {
sinBf = Math.sin(Bf0); cosBf = Math.cos(Bf0);
FBf = -sinBf * cosBf * ((a2 - a4 + a6) + (2.0 * a4 - 16.0 * a6 / 3.0) * sinBf * sinBf +
(16.0 / 3.0) * a6 * (sinBf * sinBf * sinBf * sinBf));
Bf1 = (X - FBf) / a0;
dB = Bf1 - Bf0;
Bf0 = Bf1;
} while (Math.abs(dB * 180.0 / Math.PI * 3600.0) > 0.00001);
bf = Bf1;
/*计算c,v,N,M*/
c = a * a / b;
v = Math.sqrt(1 + e1 * e1 * Math.cos(bf) * Math.cos(bf));
Nf = c / v;
Mf = c / (v * v * v);
tf = Math.sin(bf) / Math.cos(bf);
itaf = e1 * Math.cos(bf);
/*计算dietaB,dietal*/
dietaB = tf * coor_y * coor_y / (2 * Mf * Nf) - tf * (5 + 3 * tf * tf + itaf * itaf - 9 * tf * tf * itaf * itaf) * coor_y * coor_y * coor_y * coor_y / (24 * Mf * Nf * Nf * Nf) + (61 + 90 * tf * tf + 45 * tf * tf * tf * tf) * coor_y * coor_y * coor_y * coor_y * coor_y * coor_y / (720 * Mf * Nf * Nf * Nf * Nf * Nf);
dietal = coor_y / (Nf * Math.cos(bf) + (1 + 2 * tf * tf + itaf * itaf) * Math.cos(bf) * coor_y * coor_y / (6 * Nf)) + (5 + 44 * tf * tf + 32 * tf * tf * tf * tf - 2 * itaf * itaf - 16 * itaf * itaf * tf * tf) / (360 * Nf * Nf * Nf * Mf * Mf * Math.cos(bf));
B = bf - dietaB;//0.43685200205184482
L = CentralData + dietal;//1.88716896792179
dmslat = RADTODMS(B) - _FN;
dmslon = RADTODMS(L);
return [dmslat, dmslon]
};
///西安80/北京54/2000转wgs84
///x经度,y,维度
///ZoneWide 3为3度带6为6度带
///Coord 0 西安80 1 北京 54 2 cgcs2000
function GaussPrjInvCalculate(X, Y, Coord) {
var _a, _f;
var PI = 3.14159265353846;
_a = Coord = 0 ? 6378140.0 : Coord == 1 ? 6378245 : 6378137;
_f = Coord = 0 ? 1.0 / 298.257 : Coord == 1 ? 1.0 / 298.3 : 1 / 298.257222101;
var ProjNo, longitude, latitude;
var longitude1, latitude1, longitude0, latitude0, X0, Y0, xval, yval;
var e1, e2, ee, NN, T, C, M, D, R, u, fai, iPI;
iPI = 0.0174532925199433; //3.1415926535898/180.0;
ProjNo = parseInt(X / 1000000); //查找带号
//这里中央子午线经度为
//三度带 L = 带号 * 3
//六度带 L=带号*6-3
longitude0 = ProjNo >= 24 ? ProjNo * 3 : ProjNo * 6 - 3;
longitude0 = longitude0 * iPI; //中央经线
X0 = ProjNo * 1000000 + 500000;
Y0 = 0;
xval = X - X0;
yval = Y - Y0; //带内大地坐标
e2 = 2 * _f - _f * _f;
e1 = (1.0 - Math.sqrt(1 - e2)) / (1.0 + Math.sqrt(1 - e2));
ee = e2 / (1 - e2);
M = yval;
u = M / (_a * (1 - e2 / 4 - 3 * e2 * e2 / 64 - 5 * e2 * e2 * e2 / 256));
fai = u + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * u) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * u)
+ (151 * e1 * e1 * e1 / 96) * Math.sin(6 * u) + (1097 * e1 * e1 * e1 * e1 / 512) * Math.sin(8 * u);
C = ee * Math.cos(fai) * Math.cos(fai);
T = Math.tan(fai) * Math.tan(fai);
NN = _a / Math.sqrt(1.0 - e2 * Math.sin(fai) * Math.sin(fai));
R = _a * (1 - e2) / Math.sqrt((1 - e2 * Math.sin(fai) * Math.sin(fai)) * (1 - e2 * Math.sin(fai) * Math.sin(fai)) * (1 - e2 * Math.sin(fai) * Math.sin(fai)));
D = xval / NN;
//计算经度(Longitude) 纬度(Latitude)
longitude1 = longitude0 + (D - (1 + 2 * T + C) * D * D * D / 6 + (5 - 2 * C + 28 * T - 3 * C * C + 8 * ee + 24 * T * T) * D * D * D * D * D / 120) / Math.cos(fai);
latitude1 = fai - (NN * Math.tan(fai) / R) * (D * D / 2 - (5 + 3 * T + 10 * C - 4 * C * C - 9 * ee) * D * D * D * D / 24 + (61 + 90 * T + 298 * C + 45 * T * T - 256 * ee - 3 * C * C) * D * D * D * D * D * D / 720);
//转换为度 DD
longitude = Math.round((longitude1 / iPI) * 10000000000) / 10000000000.0;
latitude = Math.round((latitude1 / iPI) * 10000000000) / 10000000000.0;
return [longitude, latitude];
}
////十进制双精度角度转度分秒
//function DD2DMS(DecimalDegree) {
// var Degree = (int)DecimalDegree;
// var Minute = (int)((DecimalDegree - Degree) * 60.0);
// var Second = Math.Round((DecimalDegree * 60 - Degree * 60 - Minute) * 60 * 100) / 100.0;
// return Degree + "'" + Minute + "'" + Second;
//}
////度分秒转双精度
//function DMS2DD(iDegree, Minute, Second) {
// var DecimalDegree = Degree + Minute / 60.0 + Second / 60.0 / 60.0;
// return DecimalDegree;
//}
function a0a2a4a6a8(a, e, Coeficient_a0) {
var m0, m2, m4, m6, m8;
m0 = a * (1 - e * e);
m2 = 3 * e * e * m0 / 2;
m4 = 5 * e * e * m2 / 4;
m6 = 7 * e * e * m4 / 6;
m8 = 9 * e * e * m6 / 8;
/*计算a0 a2 a4 a6 a8*/
Coeficient_a0[0] = m0 + m2 / 2 + 3 * m4 / 8 + 5 * m6 / 16 + 35 * m8 / 128;
Coeficient_a0[1] = m2 / 2 + m4 / 2 + 15 * m6 / 32 + 7 * m8 / 16;
Coeficient_a0[2] = m4 / 8 + 3 * m6 / 16 + 7 * m8 / 32;
Coeficient_a0[3] = m6 / 32 + m8 / 16;
Coeficient_a0[4] = m8 / 128;
};
function RADTODMS(radAngle) {
intSignOfRad = 1;
if (radAngle < 0) {
intSignOfRad = -1
}
radAngle = Math.abs(radAngle);
dmsAngle = radAngle * 180 / Math.PI;
dmsAngle = dmsAngle * intSignOfRad;
return dmsAngle;
};
function DMSTORAD(dmsAngle1) {
intSignOfDms = 1;
if (dmsAngle1 < 0) intSignOfDms = -1;
dmsAngle1 = Math.abs(dmsAngle1);
radAngle = dmsAngle1 * Math.PI / 180.0;
radAngle = radAngle * intSignOfDms;
return radAngle;
}
export {
gcj02towgs84,
bd09_to_wgs84,
GaussPrjInvCalculate,
}

View File

@ -0,0 +1,79 @@
import request from '@/utils/request'
const api = {
dic: `/api/app/dictionary`,
}
/**
* 获取基础数据
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getList (params) {
return await request(
{
url: api.dic,
method: 'get',
params: params
}
)
}
export async function getPositionList () {
return await request({
url: api.dic + '/parent?parent=position',
method: 'get',
})
}
export async function getTagsList(){
return await request({
url: api.dic + '/parent?parent=tags',
method: 'get',
})
}
export async function getYearList(){
return await request({
url: api.dic + '/parent?parent=year',
method: 'get',
})
}
export async function getParent (p) {
return await request({
url: api.dic + `/parent?parent=${p}`,
method: 'get',
})
}
/**
* 新增基础数据
* @param name 名称
* @returns {Promise<AxiosResponse<T>>}
*/
export async function add (formData) {
return await request(
{
url: api.dic,
method: 'post',
data: formData
}
)
}
/**
* 编辑基础数据
* @param name 名称
*/
export async function edit (formData) {
const url = `${api.dic}/${formData.id}`
return await request({ url: url, method: 'put', data: formData })
}
/**
* 删除基础数据
* @returns {Promise<AxiosResponse<T>>}
*/
export async function deleted (id) {
return await request({ url: `${api.dic}/${id}`, method: 'delete' })
}
export async function getTree () {
return await request({ url: `${api.dic}/tree`, method: 'get' })
}

View File

@ -0,0 +1,73 @@
import request from '@/utils/request'
const api = {
version:'/api/app/document-version',
documentHandle: '/api/app/document-handle'
}
/**
* 版本详情
*/
export async function getDocVer(id){
return await request(
{
url: `${api.version}/${id}`,
method: 'get',
}
)
}
/**
* 上传文件
* @returns {Promise<AxiosResponse<T>>}
*/
export async function uploadDocumentFile (docId,formData) {
return await request(
{
url: `${api.documentHandle}/upload-file/?docId=${docId}`,
method: 'post',
data: formData
}
)
}
/**
* 新版本模型上传
*/
export async function uploadVersion (param) {
return await request(
{
url: api.version,
method: 'post',
data: param
}
)
}
/**
* 查询版本信息
* @param {*} parameter
* @returns
*/
export async function getDocVerList(params){
return await request({
url: api.version,
method: 'get',
params: params
})
}
///删除模型信息
export function DocVerDeleted(id) {
return request({
url: `${api.version}/${id}`,
method: 'delete',
})
}
//设置版本
export function SetDocVerCurrent(id){
return request({
url: `${api.version}/${id}/set-current`,
method: 'post',
})
}

View File

@ -0,0 +1,746 @@
import qs from 'qs'
import request from '@/utils/request'
import { transformAbpListQuery, buildPagingQueryResult } from '@/utils/abpParamsTransform'
import requestModel from '@/utils/requestModel'
import store from '@/store'
import cloneDeep from 'lodash.clonedeep'
const api = {
// 文档
doc: `/api/app/document`,
children: `/api/app/document/children`,
//文档日志
docLog: `/api/app/document-log`,
docMerge: `/api/app/document-merge`,//合模
documentHandle: '/api/app/document-handle',
roomSpace: `/api/app/model/GetRoomStructureData`,
modelSpace: `api/app/model/GetSpatialStructureData`,
modelSpaceData:`/api/app/model/GetModelSpaceFeatureIdByPid`,
modelProperty: `api/app/model/GetSpatialStructurePropertyData`
}
/**移动文档文件 */
export function moveDoc({ moveId, documentIds }) {
return request({
url: `${api.doc}/move/${moveId}`,
method: 'put',
data: documentIds
})
}
/**公开文档文件 */
export function setPublic({ isPublic, documentIds }) {
return request({
url: `${api.doc}/public?isPublic=${isPublic}`,
method: 'put',
data: documentIds
})
}
/**删除文档 */
export function delDoc(id) {
return request({
url: `${api.doc}/${id}`,
method: 'delete',
})
}
/**
* 删除多个文档
*/
export function mdeleteDoc(ids) {
return request({
url: `${api.doc}/mdelete`,
method: 'post',
data: ids
})
}
/**
* 查询一个对象
*/
export function getDocById(id) {
return request({
url: `${api.doc}/` + id,
method: 'get'
})
}
/**
* 查询多个
*/
export function getArray(parameter) {
return request({
url: `${api.doc}/array`,
method: 'get',
params: { ids: parameter },
paramsSerializer: function (parameter) {
return qs.stringify(parameter, { indices: false })
}
})
}
/**查询文档列表 */
export function getDocList(parameter) {
return request({
url: api.doc,
method: 'get',
params: parameter,
paramsSerializer: params => {
return qs.stringify(params, { indices: false })
}
})
}
/**查询文档列表 */
export function getDocListAll(parameter) {
return request({
url: `${api.doc}/children`,
method: 'get',
params: parameter,
paramsSerializer: params => {
return qs.stringify(params, { indices: false })
}
})
}
/**
* 上传文件
* @returns {Promise<AxiosResponse<T>>}
*/
export async function uploadDocumentFiles(projectId, parentId, formData) {
return await request(
{
url: `${api.documentHandle}/${parentId}/upload-files?projectId=${projectId}`,
method: 'post',
data: formData
}
)
}
/**
* 下载文件
* @returns {Promise<AxiosResponse<T>>}
*/
export async function downloadFile(documentId) {
return await request(
{
url: `${api.documentHandle}/${documentId}/download-files`,
method: 'post',
responseType: 'arraybuffer'
}
)
}
/**
* 获取目录用户
* @param {*} documentId
* @returns
*/
export function getDocUsers(documentId) {
return request({
url: `${api.doc}/${documentId}/users`,
method: 'get',
})
}
/**根据Id获取文档信息操作记录 */
export function getDocLog(id) {
return request({
url: `${api.docLog}/by-docid/${id}`,
method: 'get',
})
}
/**新增文档记录*/
export function createLog(docId, logType) {
return request({
url: `${api.docLog}/log/${docId}?logType=${logType}`,
method: 'post',
})
}
/**根据Id获取Word Html */
export function getWordHtml(fileName, page) {
return request({
url: `${api.doc}/word-html?blobName=${fileName}&page=${page}`,
method: 'get',
})
}
/**根据Id获取Excel Html */
export function getExcelHtml(fileName) {
return request({
url: `${api.doc}/excel-html?fileName=${fileName}`,
method: 'get'
})
}
/**
* 获取视频地址
*/
export function getVideoPath(id) {
return request({
url: `${api.doc}/${id}/video-path`,
method: 'get'
})
}
/**移动文件 */
export function moveFile(id, parameter) {
return request({
url: `${api.doc}/move/${id}`,
method: 'put',
data: parameter
})
}
/**
* 获取文档合模
* @param {*} documentId
* @returns
*/
export function getDocMerges(documentId) {
return request({
url: `${api.doc}/${documentId}/merge`,
method: 'get',
})
}
/**获取模型统计和资料统计的数量*/
export function getNumOfEachFormat(id) {
return request({
url: `${api.doc}/${id}/num-of-each-format`,
method: 'get'
})
}
export function breakpointContinuation(params) {
return request({
url: `${api.documentHandle}/breakpoint-continuation/${params.parentId}`,
method: 'post',
data: params
})
}
export function merge(params) {
return request({
url: `${api.documentHandle}/${params.id}/merge`,
method: 'post',
params: params
})
}
/**
* 获取文件大小
*/
export function getDownloadFileSize(fileName) {
return request({
url: `${api.documentHandle}/download-file-size`,
method: 'get',
params: { fileName: fileName }
})
}
export function downloadFileSlice(params) {
return request({
url: `${api.documentHandle}/download-files`,
method: 'post',
params: params,
responseType: 'arraybuffer',
})
}
export function splitUploadFile(params) {
return requestModel({
url: `/api/app/model/SplitUploadFile`,
method: 'post',
data: params,
headers: { 'Accept': 'application/octet-stream' }
})
}
/**
* BIM文件上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadModelFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = cloneDeep(store.state.modelInput)
params.ConfigJson ? input.ConfigJson = { ...input.ConfigJson, ...params.ConfigJson } : ''
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/model/SplitUploadFile`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'application/octet-stream' }
})
}
/**
* GLB/GLTF文件上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadGLBFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = cloneDeep(store.state.modelInput)
params.ConfigJson ? input.ConfigJson = { ...input.ConfigJson, ...params.ConfigJson } : ''
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/model/Upload3DModelsStandardFiles`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'application/octet-stream' }
})
}
/**
* PAK文件上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadPakFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
formData.append('LightweightName', params.input.LightweightName ? params.input.LightweightName : '')
formData.append('CallBackUrl', params.CallBackUrl)
// let input = cloneDeep(store.state.modelInput)
// params.ConfigJson ? input.ConfigJson = { ...input.ConfigJson, ...params.ConfigJson } : ''
// input = { ...input, ...params.input }
// formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/Pak/PakSplitUploadFile`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'application/octet-stream' }
})
}
/**
* CAD文件上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadCADFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = {}
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/cad-drawing/SplitUploadFile`,
method: 'post',
data: formData
})
}
/**
* Osgb文件上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadOsgbFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name) //此处name值一直保持一致因此不能用params.fileName
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = store.state.gisInput
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/gismodel/OSGBSplitUploadFile`,
method: 'post',
data: formData
})
}
/**
* Osgb文件上传接口
* file 要上传的文件
* chunk 分段索引
* modelname 接口返回的模型名称
* blockSize 分块后每块的大小
* UploadSend 方法执行中的回调返回执行进度
* UploadOver 方法执行完成后的回调
*/
export function uploadOsgbSplitFile(file, chunk, modelname, blockSize, UploadSend, UploadOver) {
var chunkCont = Math.ceil(file.size / blockSize)
var nextSize = Math.min((chunk + 1) * blockSize, file.size);//读取到结束位置
var fileData = file.slice(chunk * blockSize, nextSize);//截取 部分文件 块
var filename = encodeURIComponent(file.name);
const formData = new FormData()
formData.append('file', fileData, filename);//将 部分文件 塞入FormData
formData.append("chunk", chunk);
formData.append("chunks", chunkCont);
var index1 = filename.lastIndexOf(".");
var index2 = filename.length;
var postf = filename.substring(index1 + 1, index2).toLowerCase();//后缀名
//模型文件上传接口传递的参数
var params = {
Name: file.name,
LightweightName: modelname,
Priority: '203',
}
let input = store.state.gisInput
input = { ...input, ...params }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/gismodel/OSGBSplitUploadFile`,
method: 'post',
data: formData
}).then((retdata) => {
if (chunk + 1 == chunkCont) {//如果上传完成,则跳出继续上传
if (UploadOver) {
UploadOver(retdata, file.name);
}
}
else {
if (UploadSend) {
var sendint = (nextSize / file.size * 100).toFixed(2)
UploadSend(parseFloat(sendint))
}
uploadOsgbSplitFile(file, ++chunk, retdata.datas.lightweightName, blockSize, UploadSend, UploadOver);//递归调用
}
})
}
/**
* shp文件上传接口
*/
export function uploadShpFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = store.state.gisInput
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/gismodel/ShpSplitUploadFile`,
method: 'post',
data: formData
})
}
/**
* 点云文件上传
*/
export function uploadPointCloudFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = store.state.gisInput
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/gismodel/PointCloudSplitUploadFile`,
method: 'post',
data: formData
})
}
/**
* tif上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadTifFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = {}
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/gismodel/TifSplitUploadFile`,
method: 'post',
data: formData
})
}
/**
* BIM下载
*/
export function downloadModel(params) {
return requestModel({
url: `/api/app/model/model-SourceFileurl?LightweightName=${params}`,
method: 'get',
// responseType: 'blob',
})
}
/**
* cad下载
*/
export function downloadCAD(params) {
return requestModel({
url: `/api/app/model/model-SourceFileurl?LightweightName=${params}`,
method: 'get',
responseType: 'blob',
})
}
/**
* Osgb下载, gis模型文件下载
*/
export function downloadOsgb(params) {
return requestModel({
url: `/api/app/gismodel/OSGB-SourceFileurl?LightweightName=${params}`,
method: 'get',
// responseType: 'blob',
})
}
/**
* 上传document
*/
export function createDocument(params) {
return request({
url: `${api.doc}`,
method: 'post',
data: params
})
}
/**
* 坐标校正
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadCoordinate(params) {
return requestModel({
url: `/api/app/model/coordinate-correction-service?LightweightName=${params.LightweightName}&lon=${params.lon}&lat=${params.lat}&height=${params.height}`,
method: 'post',
headers: { 'Content-Type': 'application/json;charset=utf8', 'Token': store.state.bim.defaults.secretkey }
})
}
/**存储默认视点 */
export function setSceneInformation(id, documentIds) {
return request({
url: `${api.doc}/${id}`,
method: 'put',
data: documentIds
})
}
/**封面设置 */
export function modelProjectCover(id, BlobName) {
return request({
url: `${api.doc}/${id}/blob-name?BlobName=${BlobName}`,
method: 'put',
})
}
/**存储默认视点 */
export function setModelDefaultPerspective(id, documentIds) {
return request({
url: `${api.doc}/${id}/camera?Camera=${documentIds}`,
method: 'put',
data: documentIds
})
}
/**存储模型设置等配置 */
export function setModelConfig(id, documentIds) {
return request({
url: `${api.doc}/${id}/model-config?ModelConfig=${documentIds}`,
method: 'put',
data: documentIds
})
}
/**存储场景设置配置 */
export function setSceneConfig(id, documentIds) {
return request({
url: `${api.doc}/${id}/scene-config?SceneConfig=${documentIds}`,
method: 'put',
data: documentIds
})
}
/**存储模型位置 */
export function setMatrix(id, documentIds) {
return request({
url: `${api.doc}/${id}/matrix?Matrix=${documentIds}`,
method: 'put',
data: documentIds
})
}
/**
* 模型多视图获取
*/
export function getModel3DViews(params) {
return requestModel({
url: `/api/app/model/model3DViews?LightweightName=${params.LightweightName}`,
method: 'get',
})
}
/**
* 开启碰撞检测
* @returns {Promise<AxiosResponse<T>>}
*/
export function startInitiateCollision(params) {
const formData = new FormData();
formData.append("LightweightNameA", params.LightweightNameA);
formData.append("LightweightNameB", params.LightweightNameB);
return requestModel({
url: `/api/app/Collision/InitiateCollision`,
method: 'post',
headers: { 'Content-Type': 'application/json;charset=utf8', 'Token': store.state.bim.defaults.secretkey },
data: formData
})
}
/**
* 获取碰撞检测数据
*/
export function getCollisionInfo(CollisionId) {
return requestModel({
url: `/api/app/Collision/GetCollisionInfo?CollisionId=${CollisionId}`,
method: 'get',
headers: { 'Content-Type': 'application/json;charset=utf8', 'Token': store.state.bim.defaults.secretkey },
})
}
/**
* 下载碰撞检测数据
*/
export function downloadCollisionInfo(CollisionId) {
return requestModel({
url: `/api/app/Collision/DownloadCollisionResultFile?CollisionId=${CollisionId}`,
method: 'get',
headers: { 'Content-Type': 'application/json;charset=utf8', 'Token': store.state.bim.defaults.secretkey },
})
}
/**
* 房间结构树
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getRoomStructureTree(params) {
return await requestModel(
{
url: api.roomSpace,
method: 'get',
params: params
}
)
}
/**
* 空间结构树
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelSpaceTree (params) {
return await requestModel(
{
url: api.modelSpace,
method: 'get',
params: params
}
)
}
/**
* 空间结构树
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelSpaceTreeIdList (params) {
return await requestModel(
{
url: api.modelSpaceData,
method: 'get',
params: params
}
)
}
/**
* 房间结构树
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelPropertySpace(params) {
return await requestModel(
{
url: api.modelProperty,
method: 'get',
params: params
}
)
}
/**
* 坐标转换
* @returns {Promise<AxiosResponse<T>>}
*/
export function positionChange(params) {
// const formData = new FormData();
// formData.append("LightweightNameA", params.LightweightNameA);
// formData.append("LightweightNameB", params.LightweightNameB);
return requestModel({
url: `/api/app/CoordinateTransform/SpatialReferenceToWgs84`,
method: 'post',
headers: { 'Content-Type': 'application/json;charset=utf8', 'Token': store.state.bim.defaults.secretkey},
data: params
})
}
/**
* lod编辑器文件上传接口
* @returns {Promise<AxiosResponse<T>>}
*/
export function uploadLodModelFile(params) {
const formData = new FormData()
formData.append('file', params.file, params.input.Name)
formData.append('chunk', params.chunk)
formData.append('chunks', params.chunks)
let input = cloneDeep(store.state.modelInput)
params.ConfigJson ? input.ConfigJson = { ...input.ConfigJson, ...params.ConfigJson } : ''
input = { ...input, ...params.input }
formData.append('input', JSON.stringify(input))
return requestModel({
url: `/api/app/model/LodModelUpload`,
method: 'post',
data: formData,
headers: { 'Content-Type': 'application/octet-stream' }
})
}
/**
* 获取lod模型信息
*/
export function getLodLightweightName(params) {
return requestModel({
url: `/api/app/model/GetLodModelNameList?LightweightName=${params}`,
method: 'get',
})
}

View File

@ -0,0 +1,53 @@
import request from '@/utils/request'
const modelApi = {
SetModelClosingData: `/api/app/combine`,
SharedRoaming: `/api/app/sharerecordlink/getroamingdata`,
}
/**
* 合模数据保存
* @returns {Promise<AxiosResponse<T>>}
*/
export async function setModelClosingData (params) {
return await request(
{
url: modelApi.SetModelClosingData,
method: 'post',
data: params
}
)
}
/**
* 合模数据查询
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelClosingData (id) {
return await request(
{
url: `${modelApi.SetModelClosingData}/${id}`,
method: 'get',
}
)
}
/**
* 分享漫游
* @returns {Promise<AxiosResponse<T>>}
*/
export async function sharedRoaming (params) {
return await request(
{
url: modelApi.SharedRoaming,
method: 'get',
params: params
}
)
}

View File

@ -0,0 +1,93 @@
import request from '@/utils/request'
import store from '@/store'
const api = {
file: `/api/app/file`,
download:`/api/file-management/files`,
downloadtype:`/api/file-management/files/GetModel`
// preview: `/api/file-management/files`
}
/**
* 上传文件-普通上传
* @param {*} parameter
* @returns
*/
export function uploadFile (parameter) {
return request({
url: api.file,
method: 'post',
data: parameter
})
}
/**
* 断点续传自动合并
*/
export function uploadBreakpoint(params){
const formData = new FormData()
formData.append('file', params.file, params.fileName)
return request({
url:`${api.file}/breakpoint-continuation?fileName=${params.fileName}&hashName=${params.hashName}&chunks=${params.chunks}&chunk=${params.chunk}`,
method:'post',
data:formData
})
}
/**
* 断点续传自动合并
*/
export function getBlobName(params){
return request({
url:`/api/app/uploads/${params}`,
method:'post',
})
}
// ${apiurl}/uploads/${blobName}
/**
* 下载文件
*/
export function downloadFile(blobName){
return request({
url: `${api.download}/${blobName}`,
method: 'get'
})
}
/**
* 查看文件
* @returns
*/
export function getFileByBlobName (blobName) {
return `${store.state.baseUrl}${api.file}/?blobName=${blobName}`
}
export function getDocumentById (id) {
return `${store.state.baseUrl}${api.fileManagement}/?blobName=${id}`
}
/**
* 下载文件
*/
export function downloadFiletype(blobName, filetype){
window.open(`${store.state.baseUrl}${api.downloadtype}/${blobName}?filetype=${filetype}`)
// return request({
// url: `${api.downloadtype}/${blobName}?filetype=${filetype}`,
// method: 'get'
// })
}
// /**
// * 文件浏览
// * @param {*} blobName
// * @returns
// */
// export function previewFile (blobName) {
// return request({
// url: `${api.preview}/` + blobName,
// method: 'get',
// })
// }

View File

@ -0,0 +1,25 @@
import request from '@/utils/request'
const api = {
label:'/api/app/label'
}
export async function saveLabel(params) {
return await request({
url: `${api.label}`,
method: 'post',
data: params
})
}
export async function deleteLabel(id) {
return await request({
url: `${api.label}/${id}`,
method: 'delete'
})
}
export async function getListLabel(params) {
return await request({
url: `${api.label}`,
method: 'get',
params: params
})
}

View File

@ -0,0 +1,123 @@
import qs from 'qs'
import request from '@/utils/request'
const userApi = {
Login: `/connect/token`,
Logout: `/api/account/logout`,
UserInfo: `/api/identity/my-profile`,
SignUp: `/api/app/user-register/register`
}
/**
* 注册账号
*/
export function logon(parameter) {
return request({
url: userApi.SignUp,
method: 'post',
data: parameter
})
}
/**
* 密码登录
* parameter: {
* username: '',
* password: '',
* remember_me: true,
* captcha: '12345'
* }
* @param parameter
* @returns {*}
*/
export function login(parameter) {
const formData = qs.stringify(Object.assign({
grant_type: process.env.VUE_APP_GRANT_TYPE,
scope: process.env.VUE_APP_SCOPE,
client_id: process.env.VUE_APP_CLIENT_ID,
client_secret: process.env.VUE_APP_CLIENT_SECRET
}, parameter))
return request({
url: userApi.Login,
method: 'post',
data: formData
})
}
/**
* 手机验证码登录
*/
export function loginPhone(parameter) {
const formData = qs.stringify(Object.assign({
grant_type: process.env.VUE_APP_GRANT_TYPE_Phone,
scope: process.env.VUE_APP_SCOPE_Phone,
client_id: process.env.VUE_APP_CLIENT_ID_Phone,
client_secret: process.env.VUE_APP_CLIENT_SECRET_Phone
}, parameter))
return request({
url: userApi.Login,
method: 'post',
data: formData
})
}
export function getInfo() {
return request({
url: userApi.UserInfo,
method: 'get',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function changePassword(formData) {
return request({
url: `/api/identity/my-profile/change-password`,
// url: `/api/app/user-profile/change-password`,
method: 'post',
data: formData
})
}
export function changePasswordNew(formData) {
return request({
url: `/api/app/user-profile/change-password`,
// url: `/api/app/user-profile/change-password`,
method: 'post',
data: formData
})
}
export function logout() {
return request({
url: userApi.Logout,
method: 'get',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
}
export function upInfo(formData) {
return request({
url: userApi.UserInfo,
method: 'put',
data: formData
})
}
//获取验证码
export function sendVerifyCode(phone, isLogin) {
return request({
url: `/api/app/sms/send-verify-code?phoneNumber=${phone}&isLogin=${isLogin}`,
method: 'post',
})
}
//修改手机号
export function changePhoneNumber(params) {
return request({
url: `/api/app/user-profile/phone-number`,
method: 'put',
params
})
}

View File

@ -0,0 +1,18 @@
import request from '@/utils/request'
/**写日志 */
export async function createLog(param){
return await request({
url:`/api/app/logs`,
method:'post',
data:param
})
}
//获取日志列表
export function GetLogsList(parameter) {
return request({
url: `/api/app/logs`,
method: 'get',
params: parameter
})
}

View File

@ -0,0 +1,210 @@
import request from '@/utils/request'
const api = {
modelProperty:`/api/app/model-property`,
modelTree: `/api/app/model-tree`,
modelType: `/api/app/model-type`,
modelDrawing: `/api/app/model-drawing`,
modelVersion: `/api/app/document-ver-than`,
modelSpace: `/api/app/model-space`,
modelPropertySpace: `/api/app/model-property-space`,
}
/**
* 获取构件属性
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getFeatureProperty (params) {
return await request(
{
url: `${api.modelProperty}/getproperty`,
method: 'get',
params: params
}
)
}
/**
* 专业结构树
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelTypeTree (params) {
return await request(
{
url: `${api.modelType}/gettypechild`,
method: 'get',
params: params
}
)
}
/**
* 获取构件id数组
*/
export async function getModelTypeTreeIdList (params) {
return await request(
{
url: `${api.modelType}/gettypechildextid`,
method: 'get',
params: params
}
)
}
export function getTreeList (parameter) {
return request({
url: `${api.modelTree}/tree`,
method: 'get',
params: parameter
})
}
export function getChildrenTreeList (parameter) {
return request({
url: `${api.modelTree}/children-tree`,
method: 'get',
params: parameter
})
}
export function getPartTreeList (parameter,data) {
return request({
url: `${api.modelTree}/get-part-tree`,
method: 'post',
params: parameter,
data: data
})
}
/**
* 获取楼层结构树
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelFloorTree (params) {
return await request(
{
url: `${api.modelTree}/gettreechild`,
method: 'get',
params: params,
}
)
}
/**
* 获取楼层结构下的所有构件id
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getModelFloorTreeId (params) {
return await request(
{
url: `${api.modelTree}/gettreechildextid`,
method: 'get',
params: params,
}
)
}
// export function getTypeList (parameter) {
// return request({
// url: `${api.modelType}/tree`,
// method: 'get',
// params: parameter
// })
// }
// export function getChildrenTypeList (parameter) {
// return request({
// url: `${api.modelType}/children-tree`,
// method: 'get',
// params: parameter
// })
// }
export function getDrawingType (parameter) {
return request({
url: `${api.modelDrawing}/type`,
method: 'get',
params: parameter
})
}
export function getDrawingData (parameter) {
return request({
url: `${api.modelDrawing}/drawing`,
method: 'get',
params: parameter
})
}
export function getDrawingGuid (parameter) {
return request({
url: `${api.modelDrawing}/drawing-rvt-id`,
method: 'get',
params: parameter
})
}
export function getModelVersionHave (parameter) {
return request({
url: `${api.modelVersion}/entity`,
method: 'get',
params: parameter
})
}
export function setModelVersion (parameter) {
return request({
url: `${api.modelVersion}`,
method: 'post',
data: parameter
})
}
export function getModelVersion (id) {
return request({
url: `${api.modelVersion}/${id}`,
method: 'get',
})
}
export function getModelVersionData (id,parameter) {
return request({
url: `${api.modelVersion}/${id}/start-than`,
method: 'post',
params: parameter,
// data: {glid: parameter.glid}
})
}
export function setModelVersionData (id,parameter,data) {
return request({
url: `${api.modelVersion}/${id}/metadata-save`,
method: 'post',
params:parameter,
data: data
})
}
/**
* 获取构件id数组
*/
export async function getModelSpaceTreeIdList (params) {
return await request(
{
url: `${api.modelSpace}/type-child-id-list/${params.glId}`,
method: 'get',
params: params
}
)
}
/**
* 获取构件id数组
*/
export async function getModelPropertySpace (params) {
return await request(
{
url: `${api.modelPropertySpace}/getproperty`,
method: 'get',
params: params
}
)
}

View File

@ -0,0 +1,83 @@
import request from '@/utils/request'
/**
* 保存
*/
export function savePostil(params) {
return request({
url: `/api/app/postil`,
method: 'post',
data: params
})
}
/**
* 获取分页
*/
export function getPostilList(parameter) {
return request({
url: `/api/app/postil`,
method: 'get',
params: parameter
})
}
/**
* 分页-发起
*/
export function getPostilLaunch(parameter) {
return request({
url: `/api/app/postil/launch`,
method: 'get',
params: parameter
})
}
/**
* 分页-处理
*/
export function getPostilHandle(parameter) {
return request({
url: `/api/app/postil/handle`,
method: 'get',
params: parameter
})
}
/**
* 修改状态
*/
export function getPostilStatus(param) {
return request({
url: `/api/app/postil/${param.id}/status`,
method: 'put',
params: param
})
}
/**
* 保存处理结果
*/
export function saveTask(postilId, params) {
return request({
url: `/api/app/postil/task/${postilId}`,
method: 'post',
data: params
})
}
/**
* 删除批注
*/
export function deletePostil(id) {
return request({
url: `/api/app/postil/${id}`,
method: 'delete',
})
}
/**
* 获取详情
*/
export function getPositil(id) {
return request({
url: `/api/app/postil/${id}`,
method: 'get'
})
}

View File

@ -0,0 +1,192 @@
import request from '@/utils/request'
const api = {
base: `/api/app/project`,
folder:'/api/app/project-folder',
folderArry:'/api/app/project-folder/arry',
folderUser:'/api/app/project-folder-user',
projectUserPermission:'/api/app/project/project-user-permission',
}
/**
* 保存项目信息
* @param {*} parameter
* @returns
*/
export function saveProject (parameter) {
const url = parameter.id ? `${api.base}/${parameter.id}` : api.base
return request({
url: url,
method: parameter.id ? 'put' : 'post',
data: parameter
})
}
/**
* 判断是否可以删除
*/
export function checkDelete(id){
return request({
url:`/api/app/project/${id}/check-delete`,
method:'post'
})
}
/**
* 删除项目
* @param {*} id
* @returns
*/
export function delProject (id) {
return request({
url: `${api.base}/${id}`,
method: 'delete',
})
}
/** id
* @param {string} id 项目id
* @returns
*/
export function getProject (id) {
return request({
url: `${api.base}/` + id,
method: 'get'
})
}
/** id
* @param {string} id 项目id
* @returns
*/
export function getProjectUserPermission (id) {
return request({
url: `${api.projectUserPermission}/` + id,
method: 'get'
})
}
/**
* 获取项目列表
* @param {*} keyword
* @param {*} skipCount
* @param {*} resCount
* @param {bool} isMain true:项目false:子项目
* @param {*} parentId 可选 父级id
* @returns
*/
export function getProjectList (parameter) {
return request({
url: api.base,
method: 'get',
params: parameter
})
}
/**
* 项目展板统计数据
* @returns
*/
export function getStatsCount(){
return request({
url:`/api/app/project/stats-count`,
method:'get'
})
}
/**
* 判断人员是否已经参与项目
* @param {人员Id} id
* @returns
*/
export function hasJoin(id){
return request({
url:`/api/app/project/${id}/is-join`,
method:'post'
})
}
/**
* 获取项目人员列表
*/
export function getProjectUsers(params){
return request({
url:`${api.base}/project-users`,
method:'get',
params: params
})
}
/**
* 获取项目人员列表
*/
export function getProjectFolderUsers(params){
return request({
url:`${api.folderUser}/project-user-list`,
method:'get',
params: params
})
}
/******以下是项目目录*********/
export function getFolder(id){
return request({
url:`${api.folder}/${id}`,
method:'get'
})
}
export function getFolderTrees(projectId){
return request({
url:`${api.folder}/trees/${projectId}`,
method:'get'
})
}
export function getFolderMyTrees(projectId){
return request({
url:`${api.folder}/my-trees/${projectId}`,
method:'get'
})
}
export function addFolder(parameter){
return request({
url:`${api.folder}`,
method:'post',
data: parameter
})
}
export function folderArry(pid,parameter){
return request({
url:`${api.folderArry}/?ProjectID=${pid}`,
method:'post',
data: parameter
})
}
export function addFolderArr(parameter,id){
return request({
url:`${api.folder}/arry?ProjectID=${id}`,
method:'post',
data: parameter
})
}
export function delFolder(id) {
return request({
url: `${api.folder}/${id}`,
method: 'delete',
})
}
export function updateFolder(id,parameter){
return request({
url:`${api.folder}/${id}`,
method:'put',
data: parameter
})
}

View File

@ -0,0 +1,66 @@
export function colorHextoRGB(value) {
let color = value.toLowerCase();
//判断第一个字符是否是#
if (color[0] !== '#') {
color = '#' + color;
value = color.toUpperCase();
}
//判断剩余的字符是否是十六进制
for (let i = 1; i < color.length; i += 1) {
let curChar = color[i];
//console.log(curChar);
if (isInHex(curChar) == false) {
color = color.replace(curChar, '');
value = color.toUpperCase();
}
}
// 如果只有三位的值,需变成六位,如:#fff => #ffffff
if (color.length === 4) {
var colorNew = "#";
for (let i = 1; i < 4; i += 1) {
colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1));
}
color = colorNew;
}
// 处理六位的颜色值转为RGB
var colorChange = [];
for (let i = 1; i < 7; i += 2) {
colorChange.push(parseInt("0x" + color.slice(i, i + 2)));
}
let rgb = "rgba(" + colorChange.join(",") + ",1)";
return rgb;
};
function isInHex(c) {
let hexArr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
for (let i = 0; i < hexArr.length; i += 1) {
if (hexArr[i] === c) {
return true;
}
}
return false;
}
export function genlabID(length) { //随机生成6位数
return Number(Math.random().toString().substr(3, length));
}
export function dateFormat(time) {
var date = new Date(time);
var year = date.getFullYear();
/* 00
* 使用三元表达式在小于10的前面加0以达到格式统一 09:11:05
* */
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
// 拼接
return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}
export function _isMobile() {
let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
return flag;
}

View File

@ -0,0 +1,71 @@
import request from '@/utils/request'
const api = {
roaming: `/api/app/roaming`,
viewPort: `/api/app/roaming/view-port`,
}
/**
* 存储漫游轨迹
* @returns {Promise<AxiosResponse<T>>}
*/
export async function setRoamingTrack (params) {
return await request(
{
url: api.roaming,
method: 'post',
data: params
}
)
}
/**
* 存自定义储漫游
* @returns {Promise<AxiosResponse<T>>}
*/
export async function setViewPort (params) {
return await request(
{
url: api.viewPort,
method: 'post',
data: params
}
)
}
/**
* 获取漫游轨迹
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getRoamingTrack (params) {
return await request(
{
url: api.roaming,
method: 'get',
params: params
}
)
}
/**
* 修改漫游名称和备注
*/
export async function updateRoamingTrack(params){
return await request(
{
url: `${api.roaming}/${params.id}`,
method: 'put',
data: params
}
)
}
/**
* 删除漫游轨迹
* @returns {Promise<AxiosResponse<T>>}
*/
export async function deleteRoamingTrack (id) {
return await request(
{
url: `${api.roaming}/${id}`,
method: 'delete',
}
)
}

View File

@ -0,0 +1,101 @@
import request from '@/utils/request'
const api = {
share: `/api/app/share-record`,
SharedCode: `/api/app/share-record/getallasync`,
}
/**
* 分享列表
* @param {*} parameter
* @returns
*/
export async function getList(params) {
return await request(
{
url: api.share,
method: 'get',
params: params
}
)
}
export function saveShare(parameter) {
let url = api.share
if (parameter.id) url = `${url}/${parameter.id}`
return request({
url: url,
method: parameter.id ? 'put' : 'post',
data: parameter
})
}
export function deleted(id) {
return request({
url: `${api.share}/${id}`,
method: 'delete',
})
}
/**
* 获取分享对象
*/
export function getShare(id) {
return request({
url: `/api/app/share-record/${id}`,
method: 'get'
})
}
/**
* 累加分享次数
*/
export function addPvm(id) {
return request({
url: `/api/app/share-record/${id}/pvm`,
method: 'post'
})
}
//---------------------------------
/**
* 分享保存
* @returns {Promise<AxiosResponse<T>>}
*/
export async function setSharedUrlSave(params) {
return await request(
{
url: api.share,
method: 'post',
data: params
}
)
}
export async function ifIsAuthCode(id) {
return await request({
url: `${api.share}/${id}` + '/is-auth',
method: 'post'
})
}
/**
* 分享信息获取
* @returns {Promise<AxiosResponse<T>>}
*/
export async function getSharedCode(params) {
return await request(
{
url: api.share + `/${params.id}`,
method: 'get',
params: params
}
)
}
/**
* 验证码验证
* @returns {Promise<AxiosResponse<T>>}
*/
export async function checkSharedCode(params) {
return await request(
{
url: api.share + `/${params.id}/auth-verify`,
method: 'post',
params: params
}
)
}

View File

@ -0,0 +1,274 @@
import request from '@/utils/request'
import store from '@/store'
import { transformAbpListQuery, buildPagingQueryResult } from '@/utils/abpParamsTransform'
const api = {
user: `/api/identity/users`,
systemuser: `/api/app/system-user`,
role: `/api/identity/roles`,
systemrole: `/api/app/system-role`,
permission: `/api/permission-management/permissions`,
organizationUnit: `/api/app/organization-unit`,
reset: `/api/app/user-profile`,
isInitPwd:`/api/app/user-profile/is-init-pwd`,
setting: `/api/app/system-setting`,
roleOrgJoin: `/api/app/role-org-join`,
}
/**
* 用户列表
* @param {*} parameter
* @returns
*/
export function getUserList (orgId, parameter) {
return request({
url: orgId ? `${api.organizationUnit}/users/${orgId}` : api.user,
method: 'get',
params: parameter
})
}
/**
* 用户列表
* @param {*} parameter
* @returns
*/
export function getSystemAppUserList (orgId, parameter) {
return request({
url: orgId ? `${api.organizationUnit}/users/${orgId}` : api.systemuser,
method: 'get',
params: parameter
})
}
export function getSystemAppUserPageList (orgId, parameter) {
return request({
url: orgId ? `${api.organizationUnit}/users-list/${orgId}` : `${api.systemuser}/users-list`,
method: 'get',
params: parameter
})
}
export function getUser (parameter) {
return request({
url: `${api.user}`,
method: 'get',
params: parameter
})
}
export function getUserInfo (id) {
return request({
url: `${api.user}/${id}`,
method: 'get',
})
}
export function getAllUsers(){
return request({
url:'/api/app/user-profile',
method:'get'
})
}
export function getRolesByUserId (userId) {
return request({
url: `${api.user}/${userId}/roles`,
method: 'get',
})
}
export function resetPassword (parameter) {
const url = `${api.reset}/${parameter.id}/reset-password?password=` + parameter.password
return request({
url: url,
method: 'post',
data: null
})
}
export function roleOrgJoinAdd (parameter) {
return request({
url: `${api.roleOrgJoin}/arry`,
method: 'post',
data: parameter
})
}
export function getRoleOrgJoinList (parameter) {
return request({
url: `${api.roleOrgJoin}/list`,
method: 'get',
params:parameter
})
}
export function saveUser (parameter) {
let url = api.user
if (parameter.id) url = `${url}/${parameter.id}`
return request({
url: url,
method: parameter.id ? 'put' : 'post',
data: parameter
})
}
export function delUser (id) {
return request({
url: `${api.user}/${id}`,
method: 'delete',
})
}
export function getRoleList (orgId, parameter) {
const queryParams = transformAbpListQuery(parameter)
return request({
url: orgId ? `${api.organizationUnit}/roles/${orgId}` : api.role,
method: 'get',
params: queryParams
})
}
export function getSystemRoleList (parameter) {
const queryParams = transformAbpListQuery(parameter)
return request({
url: `${api.systemrole}/list`,
method: 'get',
params: queryParams
})
}
export function saveSystemRole (parameter) {
let url = `${api.systemrole}/info`
if (parameter.id) url = `${api.systemrole}/${parameter.id}/info`
return request({
url: url,
method: parameter.id ? 'put' : 'post',
data: parameter
})
}
export function getRoleAll () {
return request({
url: `${api.role}/all`,
method: 'get',
})
}
export function saveRole (parameter) {
let url = api.role
if (parameter.id) url = `${url}/${parameter.id}`
return request({
url: url,
method: parameter.id ? 'put' : 'post',
data: parameter
})
}
export function delRole (id) {
return request({
url: `${api.role}/${id}`,
method: 'delete',
})
}
export function getOrganizationUnitList (parameter) {
const queryParams = transformAbpListQuery(parameter)
return request({
url: api.organizationUnit,
method: 'get',
params: queryParams
}).then(data => {
return buildPagingQueryResult(queryParams, data)
})
}
export function getOrganizationUnitTrees () {
return request({
url: `${api.organizationUnit}/trees`,
method: 'get',
})
}
export function getOrganizationUnitByUserId (userId) {
return request({
url: `${api.organizationUnit}/by-userid/${userId}`,
method: 'get',
})
}
export function getNextChildCode (parentId) {
let url = `${api.organizationUnit}/next-child-code`
if (parentId) url = `${url}/${parentId}`
return request({
url: url,
method: 'get',
})
}
export function saveOrganizationUnit (parameter) {
let url = api.organizationUnit
if (parameter.id) url = `${url}/${parameter.id}`
return request({
url: url,
method: parameter.id ? 'put' : 'post',
data: parameter
})
}
export function delOrganizationUnit (id) {
return request({
url: `${api.organizationUnit}/${id}`,
method: 'delete',
})
}
/**
* 所有父节点集合
*/
export function getParents(id){
return request({
url: `${api.organizationUnit}/${id}/parent`,
method:'get'
})
}
export function getRolePermissionList (roleName) {
return request({
url: `${api.permission}?providerName=R&providerKey=${roleName}`,
method: 'get',
})
}
export function saveRolePermission (roleName, data) {
const permissions = [{ 'name': 'AbpIdentity.Roles', 'isGranted': true },
{ 'name': 'AbpIdentity.Roles.Create', 'isGranted': true },
{ 'name': 'AbpIdentity.Roles.Update', 'isGranted': true },
{ 'name': 'AbpIdentity.Roles.Delete', 'isGranted': true },
{ 'name': 'AbpIdentity.Roles.ManagePermissions', 'isGranted': true },
{ 'name': 'AbpIdentity.Users', 'isGranted': true },
{ 'name': 'AbpIdentity.Users.Create', 'isGranted': true },
{ 'name': 'AbpIdentity.Users.Update', 'isGranted': true },
{ 'name': 'AbpIdentity.Users.Delete', 'isGranted': true },
{ 'name': 'AbpIdentity.Users.ManagePermissions', 'isGranted': true },
{ 'name': 'FeatureManagement.ManageHostFeatures', 'isGranted': true },
{ 'name': 'SettingManagement.Emailing', 'isGranted': true }]
data.permissions = data.permissions.concat(permissions)
return request({
url: `${api.permission}?providerName=R&providerKey=${roleName}`,
method: 'put',
data: data
})
}
/**
*获取配置文件Settings对象
*/
export function getSettings () {
return request({
url: `${api.setting}`,
method: 'get',
})
}
//是否需要修改密码
export function isInitPwd(userName){
return request({
url:`${api.isInitPwd}?userName=${userName}`,
method:'post'
})
}

View File

@ -0,0 +1,72 @@
import request from '@/utils/request'
const api = {
viewpoint: `/api/app/view-point`,
doc: `/api/app/document`,
combine: `/api/app/combine`
}
/**
* 获取视点列表分页
*/
export async function getViewpointList(params) {
return await request({
url: api.viewpoint,
method: 'get',
params: params
})
}
/**
* 保存视点数据
*/
export async function saveViewpoint(params) {
return await request(
{
url: api.viewpoint,
method: 'post',
data: params
}
)
}
/**
* 删除视点
*/
export async function deleteViewPoint(id) {
return await request(
{
url: `${api.viewpoint}/${id}`,
method: 'delete',
}
)
}
/**修改视点列表状态 */
export async function setViewPointState(id, documentIds) {
return await request({
url: `${api.viewpoint}/${id}/status?Status=${documentIds.Status}&OutStatus=${documentIds.OutStatus}`,
method: 'put',
})
}
/**合模修改默认视点 */
export function setCombineViewPoint(id, documentIds) {
return request({
url: `${api.combine}/${id}/camera?Camera=${documentIds}`,
method: 'put',
data: documentIds
})
}
/**合模修改默认视点 */
export function setCombineSetting(id, documentIds) {
return request({
url: `${api.combine}/${id}`,
method: 'put',
data: documentIds
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,539 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path stroke viewBox IE
normalize.css */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,319 @@
@font-face {
font-family: "iconfont"; /* Project id 2856283 */
src: url('iconfont.woff2?t=1646898329944') format('woff2'),
url('iconfont.woff?t=1646898329944') format('woff'),
url('iconfont.ttf?t=1646898329944') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-mianji::after {
content: "\e612";
}
.icon-shuxing::after {
content: "\e727";
}
.icon-zhushitu::after {
content: "\e619";
}
.icon-juli::after {
content: "\e635";
}
.icon-mianjiceliang::after {
content: "\e613";
}
.icon-iconfonttubiao_tiji::after {
content: "\e614";
}
.icon-shituzhushitu::after {
content: "\e650";
}
.icon-yincangbukejian::after {
content: "\e8d5";
}
.icon-celiang::after {
content: "\e615";
}
.icon-jihuajindu::after {
content: "\e611";
}
.icon-guanbi::after {
content: "\e60e";
}
.icon-close::after {
content: "\e60f";
}
.icon-zhuanyi::after {
content: "\e686";
}
.icon-icon_list_zhuanyi::after {
content: "\e61d";
}
.icon-wentifankui::after {
content: "\e63a";
}
.icon-Icon-daichuli::after {
content: "\e60d";
}
.icon-24gf-shieldCheck::after {
content: "\e9d9";
}
.icon-wenti::after {
content: "\e649";
}
.icon-zhuanfa::after {
content: "\e6c4";
}
.icon-withdraw::after {
content: "\e60c";
}
.icon-fasonggeihaoyou-::after {
content: "\e6ac";
}
.icon-fanhui-chehui-06::after {
content: "\e81d";
}
.icon-shezhi::after {
content: "\e8b7";
}
.icon-bianji::after {
content: "\e60b";
}
.icon-mima1::after {
content: "\e8b2";
}
.icon-liebiao::after {
content: "\e618";
}
.icon-shuanglieliebiao::after {
content: "\e6e5";
}
.icon-liebiao1::after {
content: "\ec6b";
}
.icon-liebiaomoshi_kuai::after {
content: "\ec7e";
}
.icon-yanzhengma1::after {
content: "\e637";
}
.icon-yanzhengma2::after {
content: "\e624";
}
.icon-shoucang2::after {
content: "\e8c6";
}
.icon-weixin2::after {
content: "\e607";
}
.icon-shoujihao1::after {
content: "\e60a";
}
.icon-lishibanben::after {
content: "\e63f";
}
.icon-weixin3::after {
content: "\e608";
}
.icon-yanzhengma3::after {
content: "\e609";
}
.icon-suoxiao::after {
content: "\e600";
}
.icon-fangda::after {
content: "\e601";
}
.icon-quanping::after {
content: "\e602";
}
.icon-weixin::after {
content: "\e603";
}
.icon-shoucang::after {
content: "\e604";
}
.icon-xiazai::after {
content: "\e605";
}
.icon-erweima::after {
content: "\e65f";
}
.icon-shanchutianchong::after {
content: "\e68c";
}
.icon-31shoucang::after {
content: "\e606";
}
.icon-yanzhengma::after {
content: "\e71c";
}
.icon-shoujihao::after {
content: "\e6c1";
}
.icon-weixin1::after {
content: "\e64f";
}
.icon-mima::after {
content: "\e646";
}
.icon-tupian::after {
content: "\e64a";
}
.icon-jiazai::after {
content: "\e699";
}
.icon-saomiaoerweima::after {
content: "\e66c";
}
.icon-200yonghu_yonghu::after {
content: "\e63c";
}
.icon-201yonghu_yonghu2::after {
content: "\e63d";
}
.icon-202yonghu_yonghu3::after {
content: "\e63e";
}
.icon-jiazaizhong::after {
content: "\e6b0";
}
.icon-sousuo::after {
content: "\e8ba";
}
.icon-shoucang1::after {
content: "\e8c2";
}
.icon-yonghuziliao-xianxing::after {
content: "\e91c";
}
.icon-jiantoushang::after {
content: "\e62c";
}
.icon-jiantoushang1::after {
content: "\e62d";
}
.icon-jiantouyou::after {
content: "\e62e";
}
.icon-jiantouxia::after {
content: "\e62f";
}
.icon-shujutansuoshujuzhongxinmoxingguanli::after {
content: "\e65c";
}
.icon-jiantou_xiangyou::after {
content: "\eb08";
}
.icon-jiantou_xiangzuo::after {
content: "\eb09";
}
.icon-jiantou_shangxiaqiehuan::after {
content: "\eb0a";
}
.icon-jiantou_xiangxia::after {
content: "\eb0b";
}
.icon-jiantou_xiangshang::after {
content: "\eb0c";
}
.icon-jiantou_youshang::after {
content: "\eb0d";
}
.icon-jiantou_zuoshang::after {
content: "\eb0e";
}
.icon-jiantou_youxia::after {
content: "\eb0f";
}
.icon-jiantou_zuoyouqiehuan::after {
content: "\eb10";
}
.icon-jiantou_zuoxia::after {
content: "\eb11";
}
.icon-_moxingguanli::after {
content: "\e610";
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,541 @@
{
"id": "2856283",
"name": "海尔项目",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "36107",
"name": "面积",
"font_class": "mianji",
"unicode": "e612",
"unicode_decimal": 58898
},
{
"icon_id": "680988",
"name": "属性",
"font_class": "shuxing",
"unicode": "e727",
"unicode_decimal": 59175
},
{
"icon_id": "4236657",
"name": "主视图",
"font_class": "zhushitu",
"unicode": "e619",
"unicode_decimal": 58905
},
{
"icon_id": "4888578",
"name": "icon-design-33",
"font_class": "juli",
"unicode": "e635",
"unicode_decimal": 58933
},
{
"icon_id": "6677524",
"name": "面积测量",
"font_class": "mianjiceliang",
"unicode": "e613",
"unicode_decimal": 58899
},
{
"icon_id": "9960705",
"name": "iconfont图标_体积",
"font_class": "iconfonttubiao_tiji",
"unicode": "e614",
"unicode_decimal": 58900
},
{
"icon_id": "15773666",
"name": "【视图】主视图",
"font_class": "shituzhushitu",
"unicode": "e650",
"unicode_decimal": 58960
},
{
"icon_id": "1727486",
"name": "241隐藏、不可见",
"font_class": "yincangbukejian",
"unicode": "e8d5",
"unicode_decimal": 59605
},
{
"icon_id": "8718263",
"name": "测量",
"font_class": "celiang",
"unicode": "e615",
"unicode_decimal": 58901
},
{
"icon_id": "8615575",
"name": "计划进度",
"font_class": "jihuajindu",
"unicode": "e611",
"unicode_decimal": 58897
},
{
"icon_id": "538861",
"name": "关闭",
"font_class": "guanbi",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "1368540",
"name": "关闭",
"font_class": "close",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "167224",
"name": "转移",
"font_class": "zhuanyi",
"unicode": "e686",
"unicode_decimal": 59014
},
{
"icon_id": "14197976",
"name": "转移",
"font_class": "icon_list_zhuanyi",
"unicode": "e61d",
"unicode_decimal": 58909
},
{
"icon_id": "2448136",
"name": "问题反馈",
"font_class": "wentifankui",
"unicode": "e63a",
"unicode_decimal": 58938
},
{
"icon_id": "6334892",
"name": "Icon - 待处理",
"font_class": "Icon-daichuli",
"unicode": "e60d",
"unicode_decimal": 58893
},
{
"icon_id": "7577443",
"name": "24gf-shieldCheck",
"font_class": "24gf-shieldCheck",
"unicode": "e9d9",
"unicode_decimal": 59865
},
{
"icon_id": "11239062",
"name": "问题",
"font_class": "wenti",
"unicode": "e649",
"unicode_decimal": 58953
},
{
"icon_id": "119107",
"name": "转发",
"font_class": "zhuanfa",
"unicode": "e6c4",
"unicode_decimal": 59076
},
{
"icon_id": "1368553",
"name": "撤回",
"font_class": "withdraw",
"unicode": "e60c",
"unicode_decimal": 58892
},
{
"icon_id": "3581375",
"name": "发送给好友-01",
"font_class": "fasonggeihaoyou-",
"unicode": "e6ac",
"unicode_decimal": 59052
},
{
"icon_id": "24858654",
"name": "返回-撤回-06",
"font_class": "fanhui-chehui-06",
"unicode": "e81d",
"unicode_decimal": 59421
},
{
"icon_id": "11372694",
"name": "设置",
"font_class": "shezhi",
"unicode": "e8b7",
"unicode_decimal": 59575
},
{
"icon_id": "1264",
"name": "编辑",
"font_class": "bianji",
"unicode": "e60b",
"unicode_decimal": 58891
},
{
"icon_id": "11372676",
"name": "密码",
"font_class": "mima1",
"unicode": "e8b2",
"unicode_decimal": 59570
},
{
"icon_id": "1282",
"name": "列表",
"font_class": "liebiao",
"unicode": "e618",
"unicode_decimal": 58904
},
{
"icon_id": "1046066",
"name": "双列列表",
"font_class": "shuanglieliebiao",
"unicode": "e6e5",
"unicode_decimal": 59109
},
{
"icon_id": "5961366",
"name": "列表",
"font_class": "liebiao1",
"unicode": "ec6b",
"unicode_decimal": 60523
},
{
"icon_id": "6237287",
"name": "列表模式_块",
"font_class": "liebiaomoshi_kuai",
"unicode": "ec7e",
"unicode_decimal": 60542
},
{
"icon_id": "6929427",
"name": "验证码",
"font_class": "yanzhengma1",
"unicode": "e637",
"unicode_decimal": 58935
},
{
"icon_id": "8594072",
"name": "验证码",
"font_class": "yanzhengma2",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "11372777",
"name": "收藏",
"font_class": "shoucang2",
"unicode": "e8c6",
"unicode_decimal": 59590
},
{
"icon_id": "11463944",
"name": "微信",
"font_class": "weixin2",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "11855574",
"name": "手机号",
"font_class": "shoujihao1",
"unicode": "e60a",
"unicode_decimal": 58890
},
{
"icon_id": "15192652",
"name": "历史版本",
"font_class": "lishibanben",
"unicode": "e63f",
"unicode_decimal": 58943
},
{
"icon_id": "15933094",
"name": "微信",
"font_class": "weixin3",
"unicode": "e608",
"unicode_decimal": 58888
},
{
"icon_id": "21435107",
"name": "验证码",
"font_class": "yanzhengma3",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "1365",
"name": "缩小",
"font_class": "suoxiao",
"unicode": "e600",
"unicode_decimal": 58880
},
{
"icon_id": "1366",
"name": "放大",
"font_class": "fangda",
"unicode": "e601",
"unicode_decimal": 58881
},
{
"icon_id": "1368",
"name": "全屏",
"font_class": "quanping",
"unicode": "e602",
"unicode_decimal": 58882
},
{
"icon_id": "77156",
"name": "微信",
"font_class": "weixin",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "77828",
"name": "收藏",
"font_class": "shoucang",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "136387",
"name": "下载",
"font_class": "xiazai",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "145488",
"name": "二维码",
"font_class": "erweima",
"unicode": "e65f",
"unicode_decimal": 58975
},
{
"icon_id": "145719",
"name": "删除_填充",
"font_class": "shanchutianchong",
"unicode": "e68c",
"unicode_decimal": 59020
},
{
"icon_id": "200845",
"name": "3.1收藏",
"font_class": "31shoucang",
"unicode": "e606",
"unicode_decimal": 58886
},
{
"icon_id": "765220",
"name": "验证码",
"font_class": "yanzhengma",
"unicode": "e71c",
"unicode_decimal": 59164
},
{
"icon_id": "859294",
"name": "手机号",
"font_class": "shoujihao",
"unicode": "e6c1",
"unicode_decimal": 59073
},
{
"icon_id": "859693",
"name": "微信",
"font_class": "weixin1",
"unicode": "e64f",
"unicode_decimal": 58959
},
{
"icon_id": "947480",
"name": "密码",
"font_class": "mima",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "947484",
"name": "图片",
"font_class": "tupian",
"unicode": "e64a",
"unicode_decimal": 58954
},
{
"icon_id": "1239930",
"name": "加载",
"font_class": "jiazai",
"unicode": "e699",
"unicode_decimal": 59033
},
{
"icon_id": "1250958",
"name": "扫描二维码",
"font_class": "saomiaoerweima",
"unicode": "e66c",
"unicode_decimal": 58988
},
{
"icon_id": "1308383",
"name": "200用户_用户",
"font_class": "200yonghu_yonghu",
"unicode": "e63c",
"unicode_decimal": 58940
},
{
"icon_id": "1308388",
"name": "201用户_用户2",
"font_class": "201yonghu_yonghu2",
"unicode": "e63d",
"unicode_decimal": 58941
},
{
"icon_id": "1308389",
"name": "202用户_用户3",
"font_class": "202yonghu_yonghu3",
"unicode": "e63e",
"unicode_decimal": 58942
},
{
"icon_id": "1617823",
"name": "1105加载中",
"font_class": "jiazaizhong",
"unicode": "e6b0",
"unicode_decimal": 59056
},
{
"icon_id": "1727425",
"name": "206搜索",
"font_class": "sousuo",
"unicode": "e8ba",
"unicode_decimal": 59578
},
{
"icon_id": "1727441",
"name": "213收藏",
"font_class": "shoucang1",
"unicode": "e8c2",
"unicode_decimal": 59586
},
{
"icon_id": "2126754",
"name": "257用户资料-线性",
"font_class": "yonghuziliao-xianxing",
"unicode": "e91c",
"unicode_decimal": 59676
},
{
"icon_id": "2674878",
"name": "箭头 上",
"font_class": "jiantoushang",
"unicode": "e62c",
"unicode_decimal": 58924
},
{
"icon_id": "2674927",
"name": "箭头 上",
"font_class": "jiantoushang1",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "2674928",
"name": "箭头 右",
"font_class": "jiantouyou",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "2674929",
"name": "箭头 下",
"font_class": "jiantouxia",
"unicode": "e62f",
"unicode_decimal": 58927
},
{
"icon_id": "4773265",
"name": "数据探索(数据中心)—模型管理",
"font_class": "shujutansuoshujuzhongxinmoxingguanli",
"unicode": "e65c",
"unicode_decimal": 58972
},
{
"icon_id": "5387583",
"name": "箭头_向右",
"font_class": "jiantou_xiangyou",
"unicode": "eb08",
"unicode_decimal": 60168
},
{
"icon_id": "5387584",
"name": "箭头_向左",
"font_class": "jiantou_xiangzuo",
"unicode": "eb09",
"unicode_decimal": 60169
},
{
"icon_id": "5387586",
"name": "箭头_上下切换",
"font_class": "jiantou_shangxiaqiehuan",
"unicode": "eb0a",
"unicode_decimal": 60170
},
{
"icon_id": "5387588",
"name": "箭头_向下",
"font_class": "jiantou_xiangxia",
"unicode": "eb0b",
"unicode_decimal": 60171
},
{
"icon_id": "5387589",
"name": "箭头_向上",
"font_class": "jiantou_xiangshang",
"unicode": "eb0c",
"unicode_decimal": 60172
},
{
"icon_id": "5387593",
"name": "箭头_右上",
"font_class": "jiantou_youshang",
"unicode": "eb0d",
"unicode_decimal": 60173
},
{
"icon_id": "5387594",
"name": "箭头_左上",
"font_class": "jiantou_zuoshang",
"unicode": "eb0e",
"unicode_decimal": 60174
},
{
"icon_id": "5387595",
"name": "箭头_右下",
"font_class": "jiantou_youxia",
"unicode": "eb0f",
"unicode_decimal": 60175
},
{
"icon_id": "5387596",
"name": "箭头_左右切换",
"font_class": "jiantou_zuoyouqiehuan",
"unicode": "eb10",
"unicode_decimal": 60176
},
{
"icon_id": "5387600",
"name": "箭头_左下",
"font_class": "jiantou_zuoxia",
"unicode": "eb11",
"unicode_decimal": 60177
},
{
"icon_id": "5922287",
"name": "154_模型管理",
"font_class": "_moxingguanli",
"unicode": "e610",
"unicode_decimal": 58896
}
]
}

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1551058675966" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7872" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M85.333333 512h85.333334a340.736 340.736 0 0 1 99.712-241.621333 337.493333 337.493333 0 0 1 108.458666-72.96 346.453333 346.453333 0 0 1 261.546667-1.749334A106.154667 106.154667 0 0 0 746.666667 298.666667C805.802667 298.666667 853.333333 251.136 853.333333 192S805.802667 85.333333 746.666667 85.333333c-29.397333 0-55.978667 11.776-75.221334 30.933334-103.722667-41.514667-222.848-40.874667-325.76 2.517333a423.594667 423.594667 0 0 0-135.68 91.264 423.253333 423.253333 0 0 0-91.306666 135.637333A426.88 426.88 0 0 0 85.333333 512z m741.248 133.205333c-17.109333 40.618667-41.685333 77.141333-72.96 108.416s-67.797333 55.850667-108.458666 72.96a346.453333 346.453333 0 0 1-261.546667 1.749334A106.154667 106.154667 0 0 0 277.333333 725.333333C218.197333 725.333333 170.666667 772.864 170.666667 832S218.197333 938.666667 277.333333 938.666667c29.397333 0 55.978667-11.776 75.221334-30.933334A425.173333 425.173333 0 0 0 512 938.666667a425.941333 425.941333 0 0 0 393.258667-260.352A426.325333 426.325333 0 0 0 938.666667 512h-85.333334a341.034667 341.034667 0 0 1-26.752 133.205333z" p-id="7873"></path><path d="M512 318.378667c-106.752 0-193.621333 86.869333-193.621333 193.621333S405.248 705.621333 512 705.621333s193.621333-86.869333 193.621333-193.621333S618.752 318.378667 512 318.378667z m0 301.909333c-59.690667 0-108.288-48.597333-108.288-108.288S452.309333 403.712 512 403.712s108.288 48.597333 108.288 108.288-48.597333 108.288-108.288 108.288z" p-id="7874"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

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