Procházet zdrojové kódy

平面图美化工具V1.0

zhangyu před 4 roky
revize
8dcae04e67
100 změnil soubory, kde provedl 2966 přidání a 0 odebrání
  1. 3 0
      .browserslistrc
  2. 18 0
      .eslintrc.js
  3. 24 0
      .gitignore
  4. 24 0
      README.md
  5. 17 0
      babel.config.js
  6. 61 0
      package.json
  7. binární
      public/favicon.ico
  8. 17 0
      public/index.html
  9. 59 0
      publish.js
  10. 32 0
      src/App.vue
  11. 52 0
      src/api/editer.ts
  12. 58 0
      src/api/home.ts
  13. 180 0
      src/api/httputils.ts
  14. 539 0
      src/assets/font/demo.css
  15. 1090 0
      src/assets/font/demo_index.html
  16. 177 0
      src/assets/font/iconfont.css
  17. binární
      src/assets/font/iconfont.eot
  18. 1 0
      src/assets/font/iconfont.js
  19. 289 0
      src/assets/font/iconfont.json
  20. 146 0
      src/assets/font/iconfont.svg
  21. binární
      src/assets/font/iconfont.ttf
  22. binární
      src/assets/font/iconfont.woff
  23. binární
      src/assets/font/iconfont.woff2
  24. binární
      src/assets/images/1pxline.jpg
  25. binární
      src/assets/images/2pxline.jpg
  26. binární
      src/assets/images/3pxline.jpg
  27. binární
      src/assets/images/dashedLine.jpg
  28. binární
      src/assets/images/dashedLine.png
  29. binární
      src/assets/images/delete.png
  30. binární
      src/assets/images/dotLine.jpg
  31. binární
      src/assets/images/dotLine.png
  32. binární
      src/assets/images/download.png
  33. 64 0
      src/assets/images/equip/lengganji.svg
  34. 71 0
      src/assets/images/equip/shuibeng.svg
  35. 44 0
      src/assets/images/equip/shuixiang.svg
  36. binární
      src/assets/images/issue.png
  37. binární
      src/assets/images/leftImgs/EditBaseArrows.png
  38. binární
      src/assets/images/leftImgs/EditBaseArrowsActive.png
  39. binární
      src/assets/images/leftImgs/EditBaseImage.png
  40. binární
      src/assets/images/leftImgs/EditBaseImageActive.png
  41. binární
      src/assets/images/leftImgs/EditBaseLine.png
  42. binární
      src/assets/images/leftImgs/EditBaseLineActive.png
  43. binární
      src/assets/images/leftImgs/EditBasePostil.png
  44. binární
      src/assets/images/leftImgs/EditBasePostilActive.png
  45. binární
      src/assets/images/leftImgs/EditBaseRect.png
  46. binární
      src/assets/images/leftImgs/EditBaseRectActive.png
  47. binární
      src/assets/images/leftImgs/EditBaseTriangle.png
  48. binární
      src/assets/images/leftImgs/EditBaseTriangleActive.png
  49. binární
      src/assets/images/leftImgs/EditBasetext.png
  50. binární
      src/assets/images/leftImgs/EditBasetextActive.png
  51. binární
      src/assets/images/leftImgs/circle.png
  52. binární
      src/assets/images/leftImgs/circleActive.png
  53. binární
      src/assets/images/leftImgs/equation.png
  54. binární
      src/assets/images/leftImgs/equationActive.png
  55. binární
      src/assets/images/leftImgs/equipList.png
  56. binární
      src/assets/images/leftImgs/equipListActive.png
  57. binární
      src/assets/images/leftImgs/equipment.png
  58. binární
      src/assets/images/leftImgs/equipmentactive.png
  59. binární
      src/assets/images/leftImgs/infoPoint.png
  60. binární
      src/assets/images/leftImgs/infoPointActive.png
  61. binární
      src/assets/images/leftImgs/polygon.png
  62. binární
      src/assets/images/leftImgs/polygonActive.png
  63. binární
      src/assets/images/leftImgs/publicItem.png
  64. binární
      src/assets/images/leftImgs/publicItemActive.png
  65. binární
      src/assets/images/leftImgs/same.png
  66. binární
      src/assets/images/leftImgs/sameactive.png
  67. binární
      src/assets/images/leftImgs/santong.png
  68. binární
      src/assets/images/leftImgs/santongActive.png
  69. binární
      src/assets/images/leftImgs/sitong.png
  70. binární
      src/assets/images/leftImgs/sitongActive.png
  71. binární
      src/assets/images/leftImgs/wantou.png
  72. binární
      src/assets/images/leftImgs/wantouActive.png
  73. binární
      src/assets/images/more.png
  74. binární
      src/assets/images/no-data.png
  75. binární
      src/assets/images/noImg.png
  76. binární
      src/assets/images/recycle.png
  77. binární
      src/assets/images/solidLine.jpg
  78. binární
      src/assets/images/solidLine.png
  79. binární
      src/assets/images/t-bottom-d.png
  80. binární
      src/assets/images/t-bottom.png
  81. binární
      src/assets/images/t-center-d.png
  82. binární
      src/assets/images/t-center.png
  83. binární
      src/assets/images/t-equipment-hover.png
  84. binární
      src/assets/images/t-equipment.png
  85. binární
      src/assets/images/t-format.png
  86. binární
      src/assets/images/t-img-hover.png
  87. binární
      src/assets/images/t-img.png
  88. binární
      src/assets/images/t-left-d.png
  89. binární
      src/assets/images/t-left.png
  90. binární
      src/assets/images/t-level-d.png
  91. binární
      src/assets/images/t-level.png
  92. binární
      src/assets/images/t-line-hover.png
  93. binární
      src/assets/images/t-line.png
  94. binární
      src/assets/images/t-papeline-hover.png
  95. binární
      src/assets/images/t-papeline.png
  96. binární
      src/assets/images/t-position-hover.png
  97. binární
      src/assets/images/t-position.png
  98. binární
      src/assets/images/t-right-d.png
  99. binární
      src/assets/images/t-right.png
  100. 0 0
      src/assets/images/t-top-d.png

+ 3 - 0
.browserslistrc

@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not dead

+ 18 - 0
.eslintrc.js

@@ -0,0 +1,18 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true
+  },
+  'extends': [
+    'plugin:vue/essential',
+    'eslint:recommended',
+    '@vue/typescript/recommended'
+  ],
+  parserOptions: {
+    ecmaVersion: 2020
+  },
+  rules: {
+    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
+  }
+}

+ 24 - 0
.gitignore

@@ -0,0 +1,24 @@
+.DS_Store
+node_modules
+/dist
+/persagyTopo
+package-lock.json
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 24 - 0
README.md

@@ -0,0 +1,24 @@
+# persagy-plan-editer
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).

+ 17 - 0
babel.config.js

@@ -0,0 +1,17 @@
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ],
+  plugins: [
+    ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es", "style": "css" }],
+    [
+      "component",
+      {
+        "libraryName": "meri-design",
+        "camel2Dash": false,
+        "libDir": "dist",
+        "styleLibrary": { "name": "theme", "base": true }
+      }
+    ],
+  ]
+}

+ 61 - 0
package.json

@@ -0,0 +1,61 @@
+{
+  "name": "persagy_topo_editer",
+  "version": "0.1.4",
+  "remote": {
+    "host": "60.205.177.43",
+    "path": "/root/apps/web/persagyTopo",
+    "user": "root",
+    "password": "cGVyc2FneV8yMDIwbGFic2wlIyQ=",
+    "local": "persagyTopo"
+  },
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "lint": "vue-cli-service lint",
+    "publish": "node publish.js"
+  },
+  "dependencies": {
+    "@persagy-web/base": "2.2.1",
+    "@persagy-web/big": "2.2.19",
+    "@persagy-web/draw": "2.2.8",
+    "@persagy-web/graph": "2.2.23",
+    "@persagy-web/big-edit": "2.2.1",
+    "@persagy-web/edit": "2.2.2",
+    "@types/uuid": "^8.0.0",
+    "ant-design-vue": "^1.6.5",
+    "axios": "^0.20.0",
+    "core-js": "^3.6.5",
+    "crypto-js": "^4.0.0",
+    "element-ui": "^2.13.2",
+    "lodash": "^4.17.20",
+    "meri-design": "1.3.8",
+    "vue": "^2.6.11",
+    "vue-class-component": "^7.2.3",
+    "vue-property-decorator": "^8.4.2",
+    "vue-router": "^3.2.0",
+    "vuex": "^3.4.0"
+  },
+  "devDependencies": {
+    "@typescript-eslint/eslint-plugin": "^2.33.0",
+    "@typescript-eslint/parser": "^2.33.0",
+    "@vue/cli-plugin-babel": "^4.5.0",
+    "@vue/cli-plugin-eslint": "^4.5.0",
+    "@vue/cli-plugin-router": "^4.5.0",
+    "@vue/cli-plugin-typescript": "^4.5.0",
+    "@vue/cli-plugin-vuex": "^4.5.0",
+    "@vue/cli-service": "^4.5.0",
+    "@vue/eslint-config-typescript": "^5.0.2",
+    "babel-plugin-component": "^1.1.1",
+    "babel-plugin-import": "^1.12.0",
+    "eslint": "^6.7.2",
+    "eslint-plugin-vue": "^6.2.2",
+    "less": "^3.0.4",
+    "less-loader": "^5.0.0",
+    "node-ssh": "^6.0.0",
+    "polybooljs": "^1.2.0",
+    "svgo": "^1.3.2",
+    "svgo-loader": "^2.2.1",
+    "typescript": "~3.9.3",
+    "vue-template-compiler": "^2.6.11"
+  }
+}

binární
public/favicon.ico


+ 17 - 0
public/index.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title>博锐尚格科技股份有限公司--拓扑图编辑器</title>
+  </head>
+  <body>
+    <noscript>
+      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+    </noscript>
+    <div id="app"></div>
+    <!-- built files will be auto injected -->
+  </body>
+</html>

+ 59 - 0
publish.js

@@ -0,0 +1,59 @@
+/*
+/*
+ * *********************************************************************************************************************
+ *
+ *          !!
+ *        .F88X
+ *        X8888Y
+ *      .}888888N;
+ *        i888888N;        .:!              .I$WI:
+ *          R888888I      .'N88~            i8}+8Y&8"l8i$8>8W~'>W8}8]KW+8IIN"8&
+ *          .R888888I    .;N8888~          .X8'  "8I.!,/8"  !%NY8`"8I8~~8>,88I
+ *            +888888N;  .8888888Y                                  "&&8Y.}8,
+ *            ./888888N;  .R888888Y        .'}~    .>}'.`+>  i}!    "i'  +/'  .'i~  !11,.:">,  .~]!  .i}i
+ *              ~888888%:  .I888888l      .]88~`1/iY88Ii+1'.R$8$8]"888888888>  Y8$  W8E  X8E  W8888'188Il}Y88$*
+ *              18888888    E8888881    .]W%8$`R8X'&8%++N8i,8N%N8+l8%`  .}8N:.R$RE%N88N%N$K$R  188,FE$8%~Y88I
+ *            .E888888I  .i8888888'      .:$8I;88+`E8R:/8N,.>881.`$8E/1/]N8X.Y8N`"KF&&FK!'88*."88K./$88%RN888+~
+ *            8888888I  .,N888888~        ~88i"8W,!N8*.I88.}888%F,i$88"F88"  888:E8X.>88!i88>`888*.}Fl1]*}1YKi'
+ *          i888888N'      I888Y          ]88;/EX*IFKFK88X  K8R  .l8W  88Y  ~88}'88E&%8W.X8N``]88!.$8K  .:W8I
+ *        .i888888N;        I8Y          .&8$  .X88!  i881.:%888>I88  ;88]  +88+.';;;;:.Y88X  18N.,88l  .+88/
+ *      .:R888888I
+ *      .&888888I                                          Copyright (c) 2016-2020.  博锐尚格科技股份有限公司
+ *        ~8888'
+ *        .!88~                                                                     All rights reserved.
+ *
+ * *********************************************************************************************************************
+ */
+
+const Client = require("node-ssh");
+const ssh = new Client();
+
+ssh.connect({
+    host: process.env.npm_package_remote_host,
+    port: "22",
+    username: process.env.npm_package_remote_user,
+    password: process.env.npm_package_remote_password
+}).then(() => {
+    const failedList = [];
+    ssh.putDirectory(
+        process.env.npm_package_remote_local,
+        process.env.npm_package_remote_path,
+        {
+            recursive: true,
+            concurrency: 1,
+            tick: function(localPath, remotePath, error) {
+                if (error) {
+                    failedList.push(localPath);
+                }
+            }
+        }
+    ).then(status => {
+        if (failedList.length > 0) {
+            console.log("发布失败");
+            console.log("failed transfers", failedList.join(", "));
+        } else {
+            console.log(status ? "发布成功" : "发布失败");
+        }
+        ssh.dispose();
+    });
+});

+ 32 - 0
src/App.vue

@@ -0,0 +1,32 @@
+<template>
+  <div id="app">
+    <router-view />
+  </div>
+</template>
+<script>
+export default {
+  data() {
+    return {};
+  },
+};
+</script>
+<style lang="less">
+div {
+  -moz-user-select: none; /*火狐*/
+  -webkit-user-select: none; /*webkit浏览器*/
+  -ms-user-select: none; /*IE10*/
+  -khtml-user-select: none; /*早期浏览器*/
+  user-select: none;
+}
+body,
+html {
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  height: 100%;
+}
+#app {
+  width: 100%;
+  height: 100%;
+}
+</style>

+ 52 - 0
src/api/editer.ts

@@ -0,0 +1,52 @@
+// 登录校验接口
+import httputils from '@/api/httputils'
+const baseApi = '/graph/drafts/';
+
+//保存系统图
+export function saveGroup(postParams: any): any {
+    return httputils.postJson(`/labsl${baseApi}save`, postParams)
+}
+
+//读取系统图-草稿箱
+export function readGroup(postParams: any): any {
+    return httputils.postJson(`/labsl${baseApi}read`, postParams)
+}
+
+//读取系统图-已发布
+export function readPubGroup(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/pub/read`, postParams)
+}
+
+//查询楼层
+export function buildiFloor(postParams: any): any {
+    return httputils.postJson(`/equip-componnet/labsl/building/floor`, postParams)
+}
+// 查询设备类型
+export function readCategory(postParams: any): any {
+    return httputils.postJson(`/equip-componnet/labsl/category`, postParams)
+}
+
+// 查询设备
+export function queryEquip(postParams: any): any {
+    return httputils.postJson(`/equip-componnet/labsl/query/equip`, postParams)
+}
+// 根据设备 id 查询设备对应的专业 /labsl/major/category
+export function queryCategory(postParams: any): any {
+    return httputils.postJson(`/equip-componnet/labsl/major/category`, postParams)
+}
+// 查询设备图例图片
+export function queryLegend(postParams: any): any {
+    return httputils.postJson(`/meiku/legend/query`, postParams)
+}
+// 查询设备的所有信息点数组
+export function queryDict(postParams: any): any {
+    return httputils.postJson(`/datacenter/dict/query`, postParams)
+}
+// 查询设备某个信息点详情的值 --- (用于点击图中信息点调用)
+export function queryEquipMsg(postParams: any): any {
+    return httputils.postJson(`/datacenter/object/equip/query`, postParams)
+}
+//  管道列表的获取
+export function queryPipeline(postParams: any): any {
+    return httputils.postJson(`/meiku/pipeline/query`, postParams)
+}

+ 58 - 0
src/api/home.ts

@@ -0,0 +1,58 @@
+// 登录校验接口
+import httputils from '@/api/httputils'
+const baseApi = '/graph/drafts/';
+
+//创建拓扑图
+export function creatTopo(postParams: any): any {
+    return httputils.postJson(`/labsl${baseApi}create`, postParams)
+}
+
+// 查询系统图分类
+export function queryCategoryGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph-category/query`, postParams)
+}
+
+// 查询未发布的图
+export function queryDraftsGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/drafts/query`, postParams)
+}
+
+// 查询已发布的图
+export function queryPubGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/pub/query`, postParams)
+}
+
+// 发布
+export function publishGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/drafts/publish`, postParams)
+}
+
+// 删除未发布
+export function deleteDraftsGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/drafts/recycle`, postParams)
+}
+
+// 删除已发布
+export function deletePubGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/pub/recycle`, postParams)
+}
+
+// 更新未发布
+export function updateDraftsGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/drafts/update`, postParams)
+}
+
+// 更新已发布
+export function updatePubGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/pub/update`, postParams)
+}
+
+// 回收站恢复
+export function recoveryGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/recycle/recovery`, postParams)
+}
+
+// 新建拓扑图
+export function createGraph(postParams: any): any {
+    return httputils.postJson(`/labsl/graph/drafts/create`, postParams)
+}

+ 180 - 0
src/api/httputils.ts

@@ -0,0 +1,180 @@
+import axios from "axios"
+import store from "@/store"
+import { MessageBox } from "element-ui"
+
+const CancelToken = axios.CancelToken
+let cancel
+
+// 创建axios实例
+const axiosservice = axios.create({
+    timeout: 30000, // 请求超时时间
+    retry: 4, //重新请求次数
+    retryDelay: 1000, //重新请求的间隔
+    credentials: true, // 接口每次请求会跨域携带cookie
+    cancelToken: new CancelToken(function executor(c) {
+        // executor 函数接收一个 cancel 函数作为参数
+        cancel = c
+    }),
+})
+
+axiosservice.interceptors.request.use(
+    (config) => {
+        config.withCredentials = true // 允许携带token ,这个是解决跨域产生的相关问题
+        config.headers = {
+            projectId: 'Pj1101050029',//项目id
+        }
+        return config
+    },
+    (error) => {
+        return Promise.reject(error)
+    }
+)
+
+axiosservice.interceptors.response.use(
+    function (res) {
+        //在这里对返回的数据进行处理
+        //console.log('axios interceptors res = ', res.status, res)
+        const resp = res.data
+        if (resp.result === "unauthc") {
+            store.commit("logined", false)
+            MessageBox.confirm("未登陆或登陆信息已失效, 是否重新登陆?", "提示", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "error",
+            })
+                .then((resp) => {
+                    //console.log('--------------------------- confirm', resp)
+                    //router.push('/login')
+                    window.location.reload()
+                })
+                .catch((error) => {
+                    //console.log('--------------------------- cancel', error)
+                    console.log("")
+                })
+        } else if (resp.result == "unauthorization") {
+            MessageBox.alert("无权操作", { title: "警告", type: "error" })
+        }
+        //console.log('axios interceptors resp2 = ', resp.success, resp.errorCode, resp.errorMessage, res)
+        return res
+    },
+    function (err) {
+        //Do something with response error
+        console.log("axios interceptors err = ", err)
+        return Promise.reject(err)
+    }
+)
+
+/* 下载方法 */
+function downFile(blob, fileName) {
+    // 非IE下载
+    if ("download" in document.createElement("a")) {
+        const link = document.createElement("a")
+        link.href = window.URL.createObjectURL(blob) // 创建下载的链接
+        link.download = fileName // 下载后文件名
+        link.style.display = "none"
+        document.body.appendChild(link)
+        link.click() // 点击下载
+        window.URL.revokeObjectURL(link.href) // 释放掉blob对象
+        document.body.removeChild(link) // 下载完成移除元素
+    } else {
+        // IE10+下载
+        window.navigator.msSaveBlob(blob, fileName)
+    }
+}
+
+export default {
+    //获取cookie
+    getCookie(name) {
+        let arr,
+            reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)")
+        if ((arr = document.cookie.match(reg))) {
+            return unescape(arr[2])
+        } else {
+            /* 如果没有参数,那么就获取本域下的所有cookie */
+            return document.cookie
+        }
+    },
+
+    async getJson(url, params) {
+        try {
+            const response = await axiosservice({
+                url,
+                params,
+                method: "get",
+            })
+            return response.data
+        } catch (err) {
+            throw err
+        }
+    },
+    async postJson(url, data) {
+        try {
+            const response = await axiosservice({
+                url,
+                data,
+                method: "post",
+            })
+            return response.data
+        } catch (err) {
+            throw err
+        }
+    },
+    async fetchJson(url, params, data) {
+        try {
+            const response = await axiosservice({
+                url,
+                params,
+                data,
+                method: "post",
+            })
+            return response
+        } catch (err) {
+            throw err
+        }
+    },
+    async postupload(url, data) {
+        try {
+            const response = await axiosservice({
+                url,
+                data,
+                method: "post",
+                headers: {
+                    "Content-Type": "multipart/form-data",
+                },
+            })
+            return response.data
+        } catch (err) {
+            throw err
+        }
+    },
+    download(url, requestData) {
+        // 响应类型:arraybuffer, blob
+        axiosservice
+            .post(url, requestData, { responseType: "blob" })
+            .then((resp) => {
+                const headers = resp.headers
+                const contentType = headers["content-type"]
+
+                console.log("响应头信息", headers)
+                if (!resp.data) {
+                    console.error("响应异常:", resp)
+                    return false
+                } else {
+                    console.log("下载文件:", resp)
+                    const blob = new Blob([resp.data], { type: contentType })
+
+                    const contentDisposition = resp.headers["content-disposition"]
+                    let fileName = "unknown"
+                    if (contentDisposition) {
+                        fileName = window.decodeURI(resp.headers["content-disposition"].split("=")[1])
+                    }
+                    console.log("文件名称:", fileName)
+                    downFile(blob, fileName)
+                }
+            })
+            .catch(function (error) {
+                console.log(error)
+            })
+    },
+    axios: axiosservice,
+}

+ 539 - 0
src/assets/font/demo.css

@@ -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;
+}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1090 - 0
src/assets/font/demo_index.html


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 177 - 0
src/assets/font/iconfont.css


binární
src/assets/font/iconfont.eot


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 0
src/assets/font/iconfont.js


+ 289 - 0
src/assets/font/iconfont.json

@@ -0,0 +1,289 @@
+{
+  "id": "2088866",
+  "name": "拓扑工具-普通",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "17559866",
+      "name": "三通_n",
+      "font_class": "santong_n",
+      "unicode": "e664",
+      "unicode_decimal": 58980
+    },
+    {
+      "icon_id": "17559867",
+      "name": "四通_n",
+      "font_class": "sitong_n",
+      "unicode": "e665",
+      "unicode_decimal": 58981
+    },
+    {
+      "icon_id": "17559868",
+      "name": "弯头_n",
+      "font_class": "wantou_n",
+      "unicode": "e666",
+      "unicode_decimal": 58982
+    },
+    {
+      "icon_id": "17559869",
+      "name": "划线_n",
+      "font_class": "huaxian_n",
+      "unicode": "e674",
+      "unicode_decimal": 58996
+    },
+    {
+      "icon_id": "17559870",
+      "name": "矩形_n",
+      "font_class": "juxing_n",
+      "unicode": "e676",
+      "unicode_decimal": 58998
+    },
+    {
+      "icon_id": "17559871",
+      "name": "圆形_n",
+      "font_class": "yuanxing_n",
+      "unicode": "e677",
+      "unicode_decimal": 58999
+    },
+    {
+      "icon_id": "17559872",
+      "name": "多边形_n",
+      "font_class": "duobianxing_n",
+      "unicode": "e678",
+      "unicode_decimal": 59000
+    },
+    {
+      "icon_id": "17559873",
+      "name": "图片_n",
+      "font_class": "tupian_n",
+      "unicode": "e679",
+      "unicode_decimal": 59001
+    },
+    {
+      "icon_id": "17559874",
+      "name": "公式_n",
+      "font_class": "gongshi_n",
+      "unicode": "e67a",
+      "unicode_decimal": 59002
+    },
+    {
+      "icon_id": "17559875",
+      "name": "文字_n",
+      "font_class": "wenzi_n",
+      "unicode": "e67b",
+      "unicode_decimal": 59003
+    },
+    {
+      "icon_id": "17559876",
+      "name": "信息点_n",
+      "font_class": "xinxidian_n",
+      "unicode": "e67c",
+      "unicode_decimal": 59004
+    },
+    {
+      "icon_id": "17487441",
+      "name": "更多",
+      "font_class": "gengduo1",
+      "unicode": "e663",
+      "unicode_decimal": 58979
+    },
+    {
+      "icon_id": "17376666",
+      "name": "关系",
+      "font_class": "guanxi",
+      "unicode": "e667",
+      "unicode_decimal": 58983
+    },
+    {
+      "icon_id": "17376667",
+      "name": "锁定",
+      "font_class": "suoding",
+      "unicode": "e668",
+      "unicode_decimal": 58984
+    },
+    {
+      "icon_id": "17376668",
+      "name": "左对齐",
+      "font_class": "zuoduiqi",
+      "unicode": "e669",
+      "unicode_decimal": 58985
+    },
+    {
+      "icon_id": "17376669",
+      "name": "置底",
+      "font_class": "zhidi",
+      "unicode": "e66a",
+      "unicode_decimal": 58986
+    },
+    {
+      "icon_id": "17376670",
+      "name": "删除",
+      "font_class": "shanchu",
+      "unicode": "e66b",
+      "unicode_decimal": 58987
+    },
+    {
+      "icon_id": "17376671",
+      "name": "置顶",
+      "font_class": "zhiding",
+      "unicode": "e66c",
+      "unicode_decimal": 58988
+    },
+    {
+      "icon_id": "17376672",
+      "name": "组合",
+      "font_class": "zuhe",
+      "unicode": "e66d",
+      "unicode_decimal": 58989
+    },
+    {
+      "icon_id": "17376673",
+      "name": "打散",
+      "font_class": "dasan",
+      "unicode": "e66e",
+      "unicode_decimal": 58990
+    },
+    {
+      "icon_id": "17376674",
+      "name": "粘贴",
+      "font_class": "niantie",
+      "unicode": "e66f",
+      "unicode_decimal": 58991
+    },
+    {
+      "icon_id": "17376675",
+      "name": "重做",
+      "font_class": "zhongzuo",
+      "unicode": "e670",
+      "unicode_decimal": 58992
+    },
+    {
+      "icon_id": "17376676",
+      "name": "撤回",
+      "font_class": "chehui",
+      "unicode": "e671",
+      "unicode_decimal": 58993
+    },
+    {
+      "icon_id": "17376677",
+      "name": "筛选",
+      "font_class": "shaixuan",
+      "unicode": "e672",
+      "unicode_decimal": 58994
+    },
+    {
+      "icon_id": "17376678",
+      "name": "复制",
+      "font_class": "fuzhi",
+      "unicode": "e673",
+      "unicode_decimal": 58995
+    },
+    {
+      "icon_id": "17376680",
+      "name": "搜索",
+      "font_class": "sousuo",
+      "unicode": "e675",
+      "unicode_decimal": 58997
+    },
+    {
+      "icon_id": "17376472",
+      "name": "添加",
+      "font_class": "tianjia",
+      "unicode": "e656",
+      "unicode_decimal": 58966
+    },
+    {
+      "icon_id": "17376473",
+      "name": "箭头",
+      "font_class": "jiantou",
+      "unicode": "e657",
+      "unicode_decimal": 58967
+    },
+    {
+      "icon_id": "17376474",
+      "name": "保存",
+      "font_class": "baocun",
+      "unicode": "e658",
+      "unicode_decimal": 58968
+    },
+    {
+      "icon_id": "17376475",
+      "name": "下载",
+      "font_class": "xiazai",
+      "unicode": "e659",
+      "unicode_decimal": 58969
+    },
+    {
+      "icon_id": "17376476",
+      "name": "Triangle",
+      "font_class": "Triangle",
+      "unicode": "e65a",
+      "unicode_decimal": 58970
+    },
+    {
+      "icon_id": "17376477",
+      "name": "放大",
+      "font_class": "fangda",
+      "unicode": "e65b",
+      "unicode_decimal": 58971
+    },
+    {
+      "icon_id": "17376478",
+      "name": "缩小",
+      "font_class": "suoxiao",
+      "unicode": "e65c",
+      "unicode_decimal": 58972
+    },
+    {
+      "icon_id": "17376479",
+      "name": "发布",
+      "font_class": "fabu",
+      "unicode": "e65d",
+      "unicode_decimal": 58973
+    },
+    {
+      "icon_id": "17373833",
+      "name": "通用",
+      "font_class": "tongyong",
+      "unicode": "e644",
+      "unicode_decimal": 58948
+    },
+    {
+      "icon_id": "17373834",
+      "name": "管线",
+      "font_class": "guanxian",
+      "unicode": "e645",
+      "unicode_decimal": 58949
+    },
+    {
+      "icon_id": "17373835",
+      "name": "楼层",
+      "font_class": "louceng",
+      "unicode": "e646",
+      "unicode_decimal": 58950
+    },
+    {
+      "icon_id": "17373836",
+      "name": "设备",
+      "font_class": "shebei",
+      "unicode": "e647",
+      "unicode_decimal": 58951
+    },
+    {
+      "icon_id": "17373837",
+      "name": "空间",
+      "font_class": "kongjian",
+      "unicode": "e648",
+      "unicode_decimal": 58952
+    },
+    {
+      "icon_id": "17373838",
+      "name": "设备组",
+      "font_class": "shebeizu",
+      "unicode": "e649",
+      "unicode_decimal": 58953
+    }
+  ]
+}

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 146 - 0
src/assets/font/iconfont.svg


binární
src/assets/font/iconfont.ttf


binární
src/assets/font/iconfont.woff


binární
src/assets/font/iconfont.woff2


binární
src/assets/images/1pxline.jpg


binární
src/assets/images/2pxline.jpg


binární
src/assets/images/3pxline.jpg


binární
src/assets/images/dashedLine.jpg


binární
src/assets/images/dashedLine.png


binární
src/assets/images/delete.png


binární
src/assets/images/dotLine.jpg


binární
src/assets/images/dotLine.png


binární
src/assets/images/download.png


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 64 - 0
src/assets/images/equip/lengganji.svg


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 71 - 0
src/assets/images/equip/shuibeng.svg


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 44 - 0
src/assets/images/equip/shuixiang.svg


binární
src/assets/images/issue.png


binární
src/assets/images/leftImgs/EditBaseArrows.png


binární
src/assets/images/leftImgs/EditBaseArrowsActive.png


binární
src/assets/images/leftImgs/EditBaseImage.png


binární
src/assets/images/leftImgs/EditBaseImageActive.png


binární
src/assets/images/leftImgs/EditBaseLine.png


binární
src/assets/images/leftImgs/EditBaseLineActive.png


binární
src/assets/images/leftImgs/EditBasePostil.png


binární
src/assets/images/leftImgs/EditBasePostilActive.png


binární
src/assets/images/leftImgs/EditBaseRect.png


binární
src/assets/images/leftImgs/EditBaseRectActive.png


binární
src/assets/images/leftImgs/EditBaseTriangle.png


binární
src/assets/images/leftImgs/EditBaseTriangleActive.png


binární
src/assets/images/leftImgs/EditBasetext.png


binární
src/assets/images/leftImgs/EditBasetextActive.png


binární
src/assets/images/leftImgs/circle.png


binární
src/assets/images/leftImgs/circleActive.png


binární
src/assets/images/leftImgs/equation.png


binární
src/assets/images/leftImgs/equationActive.png


binární
src/assets/images/leftImgs/equipList.png


binární
src/assets/images/leftImgs/equipListActive.png


binární
src/assets/images/leftImgs/equipment.png


binární
src/assets/images/leftImgs/equipmentactive.png


binární
src/assets/images/leftImgs/infoPoint.png


binární
src/assets/images/leftImgs/infoPointActive.png


binární
src/assets/images/leftImgs/polygon.png


binární
src/assets/images/leftImgs/polygonActive.png


binární
src/assets/images/leftImgs/publicItem.png


binární
src/assets/images/leftImgs/publicItemActive.png


binární
src/assets/images/leftImgs/same.png


binární
src/assets/images/leftImgs/sameactive.png


binární
src/assets/images/leftImgs/santong.png


binární
src/assets/images/leftImgs/santongActive.png


binární
src/assets/images/leftImgs/sitong.png


binární
src/assets/images/leftImgs/sitongActive.png


binární
src/assets/images/leftImgs/wantou.png


binární
src/assets/images/leftImgs/wantouActive.png


binární
src/assets/images/more.png


binární
src/assets/images/no-data.png


binární
src/assets/images/noImg.png


binární
src/assets/images/recycle.png


binární
src/assets/images/solidLine.jpg


binární
src/assets/images/solidLine.png


binární
src/assets/images/t-bottom-d.png


binární
src/assets/images/t-bottom.png


binární
src/assets/images/t-center-d.png


binární
src/assets/images/t-center.png


binární
src/assets/images/t-equipment-hover.png


binární
src/assets/images/t-equipment.png


binární
src/assets/images/t-format.png


binární
src/assets/images/t-img-hover.png


binární
src/assets/images/t-img.png


binární
src/assets/images/t-left-d.png


binární
src/assets/images/t-left.png


binární
src/assets/images/t-level-d.png


binární
src/assets/images/t-level.png


binární
src/assets/images/t-line-hover.png


binární
src/assets/images/t-line.png


binární
src/assets/images/t-papeline-hover.png


binární
src/assets/images/t-papeline.png


binární
src/assets/images/t-position-hover.png


binární
src/assets/images/t-position.png


binární
src/assets/images/t-right-d.png


binární
src/assets/images/t-right.png


+ 0 - 0
src/assets/images/t-top-d.png


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů