├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .postcssrc.js ├── .stylintrc ├── .yarnclean ├── LICENSE ├── README.md ├── babel.config.js ├── ccadmin.apk ├── jsconfig.json ├── package.json ├── public ├── favicon.ico ├── icons │ ├── cc-admin-color.png │ ├── favicon-128x128.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ └── logo │ │ ├── cc-admin-logo-t.png │ │ ├── cc-admin-logo.png │ │ ├── cc-admin-logo.svg │ │ ├── cc-admin.svg │ │ ├── method-draw-image (3).svg │ │ ├── quasar-logo.svg │ │ ├── sikacode-logo.png │ │ └── wms.png ├── img │ ├── account │ │ ├── WdGqmHpayyMjiEhcKoVE.png │ │ ├── avatar5.jpg │ │ ├── dURIMkkrRFpPgTuzkwnB.png │ │ ├── iXjVmWVHbCJAyqvDxdtx.png │ │ ├── iZBVOIhGJiAnhplqjvZW.png │ │ ├── kZzEzemZyKLKFsojXItE.png │ │ ├── sfjbOqnsXXJgNCjCzDBL.png │ │ ├── siCrBXXhmvTQGWPNLBow.png │ │ ├── time1.jpg │ │ ├── time10.jpg │ │ ├── time11.jpg │ │ ├── time12.jpg │ │ ├── time13.jpg │ │ ├── time14.jpg │ │ ├── time15.jpg │ │ ├── time16.jpg │ │ ├── time17.jpg │ │ ├── time18.jpg │ │ ├── time19.jpg │ │ ├── time2.jpg │ │ ├── time3.jpg │ │ ├── time4.jpg │ │ ├── time5.jpg │ │ ├── time6.jpg │ │ ├── time7.jpg │ │ ├── time8.jpg │ │ ├── time9.jpg │ │ └── zOsKZmFRdUtvpqCImOVY.png │ ├── bi │ │ ├── empty-chart.jpg │ │ ├── empty-chart.png │ │ └── empty-img.jpg │ ├── login │ │ ├── cloud.png │ │ ├── earth_bg.png │ │ ├── login_horizontal_line.png │ │ ├── login_human.png │ │ ├── sky.png │ │ ├── starflake1.png │ │ └── starflake2.png │ ├── map │ │ ├── car.png │ │ ├── kk.png │ │ ├── kk_h.png │ │ └── truck.png │ └── user │ │ ├── man.jpg │ │ └── woman.jpg └── statics │ ├── image │ ├── 0.jpg │ ├── 0.png │ ├── 1.png │ ├── Earth.png │ ├── earth_bg.png │ ├── flame.png │ ├── floor3.png │ ├── grass.jpg │ ├── lan2.png │ ├── rain.png │ ├── road2.png │ ├── sky.png │ ├── sprite.png │ ├── tree.png │ └── world.png │ └── js │ ├── 3d_gltf │ ├── Duck.gltf │ ├── Duck0.bin │ ├── DuckCM.png │ └── RobotExpressive.glb │ ├── 3d_obj │ ├── 002.obj │ ├── 002.png │ ├── 003.obj │ ├── 003.png │ ├── d001.png │ ├── door.png │ ├── gong001.obj │ └── wall.obj │ ├── 3dconfig.json │ ├── CSS2DRenderer.js │ ├── CopyShader.js │ ├── EffectComposer.js │ ├── FXAAShader.js │ ├── GLTFLoader.js │ ├── OBJLoader.js │ ├── OrbitControls.js │ ├── OutlinePass.js │ ├── RenderPass.js │ ├── ShaderPass.js │ ├── font.json │ ├── index.js │ ├── light.js │ ├── maptalks.js │ ├── maptalks.plugins.js │ ├── maptalks.three.js │ └── three.min.js ├── quasar.conf.js ├── src-cordova ├── .gitignore ├── config.xml ├── cordova-flag.d.ts ├── package-lock.json └── package.json └── src ├── App.vue ├── assets ├── icons │ ├── iconfont.css │ ├── iconfont.eot │ ├── iconfont.svg │ ├── iconfont.ttf │ ├── iconfont.woff │ └── quasar-logo.svg ├── login │ ├── ground.png │ ├── login_border.png │ ├── logo.png │ └── sky.png └── screen │ ├── chart.png │ ├── img.png │ └── text.png ├── boot ├── api │ └── index.js ├── datatype.js ├── dictionary.js ├── filter.js ├── functions.js ├── index.js ├── inputTest.js ├── mixins │ ├── border.js │ ├── decoration.js │ ├── index.js │ ├── tool.js │ └── websocket.js ├── msg.js └── routes.js ├── components ├── btndel.vue ├── catalogselect.vue ├── cc-dialog.vue ├── ccpage.vue ├── ccshadow.vue ├── chart │ ├── amountbar.vue │ ├── linkcard.vue │ ├── miniarea.vue │ ├── minibar.vue │ ├── salestat.vue │ ├── saletab.vue │ ├── trendline.vue │ └── visitline.vue ├── confirm.vue ├── ellipsisvalue.vue ├── form │ ├── inputcolor.vue │ ├── inputdate.vue │ ├── inputdatetime.vue │ ├── inputeditdatetime.vue │ ├── inputtime.vue │ ├── inputtimerange.vue │ └── selecttime.vue ├── helpinfo.vue ├── layout │ ├── message.vue │ └── tabpanel │ │ ├── Tab.vue │ │ └── index.vue ├── listselect.vue ├── menu │ ├── ccmenu.vue │ └── ccmenuitem.vue ├── monitor │ ├── cpugauge.vue │ ├── diskbar.vue │ ├── memline.vue │ └── serverinfo.vue ├── tableselect.vue ├── tabpanel │ ├── Tab.vue │ └── index.vue ├── third │ └── bi │ │ └── simplex.js ├── utils │ ├── color.js │ ├── config │ │ └── keywords.js │ ├── db.js │ ├── dom.js │ ├── index.js │ ├── loadMonaco.js │ ├── loadScript.js │ ├── math.js │ ├── pluginsConfig.js │ └── vm.js ├── viewcatalog.vue └── viewnav.vue ├── css ├── app.styl ├── codemirror.css └── quasar.variables.styl ├── index.template.html ├── layouts ├── LoginLayout.vue └── index.vue ├── pages ├── account │ ├── index.vue │ ├── info │ │ └── index.vue │ └── settings │ │ └── index.vue ├── ancestor │ ├── index.vue │ └── maintain │ │ ├── index.vue │ │ ├── tree.vue │ │ └── treeChart.vue ├── baby │ ├── index.vue │ ├── studylog │ │ └── index.vue │ └── word │ │ ├── card.vue │ │ ├── index.vue │ │ ├── study.vue │ │ └── vertical.vue ├── bi │ ├── favorites │ │ └── index.vue │ ├── index.vue │ ├── map │ │ └── index.vue │ ├── screen │ │ ├── design │ │ │ ├── index.vue │ │ │ ├── modules │ │ │ │ ├── favorite.vue │ │ │ │ ├── layout.vue │ │ │ │ ├── setting │ │ │ │ │ ├── backgroundsetting.vue │ │ │ │ │ ├── bordersetting.vue │ │ │ │ │ ├── chart │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── bar.vue │ │ │ │ │ │ │ ├── donut.vue │ │ │ │ │ │ │ ├── gauge.vue │ │ │ │ │ │ │ ├── line.vue │ │ │ │ │ │ │ ├── maps.vue │ │ │ │ │ │ │ ├── pie.vue │ │ │ │ │ │ │ └── scatter.vue │ │ │ │ │ │ ├── data.vue │ │ │ │ │ │ ├── style.vue │ │ │ │ │ │ └── table.vue │ │ │ │ │ ├── chartsetting.vue │ │ │ │ │ ├── customsetting.vue │ │ │ │ │ ├── datasource.vue │ │ │ │ │ ├── decorationsetting.vue │ │ │ │ │ ├── groupsetting.vue │ │ │ │ │ ├── imagesetting.vue │ │ │ │ │ ├── omnipotentsetting.vue │ │ │ │ │ ├── ranksetting.vue │ │ │ │ │ ├── textsetting.vue │ │ │ │ │ └── videosetting.vue │ │ │ │ └── view │ │ │ │ │ ├── borderview.vue │ │ │ │ │ ├── chartview.vue │ │ │ │ │ ├── custom │ │ │ │ │ ├── bar │ │ │ │ │ │ ├── bar3d.vue │ │ │ │ │ │ ├── bar3dcolor.vue │ │ │ │ │ │ ├── bar3dsqrt.vue │ │ │ │ │ │ ├── bar3dtran.vue │ │ │ │ │ │ ├── barbattery.vue │ │ │ │ │ │ ├── barbattery2.vue │ │ │ │ │ │ ├── barcircle.vue │ │ │ │ │ │ ├── barcircle2.vue │ │ │ │ │ │ ├── barcircle3.vue │ │ │ │ │ │ ├── barcolorful.vue │ │ │ │ │ │ ├── bardouble.vue │ │ │ │ │ │ ├── bardoublecircle.vue │ │ │ │ │ │ ├── bargroup.vue │ │ │ │ │ │ ├── barhorizontal.vue │ │ │ │ │ │ ├── barinfographic.vue │ │ │ │ │ │ ├── barline.vue │ │ │ │ │ │ ├── barone.vue │ │ │ │ │ │ ├── barpictorial.vue │ │ │ │ │ │ ├── barproject.vue │ │ │ │ │ │ ├── barshaddle.vue │ │ │ │ │ │ ├── barsort.vue │ │ │ │ │ │ ├── barsquare.vue │ │ │ │ │ │ └── pictorialbar.vue │ │ │ │ │ ├── custombar3d.vue │ │ │ │ │ ├── custombar3dtran.vue │ │ │ │ │ ├── customcar.vue │ │ │ │ │ ├── customheatweek.vue │ │ │ │ │ ├── customheatyear.vue │ │ │ │ │ ├── customline.vue │ │ │ │ │ ├── customline3d.vue │ │ │ │ │ ├── custommapll.vue │ │ │ │ │ ├── customplane.vue │ │ │ │ │ ├── customscatter.vue │ │ │ │ │ ├── customwind3d.vue │ │ │ │ │ ├── gauge │ │ │ │ │ │ ├── ballrunning.vue │ │ │ │ │ │ └── gaugerunning.vue │ │ │ │ │ ├── graph │ │ │ │ │ │ ├── graphcloud.vue │ │ │ │ │ │ ├── graphtable.vue │ │ │ │ │ │ ├── mouse.vue │ │ │ │ │ │ └── temperature.vue │ │ │ │ │ ├── heat │ │ │ │ │ │ ├── customheatweek.vue │ │ │ │ │ │ └── customheatyear.vue │ │ │ │ │ ├── line │ │ │ │ │ │ ├── customline3d.vue │ │ │ │ │ │ ├── customwind3d.vue │ │ │ │ │ │ ├── linepoint.vue │ │ │ │ │ │ ├── linerange.vue │ │ │ │ │ │ └── subway.vue │ │ │ │ │ ├── map │ │ │ │ │ │ ├── custommapll.vue │ │ │ │ │ │ ├── customplane.vue │ │ │ │ │ │ ├── mapbeijing.vue │ │ │ │ │ │ ├── mapjs.vue │ │ │ │ │ │ ├── mapmove.vue │ │ │ │ │ │ └── mapshandong.vue │ │ │ │ │ ├── pie │ │ │ │ │ │ ├── gaugerunning.vue │ │ │ │ │ │ ├── pie3d.vue │ │ │ │ │ │ ├── pie3d2.vue │ │ │ │ │ │ ├── piecolor.vue │ │ │ │ │ │ ├── piedouble.vue │ │ │ │ │ │ ├── piefan.vue │ │ │ │ │ │ ├── piefive.vue │ │ │ │ │ │ ├── pieflower.vue │ │ │ │ │ │ ├── piefour.vue │ │ │ │ │ │ ├── piegroup.vue │ │ │ │ │ │ ├── pienormal.vue │ │ │ │ │ │ ├── piepercent.vue │ │ │ │ │ │ ├── pieprocess.vue │ │ │ │ │ │ ├── pierunning.vue │ │ │ │ │ │ ├── pieshadow.vue │ │ │ │ │ │ ├── piesix.vue │ │ │ │ │ │ ├── piestar.vue │ │ │ │ │ │ ├── piethree.vue │ │ │ │ │ │ ├── piethree2.vue │ │ │ │ │ │ ├── pietwo.vue │ │ │ │ │ │ └── pieyellow.vue │ │ │ │ │ ├── relation │ │ │ │ │ │ ├── cloud.vue │ │ │ │ │ │ ├── flow.vue │ │ │ │ │ │ ├── linker.vue │ │ │ │ │ │ ├── relationline.vue │ │ │ │ │ │ └── structure.vue │ │ │ │ │ ├── sankey │ │ │ │ │ │ └── sankeycom.vue │ │ │ │ │ ├── scatter │ │ │ │ │ │ ├── scatter3d.vue │ │ │ │ │ │ ├── scattercircle.vue │ │ │ │ │ │ └── scattercommon.vue │ │ │ │ │ └── word │ │ │ │ │ │ └── wordcloud.vue │ │ │ │ │ ├── customview.vue │ │ │ │ │ ├── decorationview.vue │ │ │ │ │ ├── groupview.vue │ │ │ │ │ ├── imageview.vue │ │ │ │ │ ├── omnipotentview.vue │ │ │ │ │ ├── rankview.vue │ │ │ │ │ ├── textview.vue │ │ │ │ │ ├── videoview.vue │ │ │ │ │ └── widgets │ │ │ │ │ ├── border │ │ │ │ │ ├── borderbox1 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox10 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox11 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox12 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox13 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox2 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox3 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox4 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox5 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox6 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox7 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── borderbox8 │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── borderbox9 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── chart.vue │ │ │ │ │ ├── custom.vue │ │ │ │ │ ├── decoration │ │ │ │ │ ├── decoration1 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration10 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration11 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration12 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration2 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration3 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration4 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration5 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration6 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration7 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── decoration8 │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── decoration9 │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── maps.vue │ │ │ │ │ ├── optionsmaker.js │ │ │ │ │ ├── rank.vue │ │ │ │ │ └── table.vue │ │ │ ├── view.vue │ │ │ └── viewfull.vue │ │ ├── index.vue │ │ └── list.vue │ └── view │ │ ├── edit.vue │ │ └── index.vue ├── demo │ ├── demo1 │ │ └── index.vue │ ├── demo10 │ │ └── index.vue │ ├── demo11 │ │ └── index.vue │ ├── demo12 │ │ └── index.vue │ ├── demo13 │ │ └── index.vue │ ├── demo14 │ │ └── index.vue │ ├── demo15 │ │ └── index.vue │ ├── demo16 │ │ └── index.vue │ ├── demo17 │ │ └── index.vue │ ├── demo18 │ │ └── index.vue │ ├── demo19 │ │ └── index.vue │ ├── demo2 │ │ └── index.vue │ ├── demo3 │ │ └── index.vue │ ├── demo4 │ │ └── index.vue │ ├── demo5 │ │ ├── index.vue │ │ └── item.vue │ ├── demo6 │ │ ├── custom.vue │ │ ├── custom1.vue │ │ └── index.vue │ ├── demo7 │ │ └── index.vue │ ├── demo8 │ │ └── index.vue │ ├── demo9 │ │ └── index.vue │ ├── index.vue │ ├── test │ │ └── index.vue │ └── word │ │ └── index.vue ├── doc │ ├── index.vue │ ├── info │ │ └── index.vue │ └── remark │ │ └── index.vue ├── home │ ├── index.vue │ └── saletab.vue ├── login.vue ├── mnt │ ├── app │ │ └── index.vue │ ├── database │ │ └── index.vue │ ├── deploy │ │ └── index.vue │ ├── index.vue │ └── server │ │ └── index.vue ├── monitor │ ├── index.vue │ ├── log │ │ └── index.vue │ ├── online │ │ └── index.vue │ ├── serverinfo │ │ └── index.vue │ └── task │ │ └── index.vue ├── pro │ ├── index.vue │ ├── info │ │ └── index.vue │ └── remark │ │ └── index.vue └── sys │ ├── catalog │ └── index.vue │ ├── company │ └── index.vue │ ├── datasource │ └── index.vue │ ├── depart │ ├── index.vue │ └── tree.vue │ ├── dict │ ├── index.vue │ └── item.vue │ ├── etl │ ├── index.vue │ └── logs.vue │ ├── file │ └── index.vue │ ├── generate │ ├── config.vue │ ├── design.vue │ ├── dictselect.vue │ ├── index.vue │ ├── preview.vue │ └── tableselect.vue │ ├── index.vue │ ├── log │ └── index.vue │ ├── menu │ ├── index.vue │ └── item.vue │ ├── news │ └── index.vue │ ├── online │ └── index.vue │ ├── position │ └── index.vue │ ├── quartz │ └── index.vue │ ├── role │ ├── index.vue │ └── slave.vue │ └── user │ ├── account.vue │ ├── index.vue │ ├── settings.vue │ └── tree.vue ├── router └── index.js └── store ├── index.js ├── modules ├── Rule.js └── user.js └── store-flag.d.ts /.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 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /src-bex/www 3 | /src-capacitor 4 | /src-cordova 5 | /.quasar 6 | /node_modules 7 | /src/App.vue 8 | /src/components/third/** -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | 4 | parserOptions: { 5 | parser: 'babel-eslint', 6 | ecmaVersion: 2018, // Allows for the parsing of modern ECMAScript features 7 | sourceType: 'module', // Allows for the use of imports 8 | }, 9 | 10 | env: { 11 | browser: true, 12 | }, 13 | extends: [ 14 | 'plugin:vue/essential', 15 | 'airbnb-base', 16 | ], 17 | plugins: [ 18 | 'vue', 19 | ], 20 | globals: { 21 | ga: false, // Google Analytics 22 | cordova: false, 23 | __statics: true, 24 | process: true, 25 | Capacitor: true, 26 | chrome: true, 27 | }, 28 | 29 | // add your custom rules here 30 | rules: { 31 | 'no-param-reassign': 'off', 32 | 33 | 'import/first': 'off', 34 | 'import/named': 'error', 35 | 'import/namespace': 'error', 36 | 'import/default': 'error', 37 | 'import/export': 'error', 38 | 'import/extensions': 'off', 39 | 'import/no-unresolved': 'off', 40 | 'import/no-extraneous-dependencies': 'off', 41 | 'import/prefer-default-export': 'off', 42 | 'prefer-promise-reject-errors': 'off', 43 | 44 | // allow debugger during development only 45 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 46 | }, 47 | }; 48 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | *.js text eol=lf 4 | *.ts text eol=lf 5 | *.vue text eol=lf 6 | *.styl text eol=lf 7 | *.json text eol=lf 8 | *.md text eol=lf 9 | *.lock text eol=lf 10 | *.html text eol=lf 11 | *.css text eol=lf 12 | *.babelrc text eol=lf 13 | *.editorconfig text eol=lf 14 | *.eslintignore text eol=lf 15 | *.gitignore text eol=lf 16 | *.stylintrc text eol=lf 17 | *.svg text eol=lf 18 | *.yarnclean text eol=lf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.quasar 2 | /node_modules 3 | /.vscode 4 | /dist 5 | *.log 6 | *.lock 7 | 8 | /src-cordova/node_modules 9 | /src-cordova/www 10 | # iOS 11 | /src-cordova/platforms/ios/build 12 | /src-cordova/platforms/ios/www 13 | /src-cordova/platforms/ios/cordova/console.log 14 | 15 | # android 16 | /src-cordova/platforms/android/assets/www 17 | /src-cordova/platforms/android/bin 18 | /src-cordova/platforms/android/gen 19 | /src-cordova/platforms/android/local.properties 20 | /src-cordova/platforms/android/ant-build 21 | /src-cordova/platforms/android/ant-gen 22 | /src-cordova/platforms/android/CordovaLib/ant-build 23 | /src-cordova/platforms/android/CordovaLib/ant-gen 24 | /src-cordova/platforms/android/CordovaLib/bin 25 | /src-cordova/platforms/android/CordovaLib/gen 26 | /src-cordova/platforms/android/CordovaLib/local.properties 27 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.yarnclean: -------------------------------------------------------------------------------- 1 | # test directories 2 | __tests__ 3 | test 4 | tests 5 | powered-test 6 | 7 | # asset directories 8 | docs 9 | doc 10 | website 11 | images 12 | assets 13 | 14 | # examples 15 | example 16 | examples 17 | 18 | # code coverage directories 19 | coverage 20 | .nyc_output 21 | 22 | # build scripts 23 | Makefile 24 | Gulpfile.js 25 | Gruntfile.js 26 | 27 | # configs 28 | appveyor.yml 29 | circle.yml 30 | codeship-services.yml 31 | codeship-steps.yml 32 | wercker.yml 33 | .tern-project 34 | .gitattributes 35 | .editorconfig 36 | .*ignore 37 | .eslintrc 38 | .jshintrc 39 | .flowconfig 40 | .documentup.json 41 | .yarn-metadata.json 42 | .travis.yml 43 | 44 | # misc 45 | *.md 46 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@quasar/babel-preset-app', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /ccadmin.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/ccadmin.apk -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "src/*": [ 6 | "src/*" 7 | ], 8 | "app/*": [ 9 | "*" 10 | ], 11 | "components/*": [ 12 | "src/components/*" 13 | ], 14 | "layouts/*": [ 15 | "src/layouts/*" 16 | ], 17 | "pages/*": [ 18 | "src/pages/*" 19 | ], 20 | "assets/*": [ 21 | "src/assets/*" 22 | ], 23 | "statics/*": [ 24 | "src/statics/*" 25 | ], 26 | "boot/*": [ 27 | "src/boot/*" 28 | ], 29 | "public/*": [ 30 | "src/public/*" 31 | ], 32 | "vue$": [ 33 | "node_modules/vue/dist/vue.esm.js" 34 | ] 35 | } 36 | }, 37 | "exclude": [ 38 | "dist", 39 | ".quasar", 40 | "node_modules" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cc-admin", 3 | "version": "0.0.1", 4 | "description": "cc-admin", 5 | "productName": "cc-admin", 6 | "author": "zhy6599", 7 | "private": true, 8 | "scripts": { 9 | "lint": "eslint --ext .js,.vue ./", 10 | "test": "echo \"No test specified\" && exit 0" 11 | }, 12 | "dependencies": { 13 | "@quasar/extras": "1.9.5", 14 | "axios": "0.21.1", 15 | "codemirror": "5.55.0", 16 | "core-js": "3.6.5", 17 | "echarts": "4.8.0", 18 | "echarts-gl": "1.1.2", 19 | "echarts-liquidfill": "2.0.6", 20 | "echarts-wordcloud": "1.1.3", 21 | "lodash": "4.17.20", 22 | "quasar": "1.14.0", 23 | "three": "^0.136.0", 24 | "vue-draggable-resizable": "2.3.0", 25 | "vuedraggable": "2.23.2" 26 | }, 27 | "devDependencies": { 28 | "@quasar/app": "^2.0.8", 29 | "babel-eslint": "^10.1.0", 30 | "eslint": "^7.8.0", 31 | "eslint-config-airbnb-base": "^14.2.0", 32 | "eslint-loader": "^4.0.2", 33 | "eslint-plugin-import": "^2.22.0", 34 | "eslint-plugin-vue": "^6.2.2" 35 | }, 36 | "browserslist": [ 37 | "last 1 Chrome versions" 38 | ], 39 | "engines": { 40 | "node": ">= 10.18.1", 41 | "npm": ">= 6.13.4", 42 | "yarn": ">= 1.21.1" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/favicon.ico -------------------------------------------------------------------------------- /public/icons/cc-admin-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/cc-admin-color.png -------------------------------------------------------------------------------- /public/icons/favicon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/favicon-128x128.png -------------------------------------------------------------------------------- /public/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/favicon-16x16.png -------------------------------------------------------------------------------- /public/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/favicon-32x32.png -------------------------------------------------------------------------------- /public/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/favicon-96x96.png -------------------------------------------------------------------------------- /public/icons/logo/cc-admin-logo-t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/logo/cc-admin-logo-t.png -------------------------------------------------------------------------------- /public/icons/logo/cc-admin-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/logo/cc-admin-logo.png -------------------------------------------------------------------------------- /public/icons/logo/cc-admin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | background 5 | 6 | 7 | 8 | 9 | 10 | 11 | Layer 1 12 | 13 | CC-ADMIN 14 | 15 | -------------------------------------------------------------------------------- /public/icons/logo/method-draw-image (3).svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | background 5 | 6 | 7 | 8 | 9 | 10 | 11 | Layer 1 12 | 13 | 14 | CC-ADMIN 15 | 16 | -------------------------------------------------------------------------------- /public/icons/logo/quasar-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 16 | 19 | 22 | 25 | 28 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /public/icons/logo/sikacode-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/logo/sikacode-logo.png -------------------------------------------------------------------------------- /public/icons/logo/wms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/icons/logo/wms.png -------------------------------------------------------------------------------- /public/img/account/WdGqmHpayyMjiEhcKoVE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/WdGqmHpayyMjiEhcKoVE.png -------------------------------------------------------------------------------- /public/img/account/avatar5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/avatar5.jpg -------------------------------------------------------------------------------- /public/img/account/dURIMkkrRFpPgTuzkwnB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/dURIMkkrRFpPgTuzkwnB.png -------------------------------------------------------------------------------- /public/img/account/iXjVmWVHbCJAyqvDxdtx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/iXjVmWVHbCJAyqvDxdtx.png -------------------------------------------------------------------------------- /public/img/account/iZBVOIhGJiAnhplqjvZW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/iZBVOIhGJiAnhplqjvZW.png -------------------------------------------------------------------------------- /public/img/account/kZzEzemZyKLKFsojXItE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/kZzEzemZyKLKFsojXItE.png -------------------------------------------------------------------------------- /public/img/account/sfjbOqnsXXJgNCjCzDBL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/sfjbOqnsXXJgNCjCzDBL.png -------------------------------------------------------------------------------- /public/img/account/siCrBXXhmvTQGWPNLBow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/siCrBXXhmvTQGWPNLBow.png -------------------------------------------------------------------------------- /public/img/account/time1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time1.jpg -------------------------------------------------------------------------------- /public/img/account/time10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time10.jpg -------------------------------------------------------------------------------- /public/img/account/time11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time11.jpg -------------------------------------------------------------------------------- /public/img/account/time12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time12.jpg -------------------------------------------------------------------------------- /public/img/account/time13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time13.jpg -------------------------------------------------------------------------------- /public/img/account/time14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time14.jpg -------------------------------------------------------------------------------- /public/img/account/time15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time15.jpg -------------------------------------------------------------------------------- /public/img/account/time16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time16.jpg -------------------------------------------------------------------------------- /public/img/account/time17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time17.jpg -------------------------------------------------------------------------------- /public/img/account/time18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time18.jpg -------------------------------------------------------------------------------- /public/img/account/time19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time19.jpg -------------------------------------------------------------------------------- /public/img/account/time2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time2.jpg -------------------------------------------------------------------------------- /public/img/account/time3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time3.jpg -------------------------------------------------------------------------------- /public/img/account/time4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time4.jpg -------------------------------------------------------------------------------- /public/img/account/time5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time5.jpg -------------------------------------------------------------------------------- /public/img/account/time6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time6.jpg -------------------------------------------------------------------------------- /public/img/account/time7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time7.jpg -------------------------------------------------------------------------------- /public/img/account/time8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time8.jpg -------------------------------------------------------------------------------- /public/img/account/time9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/time9.jpg -------------------------------------------------------------------------------- /public/img/account/zOsKZmFRdUtvpqCImOVY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/account/zOsKZmFRdUtvpqCImOVY.png -------------------------------------------------------------------------------- /public/img/bi/empty-chart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/bi/empty-chart.jpg -------------------------------------------------------------------------------- /public/img/bi/empty-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/bi/empty-chart.png -------------------------------------------------------------------------------- /public/img/bi/empty-img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/bi/empty-img.jpg -------------------------------------------------------------------------------- /public/img/login/cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/cloud.png -------------------------------------------------------------------------------- /public/img/login/earth_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/earth_bg.png -------------------------------------------------------------------------------- /public/img/login/login_horizontal_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/login_horizontal_line.png -------------------------------------------------------------------------------- /public/img/login/login_human.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/login_human.png -------------------------------------------------------------------------------- /public/img/login/sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/sky.png -------------------------------------------------------------------------------- /public/img/login/starflake1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/starflake1.png -------------------------------------------------------------------------------- /public/img/login/starflake2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/login/starflake2.png -------------------------------------------------------------------------------- /public/img/map/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/map/car.png -------------------------------------------------------------------------------- /public/img/map/kk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/map/kk.png -------------------------------------------------------------------------------- /public/img/map/kk_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/map/kk_h.png -------------------------------------------------------------------------------- /public/img/map/truck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/map/truck.png -------------------------------------------------------------------------------- /public/img/user/man.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/user/man.jpg -------------------------------------------------------------------------------- /public/img/user/woman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/img/user/woman.jpg -------------------------------------------------------------------------------- /public/statics/image/0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/0.jpg -------------------------------------------------------------------------------- /public/statics/image/0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/0.png -------------------------------------------------------------------------------- /public/statics/image/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/1.png -------------------------------------------------------------------------------- /public/statics/image/Earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/Earth.png -------------------------------------------------------------------------------- /public/statics/image/earth_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/earth_bg.png -------------------------------------------------------------------------------- /public/statics/image/flame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/flame.png -------------------------------------------------------------------------------- /public/statics/image/floor3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/floor3.png -------------------------------------------------------------------------------- /public/statics/image/grass.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/grass.jpg -------------------------------------------------------------------------------- /public/statics/image/lan2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/lan2.png -------------------------------------------------------------------------------- /public/statics/image/rain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/rain.png -------------------------------------------------------------------------------- /public/statics/image/road2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/road2.png -------------------------------------------------------------------------------- /public/statics/image/sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/sky.png -------------------------------------------------------------------------------- /public/statics/image/sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/sprite.png -------------------------------------------------------------------------------- /public/statics/image/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/tree.png -------------------------------------------------------------------------------- /public/statics/image/world.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/image/world.png -------------------------------------------------------------------------------- /public/statics/js/3d_gltf/Duck0.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_gltf/Duck0.bin -------------------------------------------------------------------------------- /public/statics/js/3d_gltf/DuckCM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_gltf/DuckCM.png -------------------------------------------------------------------------------- /public/statics/js/3d_gltf/RobotExpressive.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_gltf/RobotExpressive.glb -------------------------------------------------------------------------------- /public/statics/js/3d_obj/002.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/002.obj -------------------------------------------------------------------------------- /public/statics/js/3d_obj/002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/002.png -------------------------------------------------------------------------------- /public/statics/js/3d_obj/003.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/003.obj -------------------------------------------------------------------------------- /public/statics/js/3d_obj/003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/003.png -------------------------------------------------------------------------------- /public/statics/js/3d_obj/d001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/d001.png -------------------------------------------------------------------------------- /public/statics/js/3d_obj/door.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/door.png -------------------------------------------------------------------------------- /public/statics/js/3d_obj/gong001.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/gong001.obj -------------------------------------------------------------------------------- /public/statics/js/3d_obj/wall.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/public/statics/js/3d_obj/wall.obj -------------------------------------------------------------------------------- /public/statics/js/3dconfig.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "name":"Duck", 3 | "model": { 4 | "scale": 0.05, 5 | "altitude": -150 6 | }, 7 | "font": { 8 | "scale": 0.05, 9 | "altitude": 480 10 | } 11 | }] -------------------------------------------------------------------------------- /public/statics/js/CSS2DRenderer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author mrdoob / http://mrdoob.com/ 3 | */ 4 | 5 | THREE.CSS2DObject = function ( element ) { 6 | 7 | THREE.Object3D.call( this ); 8 | 9 | this.element = element; 10 | this.element.style.position = 'absolute'; 11 | 12 | this.addEventListener( 'removed', function ( event ) { 13 | 14 | if ( this.element.parentNode !== null ) { 15 | 16 | this.element.parentNode.removeChild( this.element ); 17 | 18 | } 19 | 20 | } ); 21 | 22 | }; 23 | 24 | THREE.CSS2DObject.prototype = Object.create( THREE.Object3D.prototype ); 25 | THREE.CSS2DObject.prototype.constructor = THREE.CSS2DObject; 26 | 27 | // 28 | 29 | THREE.CSS2DRenderer = function () { 30 | 31 | console.log( 'THREE.CSS2DRenderer', THREE.REVISION ); 32 | 33 | var _width, _height; 34 | var _widthHalf, _heightHalf; 35 | 36 | var vector = new THREE.Vector3(); 37 | var viewMatrix = new THREE.Matrix4(); 38 | var viewProjectionMatrix = new THREE.Matrix4(); 39 | 40 | var domElement = document.createElement( 'div' ); 41 | domElement.style.overflow = 'hidden'; 42 | 43 | this.domElement = domElement; 44 | 45 | this.getSize = function () { 46 | 47 | return { 48 | width: _width, 49 | height: _height 50 | }; 51 | 52 | }; 53 | 54 | this.setSize = function ( width, height ) { 55 | 56 | _width = width; 57 | _height = height; 58 | 59 | _widthHalf = _width / 2; 60 | _heightHalf = _height / 2; 61 | 62 | domElement.style.width = width + 'px'; 63 | domElement.style.height = height + 'px'; 64 | 65 | }; 66 | 67 | var renderObject = function ( object, camera ) { 68 | 69 | if ( object instanceof THREE.CSS2DObject ) { 70 | 71 | vector.setFromMatrixPosition( object.matrixWorld ); 72 | vector.applyMatrix4( viewProjectionMatrix ); 73 | 74 | var element = object.element; 75 | var style = 'translate(-50%,-50%) translate(' + ( vector.x * _widthHalf + _widthHalf ) + 'px,' + ( - vector.y * _heightHalf + _heightHalf ) + 'px)'; 76 | 77 | element.style.WebkitTransform = style; 78 | element.style.MozTransform = style; 79 | element.style.oTransform = style; 80 | element.style.transform = style; 81 | 82 | if ( element.parentNode !== domElement ) { 83 | 84 | domElement.appendChild( element ); 85 | 86 | } 87 | 88 | } 89 | 90 | for ( var i = 0, l = object.children.length; i < l; i ++ ) { 91 | 92 | renderObject( object.children[ i ], camera ); 93 | 94 | } 95 | 96 | }; 97 | 98 | this.render = function ( scene, camera ) { 99 | 100 | scene.updateMatrixWorld(); 101 | 102 | if ( camera.parent === null ) camera.updateMatrixWorld(); 103 | 104 | viewMatrix.copy( camera.matrixWorldInverse ); 105 | viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, viewMatrix ); 106 | 107 | renderObject( scene, camera ); 108 | 109 | }; 110 | 111 | }; 112 | -------------------------------------------------------------------------------- /public/statics/js/CopyShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Full-screen textured quad shader 5 | */ 6 | 7 | THREE.CopyShader = { 8 | 9 | uniforms: { 10 | 11 | "tDiffuse": { value: null }, 12 | "opacity": { value: 1.0 } 13 | 14 | }, 15 | 16 | vertexShader: [ 17 | 18 | "varying vec2 vUv;", 19 | 20 | "void main() {", 21 | 22 | "vUv = uv;", 23 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 24 | 25 | "}" 26 | 27 | ].join( "\n" ), 28 | 29 | fragmentShader: [ 30 | 31 | "uniform float opacity;", 32 | 33 | "uniform sampler2D tDiffuse;", 34 | 35 | "varying vec2 vUv;", 36 | 37 | "void main() {", 38 | 39 | "vec4 texel = texture2D( tDiffuse, vUv );", 40 | "gl_FragColor = opacity * texel;", 41 | 42 | "}" 43 | 44 | ].join( "\n" ) 45 | 46 | }; 47 | -------------------------------------------------------------------------------- /public/statics/js/RenderPass.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | */ 4 | 5 | THREE.RenderPass = function ( scene, camera, overrideMaterial, clearColor, clearAlpha ) { 6 | 7 | THREE.Pass.call( this ); 8 | 9 | this.scene = scene; 10 | this.camera = camera; 11 | 12 | this.overrideMaterial = overrideMaterial; 13 | 14 | this.clearColor = clearColor; 15 | this.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0; 16 | 17 | this.clear = true; 18 | this.clearDepth = false; 19 | this.needsSwap = false; 20 | 21 | }; 22 | 23 | THREE.RenderPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), { 24 | 25 | constructor: THREE.RenderPass, 26 | 27 | render: function ( renderer, writeBuffer, readBuffer, delta, maskActive ) { 28 | 29 | var oldAutoClear = renderer.autoClear; 30 | renderer.autoClear = false; 31 | 32 | this.scene.overrideMaterial = this.overrideMaterial; 33 | 34 | var oldClearColor, oldClearAlpha; 35 | 36 | if ( this.clearColor ) { 37 | 38 | oldClearColor = renderer.getClearColor().getHex(); 39 | oldClearAlpha = renderer.getClearAlpha(); 40 | 41 | renderer.setClearColor( this.clearColor, this.clearAlpha ); 42 | 43 | } 44 | 45 | if ( this.clearDepth ) { 46 | 47 | renderer.clearDepth(); 48 | 49 | } 50 | 51 | renderer.render( this.scene, this.camera, this.renderToScreen ? null : readBuffer, this.clear ); 52 | 53 | if ( this.clearColor ) { 54 | 55 | renderer.setClearColor( oldClearColor, oldClearAlpha ); 56 | 57 | } 58 | 59 | this.scene.overrideMaterial = null; 60 | renderer.autoClear = oldAutoClear; 61 | } 62 | 63 | } ); 64 | -------------------------------------------------------------------------------- /public/statics/js/ShaderPass.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | */ 4 | 5 | THREE.ShaderPass = function ( shader, textureID ) { 6 | 7 | THREE.Pass.call( this ); 8 | 9 | this.textureID = ( textureID !== undefined ) ? textureID : "tDiffuse"; 10 | 11 | if ( shader instanceof THREE.ShaderMaterial ) { 12 | 13 | this.uniforms = shader.uniforms; 14 | 15 | this.material = shader; 16 | 17 | } else if ( shader ) { 18 | 19 | this.uniforms = THREE.UniformsUtils.clone( shader.uniforms ); 20 | 21 | this.material = new THREE.ShaderMaterial( { 22 | 23 | defines: Object.assign( {}, shader.defines ), 24 | uniforms: this.uniforms, 25 | vertexShader: shader.vertexShader, 26 | fragmentShader: shader.fragmentShader 27 | 28 | } ); 29 | 30 | } 31 | 32 | this.camera = new THREE.OrthographicCamera( - 1, 1, 1, - 1, 0, 1 ); 33 | this.scene = new THREE.Scene(); 34 | 35 | this.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( 2, 2 ), null ); 36 | this.quad.frustumCulled = false; // Avoid getting clipped 37 | this.scene.add( this.quad ); 38 | 39 | }; 40 | 41 | THREE.ShaderPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), { 42 | 43 | constructor: THREE.ShaderPass, 44 | 45 | render: function( renderer, writeBuffer, readBuffer, delta, maskActive ) { 46 | 47 | if ( this.uniforms[ this.textureID ] ) { 48 | 49 | this.uniforms[ this.textureID ].value = readBuffer.texture; 50 | 51 | } 52 | 53 | this.quad.material = this.material; 54 | 55 | if ( this.renderToScreen ) { 56 | 57 | renderer.render( this.scene, this.camera ); 58 | 59 | } else { 60 | 61 | renderer.render( this.scene, this.camera, writeBuffer, this.clear ); 62 | 63 | } 64 | 65 | } 66 | 67 | } ); 68 | -------------------------------------------------------------------------------- /quasar.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = function a(ctx) { 2 | return { 3 | supportTS: false, 4 | supportIE: false, 5 | boot: [ 6 | 'index', 7 | 'filter', 8 | 'msg', 9 | '/api', 10 | ], 11 | css: [ 12 | 'app.styl', 13 | ], 14 | extras: [ 15 | 'roboto-font', 16 | 'material-icons', 17 | 'mdi-v5', 18 | ], 19 | framework: { 20 | iconSet: 'material-icons', 21 | lang: 'zh-hans', 22 | importStrategy: 'auto', 23 | plugins: [ 24 | 'Notify', 25 | 'Dialog', 26 | 'AppFullscreen', 27 | 'Loading', 28 | ], 29 | config: { 30 | notify: { 31 | position: 'top', 32 | timeout: 4000, 33 | color: 'info', 34 | icon: 'info', 35 | actions: [{ icon: 'close', color: 'white' }], 36 | }, 37 | }, 38 | }, 39 | animations: [], 40 | build: { 41 | // vueRouterMode: 'history', 42 | transpile: true, // 执行babel转码 43 | vueCompiler: false, // 仅 Vue运行时 44 | scopeHoisting: true, // 提升运行时性能 45 | analyze: false, // 显示分析 46 | modern: true, // ES6 47 | extractCSS: false, // 从Vue文件中提取CSS 48 | minify: true, // 缩小代码 49 | preloadChunks: true, // 预加载 50 | sourceMap: ctx.dev, 51 | gzip: false, 52 | extendWebpack(cfg) { 53 | cfg.module.rules.push({ 54 | enforce: 'pre', 55 | test: /\.(js|vue)$/, 56 | loader: 'eslint-loader', 57 | exclude: /node_modules/, 58 | }); 59 | }, 60 | env: { 61 | PRODUCT_NAME: 'CC-ADMIN企业级快速开发平台', 62 | BASE_URL: '/cc-admin', 63 | SERVER_URL: 'http://www.cc-admin.top:8899', 64 | }, 65 | }, 66 | devServer: { 67 | https: false, 68 | port: 9666, 69 | open: true, 70 | proxy: { 71 | '/cc-admin': { 72 | target: 'http://www.cc-admin.top:8899', 73 | changeOrigin: true, 74 | }, 75 | }, 76 | }, 77 | }; 78 | }; 79 | -------------------------------------------------------------------------------- /src-cordova/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Generated by package manager 4 | node_modules/ 5 | 6 | # Generated by Cordova 7 | /plugins/ 8 | /platforms/ 9 | -------------------------------------------------------------------------------- /src-cordova/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | cc-admin 4 | cc-admin 5 | 6 | Apache Cordova Team 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src-cordova/cordova-flag.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // THIS FEATURE-FLAG FILE IS AUTOGENERATED, 3 | // REMOVAL OR CHANGES WILL CAUSE RELATED TYPES TO STOP WORKING 4 | import "quasar/dist/types/feature-flag"; 5 | 6 | declare module "quasar/dist/types/feature-flag" { 7 | interface QuasarFeatureFlags { 8 | cordova: true; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src-cordova/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cc.admin.gitee", 3 | "displayName": "cc-admin", 4 | "version": "1.0.0", 5 | "description": "A sample Apache Cordova application that responds to the deviceready event.", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [ 11 | "ecosystem:cordova" 12 | ], 13 | "author": "Apache Cordova Team", 14 | "license": "Apache-2.0", 15 | "devDependencies": { 16 | "cordova-android": "^9.1.0", 17 | "cordova-plugin-whitelist": "^1.3.4" 18 | }, 19 | "cordova": { 20 | "plugins": { 21 | "cordova-plugin-whitelist": {} 22 | }, 23 | "platforms": [ 24 | "android" 25 | ] 26 | } 27 | } -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 56 | -------------------------------------------------------------------------------- /src/assets/icons/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/icons/iconfont.eot -------------------------------------------------------------------------------- /src/assets/icons/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/icons/iconfont.ttf -------------------------------------------------------------------------------- /src/assets/icons/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/icons/iconfont.woff -------------------------------------------------------------------------------- /src/assets/icons/quasar-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 16 | 19 | 22 | 25 | 28 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/assets/login/ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/login/ground.png -------------------------------------------------------------------------------- /src/assets/login/login_border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/login/login_border.png -------------------------------------------------------------------------------- /src/assets/login/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/login/logo.png -------------------------------------------------------------------------------- /src/assets/login/sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/login/sky.png -------------------------------------------------------------------------------- /src/assets/screen/chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/screen/chart.png -------------------------------------------------------------------------------- /src/assets/screen/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/screen/img.png -------------------------------------------------------------------------------- /src/assets/screen/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhy6599/cc-admin-web/a0fa489bdd9c88636cb0e1e0973d02e2cfb673fe/src/assets/screen/text.png -------------------------------------------------------------------------------- /src/boot/api/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import axios from 'axios'; 3 | import { Notify } from 'quasar'; 4 | 5 | const notify = (msg) => Notify.create({ 6 | message: msg, 7 | color: 'negative', 8 | }); 9 | 10 | export const goLogin = () => { 11 | window.location.replace('#/login'); 12 | }; 13 | 14 | export const NeedLoginCode = [401, 402, 403]; 15 | // 手机打包这里需要更换下 baseURL: process.env.SERVER_URL + u, 16 | export const createBase = (u = '') => { 17 | const a = axios.create({ 18 | baseURL: u, 19 | }); 20 | a.defaults.transformRequest.push((data, headers) => { 21 | if (localStorage.Authorization) { 22 | headers.Authorization = localStorage.Authorization; 23 | } 24 | return data; 25 | }); 26 | a.interceptors.response.use( 27 | (r) => { 28 | if (r.data) { 29 | if (r.data.code && r.data.code !== 200) { 30 | if (r.data.message) { 31 | notify(`${r.data.code} - ${r.data.message}`); 32 | } 33 | if (NeedLoginCode.some((v) => v === r.data.code)) { 34 | goLogin(); 35 | } 36 | return Promise.reject(r); 37 | } 38 | return r.data; 39 | } 40 | return r; 41 | }, 42 | ({ response }) => { 43 | let msg = '未知错误'; 44 | if (response) { 45 | if (response.data) { 46 | if (!response.data.status) { 47 | msg = '服务器无响应,请联系管理员!'; 48 | } else { 49 | msg = `${response.data.message}`; 50 | } 51 | } else { 52 | msg = ''; 53 | switch (response.status) { 54 | case -1: 55 | msg += '连接失败'; 56 | break; 57 | case 500: 58 | msg += '内部错误'; 59 | break; 60 | case 404: 61 | msg += '页面不存在'; 62 | break; 63 | case 401: 64 | msg += '登录超时,请重新登录'; 65 | goLogin(); 66 | break; 67 | case 403: 68 | msg += '权限不足'; 69 | break; 70 | default: 71 | msg += '未知错误'; 72 | } 73 | } 74 | } 75 | notify(msg); 76 | return Promise.reject(response); 77 | }, 78 | ); 79 | a.createBase = (url = '') => createBase(url); 80 | return a; 81 | }; 82 | 83 | export const a = createBase(process.env.BASE_URL); 84 | Vue.prototype.$axios = a; 85 | 86 | export const downFile = (url, data) => a({ 87 | url, 88 | method: 'GET', 89 | params: data, 90 | responseType: 'blob', 91 | }); 92 | 93 | export const exportFile = (url, data) => a({ 94 | url, 95 | method: 'POST', 96 | data, 97 | responseType: 'blob', 98 | }); 99 | 100 | Vue.prototype.$downFile = downFile; 101 | Vue.prototype.$exportFile = exportFile; 102 | 103 | export const uploadFile = (url, parameter) => a({ 104 | url, 105 | data: parameter, 106 | method: 'post', 107 | headers: { 108 | 'Content-Type': 'multipart/form-data', 109 | }, 110 | }); 111 | -------------------------------------------------------------------------------- /src/boot/filter.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | 3 | Vue.filter('NumberFormat', (value) => { 4 | if (!value) { 5 | return '0'; 6 | } 7 | const intPartFormat = value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); // 将整数部分逢三一断 8 | return intPartFormat; 9 | }); 10 | 11 | /** 字符串超长截取省略号显示 */ 12 | Vue.filter('ellipsis', (value, vlength = 25) => { 13 | if (!value) { 14 | return ''; 15 | } 16 | if (value.length > vlength) { 17 | return `${value.slice(0, vlength)}...`; 18 | } 19 | return value; 20 | }); 21 | -------------------------------------------------------------------------------- /src/boot/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import viewnav from 'components/viewnav'; 3 | import btndel from 'components/btndel'; 4 | import helpinfo from 'components/helpinfo'; 5 | 6 | import inputTime from 'components/form/inputtime'; 7 | import inputDate from 'components/form/inputdate'; 8 | import inputDatetime from 'components/form/inputdatetime'; 9 | import inputTimerange from 'components/form/inputtimerange'; 10 | 11 | Vue.component('viewNav', viewnav); 12 | Vue.component('btnDel', btndel); 13 | Vue.component('helpInfo', helpinfo); 14 | 15 | Vue.component('inputTime', inputTime); 16 | Vue.component('inputDate', inputDate); 17 | Vue.component('inputDateTime', inputDatetime); 18 | Vue.component('inputTimeRange', inputTimerange); 19 | 20 | Vue.directive('auth', (el, { value }, vnode) => { 21 | if (!vnode.context.$store.getters['Rule/confirmAuth'](value)) { 22 | const comment = document.createComment(' '); 23 | vnode.elm = comment; 24 | vnode.isComment = true; 25 | 26 | if (el.parentNode) { 27 | el.parentNode.replaceChild(comment, el); 28 | } 29 | } 30 | }); 31 | 32 | Vue.directive('choosing', (el, { expression, value }) => { 33 | if (value || expression === undefined) { 34 | el.classList.add('v-choosing'); 35 | } else { 36 | el.classList.remove('v-choosing'); 37 | } 38 | }); 39 | -------------------------------------------------------------------------------- /src/boot/inputTest.js: -------------------------------------------------------------------------------- 1 | export const requiredTest = (v) => !!v || '不可以为空'; 2 | 3 | export const emailTest = (v) => { 4 | let t = null; 5 | const p = /^([A-Za-z0-9_\-.\u4e00-\u9fa5])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,8})$/; 6 | if (v && !p.test(v)) { 7 | t = '邮箱格式错误'; 8 | } 9 | return t; 10 | }; 11 | 12 | export const phoneTest = (v) => { 13 | let t = null; 14 | const p = /^1[3-9]\d{9}$/; 15 | if (v && !p.test(v)) { 16 | t = '手机号码格式错误'; 17 | } 18 | return t; 19 | }; 20 | 21 | export const numberTest = (v) => { 22 | let t = null; 23 | const p = /^-?\d*\.?\d+$/; 24 | if (v && !p.test(v)) { 25 | t = '必须为数字'; 26 | } 27 | return t; 28 | }; 29 | 30 | export const letterTest = (v) => { 31 | let t = null; 32 | const p = /^[a-zA-Z]*$/; 33 | if (v && !p.test(v)) { 34 | t = '必须为字母'; 35 | } 36 | return t; 37 | }; 38 | 39 | export const hcodeTest = (v) => { 40 | let t = null; 41 | const p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; 42 | if (v && !p.test(v)) { 43 | t = '身份证号码格式错误'; 44 | } 45 | return t; 46 | }; 47 | 48 | export const confirmPassword = (pwd) => (v) => v === pwd || '两次密码输入不一致'; 49 | -------------------------------------------------------------------------------- /src/boot/mixins/border.js: -------------------------------------------------------------------------------- 1 | import { dom, extend } from 'quasar'; 2 | 3 | export const BorderMixin = { 4 | components: { 5 | }, 6 | props: { 7 | config: { 8 | type: Object, 9 | required: false, 10 | }, 11 | }, 12 | data() { 13 | return { 14 | width: 0, 15 | height: 0, 16 | }; 17 | }, 18 | watch: { 19 | config: { 20 | deep: true, 21 | handler() { 22 | this.mergeColor(); 23 | if (this.config.needResize) { 24 | this.config.needResize = false; 25 | this.handleResize(); 26 | } 27 | }, 28 | }, 29 | }, 30 | methods: { 31 | handleResize() { 32 | const box = this.$refs[this.ref]; 33 | this.width = dom.width(box); 34 | this.height = dom.height(box); 35 | }, 36 | mergeColor() { 37 | const cloneDefaultColor = extend(true, [], this.defaultColor); 38 | this.mergedColor = extend(true, cloneDefaultColor, [this.config.color1, this.config.color2]); 39 | }, 40 | }, 41 | mounted() { 42 | this.mergeColor(); 43 | this.handleResize(); 44 | }, 45 | }; 46 | -------------------------------------------------------------------------------- /src/boot/mixins/decoration.js: -------------------------------------------------------------------------------- 1 | import { dom, extend } from 'quasar'; 2 | 3 | export const DecorationMixin = { 4 | components: { 5 | }, 6 | props: { 7 | config: { 8 | type: Object, 9 | required: false, 10 | }, 11 | reverse: { 12 | type: Boolean, 13 | default: false, 14 | }, 15 | dur: { 16 | type: Number, 17 | default: 6, 18 | }, 19 | }, 20 | data() { 21 | return { 22 | width: 21, 23 | height: 20, 24 | }; 25 | }, 26 | watch: { 27 | config: { 28 | deep: true, 29 | handler() { 30 | this.mergeColor(); 31 | if (this.config.needResize) { 32 | this.config.needResize = false; 33 | this.handleResize(); 34 | } 35 | this.afterAutoResizeMixinInit(); 36 | }, 37 | }, 38 | }, 39 | methods: { 40 | handleResize() { 41 | if (this.ref) { 42 | const box = this.$refs[this.ref]; 43 | this.width = dom.width(box); 44 | this.height = dom.height(box); 45 | } 46 | }, 47 | mergeColor() { 48 | const cloneDefaultColor = extend(true, [], this.defaultColor); 49 | this.mergedColor = extend(true, cloneDefaultColor, [this.config.color1, this.config.color2]); 50 | }, 51 | }, 52 | mounted() { 53 | this.mergeColor(); 54 | this.handleResize(); 55 | this.afterAutoResizeMixinInit(); 56 | }, 57 | }; 58 | -------------------------------------------------------------------------------- /src/boot/mixins/tool.js: -------------------------------------------------------------------------------- 1 | import ellipsisvalue from 'components/ellipsisvalue'; 2 | 3 | export const Tool = { 4 | components: { 5 | ellipsisvalue, 6 | }, 7 | data() { 8 | return { 9 | toolColumnList: [], 10 | }; 11 | }, 12 | methods: { 13 | afterTableSelect(columnList) { 14 | this.toolColumnList = columnList; 15 | }, 16 | tableSelect(row) { 17 | if (this.tool.table !== row.id) { 18 | this.tool.table = row.id; 19 | this.tool.tableName = row.name; 20 | if (this.tool.tableType === 'step') { 21 | this.$axios.get(`/data/model/stepColumns?step=${row.id}&modelId=${this.$route.query.id}`) 22 | .then(({ result }) => { 23 | this.tool.unSelectList = result; 24 | this.tool.selectList = []; 25 | 26 | this.tool.unSelectListSort = result; 27 | this.tool.selectListSort = []; 28 | this.tool.unSelectListSort.forEach((e) => { 29 | e.sort = 'asc'; 30 | }); 31 | 32 | this.tool.groupUnSelectList = result; 33 | this.tool.groupSelectList = []; 34 | this.tool.valueUnSelectList = result; 35 | this.tool.valueSelectList = []; 36 | this.afterTableSelect(result); 37 | }); 38 | } else { 39 | this.$axios.get(`/data/column/list?entity=${row.id}&pageSize=100`) 40 | .then(({ result }) => { 41 | this.tool.unSelectList = result.records; 42 | this.tool.selectList = []; 43 | 44 | this.tool.unSelectListSort = result.records; 45 | this.tool.selectListSort = []; 46 | 47 | this.tool.groupUnSelectList = result.records; 48 | this.tool.groupSelectList = []; 49 | 50 | this.tool.valueUnSelectList = result.records; 51 | this.tool.valueSelectList = []; 52 | 53 | this.afterTableSelect(result.records); 54 | }); 55 | } 56 | this.tool.columns = ''; 57 | this.tool.condition = ''; 58 | } 59 | }, 60 | columnSelect(selectList, unSelectList) { 61 | this.tool.selectList = []; 62 | this.tool.unSelectList = []; 63 | unSelectList.forEach((element) => { 64 | this.tool.unSelectList.push(element); 65 | }); 66 | const columnList = []; 67 | selectList.forEach((element) => { 68 | this.tool.selectList.push(element); 69 | columnList.push(element.code); 70 | }); 71 | this.tool.columns = columnList.join(','); 72 | }, 73 | saveCondition(condition) { 74 | this.tool.condition = condition; 75 | }, 76 | }, 77 | mounted() { 78 | if (this.step.toolConfig) { 79 | this.tool = JSON.parse(this.step.toolConfig); 80 | } 81 | if (this.stepList.length === 0) { 82 | this.tool.tableType = 'table'; 83 | } 84 | }, 85 | created() { 86 | }, 87 | computed: { 88 | }, 89 | watch: { 90 | tool: { 91 | deep: true, 92 | handler() { 93 | this.step.toolConfig = JSON.stringify(this.tool); 94 | }, 95 | }, 96 | }, 97 | }; 98 | -------------------------------------------------------------------------------- /src/boot/mixins/websocket.js: -------------------------------------------------------------------------------- 1 | export const Websocket = { 2 | components: { 3 | }, 4 | data() { 5 | return { 6 | ti: 0, 7 | }; 8 | }, 9 | methods: { 10 | initWebSocket() { 11 | // WebSocket与普通的请求所用协议有所不同,ws等同于http,wss等同于https 12 | const userName = this.$store.state.User.info.username; 13 | const url = `${process.env.SERVER_URL}${process.env.BASE_URL}/websocket/${userName}`.replace('https://', 'wss://').replace('http://', 'ws://'); 14 | this.websock = new WebSocket(url); 15 | this.websock.onopen = this.websocketOnopen; 16 | this.websock.onerror = this.websocketOnerror; 17 | this.websock.onmessage = this.websocketOnmessage; 18 | this.websock.onclose = this.websocketOnclose; 19 | }, 20 | websocketOnopen() { 21 | // 心跳检测重置 22 | this.heartCheck.reset().start(); 23 | }, 24 | websocketOnerror(e) { 25 | this.$error('WebSocket连接发生错误', e); 26 | this.reconnect(); 27 | }, 28 | websocketOnmessage(e) { 29 | const data = JSON.parse(e.data); // 解析对象 30 | if (data.cmd === 'topic') { 31 | // 系统通知 32 | this.loadData(); 33 | } else if (data.cmd === 'user') { 34 | // 用户消息 35 | this.loadData(); 36 | } else if (data.cmd === 'serverInfo') { 37 | // 用户消息 38 | this.loadServerInfo(data.msgTxt); 39 | } else if (data.cmd === 'stepStatus') { 40 | // 步骤状态 41 | this.loadData(data.msgTxt); 42 | } 43 | 44 | // 心跳检测重置 45 | this.heartCheck.reset().start(); 46 | }, 47 | websocketOnclose() { 48 | this.reconnect(); 49 | }, 50 | websocketSend(text) { // 数据发送 51 | try { 52 | this.websock.send(text); 53 | } catch (err) { 54 | this.$error(`send failed (${err.code})`); 55 | } 56 | }, 57 | 58 | openNotification(data) { 59 | const text = data.msgTxt; 60 | this.$info(text); 61 | }, 62 | 63 | reconnect() { 64 | const that = this; 65 | if (that.lockReconnect) return; 66 | that.lockReconnect = true; 67 | // 没连接上会一直重连,设置延迟避免请求过多 68 | setTimeout(() => { 69 | that.initWebSocket(); 70 | that.lockReconnect = false; 71 | }, 5000); 72 | }, 73 | heartCheckFun() { 74 | const that = this; 75 | // 心跳检测,每20s心跳一次 76 | that.heartCheck = { 77 | timeout: 20000, 78 | timeoutObj: null, 79 | serverTimeoutObj: null, 80 | reset() { 81 | clearTimeout(this.timeoutObj); 82 | return this; 83 | }, 84 | start() { 85 | this.timeoutObj = setTimeout(() => { 86 | that.websocketSend('heartCheck'); 87 | }, this.timeout); 88 | }, 89 | }; 90 | }, 91 | }, 92 | mounted() { 93 | this.initWebSocket(); 94 | this.heartCheckFun(); 95 | }, 96 | beforeDestroy() { 97 | this.websocketOnclose(); 98 | }, 99 | created() { 100 | }, 101 | computed: { 102 | }, 103 | 104 | }; 105 | -------------------------------------------------------------------------------- /src/boot/msg.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import { Notify } from 'quasar'; 3 | 4 | const error = (msg, html) => Notify.create({ 5 | message: msg, 6 | timeout: 5000, 7 | html: !!html, 8 | color: 'negative', 9 | }); 10 | const info = (msg, html) => Notify.create({ 11 | message: msg, 12 | html: !!html, 13 | color: 'positive', 14 | }); 15 | const warn = (msg, html) => Notify.create({ 16 | message: msg, 17 | html: !!html, 18 | color: 'warning', 19 | }); 20 | const retMsg = (r) => { 21 | if (r.success) { 22 | info(r.message); 23 | } else { 24 | error(r.message); 25 | } 26 | }; 27 | Vue.prototype.$info = info; 28 | Vue.prototype.$warn = warn; 29 | Vue.prototype.$error = error; 30 | Vue.prototype.$retMsg = retMsg; 31 | -------------------------------------------------------------------------------- /src/boot/routes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 一些特殊的路由设置,例如打开就需要全屏 3 | */ 4 | export const staticRouters = [ 5 | { 6 | path: '/screen/design', 7 | component: () => import('pages/bi/screen/design'), 8 | meta: { 9 | title: '电子报告-设计器', 10 | }, 11 | }, { 12 | path: '/viewfull', 13 | component: () => import('pages/bi/screen/design/viewfull'), 14 | meta: { 15 | title: '电子报告-查看', 16 | }, 17 | }, { 18 | path: '/baby/word/study', 19 | component: () => import('pages/baby/word/study'), 20 | }, { 21 | path: '/baby/word/card', 22 | component: () => import('pages/baby/word/card'), 23 | }, { 24 | path: '/baby/word/vertical', 25 | component: () => import('pages/baby/word/vertical'), 26 | }, { 27 | path: '/view', 28 | component: () => import('pages/bi/screen/design/view'), 29 | meta: { 30 | title: '电子报告-查看', 31 | }, 32 | }, 33 | ]; 34 | -------------------------------------------------------------------------------- /src/components/btndel.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 23 | -------------------------------------------------------------------------------- /src/components/catalogselect.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/components/cc-dialog.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/components/ccshadow.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 32 | 33 | 37 | -------------------------------------------------------------------------------- /src/components/chart/linkcard.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/components/chart/minibar.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 90 | 91 | 93 | -------------------------------------------------------------------------------- /src/components/chart/saletab.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/components/chart/trendline.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 105 | 106 | 108 | -------------------------------------------------------------------------------- /src/components/confirm.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 39 | -------------------------------------------------------------------------------- /src/components/ellipsisvalue.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 37 | -------------------------------------------------------------------------------- /src/components/form/inputcolor.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 46 | -------------------------------------------------------------------------------- /src/components/form/inputdate.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 67 | -------------------------------------------------------------------------------- /src/components/form/inputdatetime.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 66 | -------------------------------------------------------------------------------- /src/components/form/inputeditdatetime.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 66 | -------------------------------------------------------------------------------- /src/components/form/inputtime.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 43 | -------------------------------------------------------------------------------- /src/components/form/inputtimerange.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 57 | -------------------------------------------------------------------------------- /src/components/helpinfo.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/components/layout/tabpanel/Tab.vue: -------------------------------------------------------------------------------- 1 |  7 | 27 | -------------------------------------------------------------------------------- /src/components/menu/ccmenu.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 41 | -------------------------------------------------------------------------------- /src/components/menu/ccmenuitem.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /src/components/monitor/cpugauge.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 27 | 28 | 31 | -------------------------------------------------------------------------------- /src/components/monitor/diskbar.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 96 | 97 | 99 | -------------------------------------------------------------------------------- /src/components/monitor/serverinfo.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 75 | 76 | 81 | -------------------------------------------------------------------------------- /src/components/tableselect.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /src/components/tabpanel/Tab.vue: -------------------------------------------------------------------------------- 1 |  7 | 27 | -------------------------------------------------------------------------------- /src/components/utils/db.js: -------------------------------------------------------------------------------- 1 | const DRAWING_ITEMS = 'dynamicItems'; 2 | const DRAWING_ITEMS_VERSION = '1.0'; 3 | const DRAWING_ITEMS_VERSION_KEY = 'DYNAMIC_ITEMS_VERSION'; 4 | const DRAWING_ID = 'idGlobal'; 5 | const TREE_NODE_ID = 'treeNodeId'; 6 | const FORM_CONF = 'dynamicFormConf'; 7 | 8 | export function saveDrawingList(list) { 9 | localStorage.setItem(DRAWING_ITEMS, JSON.stringify(list)); 10 | } 11 | 12 | export function getDrawingList() { 13 | // 加入缓存版本的概念,保证缓存数据与程序匹配 14 | const version = localStorage.getItem(DRAWING_ITEMS_VERSION_KEY); 15 | if (version !== DRAWING_ITEMS_VERSION) { 16 | localStorage.setItem(DRAWING_ITEMS_VERSION_KEY, DRAWING_ITEMS_VERSION); 17 | saveDrawingList([]); 18 | return null; 19 | } 20 | 21 | const str = localStorage.getItem(DRAWING_ITEMS); 22 | if (str) return JSON.parse(str); 23 | return null; 24 | } 25 | 26 | export function getIdGlobal() { 27 | const str = localStorage.getItem(DRAWING_ID); 28 | if (str) return parseInt(str, 10); 29 | return 100; 30 | } 31 | 32 | export function saveIdGlobal(id) { 33 | localStorage.setItem(DRAWING_ID, `${id}`); 34 | } 35 | 36 | export function getTreeNodeId() { 37 | const str = localStorage.getItem(TREE_NODE_ID); 38 | if (str) return parseInt(str, 10); 39 | return 100; 40 | } 41 | 42 | export function saveTreeNodeId(id) { 43 | localStorage.setItem(TREE_NODE_ID, `${id}`); 44 | } 45 | 46 | export function getFormConf() { 47 | const str = localStorage.getItem(FORM_CONF); 48 | if (str) return JSON.parse(str); 49 | return null; 50 | } 51 | 52 | export function saveFormConf(obj) { 53 | localStorage.setItem(FORM_CONF, JSON.stringify(obj)); 54 | } 55 | -------------------------------------------------------------------------------- /src/components/utils/dom.js: -------------------------------------------------------------------------------- 1 | export function appendLink(href, doc = document) { 2 | const link = doc.createElement('link'); 3 | link.rel = 'stylesheet'; 4 | link.type = 'text/css'; 5 | link.href = href; 6 | link.media = 'all'; 7 | doc.head.appendChild(link); 8 | } 9 | 10 | export function appendScriptLink(data, doc = document) { 11 | const list = !Array.isArray(data) ? [data] : data; 12 | return Promise.all(list.map((item) => new Promise((resolve) => { 13 | const script = doc.createElement('script'); 14 | script.type = 'text/javascript'; 15 | script.onload = resolve; 16 | Object.assign(script, item); 17 | doc.head.appendChild(script); 18 | }))); 19 | } 20 | 21 | export function appendStyle(data, doc = document) { 22 | const style = doc.createElement('style'); 23 | style.id = Math.random().toString(36).slice(2); 24 | style.type = 'text/css'; 25 | style.appendChild(doc.createTextNode(data)); 26 | doc.head.appendChild(style); 27 | return style.id; 28 | } 29 | 30 | export function appendScript(data, doc = document) { 31 | const script = doc.createElement('script'); 32 | script.id = Math.random().toString(36).slice(2); 33 | script.type = 'text/javascript'; 34 | script.appendChild(doc.createTextNode(data)); 35 | doc.head.appendChild(script); 36 | return script.id; 37 | } 38 | 39 | export function prependDom(data, doc = document) { 40 | const tag = typeof data === 'string' ? data : data.tag; 41 | const dom = doc.createElement(tag); 42 | Object.assign(dom, data); 43 | doc.body.prepend(dom); 44 | } 45 | 46 | export function removeElement(id, doc = document) { 47 | if (!id) { 48 | return; 49 | } 50 | const ele = doc.getElementById(id); 51 | if (ele) { 52 | ele.parentNode.removeChild(ele); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/components/utils/loadMonaco.js: -------------------------------------------------------------------------------- 1 | import { 2 | Loading, 3 | QSpinnerGears, 4 | } from 'quasar'; 5 | import loadScript from './loadScript'; 6 | import pluginsConfig from './pluginsConfig'; 7 | 8 | // monaco-editor单例 9 | let monacoEidtor; 10 | 11 | /** 12 | * 动态加载monaco-editor cdn资源 13 | * @param {Function} cb 回调,必填 14 | */ 15 | export default function loadMonaco(cb) { 16 | if (monacoEidtor) { 17 | cb(monacoEidtor); 18 | return; 19 | } 20 | 21 | const { monacoEditorUrl: vs } = pluginsConfig; 22 | 23 | Loading.show({ 24 | spinner: QSpinnerGears, 25 | message: '编辑器资源初始化中...', 26 | }); 27 | if (!window.require) { 28 | window.require = {}; 29 | } 30 | if (!window.require.paths) { 31 | window.require.paths = {}; 32 | } 33 | window.require.paths.vs = vs; 34 | 35 | loadScript(`${vs}/loader.js`, () => { 36 | window.require(['vs/editor/editor.main'], () => { 37 | Loading.hide(); 38 | monacoEidtor = window.monaco; 39 | cb(monacoEidtor); 40 | }); 41 | }); 42 | } 43 | -------------------------------------------------------------------------------- /src/components/utils/loadScript.js: -------------------------------------------------------------------------------- 1 | const callbacks = {}; 2 | 3 | /** 4 | * 加载一个远程脚本 5 | * @param {String} src 一个远程脚本 6 | * @param {Function} callback 回调 7 | */ 8 | function loadScript(src, callback) { 9 | const existingScript = document.getElementById(src); 10 | const cb = callback || (() => {}); 11 | 12 | function ieOnEnd(script) { 13 | script.onreadystatechange = () => { 14 | if (this.readyState !== 'complete' && this.readyState !== 'loaded') return; 15 | this.onreadystatechange = null; 16 | callbacks[src].forEach((item) => { 17 | item(null, script); 18 | }); 19 | delete callbacks[src]; 20 | }; 21 | } 22 | function stdOnEnd(script) { 23 | script.onload = () => { 24 | this.onerror = null; this.onload = null; 25 | callbacks[src].forEach((item) => { 26 | item(null, script); 27 | }); 28 | delete callbacks[src]; 29 | }; 30 | script.onerror = () => { 31 | this.onerror = null; this.onload = null; 32 | cb(new Error(`Failed to load ${src}`), script); 33 | }; 34 | } 35 | 36 | if (!existingScript) { 37 | callbacks[src] = []; 38 | const $script = document.createElement('script'); 39 | $script.src = src; 40 | $script.id = src; 41 | $script.async = 1; 42 | document.body.appendChild($script); 43 | const onEnd = 'onload' in $script ? stdOnEnd.bind($script) : ieOnEnd.bind($script); 44 | onEnd($script); 45 | } 46 | 47 | callbacks[src].push(cb); 48 | } 49 | 50 | /** 51 | * 顺序加载一组远程脚本 52 | * @param {Array} list 一组远程脚本 53 | * @param {Function} cb 回调 54 | */ 55 | export function loadScriptQueue(list, cb) { 56 | const first = list.shift(); 57 | if (list.length) { 58 | loadScript(first, () => loadScriptQueue(list, cb)); 59 | } else { 60 | loadScript(first, cb); 61 | } 62 | } 63 | 64 | export default loadScript; 65 | -------------------------------------------------------------------------------- /src/components/utils/math.js: -------------------------------------------------------------------------------- 1 | export function randomExtend(minNum, maxNum) { 2 | if (arguments.length === 1) { 3 | return parseInt(Math.random() * minNum + 1, 10); 4 | } 5 | return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10); 6 | } 7 | -------------------------------------------------------------------------------- /src/components/utils/pluginsConfig.js: -------------------------------------------------------------------------------- 1 | const CDN = 'https://lib.baomitu.com/'; // CDN Homepage: https://cdn.baomitu.com/ 2 | const publicPath = process.env.BASE_URL; 3 | 4 | function splicingPluginUrl(PluginName, version, fileName) { 5 | return `${CDN}${PluginName}/${version}/${fileName}`; 6 | } 7 | 8 | export default { 9 | beautifierUrl: splicingPluginUrl('js-beautify', '1.13.5', 'beautifier.min.js'), 10 | // monacoEditorUrl: splicingPluginUrl('monaco-editor', '0.19.3', 'min/vs'), 11 | monacoEditorUrl: `${publicPath}libs/monaco-editor/vs`, // 使用 monaco-editor 本地代码 12 | tinymceUrl: splicingPluginUrl('tinymce', '5.7.0', 'tinymce.min.js'), 13 | }; 14 | -------------------------------------------------------------------------------- /src/components/utils/vm.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 将字符串转换成代码对象 3 | * @param code 代码 4 | * @param value 默认值 5 | * @param params scoped变量,上下文变量,类似全局变量 6 | */ 7 | export function stringToCode(code, value, params) { 8 | const result = { value, error: null }; 9 | try { 10 | result.value = new Function('context', `return ${code}`)(params) || value; // eslint-disable-line no-new-func 11 | } catch (e) { 12 | result.error = e; 13 | } 14 | return result; 15 | } 16 | 17 | /** 18 | * 执行一段字符串格式的函数 19 | */ 20 | export function runFnInVm(code, params, globalParams) { 21 | const NOOP = (args) => args; 22 | const result = stringToCode(code, NOOP, globalParams); 23 | const fn = result.value; 24 | result.value = params; 25 | if (result.error) { 26 | return result; 27 | } 28 | if (typeof fn !== 'function') { 29 | result.error = new Error('非法的js脚本函数'); 30 | return result; 31 | } 32 | try { 33 | result.value = fn.call(fn, params); 34 | } catch (e) { 35 | result.error = e; 36 | } 37 | return result; 38 | } 39 | -------------------------------------------------------------------------------- /src/components/viewnav.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 45 | 46 | 90 | -------------------------------------------------------------------------------- /src/css/codemirror.css: -------------------------------------------------------------------------------- 1 | .cm-s-3024-day.CodeMirror { background: #fff; color: #3a3432; } 2 | .cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; } 3 | 4 | .cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; } 5 | .cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; } 6 | .cm-s-3024-day .CodeMirror-gutters { background: #fff; border-right: 1px solid #eee; } 7 | .cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } 8 | .cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; } 9 | .cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; } 10 | 11 | .cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; } 12 | 13 | .cm-s-3024-day span.cm-comment { color: #cdab53; } 14 | .cm-s-3024-day span.cm-atom { color: #a16a94; } 15 | .cm-s-3024-day span.cm-number { color: #a16a94; } 16 | 17 | .cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color: #01a252; } 18 | .cm-s-3024-day span.cm-keyword { color: #1B98E0; } 19 | .cm-s-3024-day span.cm-string { color: #84A91E; } 20 | 21 | .cm-s-3024-day span.cm-variable { color: #01a252; } 22 | .cm-s-3024-day span.cm-variable-2 { color: #E76F51; } 23 | .cm-s-3024-day span.cm-def { color: #e8bbd0; } 24 | .cm-s-3024-day span.cm-bracket { color: #3a3432; } 25 | .cm-s-3024-day span.cm-tag { color: #db2d20; } 26 | .cm-s-3024-day span.cm-link { color: #a16a94; } 27 | .cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; } 28 | 29 | .cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; } 30 | .cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; } 31 | 32 | .CodeMirror-hints { z-index: 9999 !important; } 33 | 34 | .CodeMirror pre.CodeMirror-placeholder { color: #b9b9b9; } 35 | 36 | .CodeMirror { 37 | border: 1px solid #eee; 38 | height: 100%; 39 | } 40 | 41 | .ant-form-item-control-wrapper { 42 | height: 100%; 43 | } 44 | 45 | .ant-form-item-control { 46 | height: 100%; 47 | } 48 | 49 | .cm-s-3024-day span.cm-error { background: #ef6155; color: #fefefe; } -------------------------------------------------------------------------------- /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 | // Your own variables (that are declared here) and Quasar's own 9 | // ones will be available out of the box in your .vue/.styl files 10 | 11 | // It's highly recommended to change the default colors 12 | // to match your app's branding. 13 | // Tip: Use the "Theme Builder" on Quasar's documentation website. 14 | 15 | $primary = #1576e8 16 | $primary-light = #cdf 17 | $secondary = #26A69A 18 | $accent = #9C27B0 19 | 20 | $positive = #21BA45 21 | $positive-light = #beb 22 | $negative = #C10015 23 | $info = #31CCEC 24 | $warning = #F2C037 25 | 26 | $white = #fff 27 | $base = #f0f4f8 28 | $light = #c8d5ea 29 | $sky = #63a0f2 30 | $dark = #222 31 | $t-grey = #6d7fa4 32 | $t-dark = #4b576f 33 | $ash = #bbb 34 | $snow = #ddd 35 | -------------------------------------------------------------------------------- /src/layouts/LoginLayout.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 26 | -------------------------------------------------------------------------------- /src/pages/account/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/pages/ancestor/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/pages/baby/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/pages/bi/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/setting/bordersetting.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/setting/chart/config/line.vue: -------------------------------------------------------------------------------- 1 | 47 | 48 | 85 | 86 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/setting/decorationsetting.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/setting/groupsetting.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 35 | 36 | 38 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/setting/omnipotentsetting.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 45 | 46 | 48 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/setting/videosetting.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 59 | 60 | 62 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/borderview.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 69 | 70 | 72 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/chartview.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 27 | 28 | 30 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/custom/customcar.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 97 | 98 | 101 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/custom/customline.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 87 | 88 | 91 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/decorationview.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 66 | 67 | 69 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/groupview.vue: -------------------------------------------------------------------------------- 1 | 4 | 28 | 29 | 31 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/imageview.vue: -------------------------------------------------------------------------------- 1 | 8 | 60 | 61 | 75 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/omnipotentview.vue: -------------------------------------------------------------------------------- 1 | 4 | 47 | 48 | 50 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/rankview.vue: -------------------------------------------------------------------------------- 1 | 4 | 33 | 34 | 36 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/videoview.vue: -------------------------------------------------------------------------------- 1 | 12 | 53 | 54 | 56 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox10/index.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 59 | 60 | 82 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox13/index.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 69 | 70 | 84 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox2/index.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 56 | 57 | 74 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox3/index.vue: -------------------------------------------------------------------------------- 1 | 38 | 39 | 64 | 65 | 85 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox5/index.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 84 | 85 | 109 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox6/index.vue: -------------------------------------------------------------------------------- 1 | 44 | 45 | 70 | 71 | 88 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/border/borderbox7/index.vue: -------------------------------------------------------------------------------- 1 | 49 | 50 | 75 | 76 | 97 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/custom.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 110 | 111 | 113 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/decoration/decoration11/index.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 78 | 79 | 93 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/decoration/decoration2/index.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 88 | 89 | 94 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/decoration/decoration3/index.vue: -------------------------------------------------------------------------------- 1 | 30 | 31 | 103 | 104 | 109 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/decoration/decoration4/index.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 53 | 54 | 85 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/decoration/decoration7/index.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 53 | 54 | 60 | -------------------------------------------------------------------------------- /src/pages/bi/screen/design/modules/view/widgets/decoration/decoration8/index.vue: -------------------------------------------------------------------------------- 1 | 27 | 28 | 52 | 53 | 57 | -------------------------------------------------------------------------------- /src/pages/demo/demo10/index.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/pages/demo/demo12/index.vue: -------------------------------------------------------------------------------- 1 | 48 | 83 | -------------------------------------------------------------------------------- /src/pages/demo/demo13/index.vue: -------------------------------------------------------------------------------- 1 | 15 | 38 | 39 | 58 | -------------------------------------------------------------------------------- /src/pages/demo/demo17/index.vue: -------------------------------------------------------------------------------- 1 |