From 4eaa07d01181039452b62b0e46a878e158d1a4ab Mon Sep 17 00:00:00 2001 From: Cc Date: Thu, 26 Sep 2024 14:04:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .browserslistrc | 3 + .editorconfig | 12 + .eslintignore | 7 + .eslintrc.js | 37 + .gitattributes | 16 + .gitignore | 40 + .prettierignore | 1 + .stylelintrc.js | 3 + .vscode/settings.json | 57 + LICENSE | 373 + babel.config.js | 3 + built.js | 70 + deploy.sh | 17 + error.txt | 1 + jsconfig.json | 12 + mock/controller/user.js | 104 + mock/index.js | 99 + mock/utils/index.js | 42 + package.json | 105 + prettier.config.js | 16 + public/favicon.ico | Bin 0 -> 4286 bytes public/index.html | 55 + src/App.vue | 3 + src/api/alarm.js | 121 + src/api/alarmuser.js | 57 + src/api/analysis.js | 212 + src/api/api.js | 9 + src/api/apply.js | 73 + src/api/city.js | 9 + src/api/clock.js | 73 + src/api/dept.js | 44 + src/api/device.js | 290 + src/api/download.js | 103 + src/api/flow.js | 60 + src/api/fluorite.js | 101 + src/api/group.js | 37 + src/api/index.js | 76 + src/api/inspection.js | 75 + src/api/intention.js | 39 + src/api/knowledge.js | 47 + src/api/log.js | 89 + src/api/maintenance.js | 74 + src/api/manage.js | 95 + src/api/material.js | 31 + src/api/menu.js | 118 + src/api/monitor.js | 132 + src/api/project.js | 106 + src/api/publicKey.js | 8 + src/api/repair.js | 101 + src/api/role.js | 111 + src/api/sensor.js | 110 + src/api/staff.js | 9 + src/api/sys.js | 25 + src/api/sysdict.js | 66 + src/api/task.js | 94 + src/api/testing.js | 73 + src/api/tq.js | 8 + src/api/trigger.js | 116 + src/api/triggerRule.js | 59 + src/api/user.js | 99 + src/api/vehicle.js | 49 + src/api/video.js | 21 + src/api/video.vue | 1 + src/api/wechat.js | 162 + src/assets/copy.png | Bin 0 -> 271 bytes src/assets/cropper_images/user.gif | Bin 0 -> 8019 bytes src/assets/empty_images/data_empty.png | Bin 0 -> 67649 bytes src/assets/error_images/403.png | Bin 0 -> 149303 bytes src/assets/error_images/404.png | Bin 0 -> 71577 bytes src/assets/error_images/cloud.png | Bin 0 -> 2029 bytes src/assets/ewm.png | Bin 0 -> 3496 bytes src/assets/folder.png | Bin 0 -> 208 bytes src/assets/gis.jpg | Bin 0 -> 207402 bytes src/assets/group.jpg | Bin 0 -> 167500 bytes src/assets/home/jd.png | Bin 0 -> 5102 bytes src/assets/home/js.png | Bin 0 -> 2688 bytes src/assets/home/jt.png | Bin 0 -> 4308 bytes src/assets/home/ljydl.png | Bin 0 -> 3414 bytes src/assets/home/ljysl.png | Bin 0 -> 4183 bytes src/assets/index_images/image.jpg | Bin 0 -> 18324 bytes src/assets/interrupt.png | Bin 0 -> 3286 bytes src/assets/login_images/background.jpg | Bin 0 -> 135917 bytes src/assets/login_images/background.png | Bin 0 -> 700540 bytes src/assets/login_images/el_login.png | Bin 0 -> 41931 bytes src/assets/login_images/login_left.png | Bin 0 -> 119919 bytes src/assets/login_images/login_wrap.png | Bin 0 -> 28815 bytes src/assets/login_images/logo.png | Bin 0 -> 15114 bytes src/assets/logo.png | Bin 0 -> 168853 bytes src/assets/marker.png | Bin 0 -> 38841 bytes src/assets/mobile_images/mobile.png | Bin 0 -> 198796 bytes src/assets/position.gif | Bin 0 -> 93553 bytes src/assets/stop.gif | Bin 0 -> 92218 bytes src/assets/success.png | Bin 0 -> 3809 bytes src/assets/touxiang.png | Bin 0 -> 6476 bytes src/common/ckeditor.config.js | 34 + src/common/ckeditor/ckeditor.js | 7 + src/common/ckeditor/style.css | 496 + src/common/ckeditor/zh.js | 142 + src/common/location.js | 86 + src/common/times.js | 115 + src/config/cli.config.js | 27 + src/config/index.js | 11 + src/config/net.config.js | 19 + src/config/setting.config.js | 53 + src/icon/index.js | 5 + src/icon/remixIcon/vuejs-fill.svg | 4 + src/main.js | 31 + src/permission.js | 60 + src/router/guard.js | 63 + src/router/index.js | 554 ++ src/router/setting | 0 src/store/index.js | 21 + src/store/modules/acl.js | 33 + src/store/modules/permission.js | 61 + src/store/modules/routes.js | 42 + src/store/modules/settings.js | 46 + src/store/modules/tabsBar.js | 64 + src/store/modules/user.js | 132 + src/utils/accessToken.js | 59 + src/utils/city.js | 8612 +++++++++++++++++ src/utils/common.js | 3 + src/utils/encrypt.js | 96 + src/utils/excel.js | 54 + src/utils/hasAccess.js | 43 + src/utils/img.js | 24 + src/utils/index.js | 20 + src/utils/loading.js | 30 + src/utils/menu.js | 40 + src/utils/pageTitle.js | 14 + src/utils/request.js | 109 + src/utils/routes.js | 61 + src/utils/set.js | 0 src/utils/static.js | 53 + src/utils/token.js | 63 + src/utils/validate.js | 213 + src/vab/components/VabAppMain/index.vue | 74 + src/vab/components/VabAvatar/index.vue | 154 + src/vab/components/VabLogo/index.vue | 79 + src/vab/components/VabNavBar/index.vue | 247 + src/vab/images/logo.png | Bin 0 -> 168853 bytes src/vab/images/logo11.png | Bin 0 -> 6849 bytes src/vab/index.js | 26 + src/vab/layouts/VabVertical/index.vue | 116 + src/vab/layouts/index.vue | 91 + src/vab/plugins/directive.js | 100 + src/vab/plugins/elementPlus.js | 10 + src/vab/plugins/support.js | 20 + src/vab/styles/normalize.scss | 377 + src/vab/styles/tianditu.scss | 0 src/vab/styles/transition.scss | 16 + src/vab/styles/vab.scss | 413 + .../styles/variables/element-variables.scss | 31 + src/vab/styles/variables/variables.scss | 91 + src/views/403.vue | 223 + src/views/404.vue | 223 + .../analysis/dfunction/components/elecDay.vue | 204 + .../analysis/dfunction/components/siteDay.vue | 187 + .../dfunction/components/waterDay.vue | 209 + .../dfunction/components/watergraph.vue | 183 + src/views/analysis/dfunction/index.vue | 50 + src/views/analysis/energy/index.vue | 623 ++ .../analysis/equipmentfunction/index.vue | 345 + .../analysis/facilitiesfunction/index.vue | 296 + src/views/analysis/factoryData/index.vue | 462 + .../mfunction/components/elecMonth.vue | 192 + .../mfunction/components/siteMonth.vue | 216 + .../mfunction/components/waterMonth.vue | 194 + src/views/analysis/mfunction/index.vue | 67 + .../analysis/sensoriotdata/currentData.vue | 244 + .../analysis/sensoriotdata/historyData.vue | 241 + src/views/analysis/sensoriotdata/index.vue | 153 + src/views/analysis/sensoriotdata/showdata.vue | 72 + src/views/analysis/site/components/bdMap.vue | 163 + .../analysis/site/components/copyDevice.vue | 73 + .../analysis/site/components/deviceEdit.vue | 364 + .../analysis/site/components/realIndex.vue | 120 + .../analysis/site/components/siteIndex.vue | 516 + src/views/analysis/site/index.vue | 81 + src/views/analysis/water/index.vue | 244 + src/views/analysis/weekfunction/index.vue | 371 + src/views/analysis/workmanship/index.vue | 439 + src/views/compoents/editor/index.vue | 84 + src/views/department/list/add.vue | 110 + src/views/department/list/index.vue | 231 + src/views/dev/alarm/components/add.vue | 254 + src/views/dev/alarm/components/current.vue | 241 + src/views/dev/alarm/components/history.vue | 356 + src/views/dev/alarm/components/toTask.vue | 186 + src/views/dev/alarm/index.vue | 79 + src/views/dev/apply/components/apply.vue | 306 + .../dev/apply/components/applyDetail.vue | 104 + src/views/dev/apply/components/applyEdit.vue | 287 + src/views/dev/apply/components/testing.vue | 398 + src/views/dev/apply/components/testingAdd.vue | 174 + src/views/dev/apply/index.vue | 72 + src/views/dev/clock/index.vue | 325 + src/views/dev/clock/trajectory.vue | 233 + src/views/dev/filling/detail.vue | 1073 ++ src/views/dev/filling/index.vue | 287 + src/views/dev/knowledge/components/detail.vue | 57 + .../knowledge/components/knowledgeEdit.vue | 152 + src/views/dev/knowledge/index.vue | 299 + src/views/dev/maintenance/components/add.vue | 288 + .../dev/maintenance/components/equipment.vue | 240 + .../dev/maintenance/components/online.vue | 347 + .../dev/maintenance/components/repairEdit.vue | 300 + .../dev/maintenance/components/totask.vue | 166 + src/views/dev/maintenance/index.vue | 79 + .../dev/repair/components/repairEdit.vue | 201 + src/views/dev/repair/index.vue | 281 + src/views/dev/staff/index.vue | 95 + .../dev/task/components/alarm/alarmAdd.vue | 184 + .../dev/task/components/alarm/feedback.vue | 146 + src/views/dev/task/components/alarm/index.vue | 296 + .../dev/task/components/main/alarmAdd.vue | 183 + .../dev/task/components/main/feedback.vue | 146 + src/views/dev/task/components/main/index.vue | 294 + .../dev/task/components/other/alarmAdd.vue | 245 + .../dev/task/components/other/feedback.vue | 155 + src/views/dev/task/components/other/index.vue | 298 + src/views/dev/task/index.vue | 80 + src/views/dev/vehicle/index.vue | 99 + src/views/index/chart/alarm.vue | 114 + src/views/index/chart/clockFold.vue | 80 + src/views/index/chart/clockIn.vue | 99 + src/views/index/chart/consumption.vue | 138 + .../index/chart/maintenance-personnel.vue | 124 + src/views/index/chart/maintenance-site.vue | 155 + src/views/index/chart/operating.vue | 135 + src/views/index/chart/perfect.vue | 136 + src/views/index/chart/work.vue | 115 + .../components/DialogMarkerContainer.vue | 40 + src/views/index/components/SiteDetail.vue | 287 + src/views/index/components/SiteSearch.vue | 192 + .../index/components/VersionInformation.vue | 80 + src/views/index/index.vue | 568 ++ src/views/index/index1.vue | 282 + src/views/index/utils.js | 168 + src/views/iot/alarmuser.vue | 172 + src/views/iot/alarmuser/bindDevice.vue | 100 + src/views/iot/alarmuser/index.vue | 204 + src/views/iot/alarmuser/userEdit.vue | 130 + src/views/iot/device.vue | 58 + src/views/iot/device/components/bdMap.vue | 486 + .../iot/device/components/copyDevice.vue | 77 + .../iot/device/components/deviceEdit.vue | 647 ++ src/views/iot/device/components/frameMap.vue | 73 + src/views/iot/device/components/sync.vue | 103 + src/views/iot/device/index.vue | 598 ++ src/views/iot/group.vue | 87 + src/views/iot/group/components/groupEdit.vue | 167 + src/views/iot/group/index.vue | 182 + src/views/iot/grouping.vue | 154 + src/views/iot/grouping/groupEdit.vue | 102 + src/views/iot/grouping/index.vue | 276 + src/views/iot/police/components/index.vue | 170 + src/views/iot/police/index.vue | 210 + src/views/iot/project/components/alarm.vue | 104 + src/views/iot/project/components/group.vue | 138 + .../iot/project/components/groupEdit.vue | 91 + .../iot/project/components/projectEdit.vue | 320 + src/views/iot/project/index.vue | 427 + src/views/iot/sensor.vue | 131 + src/views/iot/sensor/add.vue | 424 + src/views/iot/sensor/index.vue | 296 + src/views/iot/sensor/parameter.vue | 111 + src/views/iot/sensor1.vue | 163 + src/views/iot/sensordata.vue | 171 + src/views/iot/sensordata/currentData.vue | 264 + src/views/iot/sensordata/historyData.vue | 276 + src/views/iot/sensordata/index.vue | 174 + src/views/iot/sensordata/showdata.vue | 72 + src/views/iot/trigger.vue | 136 + src/views/iot/trigger/index.vue | 86 + src/views/iot/trigger/rule.vue | 320 + src/views/iot/trigger/ruleEdit.vue | 345 + src/views/iot/trigger/sensor.vue | 108 + src/views/iot/trigger/trigger.vue | 273 + src/views/iot/trigger/triggerEdit.vue | 506 + src/views/iot/trigger/triggerTable.vue | 237 + src/views/iot/trigger/triggerdetail.vue | 232 + src/views/iot/vehicle/bindProject.vue | 108 + src/views/iot/vehicle/index.vue | 233 + src/views/log/action/index.vue | 400 + src/views/log/login/index.vue | 286 + src/views/login/index.vue | 520 + src/views/login/singIn.vue | 165 + src/views/login/trialAdd.vue | 146 + src/views/maintenance/facility/index.vue | 11 + src/views/maintenance/patrol/index.vue | 11 + .../maintenance/problemReporting/index.vue | 283 + src/views/maintenance/team/group/index.vue | 261 + src/views/maintenance/team/index.vue | 54 + src/views/maintenance/team/vehicle/index.vue | 184 + src/views/maintenance/workorder/index.vue | 64 + .../maintenance/workorder/junction/index.vue | 264 + src/views/maintenance/workorder/my/index.vue | 264 + .../maintenance/workorder/overdue/index.vue | 264 + .../maintenance/workorder/stay/index.vue | 264 + src/views/map/map.vue | 11 + src/views/party/flow/bindDevice.vue | 97 + src/views/party/flow/index.vue | 278 + src/views/party/flow/showDetail.vue | 135 + src/views/party/fluorite/add.vue | 133 + src/views/party/fluorite/bindDevice.vue | 86 + .../party/fluorite/fluoriteSensorData.vue | 169 + src/views/party/fluorite/index.vue | 256 + src/views/party/fluorite/videoData.vue | 276 + src/views/party/gis/index.vue | 115 + .../components/alarm/components/current.vue | 245 + .../components/alarm/components/history.vue | 361 + .../components/alarm/components/toTask.vue | 186 + .../server/assets/components/alarm/index.vue | 82 + .../server/assets/components/device/index.vue | 548 ++ .../server/assets/components/police/index.vue | 175 + .../assets/components/project/index.vue | 383 + .../server/assets/components/run/index.vue | 217 + .../assets/components/vehicle/index.vue | 192 + src/views/server/assets/index.vue | 118 + src/views/server/dataEnquiry/index.vue | 493 + .../components/DialogMarkerContainer.vue | 40 + .../server/monitor/components/SiteDetail.vue | 277 + .../server/monitor/components/SiteSearch.vue | 191 + src/views/server/monitor/index.vue | 258 + src/views/server/monitor/utils.js | 168 + src/views/server/monitorVideo/index.vue | 124 + src/views/server/siteDetails/distribute.vue | 112 + src/views/server/siteDetails/image.vue | 101 + src/views/server/siteDetails/index.vue | 353 + src/views/server/siteDetails/only.vue | 123 + src/views/server/siteDetails/readable.vue | 132 + src/views/server/siteDetails/site.vue | 107 + src/views/server/siteDetails/technology.vue | 108 + src/views/server/siteDetails/video.vue | 190 + src/views/server/siteDetails/water.vue | 181 + src/views/server/tablefirst/index.vue | 124 + src/views/server/tablesecond/index.vue | 124 + src/views/server/tablethred/index.vue | 256 + src/views/server/tablethred/index1.vue | 491 + src/views/set/develop.vue | 407 + src/views/set/develop/dict/add.vue | 124 + src/views/set/develop/dict/index.vue | 155 + src/views/set/develop/dictdata/add.vue | 116 + src/views/set/develop/dictdata/index.vue | 154 + src/views/set/develop/index.vue | 350 + src/views/set/global.vue | 206 + src/views/set/global/index.vue | 374 + src/views/set/intention/add.vue | 127 + src/views/set/intention/index.vue | 184 + src/views/set/manage.vue | 321 + .../manage/components/applets/appletsEdit.vue | 136 + .../components/applets/appletsGrant.vue | 96 + .../components/applets/appletsIndex.vue | 192 + .../set/manage/components/role/roleEdit.vue | 137 + .../set/manage/components/role/roleGrant.vue | 118 + .../set/manage/components/role/roleIndex.vue | 194 + .../set/manage/components/user/manageEdit.vue | 183 + .../manage/components/user/manageIndex.vue | 336 + .../manage/components/user/manageMiniRole.vue | 93 + .../manage/components/user/manageProduct.vue | 99 + .../set/manage/components/user/manageRole.vue | 99 + src/views/set/manage/index.vue | 336 + src/views/set/manage/role.vue | 105 + src/views/set/material.vue | 77 + src/views/set/material/components/add.vue | 116 + src/views/set/material/index.vue | 214 + src/views/set/set.vue | 179 + .../set/components/applets/appletsEdit.vue | 145 + .../set/components/applets/appletsIndex.vue | 199 + .../set/set/components/config/sysConfig.vue | 208 + src/views/set/set/components/menuEdit.vue | 171 + src/views/set/set/components/menuIndex.vue | 199 + src/views/set/set/index.vue | 93 + src/views/set/user/components/basic.vue | 85 + src/views/set/user/components/resetting.vue | 82 + src/views/set/user/index.vue | 71 + src/views/wechat/menu/add.vue | 149 + src/views/wechat/menu/index.vue | 390 + src/views/wechat/reply/default/add.vue | 177 + src/views/wechat/reply/default/index.vue | 175 + .../wechat/reply/default/material_detail.vue | 63 + src/views/wechat/reply/default/selectData.vue | 162 + src/views/wechat/reply/default/showData.vue | 62 + src/views/wechat/reply/follow/add.vue | 175 + src/views/wechat/reply/follow/index.vue | 188 + .../wechat/reply/follow/material_detail.vue | 63 + src/views/wechat/reply/follow/selectData.vue | 155 + src/views/wechat/reply/follow/showData.vue | 62 + src/views/wechat/reply/index.vue | 93 + src/views/wechat/reply/keywords/add.vue | 228 + src/views/wechat/reply/keywords/index.vue | 204 + src/views/wechat/reply/keywords/show_data.vue | 70 + vue.config.js | 178 + webstorm.config.js | 2 + 394 files changed, 66879 insertions(+) create mode 100644 .browserslistrc create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .stylelintrc.js create mode 100644 .vscode/settings.json create mode 100644 LICENSE create mode 100644 babel.config.js create mode 100644 built.js create mode 100644 deploy.sh create mode 100644 error.txt create mode 100644 jsconfig.json create mode 100644 mock/controller/user.js create mode 100644 mock/index.js create mode 100644 mock/utils/index.js create mode 100644 package.json create mode 100644 prettier.config.js create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/api/alarm.js create mode 100644 src/api/alarmuser.js create mode 100644 src/api/analysis.js create mode 100644 src/api/api.js create mode 100644 src/api/apply.js create mode 100644 src/api/city.js create mode 100644 src/api/clock.js create mode 100644 src/api/dept.js create mode 100644 src/api/device.js create mode 100644 src/api/download.js create mode 100644 src/api/flow.js create mode 100644 src/api/fluorite.js create mode 100644 src/api/group.js create mode 100644 src/api/index.js create mode 100644 src/api/inspection.js create mode 100644 src/api/intention.js create mode 100644 src/api/knowledge.js create mode 100644 src/api/log.js create mode 100644 src/api/maintenance.js create mode 100644 src/api/manage.js create mode 100644 src/api/material.js create mode 100644 src/api/menu.js create mode 100644 src/api/monitor.js create mode 100644 src/api/project.js create mode 100644 src/api/publicKey.js create mode 100644 src/api/repair.js create mode 100644 src/api/role.js create mode 100644 src/api/sensor.js create mode 100644 src/api/staff.js create mode 100644 src/api/sys.js create mode 100644 src/api/sysdict.js create mode 100644 src/api/task.js create mode 100644 src/api/testing.js create mode 100644 src/api/tq.js create mode 100644 src/api/trigger.js create mode 100644 src/api/triggerRule.js create mode 100644 src/api/user.js create mode 100644 src/api/vehicle.js create mode 100644 src/api/video.js create mode 100644 src/api/video.vue create mode 100644 src/api/wechat.js create mode 100644 src/assets/copy.png create mode 100644 src/assets/cropper_images/user.gif create mode 100644 src/assets/empty_images/data_empty.png create mode 100644 src/assets/error_images/403.png create mode 100644 src/assets/error_images/404.png create mode 100644 src/assets/error_images/cloud.png create mode 100644 src/assets/ewm.png create mode 100644 src/assets/folder.png create mode 100644 src/assets/gis.jpg create mode 100644 src/assets/group.jpg create mode 100644 src/assets/home/jd.png create mode 100644 src/assets/home/js.png create mode 100644 src/assets/home/jt.png create mode 100644 src/assets/home/ljydl.png create mode 100644 src/assets/home/ljysl.png create mode 100644 src/assets/index_images/image.jpg create mode 100644 src/assets/interrupt.png create mode 100644 src/assets/login_images/background.jpg create mode 100644 src/assets/login_images/background.png create mode 100644 src/assets/login_images/el_login.png create mode 100644 src/assets/login_images/login_left.png create mode 100644 src/assets/login_images/login_wrap.png create mode 100644 src/assets/login_images/logo.png create mode 100644 src/assets/logo.png create mode 100644 src/assets/marker.png create mode 100644 src/assets/mobile_images/mobile.png create mode 100644 src/assets/position.gif create mode 100644 src/assets/stop.gif create mode 100644 src/assets/success.png create mode 100644 src/assets/touxiang.png create mode 100644 src/common/ckeditor.config.js create mode 100644 src/common/ckeditor/ckeditor.js create mode 100644 src/common/ckeditor/style.css create mode 100644 src/common/ckeditor/zh.js create mode 100644 src/common/location.js create mode 100644 src/common/times.js create mode 100644 src/config/cli.config.js create mode 100644 src/config/index.js create mode 100644 src/config/net.config.js create mode 100644 src/config/setting.config.js create mode 100644 src/icon/index.js create mode 100644 src/icon/remixIcon/vuejs-fill.svg create mode 100644 src/main.js create mode 100644 src/permission.js create mode 100644 src/router/guard.js create mode 100644 src/router/index.js create mode 100644 src/router/setting create mode 100644 src/store/index.js create mode 100644 src/store/modules/acl.js create mode 100644 src/store/modules/permission.js create mode 100644 src/store/modules/routes.js create mode 100644 src/store/modules/settings.js create mode 100644 src/store/modules/tabsBar.js create mode 100644 src/store/modules/user.js create mode 100644 src/utils/accessToken.js create mode 100644 src/utils/city.js create mode 100644 src/utils/common.js create mode 100644 src/utils/encrypt.js create mode 100644 src/utils/excel.js create mode 100644 src/utils/hasAccess.js create mode 100644 src/utils/img.js create mode 100644 src/utils/index.js create mode 100644 src/utils/loading.js create mode 100644 src/utils/menu.js create mode 100644 src/utils/pageTitle.js create mode 100644 src/utils/request.js create mode 100644 src/utils/routes.js create mode 100644 src/utils/set.js create mode 100644 src/utils/static.js create mode 100644 src/utils/token.js create mode 100644 src/utils/validate.js create mode 100644 src/vab/components/VabAppMain/index.vue create mode 100644 src/vab/components/VabAvatar/index.vue create mode 100644 src/vab/components/VabLogo/index.vue create mode 100644 src/vab/components/VabNavBar/index.vue create mode 100644 src/vab/images/logo.png create mode 100644 src/vab/images/logo11.png create mode 100644 src/vab/index.js create mode 100644 src/vab/layouts/VabVertical/index.vue create mode 100644 src/vab/layouts/index.vue create mode 100644 src/vab/plugins/directive.js create mode 100644 src/vab/plugins/elementPlus.js create mode 100644 src/vab/plugins/support.js create mode 100644 src/vab/styles/normalize.scss create mode 100644 src/vab/styles/tianditu.scss create mode 100644 src/vab/styles/transition.scss create mode 100644 src/vab/styles/vab.scss create mode 100644 src/vab/styles/variables/element-variables.scss create mode 100644 src/vab/styles/variables/variables.scss create mode 100644 src/views/403.vue create mode 100644 src/views/404.vue create mode 100644 src/views/analysis/dfunction/components/elecDay.vue create mode 100644 src/views/analysis/dfunction/components/siteDay.vue create mode 100644 src/views/analysis/dfunction/components/waterDay.vue create mode 100644 src/views/analysis/dfunction/components/watergraph.vue create mode 100644 src/views/analysis/dfunction/index.vue create mode 100644 src/views/analysis/energy/index.vue create mode 100644 src/views/analysis/equipmentfunction/index.vue create mode 100644 src/views/analysis/facilitiesfunction/index.vue create mode 100644 src/views/analysis/factoryData/index.vue create mode 100644 src/views/analysis/mfunction/components/elecMonth.vue create mode 100644 src/views/analysis/mfunction/components/siteMonth.vue create mode 100644 src/views/analysis/mfunction/components/waterMonth.vue create mode 100644 src/views/analysis/mfunction/index.vue create mode 100644 src/views/analysis/sensoriotdata/currentData.vue create mode 100644 src/views/analysis/sensoriotdata/historyData.vue create mode 100644 src/views/analysis/sensoriotdata/index.vue create mode 100644 src/views/analysis/sensoriotdata/showdata.vue create mode 100644 src/views/analysis/site/components/bdMap.vue create mode 100644 src/views/analysis/site/components/copyDevice.vue create mode 100644 src/views/analysis/site/components/deviceEdit.vue create mode 100644 src/views/analysis/site/components/realIndex.vue create mode 100644 src/views/analysis/site/components/siteIndex.vue create mode 100644 src/views/analysis/site/index.vue create mode 100644 src/views/analysis/water/index.vue create mode 100644 src/views/analysis/weekfunction/index.vue create mode 100644 src/views/analysis/workmanship/index.vue create mode 100644 src/views/compoents/editor/index.vue create mode 100644 src/views/department/list/add.vue create mode 100644 src/views/department/list/index.vue create mode 100644 src/views/dev/alarm/components/add.vue create mode 100644 src/views/dev/alarm/components/current.vue create mode 100644 src/views/dev/alarm/components/history.vue create mode 100644 src/views/dev/alarm/components/toTask.vue create mode 100644 src/views/dev/alarm/index.vue create mode 100644 src/views/dev/apply/components/apply.vue create mode 100644 src/views/dev/apply/components/applyDetail.vue create mode 100644 src/views/dev/apply/components/applyEdit.vue create mode 100644 src/views/dev/apply/components/testing.vue create mode 100644 src/views/dev/apply/components/testingAdd.vue create mode 100644 src/views/dev/apply/index.vue create mode 100644 src/views/dev/clock/index.vue create mode 100644 src/views/dev/clock/trajectory.vue create mode 100644 src/views/dev/filling/detail.vue create mode 100644 src/views/dev/filling/index.vue create mode 100644 src/views/dev/knowledge/components/detail.vue create mode 100644 src/views/dev/knowledge/components/knowledgeEdit.vue create mode 100644 src/views/dev/knowledge/index.vue create mode 100644 src/views/dev/maintenance/components/add.vue create mode 100644 src/views/dev/maintenance/components/equipment.vue create mode 100644 src/views/dev/maintenance/components/online.vue create mode 100644 src/views/dev/maintenance/components/repairEdit.vue create mode 100644 src/views/dev/maintenance/components/totask.vue create mode 100644 src/views/dev/maintenance/index.vue create mode 100644 src/views/dev/repair/components/repairEdit.vue create mode 100644 src/views/dev/repair/index.vue create mode 100644 src/views/dev/staff/index.vue create mode 100644 src/views/dev/task/components/alarm/alarmAdd.vue create mode 100644 src/views/dev/task/components/alarm/feedback.vue create mode 100644 src/views/dev/task/components/alarm/index.vue create mode 100644 src/views/dev/task/components/main/alarmAdd.vue create mode 100644 src/views/dev/task/components/main/feedback.vue create mode 100644 src/views/dev/task/components/main/index.vue create mode 100644 src/views/dev/task/components/other/alarmAdd.vue create mode 100644 src/views/dev/task/components/other/feedback.vue create mode 100644 src/views/dev/task/components/other/index.vue create mode 100644 src/views/dev/task/index.vue create mode 100644 src/views/dev/vehicle/index.vue create mode 100644 src/views/index/chart/alarm.vue create mode 100644 src/views/index/chart/clockFold.vue create mode 100644 src/views/index/chart/clockIn.vue create mode 100644 src/views/index/chart/consumption.vue create mode 100644 src/views/index/chart/maintenance-personnel.vue create mode 100644 src/views/index/chart/maintenance-site.vue create mode 100644 src/views/index/chart/operating.vue create mode 100644 src/views/index/chart/perfect.vue create mode 100644 src/views/index/chart/work.vue create mode 100644 src/views/index/components/DialogMarkerContainer.vue create mode 100644 src/views/index/components/SiteDetail.vue create mode 100644 src/views/index/components/SiteSearch.vue create mode 100644 src/views/index/components/VersionInformation.vue create mode 100644 src/views/index/index.vue create mode 100644 src/views/index/index1.vue create mode 100644 src/views/index/utils.js create mode 100644 src/views/iot/alarmuser.vue create mode 100644 src/views/iot/alarmuser/bindDevice.vue create mode 100644 src/views/iot/alarmuser/index.vue create mode 100644 src/views/iot/alarmuser/userEdit.vue create mode 100644 src/views/iot/device.vue create mode 100644 src/views/iot/device/components/bdMap.vue create mode 100644 src/views/iot/device/components/copyDevice.vue create mode 100644 src/views/iot/device/components/deviceEdit.vue create mode 100644 src/views/iot/device/components/frameMap.vue create mode 100644 src/views/iot/device/components/sync.vue create mode 100644 src/views/iot/device/index.vue create mode 100644 src/views/iot/group.vue create mode 100644 src/views/iot/group/components/groupEdit.vue create mode 100644 src/views/iot/group/index.vue create mode 100644 src/views/iot/grouping.vue create mode 100644 src/views/iot/grouping/groupEdit.vue create mode 100644 src/views/iot/grouping/index.vue create mode 100644 src/views/iot/police/components/index.vue create mode 100644 src/views/iot/police/index.vue create mode 100644 src/views/iot/project/components/alarm.vue create mode 100644 src/views/iot/project/components/group.vue create mode 100644 src/views/iot/project/components/groupEdit.vue create mode 100644 src/views/iot/project/components/projectEdit.vue create mode 100644 src/views/iot/project/index.vue create mode 100644 src/views/iot/sensor.vue create mode 100644 src/views/iot/sensor/add.vue create mode 100644 src/views/iot/sensor/index.vue create mode 100644 src/views/iot/sensor/parameter.vue create mode 100644 src/views/iot/sensor1.vue create mode 100644 src/views/iot/sensordata.vue create mode 100644 src/views/iot/sensordata/currentData.vue create mode 100644 src/views/iot/sensordata/historyData.vue create mode 100644 src/views/iot/sensordata/index.vue create mode 100644 src/views/iot/sensordata/showdata.vue create mode 100644 src/views/iot/trigger.vue create mode 100644 src/views/iot/trigger/index.vue create mode 100644 src/views/iot/trigger/rule.vue create mode 100644 src/views/iot/trigger/ruleEdit.vue create mode 100644 src/views/iot/trigger/sensor.vue create mode 100644 src/views/iot/trigger/trigger.vue create mode 100644 src/views/iot/trigger/triggerEdit.vue create mode 100644 src/views/iot/trigger/triggerTable.vue create mode 100644 src/views/iot/trigger/triggerdetail.vue create mode 100644 src/views/iot/vehicle/bindProject.vue create mode 100644 src/views/iot/vehicle/index.vue create mode 100644 src/views/log/action/index.vue create mode 100644 src/views/log/login/index.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/login/singIn.vue create mode 100644 src/views/login/trialAdd.vue create mode 100644 src/views/maintenance/facility/index.vue create mode 100644 src/views/maintenance/patrol/index.vue create mode 100644 src/views/maintenance/problemReporting/index.vue create mode 100644 src/views/maintenance/team/group/index.vue create mode 100644 src/views/maintenance/team/index.vue create mode 100644 src/views/maintenance/team/vehicle/index.vue create mode 100644 src/views/maintenance/workorder/index.vue create mode 100644 src/views/maintenance/workorder/junction/index.vue create mode 100644 src/views/maintenance/workorder/my/index.vue create mode 100644 src/views/maintenance/workorder/overdue/index.vue create mode 100644 src/views/maintenance/workorder/stay/index.vue create mode 100644 src/views/map/map.vue create mode 100644 src/views/party/flow/bindDevice.vue create mode 100644 src/views/party/flow/index.vue create mode 100644 src/views/party/flow/showDetail.vue create mode 100644 src/views/party/fluorite/add.vue create mode 100644 src/views/party/fluorite/bindDevice.vue create mode 100644 src/views/party/fluorite/fluoriteSensorData.vue create mode 100644 src/views/party/fluorite/index.vue create mode 100644 src/views/party/fluorite/videoData.vue create mode 100644 src/views/party/gis/index.vue create mode 100644 src/views/server/assets/components/alarm/components/current.vue create mode 100644 src/views/server/assets/components/alarm/components/history.vue create mode 100644 src/views/server/assets/components/alarm/components/toTask.vue create mode 100644 src/views/server/assets/components/alarm/index.vue create mode 100644 src/views/server/assets/components/device/index.vue create mode 100644 src/views/server/assets/components/police/index.vue create mode 100644 src/views/server/assets/components/project/index.vue create mode 100644 src/views/server/assets/components/run/index.vue create mode 100644 src/views/server/assets/components/vehicle/index.vue create mode 100644 src/views/server/assets/index.vue create mode 100644 src/views/server/dataEnquiry/index.vue create mode 100644 src/views/server/monitor/components/DialogMarkerContainer.vue create mode 100644 src/views/server/monitor/components/SiteDetail.vue create mode 100644 src/views/server/monitor/components/SiteSearch.vue create mode 100644 src/views/server/monitor/index.vue create mode 100644 src/views/server/monitor/utils.js create mode 100644 src/views/server/monitorVideo/index.vue create mode 100644 src/views/server/siteDetails/distribute.vue create mode 100644 src/views/server/siteDetails/image.vue create mode 100644 src/views/server/siteDetails/index.vue create mode 100644 src/views/server/siteDetails/only.vue create mode 100644 src/views/server/siteDetails/readable.vue create mode 100644 src/views/server/siteDetails/site.vue create mode 100644 src/views/server/siteDetails/technology.vue create mode 100644 src/views/server/siteDetails/video.vue create mode 100644 src/views/server/siteDetails/water.vue create mode 100644 src/views/server/tablefirst/index.vue create mode 100644 src/views/server/tablesecond/index.vue create mode 100644 src/views/server/tablethred/index.vue create mode 100644 src/views/server/tablethred/index1.vue create mode 100644 src/views/set/develop.vue create mode 100644 src/views/set/develop/dict/add.vue create mode 100644 src/views/set/develop/dict/index.vue create mode 100644 src/views/set/develop/dictdata/add.vue create mode 100644 src/views/set/develop/dictdata/index.vue create mode 100644 src/views/set/develop/index.vue create mode 100644 src/views/set/global.vue create mode 100644 src/views/set/global/index.vue create mode 100644 src/views/set/intention/add.vue create mode 100644 src/views/set/intention/index.vue create mode 100644 src/views/set/manage.vue create mode 100644 src/views/set/manage/components/applets/appletsEdit.vue create mode 100644 src/views/set/manage/components/applets/appletsGrant.vue create mode 100644 src/views/set/manage/components/applets/appletsIndex.vue create mode 100644 src/views/set/manage/components/role/roleEdit.vue create mode 100644 src/views/set/manage/components/role/roleGrant.vue create mode 100644 src/views/set/manage/components/role/roleIndex.vue create mode 100644 src/views/set/manage/components/user/manageEdit.vue create mode 100644 src/views/set/manage/components/user/manageIndex.vue create mode 100644 src/views/set/manage/components/user/manageMiniRole.vue create mode 100644 src/views/set/manage/components/user/manageProduct.vue create mode 100644 src/views/set/manage/components/user/manageRole.vue create mode 100644 src/views/set/manage/index.vue create mode 100644 src/views/set/manage/role.vue create mode 100644 src/views/set/material.vue create mode 100644 src/views/set/material/components/add.vue create mode 100644 src/views/set/material/index.vue create mode 100644 src/views/set/set.vue create mode 100644 src/views/set/set/components/applets/appletsEdit.vue create mode 100644 src/views/set/set/components/applets/appletsIndex.vue create mode 100644 src/views/set/set/components/config/sysConfig.vue create mode 100644 src/views/set/set/components/menuEdit.vue create mode 100644 src/views/set/set/components/menuIndex.vue create mode 100644 src/views/set/set/index.vue create mode 100644 src/views/set/user/components/basic.vue create mode 100644 src/views/set/user/components/resetting.vue create mode 100644 src/views/set/user/index.vue create mode 100644 src/views/wechat/menu/add.vue create mode 100644 src/views/wechat/menu/index.vue create mode 100644 src/views/wechat/reply/default/add.vue create mode 100644 src/views/wechat/reply/default/index.vue create mode 100644 src/views/wechat/reply/default/material_detail.vue create mode 100644 src/views/wechat/reply/default/selectData.vue create mode 100644 src/views/wechat/reply/default/showData.vue create mode 100644 src/views/wechat/reply/follow/add.vue create mode 100644 src/views/wechat/reply/follow/index.vue create mode 100644 src/views/wechat/reply/follow/material_detail.vue create mode 100644 src/views/wechat/reply/follow/selectData.vue create mode 100644 src/views/wechat/reply/follow/showData.vue create mode 100644 src/views/wechat/reply/index.vue create mode 100644 src/views/wechat/reply/keywords/add.vue create mode 100644 src/views/wechat/reply/keywords/index.vue create mode 100644 src/views/wechat/reply/keywords/show_data.vue create mode 100644 vue.config.js create mode 100644 webstorm.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..4039ff1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..ee1337a --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +src/assets +src/icons +public +dist +node_modules +mock +src/common/ckeditor diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..b919842 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,37 @@ +module.exports = { + root: true, + env: { + node: true, + browser: true, + }, + globals: { + BMap: true, + T: true, + qq: true, + }, + extends: [ + 'plugin:vue/vue3-essential', + 'plugin:vue/recommended', + 'eslint:recommended', + '@vue/prettier', + ], + parserOptions: { + parser: 'babel-eslint', + }, + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-unused-vars': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'prefer-const': [ + 'error', + { + destructuring: 'all', + }, + ], + 'prettier/prettier': 'error', + 'vue/no-multiple-template-root': 'off', + 'vue/attribute-hyphenation': 'off', + 'no-dupe-keys': 'off', + 'vue/no-v-html': 'off', + }, +}; diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6a91a8d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,16 @@ +*.html text eol=lf +*.css text eol=lf +*.js text eol=lf +*.scss text eol=lf +*.vue text eol=lf +*.hbs text eol=lf +*.sh text eol=lf +*.md text eol=lf +*.json text eol=lf +*.yml text eol=lf +.browserslistrc text eol=lf +.editorconfig text eol=lf +.eslintignore text eol=lf +.gitattributes text eol=lf +LICENSE text eol=lf +*.conf text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d9177b --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +.DS_Store +node_modules +/dist + +# local env files +.env.local +.env.*.local + +# Log files +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Lock files +yarn.lock +pnpm-lock.yaml +package-lock.json + +# Yarn v2 +.pnp.* +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz + +# VAB +public/video +*.zip +*.7z diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..42c0440 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +ckeditor diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000..a92a5ee --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['stylelint-config-recess-order', 'stylelint-config-prettier'], +}; diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5ff37e0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,57 @@ +{ + "editor.quickSuggestions": { + "strings": true + }, + "workbench.colorTheme": "One Monokai", + "editor.tabSize": 2, + "editor.detectIndentation": false, + "emmet.triggerExpansionOnTab": true, + "editor.formatOnSave": true, + "javascript.format.enable": true, + "git.enableSmartCommit": true, + "git.autofetch": true, + "git.confirmSync": false, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "liveServer.settings.donotShowInfoMsg": true, + "explorer.confirmDelete": false, + "javascript.updateImportsOnFileMove.enabled": "always", + "typescript.updateImportsOnFileMove.enabled": "always", + "files.exclude": { + "**/.idea": true + }, + "editor.codeActionsOnSave": { + "source.fixAll.stylelint": true, + "source.fixAll.eslint": true + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.suggest.snippetsPreventQuickSuggestions": false, + "prettier.htmlWhitespaceSensitivity": "ignore", + "prettier.vueIndentScriptAndStyle": true, + "docthis.authorName": " Cc ", + "docthis.includeAuthorTag": true, + "docthis.includeDescriptionTag": true, + "docthis.enableHungarianNotationEvaluation": true, + "docthis.inferTypesFromNames": true, + "vetur.format.defaultFormatter.html": "prettier", + "files.autoSave": "off", + "path-intellisense.mappings": { + "@": "${workspaceRoot}/src" + }, + "files.eol": "\n" +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..078c005 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ['@vue/cli-plugin-babel/preset'], +}; diff --git a/built.js b/built.js new file mode 100644 index 0000000..d1e1979 --- /dev/null +++ b/built.js @@ -0,0 +1,70 @@ +// cli.js,创建于根目录,与命令配置的./cli.js保持一致 +const path = require("path"); +const fs = require('fs'); +const { NodeSSH } = require('node-ssh'); + +sshPublish(); +async function sshPublish() { + let privateKeyPath = ''; + + const publishDir = '/www/wwwroot/ldhb/dist'; + let remoteConfig = undefined; + + privateKeyPath = ''; + remoteConfig = { + host: '101.133.141.167', + username: 'root', + password: 'Jsld0813', + port: 22, + readyTimeout: 5000000, + }; + // 初始化ssh + const ssh = new NodeSSH(); + // 连接 服务器 + + await connect(ssh, remoteConfig, privateKeyPath); + console.log('连接成功'); + console.log('开始文件上传!'); + // 上传目录到服务器 + await uploadDir(ssh, '/dist', publishDir); + console.log('文件上传成功!'); + // 执行exit命令 + + const { stdout, stderr, code, signal } = await ssh.execCommand('exit'); + ssh.dispose(); +} + +function connect(ssh, remoteConfig, privateKeyPath) { + return ssh.connect({ + host: remoteConfig.host, + username: remoteConfig.username, + password: remoteConfig.password, + port: remoteConfig.port, + tryKeyboard: true, + // privateKey: fs.readFileSync(path.join(__dirname, privateKeyPath)).toString(), + // privateKey: path.join(__dirname, privateKeyPath), + onKeyboardInteractive: (name, instructions, instructionsLang, prompts, finish) => { + } + }); +} +function uploadDir(ssh, localDir, publishDir) { + return ssh.putDirectory(path.join(__dirname, localDir), publishDir, { + recursive: true, + concurrency: 10, + // ^ WARNING: Not all servers support high concurrency + // try a bunch of values and see what works on your server + validate: function (itemPath) { + const baseName = path.basename(itemPath) + return baseName.substr(0, 1) !== '.' && // do not allow dot files + baseName !== 'node_modules' // do not allow node_modules + }, + tick: function (localPath, remotePath, error) { + if(error){ + console.log(localPath, remotePath, error || ''); + } else{ + console.log(localPath + ':成功上传'); + } + + } + }); +} diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..3a79980 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,17 @@ +#强制推送 +#!/usr/bin/env bash +set -e +npm run build +cd dist +touch .nojekyll +git init +git add -A +git commit -m 'deploy' +git push -f "https://${access_token}@gitee.com/chu1204505056/vue-admin-beautiful-element-plus.git" master:gh-pages +start "https://gitee.com/chu1204505056/vue-admin-beautiful-element-plus/pages" +cd - +exec /bin/bash + + + + diff --git a/error.txt b/error.txt new file mode 100644 index 0000000..ac4cd46 --- /dev/null +++ b/error.txt @@ -0,0 +1 @@ +compilation.hooks.buildModule.tap \ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..4c6b424 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs", + "allowSyntheticDefaultImports": true, + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "*.ignore.*"] +} diff --git a/mock/controller/user.js b/mock/controller/user.js new file mode 100644 index 0000000..54bb485 --- /dev/null +++ b/mock/controller/user.js @@ -0,0 +1,104 @@ +const tokens = { + admin: 'admin-token', + editor: 'editor-token', + test: 'test-token', +} + +module.exports = [ + { + url: '/publicKey', + type: 'get', + response() { + return { + code: 200, + msg: 'success', + data: { + mockServer: true, + publicKey: + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBT2vr+dhZElF73FJ6xiP181txKWUSNLPQQlid6DUJhGAOZblluafIdLmnUyKE8mMHhT3R+Ib3ssZcJku6Hn72yHYj/qPkCGFv0eFo7G+GJfDIUeDyalBN0QsuiE/XzPHJBuJDfRArOiWvH0BXOv5kpeXSXM8yTt5Na1jAYSiQ/wIDAQAB', + }, + } + }, + }, + { + url: '/login', + type: 'post', + response(config) { + const { username } = config.body + const token = tokens[username] + if (!token) + return { + code: 500, + msg: '帐户或密码不正确', + } + return { + code: 200, + msg: 'success', + data: { token }, + } + }, + }, + { + url: '/socialLogin', + type: 'post', + response(config) { + const { code } = config.body + if (!code) + return { + code: 500, + msg: '未成功获取Token', + } + + return { + code: 200, + msg: 'success', + data: { token: tokens['admin'] }, + } + }, + }, + { + url: '/userInfo', + type: 'get', + response(config) { + const { token } = config.headers + let roles = ['admin'] + let ability = ['READ'] + let username = 'admin' + if ('admin-token' === token) { + roles = ['admin'] + ability = ['READ', 'WRITE', 'DELETE'] + username = 'admin' + } + if ('editor-token' === token) { + roles = ['editor'] + ability = ['READ', 'WRITE'] + username = 'editor' + } + if ('test-token' === token) { + roles = ['admin', 'editor'] + ability = ['READ'] + username = 'test' + } + return { + code: 200, + msg: 'success', + data: { + roles, + ability, + username, + avatar: 'https://i.gtimg.cn/club/item/face/img/2/16022_100.gif', + }, + } + }, + }, + { + url: '/logout', + type: 'get', + response() { + return { + code: 200, + msg: 'success', + } + }, + }, +] diff --git a/mock/index.js b/mock/index.js new file mode 100644 index 0000000..d6da3b9 --- /dev/null +++ b/mock/index.js @@ -0,0 +1,99 @@ +const chokidar = require('chokidar') +const bodyParser = require('body-parser') +const chalk = require('chalk') +const path = require('path') +const { mock } = require('mockjs') +const { baseURL } = require('../src/config') +const mockDir = path.join(process.cwd(), 'mock') +const { handleMockArray } = require('./utils') + +/** + * + * @param url + * @param type + * @param respond + * @returns {{response(*=, *=): void, type: (*|string), url: RegExp}} + */ +const responseFake = (url, type, respond) => { + return { + url: new RegExp(`${baseURL}${url}`), + type: type || 'get', + response(req, res) { + res.status(200) + console.log(chalk.green(`\n> 请求地址:${req.path}`)) + if (JSON.stringify(req.body) !== '{}') + console.log( + chalk.green(`> 请求参数(body):${JSON.stringify(req.body)}`) + ) + if (JSON.stringify(req.query) !== '{}') + console.log( + chalk.green(`> 请求参数(query):${JSON.stringify(req.query)}`) + ) + res.json(mock(respond instanceof Function ? respond(req, res) : respond)) + }, + } +} + +/** + * + * @param app + * @returns {{mockStartIndex: number, mockRoutesLength: number}} + */ +const registerRoutes = (app) => { + let mockLastIndex + const mocks = [] + const mockArray = handleMockArray() + mockArray.forEach((item) => { + const obj = require(item) + mocks.push(...obj) + }) + const mocksForServer = mocks.map((route) => + responseFake(route.url, route.type, route.response) + ) + const mockRoutesLength = Object.keys(mocksForServer).length + for (const item of mocksForServer) { + app[item.type](item.url, item.response) + mockLastIndex = app._router.stack.length + } + return { + mockRoutesLength, + mockStartIndex: mockLastIndex - mockRoutesLength, + } +} + +/** + * + * @param app + */ +module.exports = (app) => { + app.use(bodyParser.json()) + app.use( + bodyParser.urlencoded({ + extended: true, + }) + ) + const mockRoutes = registerRoutes(app) + let mockRoutesLength = mockRoutes.mockRoutesLength + let mockStartIndex = mockRoutes.mockStartIndex + chokidar + .watch(mockDir, { + ignored: /mock-server/, + ignoreInitial: true, + }) + .on('all', (event) => { + if (event === 'change' || event === 'add') { + try { + app._router.stack.splice(mockStartIndex, mockRoutesLength) + Object.keys(require.cache).forEach((item) => { + if (item.includes(mockDir)) + delete require.cache[require.resolve(item)] + }) + const mockRoutes = registerRoutes(app) + mockRoutesLength = mockRoutes.mockRoutesLength + mockStartIndex = mockRoutes.mockStartIndex + } catch (error) { + console.log(chalk.red(error)) + } + } + }) +} diff --git a/mock/utils/index.js b/mock/utils/index.js new file mode 100644 index 0000000..1be482d --- /dev/null +++ b/mock/utils/index.js @@ -0,0 +1,42 @@ +const { Random } = require('mockjs') +const { join } = require('path') +const fs = require('fs') + +/** + * @description 随机生成图片url。 + * @param width + * @param height + * @returns {string} + */ +function handleRandomImage(width = 50, height = 50) { + return `https://picsum.photos/${width}/${height}?random=${Random.guid()}` +} + +/** + * @description 处理所有 controller 模块,npm run serve时在node环境中自动输出controller文件夹下Mock接口,请勿修改。 + * @returns {[]} + */ +function handleMockArray() { + const mockArray = [] + const getFiles = (jsonPath) => { + const jsonFiles = [] + const findJsonFile = (path) => { + const files = fs.readdirSync(path) + files.forEach((item) => { + const fPath = join(path, item) + const stat = fs.statSync(fPath) + if (stat.isDirectory() === true) findJsonFile(item) + if (stat.isFile() === true) jsonFiles.push(item) + }) + } + findJsonFile(jsonPath) + jsonFiles.forEach((item) => mockArray.push(`./controller/${item}`)) + } + getFiles('mock/controller') + return mockArray +} + +module.exports = { + handleRandomImage, + handleMockArray, +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..ba9d63d --- /dev/null +++ b/package.json @@ -0,0 +1,105 @@ +{ + "name": "lidinghb", + "version": "1.0.0", + "author": "chuzhixin", + "license": "Mozilla Public License Version 2.0", + "private": true, + "participants": [ + "fwfmiao" + ], + "homepage": "https://chu1204505056.gitee.io/vue-admin-beautiful-element-plus", + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "build:prod": "vue-cli-service build && node ./built.js", + "lint": "vue-cli-service lint", + "clear": "npm cache clean -f&&rimraf node_modules&&npm install --registry=https://registry.npm.taobao.org", + "use:npm": "nrm use npm", + "update": "ncu -u --reject eslint,sass,sass-loader,compression-webpack-plugin,filemanager-webpack-plugin --registry https://registry.npm.taobao.org&&npm install --registry=https://registry.npm.taobao.org&&cnpm i image-webpack-loader -D", + "use:taobao": "nrm use taobao", + "deploy": "start ./deploy.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/chuzhixin/vue-admin-beautiful-element-plus.git" + }, + "externals": { + "BMap": "BMap", + "map": "map", + "T": "T" + }, + "dependencies": { + "@ckeditor/ckeditor5-alignment": "^36.0.1", + "@ckeditor/ckeditor5-build-classic": "^36.0.1", + "@ckeditor/ckeditor5-font": "^36.0.1", + "@ckeditor/ckeditor5-highlight": "^36.0.1", + "@ckeditor/ckeditor5-image": "^36.0.1", + "@ckeditor/ckeditor5-vue": "^4.0.1", + "@element-plus/icons": "^0.0.11", + "@tinymce/tinymce-vue": "^5.0.0", + "axios": "^0.21.1", + "clipboard": "^2.0.8", + "core-js": "^3.15.0", + "dayjs": "^1.10.5", + "echarts": "^5.4.0", + "element-plus": "1.0.2-beta.48", + "element-ui": "^2.15.9", + "ezuikit-js": "^0.6.3", + "image-webpack-loader": "^8.1.0", + "js-cookie": "^3.0.0-rc.1", + "jsencrypt": "^3.2.0", + "lodash": "^4.17.21", + "mockjs": "^1.1.0", + "nprogress": "^0.2.0", + "qs": "^6.10.1", + "quill-image-drop-module": "^1.0.3", + "quill-image-resize-module": "^3.0.0", + "remixicon": "^2.5.0", + "screenfull": "^5.1.0", + "tinymce": "^6.3.2", + "vab-layouts": "^0.0.4", + "vue": "^3.0.4", + "vue-baidu-map": "^0.21.22", + "vue-echarts": "^6.0.0-rc.6", + "vue-quill-editor": "^3.0.6", + "vue-router": "^4.0.0-rc.6", + "vuex": "^4.0.0-rc.2", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.5.13", + "@vue/cli-plugin-eslint": "^4.5.13", + "@vue/cli-plugin-router": "^4.5.13", + "@vue/cli-plugin-vuex": "^4.5.13", + "@vue/cli-service": "^4.5.13", + "@vue/compiler-sfc": "^3.1.1", + "@vue/eslint-config-prettier": "^6.0.0", + "babel-eslint": "^11.0.0-beta.2", + "crypto-js": "^4.1.1", + "eslint": "^7.21.0", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-vue": "^7.11.1", + "filemanager-webpack-plugin": "^4.0.0", + "lint-staged": "^11.0.0", + "prettier": "^2.3.1", + "sass": "^1.56.2", + "sass-loader": "^10.4.1", + "stylelint": "^13.13.1", + "stylelint-config-prettier": "^8.0.2", + "stylelint-config-recess-order": "^2.4.0", + "svg-sprite-loader": "^6.0.8", + "vab-config": "^0.0.8", + "vue-loader": "^15.10.0", + "vue-loader-v16": "^16.0.0-beta.5.4", + "webpackbar": "^5.0.2-3" + }, + "gitHooks": { + "pre-commit": "lint-staged" + }, + "lint-staged": { + "*.{js,jsx,vue}": [ + "vue-cli-service lint", + "git add" + ] + } +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..7ad8bc4 --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,16 @@ +module.exports = { + printWidth: 80, + tabWidth: 2, + useTabs: false, + semi: true, + singleQuote: true, + quoteProps: 'as-needed', + jsxSingleQuote: false, + trailingComma: 'es5', + bracketSpacing: true, + jsxBracketSameLine: false, + arrowParens: 'avoid', + htmlWhitespaceSensitivity: 'ignore', + vueIndentScriptAndStyle: false, + endOfLine: 'lf', +}; diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..6ed763e --- /dev/null +++ b/public/index.html @@ -0,0 +1,55 @@ + + + + + + + + <%= VUE_APP_TITLE %> + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..98240ae --- /dev/null +++ b/src/App.vue @@ -0,0 +1,3 @@ + diff --git a/src/api/alarm.js b/src/api/alarm.js new file mode 100644 index 0000000..1d6bdd9 --- /dev/null +++ b/src/api/alarm.js @@ -0,0 +1,121 @@ +import request from '@/utils/request'; +import store from '@/store'; +import { baseURL } from '@/config'; +//分页查询报警记录 +export function getAlarm(data) { + var param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.handlerName != '') { + param += '&handlerName=' + data.handlerName; + } + if (data.alarmLevel != '') { + param += '&alarmLevel=' + data.alarmLevel; + } + if (data.alarmCategory != '') { + param += '&alarmCategory=' + data.alarmCategory; + } + if (data.start != '' && data.end != '') { + param += '&start=' + data.start + '&end=' + data.end; + } + if (data.status != 3) { + param += '&status=' + data.status; + } + return request({ + url: '/alarmRecord/listPage' + param, + method: 'get', + data, + }); +} +//当前/实时报警查询 +export function getCurrentData(data) { + var param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != undefined && data.projectId != '') { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/alarmRecord/current' + param, + method: 'get', + data, + }); +} +//报警级别字典数据查询 +export function alarmLevelDict(data) { + return request({ + url: '/alarmRecord/alarmLevelDict', + method: 'get', + data, + }); +} +//报警类别字典数据查询 +export function alarmCategoryDict(data) { + return request({ + url: '/alarmRecord/alarmCategoryDict', + method: 'get', + data, + }); +} +//报警类别字典数据查询 +export function doAdd(data) { + return request({ + url: '/alarmRecord/insert?token=' + store.getters['user/token'], + method: 'post', + data, + }); +} +//报警转工单 +export function toTask(data) { + return request({ + url: '/alarmRecord/toTask', + method: 'post', + data, + }); +} +//处理人 +export function handlers(data) { + return request({ + url: '/task/handlers?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +//获取途强车辆设备列表 +export function tqDevices(data) { + return request({ + url: '/task/tqDevices?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//删除 +export function doDelete(data) { + return request({ + url: '/alarmRecord/remove', + method: 'post', + data, + }); +} +//导出 +export function alarmExport(data) { + var param = '?projectId=' + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.handlerName != '') { + param += '&handlerName=' + data.handlerName; + } + if (data.alarmLevel != '') { + param += '&alarmLevel=' + data.alarmLevel; + } + if (data.alarmCategory != '') { + param += '&alarmCategory=' + data.alarmCategory; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return baseURL + 'alarmRecordReport/export' + param; +} diff --git a/src/api/alarmuser.js b/src/api/alarmuser.js new file mode 100644 index 0000000..bd33a45 --- /dev/null +++ b/src/api/alarmuser.js @@ -0,0 +1,57 @@ +import request from '@/utils/request'; + +export function getList(data) { + return request({ + url: '/alarmUser/list?page=' + data.page + '&size=' + data.size, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/alarmUser/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/alarmUser/remove?userId=' + data.userId, + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/alarmUser/insert', + method: 'post', + data, + }); +} +//根据用户id查询报警站点列表 +export function alarmProjects(data) { + return request({ + url: '/alarmUser/alarmProjectIds?userId=' + data.userId, + method: 'get', + data, + }); +} +//查询所有项目 +export function allProject(data) { + return request({ + url: '/alarmUser/allProjects', + method: 'get', + data, + }); +} +//将该用户添加到站点报警联系人中 +export function assignToProjects(data) { + return request({ + url: '/alarmUser/addProjects', + method: 'post', + data, + }); +} diff --git a/src/api/analysis.js b/src/api/analysis.js new file mode 100644 index 0000000..f2a697a --- /dev/null +++ b/src/api/analysis.js @@ -0,0 +1,212 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; + +//日运行报表 +export function dailyReport(data) { + return request({ + url: + '/dataAnalysis/dailyReport?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId + + '&time=' + + data.time, + method: 'get', + data, + }); +} + +//周运行报表 +export function weeklyReport(data) { + return request({ + url: + '/dataAnalysis/weeklyReport?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId + + '&start=' + + data.start + + '&end=' + + data.end, + method: 'get', + data, + }); +} + +//日运行报表 +export function monthlyReport(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + if (data.month != '') { + param += '&month=' + data.month; + } + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return request({ + url: '/waterElec/waterDay' + param, + method: 'get', + data, + }); +} +//水量日报导出 +export function exportDevice(data) { + let param = '?projectId=' + data.projectId + '&month=' + data.month; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return baseURL + '/waterElec/waterDayExport' + param; +} +//电量日报 +export function elecDay(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + if (data.month != '') { + param += '&month=' + data.month; + } + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return request({ + url: '/waterElec/elecDay' + param, + method: 'get', + data, + }); +} +//电量日报导出 +export function elecDayExport(data) { + let param = '?projectId=' + data.projectId + '&month=' + data.month; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return baseURL + '/waterElec/elecDayExport' + param; +} +//站点月运行报表 +export function deviceMonth(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.month != '') { + param += '&month=' + data.month; + } + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + if (data.projectName != '') { + param += '&projectName=' + data.projectName; + } + return request({ + url: '/deviceReport/deviceMonth' + param, + method: 'get', + data, + }); +} +//站点月运行导出 +export function deviceMonthExport(data) { + let param = '?month=' + data.month; + if (data.projectName != '') { + param += '&projectName=' + data.projectName; + } + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + return baseURL + '/deviceReport/deviceMonth/export' + param; +} +//水量月报 +export function waterMonth(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + if (data.year != '') { + param += '&year=' + data.year; + } + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return request({ + url: '/waterElec/waterMonth' + param, + method: 'get', + data, + }); +} +//水量月报导出 +export function waterMonthExport(data) { + let param = '?projectId=' + data.projectId + '&year=' + data.year; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return baseURL + '/waterElec/waterMonthExport' + param; +} +//电量月报 +export function elecMonth(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + if (data.year != '') { + param += '&year=' + data.year; + } + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return request({ + url: '/waterElec/elecMonth' + param, + method: 'get', + data, + }); +} +//电量月报导出 +export function elecMonthExport(data) { + let param = '?projectId=' + data.projectId + '&year=' + data.year; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + return baseURL + '/waterElec/elecMonthExport' + param; +} + +//查询工厂数据 +export function haianList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.startTime) { + param += '&startTime=' + data.startTime; + param += '&endTime=' + data.endTime; + } + return request({ + url: '/haian/list' + param, + method: 'get', + }); +} + +export function saveHian(data) { + return request({ + url: '/haian/update', + method: 'post', + data, + }); +} +export function addHian(data) { + return request({ + url: '/haian/add', + method: 'post', + data, + }); +} +export function delHian(data) { + return request({ + url: '/haian/remove/' + data, + method: 'post', + }); +} +export function HianDevice() { + return request({ + url: '/haian/devices', + method: 'get', + }); +} diff --git a/src/api/api.js b/src/api/api.js new file mode 100644 index 0000000..2d727cf --- /dev/null +++ b/src/api/api.js @@ -0,0 +1,9 @@ +import request from '@/utils/request'; + +export function fileUpdate(data) { + return request({ + url: '/upload/file', + method: 'post', + data, + }); +} diff --git a/src/api/apply.js b/src/api/apply.js new file mode 100644 index 0000000..2563d1b --- /dev/null +++ b/src/api/apply.js @@ -0,0 +1,73 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//水质申请分页查询 +export function getWaterApply(data) { + var param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.signUser != '') { + param += '&signUser=' + data.signUser; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return request({ + url: '/waterApply/list' + param, + method: 'get', + data, + }); +} + +//相关字典数据查询 +export function getDictData(data) { + return request({ + url: '/waterApply/dict', + method: 'get', + data, + }); +} +//水质申请删除 +export function doDelete(data) { + return request({ + url: '/waterApply/remove', + method: 'post', + data, + }); +} +//水质申请添加 +export function doAdd(data) { + return request({ + url: '/waterApply/add', + method: 'post', + data, + }); +} +//水质申请修改 +export function doEdit(data) { + return request({ + url: '/waterApply/update', + method: 'post', + data, + }); +} +//导出 +export function exportWaterApply(data) { + var param = '?projectId=' + data.projectId; + if (data.signUser != '') { + param += '&signUser=' + data.signUser; + } + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return baseURL + 'waterApplyReport/export' + param; +} diff --git a/src/api/city.js b/src/api/city.js new file mode 100644 index 0000000..3e17a91 --- /dev/null +++ b/src/api/city.js @@ -0,0 +1,9 @@ +import request from '@/utils/request'; + +export function getCity(data) { + return request({ + url: '/iot/project/getLayerSysArea', + method: 'get', + data, + }); +} diff --git a/src/api/clock.js b/src/api/clock.js new file mode 100644 index 0000000..e1a7b15 --- /dev/null +++ b/src/api/clock.js @@ -0,0 +1,73 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//打卡列表分页查询 +export function getClockData(data) { + let param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.signUser != '') { + param += '&signUser=' + data.signUser; + } + if (data.start != '') { + param += '&start=' + data.start; + } + if (data.end != '') { + param += '&end=' + data.end; + } + if ((data.type != '' && data.type != 2) || data.type == 0) { + param += '&type=' + data.type; + } + return request({ + url: '/sign/list' + param, + method: 'get', + data, + }); +} +//修改打卡位置 +export function doEdit(data) { + return request({ + url: '/sign/updateLocation?id=' + data.id + '&location=' + data.location, + method: 'post', + data, + }); +} +//打卡记录删除 +export function doDelete(data) { + return request({ + url: '/sign/remove', + method: 'post', + data, + }); +} +//打卡记录导出 +export function doExport(data) { + let param = '?projectId=' + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.signUser != '') { + param += '&signUser=' + data.signUser; + } + if (data.start != undefined && data.end != undefined) { + param += '&start=' + data.start + '&end=' + data.end; + } + return baseURL + '/sign/export' + param; +} + +// 运动轨迹 +export function getTrajectory(data) { + const param = + '?userId=' + data.userId + '&start=' + data.start + '&end=' + data.end; + return request({ + url: '/sign/trajectory' + param, + method: 'get', + data, + }); +} diff --git a/src/api/dept.js b/src/api/dept.js new file mode 100644 index 0000000..ab67e01 --- /dev/null +++ b/src/api/dept.js @@ -0,0 +1,44 @@ +import request from '@/utils/request'; + +// 部门列表 +export function getDeptList(data) { + return request({ + url: '/sysDept/list', + method: 'get', + data, + }); +} +// 部门树状图 +export function getDeptTreeList(data) { + return request({ + url: '/sysDept/deptTree', + method: 'get', + data, + }); +} + +// 删除部门 +export function doDeptDelete(data) { + return request({ + url: '/sysDept/delete?deptId=' + data.deptId, + method: 'post', + data, + }); +} +// 修改部门 +export function doDeptEdit(data) { + return request({ + url: '/sysDept/update', + method: 'post', + data, + }); +} + +// 新增部门 +export function doDeptAdd(data) { + return request({ + url: '/sysDept/add', + method: 'post', + data, + }); +} diff --git a/src/api/device.js b/src/api/device.js new file mode 100644 index 0000000..9cc2e4a --- /dev/null +++ b/src/api/device.js @@ -0,0 +1,290 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; + +export function getList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '' && data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + if (data.code != '' && data.code != undefined) { + param += '&code=' + data.code; + } + if (data.name != '' && data.name != undefined) { + param += '&name=' + data.name; + } + if (data.community != '' && data.community != undefined) { + param += '&community=' + data.community; + } + if (data.townCode != '' && data.townCode != undefined) { + param += '&townCode=' + data.townCode; + } + if (data.commPro != '' && data.commPro != undefined) { + param += '&commPro=' + data.commPro; + } + if (data.status != 3) { + param += '&status=' + data.status; + } + return request({ + url: '/deviceReport/list' + param, + method: 'get', + data, + }); +} +export function getDeviceData(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.projectId != '' && data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + if (data.serial != '' && data.serial != undefined) { + param += '&serial=' + data.serial; + } + if (data.name != '' && data.name != undefined) { + param += '&name=' + data.name; + } + if (data.community != '' && data.community != undefined) { + param += '&community=' + data.community; + } + if (data.townCode != '' && data.townCode != undefined) { + param += '&townCode=' + data.townCode; + } + if ( + data.commPro != '全部协议' && + data.commPro != undefined && + data.commPro != '全部' + ) { + param += '&commPro=' + data.commPro; + } + if (data.status != 3 && data.status != undefined) { + param += '&status=' + data.status; + } + return request({ + url: '/iot/device/select' + param, + method: 'get', + data, + }); +} +export function doEdit(data) { + return request({ + url: '/iot/device/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/iot/device/remove', + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/iot/device/insert', + method: 'post', + data, + }); +} + +export function selectDeviceInfo(data) { + return request({ + url: '/iot/device/selectDeviceInfo?deviceId=' + data.deviceId, + method: 'get', + data, + }); +} + +export function getDictData(data) { + return request({ + url: '/iot/device/dict', + method: 'get', + data, + }); +} + +export function selectAllProject(data) { + return request({ + url: '/iot/device/selectAllProject', + method: 'get', + data, + }); +} + +export function selectAllGroup(data) { + return request({ + url: '/iot/device/selectAllGroup?projectId=' + data.projectId, + method: 'get', + data, + }); +} + +export function selectAllAlarmUser(data) { + return request({ + url: '/iot/device/selectAllAlarmUser', + method: 'get', + data, + }); +} + +export function copy(data) { + return request({ + url: + '/iot/device/copy?deviceId=' + + data.deviceId + + '&name=' + + data.name + + '&code=' + + data.code + + '&serial=' + + data.serial, + method: 'post', + data, + }); +} + +export function getLatestDataByDevice(data) { + let param = + '?deviceCode=' + + data.deviceCode + + '&page=' + + data.page + + '&size=' + + data.size; + if (data.sensorName != '') { + param += '&sensorName=' + data.sensorName; + } + return request({ + url: '/deviceReport/latestData' + param, + method: 'get', + data, + }); +} + +export function getLatestData(data) { + const param = + '?deviceCode=' + + data.deviceCode + + '&page=' + + data.page + + '&size=' + + data.size; + return request({ + url: '/deviceData/latestData' + param, + method: 'get', + data, + }); +} + +export function getLatestDataByDevices(data) { + const param = '?deviceCode=' + data.deviceCode + '&dataKey=' + data.dataKey; + return request({ + url: '/deviceData/getLatestDataByDevice' + param, + method: 'get', + data, + }); +} + +export function getHistoryData(data) { + return request({ + url: + '/deviceData/getHistoryData?dataKey=' + + data.dataKey + + '&start=' + + data.start + + '&deviceCode=' + + data.deviceCode + + '&end=' + + data.end, + method: 'get', + data, + }); +} + +export function getReportHistoryData(data) { + return request({ + url: + '/deviceData/getHistoryChartData?dataKey=' + + data.dataKey + + '&start=' + + data.start + + '&deviceCode=' + + data.deviceCode + + '&end=' + + data.end, + method: 'get', + data, + }); +} +//根据项目查询项目下的乡镇街道列表 +export function getTownsByProject(data) { + return request({ + url: '/iot/device/getTownsByProject?projectId=' + data.projectId, + method: 'get', + data, + }); +} + +//查询乡镇街道下的社区列表 +export function getCommunitiesByTown(data) { + return request({ + url: '/iot/device/getCommunitiesByTown?townCode=' + data.townCode, + method: 'get', + data, + }); +} + +//站点导出(运维) +export function exportDevice(data) { + var param = '?projectId=' + data.projectId; + return baseURL + '/deviceReport/exportDevice' + param; +} + +//站点导出(物联平台) +export function exportIotDevice(data) { + var param = '?projectId=' + data.projectId; + return baseURL + '/iot/device/exportDevice' + param; +} +//最新数据导出 +export function exportData(data) { + var param = '?deviceCode=' + data.deviceCode; + return baseURL + '/deviceReport/exportData' + param; +} +//最新数据导出(物联平台) +export function exportIotData(data) { + var param = '?deviceCode=' + data.deviceCode; + return baseURL + '/iot/device/exportData' + param; +} +//根据站点code查询传感器列表 +export function sensors(data) { + return request({ + url: '/deviceData/sensors?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +//获取盒子列表 +export function boxList(data) { + return request({ + url: '/fbox/boxList', + method: 'get', + data, + }); +} +//盒子同步 +export function fboxSync(data, projectId) { + return request({ + url: '/fbox/sync?projectId=' + projectId, + method: 'post', + data, + }); +} +//根据站点编号和传输id查询传感器信息 +export function sensorInfo(data) { + var param = '?deviceCode=' + data.deviceCode + '&dataKey=' + data.dataKey; + return request({ + url: '/deviceData/sensorInfo' + param, + method: 'get', + data, + }); +} diff --git a/src/api/download.js b/src/api/download.js new file mode 100644 index 0000000..d2fc09a --- /dev/null +++ b/src/api/download.js @@ -0,0 +1,103 @@ +import axios from 'axios'; +import store from '@/store'; + +const ajax = axios.create({ + baseURL: process.env.VUE_APP_BASE_API, + timeout: 100000, +}); +const token = store.getters['user/token']; +ajax.interceptors.request.use( + config => { + config.headers = { + token: token, + // OrgId: auth.getUser().orgId, + // UserId: auth.getUser().id, + }; + return config; + }, + err => { + return Promise.reject(err); + } +); + +const downloadFile = async (url, options) => { + await ajax + .get(url, { responseType: 'arraybuffer' }) + .then(resp => download(resp, options)); +}; +const downloadPostFile = async (url, options) => { + await ajax + .post(url, { responseType: 'arraybuffer' }) + .then(resp => download(resp, options)); +}; +const getFile = async (url, options) => { + await ajax + .get(url, { responseType: 'blob' }) + .then(resp => download(resp, options)); +}; + +const download = (resp, options) => { + const blob = new Blob([resp.data], { + type: options.fileType ? options.fileType : 'application/octet-binary', + }); + //创建下载的链接 + const href = window.URL.createObjectURL(blob); + downloadBlob(href, options.fileName); +}; + +const downloadBlob = (blobUrl, fileName, revokeObjectURL) => { + const downloadElement = document.createElement('a'); + downloadElement.href = blobUrl; + //下载后文件名 + downloadElement.download = fileName; + document.body.appendChild(downloadElement); + //点击下载 + downloadElement.click(); + //下载完成移除元素 + document.body.removeChild(downloadElement); + if (revokeObjectURL == null || revokeObjectURL) { + //释放掉blob对象 + window.URL.revokeObjectURL(blobUrl); + } +}; + +const getDownloadFileUrl = async (url, fileType) => { + let blob; + await ajax.get(url, { responseType: 'blob' }).then(resp => { + blob = new Blob([resp.data], { + type: fileType ? fileType : 'application/octet-binary', + }); + }); + return window.URL.createObjectURL(blob); +}; + +const getDownloadFileUrlByPost = async (url, data, fileType) => { + let blob; + await ajax.post(url, data, { responseType: 'blob' }).then(resp => { + blob = new Blob([resp.data], { + type: fileType ? fileType : 'application/octet-binary', + }); + }); + return window.URL.createObjectURL(blob); +}; + +const getDownloadFileBlob = async (url, fileType) => { + let blob; + await ajax.get(url, { responseType: 'blob' }).then(resp => { + blob = new Blob([resp.data], { + type: fileType ? fileType : 'application/octet-binary', + }); + }); + return blob; +}; + +export default { + ajax, + downloadFile, + getFile, + getDownloadFileUrl, + downloadPostFile, + getDownloadFileUrlByPost, + getDownloadFileBlob, + downloadBlob, +}; diff --git a/src/api/flow.js b/src/api/flow.js new file mode 100644 index 0000000..90cf90d --- /dev/null +++ b/src/api/flow.js @@ -0,0 +1,60 @@ +import request from '@/utils/request'; +//查询sim卡列表 +export function getList(data) { + let param = '?pageIndex=' + data.page + '&size=' + data.size; + if (data.iccid != '' && data.iccid != undefined) { + param += '&iccid=' + data.iccid; + } + if (data.status != '' && data.status != undefined) { + param += '&status=' + data.status; + } + return request({ + url: '/telcom/api/getSimList' + param, + method: 'get', + data, + }); +} +//查询单个卡流量使用情况 +export function getTrafficBySim(data) { + const param = + '?accessNum=' + data.accessNum + '&billingCycleID=' + data.billingCycleID; + return request({ + url: '/telcom/api/getTrafficBySim' + param, + method: 'get', + data, + }); +} +//sim卡绑定设备 +export function simBindDevice(data) { + const param = + '?accessNum=' + data.accessNum + '&deviceCode=' + data.deviceCode; + return request({ + url: '/telcom/api/simBindDevice' + param, + method: 'post', + data, + }); +} +//查询企业用户数 +export function getSimTotal(data) { + return request({ + url: '/telcom/api/getSimTotal', + method: 'get', + data, + }); +} +//本月流量排名 +export function rankCurrentMonth(data) { + return request({ + url: '/telcom/api/rankCurrentMonth', + method: 'post', + data, + }); +} +//根据项目id查询力鼎站点列表 +export function ldDeviceByProjectId(data) { + return request({ + url: '/telcom/api/ldDeviceByProjectId?projectId=' + data.projectId, + method: 'get', + data, + }); +} diff --git a/src/api/fluorite.js b/src/api/fluorite.js new file mode 100644 index 0000000..f603952 --- /dev/null +++ b/src/api/fluorite.js @@ -0,0 +1,101 @@ +import request from '@/utils/request'; + +export function getList(data) { + return request({ + url: '/ys/author/select?page=' + data.page + '&size=' + data.size, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/ys/author/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/ys/author/delete?id=' + data.id, + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/ys/author/insert', + method: 'post', + data, + }); +} + +//获取设备列表 +export function getDevices(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.account != '' && data.account != undefined) { + param += '&account=' + data.account; + } + if (data.sonserName != '' && data.sonserName != undefined) { + param += '&sonserName=' + data.sonserName; + } + if (data.deviceSerial != '' && data.deviceSerial != undefined) { + param += '&deviceSerial=' + data.deviceSerial; + } + if (data.status != 3 && data.status != undefined) { + param += '&status=' + data.status; + } + return request({ + url: '/ys/api/getDevices' + param, + method: 'get', + data, + }); +} + +//获取播放地址 +export function getLiveAddr(data) { + return request({ + url: + '/ys/api/getLiveAddr?account=' + + data.account + + '&deviceSerial=' + + data.deviceSerial, + method: 'get', + data, + }); +} +//获取播放地址 +export function ldDeviceByProjectId(data) { + return request({ + url: '/ys/api/ldDeviceByProjectId?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//萤石设备绑定力鼎站点 +export function ysBindDevice(data) { + return request({ + url: + '/ys/api/ysBindDevice?ysSerial=' + + data.ysSerial + + '&code=' + + data.code + + '&account=' + + data.account, + method: 'post', + data, + }); +} +export function capture(data) { + return request({ + url: + '/ys/author/capture?account=' + + data.account + + '&captureFlag=' + + data.captureFlag, + method: 'post', + data, + }); +} diff --git a/src/api/group.js b/src/api/group.js new file mode 100644 index 0000000..ec1edf5 --- /dev/null +++ b/src/api/group.js @@ -0,0 +1,37 @@ +import request from '@/utils/request'; + +export function getList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.name != undefined && data.name != '') { + param += '&name=' + data.name; + } + return request({ + url: '/iot/project/group/select' + param, + method: 'get', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/iot/project/group/remove?groupId=' + data.groupId, + method: 'post', + data, + }); +} + +export function remove(data) { + return request({ + url: '/iot/project/group/remove?groupId=' + data.groupId, + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/iot/project/group/saveOrUpdate', + method: 'post', + data, + }); +} diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 0000000..8f9dfa9 --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,76 @@ +import request from '@/utils/request'; + +// 基本信息 +export function getBasicData(data) { + var param = '?month=' + data.month; + if (data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/overview/basic' + param, + method: 'get', + data, + }); +} + +// 能耗指标 +export function getConsumptionData(data) { + var param = '?start=' + data.start + '&end=' + data.end; + if (data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/overview/energyConsumption' + param, + method: 'get', + data, + }); +} +// 运维信息-巡检填报统计 +export function getInspectionData(data) { + var param = '?start=' + data.start + '&end=' + data.end; + if (data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/overview/inspection' + param, + method: 'get', + data, + }); +} + +// 运维信息-告警统计 +export function getAlarmData(data) { + var param = '?start=' + data.start + '&end=' + data.end; + if (data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/overview/alarm' + param, + method: 'get', + data, + }); +} +// 运维信息-任务工单统计 +export function getTaskData(data) { + var param = '?start=' + data.start + '&end=' + data.end; + if (data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/overview/task' + param, + method: 'get', + data, + }); +} +// 考勤统计 +export function getAttendanceData(data) { + var param = '?start=' + data.start + '&end=' + data.end; + if (data.projectId != undefined) { + param += '&projectId=' + data.projectId; + } + return request({ + url: '/overview/attendance' + param, + method: 'get', + data, + }); +} diff --git a/src/api/inspection.js b/src/api/inspection.js new file mode 100644 index 0000000..0b07cf5 --- /dev/null +++ b/src/api/inspection.js @@ -0,0 +1,75 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//巡检分页查询 +export function getList(data) { + var param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.inspectorName != '') { + param += '&inspectorName=' + data.inspectorName; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return request({ + url: '/inspection/list' + param, + method: 'get', + data, + }); +} +//相关字典数据查询 +export function dict(data) { + return request({ + url: '/inspection/dict', + method: 'get', + data, + }); +} +//获取站点列表 +export function getDevices(data) { + return request({ + url: '/task/devices?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//巡检添加 +export function doAdd(data) { + return request({ + url: '/inspection/add', + method: 'post', + data, + }); +} + +//巡检修改 +export function toEdit(data) { + return request({ + url: '/inspection/update', + method: 'post', + data, + }); +} +//删除 +export function doDelete(data) { + return request({ + url: '/inspection/remove', + method: 'post', + data, + }); +} +//导出 +export function doExport(data) { + var param = '?projectId=' + data.projectId; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + return baseURL + '/taskReport/export' + param; +} diff --git a/src/api/intention.js b/src/api/intention.js new file mode 100644 index 0000000..862a1eb --- /dev/null +++ b/src/api/intention.js @@ -0,0 +1,39 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; + +export function getList(data) { + return request({ + url: '/intentionCustomer/select?page=' + data.page + '&size=' + data.size, + method: 'get', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/intentionCustomer/remove?customerId=' + data.customerId, + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/intentionCustomer/insert', + method: 'post', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/intentionCustomer/update', + method: 'post', + data, + }); +} + +// 导出意向用户 +export function intentionExport(data) { + return baseURL + '/intentionCustomer/export'; +} diff --git a/src/api/knowledge.js b/src/api/knowledge.js new file mode 100644 index 0000000..b8ec6b3 --- /dev/null +++ b/src/api/knowledge.js @@ -0,0 +1,47 @@ +import request from '@/utils/request'; + +export function getList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.title != undefined && data.title != '') { + param += '&title=' + data.title; + } + if (data.date != undefined && data.date != '') { + param += '&date=' + data.date; + } + return request({ + url: '/knowledge/list' + param, + method: 'get', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/knowledge/remove', + method: 'post', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/knowledge/update', + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/knowledge/insert', + method: 'post', + data, + }); +} +export function getCategoryDict(data) { + return request({ + url: '/knowledge/categoryDict', + method: 'get', + data, + }); +} diff --git a/src/api/log.js b/src/api/log.js new file mode 100644 index 0000000..eed340f --- /dev/null +++ b/src/api/log.js @@ -0,0 +1,89 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; + +// 登录日志 +export function loginLogData(data) { + return request({ + url: + '/loginLog/list?page=' + + data.page + + '&size=' + + data.size + + '&userName=' + + data.userName + + '&start=' + + data.start + + '&end=' + + data.end, + method: 'get', + data, + }); +} + +// 删除登录日志 +export function removeLoginData(data) { + return request({ + url: '/loginLog/remove', + method: 'post', + data, + }); +} + +// 登录日志导出 +export function exportLoginLog(data) { + let param = '?start=' + data.start + '&end=' + data.end; + if (data.userName != '') { + param += '&userName=' + data.userName; + } + return baseURL + '/loginLog/export' + param; +} + +// 查询操作类型 +export function getBusinessType(data) { + return request({ + url: '/operLog/businessType', + method: 'get', + data, + }); +} + +// 操作日志 +export function actionLogData(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.businessType != '') { + param += '&businessType=' + data.businessType; + } + if ((data.status != '' && data.status != 2) || data.status == 0) { + param += '&status=' + data.status; + } + if (data.operName != '') { + param += '&operName=' + data.operName; + } + return request({ + url: '/operLog/list' + param, + method: 'get', + data, + }); +} +// 删除操作日志 +export function removeActionLog(data) { + return request({ + url: '/operLog/remove', + method: 'post', + data, + }); +} +// 导出操作日志 +export function exportActionLog(data) { + let param = '?start=' + data.start + '&end=' + data.end; + if (data.businessType != '') { + param += '&businessType=' + data.businessType; + } + if (data.operName != '') { + param += '&operName=' + data.operName; + } + if ((data.status != '' && data.status != 2) || data.status == 0) { + param += '&status=' + data.status; + } + return baseURL + '/operLog/export' + param; +} diff --git a/src/api/maintenance.js b/src/api/maintenance.js new file mode 100644 index 0000000..527622e --- /dev/null +++ b/src/api/maintenance.js @@ -0,0 +1,74 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//设备列表分页查询 +export function getList(data) { + var param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.equipmentName != '') { + param += '&equipmentName=' + data.equipmentName; + } + return request({ + url: '/equipment/list' + param, + method: 'get', + data, + }); +} +//获取站点列表 +export function getDevices(data) { + return request({ + url: '/task/devices?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//字典数据获取 +export function alarmCategoryDict(data) { + return request({ + url: '/equipment/dict', + method: 'get', + data, + }); +} +//添加 +export function doAdd(data) { + return request({ + url: '/equipment/add', + method: 'post', + data, + }); +} +//修改 +export function doEdit(data) { + return request({ + url: '/equipment/update', + method: 'post', + data, + }); +} +//删除 +export function doDelete(data) { + return request({ + url: '/alarmRecord/remove', + method: 'post', + data, + }); +} +//导出 +export function doExport(data) { + var param = '?projectId=' + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.equipmentName != '') { + param += '&equipmentName=' + data.equipmentName; + } + return baseURL + 'equipment/export' + param; +} diff --git a/src/api/manage.js b/src/api/manage.js new file mode 100644 index 0000000..07209ec --- /dev/null +++ b/src/api/manage.js @@ -0,0 +1,95 @@ +import request from '@/utils/request'; +import { encrypt } from '@/utils/encrypt'; + +export function getList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.userName != '') { + param += '&userName=' + data.userName; + } + if (data.nickName != '') { + param += '&nickName=' + data.nickName; + } + if (data.phone != '') { + param += '&phone=' + data.phone; + } + if (data.email != '') { + param += '&email=' + data.email; + } + if (data.deptId != '') { + param += '&deptId=' + data.deptId; + } + return request({ + url: '/sysUser/select' + param, + method: 'get', + data, + }); +} + +export async function doEdit(data) { + if (data.password != null) { + data.password = await encrypt(data.password); + } + return request({ + url: '/sysUser/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/sysUser/remove', + method: 'post', + data, + }); +} + +export async function doAdd(data) { + if (data.password != '') { + data.password = await encrypt(data.password); + } + return request({ + url: '/sysUser/insert', + method: 'post', + data, + }); +} + +export function getProjectIdByUserId(data) { + return request({ + url: '/sysUser/getProjectIdByUserId?userId=' + data.userId, + method: 'get', + data, + }); +} + +export function assignRole(data) { + return request({ + url: '/sysUser/assignRole', + method: 'post', + data, + }); +} + +export function assignProject(data) { + return request({ + url: '/sysUser/assignProject', + method: 'post', + data, + }); +} +//为用户分配小程序角色 +export function assignMiniRole(data) { + return request({ + url: '/sysUser/assignMiniRole', + method: 'post', + data, + }); +} +//查询所有项目 +export function getAllProjects(data) { + return request({ + url: '/sysUser/getAllProjects', + method: 'get', + }); +} diff --git a/src/api/material.js b/src/api/material.js new file mode 100644 index 0000000..f76792d --- /dev/null +++ b/src/api/material.js @@ -0,0 +1,31 @@ +import request from '@/utils/request'; +import { encrypt } from '@/utils/encrypt'; + +export function getList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.name != '') { + param += '&name=' + data.name; + } + return request({ + url: '/material/icon/list' + param, + method: 'get', + data, + }); +} + +//添加 +export function doAdd(data) { + return request({ + url: '/material/icon/insert', + method: 'post', + data, + }); +} +//修改 +export function doDelete(data) { + return request({ + url: '/material/icon/remove', + method: 'post', + data, + }); +} diff --git a/src/api/menu.js b/src/api/menu.js new file mode 100644 index 0000000..aae33b6 --- /dev/null +++ b/src/api/menu.js @@ -0,0 +1,118 @@ +import request from '@/utils/request'; +import { getUserInfos } from './user'; +export function getList(data) { + return request({ + url: '/sysMenu/select', + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/sysMenu/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/sysMenu/remove?menuId=' + data.menuId, + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/sysMenu/insert', + method: 'post', + data, + }); +} + +export function getCustom(data) { + return request({ + url: '/sysMenu/selectCustom', + method: 'get', + data, + }); +} + +//小程序菜单查询 +export function miniMenuSelect(data) { + return request({ + url: '/miniMenu/select', + method: 'get', + data, + }); +} + +//小程序菜单添加 +export function miniMenuInsert(data) { + return request({ + url: '/miniMenu/insert', + method: 'post', + data, + }); +} + +//小程序菜单修改 +export function miniMenuUpdate(data) { + return request({ + url: '/miniMenu/update', + method: 'post', + data, + }); +} + +//小程序菜单删除 +export function miniMenuRemove(data) { + return request({ + url: '/miniMenu/remove?menuId=' + data.menuId, + method: 'post', + data, + }); +} +export function fetchProjectList(data = {}) { + return request({ + url: '/iot/project/select?page=1&size=100', + method: 'get', + data, + }); + + // const mock = [ + // { + // id: 1, + // name: '力鼎环保智慧云系统', + // }, + // { + // id: 2, + // name: '力鼎环保智慧云系统2', + // }, + // { + // id: 3, + // name: '力鼎环保智慧云系统3', + // }, + // ]; + // + // return Promise.resolve(mock); +} +// 查询当前用户的项目列表 +export function getCurrentUserProjects(data) { + return request({ + url: '/system/getCurrentUserProjects', + method: 'get', + data, + }); +} +export async function fetchMenuByProject(project) { + const { data = [] } = await getUserInfos(); + const menus = data?.menus || []; + return Promise.resolve( + project.len === 0 + ? menus + : menus.slice(menus.length - project.len, menus.length) + ); +} diff --git a/src/api/monitor.js b/src/api/monitor.js new file mode 100644 index 0000000..adaf23c --- /dev/null +++ b/src/api/monitor.js @@ -0,0 +1,132 @@ +import request from '@/utils/request'; +import { uniqueId } from 'lodash'; +export const getSiteList = () => { + return request({ + url: '/map/devices?projectId=' + sessionStorage.getItem('projectId'), + method: 'get', + }).then(res => { + return (res?.data || []).map(mo => { + return { + ...mo, + label: mo.townName, + id: uniqueId('mo'), + iconType: 'folder', + type: 'town', + children: (mo.communities || []).map(co => { + return { + ...mo, + ...co, + label: co.communityName, + id: uniqueId('co'), + ids: co.id, + iconType: 'folder', + type: 'community', + children: (co.devices || []).map(de => { + return { + ...mo, + ...co, + ...de, + iconType: 'device', + type: 'device', + label: de.name, + id: uniqueId('de'), + ids: de.id, + }; + }), + }; + }), + }; + }); + }); +}; +//站点详情 +export function getDeviceInfo(data) { + return request({ + url: '/map/deviceInfo?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +//项目下站点列表 +export function getDeviceList(data) { + return request({ + url: '/device/list?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//站点信息 +export function getDeviceInfos(data) { + return request({ + url: '/device/deviceInfo?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +// 获取监控播放地址 +export function getLiveAddr(data) { + return request({ + url: '/device/liveAddr?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +// 水质达标率 +export function getWaterRate(data) { + return request({ + url: '/device/waterRate?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +// 抓拍照片 +export function getCaptureImg(data) { + return request({ + url: + '/device/captureImg?deviceCode=' + data.deviceCode + '&page=' + data.page, + method: 'get', + data, + }); +} +//传感器数据 可读 +export function deviceCode(data) { + return request({ + url: + '/device/sensors?deviceCode=' + + data.deviceCode + + '&page=' + + data.page + + '&size=' + + data.size, + method: 'get', + data, + }); +} +//传感器数据 可读 +export function sensorsOfWrite(data) { + return request({ + url: + '/device/sensorsOfWrite?deviceCode=' + + data.deviceCode + + '&page=' + + data.page + + '&size=' + + data.size, + method: 'get', + data, + }); +} +//下发数据 +export function writeData(data) { + return request({ + url: + '/deviceSensor/write?deviceCode=' + + data.deviceCode + + '&dataKey=' + + data.dataKey + + '&dataValue=' + + data.dataValue, + method: 'post', + data, + }); +} diff --git a/src/api/project.js b/src/api/project.js new file mode 100644 index 0000000..56af3e4 --- /dev/null +++ b/src/api/project.js @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; + +export function getList(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.regionCode) { + param += '®ionCode=' + data.regionCode; + } + if (data.name) { + param += '&name=' + data.name; + } + if (data.leader) { + param += '&leader=' + data.leader; + } + if (data.contact) { + param += '&contact=' + data.contact; + } + if (data.groupId) { + param += '&groupId=' + data.groupId; + } + return request({ + url: '/iot/project/select' + param, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/iot/project/update', + method: 'post', + data, + }); +} + +export function getProjectGroup(data) { + return request({ + url: '/iot/project/selectAllProjectGroup', + method: 'get', + data, + }); +} + +//查询报警方式列表 +export function selectAlarmTypeList(data) { + return request({ + url: '/iot/project/selectAlarmTypeList', + method: 'get', + data, + }); +} + +//查询所有报警联系人以及项目所绑定的报警联系人 +export function getAlarmUser(data) { + return request({ + url: '/iot/project/getAlarmUser?projectId=' + data.projectId, + method: 'get', + data, + }); +} + +//查询所有报警联系人以及项目所绑定的报警联系人 +export function addAlarmUsers(data) { + return request({ + url: '/iot/project/addAlarmUsers', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/iot/project/remove?', + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/iot/project/insert', + method: 'post', + data, + }); +} + +//导出 +export function exportProject(data) { + let param = '?page=' + data.page + '&size=' + data.size; + if (data.regionCode) { + param += '®ionCode=' + data.regionCode; + } + if (data.name) { + param += '&name=' + data.name; + } + if (data.leader) { + param += '&leader=' + data.leader; + } + if (data.contact) { + param += '&contact=' + data.contact; + } + if (data.groupId) { + param += '&groupId=' + data.groupId; + } + return baseURL + '/iot/project/export' + param; +} diff --git a/src/api/publicKey.js b/src/api/publicKey.js new file mode 100644 index 0000000..67022a9 --- /dev/null +++ b/src/api/publicKey.js @@ -0,0 +1,8 @@ +import request from '@/utils/request'; + +export function getPublicKey() { + return request({ + url: '/publicKey', + method: 'get', + }); +} diff --git a/src/api/repair.js b/src/api/repair.js new file mode 100644 index 0000000..f2454ef --- /dev/null +++ b/src/api/repair.js @@ -0,0 +1,101 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//报修分页查询 +export function getList(data) { + let param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.repairPersonName != '') { + param += '&repairPersonName=' + data.repairPersonName; + } + if (data.deviceType != '') { + param += '&deviceType=' + data.deviceType; + } + if (data.repairItem != '') { + param += '&repairItem=' + data.repairItem; + } + if (data.repairType != '') { + param += '&repairType=' + data.repairType; + } + return request({ + url: '/repair/list' + param, + method: 'get', + data, + }); +} + +//相关字典数据查询 +export function getDictData(data) { + return request({ + url: '/repair/dict', + method: 'get', + data, + }); +} +//该站点下设备列表 +export function getEquipments(data) { + return request({ + url: '/repair/equipments?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +//报修添加 +export function doAdd(data) { + return request({ + url: '/repair/add', + method: 'post', + data, + }); +} +//报修修改 +export function doEdit(data) { + return request({ + url: '/repair/update', + method: 'post', + data, + }); +} +//报修删除 +export function doDelete(data) { + return request({ + url: '/repair/remove', + method: 'post', + data, + }); +} +//导出 +export function doExport(data) { + var param = '?projectId=' + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.repairPersonName != '') { + param += '&repairPersonName=' + data.repairPersonName; + } + if (data.deviceType != '') { + param += '&deviceType=' + data.deviceType; + } + if (data.equipmentName != '') { + param += '&equipmentName=' + data.equipmentName; + } + if (data.repairType != '') { + param += '&repairType=' + data.repairType; + } + return baseURL + 'repair/export' + param; +} +//报修转任务 +export function toTask(data) { + return request({ + url: '/repair/toTask', + method: 'post', + data, + }); +} diff --git a/src/api/role.js b/src/api/role.js new file mode 100644 index 0000000..d04779d --- /dev/null +++ b/src/api/role.js @@ -0,0 +1,111 @@ +import request from '@/utils/request'; + +export function getList(data) { + let pram = '?page=' + data.page + '&size=' + data.size; + if (data.name) { + pram += '&name=' + data.name; + } + return request({ + url: '/sysRole/select' + pram, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/sysRole/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/sysRole/remove', + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/sysRole/insert', + method: 'post', + data, + }); +} + +export function getMenuIdsByRoleId(data) { + return request({ + url: '/sysRole/getMenuIdsByRoleId?roleId=' + data.roleId, + method: 'get', + data, + }); +} + +export function assignMenu(data) { + return request({ + url: '/sysRole/assignMenu', + method: 'post', + data, + }); +} + +//分页查询小程序角色 +export function miniRoleSelect(data) { + let pram = '?page=' + data.page + '&size=' + data.size; + if (data.name != undefined) { + pram += '&name=' + data.name; + } + return request({ + url: '/miniRole/select' + pram, + method: 'get', + data, + }); +} + +//添加小程序角色 +export function miniRoleInsert(data) { + return request({ + url: '/miniRole/insert', + method: 'post', + data, + }); +} + +//修改小程序角色 +export function miniRoleUpdate(data) { + return request({ + url: '/miniRole/update', + method: 'post', + data, + }); +} + +//删除小程序角色 +export function miniRoleRemove(data) { + return request({ + url: '/miniRole/remove?roleId=' + data.roleId, + method: 'post', + data, + }); +} + +//授权小程序角色 +export function miniRoleAssignMenu(data) { + return request({ + url: '/miniRole/assignMenu', + method: 'post', + data, + }); +} + +//获取角色菜单ids +export function getMiniRoleMenuIdsByRoleId(data) { + return request({ + url: '/miniRole/getMenuIdsByRoleId?roleId=' + data.roleId, + method: 'get', + data, + }); +} diff --git a/src/api/sensor.js b/src/api/sensor.js new file mode 100644 index 0000000..f3737f7 --- /dev/null +++ b/src/api/sensor.js @@ -0,0 +1,110 @@ +import request from '@/utils/request'; + +export function getList(data) { + let pram = '?page=' + data.page + '&size=' + data.size; + if (data.deviceId != '') { + pram += '&deviceId=' + data.deviceId; + } + if (data.sensorName != '') { + pram += '&sensorName=' + data.sensorName; + } + return request({ + url: '/iot/sensor/select' + pram, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/iot/sensor/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/iot/sensor/remove', + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/iot/sensor/insert', + method: 'post', + data, + }); +} +//字典数据获取 +export function getDictData(data) { + return request({ + url: '/iot/sensor/dict', + method: 'get', + data, + }); +} +//查询传感器属性列表 +export function selectAttribute(data) { + return request({ + url: '/iot/sensor/selectAttribute', + method: 'get', + data, + }); +} + +//查询传感器属性为数值时传感点类型列表 +export function selectSensorType(data) { + return request({ + url: '/iot/sensor/selectSensorType', + method: 'get', + data, + }); +} + +//查询传感器属性为数值时传感点单位列表 +export function selectSensorUnit(data) { + return request({ + url: '/iot/sensor/selectSensorUnit', + method: 'get', + data, + }); +} + +//查询传感器存储策略列表 +export function selectStoreStrategy(data) { + return request({ + url: '/iot/sensor/selectStoreStrategy', + method: 'get', + data, + }); +} + +//查询传感器功能码列表 +export function selectFunctionCode(data) { + return request({ + url: '/iot/sensor/selectFunctionCode', + method: 'get', + data, + }); +} + +//查询传感器数据格式列表 +export function selectDataFormat(data) { + return request({ + url: '/iot/sensor/selectDataFormat', + method: 'get', + data, + }); +} + +//查询传感器读写权限列表 +export function selectReadWrite(data) { + return request({ + url: '/iot/sensor/selectReadWrite', + method: 'get', + data, + }); +} diff --git a/src/api/staff.js b/src/api/staff.js new file mode 100644 index 0000000..e2345ab --- /dev/null +++ b/src/api/staff.js @@ -0,0 +1,9 @@ +import request from '@/utils/request'; +//日运行报表 +export function getList(data) { + return request({ + url: '/addressBook/book?projectId=' + data.projectId, + method: 'get', + data, + }); +} diff --git a/src/api/sys.js b/src/api/sys.js new file mode 100644 index 0000000..e878864 --- /dev/null +++ b/src/api/sys.js @@ -0,0 +1,25 @@ +import request from '@/utils/request'; + +export async function doEdit(data) { + return request({ + url: '/webInfo/saveOrUpdate', + method: 'post', + data, + }); +} + +export async function doAdd(data) { + return request({ + url: 'webInfo/saveOrUpdate', + method: 'post', + data, + }); +} + +export async function getData(data) { + return request({ + url: '/webInfo/select', + method: 'get', + data, + }); +} diff --git a/src/api/sysdict.js b/src/api/sysdict.js new file mode 100644 index 0000000..2f07a6c --- /dev/null +++ b/src/api/sysdict.js @@ -0,0 +1,66 @@ +import request from '@/utils/request'; + +export function getList(data) { + const param = '?page=' + data.page + '&size=' + data.size; + return request({ + url: '/sysDict/select' + param, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/sysDict/updateDictType', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/sysDict/removeDictType?dictTypeId=' + data.dictTypeId, + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/sysDict/insertDictType', + method: 'post', + data, + }); +} + +export function selectDeviceInfo(data) { + return request({ + url: '/iot/device/selectDeviceInfo?deviceId=' + data.deviceId, + method: 'post', + data, + }); +} + +export function insertDictData(data) { + return request({ + url: '/sysDict/insertDictData', + method: 'post', + data, + }); +} + +export function updateDictData(data) { + return request({ + url: '/sysDict/updateDictData', + method: 'post', + data, + }); +} + +export function removeDictData(data) { + return request({ + url: '/sysDict/removeDictData?dictDataId=' + data.dictDataId, + method: 'post', + data, + }); +} diff --git a/src/api/task.js b/src/api/task.js new file mode 100644 index 0000000..00af57f --- /dev/null +++ b/src/api/task.js @@ -0,0 +1,94 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//任务分页查询 +export function getList(data) { + var param = + '?page=' + + data.page + + '&size=' + + data.size + + '&type=' + + data.type + + '&projectId=' + + data.projectId; + if (data.status != 3) { + param += '&status=' + data.status; + } + return request({ + url: '/task/list' + param, + method: 'get', + data, + }); +} +//获取报警用户列表 +export function getHandlers(data) { + return request({ + url: '/task/handlers?deviceCode=' + data.deviceCode, + method: 'get', + data, + }); +} +//获取站点列表 +export function getDevices(data) { + return request({ + url: '/task/devices?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//删除任务 +export function doDelete(data) { + return request({ + url: '/task/remove', + method: 'post', + data, + }); +} +//新建任务 +export function doAdd(data) { + return request({ + url: '/task/add', + method: 'post', + data, + }); +} +//任务反馈 +export function feedback(data) { + return request({ + url: '/task/feedback', + method: 'post', + data, + }); +} +//水质申请修改 +export function doEdit(data) { + return request({ + url: '/task/update', + method: 'post', + data, + }); +} +//导出 +export function taskExport(data) { + var param = '?projectId=' + data.projectId; + if (data.projectId != '') { + param += '&projectId=' + data.projectId; + } + return baseURL + '/taskReport/export' + param; +} +//任务级别字典数据 +export function getTaskLevel(data) { + return request({ + url: '/task/taskLevel', + method: 'get', + data, + }); +} +//任务类型字典数据 +export function getTaskType(data) { + return request({ + url: '/task/taskType', + method: 'get', + data, + }); +} diff --git a/src/api/testing.js b/src/api/testing.js new file mode 100644 index 0000000..ae96424 --- /dev/null +++ b/src/api/testing.js @@ -0,0 +1,73 @@ +import request from '@/utils/request'; +import { baseURL } from '@/config'; +//水质检测分页查询 +export function getList(data) { + var param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.code != '') { + param += '&code=' + data.code; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return request({ + url: '/waterDetection/list' + param, + method: 'get', + data, + }); +} +//水质申请删除 +export function doDelete(data) { + return request({ + url: '/waterDetection/remove', + method: 'post', + data, + }); +} +//水质申请添加 +export function doAdd(data) { + return request({ + url: '/waterDetection/add', + method: 'post', + data, + }); +} +//水质申请修改 +export function doEdit(data) { + return request({ + url: '/waterDetection/update', + method: 'post', + data, + }); +} +//导出 +export function exportWaterDetection(data) { + var param = '?projectId=' + data.projectId; + if (data.deviceName != '') { + param += '&deviceName=' + data.deviceName; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return baseURL + '/waterDetectionReport/export' + param; +} +//达标率 +export function waterRate(data) { + var param = '?projectId=' + data.projectId; + if (data.code != '') { + param += '&deviceCode=' + data.code; + } + if (data.date != '') { + param += '&date=' + data.date; + } + return request({ + url: '/waterDetection/rate' + param, + method: 'get', + data, + }); +} diff --git a/src/api/tq.js b/src/api/tq.js new file mode 100644 index 0000000..274dbd1 --- /dev/null +++ b/src/api/tq.js @@ -0,0 +1,8 @@ +import request from '@/utils/request'; +export function getDeviceList(data) { + return request({ + url: '/tq/api/getDeviceList', + method: 'get', + data, + }); +} diff --git a/src/api/trigger.js b/src/api/trigger.js new file mode 100644 index 0000000..46802b9 --- /dev/null +++ b/src/api/trigger.js @@ -0,0 +1,116 @@ +import request from '@/utils/request'; + +export function getList(data) { + let param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.deviceId != '') { + param += '&deviceId=' + data.deviceId; + } + return request({ + url: '/iot/trigger/select' + param, + method: 'get', + data, + }); +} + +export function doEdit(data) { + return request({ + url: '/iot/trigger/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/iot/trigger/remove', + method: 'post', + data, + }); +} + +export function doAdd(data) { + return request({ + url: '/iot/trigger/insert', + method: 'post', + data, + }); +} +//根据触发器id获取触发器详情 +export function selectTriggerById(data) { + return request({ + url: '/iot/trigger/selectTriggerById?triggerId=' + data.triggerId, + method: 'get', + data, + }); +} +//获取报警级别列表 +export function selectAllAlarmLevel(data) { + return request({ + url: '/iot/trigger/selectAllAlarmLevel', + method: 'get', + data, + }); +} + +//获取触发条件列表 +export function selectAllTriggerCondition(data) { + return request({ + url: '/iot/trigger/selectAllTriggerCondition', + method: 'get', + data, + }); +} +//获取报警联系人列表 +export function selectAllAlarmUser(data) { + return request({ + url: '/iot/trigger/selectAllAlarmUser', + method: 'get', + data, + }); +} +//获取报警方式列表 +export function selectAllAlarmType(data) { + return request({ + url: '/iot/trigger/selectAllAlarmType', + method: 'get', + data, + }); +} +//获取要联控的设备列表 +export function selectControlDevices(data) { + return request({ + url: '/iot/trigger/selectDeviceByProjectId?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//根据要联控的设备获取传感器列表 +export function selectSensorByDeviceId(data) { + return request({ + url: '/iot/trigger/selectSensorByDeviceId?deviceId=' + data.deviceId, + method: 'get', + data, + }); +} +//获取报警信息模板列表 +export function selectAllSmsConfig(data) { + return request({ + url: '/iot/trigger/selectAllSmsConfig', + method: 'get', + data, + }); +} +//根据项目id查询设备列表 +export function selectDeviceByProjectId(data) { + return request({ + url: '/iot/trigger/selectDeviceByProjectId?projectId=' + data.projectId, + method: 'get', + data, + }); +} diff --git a/src/api/triggerRule.js b/src/api/triggerRule.js new file mode 100644 index 0000000..a55b161 --- /dev/null +++ b/src/api/triggerRule.js @@ -0,0 +1,59 @@ +import request from '@/utils/request'; +//查询传感器下触发器规则列表 +export function getList(data) { + var param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + if (data.sensorName != '') { + param += '&sensorName=' + data.sensorName; + } + return request({ + url: '/triggerRule/list' + param, + method: 'get', + data, + }); +} +//查询项目下的传感器列表 +export function getSensorsData(data) { + return request({ + url: '/triggerRule/sensors?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//修改某个触发器规则 +export function doEdit(data) { + return request({ + url: '/triggerRule/update', + method: 'post', + data, + }); +} + +export function doDelete(data) { + return request({ + url: '/triggerRule/remove', + method: 'post', + data, + }); +} +//为某个传感器添加触发器规则 +export function doAdd(data) { + return request({ + url: '/triggerRule/add', + method: 'post', + data, + }); +} +//批量应用触发器规则到整个项目 +export function triggerRuleUse(data) { + return request({ + url: '/triggerRule/use', + method: 'post', + data, + }); +} diff --git a/src/api/user.js b/src/api/user.js new file mode 100644 index 0000000..096bb67 --- /dev/null +++ b/src/api/user.js @@ -0,0 +1,99 @@ +import request from '@/utils/request'; +import { encrypt } from '@/utils/encrypt'; +import { loginRSA } from '@/config'; + +export async function login(data) { + if (loginRSA) { + data.password = await encrypt(data.passwords); + } + delete data.passwords; + return request({ + url: '/system/login', + method: 'post', + data, + }); +} + +export function getUserInfos() { + return request({ + url: '/system/getUserInfo', + method: 'get', + }); +} + +export function logout() { + return request({ + url: '/system/logout', + method: 'post', + }); +} + +export function getAuthMenu() { + return request({ + url: '/sysMenu/select', + method: 'get', + }); +} +//获取二维码url +export function getQrCode() { + return request({ + url: '/system/wechat/getQrCode', + method: 'get', + }); +} +//为用户分配项目 +export function assignProject(data) { + return request({ + url: '/sysUser/assignProject', + method: 'post', + data, + }); +} +//查询用户的项目列表 +export function getProjectsByUserId(data) { + return request({ + url: '/sysUser/getProjectsByUserId?userId=' + data.userId, + method: 'get', + }); +} +// 扫码登录 +export function codeLoginCallback(data) { + return request({ + url: '/system/wechat/login?scene=' + data.scene, + method: 'get', + }); +} +// 微信和用户绑定 +export function userBindWechat(data) { + return request({ + url: '/system/bind?userName=' + data.userName + '&openid=' + data.openid, + method: 'post', + }); +} + +// 修改密码 +export function userUpdatePwd(data) { + return request({ + url: + '/sysProfile/updatePwd?oldPwd=' + data.oldPwd + '&newPwd=' + data.newPwd, + method: 'post', + }); +} + +// 修改用户信息 +export function updateInfo(data) { + return request({ + url: '/sysProfile/updateInfo', + method: 'post', + data, + }); +} + +// 查询用户信息 +export function userInfo(data) { + return request({ + url: '/sysProfile/userInfo', + method: 'get', + data, + }); +} diff --git a/src/api/vehicle.js b/src/api/vehicle.js new file mode 100644 index 0000000..f360370 --- /dev/null +++ b/src/api/vehicle.js @@ -0,0 +1,49 @@ +import request from '@/utils/request'; +//打卡列表分页查询 +export function getList(data) { + const param = + '?page=' + + data.page + + '&size=' + + data.size + + '&projectId=' + + data.projectId; + return request({ + url: '/vehicle/list' + param, + method: 'get', + data, + }); +} + +//获取设备,设备详情,位置信息 +export function getDeviceList(data) { + return request({ + url: '/tq/api/getDeviceList', + method: 'get', + data, + }); +} + +//项目列表 +export function getProjects(data) { + return request({ + url: '/tq/api/projects', + method: 'get', + data, + }); +} + +//途强设备与力鼎项目(支持多个)绑定 +export function bindProject(data) { + return request({ + url: + '/tq/api/bindProject?imei=' + + data.imei + + '&num=' + + data.num + + '&projectIds=' + + data.projectIds, + method: 'post', + data, + }); +} diff --git a/src/api/video.js b/src/api/video.js new file mode 100644 index 0000000..3d4cb1d --- /dev/null +++ b/src/api/video.js @@ -0,0 +1,21 @@ +import request from '@/utils/request'; +//获取该项目下萤石云设备 +export function getList(data) { + return request({ + url: '/video/devices?projectId=' + data.projectId, + method: 'get', + data, + }); +} +//获取播放地址 +export function getLiveAddr(data) { + return request({ + url: + '/video/getLiveAddr?account=' + + data.account + + '&deviceSerial=' + + data.deviceSerial, + method: 'get', + data, + }); +} diff --git a/src/api/video.vue b/src/api/video.vue new file mode 100644 index 0000000..a499052 --- /dev/null +++ b/src/api/video.vue @@ -0,0 +1 @@ + diff --git a/src/api/wechat.js b/src/api/wechat.js new file mode 100644 index 0000000..de5efd1 --- /dev/null +++ b/src/api/wechat.js @@ -0,0 +1,162 @@ +import request from '@/utils/request'; +//查询菜单 +export function getMenuList(data) { + return request({ + url: '/wechatMp/menu/list', + method: 'get', + data, + }); +} +//获取菜单类型 +export function getMenuType(data) { + return request({ + url: '/wechatMp/menu/type', + method: 'get', + data, + }); +} +//创建菜单 +export function addMenuPub(data) { + return request({ + url: '/wechatMp/menu/pub', + method: 'post', + data, + }); +} +//删除菜单 +export function delMenuRemove() { + return request({ + url: '/wechatMp/menu/remove', + method: 'post', + }); +} +//关注自动回复 +//查询回复规则 +export function getSubscribeReply(data) { + return request({ + url: '/wechatMp/subscribeReply/getReply', + method: 'get', + data, + }); +} +//根据素材类型分页查询素材列表 +export function getMaterialList(data) { + if (data.page == null) { + data.page = 1; + } + const param = + '?page=' + data.page + '&size=' + data.size + '&type=' + data.type; + return request({ + url: '/wechatMp/material/list' + param, + method: 'get', + data, + }); +} +//素材类型字典查询 +export function getMaterialType(data) { + return request({ + url: '/wechatMp/material/type', + method: 'get', + data, + }); +} +//消息类型字典查询 +export function getMaterialMsgType(data) { + return request({ + url: '/wechatMp/subscribeReply/msgType', + method: 'get', + data, + }); +} +//保存或修改 +export function materialSaveOrUpdate(data) { + return request({ + url: '/wechatMp/subscribeReply/saveOrUpdate', + method: 'post', + data, + }); +} +//删除 +export function materialRemove(data) { + return request({ + url: '/wechatMp/subscribeReply/remove?id=' + data.id, + method: 'post', + data, + }); +} +//关键词自动回复 +//关键字匹配类型 +export function getMatchType(data) { + return request({ + url: '/wechatMp/keywordReply/matchType', + method: 'get', + data, + }); +} + +//查询 +export function getKeywordReplyList(data) { + const param = '?page=' + data.page + '&size=' + data.size; + return request({ + url: '/wechatMp/keywordReply/list' + param, + method: 'get', + data, + }); +} +//新增 +export function keywordReplyAdd(data) { + return request({ + url: '/wechatMp/keywordReply/insert', + method: 'post', + data, + }); +} +//修改 +export function keywordReplyEdit(data) { + return request({ + url: '/wechatMp/keywordReply/update', + method: 'post', + data, + }); +} +//删除 +export function keywordReplyRemove(data) { + return request({ + url: '/wechatMp/keywordReply/remove', + method: 'post', + data, + }); +} +//默认自动回复 +//查询回复规则 +export function getReplyType(data) { + return request({ + url: '/wechatMp/defaultReply/getReply', + method: 'get', + data, + }); +} +//查询回复规则 +export function getDefaultReplyType(data) { + return request({ + url: '/wechatMp/defaultReply/getReply', + method: 'get', + data, + }); +} +//保存或修改 +export function defaultReplySaveOrUpdate(data) { + return request({ + url: '/wechatMp/defaultReply/saveOrUpdate', + method: 'post', + data, + }); +} +//删除 +export function defaultReplyRemove(data) { + return request({ + url: '/wechatMp/defaultReply/remove?id=' + data.id, + method: 'post', + data, + }); +} diff --git a/src/assets/copy.png b/src/assets/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..44900e252d5e3c044581ef5782afc36b2705c83d GIT binary patch literal 271 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 literal 0 HcmV?d00001 diff --git a/src/assets/empty_images/data_empty.png b/src/assets/empty_images/data_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..fccccf2d8b208f95f1378b13c63a8ad8305955e9 GIT binary patch literal 67649 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 KMNUMnLSTZ5dSL+o literal 0 HcmV?d00001 diff --git a/src/assets/error_images/403.png b/src/assets/error_images/403.png new file mode 100644 index 0000000000000000000000000000000000000000..b1dfc1f4d97d5a111f1313a186e93977afc7fba5 GIT binary patch literal 149303 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

)-;aa$nG-syMz@ncdL08{IbbN?o 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 literal 0 HcmV?d00001 diff --git a/src/assets/error_images/404.png b/src/assets/error_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..135d629bc528e2dad004007d4e04edf467b982f9 GIT binary patch literal 71577 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