├── src ├── boot │ ├── .gitkeep │ ├── axios.js │ ├── EventBus.js │ ├── config.js │ ├── x2js.js │ └── i18n.js ├── components │ ├── .gitkeep │ ├── topo │ │ ├── control │ │ │ ├── svg │ │ │ │ ├── ViewStaticSvg.vue │ │ │ │ ├── ViewSvgImage.vue │ │ │ │ ├── ViewSvgStatic.vue │ │ │ │ └── ViewSvg.vue │ │ │ ├── ViewText.vue │ │ │ ├── View.vue │ │ │ ├── ViewButtom.vue │ │ │ ├── canvas │ │ │ │ ├── ViewTriangle.vue │ │ │ │ ├── ViewCircular.vue │ │ │ │ ├── ViewLine.vue │ │ │ │ ├── ViewLineWave.vue │ │ │ │ ├── ViewCanvas.vue │ │ │ │ └── ViewRect.vue │ │ │ ├── ViewImage.vue │ │ │ ├── chart │ │ │ │ └── ViewChartGauge.vue │ │ │ └── web │ │ │ │ └── Dtime.vue │ │ ├── data-toolbox │ │ │ └── svg-dianli.json │ │ ├── Topotable.vue │ │ ├── util │ │ │ └── topo-util.js │ │ └── TopoBase.vue │ └── chart │ │ ├── ChartWrapper.vue │ │ └── ChartMapView.vue ├── css │ ├── app.styl │ └── quasar.variables.styl ├── statics │ ├── index.html │ ├── img │ │ ├── bg.png │ │ ├── sc.png │ │ ├── s01.png │ │ ├── svg4.png │ │ ├── Meter1.png │ │ ├── curve2.png │ │ ├── curve6.png │ │ ├── water.png │ │ ├── Piechart2.jpg │ │ ├── Histogram1.jpg │ │ └── historyReport.png │ ├── quasar-logo.png │ ├── topo │ │ ├── anima │ │ │ ├── timg.jpg │ │ │ ├── H5动画-向左展开.svg │ │ │ ├── H5动画-向上展开.svg │ │ │ ├── H5动画-向下展开.svg │ │ │ ├── H5动画-向右展开.svg │ │ │ ├── H5动画-向右滑入.svg │ │ │ ├── H5动画-从右滚入.svg │ │ │ ├── H5动画-向下滑入.svg │ │ │ ├── H5动画-向左滑入.svg │ │ │ ├── H5动画-向上滑入.svg │ │ │ ├── H5动画-淡入.svg │ │ │ ├── H5动画-从左滚入.svg │ │ │ ├── H5动画-旋转出现.svg │ │ │ ├── H5动画-刹车.svg │ │ │ ├── H5动画-向上飞入.svg │ │ │ ├── H5动画-放大.svg │ │ │ ├── H5动画-向左飞入.svg │ │ │ ├── H5动画-向右飞入.svg │ │ │ ├── H5动画-向下飞入.svg │ │ │ ├── H5动画-向下飞入 (1).svg │ │ │ ├── H5动画-左右翻转.svg │ │ │ ├── H5动画-上下翻转.svg │ │ │ ├── 闪烁.svg │ │ │ └── H5动画-下落放大.svg │ │ ├── office │ │ │ ├── dev1.png │ │ │ ├── dev2.png │ │ │ ├── dev3.png │ │ │ ├── dev4.png │ │ │ ├── dev5.png │ │ │ ├── dev6.png │ │ │ ├── dev7.png │ │ │ ├── dev8.png │ │ │ ├── jq01.png │ │ │ ├── pct.png │ │ │ ├── qiti.png │ │ │ ├── chair1.png │ │ │ ├── desk1.png │ │ │ ├── desk2.png │ │ │ ├── desk3.png │ │ │ ├── ground.jpg │ │ │ ├── wall1.png │ │ │ ├── cabinet1.png │ │ │ ├── cabinet2.png │ │ │ ├── jiantou01.gif │ │ │ ├── switch1.png │ │ │ ├── embellish1.png │ │ │ ├── 20190620231255_288.png │ │ │ ├── 20190701181354_914.png │ │ │ ├── 20190701181422_301.png │ │ │ ├── 20190701181428_161.png │ │ │ ├── 20190701181434_604.png │ │ │ ├── 20190701182101_368.png │ │ │ ├── 20190701182105_431.png │ │ │ ├── 20190702163925_551.png │ │ │ ├── 20190702170803_715.png │ │ │ ├── jiantou.svg │ │ │ ├── jiantou2.svg │ │ │ ├── jiantou3.svg │ │ │ ├── off1.svg │ │ │ ├── on1.svg │ │ │ └── jka2.svg │ │ ├── svg │ │ │ ├── switch1.png │ │ │ ├── 20190620231255_288.png │ │ │ ├── 20190701181354_914.png │ │ │ ├── 20190701181422_301.png │ │ │ ├── 20190701181428_161.png │ │ │ ├── 20190701181434_604.png │ │ │ ├── 20190701182101_368.png │ │ │ ├── 20190701182105_431.png │ │ │ ├── 20190702163925_551.png │ │ │ ├── 20190702170803_715.png │ │ │ ├── ellipse2.svg │ │ │ ├── loading │ │ │ │ ├── loading-7.svg │ │ │ │ ├── loading-6.svg │ │ │ │ ├── loading-2.svg │ │ │ │ ├── loading-8.svg │ │ │ │ ├── loading-5.svg │ │ │ │ ├── loading-4.svg │ │ │ │ ├── loading-3.svg │ │ │ │ └── loading-1.svg │ │ │ ├── demo1.svg │ │ │ ├── off1.svg │ │ │ └── on1.svg │ │ └── svg-dianli │ │ │ ├── PresetCapacitor_H.svg │ │ │ └── PresetCapacitor_V.svg │ ├── mada │ │ ├── md.bat │ │ └── md8.svg │ ├── zhuangz │ │ └── md.bat │ ├── shuibeng │ │ ├── md.bat │ │ ├── shuibeng20.svg │ │ └── shuibeng22.svg │ ├── guandao │ │ ├── gd26.svg │ │ ├── gd25.svg │ │ ├── gd2.svg │ │ ├── gd4.svg │ │ └── gd6.svg │ └── famen │ │ └── famen18.svg ├── i18n │ ├── zh-cn │ │ └── index.js │ ├── index.js │ └── en-us │ │ └── index.js ├── assets │ ├── favicon.ico │ ├── img │ │ ├── tt.png │ │ └── waterA.png │ ├── libs │ │ ├── httpurl.js │ │ ├── datatype.js │ │ ├── uid.js │ │ ├── websocket.js │ │ ├── simpleEventBus.js │ │ └── topo.js │ ├── data │ │ ├── topo-data.json │ │ ├── chart-bar.json │ │ ├── chart-line.json │ │ ├── chart-lines.json │ │ ├── chart-pie.json │ │ └── chart-radar.json │ └── echarts-map-json │ │ └── province │ │ └── aomen.json ├── store │ ├── module-example │ │ ├── actions.js │ │ ├── getters.js │ │ ├── state.js │ │ ├── index.js │ │ └── mutations.js │ ├── topo-editor │ │ ├── actions.js │ │ ├── getters.js │ │ ├── index.js │ │ └── state.js │ ├── store-flag.d.ts │ └── index.js ├── views │ ├── login.js │ ├── my-q-menu-item.vue │ ├── usertable.vue │ └── Qmenu.vue ├── pages │ ├── Index.vue │ ├── Error404.vue │ └── topo │ │ ├── Editor.vue │ │ └── Fullscreen.vue ├── App.vue ├── layouts │ └── TopoLayout.vue ├── main.js ├── router │ ├── index.js │ └── routes.js └── index.template.html ├── .eslintignore ├── doc ├── shot.png └── svg │ ├── 电力图符定义.doc │ └── 萇薯芞睫隅砱.doc ├── babel.config.js ├── dist └── spa │ ├── css │ ├── app.e0f1ca08.css.gz │ ├── 243bf772.e3a0afda.css │ └── 4b158788.484bb54c.css │ ├── js │ ├── app.31900840.js.gz │ ├── vendor.9bb01ffe.js.gz │ ├── 4b158788.dc2f5c9a.js.gz │ ├── 4b47640d.b4a4a9a8.js.gz │ ├── 4f201d3c.4bd1085f.js.gz │ └── 2d21eaa9.76267622.js │ ├── statics │ ├── quasar-logo.png │ └── topo │ │ ├── office │ │ ├── dev1.png │ │ ├── dev2.png │ │ ├── dev3.png │ │ ├── dev4.png │ │ ├── dev5.png │ │ ├── dev6.png │ │ ├── dev7.png │ │ ├── dev8.png │ │ ├── chair1.png │ │ ├── desk1.png │ │ ├── desk2.png │ │ ├── desk3.png │ │ ├── ground.jpg │ │ ├── wall1.png │ │ ├── cabinet1.png │ │ ├── cabinet2.png │ │ └── embellish1.png │ │ ├── svg │ │ ├── ellipse2.svg │ │ ├── loading │ │ │ ├── loading-7.svg │ │ │ ├── loading-6.svg │ │ │ ├── loading-2.svg │ │ │ ├── loading-8.svg │ │ │ ├── loading-5.svg │ │ │ ├── loading-4.svg │ │ │ ├── loading-3.svg │ │ │ └── loading-1.svg │ │ └── demo1.svg │ │ └── svg-dianli │ │ ├── PresetCapacitor_H.svg │ │ └── PresetCapacitor_V.svg │ ├── fonts │ ├── flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff │ └── flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2 │ └── index.html ├── .editorconfig ├── .postcssrc.js ├── src-electron ├── electron-flag.d.ts └── main-process │ ├── electron-main.dev.js │ └── electron-main.js ├── CHANGELOG.md ├── .stylintrc ├── LICENSE ├── package.json └── .eslintrc.js /src/boot/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /src -------------------------------------------------------------------------------- /src/css/app.styl: -------------------------------------------------------------------------------- 1 | // app global css 2 | -------------------------------------------------------------------------------- /src/statics/index.html: -------------------------------------------------------------------------------- 1 |
wo shi 生成文件
-------------------------------------------------------------------------------- /src/components/topo/control/svg/ViewStaticSvg.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /doc/shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/doc/shot.png -------------------------------------------------------------------------------- /doc/svg/电力图符定义.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/doc/svg/电力图符定义.doc -------------------------------------------------------------------------------- /doc/svg/萇薯芞睫隅砱.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/doc/svg/萇薯芞睫隅砱.doc -------------------------------------------------------------------------------- /src/i18n/zh-cn/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | failed: '操作失败', 3 | success: '操作成功' 4 | } -------------------------------------------------------------------------------- /src/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/assets/favicon.ico -------------------------------------------------------------------------------- /src/assets/img/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/assets/img/tt.png -------------------------------------------------------------------------------- /src/statics/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/bg.png -------------------------------------------------------------------------------- /src/statics/img/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/sc.png -------------------------------------------------------------------------------- /src/store/module-example/actions.js: -------------------------------------------------------------------------------- 1 | /* 2 | export function someAction (context) { 3 | } 4 | */ 5 | -------------------------------------------------------------------------------- /src/store/module-example/getters.js: -------------------------------------------------------------------------------- 1 | /* 2 | export function someGetter (state) { 3 | } 4 | */ 5 | -------------------------------------------------------------------------------- /src/i18n/index.js: -------------------------------------------------------------------------------- 1 | import enUS from './en-us' 2 | 3 | export default { 4 | 'en-us': enUS 5 | } 6 | -------------------------------------------------------------------------------- /src/statics/img/s01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/s01.png -------------------------------------------------------------------------------- /src/statics/img/svg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/svg4.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@quasar/babel-preset-app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /src/assets/img/waterA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/assets/img/waterA.png -------------------------------------------------------------------------------- /src/statics/img/Meter1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/Meter1.png -------------------------------------------------------------------------------- /src/statics/img/curve2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/curve2.png -------------------------------------------------------------------------------- /src/statics/img/curve6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/curve6.png -------------------------------------------------------------------------------- /src/statics/img/water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/water.png -------------------------------------------------------------------------------- /src/statics/quasar-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/quasar-logo.png -------------------------------------------------------------------------------- /src/statics/img/Piechart2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/Piechart2.jpg -------------------------------------------------------------------------------- /dist/spa/css/app.e0f1ca08.css.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/css/app.e0f1ca08.css.gz -------------------------------------------------------------------------------- /dist/spa/js/app.31900840.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/js/app.31900840.js.gz -------------------------------------------------------------------------------- /dist/spa/statics/quasar-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/quasar-logo.png -------------------------------------------------------------------------------- /src/assets/libs/httpurl.js: -------------------------------------------------------------------------------- 1 | const httprul = 'http://datav.jdwanxiang.com/webtopo/#' 2 | export default httprul 3 | -------------------------------------------------------------------------------- /src/statics/img/Histogram1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/Histogram1.jpg -------------------------------------------------------------------------------- /src/statics/topo/anima/timg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/anima/timg.jpg -------------------------------------------------------------------------------- /src/statics/topo/office/dev1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev1.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev2.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev3.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev4.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev5.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev6.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev7.png -------------------------------------------------------------------------------- /src/statics/topo/office/dev8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/dev8.png -------------------------------------------------------------------------------- /src/statics/topo/office/jq01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/jq01.png -------------------------------------------------------------------------------- /src/statics/topo/office/pct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/pct.png -------------------------------------------------------------------------------- /src/statics/topo/office/qiti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/qiti.png -------------------------------------------------------------------------------- /src/statics/topo/svg/switch1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/switch1.png -------------------------------------------------------------------------------- /dist/spa/js/vendor.9bb01ffe.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/js/vendor.9bb01ffe.js.gz -------------------------------------------------------------------------------- /src/assets/libs/datatype.js: -------------------------------------------------------------------------------- 1 | //传感器类型 2 | let sensortype = [ '开关','字符串', '视频'] 3 | export default { 4 | sensortype 5 | } -------------------------------------------------------------------------------- /src/statics/img/historyReport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/img/historyReport.png -------------------------------------------------------------------------------- /src/statics/topo/office/chair1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/chair1.png -------------------------------------------------------------------------------- /src/statics/topo/office/desk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/desk1.png -------------------------------------------------------------------------------- /src/statics/topo/office/desk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/desk2.png -------------------------------------------------------------------------------- /src/statics/topo/office/desk3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/desk3.png -------------------------------------------------------------------------------- /src/statics/topo/office/ground.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/ground.jpg -------------------------------------------------------------------------------- /src/statics/topo/office/wall1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/wall1.png -------------------------------------------------------------------------------- /dist/spa/js/4b158788.dc2f5c9a.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/js/4b158788.dc2f5c9a.js.gz -------------------------------------------------------------------------------- /dist/spa/js/4b47640d.b4a4a9a8.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/js/4b47640d.b4a4a9a8.js.gz -------------------------------------------------------------------------------- /dist/spa/js/4f201d3c.4bd1085f.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/js/4f201d3c.4bd1085f.js.gz -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev1.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev2.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev3.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev4.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev5.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev6.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev7.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/dev8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/dev8.png -------------------------------------------------------------------------------- /src/statics/topo/office/cabinet1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/cabinet1.png -------------------------------------------------------------------------------- /src/statics/topo/office/cabinet2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/cabinet2.png -------------------------------------------------------------------------------- /src/statics/topo/office/jiantou01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/jiantou01.gif -------------------------------------------------------------------------------- /src/statics/topo/office/switch1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/switch1.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/chair1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/chair1.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/desk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/desk1.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/desk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/desk2.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/desk3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/desk3.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/ground.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/ground.jpg -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/wall1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/wall1.png -------------------------------------------------------------------------------- /src/boot/axios.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | 3 | export default async ({ Vue }) => { 4 | Vue.prototype.$axios = axios 5 | } 6 | -------------------------------------------------------------------------------- /src/statics/topo/office/embellish1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/embellish1.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/cabinet1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/cabinet1.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/cabinet2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/cabinet2.png -------------------------------------------------------------------------------- /dist/spa/statics/topo/office/embellish1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/statics/topo/office/embellish1.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190620231255_288.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190620231255_288.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190701181354_914.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190701181354_914.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190701181422_301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190701181422_301.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190701181428_161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190701181428_161.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190701181434_604.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190701181434_604.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190701182101_368.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190701182101_368.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190701182105_431.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190701182105_431.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190702163925_551.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190702163925_551.png -------------------------------------------------------------------------------- /src/statics/topo/svg/20190702170803_715.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/svg/20190702170803_715.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190620231255_288.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190620231255_288.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190701181354_914.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190701181354_914.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190701181422_301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190701181422_301.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190701181428_161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190701181428_161.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190701181434_604.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190701181434_604.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190701182101_368.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190701182101_368.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190701182105_431.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190701182105_431.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190702163925_551.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190702163925_551.png -------------------------------------------------------------------------------- /src/statics/topo/office/20190702170803_715.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/src/statics/topo/office/20190702170803_715.png -------------------------------------------------------------------------------- /src/views/login.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui'; 3 | import 'element-ui/lib/theme-chalk/index.css'; 4 | Vue.use(ElementUI); 5 | -------------------------------------------------------------------------------- /dist/spa/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNa.29b882f0.woff -------------------------------------------------------------------------------- /dist/spa/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Semporia/WebTopo/master/dist/spa/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.0509ab09.woff2 -------------------------------------------------------------------------------- /src/statics/topo/svg/ellipse2.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/store/module-example/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // 3 | userAccount:'', // 登录用户 4 | userDatalist:'', // 5 | Projectnametlist:[], // 项目列表 6 | ProjectFacility:[] //设备组 7 | } 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/ellipse2.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/i18n/en-us/index.js: -------------------------------------------------------------------------------- 1 | // This is just an example, 2 | // so you can safely delete all default props below 3 | 4 | export default { 5 | failed: 'Action failed', 6 | success: 'Action was successful' 7 | } 8 | -------------------------------------------------------------------------------- /src/store/topo-editor/actions.js: -------------------------------------------------------------------------------- 1 | 2 | import jsonData from '../../assets/data/topo-data.json'; 3 | 4 | export const loadDefaultTopoData = (ctx) => { 5 | ctx.state.topoData = jsonData; //后期可以远程数据 6 | } -------------------------------------------------------------------------------- /src/boot/EventBus.js: -------------------------------------------------------------------------------- 1 | 2 | import simpleEventBus from 'src/assets/libs/simpleEventBus.js' 3 | 4 | 5 | export default ({ app, router, store, Vue }) => { 6 | Vue.prototype.SimpleEventBus = simpleEventBus; 7 | } -------------------------------------------------------------------------------- /src/store/topo-editor/getters.js: -------------------------------------------------------------------------------- 1 | export const getTopoConfigData = (state) => { 2 | return state.topoData; 3 | }; 4 | 5 | export const getSelectedComponents = (state) => { 6 | return state.selectedComponents; 7 | }; -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | plugins: [ 5 | // to edit target browsers: use "browserslist" field in package.json 6 | require('autoprefixer') 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /src/boot/config.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui'; 3 | import 'element-ui/lib/theme-chalk/index.css'; 4 | import global_ from '../assets/libs/httpurl'; 5 | Vue.prototype.global = global_; 6 | Vue.use(ElementUI); 7 | -------------------------------------------------------------------------------- /src/boot/x2js.js: -------------------------------------------------------------------------------- 1 | // import something here 2 | import x2js from 'x2js' //xml数据处理插件 3 | 4 | // "async" is optional 5 | export default async ({ /* app, router, Vue, ... */ Vue }) => { 6 | Vue.prototype.$x2js = new x2js() //创建x2js对象,挂到vue原型上 7 | } 8 | -------------------------------------------------------------------------------- /src/pages/Index.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /src/assets/data/topo-data.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "图层", 3 | "layer": { 4 | "backColor": "#eee", 5 | "backgroundImage": "", 6 | "widthHeightRatio": "", 7 | "width":1600, 8 | "height":900 9 | }, 10 | "components": [ 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/assets/libs/uid.js: -------------------------------------------------------------------------------- 1 | function s4 () { 2 | return Math.floor((1 + Math.random()) * 0x10000) 3 | .toString(16) 4 | .substring(1) 5 | } 6 | 7 | export default function () { 8 | return s4() + s4() + '-' + s4() + '-' + s4() + '-' + 9 | s4() + '-' + s4() + s4() + s4() 10 | } -------------------------------------------------------------------------------- /src/store/topo-editor/index.js: -------------------------------------------------------------------------------- 1 | import state from './state' 2 | import * as getters from './getters' 3 | import * as mutations from './mutations' 4 | import * as actions from './actions' 5 | 6 | export default { 7 | namespaced: true, 8 | state, 9 | getters, 10 | mutations, 11 | actions 12 | } 13 | -------------------------------------------------------------------------------- /src/store/module-example/index.js: -------------------------------------------------------------------------------- 1 | import state from './state' 2 | import * as getters from './getters' 3 | import * as mutations from './mutations' 4 | import * as actions from './actions' 5 | 6 | export default { 7 | namespaced: true, 8 | state, 9 | getters, 10 | mutations, 11 | actions 12 | } 13 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 23 | -------------------------------------------------------------------------------- /src/store/store-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | store: true; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src-electron/electron-flag.d.ts: -------------------------------------------------------------------------------- 1 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 2 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 3 | import "quasar/dist/types/feature-flag"; 4 | 5 | declare module "quasar/dist/types/feature-flag" { 6 | interface QuasarFeatureFlags { 7 | electron: true; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/boot/i18n.js: -------------------------------------------------------------------------------- 1 | import VueI18n from 'vue-i18n' 2 | import messages from 'src/i18n' 3 | 4 | export default async ({ app, Vue }) => { 5 | Vue.use(VueI18n) 6 | 7 | // Set i18n instance on app 8 | app.i18n = new VueI18n({ 9 | locale: 'en-us', 10 | fallbackLocale: 'en-us', 11 | messages 12 | }) 13 | } 14 | -------------------------------------------------------------------------------- /src/layouts/TopoLayout.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 19 | -------------------------------------------------------------------------------- /dist/spa/js/2d21eaa9.76267622.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["2d21eaa9"],{d711:function(e,n,t){"use strict";t.r(n);var a=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("router-view")},o=[],u={name:"TopoLayout"},r=u,l=t("6691"),c=Object(l["a"])(r,a,o,!1,null,null,null);n["default"]=c.exports}}]); -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## 2019-12-13 4 | - 优化删除组件后,该组件后面的组件不显示的问题 5 | 具体原因查看https://www.jianshu.com/p/844e4afc77b8 6 | 改为使用id绑定,而不是数组的index 7 | 8 | 9 | ## 2019-12-06 10 | - 增加撤销和恢复的演示 11 | - 将复制、新增、移动改为命令模式(请求和实现分离) 12 | 13 | 仅仅提供了拖放控件后的撤销和恢复,且每次操作后要重新点击面板获取焦点才能操作(bug,抽时间搞这个弄到凌晨2点了,以后再解决吧) 14 | 实现整体思想很简单,使用设计模式的命令模式即可。 -------------------------------------------------------------------------------- /src/statics/mada/md.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set /p w=请输入文件格式(即扩展名并以回车结束): 3 | set /p str1=请输入要修改的文字(以回车结束): 4 | set /p str2=请输入要改成的文字(若是删除则直接回车,以回车结束): 5 | for /f "delims=" %%i in ('dir /b /a-d "*.%w%"' ) do ( 6 | set str3=%%i 7 | setlocal EnableDelayedExpansion 8 | set "str3=!str3:%str1%=%str2%!" 9 | ren "%%i" "!str3!" 10 | endlocal 11 | ) 12 | pause -------------------------------------------------------------------------------- /src/statics/zhuangz/md.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set /p w=请输入文件格式(即扩展名并以回车结束): 3 | set /p str1=请输入要修改的文字(以回车结束): 4 | set /p str2=请输入要改成的文字(若是删除则直接回车,以回车结束): 5 | for /f "delims=" %%i in ('dir /b /a-d "*.%w%"' ) do ( 6 | set str3=%%i 7 | setlocal EnableDelayedExpansion 8 | set "str3=!str3:%str1%=%str2%!" 9 | ren "%%i" "!str3!" 10 | endlocal 11 | ) 12 | pause -------------------------------------------------------------------------------- /src/statics/shuibeng/md.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | set /p w=请输入文件格式(即扩展名并以回车结束): 3 | set /p str1=请输入要修改的文字(以回车结束): 4 | set /p str2=请输入要改成的文字(若是删除则直接回车,以回车结束): 5 | for /f "delims=" %%i in ('dir /b /a-d "*.%w%"' ) do ( 6 | set str3=%%i 7 | setlocal EnableDelayedExpansion 8 | set "str3=!str3:%str1%=%str2%!" 9 | ren "%%i" "!str3!" 10 | endlocal 11 | ) 12 | pause -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | 6 | 7 | import axios from 'axios' 8 | Vue.prototype.$axios = axios; 9 | Vue.config.productionTip = false 10 | 11 | new Vue({ 12 | router, 13 | store, 14 | 15 | render: h => h(App) 16 | }).$mount('#app') 17 | -------------------------------------------------------------------------------- /dist/spa/css/243bf772.e3a0afda.css: -------------------------------------------------------------------------------- 1 | .topo-render{overflow:auto;background-color:#fff;background-clip:padding-box;background-origin:padding-box;background-repeat:no-repeat;background-size:100% 100%;position:relative;height:100%}.topo-render .topo-render-wrapper{position:absolute}.topo-render .topo-render-wrapper-clickable{cursor:pointer}.topo-fullscreen{height:100vh;width:100%} -------------------------------------------------------------------------------- /src/statics/topo/svg-dianli/PresetCapacitor_H.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/statics/topo/svg-dianli/PresetCapacitor_V.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg-dianli/PresetCapacitor_H.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg-dianli/PresetCapacitor_V.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /dist/spa/css/4b158788.484bb54c.css: -------------------------------------------------------------------------------- 1 | .view-text{height:100%;width:100%}.view-image{height:100%;text-align:center;display:flex;justify-content:center;align-items:center}.view-line-arrow{height:100%;width:100%;position:relative}.view-line-arrow .passby{position:absolute;height:10px;width:10px;background-color:#fff;border:1px solid #0cf;left:-5px;top:-5px;cursor:move}.view-chart,.view-chart-gauge,.view-chart-pie{height:100%;width:100%;text-align:center;display:flex;justify-content:center;align-items:center} -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | import example from './module-example' 5 | import topoEditor from './topo-editor'; 6 | 7 | Vue.use(Vuex) 8 | 9 | /* 10 | * If not building with SSR mode, you can 11 | * directly export the Store instantiation 12 | */ 13 | 14 | export default function (/* { ssrContext } */) { 15 | const Store = new Vuex.Store({ 16 | modules: { 17 | example, 18 | topoEditor 19 | } 20 | }) 21 | 22 | return Store 23 | } 24 | -------------------------------------------------------------------------------- /src/pages/Error404.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 23 | -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-7.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/store/module-example/mutations.js: -------------------------------------------------------------------------------- 1 | /* 2 | export function someMutation (state) { 3 | } 4 | */ 5 | export const getuserAccount = (state,itemsv) =>{ 6 | state.userAccount = itemsv 7 | // 登录用户 8 | } 9 | // 用户列表 10 | export const getuserDatalist = (state,itemsv) =>{ 11 | state.userDatalist = itemsv 12 | 13 | } 14 | // 项目列表 15 | export const getProjectnametlist = (state,itemsv) =>{ 16 | console.log(itemsv); 17 | state.Projectnametlist = itemsv 18 | } 19 | // 设备组 20 | export const ProjectFacility = (state,itemsv) =>{ 21 | state.ProjectFacility = itemsv 22 | } 23 | -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/assets/data/chart-bar.json: -------------------------------------------------------------------------------- 1 | { 2 | "xAxis": { 3 | "type": "category", 4 | "data": [ 5 | "Mon", 6 | "Tue", 7 | "Wed", 8 | "Thu", 9 | "Fri", 10 | "Sat", 11 | "Sun" 12 | ] 13 | }, 14 | "yAxis": { 15 | "type": "value" 16 | }, 17 | "series": [ 18 | { 19 | "data": [ 20 | 120, 21 | 200, 22 | 150, 23 | 80, 24 | 70, 25 | 110, 26 | 130 27 | ], 28 | "type": "bar" 29 | } 30 | ] 31 | } -------------------------------------------------------------------------------- /src/css/quasar.variables.styl: -------------------------------------------------------------------------------- 1 | // Quasar Stylus Variables 2 | // -------------------------------------------------- 3 | // To customize the look and feel of this app, you can override 4 | // the Stylus variables found in Quasar's source Stylus files. 5 | 6 | // Check documentation for full list of Quasar variables 7 | 8 | // It's highly recommended to change the default colors 9 | // to match your app's branding. 10 | // Tip: Use the "Theme Builder" on Quasar's documentation website. 11 | 12 | $primary = #027BE3 13 | $secondary = #26A69A 14 | $accent = #9C27B0 15 | 16 | $positive = #21BA45 17 | $negative = #C10015 18 | $info = #31CCEC 19 | $warning = #F2C037 20 | -------------------------------------------------------------------------------- /src/assets/data/chart-line.json: -------------------------------------------------------------------------------- 1 | { 2 | "xAxis": { 3 | "type": "category", 4 | "data": [ 5 | "Mon", 6 | "Tue", 7 | "Wed", 8 | "Thu", 9 | "Fri", 10 | "Sat", 11 | "Sun" 12 | ] 13 | }, 14 | "yAxis": { 15 | "type": "value" 16 | }, 17 | "series": [ 18 | { 19 | "data": [ 20 | 820, 21 | 932, 22 | 901, 23 | 934, 24 | 1290, 25 | 1330, 26 | 1320 27 | ], 28 | "type": "line", 29 | "smooth": true 30 | } 31 | ] 32 | } -------------------------------------------------------------------------------- /src/components/topo/control/svg/ViewSvgImage.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 25 | -------------------------------------------------------------------------------- /src/store/topo-editor/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | topoData: { 3 | name: '--', 4 | layer: { 5 | backColor: '', 6 | backgroundImage: '', 7 | widthHeightRatio: '', 8 | width: 1600, 9 | height: 900 10 | }, 11 | components: [], 12 | 13 | }, //当前场景的组态数据 14 | selectedComponentMapdemo:true, 15 | istopoData:false, 16 | selectedIsLayer: true, //当前选择的是不是layer层 17 | selectedComponent: null,//当前选择的单个组件--仅仅当只有一个组件选中有效,当有多个组件选中,则置为null 18 | selectedComponents: [], //当前选择的组件--只存identifier 19 | selectedComponentMap: {}, //当前选择的组件--key=identifier,本数据和selectedComponents同步,主要用于渲染判断 20 | copySrcItems: [],//当前是否使用了CTRL+C命令 21 | copyCount: 0,//copy计数,对于同一个复制源,每次复制后计数+1 22 | undoStack: [],// 23 | redoStack: [],// 24 | 25 | } 26 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/demo1.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src-electron/main-process/electron-main.dev.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This file is used specifically and only for development. It installs 3 | * `electron-debug` & `vue-devtools`. There shouldn't be any need to 4 | * modify this file, but it can be used to extend your development 5 | * environment. 6 | */ 7 | 8 | // Install `electron-debug` with `devtron` 9 | require('electron-debug')({ showDevTools: true }) 10 | 11 | // Install `vue-devtools` 12 | require('electron').app.on('ready', () => { 13 | let installExtension = require('electron-devtools-installer') 14 | installExtension.default(installExtension.VUEJS_DEVTOOLS) 15 | .then(() => {}) 16 | .catch(err => { 17 | console.log('Unable to install `vue-devtools`: \n', err) 18 | }) 19 | }) 20 | 21 | // Require `main` process to boot app 22 | require('./electron-main') 23 | -------------------------------------------------------------------------------- /src/statics/topo/svg/demo1.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/chart/ChartWrapper.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 39 | -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.stylintrc: -------------------------------------------------------------------------------- 1 | { 2 | "blocks": "never", 3 | "brackets": "never", 4 | "colons": "never", 5 | "colors": "always", 6 | "commaSpace": "always", 7 | "commentSpace": "always", 8 | "cssLiteral": "never", 9 | "depthLimit": false, 10 | "duplicates": true, 11 | "efficient": "always", 12 | "extendPref": false, 13 | "globalDupe": true, 14 | "indentPref": 2, 15 | "leadingZero": "never", 16 | "maxErrors": false, 17 | "maxWarnings": false, 18 | "mixed": false, 19 | "namingConvention": false, 20 | "namingConventionStrict": false, 21 | "none": "never", 22 | "noImportant": false, 23 | "parenSpace": "never", 24 | "placeholder": false, 25 | "prefixVarsWithDollar": "always", 26 | "quotePref": "single", 27 | "semicolons": "never", 28 | "sortOrder": false, 29 | "stackedProperties": "never", 30 | "trailingWhitespace": "never", 31 | "universal": "never", 32 | "valid": true, 33 | "zeroUnits": "never", 34 | "zIndexNormalize": false 35 | } 36 | -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-8.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-8.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/components/topo/control/svg/ViewSvgStatic.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2019 phynos 3 | 4 | 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: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | 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. -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/assets/libs/websocket.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | //const wsuri = process.env.WS_API; 4 | const wsuri = ""; 5 | 6 | var WebSocketUtil = function() { 7 | this.websock = null; 8 | this._reconnect = function () { 9 | 10 | }; 11 | } 12 | 13 | WebSocketUtil.prototype.initSocket = function() { 14 | this.websock = new WebSocket(wsuri); 15 | this.websock.onopen = () => { 16 | 17 | }; 18 | this.websock.onmessage = (msg) => { 19 | 20 | }; 21 | this.websock.onclose = (evt) => { 22 | console.log('socket close', evt); 23 | this.websock = null; 24 | if (this.socketClose) { 25 | this.socketClose(); 26 | } 27 | }; 28 | this.websock.onerror = () => { 29 | this.destroy(); 30 | this._reconnect(); 31 | } 32 | } 33 | 34 | WebSocketUtil.prototype.send = function() { 35 | 36 | } 37 | 38 | WebSocketUtil.prototype.destroy = function () { 39 | if (this.websock) { 40 | this.websock.close(); 41 | } 42 | this.websock = null; 43 | }; 44 | 45 | const Instance = new WebSocketUtil(); 46 | export default Instance; 47 | -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/components/chart/ChartMapView.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 44 | -------------------------------------------------------------------------------- /src/components/topo/control/ViewText.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 40 | 41 | 48 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | // import Login from '../views/Login.vue' 4 | import routes from './routes' 5 | 6 | Vue.use(VueRouter) 7 | 8 | 9 | 10 | /* 11 | * If not building with SSR mode, you can 12 | * directly export the Router instantiation 13 | */ 14 | // const routerPush = VueRouter.prototype.push 15 | // VueRouter.prototype.push = function push(location) { 16 | // return routerPush.call(this, location).catch(error=> error) 17 | // } 18 | 19 | 20 | export default function (/* { store, ssrContext } */) { 21 | const Router = new VueRouter({ 22 | scrollBehavior: () => ({ y: 0 }), 23 | routes, 24 | mode: 'hash', 25 | // Leave these as is and change from quasar.conf.js instead! 26 | // quasar.conf.js -> build -> vueRouterMode 27 | // quasar.conf.js -> build -> publicPath 28 | // mode: process.env.VUE_ROUTER_MODE, 29 | base: process.env.VUE_ROUTER_BASE 30 | }) 31 | 32 | const originalPush = VueRouter.prototype.push 33 | VueRouter.prototype.push = function push(location) { 34 | return originalPush.call(this, location).catch(err => err) 35 | } 36 | return Router 37 | } -------------------------------------------------------------------------------- /src/statics/guandao/gd26.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/statics/guandao/gd25.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/assets/data/chart-lines.json: -------------------------------------------------------------------------------- 1 | { 2 | "grid": { 3 | "top": "0%", 4 | "left": "0%", 5 | "right": "0%", 6 | "bottom": "0%" 7 | }, 8 | "xAxis": { 9 | "show": false, 10 | "min": 0, 11 | "max": 1200 12 | }, 13 | "yAxis": { 14 | "show": false, 15 | "min": 0, 16 | "max": 1200 17 | }, 18 | "series": [ 19 | { 20 | "type": "lines", 21 | "coordinateSystem": "cartesian2d", 22 | "z": 1, 23 | "zlevel": 7, 24 | "animation": true, 25 | 26 | "effect": { 27 | "show": true, 28 | "period": 5, 29 | "trailLength": 0.71, 30 | "symbolSize": 20, 31 | "width": 100, 32 | "symbol": "circle", 33 | "loop": true, 34 | "color": "yellow" 35 | }, 36 | "lineStyle": { 37 | "type": "solid", 38 | "width": 0, 39 | "curveness": 0 40 | }, 41 | "data": [ 42 | { 43 | "coords": [ 44 | [0, 400], 45 | [1230, 400] 46 | ] 47 | } 48 | ] 49 | }] 50 | } -------------------------------------------------------------------------------- /src/components/topo/control/View.vue: -------------------------------------------------------------------------------- 1 | 54 | -------------------------------------------------------------------------------- /src-electron/main-process/electron-main.js: -------------------------------------------------------------------------------- 1 | import { app, BrowserWindow } from 'electron' 2 | 3 | /** 4 | * Set `__statics` path to static files in production; 5 | * The reason we are setting it here is that the path needs to be evaluated at runtime 6 | */ 7 | if (process.env.PROD) { 8 | global.__statics = require('path').join(__dirname, 'statics').replace(/\\/g, '\\\\') 9 | } 10 | 11 | let mainWindow 12 | 13 | function createWindow () { 14 | /** 15 | * Initial window options 16 | */ 17 | mainWindow = new BrowserWindow({ 18 | width: 1000, 19 | height: 600, 20 | useContentSize: true, 21 | webPreferences: { 22 | // keep in sync with /quasar.conf.js > electron > nodeIntegration 23 | // (where its default value is "true") 24 | // More info: https://quasar.dev/quasar-cli/developing-electron-apps/node-integration 25 | nodeIntegration: true 26 | } 27 | }) 28 | 29 | mainWindow.loadURL(process.env.APP_URL) 30 | 31 | mainWindow.on('closed', () => { 32 | mainWindow = null 33 | }) 34 | } 35 | 36 | app.on('ready', createWindow) 37 | 38 | app.on('window-all-closed', () => { 39 | if (process.platform !== 'darwin') { 40 | app.quit() 41 | } 42 | }) 43 | 44 | app.on('activate', () => { 45 | if (mainWindow === null) { 46 | createWindow() 47 | } 48 | }) 49 | -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WebTopo", 3 | "version": "0.0.1", 4 | "description": "web", 5 | "productName": "WebTopo", 6 | "cordovaId": "phynos", 7 | "author": "phynos", 8 | "private": true, 9 | "scripts": { 10 | "lint": "eslint --ext .js,.vue src", 11 | "dev": "quasar dev", 12 | "build": "quasar build", 13 | "build:pwa": "quasar build -m pwa", 14 | "test": "echo \"No test specified\" && exit 0" 15 | }, 16 | "dependencies": { 17 | "@quasar/extras": "^1.3.2", 18 | "axios": "^0.19.0", 19 | "clipboard": "^2.0.6", 20 | "echarts": "^4.9.0", 21 | "echarts-liquidfill": "^2.0.6", 22 | "element-ui": "^2.13.2", 23 | "moment": "^2.24.0", 24 | "quasar": "^1.2.5", 25 | "vue-i18n": "^7.3.3", 26 | "x2js": "^3.3.1" 27 | }, 28 | "devDependencies": { 29 | "@quasar/app": "^1.2.2", 30 | "@vue/eslint-config-standard": "^4.0.0", 31 | "babel-eslint": "^10.0.1", 32 | "eslint": "^5.10.0", 33 | "eslint-loader": "^2.1.1", 34 | "eslint-plugin-vue": "^5.0.0", 35 | "node-sass": "^4.12.0", 36 | "sass-loader": "^7.1.0", 37 | "strip-ansi": "=3.0.1" 38 | }, 39 | "engines": { 40 | "node": ">= 8.9.0", 41 | "npm": ">= 5.6.0", 42 | "yarn": ">= 1.6.0" 43 | }, 44 | "browserslist": [ 45 | "last 1 version, not dead, ie >= 11" 46 | ], 47 | "resolutions": { 48 | "ajv": "6.8.1" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/components/topo/control/ViewButtom.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 50 | 51 | -------------------------------------------------------------------------------- /src/components/topo/control/canvas/ViewTriangle.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 46 | -------------------------------------------------------------------------------- /src/assets/libs/simpleEventBus.js: -------------------------------------------------------------------------------- 1 | // 构造EventBus 2 | function SimpleEventBus() { 3 | this.msgQueues = {} 4 | } 5 | 6 | SimpleEventBus.prototype = { 7 | // 将消息保存到当前的消息队列中 8 | on: function(msgName, func) { 9 | if (this.msgQueues.hasOwnProperty(msgName)) { 10 | if (typeof this.msgQueues[msgName] === 'function') { 11 | this.msgQueues[msgName] = [this.msgQueues[msgName], func] 12 | } else { 13 | this.msgQueues[msgName] = [...this.msgQueues[msgName], func] 14 | } 15 | } else { 16 | this.msgQueues[msgName] = func; 17 | } 18 | }, 19 | // 消息队列中仅保存一个消息 20 | one: function(msgName, func) { 21 | // 无需检查msgName是否存在 22 | this.msgQueues[msgName] = func; 23 | }, 24 | // 发送消息 25 | emit: function(msgName, msg) { 26 | if (!this.msgQueues.hasOwnProperty(msgName)) { 27 | return 28 | } 29 | if (typeof this.msgQueues[msgName] === 'function') { 30 | this.msgQueues[msgName](msg) 31 | } else { 32 | this.msgQueues[msgName].map((fn) => { 33 | fn(msg) 34 | }) 35 | } 36 | }, 37 | // 移除消息 38 | off: function(msgName) { 39 | if (!this.msgQueues.hasOwnProperty(msgName)) { 40 | return 41 | } 42 | delete this.msgQueues[msgName] 43 | } 44 | } 45 | 46 | // 将EventBus放到window对象中 47 | const Instance = new SimpleEventBus() 48 | export default Instance; -------------------------------------------------------------------------------- /src/statics/topo/office/jiantou.svg: -------------------------------------------------------------------------------- 1 | jiantou -------------------------------------------------------------------------------- /src/statics/topo/office/jiantou2.svg: -------------------------------------------------------------------------------- 1 | jiantou2 -------------------------------------------------------------------------------- /src/statics/topo/office/jiantou3.svg: -------------------------------------------------------------------------------- 1 | jiantou3 -------------------------------------------------------------------------------- /src/components/topo/control/canvas/ViewCircular.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 44 | -------------------------------------------------------------------------------- /src/components/topo/control/ViewImage.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 49 | 50 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | 4 | parserOptions: { 5 | parser: 'babel-eslint', 6 | sourceType: 'module' 7 | }, 8 | 9 | env: { 10 | browser: true 11 | }, 12 | 13 | extends: [ 14 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention 15 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 16 | 'plugin:vue/essential', 17 | '@vue/standard' 18 | ], 19 | 20 | // required to lint *.vue files 21 | plugins: [ 22 | 'vue' 23 | ], 24 | 25 | globals: { 26 | 'ga': true, // Google Analytics 27 | 'cordova': true, 28 | '__statics': true, 29 | 'process': true 30 | }, 31 | 32 | // add your custom rules here 33 | rules: { 34 | // allow async-await 35 | 'generator-star-spacing': 'off', 36 | // allow paren-less arrow functions 37 | 'arrow-parens': 'off', 38 | 'one-var': 'off', 39 | 40 | 'import/first': 'off', 41 | 'import/named': 'error', 42 | 'import/namespace': 'error', 43 | 'import/default': 'error', 44 | 'import/export': 'error', 45 | 'import/extensions': 'off', 46 | 'import/no-unresolved': 'off', 47 | 'import/no-extraneous-dependencies': 'off', 48 | 'prefer-promise-reject-errors': 'off', 49 | 50 | // allow console.log during development only 51 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 52 | // allow debugger during development only 53 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/views/my-q-menu-item.vue: -------------------------------------------------------------------------------- 1 | 7 | 49 | 50 | 60 | -------------------------------------------------------------------------------- /src/router/routes.js: -------------------------------------------------------------------------------- 1 | import Login from '../views/Login.vue' 2 | import Home from '../views/Home.vue' 3 | const routes = [ 4 | { 5 | path: '/', 6 | name: 'Login', 7 | component: Login 8 | }, 9 | { 10 | path: '/Home', 11 | name: 'Home', 12 | component: Home, 13 | children:[ 14 | { 15 | path: '/', 16 | 17 | component: resolve => require(['../views/Projectmanage'], resolve) 18 | }, 19 | { 20 | path: '/Projectmanage', 21 | component: resolve => require(['../views/Projectmanage'], resolve) 22 | }, 23 | { 24 | path: '/usermanage', 25 | 26 | component: resolve => require(['../views/usermanage'], resolve) 27 | }, 28 | { 29 | path: '/Facility', 30 | component: resolve => require(['../views/Facility'], resolve) 31 | }, 32 | ] 33 | }, 34 | { 35 | path: '/TopoLayout', 36 | name:'TopoLayout', 37 | component: () => import('layouts/TopoLayout.vue'), 38 | children: [ 39 | { 40 | path: '', component: () => import('pages/topo/Editor.vue') 41 | } 42 | ] 43 | }, 44 | { 45 | path: '/Fullscreenpage', 46 | name: 'Fullscreenpage', 47 | component: () => import('pages/topo/Fullscreenpage'), 48 | }, 49 | { 50 | path: '/Fullscreen', name: 'Fullscreen',component: () => import('pages/topo/Fullscreen.vue') 51 | } 52 | ] 53 | 54 | // Always leave this as last one 55 | if (process.env.MODE !== 'ssr') { 56 | routes.push({ 57 | path: '*', 58 | component: () => import('pages/Error404.vue') 59 | }) 60 | } 61 | 62 | export default routes 63 | -------------------------------------------------------------------------------- /src/components/topo/control/canvas/ViewLine.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 48 | -------------------------------------------------------------------------------- /src/pages/topo/Editor.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 44 | 45 | 69 | -------------------------------------------------------------------------------- /src/components/topo/control/canvas/ViewLineWave.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 50 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向左展开.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dist/spa/index.html: -------------------------------------------------------------------------------- 1 | WebTopo
-------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向上展开.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向下展开.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/topo/data-toolbox/svg-dianli.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "SVG-电力元件", 3 | "icon": "payment", 4 | "opened": false, 5 | "items": [{ 6 | "text": "预调电容器-水平", 7 | "icon": "stop", 8 | "isFontIcon": true, 9 | "info": { 10 | "type": "svg-static", 11 | "action": [], 12 | "dataBind": { 13 | "sn": "", 14 | "title": "", 15 | "biz": "", 16 | "queryParam": {} 17 | }, 18 | "style": { 19 | "position": { 20 | "x": 0, 21 | "y": 0, 22 | "w": 100, 23 | "h": 100 24 | }, 25 | "backColor": "transparent", 26 | "zIndex": 1, 27 | "url": "statics/topo/svg-dianli/PresetCapacitor_H.svg" 28 | } 29 | } 30 | },{ 31 | "text": "预调电容器-垂直", 32 | "icon": "stop", 33 | "isFontIcon": true, 34 | "info": { 35 | "type": "svg-static", 36 | "action": [], 37 | "dataBind": { 38 | "sn": "", 39 | "title": "", 40 | "biz": "", 41 | "queryParam": {} 42 | }, 43 | "style": { 44 | "position": { 45 | "x": 0, 46 | "y": 0, 47 | "w": 200, 48 | "h": 200 49 | }, 50 | "backColor": "transparent", 51 | "zIndex": 1, 52 | "url": "statics/topo/svg-dianli/PresetCapacitor_V.svg" 53 | } 54 | } 55 | } 56 | ] 57 | } -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向右展开.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/famen/famen18.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/assets/libs/topo.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | //射线法-边界检测-只能检测凸边形(检测点在不在多边形里面) 4 | function inRange(x, y, points) { 5 | // points表示多边形的顶点集合 6 | let inside = false; 7 | for (let i = 0, j = points.length - 1; i < points.length; j = i++) { 8 | let xi = points[i][0], 9 | yi = points[i][1]; 10 | let xj = points[j][0], 11 | yj = points[j][1]; 12 | let intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); 13 | if (intersect) 14 | inside = !inside; 15 | } 16 | return inside; 17 | } 18 | 19 | /** 20 | * 矩形边界检测-中心点判断法 21 | * @param {*} frameRect 22 | * @param {*} itemRect 23 | */ 24 | export function checkByPointInRect(frameRect,itemRect) { 25 | var x = itemRect.x + itemRect.width / 2, 26 | y = itemRect.y + itemRect.height / 2; 27 | if( x > frameRect.x && y > frameRect.y && x < (frameRect.x + frameRect.width) && y < (frameRect.y + frameRect.height)) 28 | return true; 29 | else 30 | return false; 31 | } 32 | 33 | /** 34 | * 矩形边界检测-碰撞检测法 35 | * 两个矩形中心点在x方向的距离的绝对值小于等于矩形宽度和的二分之一,同时y方向的距离的绝对值小于等于矩形高度和的二分之一 36 | * @param {*} frameRect 37 | * @param {*} itemRect 38 | */ 39 | export function checkByRectCollisionDetection(frameRect,itemRect) { 40 | var x1 = frameRect.x + frameRect.width / 2, 41 | y1 = frameRect.y + frameRect.height / 2, 42 | w1 = frameRect.width, 43 | h1 = frameRect.height; 44 | var x2 = itemRect.x + itemRect.width / 2, 45 | y2 = itemRect.y + itemRect.height / 2, 46 | w2 = itemRect.width, 47 | h2 = itemRect.height; 48 | if(Math.abs(x1 - x2) < ((w1 + w2) / 2) && Math.abs(y1 - y2) < ((h1 + h2) / 2)) 49 | return true; 50 | else 51 | return false; 52 | } -------------------------------------------------------------------------------- /src/statics/topo/svg/loading/loading-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dist/spa/statics/topo/svg/loading/loading-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向右滑入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-从右滚入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/index.template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= htmlWebpackPlugin.options.productName %> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
35 | 36 | 37 | -------------------------------------------------------------------------------- /src/statics/guandao/gd2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向下滑入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向左滑入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/echarts-map-json/province/aomen.json: -------------------------------------------------------------------------------- 1 | {"type":"FeatureCollection","features":[{"id":"820001","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@LADC^umZ@DONWE@DALBBF@H@DFBBTC"],["@@P@LC@AGM@OECMBABBTCD@DDH"]],"encodeOffsets":[[[116285,22746]],[[116303,22746]]]},"properties":{"cp":[113.552965,22.207882],"name":"花地玛堂区","childNum":2}},{"id":"820002","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@MK@CA@AAGDEB@NVFJG"],"encodeOffsets":[[116281,22734]]},"properties":{"cp":[113.549052,22.199175],"name":"花王堂区","childNum":1}},{"id":"820003","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@EGOB@DNLHE@C"],"encodeOffsets":[[116285,22729]]},"properties":{"cp":[113.550252,22.193791],"name":"望德堂区","childNum":1}},{"id":"820004","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ŸYMVAN@BFCBBDAFHDBBFDHIJJEFDPCHHlYJQ"],"encodeOffsets":[[116313,22707]]},"properties":{"cp":[113.55374,22.188119],"name":"大堂区","childNum":1}},{"id":"820005","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@JICGAECACGEBAAEDBFNXB@"],"encodeOffsets":[[116266,22728]]},"properties":{"cp":[113.54167,22.187778],"name":"风顺堂区","childNum":1}},{"id":"820006","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ ZNWRquZCBCC@AEA@@ADCDCAACEAGBQ@INEL"],"encodeOffsets":[[116265,22694]]},"properties":{"cp":[113.558783,22.154124],"name":"嘉模堂区","childNum":1}},{"id":"820007","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@MOIAIEI@@GE@AAUCBdCFIFR@HAFBBDDBDCBC@@FB@BDDDA\\M"],"encodeOffsets":[[116316,22676]]},"properties":{"cp":[113.56925,22.136546],"name":"路凼填海区","childNum":1}},{"id":"820008","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@DKMMa_GC_COD@dVDBBF@@HJ@JFJBNPZK"],"encodeOffsets":[[116329,22670]]},"properties":{"cp":[113.559954,22.124049],"name":"圣方济各堂区","childNum":1}}],"UTF8Encoding":true} -------------------------------------------------------------------------------- /src/statics/guandao/gd4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/statics/guandao/gd6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向上滑入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-淡入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/topo/Topotable.vue: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /src/components/topo/util/topo-util.js: -------------------------------------------------------------------------------- 1 | const topoUtil = {}; 2 | 3 | //如果需要手动映射type和组件的关系,请在这里配置 4 | topoUtil.viewRegisterMap = { 5 | "triangle": "view-triangle", 6 | "rect": "view-rect", 7 | "circular": "view-circular", 8 | "line": "view-line", 9 | "line-arrow": "view-line-arrow", 10 | "chart-line": "view-chart", 11 | 12 | "canvas-lines": "view-canvas-lines", 13 | "chart-line-step": "view-chart", 14 | "chart-bar": "view-chart", 15 | "chart-pie": "view-chart-pie", 16 | "chart-gauge": "view-chart-gauge", 17 | "chart-watera": "view-chartwatera", 18 | "chart-wsquare": "view-chart-wsquare", 19 | "buttom":"view-buttom", 20 | "web-record": "view-web-record", 21 | "weather": "view-weather", 22 | }; 23 | 24 | //优先匹配map,否则将自动匹配 25 | topoUtil.parseViewName = function (component) { 26 | // console.log('优先匹配map,否则将自动匹配') 27 | 28 | var viewName = topoUtil.viewRegisterMap[component.type]; 29 | if(viewName == undefined) { 30 | // console.info(`没有手动配置组件映射,将根据数据的type自动匹配,当前组件类型=${component.type}`); 31 | viewName = "view-" + component.type; 32 | } 33 | return viewName; 34 | }; 35 | 36 | topoUtil.parseEchartType = function (component, option) { 37 | console.log(option) 38 | delete option.series[0]['step']; 39 | delete option.series[0]['smooth']; 40 | if (component.type == 'chart-line') { 41 | option.series[0].type = 'line'; 42 | option.series[0]['smooth'] = true; 43 | } 44 | if (component.type == 'chart-lines') { 45 | console.log(option) 46 | } 47 | else if (component.type == 'chart-bar') { 48 | option.series[0].type = 'bar'; 49 | } else if (component.type == 'chart-line-step') { 50 | option.series[0].type = 'line'; 51 | option.series[0].step = 'start'; 52 | } 53 | } 54 | // topoUtil.componentType = (type)=>{ 55 | // if(type == 'buttom'){ 56 | 57 | // } 58 | // } 59 | export default topoUtil; 60 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-从左滚入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/data/chart-pie.json: -------------------------------------------------------------------------------- 1 | { 2 | "tooltip": { 3 | "trigger": "item", 4 | "formatter": "{a}
{b}: {c} ({d}%)" 5 | }, 6 | "legend": { 7 | "orient": "vertical", 8 | "x": "left", 9 | "data": [ 10 | "直接访问", 11 | "邮件营销", 12 | "联盟广告", 13 | "视频广告", 14 | "搜索引擎" 15 | ] 16 | }, 17 | "series": [ 18 | { 19 | "name": "访问来源", 20 | "type": "pie", 21 | "radius": [ 22 | "50%", 23 | "70%" 24 | ], 25 | "avoidLabelOverlap": false, 26 | "label": { 27 | "normal": { 28 | "show": false, 29 | "position": "center" 30 | }, 31 | "emphasis": { 32 | "show": true, 33 | "textStyle": { 34 | "fontSize": "30", 35 | "fontWeight": "bold" 36 | } 37 | } 38 | }, 39 | "labelLine": { 40 | "normal": { 41 | "show": false 42 | } 43 | }, 44 | "data": [ 45 | { 46 | "value": 335, 47 | "name": "直接访问" 48 | }, 49 | { 50 | "value": 310, 51 | "name": "邮件营销" 52 | }, 53 | { 54 | "value": 234, 55 | "name": "联盟广告" 56 | }, 57 | { 58 | "value": 135, 59 | "name": "视频广告" 60 | }, 61 | { 62 | "value": 1548, 63 | "name": "搜索引擎" 64 | } 65 | ] 66 | } 67 | ] 68 | } -------------------------------------------------------------------------------- /src/components/topo/control/canvas/ViewCanvas.vue: -------------------------------------------------------------------------------- 1 | 55 | -------------------------------------------------------------------------------- /src/components/topo/TopoBase.vue: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-旋转出现.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-刹车.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/svg/off1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | OFF 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/statics/topo/office/off1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | OFF 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/statics/topo/svg/on1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ON 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/statics/topo/office/on1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | ]> 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ON 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/components/topo/control/chart/ViewChartGauge.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 71 | 72 | 82 | -------------------------------------------------------------------------------- /src/components/topo/control/svg/ViewSvg.vue: -------------------------------------------------------------------------------- 1 | 64 | -------------------------------------------------------------------------------- /src/views/usertable.vue: -------------------------------------------------------------------------------- 1 | 27 | 68 | -------------------------------------------------------------------------------- /src/assets/data/chart-radar.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": { 3 | "text": "基础雷达图" 4 | }, 5 | "tooltip": {}, 6 | "legend": { 7 | "data": [ 8 | "预算分配(Allocated Budget)", 9 | "实际开销(Actual Spending)" 10 | ] 11 | }, 12 | "radar": { 13 | "name": { 14 | "textStyle": { 15 | "color": "#fff", 16 | "backgroundColor": "#999", 17 | "borderRadius": 3, 18 | "padding": [ 19 | 3, 20 | 5 21 | ] 22 | } 23 | }, 24 | "indicator": [ 25 | { 26 | "name": "销售(sales)", 27 | "max": 6500 28 | }, 29 | { 30 | "name": "管理(Administration)", 31 | "max": 16000 32 | }, 33 | { 34 | "name": "信息技术(Information Techology)", 35 | "max": 30000 36 | }, 37 | { 38 | "name": "客服(Customer Support)", 39 | "max": 38000 40 | }, 41 | { 42 | "name": "研发(Development)", 43 | "max": 52000 44 | }, 45 | { 46 | "name": "市场(Marketing)", 47 | "max": 25000 48 | } 49 | ] 50 | }, 51 | "series": [ 52 | { 53 | "name": "预算 vs 开销(Budget vs spending)", 54 | "type": "radar", 55 | "data": [ 56 | { 57 | "value": [ 58 | 4300, 59 | 10000, 60 | 28000, 61 | 35000, 62 | 50000, 63 | 19000 64 | ], 65 | "name": "预算分配(Allocated Budget)" 66 | }, 67 | { 68 | "value": [ 69 | 5000, 70 | 14000, 71 | 28000, 72 | 31000, 73 | 42000, 74 | 21000 75 | ], 76 | "name": "实际开销(Actual Spending)" 77 | } 78 | ] 79 | } 80 | ] 81 | } -------------------------------------------------------------------------------- /src/views/Qmenu.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 95 | -------------------------------------------------------------------------------- /src/components/topo/control/web/Dtime.vue: -------------------------------------------------------------------------------- 1 | 20 | 86 | -------------------------------------------------------------------------------- /src/statics/topo/office/jka2.svg: -------------------------------------------------------------------------------- 1 | jka2 -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向上飞入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-放大.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向左飞入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向右飞入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向下飞入.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-向下飞入 (1).svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/mada/md8.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/statics/shuibeng/shuibeng20.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/pages/topo/Fullscreen.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 91 | 92 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /src/statics/shuibeng/shuibeng22.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-左右翻转.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-上下翻转.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/statics/topo/anima/闪烁.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | background 7 | 8 | 9 | 10 | Layer 1 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/statics/topo/anima/H5动画-下落放大.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/topo/control/canvas/ViewRect.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 82 | --------------------------------------------------------------------------------