chenzhen2 2 роки тому
батько
коміт
8176e3404f
100 змінених файлів з 31668 додано та 2 видалено
  1. 3 0
      .browserslistrc
  2. 5 0
      .editorconfig
  3. 2 0
      .env.borui.serve
  4. 2 0
      .env.dev.build
  5. 2 0
      .env.dev.serve
  6. 4 0
      .env.prod.build
  7. 2 0
      .env.prod.serve
  8. 2 0
      .env.test.build
  9. 2 0
      .env.test.serve
  10. 11 0
      .eslintignore
  11. 63 0
      .eslintrc.js
  12. 27 0
      .gitignore
  13. 5 0
      .travis.yml
  14. 129 0
      Jenkinsfile
  15. 21 0
      LICENSE
  16. 80 2
      README.md
  17. 29 0
      babel.config.js
  18. 6 0
      jest.config.js
  19. 18517 0
      package-lock.json
  20. 116 0
      package.json
  21. BIN
      public/favicon.ico
  22. BIN
      public/images/envmonitor/air.png
  23. BIN
      public/images/envmonitor/arrow-down.png
  24. BIN
      public/images/envmonitor/arrow-top.png
  25. BIN
      public/images/envmonitor/co2.png
  26. BIN
      public/images/envmonitor/fengshan.png
  27. 5 0
      public/images/envmonitor/home_air_icon.svg
  28. 4 0
      public/images/envmonitor/home_engery_icon.svg
  29. BIN
      public/images/envmonitor/house.jpg
  30. BIN
      public/images/envmonitor/house.png
  31. BIN
      public/images/envmonitor/light.png
  32. BIN
      public/images/envmonitor/pm25.png
  33. BIN
      public/images/envmonitor/shuanghua.png
  34. BIN
      public/images/envmonitor/top_bg.png
  35. BIN
      public/images/envmonitor/wendu.png
  36. 12118 0
      public/images/ipdImages/bj.svg
  37. 64 0
      public/images/ipdImages/logo.svg
  38. 57 0
      public/images/ipdImages/图层 2.svg
  39. 4 0
      public/images/map-icon/atrum.svg
  40. 4 0
      public/images/map-icon/atrumselected.svg
  41. 4 0
      public/images/map-icon/baby.svg
  42. 4 0
      public/images/map-icon/babyselected.svg
  43. BIN
      public/images/map-icon/bg_disable.png
  44. 4 0
      public/images/map-icon/book.svg
  45. 4 0
      public/images/map-icon/bookselected.svg
  46. 6 0
      public/images/map-icon/branch.svg
  47. 6 0
      public/images/map-icon/branchselected.svg
  48. 4 0
      public/images/map-icon/child.svg
  49. 4 0
      public/images/map-icon/childselected.svg
  50. 4 0
      public/images/map-icon/clean.svg
  51. 4 0
      public/images/map-icon/cleanselected.svg
  52. 4 0
      public/images/map-icon/coffee.svg
  53. 4 0
      public/images/map-icon/coffeeselected.svg
  54. 7 0
      public/images/map-icon/dev.svg
  55. 6 0
      public/images/map-icon/device.svg
  56. 6 0
      public/images/map-icon/deviceroom.svg
  57. 6 0
      public/images/map-icon/deviceroomselected.svg
  58. 6 0
      public/images/map-icon/deviceselected.svg
  59. 7 0
      public/images/map-icon/devselected.svg
  60. 4 0
      public/images/map-icon/door1.svg
  61. 4 0
      public/images/map-icon/door2.svg
  62. 4 0
      public/images/map-icon/doordown.svg
  63. 4 0
      public/images/map-icon/doorleft.svg
  64. 4 0
      public/images/map-icon/doorright.svg
  65. 4 0
      public/images/map-icon/doorup.svg
  66. 10 0
      public/images/map-icon/dooruplarge.svg
  67. 3 0
      public/images/map-icon/elevator.svg
  68. 4 0
      public/images/map-icon/finance.svg
  69. 4 0
      public/images/map-icon/financeselected.svg
  70. 4 0
      public/images/map-icon/food.svg
  71. 4 0
      public/images/map-icon/foodselected.svg
  72. 4 0
      public/images/map-icon/grow.svg
  73. 4 0
      public/images/map-icon/growselected.svg
  74. 4 0
      public/images/map-icon/icon-floor-arrow.svg
  75. 14 0
      public/images/map-icon/icon-search-big.svg
  76. 4 0
      public/images/map-icon/mailroom.svg
  77. 4 0
      public/images/map-icon/mailroomselected.svg
  78. 10 0
      public/images/map-icon/meetingroom16.svg
  79. 7 0
      public/images/map-icon/meetingroom16selected.svg
  80. 9 0
      public/images/map-icon/mroom10.svg
  81. 10 0
      public/images/map-icon/mroom10selected.svg
  82. 9 0
      public/images/map-icon/mroom12.svg
  83. 10 0
      public/images/map-icon/mroom12selected.svg
  84. 9 0
      public/images/map-icon/mroom14.svg
  85. 10 0
      public/images/map-icon/mroom14selected.svg
  86. 9 0
      public/images/map-icon/mroom16.svg
  87. 10 0
      public/images/map-icon/mroom16selected.svg
  88. 9 0
      public/images/map-icon/mroom22.svg
  89. 10 0
      public/images/map-icon/mroom22selected.svg
  90. 9 0
      public/images/map-icon/mroom4.svg
  91. 10 0
      public/images/map-icon/mroom4selected.svg
  92. 9 0
      public/images/map-icon/mroom5.svg
  93. 9 0
      public/images/map-icon/mroom52.svg
  94. 10 0
      public/images/map-icon/mroom52selected.svg
  95. 10 0
      public/images/map-icon/mroom5selected.svg
  96. 9 0
      public/images/map-icon/mroom6.svg
  97. 9 0
      public/images/map-icon/mroom64.svg
  98. 10 0
      public/images/map-icon/mroom64selected.svg
  99. 10 0
      public/images/map-icon/mroom6selected.svg
  100. 0 0
      public/images/map-icon/mroom7.svg

+ 3 - 0
.browserslistrc

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

+ 5 - 0
.editorconfig

@@ -0,0 +1,5 @@
+[*.{js,jsx,ts,tsx,vue}]
+indent_style = space
+indent_size = 2
+trim_trailing_whitespace = true
+insert_final_newline = true

+ 2 - 0
.env.borui.serve

@@ -0,0 +1,2 @@
+NODE_ENV=development
+VUE_APP_BASE_API = '/borui/'

+ 2 - 0
.env.dev.build

@@ -0,0 +1,2 @@
+NODE_ENV=production
+VUE_APP_BASE_API = '/sgh5'

+ 2 - 0
.env.dev.serve

@@ -0,0 +1,2 @@
+NODE_ENV=development
+VUE_APP_BASE_API = '/sgh5'

+ 4 - 0
.env.prod.build

@@ -0,0 +1,4 @@
+
+NODE_ENV=production
+VUE_APP_BASE_API = '/sgh5'
+

+ 2 - 0
.env.prod.serve

@@ -0,0 +1,2 @@
+NODE_ENV=development
+VUE_APP_BASE_API = '/sgh5'

+ 2 - 0
.env.test.build

@@ -0,0 +1,2 @@
+NODE_ENV=production
+VUE_APP_BASE_API = '/api'

+ 2 - 0
.env.test.serve

@@ -0,0 +1,2 @@
+NODE_ENV=development
+VUE_APP_BASE_API = '/api'

+ 11 - 0
.eslintignore

@@ -0,0 +1,11 @@
+src/store
+src/model
+src/constant
+src/components
+src/utils
+src/views
+src/apis
+src/config
+src/utils/bideo.js
+vue.config.js
+mock/

+ 63 - 0
.eslintrc.js

@@ -0,0 +1,63 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true
+  },
+  extends: [
+    'plugin:vue/vue3-strongly-recommended',
+    '@vue/standard',
+    '@vue/typescript/recommended'
+  ],
+  parserOptions: {
+    ecmaVersion: 2020
+  },
+  rules: {
+    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    '@typescript-eslint/ban-types': 'off',
+    '@typescript-eslint/explicit-module-boundary-types': 'off',
+    '@typescript-eslint/member-delimiter-style': ['error',
+      {
+        multiline: {
+          delimiter: 'none'
+        },
+        singleline: {
+          delimiter: 'comma'
+        }
+      }],
+    '@typescript-eslint/no-explicit-any': 'off',
+    'space-before-function-paren': ['error', 'never'],
+    'vue/array-bracket-spacing': 'error',
+    'vue/arrow-spacing': 'error',
+    'vue/block-spacing': 'error',
+    'vue/brace-style': 'error',
+    'vue/camelcase': 'error',
+    'vue/comma-dangle': 'error',
+    'vue/component-name-in-template-casing': 'error',
+    'vue/eqeqeq': 'error',
+    'vue/key-spacing': 'error',
+    'vue/match-component-file-name': 'error',
+    'vue/object-curly-spacing': 'error',
+    'no-useless-escape': 'off',
+    '@typescript-eslint/no-this-alias': [
+      'error',
+      {
+        allowDestructuring: true, // Allow `const { props, state } = this`; false by default
+        allowedNames: ['self'] // Allow `const self = this`; `[]` by default
+      }
+    ],
+    'vue/attribute-hyphenation': 'off',
+    'vue/custom-event-name-casing': 'off'
+  },
+  overrides: [
+    {
+      files: [
+        '**/__tests__/*.{j,t}s?(x)',
+        '**/tests/unit/**/*.spec.{j,t}s?(x)'
+      ],
+      env: {
+        jest: true
+      }
+    }
+  ]
+}

+ 27 - 0
.gitignore

@@ -0,0 +1,27 @@
+.DS_Store
+node_modules
+/dist
+/sgh5
+
+/tests/e2e/videos/
+/tests/e2e/screenshots/
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 5 - 0
.travis.yml

@@ -0,0 +1,5 @@
+language: node_js
+node_js: 10
+script: npm run test
+notifications:
+  email: false

+ 129 - 0
Jenkinsfile

@@ -0,0 +1,129 @@
+@Library('devops') _
+
+pipeline {
+    agent {label 'jenkins-slave-jnlp'}
+    environment {  // https://stackoverflow.com/questions/53541489/updating-environment-global-variable-in-jenkins-pipeline-from-the-stage-level
+        NAME="admin-tmpl"
+        NAMESPACE="oppc-rcyj-web"
+        SERVER_PORT="80"
+    }
+
+    options {
+        // timestamps()  //日志会有时间
+        skipDefaultCheckout()  //删除隐式checkout scm语句
+        // disableConcurrentBuilds() //禁止并行,会列队式等前面的任务完才进行下一个任务
+        timeout(time: 1, unit: 'HOURS')  //流水线超时设置1h
+    }
+
+    stages {
+        stage('Init'){
+            steps {
+                script{
+                    // 【测试环境】变量
+                    env.INGRESS_HOST='admin-tmpl-test.rencaiyoujia.cn'
+                    env.INGRESS_TLS_SECRET="rencaiyoujia-tls-secret"
+                    env.REPLICAS="1"  //deployment的副本数
+                    KUBECONTEXT = "k8s-test-admin"  //测试环境k8s
+                    NPM_RUN_BUILD_CMD="npm run build:test"
+                    DOCKERFILE_NAME="Dockerfile"
+
+                    // 【生产环境】变量
+                    if( "${BRANCH_NAME}"== "master"){
+                        env.INGRESS_HOST='admin-tmpl.rencaiyoujia.com'
+                        env.INGRESS_TLS_SECRET="rencaiyoujia-tls-secret"
+                        env.REPLICAS="2"
+                        KUBECONTEXT="k8s-prod-admin"  //生产环境k8s
+                        NPM_RUN_BUILD_CMD="npm run build:prod"
+                        DOCKERFILE_NAME="Dockerfile"
+                    }
+
+                    // 【开发环境】变量
+                    if( "${BRANCH_NAME}"== "dev"){
+                        env.INGRESS_HOST='admin-tmpl-dev.rencaiyoujia.cn'
+                        env.INGRESS_TLS_SECRET="rencaiyoujia-tls-secret"
+                        env.REPLICAS="1"
+                        KUBECONTEXT="k8s-dev-admin"  //开发环境k8s
+                        NPM_RUN_BUILD_CMD="npm run build:dev"
+                        DOCKERFILE_NAME="Dockerfile"
+                    }
+                }
+            }
+        }
+        stage('Checkout') {
+            steps {
+                checkout scm
+            }
+        } 
+        stage('npm打包') {
+            steps {
+                script{            
+                    // sh 'npm config set registry https://registry.npm.taobao.org'
+                    sh 'npm install --registry=https://registry.npm.taobao.org'
+                    sh "${NPM_RUN_BUILD_CMD}"
+                }
+            }                
+        }        
+        stage('DockerBuild') {
+            steps {
+                script{
+                    sh "rm -rf docker/dist;mv dist docker"
+                    devops.docker(env.NAME,dockerfile:"docker/${DOCKERFILE_NAME}",context:"docker").build().push()
+                }
+            }
+        }
+
+        stage('Test') {
+            steps {
+                echo 'Testing..'
+            }
+        }
+        
+        stage('Deploy') {
+            parallel {
+                stage('deploy ingress') {
+                    when {
+                        expression { env.INGRESS_HOST != null }
+                    }
+                    steps{
+                        sh """envsubst < k8smanifests/svc.yaml | kubectl --context ${KUBECONTEXT} apply -f - ;\
+                            envsubst < k8smanifests/ingress.yaml | kubectl --context ${KUBECONTEXT} apply -f - ;\
+                        """      
+                    }
+                }
+                stage('Deploy') {
+                    steps{
+                        sh """envsubst < k8smanifests/deploy.yaml ;\
+                            envsubst < k8smanifests/deploy.yaml | kubectl --context ${KUBECONTEXT} apply -f - ;\
+                        """                          
+                    }
+                }
+            }
+        }
+
+    }
+
+
+    post{
+        success{
+            script{
+                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"构建成功 ✅")
+            }
+        }
+        failure{
+            script{
+                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"构建失败 ❌")
+            }
+        }
+        unstable{
+            script{
+                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"不稳定构建 ✅")
+            }
+        }
+        aborted{
+            script{
+                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"暂停或中断 ❌")
+            }
+        }
+    }
+
+}

+ 21 - 0
LICENSE

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

+ 80 - 2
README.md

@@ -1,3 +1,81 @@
-# sagacloud-sagacare-ipad
+### 目录结构
 
-平板
+```
+admin-tmpl
+├─ .env.dev.build     # 开发环境
+├─ .env.dev.serve     # 开发本地本地
+├─ .env.prod.build    # 生产环境
+├─ .env.prod.serve    # 生产环境本地
+├─ .env.test.build    # 测试环境
+├─ .env.test.serve    # 测试环境本地
+├─ .eslintrc.js       # eslint
+├─ README.md          
+├─ dist               # 打包dist
+├─ mock               # mock服务
+├─ public             # 静态资源
+├─ src                # 源码
+│  ├─ @types          # ts 声明
+│  ├─ apis            # 接口请求
+│  ├─ assets          # webpack打包的资源
+│  ├─ components      # 公共组件
+│  ├─ config          # 全部配置
+│  ├─ constant        # 常量
+│  ├─ directives      # 全局指令
+│  ├─ layout          # 全局Layout
+│  ├─ locales         # 国际化
+│  ├─ model           # 全部model存放
+│  ├─ plugins         # 插件
+│  ├─ router          # 路由
+│  ├─ store           # 全局store管理
+│  ├─ styles          # 全局样式
+│  ├─ utils           # 全局公共方法
+│  └─ views           # 所有业务页面
+├─ tsconfig.json      # ts 编译配置
+└─ vue.config.js      # vue-cli 配置
+
+```
+### 功能
+
+ 
+## HighLight
+
+项目均已最新技术实现,Vue3配套升级全家桶和涉及的插件组件等
+
+项目采用技术:
+
+- vue3 + composition api
+- typescript3.9
+- sass (dart sass)
+- [echats5](https://github.com/apache/echarts)
+
+vue next 系列:
+
+- [element-plus](https://github.com/element-plus/element-plus)
+- [vue-router-next](https://github.com/vuejs/vue-router-next)
+- [vuex-4.0](https://github.com/vuejs/vuex)
+- [vue-i18n-next](https://github.com/intlify/vue-i18n-next)
+
+
+## Document
+## Setup
+
+项目主要是前端和mock server(node)
+
+### 前后端都启动
+
+```shell
+  yarn
+  yarn start
+```
+### 单独启动 Mock
+
+后台模拟服务器和其他版本不同,采用koa2+Faker进行模拟。
+
+- [Koa2](https://github.com/koajs/koa)
+- [Faker](https://github.com/Marak/faker.js)
+
+启动mock server:
+
+```shell
+    yarn mock
+```

+ 29 - 0
babel.config.js

@@ -0,0 +1,29 @@
+/*
+ * @Description:
+ * @Author: ZY
+ * @Date: 2020-12-07 10:30:20
+ * @LastEditors: ZY
+ * @LastEditTime: 2021-01-05 17:11:54
+ */
+module.exports = {
+  presets: [
+    '@vue/cli-plugin-babel/preset'
+  ],
+  env: {
+    development: {
+      // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
+      // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
+      // https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html
+      plugins: [
+        'dynamic-import-node'
+        // [
+        //   'component',
+        //   {
+        //     libraryName: 'element-plus',
+        //     styleLibraryName: 'theme-chalk'
+        //   }
+        // ]
+      ]
+    }
+  }
+}

+ 6 - 0
jest.config.js

@@ -0,0 +1,6 @@
+module.exports = {
+  preset: '@vue/cli-plugin-unit-jest/presets/typescript-and-babel',
+  transform: {
+    '^.+\\.vue$': 'vue-jest'
+  }
+}

Різницю між файлами не показано, бо вона завелика
+ 18517 - 0
package-lock.json


+ 116 - 0
package.json

@@ -0,0 +1,116 @@
+{
+  "name": "SagaCare",
+  "version": "0.1.0",
+  "private": true,
+  "scripts": {
+    "start": "concurrently \"npm run serve:dev\"",
+    "serve:dev": "cross-env NODE_ENV=development dotenv -e .env.dev.serve vue-cli-service serve",
+    "serve:borui": "cross-env NODE_ENV=development dotenv -e .env.borui.serve vue-cli-service serve",
+    "build": "cross-env NODE_ENV=production  dotenv -e .env.prod.build vue-cli-service build",
+    "test:unit": "vue-cli-service test:unit",
+    "test:e2e": "vue-cli-service test:e2e",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "@dragndrop/vue-dropzone": "0.0.4",
+    "@tinymce/tinymce-vue": "^4.0.0",
+    "axios-mapper": "^0.5.4",
+    "compression-webpack-plugin": "^5.0.0",
+    "core-js": "^3.4.0",
+    "crypto-ts": "^1.0.2",
+    "default-passive-events": "^2.0.0",
+    "driver.js": "^0.9.8",
+    "echarts": "^5.3.0",
+    "faker": "^5.1.0",
+    "file-saver": "^2.0.5",
+    "hammerjs": "^2.0.8",
+    "js-cookie": "^2.2.1",
+    "koa": "^2.13.0",
+    "koa-body": "^4.2.0",
+    "koa-logger": "^3.2.1",
+    "koa-router": "^10.0.0",
+    "koa2-cors": "^2.0.6",
+    "lib-flexible": "^0.3.2",
+    "log4js": "^6.3.0",
+    "path-to-regexp": "^6.2.0",
+    "qrcode.vue": "^3.3.3",
+    "reflect-metadata": "^0.1.13",
+    "tinymce": "5.6.2",
+    "vant": "^3.4.5",
+    "vue": "^3.2.1",
+    "vue-class-component": "^8.0.0-0",
+    "vue-draggable-next": "^2.0.1",
+    "vue-image-crop-upload": "^2.5.0",
+    "vue-property-decorator": "^9.1.2",
+    "vue-router": "4.0",
+    "vue-xss": "^1.0.4",
+    "vue3-count-to": "^1.0.7",
+    "vuex": "^4.0.0-0",
+    "vuex-module-decorators": "^1.0.1",
+    "vuex-persistedstate": "^4.0.0-beta.1",
+    "xss": "^1.0.11"
+  },
+  "devDependencies": {
+    "@types/clipboard": "^2.0.1",
+    "@types/faker": "^5.1.5",
+    "@types/file-saver": "^2.0.1",
+    "@types/jest": "^24.0.19",
+    "@types/js-cookie": "^2.2.6",
+    "@types/koa": "^2.11.6",
+    "@types/koa-logger": "^3.1.1",
+    "@types/koa-router": "^7.4.1",
+    "@types/koa2-cors": "^2.0.1",
+    "@types/lodash": "^4.14.167",
+    "@types/node": "^14.14.11",
+    "@types/nprogress": "^0.2.0",
+    "@types/sortablejs": "^1.10.6",
+    "@types/tinymce": "^4.6.0",
+    "@typescript-eslint/eslint-plugin": "^2.33.0",
+    "@typescript-eslint/parser": "^2.33.0",
+    "@vue/cli-plugin-babel": "~4.5.0",
+    "@vue/cli-plugin-eslint": "~4.5.0",
+    "@vue/cli-plugin-router": "~4.5.0",
+    "@vue/cli-plugin-typescript": "~4.5.0",
+    "@vue/cli-plugin-unit-jest": "~4.5.0",
+    "@vue/cli-plugin-vuex": "~4.5.0",
+    "@vue/cli-service": "~4.5.0",
+    "@vue/compiler-sfc": "^3.0.0",
+    "@vue/eslint-config-standard": "^5.1.2",
+    "@vue/eslint-config-typescript": "^5.0.2",
+    "@vue/test-utils": "^2.0.0-0",
+    "babel-loader": "^8.2.2",
+    "concurrently": "^5.3.0",
+    "cross-env": "^7.0.3",
+    "dotenv-cli": "^4.0.0",
+    "eslint": "^6.7.2",
+    "eslint-plugin-import": "^2.20.2",
+    "eslint-plugin-node": "^11.1.0",
+    "eslint-plugin-promise": "^4.2.1",
+    "eslint-plugin-standard": "^4.0.0",
+    "eslint-plugin-vue": "^7.0.0-0",
+    "lint-staged": "^9.5.0",
+    "postcss-plugin-px2rem": "^0.8.1",
+    "postcss-px2rem-exclude": "^0.0.6",
+    "postcss-pxtorem": "^6.0.0",
+    "sass": "^1.26.5",
+    "sass-loader": "^8.0.2",
+    "style-loader": "^2.0.0",
+    "style-resources-loader": "^1.4.1",
+    "ts-import-plugin": "^2.0.0",
+    "ts-node-dev": "^1.0.0",
+    "typescript": "^4.5.3",
+    "uglifyjs-webpack-plugin": "^2.2.0",
+    "vue-cli-plugin-style-resources-loader": "^0.1.4",
+    "vue-jest": "^5.0.0-alpha.8",
+    "webpackbar": "^5.0.0-3"
+  },
+  "gitHooks": {
+    "pre-commit": "lint-staged"
+  },
+  "lint-staged": {
+    "*.{js,jsx,vue,ts,tsx}": [
+      "vue-cli-service lint",
+      "git add"
+    ]
+  }
+}

BIN
public/favicon.ico


BIN
public/images/envmonitor/air.png


BIN
public/images/envmonitor/arrow-down.png


BIN
public/images/envmonitor/arrow-top.png


BIN
public/images/envmonitor/co2.png


BIN
public/images/envmonitor/fengshan.png


Різницю між файлами не показано, бо вона завелика
+ 5 - 0
public/images/envmonitor/home_air_icon.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/envmonitor/home_engery_icon.svg


BIN
public/images/envmonitor/house.jpg


BIN
public/images/envmonitor/house.png


BIN
public/images/envmonitor/light.png


BIN
public/images/envmonitor/pm25.png


BIN
public/images/envmonitor/shuanghua.png


BIN
public/images/envmonitor/top_bg.png


BIN
public/images/envmonitor/wendu.png


Різницю між файлами не показано, бо вона завелика
+ 12118 - 0
public/images/ipdImages/bj.svg


Різницю між файлами не показано, бо вона завелика
+ 64 - 0
public/images/ipdImages/logo.svg


Різницю між файлами не показано, бо вона завелика
+ 57 - 0
public/images/ipdImages/图层 2.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/atrum.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/atrumselected.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/baby.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/babyselected.svg


BIN
public/images/map-icon/bg_disable.png


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/book.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/bookselected.svg


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
public/images/map-icon/branch.svg


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
public/images/map-icon/branchselected.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/child.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/childselected.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/clean.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/cleanselected.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/coffee.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/coffeeselected.svg


+ 7 - 0
public/images/map-icon/dev.svg

@@ -0,0 +1,7 @@
+<svg width="36" height="20" viewBox="0 0 36 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="8" width="20" height="20" rx="8" fill="#59AFFF" fill-opacity="0.15"/>
+<path d="M13.5 5.6C13.5 5.54477 13.5448 5.5 13.6 5.5H22.4C22.4552 5.5 22.5 5.54477 22.5 5.6V11.5H13.5V5.6Z" stroke="#59AFFF"/>
+<path d="M12.6404 14.5L13.3904 11.5H22.6096L23.3596 14.5H12.6404Z" stroke="#59AFFF"/>
+<path d="M16.5 7.5L15.5 8.5L16.5 9.5" stroke="#59AFFF" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M19.5 9.5L20.5 8.5L19.5 7.5" stroke="#59AFFF" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

Різницю між файлами не показано, бо вона завелика
+ 6 - 0
public/images/map-icon/device.svg


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
public/images/map-icon/deviceroom.svg


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
public/images/map-icon/deviceroomselected.svg


Різницю між файлами не показано, бо вона завелика
+ 6 - 0
public/images/map-icon/deviceselected.svg


+ 7 - 0
public/images/map-icon/devselected.svg

@@ -0,0 +1,7 @@
+<svg width="72" height="44" viewBox="0 0 72 44" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M39.262 39.7353C48.7561 38.1778 56 29.9349 56 20C56 8.9543 47.0457 0 36 0C24.9543 0 16 8.9543 16 20C16 29.9377 23.248 38.1826 32.7462 39.7366L36.0005 44L39.262 39.7353Z" fill="#59AFFF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M29.885 14.5286V22.1714H42.1135V14.5286H29.885ZM29.2736 13C28.7671 13 28.3564 13.4106 28.3564 13.9171V23.6999H43.6421V13.9171C43.6421 13.4106 43.2314 13 42.7249 13H29.2736Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M29.5507 23.6999L28.7864 26.7571H43.2136L42.4493 23.6999H29.5507ZM43.6428 22.1714H28.3572L27.0186 27.5259C26.9221 27.9118 27.214 28.2856 27.6117 28.2856H44.3883C44.786 28.2856 45.0779 27.9118 44.9814 27.5259L43.6428 22.1714Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M34.2473 16.281C34.5458 16.5795 34.5458 17.0634 34.2473 17.3618L33.2592 18.35L34.2473 19.3381C34.5458 19.6366 34.5458 20.1205 34.2473 20.419C33.9489 20.7174 33.4649 20.7174 33.1665 20.419L31.6379 18.8904C31.3394 18.5919 31.3394 18.108 31.6379 17.8095L33.1665 16.281C33.4649 15.9825 33.9489 15.9825 34.2473 16.281Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M37.7517 20.4187C37.4532 20.1203 37.4532 19.6363 37.7517 19.3379L38.7398 18.3497L37.7517 17.3616C37.4532 17.0631 37.4532 16.5792 37.7517 16.2807C38.0502 15.9823 38.5341 15.9823 38.8325 16.2807L40.3611 17.8093C40.6596 18.1078 40.6596 18.5917 40.3611 18.8902L38.8325 20.4187C38.5341 20.7172 38.0502 20.7172 37.7517 20.4187Z" fill="white"/>
+</svg>

+ 4 - 0
public/images/map-icon/door1.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="8" viewBox="0 0 24 8" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M4 6C4 4.89543 4.89543 4 6 4H18C19.1046 4 20 4.89543 20 6V6C20 7.10457 19.1046 8 18 8H6C4.89543 8 4 7.10457 4 6V6Z" fill="#CBD6EE"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M18 0H6C2.68629 0 0 2.68629 0 6C0 6.70127 0.120308 7.37444 0.341411 8H6C4.89543 8 4 7.10457 4 6C4 4.89543 4.89543 4 6 4H18C19.1046 4 20 4.89543 20 6C20 7.10457 19.1046 8 18 8H23.6586C23.8797 7.37444 24 6.70127 24 6C24 2.68629 21.3137 0 18 0Z" fill="#EDEFF5"/>
+</svg>

+ 4 - 0
public/images/map-icon/door2.svg

@@ -0,0 +1,4 @@
+<svg width="8" height="24" viewBox="0 0 8 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M6 20C4.89543 20 4 19.1046 4 18L4 6C4 4.89543 4.89543 4 6 4V4C7.10457 4 8 4.89543 8 6L8 18C8 19.1046 7.10457 20 6 20V20Z" fill="#CBD6EE"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M2.14648e-07 6L7.15493e-08 18C3.20337e-08 21.3137 2.68629 24 6 24C6.70127 24 7.37444 23.8797 8 23.6586L8 18C8 19.1046 7.10457 20 6 20C4.89543 20 4 19.1046 4 18L4 6C4 4.89543 4.89543 4 6 4C7.10457 4 8 4.89543 8 6L8 0.341412C7.37444 0.120308 6.70127 7.99119e-08 6 7.15493e-08C2.68629 3.20337e-08 2.54163e-07 2.68629 2.14648e-07 6Z" fill="#EDEFF5"/>
+</svg>

+ 4 - 0
public/images/map-icon/doordown.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="8" viewBox="0 0 24 8" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M4 6C4 4.89543 4.89543 4 6 4H18C19.1046 4 20 4.89543 20 6C20 7.10457 19.1046 8 18 8H6C4.89543 8 4 7.10457 4 6Z" fill="#CBD6EE"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M18 0H6C2.68629 0 0 2.68629 0 6C0 6.70127 0.120308 7.37444 0.341411 8H6C4.89543 8 4 7.10457 4 6C4 4.89543 4.89543 4 6 4H18C19.1046 4 20 4.89543 20 6C20 7.10457 19.1046 8 18 8H23.6586C23.8797 7.37444 24 6.70127 24 6C24 2.68629 21.3137 0 18 0Z" fill="#EDEFF5"/>
+</svg>

+ 4 - 0
public/images/map-icon/doorleft.svg

@@ -0,0 +1,4 @@
+<svg width="8" height="24" viewBox="0 0 8 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M2 4C3.10457 4 4 4.89543 4 6L4 18C4 19.1046 3.10457 20 2 20C0.895431 20 1.8012e-07 19.1046 1.66948e-07 18L2.38498e-08 6C1.06779e-08 4.89543 0.895431 4 2 4Z" fill="#CBD6EE"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 18L8 6C8 2.68629 5.31371 3.20337e-08 2 7.15493e-08C1.29873 7.99119e-08 0.625558 0.120309 4.07129e-09 0.341412L7.15493e-08 6C5.83774e-08 4.89543 0.895431 4 2 4C3.10457 4 4 4.89543 4 6L4 18C4 19.1046 3.10457 20 2 20C0.895431 20 2.2782e-07 19.1046 2.14648e-07 18L2.82126e-07 23.6586C0.625558 23.8797 1.29873 24 2 24C5.31371 24 8 21.3137 8 18Z" fill="#EDEFF5"/>
+</svg>

+ 4 - 0
public/images/map-icon/doorright.svg

@@ -0,0 +1,4 @@
+<svg width="8" height="24" viewBox="0 0 8 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M6 20C4.89543 20 4 19.1046 4 18L4 6C4 4.89543 4.89543 4 6 4C7.10457 4 8 4.89543 8 6L8 18C8 19.1046 7.10457 20 6 20Z" fill="#CBD6EE"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M2.14648e-07 6L7.15493e-08 18C3.20337e-08 21.3137 2.68629 24 6 24C6.70127 24 7.37444 23.8797 8 23.6586L8 18C8 19.1046 7.10457 20 6 20C4.89543 20 4 19.1046 4 18L4 6C4 4.89543 4.89543 4 6 4C7.10457 4 8 4.89543 8 6L8 0.341412C7.37444 0.120308 6.70127 7.99119e-08 6 7.15493e-08C2.68629 3.20337e-08 2.54163e-07 2.68629 2.14648e-07 6Z" fill="#EDEFF5"/>
+</svg>

+ 4 - 0
public/images/map-icon/doorup.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="8" viewBox="0 0 24 8" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M20 2C20 3.10457 19.1046 4 18 4L6 4C4.89543 4 4 3.10457 4 2C4 0.895429 4.89543 -1.32048e-06 6 -1.22392e-06L18 -1.74846e-07C19.1046 -7.8281e-08 20 0.895431 20 2Z" fill="#CBD6EE"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M6 8L18 8C21.3137 8 24 5.31371 24 2C24 1.29873 23.8797 0.625558 23.6586 -2.98471e-08L18 -5.24537e-07C19.1046 -4.27972e-07 20 0.89543 20 2C20 3.10457 19.1046 4 18 4L6 4C4.89543 4 4 3.10457 4 2C4 0.895429 4.89543 -1.67017e-06 6 -1.57361e-06L0.341412 -2.0683e-06C0.120309 0.625556 5.85844e-07 1.29873 5.24537e-07 2C2.34843e-07 5.31371 2.68629 8 6 8Z" fill="#EDEFF5"/>
+</svg>

+ 10 - 0
public/images/map-icon/dooruplarge.svg

@@ -0,0 +1,10 @@
+<svg width="72" height="8" viewBox="0 0 72 8" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0)">
+<rect x="2" y="-2" width="68" height="8" rx="4" fill="#4D94FF" fill-opacity="0.42" stroke="#EBEEF5" stroke-width="4"/>
+</g>
+<defs>
+<clipPath id="clip0">
+<rect width="72" height="8" fill="white"/>
+</clipPath>
+</defs>
+</svg>

Різницю між файлами не показано, бо вона завелика
+ 3 - 0
public/images/map-icon/elevator.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/finance.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/financeselected.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/food.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/foodselected.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/grow.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/growselected.svg


+ 4 - 0
public/images/map-icon/icon-floor-arrow.svg

@@ -0,0 +1,4 @@
+<svg width="12" height="14" viewBox="0 0 12 14" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M1 8L6 13L11 8" stroke="#0D0D3D" stroke-opacity="0.86" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M1 1L6 6L11 1" stroke="#0D0D3D" stroke-opacity="0.86" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

Різницю між файлами не показано, бо вона завелика
+ 14 - 0
public/images/map-icon/icon-search-big.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/mailroom.svg


Різницю між файлами не показано, бо вона завелика
+ 4 - 0
public/images/map-icon/mailroomselected.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/meetingroom16.svg


Різницю між файлами не показано, бо вона завелика
+ 7 - 0
public/images/map-icon/meetingroom16selected.svg


Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom10.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom10selected.svg


Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom12.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom12selected.svg


+ 9 - 0
public/images/map-icon/mroom14.svg

@@ -0,0 +1,9 @@
+<svg width="36" height="20" viewBox="0 0 36 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 10C0 4.47715 4.47715 0 10 0H26C31.5228 0 36 4.47715 36 10C36 15.5228 31.5228 20 26 20H10C4.47715 20 0 15.5228 0 10Z" fill="#6659F8" fill-opacity="0.15"/>
+<path d="M23.1338 7.95996V14H24.1543V6.88086H23.1338L22.123 7.61816V8.70215L23.1338 7.95996ZM26.1221 12.9404H29.0908V14H30.1113V12.9404H30.6777V11.9785H30.1113V9.93262H29.0908V11.9785H27.2305L29.6377 6.88086H28.5L26.1221 11.9785V12.9404Z" fill="#9E93F3"/>
+<rect x="7.5" y="10.5" width="7" height="2" rx="0.5" stroke="#6659F8"/>
+<path d="M8 13H9V14.5C9 14.7761 8.77614 15 8.5 15C8.22386 15 8 14.7761 8 14.5V13Z" fill="#6659F8"/>
+<path d="M13 13H14V14.5C14 14.7761 13.7761 15 13.5 15C13.2239 15 13 14.7761 13 14.5V13Z" fill="#6659F8"/>
+<path d="M12.5 10.5H12.8465L12.9682 10.1756L13.9615 7.52669C14.3292 6.54606 13.6043 5.5 12.557 5.5H9.443C8.39569 5.5 7.67077 6.54606 8.03851 7.52668L9.03184 10.1756L9.1535 10.5H9.5H12.5Z" stroke="#6659F8"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M19.7072 11.0001L20.7072 10.0001L20.0001 9.29297L19.0001 10.293L18.0002 9.29304L17.293 10.0002L18.293 11.0001L17.293 12.0001L18.0001 12.7072L19.0001 11.7072L20.0002 12.7073L20.7073 12.0002L19.7072 11.0001Z" fill="#9E93F3"/>
+</svg>

+ 10 - 0
public/images/map-icon/mroom14selected.svg

@@ -0,0 +1,10 @@
+<svg width="72" height="44" viewBox="0 0 72 44" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M38.4136 39.8558C48.3212 38.6641 56 30.2288 56 20C56 8.9543 47.0457 0 36 0C24.9543 0 16 8.9543 16 20C16 29.4635 22.5728 37.3919 31.4023 39.469L35.0005 44L38.4136 39.8558Z" fill="#6659F8"/>
+<rect width="72" height="40" rx="20" fill="#6659F8"/>
+<path d="M45.4141 16.3359V26H47.0469V14.6094H45.4141L43.7969 15.7891V17.5234L45.4141 16.3359ZM50.1953 24.3047H54.9453V26H56.5781V24.3047H57.4844V22.7656H56.5781V19.4922H54.9453V22.7656H51.9688L55.8203 14.6094H54L50.1953 22.7656V24.3047Z" fill="white" fill-opacity="0.6"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M28.2 21.6H18.6V23.2H28.2V21.6ZM18.6 20C17.7163 20 17 20.7163 17 21.6V23.2C17 24.0837 17.7163 24.8 18.6 24.8H28.2C29.0837 24.8 29.8 24.0837 29.8 23.2V21.6C29.8 20.7163 29.0837 20 28.2 20H18.6Z" fill="white"/>
+<path d="M18.5996 24.7998H20.1996V27.1998C20.1996 27.6416 19.8414 27.9998 19.3996 27.9998C18.9578 27.9998 18.5996 27.6416 18.5996 27.1998V24.7998Z" fill="white"/>
+<path d="M26.5996 24.7998H28.1996V27.1998C28.1996 27.6416 27.8414 27.9998 27.3996 27.9998C26.9578 27.9998 26.5996 27.6416 26.5996 27.1998V24.7998Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M26.9089 21.6H19.8913L17.9127 16.3236C17.1282 14.2316 18.6747 12 20.909 12H25.8913C28.1256 12 29.6721 14.2316 28.8876 16.3236L26.9089 21.6ZM20.909 13.6C19.7918 13.6 19.0186 14.7158 19.4108 15.7618L21.0001 20H25.8001L27.3895 15.7618C27.7817 14.7158 27.0085 13.6 25.8913 13.6H20.909Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M38.6566 20.7069L39.9997 19.3638L39.05 18.4141L37.7069 19.7572L36.3639 18.4142L35.4142 19.3639L36.7572 20.7069L35.4141 22.05L36.3638 22.9997L37.7069 21.6566L39.0501 22.9998L39.9998 22.0501L38.6566 20.7069Z" fill="white" fill-opacity="0.6"/>
+</svg>

Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom16.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom16selected.svg


Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom22.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom22selected.svg


+ 9 - 0
public/images/map-icon/mroom4.svg

@@ -0,0 +1,9 @@
+<svg width="36" height="20" viewBox="0 0 36 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 10C0 4.47715 4.47715 0 10 0H26C31.5228 0 36 4.47715 36 10V10C36 15.5228 31.5228 20 26 20H10C4.47715 20 0 15.5228 0 10V10Z" fill="#6659F8" fill-opacity="0.15"/>
+<path d="M24.2197 12.9404H27.1885V14H28.209V12.9404H28.7754V11.9785H28.209V9.93262H27.1885V11.9785H25.3281L27.7354 6.88086H26.5977L24.2197 11.9785V12.9404Z" fill="#9E93F3"/>
+<rect x="7.5" y="10.5" width="7" height="2" rx="0.5" stroke="#6659F8"/>
+<path d="M8 13H9V14.5C9 14.7761 8.77614 15 8.5 15V15C8.22386 15 8 14.7761 8 14.5V13Z" fill="#6659F8"/>
+<path d="M13 13H14V14.5C14 14.7761 13.7761 15 13.5 15V15C13.2239 15 13 14.7761 13 14.5V13Z" fill="#6659F8"/>
+<path d="M12.5 10.5H12.8465L12.9682 10.1756L13.9615 7.52668C14.3292 6.54606 13.6043 5.5 12.557 5.5H9.443C8.39569 5.5 7.67077 6.54606 8.03851 7.52668L9.03184 10.1756L9.1535 10.5H9.5H12.5Z" stroke="#6659F8"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M19.7072 11.0001L20.7072 10.0001L20.0001 9.29297L19.0001 10.293L18.0002 9.29304L17.293 10.0002L18.293 11.0001L17.293 12.0001L18.0001 12.7072L19.0001 11.7072L20.0002 12.7073L20.7073 12.0002L19.7072 11.0001Z" fill="#9E93F3"/>
+</svg>

+ 10 - 0
public/images/map-icon/mroom4selected.svg

@@ -0,0 +1,10 @@
+<svg width="72" height="44" viewBox="0 0 72 44" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M38.4136 39.8558C48.3212 38.6641 56 30.2288 56 20C56 8.9543 47.0457 0 36 0C24.9543 0 16 8.9543 16 20C16 29.4635 22.5728 37.3919 31.4023 39.469L35.0005 44L38.4136 39.8558Z" fill="#6659F8"/>
+<rect width="72" height="40" rx="20" fill="#6659F8"/>
+<path d="M46.3516 24.3047H51.1016V26H52.7344V24.3047H53.6406V22.7656H52.7344V19.4922H51.1016V22.7656H48.125L51.9766 14.6094H50.1562L46.3516 22.7656V24.3047Z" fill="white" fill-opacity="0.6"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M28.2 21.6H18.6V23.2H28.2V21.6ZM18.6 20C17.7163 20 17 20.7163 17 21.6V23.2C17 24.0837 17.7163 24.8 18.6 24.8H28.2C29.0837 24.8 29.8 24.0837 29.8 23.2V21.6C29.8 20.7163 29.0837 20 28.2 20H18.6Z" fill="white"/>
+<path d="M18.5996 24.7998H20.1996V27.1998C20.1996 27.6416 19.8414 27.9998 19.3996 27.9998V27.9998C18.9578 27.9998 18.5996 27.6416 18.5996 27.1998V24.7998Z" fill="white"/>
+<path d="M26.5996 24.7998H28.1996V27.1998C28.1996 27.6416 27.8414 27.9998 27.3996 27.9998V27.9998C26.9578 27.9998 26.5996 27.6416 26.5996 27.1998V24.7998Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M26.9089 21.6H19.8913L17.9127 16.3236C17.1282 14.2316 18.6747 12 20.909 12H25.8913C28.1256 12 29.6721 14.2316 28.8876 16.3236L26.9089 21.6ZM20.909 13.6C19.7918 13.6 19.0186 14.7158 19.4108 15.7618L21.0001 20H25.8001L27.3895 15.7618C27.7817 14.7158 27.0085 13.6 25.8913 13.6H20.909Z" fill="white"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M38.6566 20.7069L39.9997 19.3638L39.05 18.4141L37.7069 19.7572L36.3639 18.4142L35.4142 19.3639L36.7572 20.7069L35.4141 22.05L36.3638 22.9997L37.7069 21.6566L39.0501 22.9998L39.9998 22.0501L38.6566 20.7069Z" fill="white" fill-opacity="0.6"/>
+</svg>

Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom5.svg


Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom52.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom52selected.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom5selected.svg


Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom6.svg


Різницю між файлами не показано, бо вона завелика
+ 9 - 0
public/images/map-icon/mroom64.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom64selected.svg


Різницю між файлами не показано, бо вона завелика
+ 10 - 0
public/images/map-icon/mroom6selected.svg


+ 0 - 0
public/images/map-icon/mroom7.svg


Деякі файли не було показано, через те що забагато файлів було змінено