Browse Source

fix:合并冲突

YaolongHan 4 years ago
parent
commit
297d3c331c
100 changed files with 3969 additions and 33 deletions
  1. 12 0
      README.md
  2. 273 32
      package-lock.json
  3. 15 1
      package.json
  4. 6 0
      src/api/equipmentList.js
  5. 183 0
      src/api/httputils.js
  6. 6 0
      src/api/login.js
  7. 240 0
      src/assets/css/rotation.css
  8. 514 0
      src/assets/css/rotation.less
  9. BIN
      src/assets/imgs/eq.jpg
  10. 17 0
      src/assets/imgs/fzyf.svg
  11. BIN
      src/assets/imgs/matter_floorB2.png
  12. 19 0
      src/assets/imgs/open1.svg
  13. BIN
      src/assets/imgs/survey_pop1.png
  14. BIN
      src/assets/imgs/survey_pop2.png
  15. 16 0
      src/assets/imgs/zhsx.svg
  16. 14 0
      src/assets/imgs/zy.svg
  17. 5 0
      src/components/Editor/index.js
  18. 89 0
      src/components/Editor/src/editor.vue
  19. 5 0
      src/components/Legend/index.js
  20. 197 0
      src/components/Legend/src/legend.vue
  21. 5 0
      src/components/PicLarge/index.js
  22. 103 0
      src/components/PicLarge/src/picLarge.vue
  23. 6 0
      src/components/Rotation/index.js
  24. 62 0
      src/components/Rotation/src/rotation.vue
  25. 309 0
      src/components/Select/Drop.vue
  26. 940 0
      src/components/Select/Select.vue
  27. 23 0
      src/components/Select/clickoutside.js
  28. 24 0
      src/components/Select/directive/clickoutside.js
  29. 8 0
      src/components/Select/directive/dispatchZindex.js
  30. 227 0
      src/components/Select/directive/dom.js
  31. 69 0
      src/components/Select/directive/transfer-dom.js
  32. 8 0
      src/components/Select/dispatchZindex.js
  33. 86 0
      src/components/Select/dropdown.js
  34. 32 0
      src/components/Select/popover.js
  35. 132 0
      src/components/Select/popover.vue
  36. 9 0
      src/components/Select/static/iconSvg/action/AIS.svg
  37. 15 0
      src/components/Select/static/iconSvg/action/AIS_filled.svg
  38. 8 0
      src/components/Select/static/iconSvg/action/BIAM.svg
  39. 1 0
      src/components/Select/static/iconSvg/action/BIAM_filled.svg
  40. 10 0
      src/components/Select/static/iconSvg/action/EHM.svg
  41. 1 0
      src/components/Select/static/iconSvg/action/EHM_filled.svg
  42. 10 0
      src/components/Select/static/iconSvg/action/EMS.svg
  43. 1 0
      src/components/Select/static/iconSvg/action/EMS_filled.svg
  44. 8 0
      src/components/Select/static/iconSvg/action/EOM.svg
  45. 1 0
      src/components/Select/static/iconSvg/action/EOM_filled.svg
  46. 8 0
      src/components/Select/static/iconSvg/action/EQM.svg
  47. 1 0
      src/components/Select/static/iconSvg/action/EQM_filled.svg
  48. 10 0
      src/components/Select/static/iconSvg/action/GC.svg
  49. 1 0
      src/components/Select/static/iconSvg/action/GC_filled.svg
  50. 9 0
      src/components/Select/static/iconSvg/action/HRM.svg
  51. 1 0
      src/components/Select/static/iconSvg/action/HRM_filled.svg
  52. 9 0
      src/components/Select/static/iconSvg/action/ICSOCS.svg
  53. 1 0
      src/components/Select/static/iconSvg/action/ICSOCS_filled.svg
  54. 8 0
      src/components/Select/static/iconSvg/action/IM.svg
  55. 1 0
      src/components/Select/static/iconSvg/action/IM_filled.svg
  56. 10 0
      src/components/Select/static/iconSvg/action/OMS.svg
  57. 1 0
      src/components/Select/static/iconSvg/action/OMS_filled.svg
  58. 8 0
      src/components/Select/static/iconSvg/action/PAM.svg
  59. 1 0
      src/components/Select/static/iconSvg/action/PAM_filled.svg
  60. 9 0
      src/components/Select/static/iconSvg/action/PDM.svg
  61. 1 0
      src/components/Select/static/iconSvg/action/PDM_filled.svg
  62. 11 0
      src/components/Select/static/iconSvg/action/PES.svg
  63. 1 0
      src/components/Select/static/iconSvg/action/PES_filled.svg
  64. 11 0
      src/components/Select/static/iconSvg/action/SCM.svg
  65. 1 0
      src/components/Select/static/iconSvg/action/SCM_filled.svg
  66. 8 0
      src/components/Select/static/iconSvg/action/SRM.svg
  67. 1 0
      src/components/Select/static/iconSvg/action/SRM_filled.svg
  68. 10 0
      src/components/Select/static/iconSvg/action/WFM.svg
  69. 1 0
      src/components/Select/static/iconSvg/action/WFM_filled.svg
  70. 11 0
      src/components/Select/static/iconSvg/action/addCollection.svg
  71. 11 0
      src/components/Select/static/iconSvg/action/adjustTimeRange.svg
  72. 12 0
      src/components/Select/static/iconSvg/action/alarm.svg
  73. 8 0
      src/components/Select/static/iconSvg/action/analysis.svg
  74. 14 0
      src/components/Select/static/iconSvg/action/apply.svg
  75. 1 0
      src/components/Select/static/iconSvg/action/ascendingOrder.svg
  76. 14 0
      src/components/Select/static/iconSvg/action/assign.svg
  77. 14 0
      src/components/Select/static/iconSvg/action/audit.svg
  78. 1 0
      src/components/Select/static/iconSvg/action/backLog.svg
  79. 7 0
      src/components/Select/static/iconSvg/action/boiler.svg
  80. 1 0
      src/components/Select/static/iconSvg/action/bottomSetting.svg
  81. 1 0
      src/components/Select/static/iconSvg/action/calendar.svg
  82. 7 0
      src/components/Select/static/iconSvg/action/camera.svg
  83. 1 0
      src/components/Select/static/iconSvg/action/cease.svg
  84. 1 0
      src/components/Select/static/iconSvg/action/chainRatio.svg
  85. 1 0
      src/components/Select/static/iconSvg/action/close.svg
  86. 1 0
      src/components/Select/static/iconSvg/action/collection.svg
  87. 1 0
      src/components/Select/static/iconSvg/action/complaint.svg
  88. 1 0
      src/components/Select/static/iconSvg/action/complete.svg
  89. 11 0
      src/components/Select/static/iconSvg/action/computerTerminal.svg
  90. 9 0
      src/components/Select/static/iconSvg/action/confirm.svg
  91. 1 0
      src/components/Select/static/iconSvg/action/contrast.svg
  92. 1 0
      src/components/Select/static/iconSvg/action/control.svg
  93. 1 0
      src/components/Select/static/iconSvg/action/coolingRoom.svg
  94. 1 0
      src/components/Select/static/iconSvg/action/coolingStation.svg
  95. 1 0
      src/components/Select/static/iconSvg/action/coolingTower.svg
  96. 1 0
      src/components/Select/static/iconSvg/action/copy.svg
  97. 1 0
      src/components/Select/static/iconSvg/action/cost.svg
  98. 1 0
      src/components/Select/static/iconSvg/action/data.svg
  99. 1 0
      src/components/Select/static/iconSvg/action/delete.svg
  100. 0 0
      src/components/Select/static/iconSvg/action/deleteUpload.svg

+ 12 - 0
README.md

@@ -27,3 +27,15 @@ npm run lint
 ### Customize configuration
 
 See [Configuration Reference](https://cli.vuejs.org/config/).
+
+### 楼层功能-编辑图例备注(弹框)
+
+#### 直接引入<wd-editor></wd-editor> 参数传入宽、高、备注文本
+
+### 轮播组件
+
+#### <rotation :rotationImg='rotationImg'></rotation> rotationImg 为轮播数组
+
+### 机房区域-图片预览
+
+#### <pic-large :imgUrl='imgUrl'></pic-large> imgUrl 图片数组

+ 273 - 32
package-lock.json

@@ -1101,6 +1101,43 @@
             "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
             "dev": true
         },
+        "@saga-web/base": {
+            "version": "2.1.9",
+            "resolved": "http://192.168.200.80:8081/repository/npm-saga/@saga-web/base/-/base-2.1.9.tgz",
+            "integrity": "sha512-DE0rH2m25O3yCK1b1VXSX3tYUHBBEcQnrkjh72SctsFGK2jdS7XBE4+1x8szajvPIOkH05wMoUC2EsmJsZAhvQ=="
+        },
+        "@saga-web/big": {
+            "version": "1.0.6",
+            "resolved": "http://192.168.200.80:8081/repository/npm-saga/@saga-web/big/-/big-1.0.6.tgz",
+            "integrity": "sha512-YG3KlxfUGN1oBlbIUzC2WiGMia6lwlc+oOXubeMvUC1t5EUA+XwVGlOj26opoAacmDrEaGVzcaG3gclWY0uDaQ==",
+            "requires": {
+                "@saga-web/graphy": "2.1.52"
+            }
+        },
+        "@saga-web/draw": {
+            "version": "2.1.80",
+            "resolved": "http://192.168.200.80:8081/repository/npm-saga/@saga-web/draw/-/draw-2.1.80.tgz",
+            "integrity": "sha512-sbVSq8xNuL60Yj0OJAEF96LkhDrQE5lClOiU6n7XAgyreUW03E1YdmM35a8J3rIJ4yOWh+5WK8Tnoc1NpaI4hw==",
+            "requires": {
+                "@saga-web/base": "^2.1.9"
+            }
+        },
+        "@saga-web/feng-map": {
+            "version": "1.0.4",
+            "resolved": "http://192.168.200.80:8081/repository/npm-saga/@saga-web/feng-map/-/feng-map-1.0.4.tgz",
+            "integrity": "sha512-p3QbLTuDkXPSnPQNNp790Of3JbkdshOfEyguW3xj7Y+zzY9BgryR1elwY1zPU0JdayPCPcUvi9bvhRvsmrfd/A==",
+            "requires": {
+                "@saga-web/big": "1.0.6"
+            }
+        },
+        "@saga-web/graphy": {
+            "version": "2.1.52",
+            "resolved": "http://192.168.200.80:8081/repository/npm-saga/@saga-web/graphy/-/graphy-2.1.52.tgz",
+            "integrity": "sha512-65lxavb4btJluSFnZ4KCqOZcsH2ksXfHy6XMWNZzTqxqgjP15ZJvT4uLxBdP+2G8SkStVRNkXIAstnroo9XLjA==",
+            "requires": {
+                "@saga-web/draw": "2.1.80"
+            }
+        },
         "@soda/friendly-errors-webpack-plugin": {
             "version": "1.7.1",
             "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz",
@@ -2294,6 +2331,37 @@
             "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==",
             "dev": true
         },
+        "axios": {
+            "version": "0.19.2",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
+            "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
+            "requires": {
+                "follow-redirects": "1.5.10"
+            },
+            "dependencies": {
+                "debug": {
+                    "version": "3.1.0",
+                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+                    "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "follow-redirects": {
+                    "version": "1.5.10",
+                    "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+                    "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+                    "requires": {
+                        "debug": "=3.1.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+                    "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+                }
+            }
+        },
         "babel-eslint": {
             "version": "10.1.0",
             "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
@@ -3753,6 +3821,26 @@
                 "randomfill": "^1.0.3"
             }
         },
+        "css": {
+            "version": "2.2.4",
+            "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz",
+            "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+            "dev": true,
+            "requires": {
+                "inherits": "^2.0.3",
+                "source-map": "^0.6.1",
+                "source-map-resolve": "^0.5.2",
+                "urix": "^0.1.0"
+            },
+            "dependencies": {
+                "source-map": {
+                    "version": "0.6.1",
+                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+                    "dev": true
+                }
+            }
+        },
         "css-color-names": {
             "version": "0.0.4",
             "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
@@ -3798,6 +3886,15 @@
                 }
             }
         },
+        "css-parse": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz",
+            "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=",
+            "dev": true,
+            "requires": {
+                "css": "^2.0.0"
+            }
+        },
         "css-select": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
@@ -4002,7 +4099,6 @@
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
             "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
-            "dev": true,
             "requires": {
                 "is-arguments": "^1.0.4",
                 "is-date-object": "^1.0.1",
@@ -4021,8 +4117,7 @@
         "deepmerge": {
             "version": "1.5.2",
             "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
-            "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
-            "dev": true
+            "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
         },
         "default-gateway": {
             "version": "5.0.5",
@@ -4152,7 +4247,6 @@
             "version": "1.1.3",
             "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
             "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
-            "dev": true,
             "requires": {
                 "object-keys": "^1.0.12"
             }
@@ -4492,6 +4586,29 @@
             "integrity": "sha512-4lwnxp+ArqOX9hiLwLpwhfqvwzUHFuDgLz4NTiU3lhygUzWtocIJ/5Vix+mWVNE2HQ9aI1k2ncGe5H/0OktMvA==",
             "dev": true
         },
+        "element-ui": {
+            "version": "2.13.2",
+            "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz",
+            "integrity": "sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ==",
+            "requires": {
+                "async-validator": "~1.8.1",
+                "babel-helper-vue-jsx-merge-props": "^2.0.0",
+                "deepmerge": "^1.2.0",
+                "normalize-wheel": "^1.0.1",
+                "resize-observer-polyfill": "^1.5.0",
+                "throttle-debounce": "^1.0.1"
+            },
+            "dependencies": {
+                "async-validator": {
+                    "version": "1.8.5",
+                    "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
+                    "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+                    "requires": {
+                        "babel-runtime": "6.x"
+                    }
+                }
+            }
+        },
         "elliptic": {
             "version": "6.5.2",
             "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
@@ -4607,7 +4724,6 @@
             "version": "1.17.5",
             "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
             "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
-            "dev": true,
             "requires": {
                 "es-to-primitive": "^1.2.1",
                 "function-bind": "^1.1.1",
@@ -4626,7 +4742,6 @@
             "version": "1.2.1",
             "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
             "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-            "dev": true,
             "requires": {
                 "is-callable": "^1.1.4",
                 "is-date-object": "^1.0.1",
@@ -5071,8 +5186,7 @@
         "extend": {
             "version": "3.0.2",
             "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-            "dev": true
+            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
         },
         "extend-shallow": {
             "version": "3.0.2",
@@ -5183,6 +5297,11 @@
             "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
             "dev": true
         },
+        "fast-diff": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz",
+            "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
+        },
         "fast-glob": {
             "version": "2.2.7",
             "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
@@ -5241,6 +5360,12 @@
                 "websocket-driver": ">=0.5.1"
             }
         },
+        "fengmap": {
+            "version": "2.5.3",
+            "resolved": "https://registry.npmjs.org/fengmap/-/fengmap-2.5.3.tgz",
+            "integrity": "sha512-l/9XANZ9FXHbT4m04qjLg1t9UIalghuxUfOECMFIdKPgLISZr3dpJkxvew11Qz8MrPVSzS5pCNQtzCdl34zB2w==",
+            "dev": true
+        },
         "figgy-pudding": {
             "version": "3.5.2",
             "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
@@ -5516,8 +5641,7 @@
         "function-bind": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-            "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-            "dev": true
+            "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
         },
         "functional-red-black-tree": {
             "version": "1.0.1",
@@ -5655,7 +5779,6 @@
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
             "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-            "dev": true,
             "requires": {
                 "function-bind": "^1.1.1"
             }
@@ -5686,8 +5809,7 @@
         "has-symbols": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-            "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
-            "dev": true
+            "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
         },
         "has-value": {
             "version": "1.0.0",
@@ -6347,8 +6469,7 @@
         "is-arguments": {
             "version": "1.0.4",
             "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
-            "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
-            "dev": true
+            "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA=="
         },
         "is-arrayish": {
             "version": "0.2.1",
@@ -6375,8 +6496,7 @@
         "is-callable": {
             "version": "1.1.5",
             "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
-            "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
-            "dev": true
+            "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q=="
         },
         "is-ci": {
             "version": "1.2.1",
@@ -6424,8 +6544,7 @@
         "is-date-object": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
-            "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
-            "dev": true
+            "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g=="
         },
         "is-descriptor": {
             "version": "0.1.6",
@@ -6564,7 +6683,6 @@
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
             "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
-            "dev": true,
             "requires": {
                 "has": "^1.0.3"
             }
@@ -6594,7 +6712,6 @@
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
             "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
-            "dev": true,
             "requires": {
                 "has-symbols": "^1.0.1"
             }
@@ -7010,6 +7127,12 @@
             "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
             "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
         },
+        "lodash.clonedeep": {
+            "version": "4.5.0",
+            "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+            "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+            "dev": true
+        },
         "lodash.defaultsdeep": {
             "version": "4.6.1",
             "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
@@ -7625,6 +7748,11 @@
             "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
             "dev": true
         },
+        "normalize-wheel": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+            "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+        },
         "npm-run-path": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -7700,14 +7828,12 @@
         "object-inspect": {
             "version": "1.7.0",
             "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
-            "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
-            "dev": true
+            "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw=="
         },
         "object-is": {
             "version": "1.1.2",
             "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
             "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.17.5"
@@ -7716,8 +7842,7 @@
         "object-keys": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
-            "dev": true
+            "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
         },
         "object-visit": {
             "version": "1.0.1",
@@ -7732,7 +7857,6 @@
             "version": "4.1.0",
             "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
             "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.2",
                 "function-bind": "^1.1.1",
@@ -7976,6 +8100,11 @@
                 "no-case": "^2.2.0"
             }
         },
+        "parchment": {
+            "version": "1.1.4",
+            "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
+            "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
+        },
         "parent-module": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -8229,6 +8358,12 @@
                 "ts-pnp": "^1.1.6"
             }
         },
+        "polybooljs": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.0.tgz",
+            "integrity": "sha1-tDkMLgedTCYtOyUExiiNlbp6R1g=",
+            "dev": true
+        },
         "portfinder": {
             "version": "1.0.26",
             "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz",
@@ -9039,6 +9174,41 @@
             "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
             "dev": true
         },
+        "quill": {
+            "version": "1.3.7",
+            "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz",
+            "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
+            "requires": {
+                "clone": "^2.1.1",
+                "deep-equal": "^1.0.1",
+                "eventemitter3": "^2.0.3",
+                "extend": "^3.0.2",
+                "parchment": "^1.1.4",
+                "quill-delta": "^3.6.2"
+            },
+            "dependencies": {
+                "clone": {
+                    "version": "2.1.2",
+                    "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+                    "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+                },
+                "eventemitter3": {
+                    "version": "2.0.3",
+                    "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
+                    "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo="
+                }
+            }
+        },
+        "quill-delta": {
+            "version": "3.6.3",
+            "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz",
+            "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
+            "requires": {
+                "deep-equal": "^1.0.1",
+                "extend": "^3.0.2",
+                "fast-diff": "1.1.2"
+            }
+        },
         "raf": {
             "version": "3.4.1",
             "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
@@ -9165,7 +9335,6 @@
             "version": "1.3.0",
             "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
             "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.17.0-next.1"
@@ -10237,7 +10406,6 @@
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
             "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.17.5"
@@ -10247,7 +10415,6 @@
             "version": "2.1.2",
             "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
             "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.17.5",
@@ -10258,7 +10425,6 @@
             "version": "2.1.2",
             "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
             "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.17.5",
@@ -10269,7 +10435,6 @@
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
             "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
-            "dev": true,
             "requires": {
                 "define-properties": "^1.1.3",
                 "es-abstract": "^1.17.5"
@@ -10349,6 +10514,62 @@
                 }
             }
         },
+        "stylus": {
+            "version": "0.54.7",
+            "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz",
+            "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==",
+            "dev": true,
+            "requires": {
+                "css-parse": "~2.0.0",
+                "debug": "~3.1.0",
+                "glob": "^7.1.3",
+                "mkdirp": "~0.5.x",
+                "safer-buffer": "^2.1.2",
+                "sax": "~1.2.4",
+                "semver": "^6.0.0",
+                "source-map": "^0.7.3"
+            },
+            "dependencies": {
+                "debug": {
+                    "version": "3.1.0",
+                    "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+                    "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+                    "dev": true,
+                    "requires": {
+                        "ms": "2.0.0"
+                    }
+                },
+                "ms": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+                    "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+                    "dev": true
+                },
+                "semver": {
+                    "version": "6.3.0",
+                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+                    "dev": true
+                },
+                "source-map": {
+                    "version": "0.7.3",
+                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+                    "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+                    "dev": true
+                }
+            }
+        },
+        "stylus-loader": {
+            "version": "3.0.2",
+            "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz",
+            "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+            "dev": true,
+            "requires": {
+                "loader-utils": "^1.0.2",
+                "lodash.clonedeep": "^4.5.0",
+                "when": "~3.6.x"
+            }
+        },
         "supports-color": {
             "version": "5.5.0",
             "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -10527,6 +10748,11 @@
                 "neo-async": "^2.6.0"
             }
         },
+        "throttle-debounce": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+            "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
+        },
         "through": {
             "version": "2.3.8",
             "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -11099,6 +11325,15 @@
                 }
             }
         },
+        "vue-quill-editor": {
+            "version": "3.0.6",
+            "resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz",
+            "integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==",
+            "requires": {
+                "object-assign": "^4.1.1",
+                "quill": "^1.3.4"
+            }
+        },
         "vue-ref": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz",
@@ -11801,6 +12036,12 @@
             "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
             "dev": true
         },
+        "when": {
+            "version": "3.6.4",
+            "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
+            "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=",
+            "dev": true
+        },
         "which": {
             "version": "1.3.1",
             "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",

+ 15 - 1
package.json

@@ -8,11 +8,20 @@
         "lint": "vue-cli-service lint"
     },
     "dependencies": {
+        "@saga-web/base": "2.1.9",
+        "@saga-web/big": "1.0.6",
+        "@saga-web/draw": "2.1.80",
+        "@saga-web/feng-map": "1.0.4",
+        "@saga-web/graphy": "2.1.52",
         "ant-design-vue": "^1.4.10",
+        "axios": "^0.19.2",
         "core-js": "^3.4.4",
+        "element-ui": "^2.13.2",
+        "quill": "^1.3.7",
         "vue": "^2.6.10",
+        "vue-quill-editor": "^3.0.6",
         "vue-router": "^3.1.3",
-        "vuex": "^3.1.2"
+        "vuex": "^3.4.0"
     },
     "devDependencies": {
         "@vue/cli-plugin-babel": "^4.1.0",
@@ -24,8 +33,13 @@
         "babel-plugin-component": "^1.1.1",
         "eslint": "^5.16.0",
         "eslint-plugin-vue": "^5.0.0",
+        "vue-svg-loader": "^0.15.0",
+        "fengmap": "^2.5.3",
         "less": "^3.0.4",
         "less-loader": "^5.0.0",
+        "polybooljs": "^1.2.0",
+        "stylus": "^0.54.7",
+        "stylus-loader": "^3.0.2",
         "vue-template-compiler": "^2.6.10"
     }
 }

+ 6 - 0
src/api/equipmentList.js

@@ -0,0 +1,6 @@
+// 设备设施设备清单接口
+import httputils from "@/api/httputils"
+
+export function queryEquipmentList({ getParams }) {
+    return httputils.getJson(`/api/plaza/floor`, getParams)
+}

+ 183 - 0
src/api/httputils.js

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

+ 6 - 0
src/api/login.js

@@ -0,0 +1,6 @@
+// 登录校验接口
+import httputils from "@/api/httputils"
+
+export function login({ getParams }) {
+    return httputils.getJson(`/api/auth/check`, getParams)
+}

+ 240 - 0
src/assets/css/rotation.css

@@ -0,0 +1,240 @@
+.overview {
+  background: #f2f5f7;
+  padding: 16px 20px 20px 20px;
+  height: 100%;
+  width: 100%;
+}
+.overview .view-title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+.overview .view-title nav {
+  display: flex;
+  align-items: center;
+}
+.overview .view-title nav span:nth-of-type(1) {
+  width: 3px;
+  height: 16px;
+  background: linear-gradient(180deg, #369cf7 0%, #025baa 100%);
+  border-radius: 2px;
+  margin-right: 4px;
+  display: inline-block;
+}
+.overview .view-title nav span:nth-of-type(2) {
+  height: 24px;
+  font-size: 16px;
+  font-family: MicrosoftYaHeiSemibold;
+  font-weight: bold;
+  color: #1f2429;
+  line-height: 21px;
+}
+.overview .view-title .view-button {
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  line-height: 22px;
+  width: 106px;
+  height: 32px;
+  background: linear-gradient(180deg, #369cf7 0%, #025baa 100%);
+  font-size: 14px;
+  color: #ffffff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  cursor: pointer;
+}
+.overview .view-title .view-button img {
+  display: inline-block;
+  height: 16px;
+  width: 16px;
+  margin-right: 6px;
+}
+.overview .view-box {
+  height: calc(100% - 45px);
+  display: flex;
+  justify-content: space-between;
+}
+.overview .view-box .view-left {
+  width: 58.7%;
+  margin-right: 10px;
+  display: flex;
+  flex-direction: column;
+}
+.overview .view-box .view-left .lb-left {
+  width: 100%;
+  flex: 1;
+  margin-top: 12px;
+  margin-bottom: 10px;
+  position: relative;
+}
+.overview .view-box .view-left .lb-left .lb-icon {
+  z-index: 99;
+  position: absolute;
+  top: 0;
+  right: 2px;
+  width: 32px;
+  height: 32px;
+  background: rgba(0, 0, 0, 0.6);
+  border-radius: 0px 4px 0px 4px;
+}
+.overview .view-box .view-left .lb-left .lb-img {
+  z-index: 101;
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 8px;
+  right: 10px;
+}
+.overview .view-box .view-left .lb-bottom {
+  height: 34%;
+  background: #ffffff;
+  padding: 16px;
+}
+.overview .view-box .view-left .lb-bottom nav {
+  width: 161px;
+  height: 32px;
+  display: flex;
+  align-items: center;
+  background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+  margin-bottom: 12px;
+}
+.overview .view-box .view-left .lb-bottom nav span:nth-of-type(1) {
+  width: 2px;
+  height: 16px;
+  background: #025baa;
+  margin-right: 6px;
+  display: inline-block;
+}
+.overview .view-box .view-left .lb-bottom nav span:nth-of-type(2) {
+  width: 107px;
+  height: 22px;
+  font-size: 14px;
+  font-family: MicrosoftYaHeiSemibold;
+  font-weight: bold;
+  color: #025baa;
+  line-height: 19px;
+}
+.overview .view-box .view-left .lb-bottom .place-p1 {
+  height: 24px;
+  font-size: 16px;
+  font-family: MicrosoftYaHeiSemibold;
+  color: #1f2429;
+  line-height: 21px;
+  margin-bottom: 8px;
+}
+.overview .view-box .view-left .lb-bottom .place-p2 {
+  margin: 16px 0;
+  height: 22px;
+  font-size: 14px;
+  font-family: MicrosoftYaHei;
+  color: #1f2429;
+  line-height: 19px;
+  display: flex;
+  align-items: center;
+  margin-bottom: 12px;
+  margin-top: 0px;
+}
+.overview .view-box .view-left .lb-bottom .place-p2 img {
+  margin-right: 3px;
+}
+.overview .view-box .view-left .lb-bottom .place-bottom {
+  display: flex;
+}
+.overview .view-box .view-left .lb-bottom .place-bottom .place-box {
+  width: 50%;
+  display: flex;
+}
+.overview .view-box .view-left .lb-bottom .place-bottom .place-box .place-left {
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+}
+.overview .view-box .view-left .lb-bottom .place-bottom .place-box .place-left span {
+  display: inline-block;
+  width: 56px;
+  margin-right: 8px;
+  font-size: 12px;
+  font-family: MicrosoftYaHei;
+  color: #646c73;
+  line-height: 22px;
+}
+.overview .view-box .view-left .lb-bottom .place-bottom .place-box .place-right {
+  display: flex;
+  flex-direction: column;
+  justify-content: flex-start;
+}
+.overview .view-box .view-left .lb-bottom .place-bottom .place-box .place-right span {
+  display: inline-block;
+  font-size: 12px;
+  font-family: MicrosoftYaHei;
+  color: #1f2429;
+  line-height: 22px;
+}
+.overview .view-box .view-right {
+  flex: 1;
+}
+.overview .view-box .view-right .view-right-box {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+}
+.overview .view-box .view-right .view-right-box .lb-right {
+  height: 46%;
+  margin-top: 12px;
+  margin-bottom: 10px;
+  position: relative;
+}
+.overview .view-box .view-right .view-right-box .lb-right .lb-icon {
+  z-index: 99;
+  position: absolute;
+  top: 0;
+  right: 2px;
+  width: 32px;
+  height: 32px;
+  background: rgba(0, 0, 0, 0.6);
+  border-radius: 0px 4px 0px 4px;
+}
+.overview .view-box .view-right .view-right-box .lb-right .lb-img {
+  z-index: 101;
+  width: 16px;
+  height: 16px;
+  position: absolute;
+  top: 8px;
+  right: 10px;
+}
+.overview .view-box .view-right .view-right-box .lb-right-bottom {
+  flex: 1;
+  background: #ffffff;
+  padding: 20px 16px;
+}
+.overview .view-box .view-right .view-right-box .lb-right-bottom nav {
+  width: 161px;
+  height: 32px;
+  display: flex;
+  align-items: center;
+  background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+  margin-bottom: 16px;
+}
+.overview .view-box .view-right .view-right-box .lb-right-bottom nav span:nth-of-type(1) {
+  width: 2px;
+  height: 16px;
+  background: #025baa;
+  margin-right: 6px;
+  display: inline-block;
+}
+.overview .view-box .view-right .view-right-box .lb-right-bottom nav span:nth-of-type(2) {
+  width: 107px;
+  height: 22px;
+  font-size: 14px;
+  font-family: MicrosoftYaHeiSemibold;
+  font-weight: bold;
+  color: #025baa;
+  line-height: 19px;
+}
+.overview .view-box .view-right .view-right-box .lb-right-bottom .view-right-bottom {
+  overflow: auto;
+}
+@media only screen and (min-width: 768px) and (max-width: 1366px) {
+}
+@media only screen and (min-width: 1367px) {
+}

+ 514 - 0
src/assets/css/rotation.less

@@ -0,0 +1,514 @@
+.overview {
+    background: #f2f5f7;
+    padding: 16px 20px 20px 20px;
+    height: 100%;
+    width: 100%;
+    .view-title {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        nav {
+            display: flex;
+            align-items: center;
+            span:nth-of-type(1) {
+                width: 3px;
+                height: 16px;
+                background: linear-gradient(180deg, rgba(54, 156, 247, 1) 0%, rgba(2, 91, 170, 1) 100%);
+                border-radius: 2px;
+                margin-right: 4px;
+                display: inline-block;
+            }
+            span:nth-of-type(2) {
+                height: 24px;
+                font-size: 16px;
+                font-family: MicrosoftYaHeiSemibold;
+                font-weight: bold;
+                color: #1f2429;
+                line-height: 21px;
+            }
+        }
+        .view-button {
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            line-height: 22px;
+            width: 106px;
+            height: 32px;
+            background: linear-gradient(180deg, rgba(54, 156, 247, 1) 0%, rgba(2, 91, 170, 1) 100%);
+            font-size: 14px;
+            color: #ffffff;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            cursor: pointer;
+            img {
+                display: inline-block;
+                height: 16px;
+                width: 16px;
+                margin-right: 6px;
+            }
+        }
+    }
+    .view-box {
+        height: calc(100% - 45px);
+        display: flex;
+        justify-content: space-between;
+        .view-left {
+            width: 58.7%;
+            margin-right: 10px;
+            display: flex;
+            flex-direction: column;
+            .lb-left {
+                width: 100%;
+                flex: 1;
+                margin-top: 12px;
+                margin-bottom: 10px;
+                position: relative;
+                .lb-icon {
+                    z-index: 99;
+                    position: absolute;
+                    top: 0;
+                    right: 2px;
+                    width: 32px;
+                    height: 32px;
+                    background: rgba(0, 0, 0, 0.6);
+                    border-radius: 0px 4px 0px 4px;
+                }
+                .lb-img {
+                    z-index: 101;
+                    width: 16px;
+                    height: 16px;
+                    position: absolute;
+                    top: 8px;
+                    right: 10px;
+                }
+            }
+            .lb-bottom {
+                height: 34%;
+                background: #ffffff;
+                padding: 16px;
+                nav {
+                    width: 161px;
+                    height: 32px;
+                    display: flex;
+                    align-items: center;
+                    background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+                    margin-bottom: 12px;
+                    span:nth-of-type(1) {
+                        width: 2px;
+                        height: 16px;
+                        background: #025baa;
+                        margin-right: 6px;
+                        display: inline-block;
+                    }
+                    span:nth-of-type(2) {
+                        width: 107px;
+                        height: 22px;
+                        font-size: 14px;
+                        font-family: MicrosoftYaHeiSemibold;
+                        font-weight: bold;
+                        color: #025baa;
+                        line-height: 19px;
+                    }
+                }
+                .place-p1 {
+                    height: 24px;
+                    font-size: 16px;
+                    font-family: MicrosoftYaHeiSemibold;
+                    color: rgba(31, 36, 41, 1);
+                    line-height: 21px;
+                    margin-bottom: 8px;
+                }
+                .place-p2 {
+                    margin: 16px 0;
+                    height: 22px;
+                    font-size: 14px;
+                    font-family: MicrosoftYaHei;
+                    color: rgba(31, 36, 41, 1);
+                    line-height: 19px;
+                    display: flex;
+                    align-items: center;
+                    margin-bottom: 12px;
+                    margin-top: 0px;
+                    img {
+                        margin-right: 3px;
+                    }
+                }
+                .place-bottom {
+                    display: flex;
+                    .place-box {
+                        width: 50%;
+                        display: flex;
+                        .place-left {
+                            display: flex;
+                            align-items: center;
+                            flex-direction: column;
+                            span {
+                                display: inline-block;
+                                width: 56px;
+                                margin-right: 8px;
+                                font-size: 12px;
+                                font-family: MicrosoftYaHei;
+                                color: rgba(100, 108, 115, 1);
+                                line-height: 22px;
+                            }
+                        }
+                        .place-right {
+                            display: flex;
+                            flex-direction: column;
+                            justify-content: flex-start;
+                            span {
+                                display: inline-block;
+                                font-size: 12px;
+                                font-family: MicrosoftYaHei;
+                                color: rgba(31, 36, 41, 1);
+                                line-height: 22px;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        .view-right {
+            flex: 1;
+            .view-right-box {
+                height: 100%;
+                display: flex;
+                flex-direction: column;
+                .lb-right {
+                    height: 46%;
+                    margin-top: 12px;
+                    margin-bottom: 10px;
+                    position: relative;
+                    .lb-icon {
+                        z-index: 99;
+                        position: absolute;
+                        top: 0;
+                        right: 2px;
+                        width: 32px;
+                        height: 32px;
+                        background: rgba(0, 0, 0, 0.6);
+                        border-radius: 0px 4px 0px 4px;
+                    }
+                    .lb-img {
+                        z-index: 101;
+                        width: 16px;
+                        height: 16px;
+                        position: absolute;
+                        top: 8px;
+                        right: 10px;
+                    }
+                }
+                .lb-right-bottom {
+                    flex: 1;
+                    background: #ffffff;
+                    padding: 20px 16px;
+                    nav {
+                        width: 161px;
+                        height: 32px;
+                        display: flex;
+                        align-items: center;
+                        background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+                        margin-bottom: 16px;
+                        span:nth-of-type(1) {
+                            width: 2px;
+                            height: 16px;
+                            background: #025baa;
+                            margin-right: 6px;
+                            display: inline-block;
+                        }
+                        span:nth-of-type(2) {
+                            width: 107px;
+                            height: 22px;
+                            font-size: 14px;
+                            font-family: MicrosoftYaHeiSemibold;
+                            font-weight: bold;
+                            color: #025baa;
+                            line-height: 19px;
+                        }
+                    }
+                    .view-right-bottom {
+                        overflow: auto;
+                    }
+                }
+            }
+        }
+    }
+}
+
+// 自适应1366*768 和1920*1080 的 暂时不用
+@media only screen and (min-width: 768px) and (max-width: 1366px) {
+    // .view-left {
+    //     flex: 1;
+    //     margin-right: 16px;
+    //     .view-left-box {
+    //         display: flex;
+    //         flex-direction: column;
+    //         .view-left-top {
+    //             height: 336px;
+    //             margin-bottom: 16px;
+    //             display: flex;
+    //             justify-content: space-between;
+    //             .view-top-imgL {
+    //                 margin-right: 16px;
+    //                 width: 504px;
+    //                 height: 336px;
+    //             }
+    //             .view-top-imgR {
+    //                 width: 336px;
+    //                 height: 336px;
+    //             }
+    //         }
+    //         .view-left-bottom {
+    //             background: #ffffff;
+    //             padding: 16px;
+    //             nav {
+    //                 width: 161px;
+    //                 height: 32px;
+    //                 display: flex;
+    //                 align-items: center;
+    //                 background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+    //                 margin-bottom: 16px;
+    //                 span:nth-of-type(1) {
+    //                     width: 2px;
+    //                     height: 16px;
+    //                     background: #025baa;
+    //                     margin-right: 6px;
+    //                     display: inline-block;
+    //                 }
+    //                 span:nth-of-type(2) {
+    //                     width: 107px;
+    //                     height: 22px;
+    //                     font-size: 14px;
+    //                     font-family: MicrosoftYaHeiSemibold;
+    //                     color: #025baa;
+    //                     line-height: 19px;
+    //                 }
+    //             }
+    //             .place-p {
+    //                 margin: 16px 0;
+    //                 height: 22px;
+    //                 font-size: 14px;
+    //                 font-family: MicrosoftYaHei;
+    //                 color: rgba(31, 36, 41, 1);
+    //                 line-height: 19px;
+    //                 display: flex;
+    //                 align-items: center;
+    //                 img {
+    //                     margin-right: 3px;
+    //                 }
+    //             }
+    //             .place-bottom {
+    //                 display: flex;
+    //                 .place-bottom-row {
+    //                     display: flex;
+    //                     justify-content: space-around;
+    //                     div {
+    //                         span {
+    //                             display: block;
+    //                         }
+    //                     }
+    //                     div:nth-of-type(1) {
+    //                         margin-right: 16px;
+    //                         span {
+    //                             width: 56px;
+    //                             font-size: 14px;
+    //                             font-family: MicrosoftYaHei;
+    //                             color: rgba(100, 108, 115, 1);
+    //                             line-height: 32px;
+    //                         }
+    //                     }
+    //                     div:nth-of-type(2) {
+    //                         margin-right: 16px;
+    //                         span {
+    //                             font-size: 14px;
+    //                             font-family: MicrosoftYaHei;
+    //                             color: rgba(31, 36, 41, 1);
+    //                             line-height: 32px;
+    //                         }
+    //                     }
+    //                 }
+    //             }
+    //         }
+    //     }
+    // }
+    // .view-right {
+    //     padding: 16px;
+    //     max-width: 424px;
+    //     nav {
+    //         width: 161px;
+    //         height: 32px;
+    //         display: flex;
+    //         align-items: center;
+    //         background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+    //         margin-bottom: 16px;
+    //         span:nth-of-type(1) {
+    //             width: 2px;
+    //             height: 16px;
+    //             background: #025baa;
+    //             margin-right: 6px;
+    //             display: inline-block;
+    //         }
+    //         span:nth-of-type(2) {
+    //             width: 107px;
+    //             height: 22px;
+    //             font-size: 14px;
+    //             font-family: MicrosoftYaHeiSemibold;
+    //             color: #025baa;
+    //             line-height: 19px;
+    //         }
+    //     }
+    //     .view-right-bottom {
+    //         display: flex;
+    //         font-size: 14px;
+    //         font-family: MicrosoftYaHei;
+    //         line-height: 40px;
+    //         .view-right-bottom-l {
+    //             min-width: 42px;
+    //             margin-right: 16px;
+    //             color: #646c73;
+    //         }
+    //         .view-right-bottom-r {
+    //             color: #1f2429;
+    //         }
+    //     }
+    // }
+}
+@media only screen and (min-width: 1367px) {
+    // .view-left {
+    //     flex: 1;
+    //     margin-right: 20px;
+    //     .view-left-box {
+    //         display: flex;
+    //         flex-direction: column;
+    //         background: #fff2f5f7;
+    //         .view-left-top {
+    //             height: 498px;
+    //             margin-bottom: 20px;
+    //             display: flex;
+    //             justify-content: space-between;
+    //             .view-top-imgL {
+    //                 margin-right: 20px;
+    //                 max-width: 748px;
+    //                 max-height: 498px;
+    //             }
+    //             .view-top-imgR {
+    //                 max-width: 498px;
+    //                 max-height: 498px;
+    //             }
+    //         }
+    //         .view-left-bottom {
+    //             background: #ffffff;
+    //             padding: 20px;
+    //             nav {
+    //                 width: 181px;
+    //                 height: 40px;
+    //                 display: flex;
+    //                 align-items: center;
+    //                 background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+    //                 margin-bottom: 24px;
+    //                 span:nth-of-type(1) {
+    //                     width: 2px;
+    //                     height: 24px;
+    //                     background: #025baa;
+    //                     margin-right: 12px;
+    //                     display: inline-block;
+    //                 }
+    //                 span:nth-of-type(2) {
+    //                     width: 135px;
+    //                     height: 22px;
+    //                     font-size: 18px;
+    //                     font-family: MicrosoftYaHeiSemibold;
+    //                     color: #025baa;
+    //                     line-height: 24px;
+    //                 }
+    //             }
+    //             .place-p {
+    //                 margin: 20px 0;
+    //                 height: 24px;
+    //                 font-size: 16px;
+    //                 font-family: MicrosoftYaHei;
+    //                 color: rgba(31, 36, 41, 1);
+    //                 line-height: 21px;
+    //                 display: flex;
+    //                 align-items: center;
+    //                 img {
+    //                     margin-right: 3px;
+    //                 }
+    //             }
+    //             .place-bottom {
+    //                 display: flex;
+    //                 .place-bottom-row {
+    //                     display: flex;
+    //                     justify-content: space-around;
+    //                     div {
+    //                         span {
+    //                             display: block;
+    //                         }
+    //                     }
+    //                     div:nth-of-type(1) {
+    //                         margin-right: 16px;
+    //                         span {
+    //                             width: 76px;
+    //                             font-size: 16px;
+    //                             font-family: MicrosoftYaHei;
+    //                             color: rgba(100, 108, 115, 1);
+    //                             line-height: 40px;
+    //                         }
+    //                     }
+    //                     div:nth-of-type(2) {
+    //                         margin-right: 20px;
+    //                         span {
+    //                             font-size: 16px;
+    //                             font-family: MicrosoftYaHei;
+    //                             color: rgba(31, 36, 41, 1);
+    //                             line-height: 40px;
+    //                         }
+    //                     }
+    //                 }
+    //             }
+    //         }
+    //     }
+    // }
+    // .view-right {
+    //     padding: 20px;
+    //     min-width: 555px;
+    //     nav {
+    //         width: 181px;
+    //         height: 40px;
+    //         display: flex;
+    //         align-items: center;
+    //         background: linear-gradient(270deg, rgba(54, 156, 247, 0) 0%, rgba(2, 91, 170, 0.2) 100%);
+    //         margin-bottom: 24px;
+    //         span:nth-of-type(1) {
+    //             width: 2px;
+    //             height: 24px;
+    //             background: #025baa;
+    //             margin-right: 12px;
+    //             display: inline-block;
+    //         }
+    //         span:nth-of-type(2) {
+    //             width: 135px;
+    //             height: 22px;
+    //             font-size: 18px;
+    //             font-family: MicrosoftYaHeiSemibold;
+    //             color: #025baa;
+    //             line-height: 24px;
+    //         }
+    //     }
+    //     .view-right-bottom {
+    //         display: flex;
+    //         font-size: 16px;
+    //         font-family: MicrosoftYaHei;
+    //         line-height: 40px;
+    //         padding-left: 4px;
+    //         .view-right-bottom-l {
+    //             min-width: 42px;
+    //             margin-right: 30px;
+    //             color: #646c73;
+    //         }
+    //         .view-right-bottom-r {
+    //             color: #1f2429;
+    //         }
+    //     }
+    // }
+}

BIN
src/assets/imgs/eq.jpg


File diff suppressed because it is too large
+ 17 - 0
src/assets/imgs/fzyf.svg


BIN
src/assets/imgs/matter_floorB2.png


File diff suppressed because it is too large
+ 19 - 0
src/assets/imgs/open1.svg


BIN
src/assets/imgs/survey_pop1.png


BIN
src/assets/imgs/survey_pop2.png


File diff suppressed because it is too large
+ 16 - 0
src/assets/imgs/zhsx.svg


File diff suppressed because it is too large
+ 14 - 0
src/assets/imgs/zy.svg


+ 5 - 0
src/components/Editor/index.js

@@ -0,0 +1,5 @@
+import WdEditor from './src/editor.vue'
+WdEditor.install = function(Vue) {
+    Vue.component(WdEditor.name, WdEditor)
+}
+export default WdEditor

+ 89 - 0
src/components/Editor/src/editor.vue

@@ -0,0 +1,89 @@
+/**
+*@author:Guoxiaohuan
+*@date:2020.05.27
+*@info:编辑图例备注
+*/
+<template>
+    <div class='edit_container' :style='`width:${width};height:${height}`'>
+        <quill-editor
+            v-model='content'
+            ref='wdQuillEditor'
+            :options='editorOption'
+            @blur='onEditorBlur($event)'
+            @focus='onEditorFocus($event)'
+            @change='onEditorChange($event)'
+            @ready='onEditorReady($event)'
+        ></quill-editor>
+        <p class='p1'>{{valLen||text.length}}/200</p>
+    </div>
+</template>
+<script>
+export default {
+    name: 'WdEditor',
+    props: {
+        width: {
+            type: [String, Number],
+            default: 500
+        },
+        height: {
+            type: [String, Number],
+            default: 500
+        },
+        text: {
+            type: String
+        }
+    },
+    computed: {},
+    data() {
+        return {
+            valLen: 0,
+            inputVal: this.text.length,
+            content: '注:' + this.text,
+            editorOption: {
+                modules: {
+                    toolbar: [['bold', 'underline'], [{ color: [] }]]
+                },
+                theme: 'snow',
+                placeholder: '请输入内容...'
+            }
+        }
+    },
+    methods: {
+        onEditorReady(editor) {},
+        onEditorBlur(val) {},
+        onEditorFocus(val) {},
+        onEditorChange(val) {
+            val.quill.deleteText(200, 6)
+            if (this.content === '') {
+                this.valLen = 0
+            } else {
+                this.valLen = val.quill.getLength() - 1
+            }
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.edit_container {
+    margin: 10px 0 0;
+    .p1 {
+        position: absolute;
+        bottom: 65px;
+        right: 30px;
+        margin-bottom: 0;
+    }
+}
+.quill-editor {
+    height: 130px;
+}
+</style>
+<style lang="less">
+.edit_container {
+    .ql-editor {
+        padding: 12px 15px 4px;
+    }
+    .ql-toolbar.ql-snow .ql-formats {
+        margin-right: 0px;
+    }
+}
+</style>

+ 5 - 0
src/components/Legend/index.js

@@ -0,0 +1,5 @@
+import Legend from './src/legend.vue'
+Legend.install = function(Vue) {
+    Vue.component(Legend.name, Legend)
+}
+export default Legend

+ 197 - 0
src/components/Legend/src/legend.vue

@@ -0,0 +1,197 @@
+<template>
+    <div class='legend-container'>
+        <div class='legend' @click='show=!show'>图例</div>
+        <el-collapse-transition>
+            <div v-show='show' class='legend-tab'>
+                <div class='legend-table'>
+                    <el-table
+                        ref='multipleTable'
+                        :data='tableData'
+                        tooltip-effect='dark'
+                        style='width: 100%'
+                        @selection-change='handleSelectionChange'
+                    >
+                        <el-table-column type='selection' width='55'></el-table-column>
+                        <el-table-column prop='project' label='项目' width='100'></el-table-column>
+                        <el-table-column prop='num' label='数量'></el-table-column>
+                        <el-table-column prop='type' label='单位' width='70'></el-table-column>
+                        <el-table-column prop='lege' label='图例'>
+                            <template slot-scope='scope'>{{ scope.row.lege }}</template>
+                        </el-table-column>
+                    </el-table>
+                    <div class='swich'>
+                        <el-switch v-model='value1'></el-switch>
+                        <span>隐藏数量为0的项目</span>
+                    </div>
+                    <div class='remark'>
+                        <span style='font-weight:bold'>注:</span>
+                        1.主要设备房包括:制冷机房、生活水泵房、消防泵房
+                        2.图例后 的数字,代表此位置的数量
+                        3.
+                    </div>
+                    <div class='legendFoot'>
+                        <el-button size='mini'>取消</el-button>
+                        <el-button size='mini' type='primary'>保存</el-button>
+                    </div>
+                </div>
+            </div>
+        </el-collapse-transition>
+        <edit-list></edit-list>
+    </div>
+</template>
+<script>
+import editList from '@/components/edit.vue'
+
+export default {
+    name: 'Legend',
+    data() {
+        return {
+            show: true,
+            value1: true,
+            dataSelect2: [
+                { id: 'test1', name: '选择项' },
+                { id: 'test2', name: '单平米' },
+                { id: 'test3', name: '下级分项' },
+                { id: 'test4', name: '滑动平均滑动平均' }
+            ],
+            tableData: [
+                {
+                    project: '建筑面积',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '主要设备房',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '机动车位',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '疏散通道口',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '卫生间',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '扶梯/坡梯',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '客梯',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '货梯',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '防火分区',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                },
+                {
+                    project: '连通口',
+                    num: '18500',
+                    type: '㎡',
+                    lege: '---'
+                }
+            ],
+            multipleSelection: [],
+            testModel: ['test3']
+        }
+    },
+    components: { editList },
+    methods: {
+        handleSelectionChange(val) {
+            this.multipleSelection = val
+        },
+        testClick(data) {
+            console.log(data)
+        }
+    },
+    watch: {
+        testModel(n, o) {
+            console.log(n, o)
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.legend-container {
+    position: relative;
+    .legend {
+        // padding: 12px 8px;
+        text-align: center;
+        line-height: 44px;
+        width: 44px;
+        height: 44px;
+        font-size: 14px;
+        font-family: MicrosoftYaHei;
+        color: rgba(2, 91, 170, 1);
+        line-height: 19px;
+        background: #ffffff;
+        cursor: pointer;
+        line-height: 44px;
+        text-align: center;
+    }
+    .legend-tab {
+        position: absolute;
+        // width: 600px;
+        // height: 500px;
+        top: 0;
+        right: 44px;
+        .legend-table {
+            width: 387px;
+            // height: 546px;
+            background: rgba(255, 255, 255, 1);
+            box-shadow: 0px 2px 8px 0px rgba(31, 36, 41, 0.06);
+            border-radius: 2px;
+            border: 1px solid rgba(228, 229, 231, 1);
+            .swich {
+                display: flex;
+                justify-content: flex-end;
+                align-items: center;
+                margin-top: 8px;
+                margin-right: 16px;
+                margin-bottom: 12px;
+                span {
+                    margin-left: 8px;
+                }
+            }
+            .remark {
+                font-size: 12px;
+                font-family: MicrosoftYaHeiSemibold;
+                color: rgba(31, 35, 41, 1);
+                line-height: 16px;
+                margin: 0px 16px 16px 16px;
+            }
+            .legendFoot {
+                display: flex;
+                justify-content: flex-end;
+                margin-bottom: 12px;
+                margin-right: 16px;
+            }
+        }
+    }
+}
+</style>

+ 5 - 0
src/components/PicLarge/index.js

@@ -0,0 +1,5 @@
+import PicLarge from './src/picLarge.vue'
+PicLarge.install = function(Vue) {
+    Vue.component(PicLarge.name, PicLarge)
+}
+export default PicLarge

+ 103 - 0
src/components/PicLarge/src/picLarge.vue

@@ -0,0 +1,103 @@
+<template>
+    <el-dialog title='图片预览' width='1080px' :visible.sync='dialogVisible' :close-on-click-modal='false'>
+        <div class='pic-list'>
+            <div class='pic-left'>
+                <ul v-for='(item,index) in imgUrl' :key='index'>
+                    <li @click='getIndex(item.url)'>
+                        <img :src='item.url' />
+                    </li>
+                    <span>{{item.name}}</span>
+                </ul>
+            </div>
+            <div class='pic-right'>
+                <div class='pic-right-img'>
+                    <img :src='ImgUrl' />
+                </div>
+            </div>
+        </div>
+    </el-dialog>
+</template>
+<script>
+export default {
+    name: 'PicLarge',
+    props: ['imgUrl'],
+    data() {
+        return {
+            dialogVisible: false,
+            ImgUrl: require('../../../assets/images/matter_pop3.png')
+        }
+    },
+    methods: {
+        open() {
+            this.dialogVisible = true
+        },
+        getIndex(imgUrl) {
+            this.ImgUrl = imgUrl
+        }
+    }
+}
+</script>
+<style lang="less" scoped>
+.pic-list {
+    width: 100%;
+    height: 600px;
+    display: flex;
+    justify-content: space-between;
+    .pic-left {
+        width: 230px;
+        background: #ffffff;
+        overflow: auto;
+        margin-top: 20px;
+        margin-bottom: 20px;
+        ul {
+            margin-bottom: 0;
+            width: 180px;
+            margin: 0 auto;
+
+            li {
+                width: 180px;
+                height: 135px;
+                border-radius: 4px;
+                border: 4px solid rgba(245, 246, 247, 1);
+                img {
+                    width: 100%;
+                    height: 100%;
+                    border-radius: 4px;
+                }
+            }
+            span {
+                height: 16px;
+                font-size: 12px;
+                font-family: MicrosoftYaHei;
+                color: rgba(31, 36, 41, 1);
+                line-height: 16px;
+                display: flex;
+                justify-content: center;
+                margin-top: 12px;
+                margin-bottom: 20px;
+            }
+        }
+    }
+    .pic-right {
+        flex: 1;
+        background: rgba(245, 246, 247, 1);
+        border-radius: 0px 0px 4px 0px;
+
+        padding: 20px 50px;
+        margin: auto auto;
+        .pic-right-img {
+            width: 720px;
+            height: 540px;
+            img {
+                width: 100%;
+                height: 100%;
+            }
+        }
+    }
+}
+</style>
+<style lang="less">
+.el-dialog__body {
+    padding: 0;
+}
+</style>

+ 6 - 0
src/components/Rotation/index.js

@@ -0,0 +1,6 @@
+import Rotation from './src/rotation.vue'
+Rotation.install = function(Vue) {
+    Vue.component(Rotation.name, Rotation)
+}
+console.log(Rotation)
+export default Rotation

+ 62 - 0
src/components/Rotation/src/rotation.vue

@@ -0,0 +1,62 @@
+/**
+*@author:Guoxiaohuan
+*@date:2020.05.26
+*@info:图片轮播
+*/
+<template>
+    <div class='rotation'>
+        <div v-if='rotationImg.length==1' height='100%'>
+            <img src='../../../assets/imgs/survey_pop1.png' alt />
+        </div>
+        <el-carousel v-else trigger='click' style='height:100%' :interval='5000' arrow='always'>
+            <el-carousel-item v-for='(item,index) in rotationImg' :key='index'>
+                <img :src='item' alt />
+            </el-carousel-item>
+        </el-carousel>
+    </div>
+</template>
+<script>
+export default {
+    name: 'Rotation',
+    props: ['rotationImg'],
+    data() {
+        return {}
+    }
+}
+</script>
+<style lang="less" scoped>
+.rotation {
+    height: 100%;
+    img {
+        width: 100%;
+        height: 100%;
+    }
+}
+</style>
+<style lang="less">
+.rotation {
+    .el-carousel__item h3 {
+        color: #475669;
+        font-size: 14px;
+        opacity: 0.75;
+        margin: 0;
+    }
+
+    .el-carousel__item:nth-child(2n) {
+        background-color: #99a9bf;
+    }
+
+    .el-carousel__item:nth-child(2n + 1) {
+        background-color: #d3dce6;
+    }
+    .el-carousel__container {
+        height: 100%;
+    }
+    .el-carousel__button {
+        height: 3px;
+        width: 16px;
+        border-radius: 2px;
+        opacity: 0.5;
+    }
+}
+</style>

+ 309 - 0
src/components/Select/Drop.vue

@@ -0,0 +1,309 @@
+<template>
+    <transition name="selectDownUpExtend">
+        <div class="p-select-option-box"  v-show="dropVisible">
+            <div >
+                <ul class="p-select-option-menu"  v-show="data.length" @mousewheel.stop @click.stop>
+                    <template v-for="(option, index) in data" >
+                        <li v-if="option.classify"  @click.stop="handlePrevent" class="p-select-option-classify" :key="index+option.classify">{{option.classify}}</li>
+                        <li v-else
+                            :class="['p-select-option', option.divider && 'p-select-option-divider',option.disabled ? 'p-select-option-disabled' : option.selected ? 'p-select-option-selected' : '']"
+                            :key="index"
+                            @click.stop="clickHandle(option,index)"
+                        >
+                            <div class="p-select-option-content" >
+                                <div class="p-select-option-wraper" v-if="option.src || option.label">
+                                    <div v-if="option.src" class="p-select-option-avatar"  >
+                                        <!-- <Avatar :size="option.sub? 'large':'medium'">
+                                            <img :src="option.src">
+                                        </Avatar> -->
+                                    </div>
+                                    <span v-if="option.label" :style="labelStyle(index)" class="p-select-option-label">{{option.label}}</span>
+                                </div>
+                                <div>
+                                    <section v-if="option.display" :style="widthStyle(option)" :class="['p-select-option-main', option.disabled ? 'p-select-option-main-disabled' :option.selected ? 'p-select-option-main-selected' : '' ]" :title="option.name" v-html="option.display"></section>
+                                    <section v-else :style="widthStyle(option)" :class="['p-select-option-main', option.disabled ? 'p-select-option-main-disabled' :option.selected ? 'p-select-option-main-selected' : '' ]" :title="option.name">{{option.name}}</section>
+                                    <section v-if="option.sub" :style="widthStyle(option)" :class="['p-select-option-desc', option.disabled ? 'p-select-option-desc-disabled' :option.selected ? 'p-select-option-desc-selected' : '' ]" :title="option.sub">{{option.sub}}</section>
+                                </div>
+                            </div>
+                            <div class="p-select-multiple-icon" v-if="multiple&&option.selected"></div>
+                        </li>
+                    </template>
+                </ul>
+                <div @click.stop="() => false" v-if="multiple&&data.length" :class="['p-select-confirm-panel', data.length > 5 ? 'p-select-panel-shadow': '' ]">
+                    <span @click.stop.capture="cancel">取消</span>
+                    <span @click.stop.capture="confirm" :class="[disableConfirm ? 'disabled-confirm-button' : '']">确定</span>
+                </div>
+            </div>
+            <div ref='notfound' class="p-select-not-found"  v-show="(query && !data.length) || !data.length" >没有找到任何内容</div>
+        </div>
+    </transition>
+</template>
+
+<script>
+import './static/stylus/animate/selectDownUpExtend.styl'
+import selected from './static/iconSvg/selected.svg'
+// import Avatar from '../Avatar'
+export default {
+    name:'selectDrop',
+    props:{
+        /**
+         * 是否多选
+         */
+        multiple:{
+            type:Boolean,
+            default: false
+        },
+        /**
+         * 搜索内容
+         */
+        query:{
+            type:String,
+            default: ''
+        },
+        /**
+         * 下拉框数据
+         */
+        data:{
+            type:Array,
+            default: () => []
+        },
+        width:{
+            type:[String, Number]
+        }
+    },
+    computed:{
+        tagBgColors () {  //标签背景颜色
+            return  ['#E1F2FF' , '#D5F6F2', '#D9F5D6', '#FAF1D1', '#FEEAD2', '#FDE3E2', '#FDDDEF', '#ECE2FE' ,'#B2E6F2', '#EFF0F1']
+        },
+        tagTextColors () { // 标签字体颜色
+            return ['#0065B3', '#078372', '#237B19', '#AA7803', '#B26206', '#AC2F28', '#8C218C', '#4E1BA7', '#161FA2', '#373C43']
+        },
+    },
+    data () {
+        return {
+            dropVisible:false,
+            value:'',
+            disableConfirm: true
+        }
+    },
+    watch:{
+        value:{
+            handler(n, o) {
+                if (n !== o) {
+                    this.selectById()
+                }
+            },
+            immediate :true
+        },
+    },
+    components:{selected,},  //√ 图标
+    methods:{
+        widthStyle (option) {
+            let width = 0
+            if (option.src) {
+                width = option.sub ? this.width - 68  : this.width - 60 // 有头像的情况
+            } else if (option.label) {
+                width = this.width - 76   // 有标签的情况
+            } else {
+                width = this.width - 24   // 只有文字的情况
+            }
+            if (this.multiple) {
+                width = width - 28   // 多选情况下还要再减去右边勾选图标的宽度
+            }
+            return {width : width + 'px'}
+        },
+        handlePrevent (e) {
+            return false
+        },
+        /**
+         * description 如果用户设置了默认选中项 则默认选中
+         */
+        selectById () {
+            const index = this.data.findIndex(item => {
+                return item.id === this.value
+            })
+            if (index > -1) {
+                this.data[index].selected = true
+            }
+        },
+        /**
+         * description 设置标签的样式
+         * params  index: 序号
+        */
+        labelStyle (index) {
+            return {
+                color:this.tagTextColors[index],
+                backgroundColor:this.tagBgColors[index]
+            }
+        },
+        /**
+         * description 处理点击操作 向上传递事件和选中项
+         * params  option:当前项个   index: 序号
+        */
+        clickHandle (option) {
+            if (option.disabled) {
+                return
+            }
+            option.selected = !option.selected
+            this.$emit('change', option)
+        },
+        /**
+         * description 响应取消事件
+        */
+        cancel () {
+            this.$emit('cancel')
+        },
+        /**
+         * description 响应确认事件
+        */
+        confirm () {
+            if (this.disableConfirm) return;
+            this.$emit('confirm')
+        }
+    }
+}
+</script>
+ <style lang="stylus">
+.p-select-not-found
+    height 54px
+    padding 16px 0 16px 12px
+    border-radius 4px
+    line-height 22px
+    font-size 14px
+    color $grey-400
+    background: $white
+    box-sizing border-box
+    min-width 180px
+    overflow hidden
+    text-overflow ellipsis
+    white-space nowrap
+.p-select-option-box
+    position absolute
+    border 1px solid $grey-300
+    max-height 300px
+    border-radius 4px
+    box-shadow $box-shadow-bottom
+    background $white
+    font-size 0
+    .p-select-option-menu
+        font-size 0
+        padding-top 8px
+        padding-bottom 8px
+        max-height 248px
+        overflow auto
+        .p-select-option-selected
+            background-color $blue-100
+        .p-select-option
+            display flex
+            align-items center
+            justify-content space-between
+            position relative
+            width 100%
+            box-size border-box
+            border-radius 0
+            padding 8px 0 8px 12px
+            cursor pointer
+            overflow hidden
+            text-overflow ellipsis
+            white-space nowrap
+            &:hover
+                background-color $grey-100
+            .p-select-option-content
+                display flex
+                align-items center
+                justify-content: flex-start
+                font-size 0
+                .p-select-option-wraper
+                    display flex
+                    align-items center
+                    justify-content: center
+                    .p-select-option-avatar
+                        display flex
+                        align-items center
+                        justify-content: center
+                        margin 4px 0 4px 0
+                        overflow hidden
+                    .p-select-option-label
+                        display inline-block
+                        width 44px
+                        height 24px
+                        margin-right 8px
+                        line-height 24px
+                        font-size 14px
+                        text-align center
+                        overflow hidden
+                .p-select-option-main
+                    overflow hidden
+                    text-overflow ellipsis
+                    white-space nowrap
+                    font-size 14px
+                    line-height 22px
+                    color $grey-900
+                .p-select-option-main-selected
+                    color $blue-500
+                .p-select-option-main-disabled
+                    color $grey-400
+                .p-select-option-desc
+                    overflow hidden
+                    text-overflow ellipsis
+                    white-space nowrap
+                    font-size 12px
+                    line-height 18px
+                    color $grey-500
+                .p-select-option-desc-selected
+                    color $blue-500
+                .p-select-option-desc-disabled
+                    color $grey-400
+            .p-select-multiple-icon
+                position absolute
+                right 12px
+                top 50%
+                width 12px
+                height 6px
+                border:2px solid rgb(0, 145, 255)
+                border-top none
+                border-right none
+                transform translateY(-50%) rotate(-45deg)
+    .p-select-confirm-panel
+        display flex
+        justify-content flex-end
+        align-items center
+        height 46px
+        width 100%
+        span
+            font-size 14px
+            cursor pointer
+        span:first-child
+            color $grey-900
+            margin-right 16px
+        span:last-child
+            color $blue-500
+            margin-right 12px
+        span.disabled-confirm-button
+            font-size 14px
+            color $grey-400
+            cursor not-allowed
+    .p-select-panel-shadow
+        position relative
+        &::after
+            content ''
+            display block
+            position absolute
+            top 0
+            left 0
+            width 100%
+            height 100%
+            pointer-events none
+            box-shadow  $box-shadow-top
+    .p-select-option-divider
+        border-bottom 1px solid $red-200
+    .p-select-option-disabled
+        color $grey-400
+        background $red-200
+        cursor not-allowed!important
+    .p-select-option-classify
+        padding 8px 0 8px 12px
+        color $grey-500
+        font-size 14px
+        line-height 22px
+</style>

+ 940 - 0
src/components/Select/Select.vue

@@ -0,0 +1,940 @@
+<template>
+    <div  v-clickoutside="handleClose" :class="classes" ref='pSelect'>
+        <div
+            :disabled="disabled"
+            :class="headerClass"
+            @click="handleOpen"
+            @mouseenter.stop="handleHideShowClearIcon(true)"
+            @mouseleave.stop="handleHideShowClearIcon(false)"
+            :style="headerStyle" >
+            <span class="p-select-title" ref="caption" v-if="caption" >{{caption}}</span>
+            <span class="p-select-selected-box"  >
+                <input
+                    :class="[this.prefixCls + '-input']"
+                    :style="placeholderStyle"
+                    :disabled='disabled'
+                    @blur="handleBlur"
+                    @input="handleInput"
+                    @focus.stop="handleFocus"
+                    type="text"
+                    ref="input"
+                    autocomplete="off"
+                    spellcheck="false"
+                    v-model="selectedItem"
+                />
+                <span
+                    class="p-select-fakePlaceholder"
+                    :style="placeholderStyle"
+                    v-show="showPlaceholder"
+                    v-html="fakePlaceholder">
+                </span>
+            </span>
+            <Triangle v-show="!clearable" :class="triangleClass"></Triangle>
+            <Remove class="p-select-clear" @click.stop="clearAll" v-show="!hideClear && clearable"></Remove>
+        </div>
+    </div>
+</template>
+<script>
+import createPopover from './popover'
+import Drop from './Drop.vue'
+import Triangle from './static/iconSvg/triangle.svg'
+import Remove from './static/iconSvg/clear2.svg'
+import iconClose from './static/iconSvg/icon_close.svg'
+import clickoutside from './clickoutside.js'
+import Options from './dropdown'
+import {zIndexIncrease, zIndex} from './dispatchZindex'
+
+export default {
+    name: "pSelect",
+    inheritAttrs: false,
+    directives: {
+        'clickoutside':clickoutside,
+    },
+    components: { Triangle, Drop, iconClose,Remove},
+    computed:{
+        classes () {
+            return [
+                `${this.prefixCls}`,
+                {
+                    [`${this.prefixCls}-multiple`]: this.multiple,
+                }
+            ];
+        },
+        headerClass () {
+            return [
+                'p-select-header',
+                {
+                    ['p-select-header-radius']:this.radius,
+                    ['p-select-header-focused']: this.focused && !this.disabled,
+                    ['p-select-header-disabled']: this.disabled
+                }
+            ]
+        },
+        headerStyle () {
+            return {
+                width : this.width + 'px',
+                borderRadius: this.radius ? '16px' : '4px',
+                backgroundColor: this.disabled ? '#EFF0F1' :'white',
+            }
+        },
+        triangleClass () {
+            return [ 'p-select-triangle', this.dropInstance &&  this.dropInstance.dropVisible ? 'p-select-triangle-up' : 'p-select-triangle-down']
+        },
+
+        placeholderStyle () {
+            let code = 0
+            if (this.caption) {
+                code = this.caption.charCodeAt(this.caption.length - 1)
+                if (code === 65306) {
+                    return {
+                        paddingLeft : 0,
+                        transform: 'translateX(-2px)',
+                        cursor:this.disabled ? 'not-allowed': 'pointer'
+                    }
+                } else {
+                    return {
+                        paddingLeft: code === 58 ? '8px' : '12px',   // 中文冒号还是英文冒号
+                        cursor:this.disabled ? 'not-allowed': 'pointer'
+                    }
+                }
+            }
+        },
+        tipText:{
+            get(){
+                const data=JSON.parse(JSON.stringify(this.confirmedItems));
+                const len=data.length-1;
+                let text='';
+                data.forEach((d, i) => {
+                    if (i<len) {
+                        text+=d.name+'、';
+                    } else {
+                        text+=d.name;
+                    }
+                });
+                return text;
+            }
+        },
+        fakePlaceholder () {
+            if (this.multiple) {
+                const len =this.confirmedItems.length
+                if (len) {
+                        if (this.dropInstance && this.dropInstance.dropVisible) {
+                            return  `已选择<span style="margin:0 4px">${len}</span>项`
+                        } else {
+                            return  `<span style="color:#1F2329">已选择<span style="margin:0 4px; color:#0091FF">${len}</span>项</span>`
+                        }
+
+                } else {
+                    return this.placeholder
+                }
+            } else {
+                if (this.currentSelectedItem) {
+                    const name = this.currentSelectedItem.name
+                    if (this.dropInstance && this.dropInstance.dropVisible) {
+                        return  name
+                    } else {
+                        return  `<span style="color:#1F2329">${name}</span>`
+                    }
+                } else {
+                    return this.placeholder
+                }
+            }
+        },
+    },
+    watch : {
+        query (n,o) {
+            if (n === o) return;
+            if (!n && this.dropInstance) {
+                this.selectedItem = ''
+            }
+        },
+        selectedItem(n, o) {
+            if (n === o) return;
+            this.showPlaceholder = !n;
+        },
+        /**
+         * 下拉列表数据
+         */
+        selectdata:{
+            handler (n, o) {
+                if (n !== o) {
+                    console.log("data change...........")
+                    this.dropData = this.cloneDeep(n)
+                    this.dropData.forEach(item => {
+                        this.$set(item,'selected',false)
+                    })
+                    this.defaultSelect()
+                    if (this.dropInstance) {
+                        this.dropInstance.data = this.dropData
+                        this.resetDropPanelPos()
+                    }
+                }
+            },
+            deep:true,
+            immediate: true
+        },
+        /**
+         * 默认选中项
+         */
+        value:{
+            handler(n, o) {
+                if (n !== o && n) {
+                    this.defaultSelect()
+                    if (this.dropInstance) {
+                        this.dropInstance.value=n
+                    }
+                }
+            },
+            immediate:true
+        },
+    },
+    props: {
+        placeholder:{
+            type:String,
+            default:''
+        },
+        /**
+         * 是否多选
+         */
+        multiple:{
+            type: Boolean,
+            default: false
+        },
+        count:{
+            type: Boolean,
+            default: false
+        },
+        /**
+         * 绑定的v-model值
+         */
+        value: {
+            type: [String, Number, Array],
+        },
+        /**
+         * 下拉列表数据
+         */
+        selectdata: {
+            type: Array,
+            default: () => []
+        },
+        /**
+         * 宽度
+         */
+        width: {
+            type: [String, Number],
+            default: '200'
+        },
+        /**
+         * 是否设置圆角
+         */
+        radius: {
+            type: Boolean,
+            default: false
+        },
+        /**是否设置标题 */
+        caption:{
+            type: String,
+            default: ''
+        },
+        /**是否是禁止选中 */
+        disabled:{
+            type: Boolean,
+            default: false
+        },
+         // 提示框位置
+        tipPlace: {
+            type: String,
+            default: ''
+        },
+        // 是否显示触发器上的清空图标
+        hideClear: {
+            type: Boolean,
+            default: false
+        },
+        transfer:{  // 需要监听滚动的dom元素的ID
+            type:String,
+            default:''
+        }
+
+    },
+    data() {
+        return {
+            prefixCls:'p-select',
+            selectedItems:[],  // 多选条件下被选项集合
+            selectedItem:'',   // 单选条件下被选选
+            selectedItemsText:'',  // 多选条件下已选项提示框
+            dropVisible:false, // 控制下拉列表的显示隐藏,
+            getScroll:null,
+            queryItems:[],   // 搜索下拉框
+            query:'', // 搜索项
+            showPlaceholder: true,  // 是否显示占位符
+            showInputText:false, //控制输入文字的显示隐藏
+            showCount:false, // 控制显示隐藏已选项的提示文本
+            dropData:[],  // 下拉框绑定数据
+            dropInstance:null,  // 下拉框实例
+            popoverInstance:null, // 弹出框
+            currentSelectedItem: null,
+            confirmedItems: [],   // 点击确认所提交的数据
+            focused:false,   // 判断当前是否处于获取焦点的状态
+            storeInput: '',
+            storePlaceholder:'',
+            selectedTipStyle: { bottom: 0, left: 0 },
+            clearable:false,
+            timer:null,
+            timer2:null,
+            scrollDom:null
+        }
+    },
+    created(){
+
+    },
+    mounted () {
+        document.addEventListener('mousewheel', this.throttleWheel, false);
+        if (this.transfer) {
+            let transfer = this.transfer
+            if (!transfer.startsWith("#")) {
+                transfer = "#" + transfer
+            }
+            this.scrollDom = document.querySelector(transfer)
+            if (this.scrollDom) {
+                this.scrollDom.addEventListener('mousewheel', this.listenDomScroll, false)
+            }
+        }
+    },
+    methods: {
+        listenDomScroll(){
+            if (this.dropInstance) {
+                this.dropInstance.dropVisible = false
+            }
+        },
+        throttleWheel () {
+            if (this.timer2) clearTimeout(this.timer2);
+            this.timer2 = setTimeout(()=>{
+                this.wheelListenter()
+                this.timer2 = null
+            }, 300)
+        },
+        handleHideShowClearIcon (bool) {
+            this.handleTipShow(bool)
+            if (this.hideClear) return;
+            if (this.multiple) {
+                if (this.confirmedItems.length) {
+                    this.clearable = bool
+                }
+            } else {
+                if (this.currentSelectedItem) {
+                    this.clearable = bool
+                }
+            }
+        },
+        clearAll () {
+            if (this.multiple) {
+                if (this.popoverInstance) {
+                    this.popoverInstance.showTip = false
+                }
+                this.confirmedItems = []
+                this.selectedItems = []
+                this.clearable = false
+                this.selectConfirmData(this.selectedItems)
+                if (this.dropInstance) {
+                    if (this.dropInstance.dropVisible) {
+                        this.dropInstance.dropVisible = false
+                    }
+                }
+                this.$emit('input', [])
+            } else {
+                this.clearable = false
+                this.currentSelectedItem = null
+                this.selectSingleItem()
+                if (this.dropInstance) {
+                    if (this.dropInstance.dropVisible) {
+                        this.dropInstance.dropVisible = false
+                    }
+                }
+                this.$emit('input', '')
+            }
+        },
+        handleTipShow (bool) {
+            if(!this.confirmedItems.length) return;
+            if (this.dropInstance) {
+                if (this.dropInstance.showCascader) return;
+            }
+            if (this.tipText && this.tipPlace) {
+                if (this.popoverInstance) {
+                    this.resetPopoverPos()
+                    this.popoverInstance.showTip = bool
+                } else {
+                    if (this.caption) {
+                        this.captionW = this.$refs.caption.getBoundingClientRect().width
+                    }
+                    this.leftW = this.caption ? this.captionW +  68 : 68
+                    if (this.confirmedItems.length > 9) {
+                        this.leftW = this.leftW + 8
+                    }
+                    this.popoverInstance = createPopover({
+                        tag: this.$refs.pSelect ,
+                        props:{
+                            innertext: this.tipText,
+                            leftW:this.leftW,
+                            tipPlace:this.tipPlace
+                        }
+                    }).$on('sotrePOs', (pos) => {
+                        this.tDom =  pos
+                        this.popoverInstance.$nextTick(()=>{
+                            this.popoverInstance.showTip = true
+                        })
+                    })
+                }
+            }
+        },
+        resetPopoverPos ( ) {
+            if (this.popoverInstance) {
+                this.popoverInstance.innertext = this.tipText
+                const pDom = this.$refs.pSelect.getBoundingClientRect()
+                this.leftW = this.caption ? this.captionW +  68 : 68
+                if (this.confirmedItems.length > 9) {
+                    this.leftW = this.leftW + 8
+                }
+                const pos = createPopover.resetPosition(pDom, this.tDom, this.leftW, this.tipPlace, 12)
+                if (pos.finalBottom) {
+                    this.popoverInstance.popoverStyle={
+                        left: pos.finalLeft + 'px',
+                        bottom: pos.finalBottom + 'px'
+                    }
+                } else {
+                    this.popoverInstance.popoverStyle={
+                        top: pos.finalTop+ 'px',
+                        left: pos.finalLeft + 'px',
+                    }
+                }
+                if (pos.tranigleBottom) {
+                    this.popoverInstance.tranigleStyle = {
+                        bottom: pos.tranigleBottom+ 'px',
+                        left: pos.tranigleLeft + 'px'
+                    }
+                } else {
+                    this.popoverInstance.tranigleStyle = {
+                        top: pos.tranigleTop+ 'px',
+                        left: pos.tranigleLeft + 'px'
+                    }
+                }
+            }
+        },
+        wheelListenter () {
+            this.$refs.input.blur()
+            if (this.dropInstance) {
+                this.dropInstance.dropVisible = false
+            }
+            if (this.popoverInstance) {
+                this.popoverInstance.showTip = false
+            }
+        },
+        defaultSelect () {
+            if (!this.value) return;
+            if (this.multiple) {
+                if (Array.isArray(this.value) && this.value.length) {
+                    this.confirmedItems = []
+                    this.selectedItems= []
+                    this.value.forEach(val => {
+                        const index = this.dropData.findIndex(item => {return item.id === val})
+                        if (index > -1) {
+                            this.confirmedItems.push(this.dropData[index])
+                            this.selectedItems.push(this.dropData[index])
+                        }
+                    })
+                    if (this.confirmedItems.length) {
+                        this.showPlaceholder = true
+                    }
+                }
+            } else {
+                if (this.value.toString().trim()) {
+                    this.dropData.forEach(item => {
+                        if (item.id === this.value.toString().trim()) {
+                            this.currentSelectedItem = item
+                        }
+                    })
+                    this.showPlaceholder = true
+                    this.selectSingleItem()
+                }
+            }
+        },
+
+        /**
+         * description 深度克隆对象
+         * params obj 需要克隆的对象
+         */
+        cloneDeep(obj) {
+            if (typeof obj !=='object' || obj === null) {
+                return obj
+            }
+            const newObj = Array.isArray(obj) ? [] : {}
+            for (const key in obj) {
+                if (typeof obj[key] === 'object') {
+                    newObj[key]  = this.cloneDeep(obj[key] )
+                } else {
+                    newObj[key] = obj[key]
+                }
+            }
+            return newObj
+        },
+        /**
+        * description 处理用户输入事件
+        * params event事件对象
+        */
+        handleInput (event) {
+            this.query = event.target.value || event.data || ''
+            this.showPlaceholder = !this.query
+            if (!this.dropInstance) return
+            if (this.query) {
+                this.dropInstance.query = this.query
+                this.dropInstance.data = this.findSelectedItem()
+            } else {
+                if (!this.multiple) {
+                    this.selectSingleItem()
+                } else {
+                    this.dropData.forEach(item => {delete item.display})
+                }
+            }
+        },
+        selectSingleItem () {
+            if (this.currentSelectedItem) {
+                this.dropData.forEach(item => {
+                    delete item.display
+                    if (item.id === this.currentSelectedItem.id) {
+                        item.selected = true
+                    } else {
+                        item.selected = false
+                    }
+                })
+            } else {
+                this.dropData.forEach(item => {
+                    delete item.display
+                    item.selected = false
+                })
+            }
+            if ( this.dropInstance) {
+                this.dropInstance.data = this.dropData
+            }
+        },
+        /**
+        * description 处理点击事件
+        * params option 选中项
+        */
+        optionClick (option) {
+            if (option.disabled) return
+            if (this.multiple) {
+                if (option.selected) {
+                    this.selectedItems.push(option)
+                    this.$emit('change', option)
+                } else {
+                    const index = this.selectedItems.findIndex((item) => {return item.id===option.id})
+                    if (index > -1) {
+                        this.selectedItems.splice(index,1)
+                    }
+                }
+                this.disableConfirmBtn()
+            } else {
+                if (!this.dropInstance) return
+                this.currentSelectedItem = option
+                this.query = ''
+                this.selectSingleItem()
+                this.dropInstance.data = this.dropData
+                this.dropInstance.dropVisible = false
+                const emitData = this.cloneDeep(option)
+                delete emitData.index
+                delete emitData.selected
+                this.$emit('input', emitData.id)
+                this.$emit('change', emitData)
+            }
+        },
+
+         /**
+         * description 根据输入内容筛选匹配项
+         */
+        findSelectedItem () {
+            const selections = []
+            this.dropData.forEach(item => {
+                item.display = item.name
+                selections.push(item)
+            })
+            const foundItems = selections.filter(item => {
+                return item.name ? item.name.indexOf(this.query) > -1 : false
+            }).map(item => {
+                item.display = item.display.replace(new RegExp(this.query, 'g'), `<span style="color:#0091FF">${this.query}</span>`)
+                return item
+            })
+            if(foundItems.length ) {
+                foundItems.forEach(item => {
+                    const index = this.selectedItems.findIndex(option => {return item.id === option.id})
+                    if (index > -1) {
+                        item.selected = true
+                    }
+                })
+            }
+            return foundItems
+        },
+        resetDropPanelPos () {
+            const props = {
+                data: this.dropData,
+                multiple: this.multiple
+            }
+            Options.resetPos(this.dropInstance, this.$refs.pSelect, document.body,props)
+        },
+        /**
+         * description 下拉框在打开和合上之间切换状态
+         */
+        handleOpen () {
+            if (this.disabled) return
+            if (this.dropInstance) {
+                if (this.multiple && this.confirmedItems.length) {
+                    this.disableConfirmBtn()
+                }
+                this.dropInstance.dropVisible=true
+                if (this.popoverInstance) {
+                    this.popoverInstance.showTip = false
+                }
+                this.resetDropPanelPos()
+            } else {
+                zIndexIncrease()
+                const data=this.dropData, value=this.value, multiple = this.multiple
+                // 初始化实例
+                this.dropInstance=Options({
+                    tag: this.$refs.pSelect, data:{value, zIndex}, props:{multiple, query: this.query, value, data}
+                }).$on('change', (option) => {
+                    this.optionClick(option)
+                }).$on('cancel' ,() => {
+                    this.emitCancel()
+                }).$on('confirm' ,() => {
+                    this.emitConfirm()
+                })
+                if (this.multiple && this.confirmedItems.length) {
+                    this.selectConfirmData(this.confirmedItems)
+                } else {
+                    this.selectSingleItem()
+                }
+                this.dropInstance.$nextTick(() => {
+                    this.dropInstance.dropVisible=true
+                    if (this.popoverInstance) {
+                        this.popoverInstance.showTip = false
+                    }
+                })
+            }
+        },
+        /**
+         * description 处理获取焦点的事件
+         */
+        handleFocus () {
+            this.focused = true
+        },
+        /**
+         *description 输入框失去焦点的事件
+        */
+        handleBlur () {
+            this.focused = false
+        },
+        /**
+         * description 向父组件传递取消并关闭下拉框
+         */
+        emitCancel () {
+            if(this.dropInstance){
+                this.query = ''
+                this.selectedItems = []
+                this.dropInstance.dropVisible = false
+                this.selectConfirmData(this.confirmedItems)
+                this.disableConfirmBtn()
+                this.$emit('cancel')
+            }
+        },
+        /**
+         * description 向父组件传递确认事件并关闭下拉框
+         */
+        emitConfirm () {
+            if (this.dropInstance) {
+                this.dropInstance.dropVisible = false
+                this.confirmedItems = this.cloneDeep(this.selectedItems)
+                this.query = ''
+                const emitData = this.cloneDeep(this.selectedItems)
+                const ids = []
+                emitData.forEach(item=>{
+                    delete item.index
+                    delete item.selected
+                    ids.push(item.id)
+                })
+                this.$emit('input', ids)
+                this.$emit('confirm', emitData)
+
+            }
+        },
+        /**
+         * description 关闭下拉列表
+         */
+        handleClose () {
+            if (this.dropInstance) {
+                this.dropInstance.dropVisible = false
+                this.query = ''
+                if (this.multiple) {
+                    this.selectedItems = []
+                    setTimeout(()=>{
+                        this.selectConfirmData(this.confirmedItems)
+                    },500)
+                } else {
+                    setTimeout(()=>{
+                        this.selectSingleItem()
+                    },500)
+                }
+            }
+        },
+        /**
+         *
+         */
+        selectConfirmData (data) {
+            if (!this.dropInstance) return
+            this.dropData.forEach(option => {
+                const index = data.findIndex((item) => {return item.id===option.id})
+                if (index > -1) {
+                    option.selected = true
+                } else {
+                    option.selected = false
+                }
+                delete option.display
+            })
+            if (this.confirmedItems.length) {
+                this.selectedItems = this.cloneDeep(this.confirmedItems)
+            }
+            this.selectedItem = ''
+            this.dropInstance.data = this.dropData
+        },
+        disableConfirmBtn () {
+            if (!this.dropInstance) return
+            if( (this.confirmedItems.length !== this.selectedItems.length) ) {
+                this.dropInstance.disableConfirm = false
+            } else {
+                let flag = this.confirmedItems.every((item) => {
+                    return this.selectedItems.findIndex(option => { return option.id === item.id}) > -1
+                })
+                if (!this.confirmedItems.length && this.selectedItems.length) {
+                    flag = false
+                }
+                if (!this.confirmedItems.length && !this.selectedItems.length) {
+                    flag = true
+                }
+                if (flag) {
+                    this.dropInstance.disableConfirm = true
+                } else {
+                    this.dropInstance.disableConfirm = false
+                }
+            }
+        },
+    },
+    /**
+     * description 组件销毁
+     */
+    beforeDestroy() {
+        if (this.dropInstance) {
+            this.dropInstance.dropVisible = false
+            Options.remove(this.dropInstance)
+            createPopover.remove(this.popoverInstance)
+        }
+        document.removeEventListener('mousewheel',this.throttleWheel)
+        if (this.transfer) {
+            this.scrollDom.removeEventListener('mousewheel', this.listenDomScroll)
+        }
+    }
+}
+</script>
+<style lang="stylus">
+    @import "./static/stylus/animate/selectDownUp.styl"
+    @import "./static/stylus/palette.styl"
+    .p-select
+        position relative
+        display inline-block
+        vertical-align middle
+        cursor pointer
+        outline none
+        .p-select-drop-down
+            position fixed;
+            .p-select-not-found
+                height 54px
+                padding 16px 0 16px 12px
+                border 1px solid $grey-300
+                border-radius 4px
+                line-height 22px
+                font-size 14px
+                color $grey-400
+                background:$white
+                box-shadow $box-shadow-bottom
+                box-sizing border-box
+        .p-select-header
+            position relative
+            display flex
+            min-height 32px
+            height 32px
+            width 100%
+            box-sizing border-box
+            border 1px solid $grey-400
+            border-radius 4 px
+            cursor pointer
+            text-align left
+            .p-select-count
+                color $grey-900
+                font-size 14px
+                line-height 30px
+                padding-left 12px
+                .p-select-count-active
+                    color $blue-500
+                    margin 0 4px
+            .p-select-title
+                display inline-block
+                padding 0 0 0 12px
+                height 30px
+                line-height 30px
+                font-size 14px
+                flex-shrink 0
+                color $grey-500
+                pointer-events none
+            .p-select-selected-box
+                position relative
+                flex-shrink 1
+                display inline-block
+                width 100%
+                box-sizing border-box
+                color $grey-900
+                font-size 14px
+                .p-select-input, .p-select-fakePlaceholder
+                    display inline-block
+                    position absolute
+                    left 0
+                    top 0
+                    padding-left 12px
+                    line-height 30px
+                    width 100%
+                    font-size 14px
+                    border none
+                    outline none
+                .p-select-fakePlaceholder
+                    //z-index 999
+                    pointer-events none
+                    color $grey-400
+                    line-height 30px
+                    padding-right 32px
+                    overflow hidden
+                    text-overflow ellipsis
+                    white-space nowrap
+                .p-select-input
+                    //z-index 1
+                    line-height 30px
+                    height 30px
+                    padding-right 32px
+                    background transparent
+                .p-select-input-fakePlaceholder
+                    color $grey-900
+            .p-select-triangle
+                position absolute
+                //z-index 999
+                top 8px
+                right 10px
+                width 16px
+                height 16px
+                transform-origin center center
+                transform rotate(180deg)
+                transition transform 0.3s
+                will-change rotate
+            .p-select-clear
+                position absolute
+                //z-index 999
+                top 8px
+                right 10px
+                width 14px
+                height 14px
+                path
+                    fill $grey-300
+                    transition fill 0.5s
+                &:hover
+                    path
+                        fill $blue-500
+            .p-select-triangle-up
+                transform rotate(0deg)
+            .p-select-triangle-down
+                transform rotate(180deg)
+            &:hover
+                border 1px solid $blue-500
+                transition 0.3s
+            .p-select-input-tip
+                position: absolute
+                padding: 16px 20px
+                background-color: $white
+                border-radius: 4px
+                pointer-events: none
+                max-width: 280px
+                max-height: 104px
+                z-index: 100
+                &:after
+                    position: absolute
+                    display: inline-block
+                    border-style: solid
+                    border-width: 4px
+                    width: 0
+                    height: 0
+                    transform: rotate(-45deg)
+                    z-index: 0
+                    content: ''
+                .p-select-input-tip-item
+                    position: relative
+                    overflow: hidden
+                    max-height: 66px
+                    line-height: 22px
+                    font-size: 14px
+                    word-wrap: break-word
+                    word-break: break-all
+                .p-select-input-tip-overflow
+                    &:after
+                        position: absolute
+                        right: 0
+                        bottom: 0
+                        display: inline-block
+                        width: 20px
+                        height: 22px
+                        background-color: $white
+                        content: '...'
+            .p-select-input-tip-top
+                box-shadow: $box-shadow-bottom
+                &:after
+                    bottom: -4px
+                    left: 58px
+                    border-color: transparent transparent $white $white
+                    box-shadow: $box-shadow-min-top
+                    z-index: -1
+            .p-select-input-tip-bottom
+                box-shadow: $box-shadow-left
+                &:after
+                    top: -4px
+                    left: 58px
+                    border-color: $white $white transparent transparent
+                    box-shadow: $box-shadow-min-bottom
+            .p-select-input-tip-left
+                box-shadow: $box-shadow-right
+                &:after
+                    top: 49%
+                    right: -4px
+                    border-color: transparent $white $white transparent
+                    box-shadow: $box-shadow-min-right
+            .p-select-input-tip-right
+                box-shadow: $box-shadow-top
+                &:after
+                    top: 49%
+                    left: -4px
+                    border-color: $white transparent transparent $white
+                    box-shadow: $box-shadow-min-left
+        .p-select-header-radius
+            border 1px solid $grey-400
+            border-radius 12px
+        .p-select-header-focused
+            border 1px solid $blue-500
+            box-shadow $box-shadow-blue
+            transition 0.3s
+        .p-select-header-disabled
+            background:$red-200
+            cursor:not-allowed
+            &:hover
+               border 1px solid $grey-300
+</style>

+ 23 - 0
src/components/Select/clickoutside.js

@@ -0,0 +1,23 @@
+/**
+ * v-clickoutside
+ * @desc 点击元素外面才会触发的事件
+ */
+export default {
+  bind (el, binding, vnode) {
+      function documentHandler (e) {
+        if (el.contains(e.target)) { // 如果点击的是绑定元素则不执行绑定函数
+            return false;
+        }
+        let classList = e.target.classList
+        if (binding.expression && !classList.contains('p-select-count') && !classList.contains('p-select-count-active') ) { // 如果点击的不是绑定元素则执行绑定函数
+            binding.value(e);
+        }
+      }
+      el.__vueClickOutside__ = documentHandler;  
+      document.addEventListener('click', documentHandler); // 添加事件监听
+  },
+  unbind (el, binding) {
+      document.removeEventListener('click', el.__vueClickOutside__);  // 移除事件监听
+      delete el.__vueClickOutside__;
+  }
+};

+ 24 - 0
src/components/Select/directive/clickoutside.js

@@ -0,0 +1,24 @@
+
+/**
+ * v-clickoutside
+ * @desc 点击元素外面才会触发的事件
+ */
+export default {
+  bind (el, binding, vnode) {
+      function documentHandler (e) {
+        if (el.contains(e.target)) { // 如果点击的是绑定元素则不执行绑定函数
+            return false;
+        }
+        let classList = e.target.classList
+        if (binding.expression && !classList.contains('p-select-count') && !classList.contains('p-select-count-active') ) { // 如果点击的不是绑定元素则执行绑定函数
+            binding.value(e);
+        }
+      }
+      el.__vueClickOutside__ = documentHandler;  
+      document.addEventListener('click', documentHandler); // 添加事件监听
+  },
+  unbind (el, binding) {
+      document.removeEventListener('click', el.__vueClickOutside__);  // 移除事件监听
+      delete el.__vueClickOutside__;
+  }
+};

+ 8 - 0
src/components/Select/directive/dispatchZindex.js

@@ -0,0 +1,8 @@
+ 
+let zIndex = 1000;
+
+function zIndexIncrease() {
+    zIndex++;
+}
+
+export {zIndex, zIndexIncrease};

+ 227 - 0
src/components/Select/directive/dom.js

@@ -0,0 +1,227 @@
+/* istanbul ignore next */
+
+import Vue from 'vue';
+
+const isServer = Vue.prototype.$isServer;
+const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
+const MOZ_HACK_REGEXP = /^moz([A-Z])/;
+const ieVersion = isServer ? 0 : Number(document.documentMode);
+
+/* istanbul ignore next */
+const trim = function(string) {
+  return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
+};
+/* istanbul ignore next */
+const camelCase = function(name) {
+  return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
+    return offset ? letter.toUpperCase() : letter;
+  }).replace(MOZ_HACK_REGEXP, 'Moz$1');
+};
+
+/* istanbul ignore next */
+export const on = (function() {
+  if (!isServer && document.addEventListener) {
+    return function(element, event, handler) {
+      if (element && event && handler) {
+        element.addEventListener(event, handler, false);
+      }
+    };
+  } else {
+    return function(element, event, handler) {
+      if (element && event && handler) {
+        element.attachEvent('on' + event, handler);
+      }
+    };
+  }
+})();
+
+/* istanbul ignore next */
+export const off = (function() {
+  if (!isServer && document.removeEventListener) {
+    return function(element, event, handler) {
+      if (element && event) {
+        element.removeEventListener(event, handler, false);
+      }
+    };
+  } else {
+    return function(element, event, handler) {
+      if (element && event) {
+        element.detachEvent('on' + event, handler);
+      }
+    };
+  }
+})();
+
+/* istanbul ignore next */
+export const once = function(el, event, fn) {
+  var listener = function() {
+    if (fn) {
+      fn.apply(this, arguments);
+    }
+    off(el, event, listener);
+  };
+  on(el, event, listener);
+};
+
+/* istanbul ignore next */
+export function hasClass(el, cls) {
+  if (!el || !cls) return false;
+  if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');
+  if (el.classList) {
+    return el.classList.contains(cls);
+  } else {
+    return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
+  }
+};
+
+/* istanbul ignore next */
+export function addClass(el, cls) {
+  if (!el) return;
+  var curClass = el.className;
+  var classes = (cls || '').split(' ');
+
+  for (var i = 0, j = classes.length; i < j; i++) {
+    var clsName = classes[i];
+    if (!clsName) continue;
+
+    if (el.classList) {
+      el.classList.add(clsName);
+    } else if (!hasClass(el, clsName)) {
+      curClass += ' ' + clsName;
+    }
+  }
+  if (!el.classList) {
+    el.className = curClass;
+  }
+};
+
+/* istanbul ignore next */
+export function removeClass(el, cls) {
+  if (!el || !cls) return;
+  var classes = cls.split(' ');
+  var curClass = ' ' + el.className + ' ';
+
+  for (var i = 0, j = classes.length; i < j; i++) {
+    var clsName = classes[i];
+    if (!clsName) continue;
+
+    if (el.classList) {
+      el.classList.remove(clsName);
+    } else if (hasClass(el, clsName)) {
+      curClass = curClass.replace(' ' + clsName + ' ', ' ');
+    }
+  }
+  if (!el.classList) {
+    el.className = trim(curClass);
+  }
+};
+
+/* istanbul ignore next */
+export const getStyle = ieVersion < 9 ? function(element, styleName) {
+  if (isServer) return;
+  if (!element || !styleName) return null;
+  styleName = camelCase(styleName);
+  if (styleName === 'float') {
+    styleName = 'styleFloat';
+  }
+  try {
+    switch (styleName) {
+      case 'opacity':
+        try {
+          return element.filters.item('alpha').opacity / 100;
+        } catch (e) {
+          return 1.0;
+        }
+      default:
+        return (element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null);
+    }
+  } catch (e) {
+    return element.style[styleName];
+  }
+} : function(element, styleName) {
+  if (isServer) return;
+  if (!element || !styleName) return null;
+  styleName = camelCase(styleName);
+  if (styleName === 'float') {
+    styleName = 'cssFloat';
+  }
+  try {
+    var computed = document.defaultView.getComputedStyle(element, '');
+    return element.style[styleName] || computed ? computed[styleName] : null;
+  } catch (e) {
+    return element.style[styleName];
+  }
+};
+
+/* istanbul ignore next */
+export function setStyle(element, styleName, value) {
+  if (!element || !styleName) return;
+
+  if (typeof styleName === 'object') {
+    for (var prop in styleName) {
+      if (styleName.hasOwnProperty(prop)) {
+        setStyle(element, prop, styleName[prop]);
+      }
+    }
+  } else {
+    styleName = camelCase(styleName);
+    if (styleName === 'opacity' && ieVersion < 9) {
+      element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
+    } else {
+      element.style[styleName] = value;
+    }
+  }
+};
+
+export const isScroll = (el, vertical) => {
+  if (isServer) return;
+
+  const determinedDirection = vertical !== null || vertical !== undefined;
+  const overflow = determinedDirection
+    ? vertical
+      ? getStyle(el, 'overflow-y')
+      : getStyle(el, 'overflow-x')
+    : getStyle(el, 'overflow');
+
+  return overflow.match(/(scroll|auto)/);
+};
+
+export const getScrollContainer = (el, vertical) => {
+  if (isServer) return;
+
+  let parent = el;
+  while (parent) {
+    if ([window, document, document.documentElement].includes(parent)) {
+      return window;
+    }
+    if (isScroll(parent, vertical)) {
+      return parent;
+    }
+    parent = parent.parentNode;
+  }
+
+  return parent;
+};
+
+export const isInContainer = (el, container) => {
+  if (isServer || !el || !container) return false;
+
+  const elRect = el.getBoundingClientRect();
+  let containerRect;
+
+  if ([window, document, document.documentElement, null, undefined].includes(container)) {
+    containerRect = {
+      top: 0,
+      right: window.innerWidth,
+      bottom: window.innerHeight,
+      left: 0
+    };
+  } else {
+    containerRect = container.getBoundingClientRect();
+  }
+
+  return elRect.top < containerRect.bottom &&
+    elRect.bottom > containerRect.top &&
+    elRect.right > containerRect.left &&
+    elRect.left < containerRect.right;
+};

+ 69 - 0
src/components/Select/directive/transfer-dom.js

@@ -0,0 +1,69 @@
+function getTarget (node) {
+    if (node === void 0) {
+        node = document.body
+    }
+    if (node === true) { return document.body }
+    return node instanceof window.Node ? node : document.querySelector(node)
+}
+
+const directive = {
+    inserted (el, { value }, vnode) {
+        if ( el.dataset && el.dataset.transfer !== 'true') return false;
+        el.className = el.className ? el.className + ' v-transfer-dom' : 'v-transfer-dom';
+        const parentNode = el.parentNode;
+        if (!parentNode) return;
+        const home = document.createComment('');
+        let hasMovedOut = false;
+
+        if (value !== false) {
+            parentNode.replaceChild(home, el); // moving out, el is no longer in the document
+            getTarget(value).appendChild(el); // moving into new place
+            hasMovedOut = true
+        }
+        if (!el.__transferDomData) {
+            el.__transferDomData = {
+                parentNode: parentNode,
+                home: home,
+                target: getTarget(value),
+                hasMovedOut: hasMovedOut
+            }
+        }
+    },
+    componentUpdated (el, { value }) {
+        if ( el.dataset && el.dataset.transfer !== 'true') return false;
+        // need to make sure children are done updating (vs. `update`)
+        const ref$1 = el.__transferDomData;
+        if (!ref$1) return;
+        // homes.get(el)
+        const parentNode = ref$1.parentNode;
+        const home = ref$1.home;
+        const hasMovedOut = ref$1.hasMovedOut; // recall where home is
+
+        if (!hasMovedOut && value) {
+            // remove from document and leave placeholder
+            parentNode.replaceChild(home, el);
+            // append to target
+            getTarget(value).appendChild(el);
+            el.__transferDomData = Object.assign({}, el.__transferDomData, { hasMovedOut: true, target: getTarget(value) });
+        } else if (hasMovedOut && value === false) {
+            // previously moved, coming back home
+            parentNode.replaceChild(el, home);
+            el.__transferDomData = Object.assign({}, el.__transferDomData, { hasMovedOut: false, target: getTarget(value) });
+        } else if (value) {
+            // already moved, going somewhere else
+            getTarget(value).appendChild(el);
+        }
+    },
+    unbind (el) {
+        if (el.dataset && el.dataset.transfer !== 'true') return false;
+        el.className = el.className.replace('v-transfer-dom', '');
+        const ref$1 = el.__transferDomData;
+        if (!ref$1) return;
+        if (el.__transferDomData.hasMovedOut === true) {
+            el.__transferDomData.parentNode && el.__transferDomData.parentNode.appendChild(el)
+        }
+        el.__transferDomData = null
+    }
+};
+
+export default directive;

+ 8 - 0
src/components/Select/dispatchZindex.js

@@ -0,0 +1,8 @@
+ 
+let zIndex = 7000;
+
+function zIndexIncrease() {
+    zIndex++;
+}
+
+export {zIndex, zIndexIncrease};

+ 86 - 0
src/components/Select/dropdown.js

@@ -0,0 +1,86 @@
+import Vue from 'vue';
+import O from './Drop';
+import CalcTargetPosition from './static/utils/CalcTargetPosition'
+const OptionsExtend=Vue.extend(O); // 继承Vue
+
+let OptionsVm=null; // 当前实例
+let domHeight = null
+let domWidth = null
+
+/**
+ * @param options
+ * tag 基于当前点击的dom对象或点击的根对象
+ * params 动态组件相关数据
+ */
+function calcHeightByData (props) {
+    let H
+    let totalH = 0
+    if (props.data.length) {
+        const item = props.data[0]
+        if (item.src && item.sub) {   // 有图片 有副标题
+            H = 58
+        } else if (item.src &&!item.sub) { // 有图片 没有副标题
+            H = 52
+        } else if (item.label ){  // 有标签
+            H = 40
+        } else if (!item.sub && !item.src && !item.label) { // 只有主标题
+            H = 40
+        } else if (item.sub && !item.src && !item.label) {  // 有副标题  没有图片 没有标签
+            H = 58
+        }
+    }
+    if (props.multiple) {
+        totalH =  H * props.data.length + 16 + 46
+    } else {
+        totalH =  H * props.data.length + 16
+    }
+    if (totalH > 300) totalH = 300
+
+    if (!props.data.length) {
+        totalH = 56
+    }
+    return totalH
+}
+
+const Options=(options) => {
+    const {tag, data, props}=options;
+    let {width}=tag.getBoundingClientRect(); // 根据当前点击的dom对象获取位置
+    //判断最大最小宽度
+    if (width<=180) {
+        width = 180
+    }
+    if (width > 600) {
+        width = 600
+    }
+    domHeight = calcHeightByData(props)
+    domWidth = width
+    const dom=document.body;
+    const {X,Y} = CalcTargetPosition(tag,dom,domHeight,width)
+    props.width = width
+    OptionsVm=new OptionsExtend({data, propsData : props}); // 实例化
+    OptionsVm=OptionsVm.$mount(); // 挂载
+
+    // 设置位置
+    OptionsVm.$el.style.top=Y + 'px';
+    OptionsVm.$el.style.left=X + 'px';
+    OptionsVm.$el.style.width=width+'px';
+    OptionsVm.$el.style.zIndex=data.zIndex;
+    dom.appendChild(OptionsVm.$el); // 插入dom
+    return OptionsVm;
+}
+
+Options.remove=(vm) => {
+    if (!vm) return;
+    if (vm._isDestroyed) return;
+    vm.$destroy();
+    const dom=vm.$el;
+    if (dom) dom.parentNode.removeChild(dom);
+}
+Options.resetPos=(vm, tag,dom, props) => {
+    const calcH = calcHeightByData(props)
+    const {X,Y} = CalcTargetPosition(tag, dom, calcH, domWidth)
+    vm.$el.style.top=Y + 'px';
+    vm.$el.style.left=X + 'px';
+}
+
+export default Options;

+ 32 - 0
src/components/Select/popover.js

@@ -0,0 +1,32 @@
+import Vue from 'vue';
+import popover from './popover.vue';
+import {calcTipPosition} from './utils'
+
+// import CalcTargetPosition from '../static/utils/CalcTargetPosition'
+// import {zIndexIncrease, zIndex} from './dispatchZindex'
+const PopoverExtend=Vue.extend(popover); // 继承Vue
+
+let PopoverVm = null
+ 
+const createPopover= (options) => {
+    let {tag, props}=options;
+    let pos=tag.getBoundingClientRect(); // 根据当前点击的dom对象获取位置
+    props.pos = pos
+    PopoverVm = new PopoverExtend({data:props})
+    PopoverVm = PopoverVm.$mount()
+    const bodyDom = document.body
+    bodyDom.appendChild(PopoverVm.$el)
+    return PopoverVm
+}
+
+createPopover.resetPosition = (pDom,tDom, leftW, tipPlace, border) => {
+    return calcTipPosition(pDom, tDom, leftW, tipPlace, border)
+}
+createPopover.remove=(vm) => {
+    if (!vm) return;
+    if (vm._isDestroyed) return;
+    vm.$destroy();
+    const dom=vm.$el;
+    if (dom) dom.parentNode.removeChild(dom);
+}
+export default createPopover

+ 132 - 0
src/components/Select/popover.vue

@@ -0,0 +1,132 @@
+ 
+<template>
+    <transition :name="'slide'+tipPlace" >
+        <div class="count-popover" ref="popover" :style="popoverStyle" v-show="showTip" >
+            <span class="count-popover-text"> {{innertext}}</span>
+            <span class="tranigle" :style="tranigleStyle"></span>
+        </div>
+    </transition>
+</template>
+<script>
+import {calcTipPosition} from './utils'
+export default {
+    data(){
+        return {
+            innertext:'',
+            pos:{},
+            popoverStyle:{
+                top:0,
+                left:0,
+                bottom:0
+            },
+            tranigleStyle:{
+                top:0,
+                left:0,
+                bottom:0
+            },
+            tipPlace:'',
+            showTip:false
+        }
+    },
+    watch:{
+        innertext:{
+            handler(n,o) {
+                this.$nextTick(()=>{
+                    let tDom = this.getClientBoxWH()
+                    let pos = calcTipPosition(this.pos, tDom, this.leftW, this.tipPlace, 12)
+                    if (pos.finalBottom) {
+                        this.popoverStyle={
+                            bottom: pos.finalBottom + 'px'
+                        }
+                    } else {
+                        this.popoverStyle={
+                            top: pos.finalTop+ 'px',
+                        }
+                    }
+                    if (pos.tranigleBottom) {
+                        this.tranigleStyle = {
+                            bottom: pos.tranigleBottom+ 'px',
+                        }
+                    } else {
+                        this.tranigleStyle = {
+                            top: pos.tranigleTop+ 'px',
+                        }
+                    }
+                    this.popoverStyle.left = pos.finalLeft + 'px',
+                    this.tranigleStyle.left = pos.tranigleLeft + 'px'
+                    this.$emit('sotrePOs', tDom)
+                })
+            },
+            immediate:true
+        }
+    },
+    mounted() {
+        
+    },
+    methods: {
+        getClientBoxWH () {
+            const body=document.body
+            let tag = document.createElement('div')
+            let html = ''
+            tag.className = 'count-popover'
+            tag.innerHTML= `<span>${this.innertext}</span>`
+            body.appendChild(tag)
+            let {width, height} = tag.getBoundingClientRect()
+            body.removeChild(tag)
+            return {width, height}
+        }
+    }
+}
+</script>
+<style lang="stylus">
+.count-popover
+    position absolute
+    z-index 7600
+    display inline-block
+    padding 8px 12px
+    background-color $white
+    border-radius 4px
+    max-width 480px
+    max-height 420px
+    word-wrap break-word
+    word-break:normal
+    pointer-events none
+    box-shadow $box-shadow-bottom
+    .tranigle
+        position: absolute
+        display: inline-block
+        width 12px
+        height 12px
+        background $white
+        transform rotate(-45deg)
+        z-index: 10
+        // border 1px solid red
+    .count-popover-text
+        display inline-block
+        width 100%
+        height 100%
+        overflow hidden
+@keyframes slidetop
+  from
+    opacity: 0
+    transform: translateY(32px)
+  to
+    opacity: 1
+    transform: translateY(0)
+.slidetop-enter-active
+  animation: slidetop 0.3s
+.slidetop-leave-active
+  animation: slidetop 0.3s reverse
+
+@keyframes slidebottom
+  from
+    opacity: 0
+    transform: translateY(-32px)
+  to
+    opacity: 1
+    transform: translateY(0)
+.slidebottom-enter-active
+  animation: slidebottom 0.3s
+.slidebottom-leave-active
+  animation: slidebottom 0.3s reverse
+</style>

+ 9 - 0
src/components/Select/static/iconSvg/action/AIS.svg

@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <path fill="#fff" d="M317.397333 677.632h392.533334c25.6 0 42.666667 17.066667 42.666666 42.666667s-17.066667 42.666667-42.666666 42.666666h-392.533334c-25.6 0-42.666667-17.066667-42.666666-42.666666 0-21.333333 17.066667-42.666667 42.666666-42.666667z"/>
+    <path d="M172.330667 41.898667h674.133333c51.2 0 89.6 38.4 89.6 85.333333v768c0 46.933333-38.4 85.333333-89.6 85.333333h-674.133333c-51.2 0-89.6-38.4-89.6-85.333333v-768c4.266667-46.933333 42.666667-85.333333 89.6-85.333333z m0 85.333333v768h674.133333v-768h-674.133333z"
+          fill="#80A0BA"/>
+    <path fill="#fff" d="M496.597333 494.165333l-98.133333-102.4c-12.8-17.066667-38.4-17.066667-55.466667 0s-17.066667 38.4-4.266666 51.2l162.133333 166.4 238.933333-290.133333c12.8-17.066667 12.8-42.666667-4.266666-55.466667s-42.666667-12.8-55.466667 4.266667l-183.466667 226.133333z"/>
+</svg>

File diff suppressed because it is too large
+ 15 - 0
src/components/Select/static/iconSvg/action/AIS_filled.svg


File diff suppressed because it is too large
+ 8 - 0
src/components/Select/static/iconSvg/action/BIAM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/BIAM_filled.svg


File diff suppressed because it is too large
+ 10 - 0
src/components/Select/static/iconSvg/action/EHM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/EHM_filled.svg


File diff suppressed because it is too large
+ 10 - 0
src/components/Select/static/iconSvg/action/EMS.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/EMS_filled.svg


File diff suppressed because it is too large
+ 8 - 0
src/components/Select/static/iconSvg/action/EOM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/EOM_filled.svg


File diff suppressed because it is too large
+ 8 - 0
src/components/Select/static/iconSvg/action/EQM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/EQM_filled.svg


File diff suppressed because it is too large
+ 10 - 0
src/components/Select/static/iconSvg/action/GC.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/GC_filled.svg


+ 9 - 0
src/components/Select/static/iconSvg/action/HRM.svg

@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <path fill="#fff" d="M512 554.666667c140.8 0 256-115.2 256-256s-115.2-256-256-256-256 115.2-256 256 115.2 256 256 256z m0-85.333334c-93.866667 0-170.666667-76.8-170.666667-170.666666s76.8-170.666667 170.666667-170.666667 170.666667 76.8 170.666667 170.666667-76.8 170.666667-170.666667 170.666666z"/>
+    <path fill="#fff" d="M512 469.333333C251.733333 469.333333 42.666667 678.4 42.666667 938.666667c0 25.6 17.066667 42.666667 42.666666 42.666666s42.666667-17.066667 42.666667-42.666666c0-213.333333 170.666667-384 384-384 25.6 0 42.666667-17.066667 42.666667-42.666667s-17.066667-42.666667-42.666667-42.666667z"/>
+    <path d="M588.8 652.8H896c25.6 0 42.666667 17.066667 42.666667 42.666667s-17.066667 42.666667-42.666667 42.666666h-307.2c-25.6 0-42.666667-17.066667-42.666667-42.666666 0-21.333333 21.333333-42.666667 42.666667-42.666667zM588.8 832H896c25.6 0 42.666667 17.066667 42.666667 42.666667s-17.066667 42.666667-42.666667 42.666666h-307.2c-25.6 0-42.666667-17.066667-42.666667-42.666666s21.333333-42.666667 42.666667-42.666667z"
+          fill="#fff"/>
+</svg>

File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/HRM_filled.svg


+ 9 - 0
src/components/Select/static/iconSvg/action/ICSOCS.svg

@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1126 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <path d="M1024 0c56.32 0 102.4 46.08 102.4 102.4v665.6c0 56.32-46.08 102.4-102.4 102.4H102.4c-56.32 0-102.4-46.08-102.4-102.4V102.4C0 46.08 46.08 0 102.4 0h921.6z m0 102.4H102.4v665.6h921.6V102.4zM256 921.6h614.4c30.72 0 51.2 20.48 51.2 51.2s-20.48 51.2-51.2 51.2H256c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2z"
+          fill="#80A0BA"/>
+    <path fill="#fff" d="M256 256h614.4c30.72 0 51.2 20.48 51.2 51.2s-20.48 51.2-51.2 51.2H256c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2zM256 512h614.4c30.72 0 51.2 20.48 51.2 51.2s-20.48 51.2-51.2 51.2H256c-30.72 0-51.2-20.48-51.2-51.2s20.48-51.2 51.2-51.2z"/>
+    <path fill="#fff" d="M768 153.6c30.72 0 51.2 20.48 51.2 51.2v204.8c0 30.72-20.48 51.2-51.2 51.2s-51.2-20.48-51.2-51.2V204.8c0-30.72 20.48-51.2 51.2-51.2zM358.4 409.6c30.72 0 51.2 20.48 51.2 51.2v204.8c0 30.72-20.48 51.2-51.2 51.2s-51.2-20.48-51.2-51.2V460.8c0-30.72 20.48-51.2 51.2-51.2z"/>
+</svg>

File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/ICSOCS_filled.svg


File diff suppressed because it is too large
+ 8 - 0
src/components/Select/static/iconSvg/action/IM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/IM_filled.svg


File diff suppressed because it is too large
+ 10 - 0
src/components/Select/static/iconSvg/action/OMS.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/OMS_filled.svg


File diff suppressed because it is too large
+ 8 - 0
src/components/Select/static/iconSvg/action/PAM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/PAM_filled.svg


+ 9 - 0
src/components/Select/static/iconSvg/action/PDM.svg

@@ -0,0 +1,9 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <path d="M128 42.666667h768c46.933333 0 85.333333 38.4 85.333333 85.333333v768c0 46.933333-38.4 85.333333-85.333333 85.333333H128c-46.933333 0-85.333333-38.4-85.333333-85.333333V128c0-46.933333 38.4-85.333333 85.333333-85.333333z m0 85.333333v768h768V128H128z"
+          fill="#80A0BA"/>
+    <path d="M106.666667 448h844.8v-85.333333H106.666667z" fill="#80A0BA"/>
+    <path fill="#fff" d="M187.733333 187.733333h106.666667v106.666667H187.733333zM366.933333 187.733333h106.666667v106.666667H366.933333zM546.133333 187.733333h106.666667v106.666667h-106.666667z"/>
+</svg>

File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/PDM_filled.svg


+ 11 - 0
src/components/Select/static/iconSvg/action/PES.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <path d="M375.466667 0c25.6 0 42.666667 17.066667 42.666666 42.666667v89.6c0 25.6-17.066667 42.666667-42.666666 42.666666s-42.666667-17.066667-42.666667-42.666666V42.666667c0-25.6 21.333333-42.666667 42.666667-42.666667zM661.333333 0c25.6 0 42.666667 17.066667 42.666667 42.666667v89.6c0 25.6-17.066667 42.666667-42.666667 42.666666s-42.666667-17.066667-42.666666-42.666666V42.666667c0-25.6 17.066667-42.666667 42.666666-42.666667z"
+          fill="#80A0BA"/>
+    <path fill="#fff" d="M507.733333 315.733333c25.6 0 42.666667 17.066667 42.666667 42.666667v230.4c0 25.6-17.066667 42.666667-42.666667 42.666667s-42.666667-17.066667-42.666666-42.666667V358.4c0-21.333333 17.066667-42.666667 42.666666-42.666667z"/>
+    <path fill="#fff" d="M512 729.6m-64 0a64 64 0 1 0 128 0 64 64 0 1 0-128 0Z"/>
+    <path d="M170.666667 140.8h682.666666c46.933333 0 85.333333 38.4 85.333334 85.333333V896c0 46.933333-38.4 85.333333-85.333334 85.333333H170.666667c-46.933333 0-85.333333-38.4-85.333334-85.333333V226.133333c0-46.933333 38.4-85.333333 85.333334-85.333333z m0 85.333333V896h682.666666V226.133333H170.666667z"
+          fill="#80A0BA"/>
+</svg>

File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/PES_filled.svg


+ 11 - 0
src/components/Select/static/iconSvg/action/SCM.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1583834945538" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
+    <path d="M418.112 65.216h190.4c47.104 0 85.312 38.208 85.312 85.312v116.096c0 47.104-38.208 85.312-85.312 85.312H418.112A85.312 85.312 0 0 1 332.8 266.624V150.528c0-47.104 38.208-85.312 85.312-85.312z m0 85.312v116.096h190.4V150.528H418.112z"
+          fill="#FFFFFF" />
+    <path d="M129.28 674.496h190.4c47.104 0 85.312 38.208 85.312 85.312v116.096c0 47.104-38.208 85.312-85.312 85.312H129.28a85.312 85.312 0 0 1-85.312-85.312v-116.096c0-47.104 38.208-85.312 85.312-85.312z m0 85.312v116.096h190.4v-116.096H129.28zM706.944 674.496h190.336c47.168 0 85.376 38.208 85.376 85.312v116.096c0 47.104-38.208 85.312-85.376 85.312h-190.336a85.312 85.312 0 0 1-85.312-85.312v-116.096c0-47.104 38.208-85.312 85.312-85.312z m0 85.312v116.096h190.336v-116.096h-190.336z"
+          fill="#80A0BA" />
+    <path d="M267.136 558.528h492.352v136.512H844.8V548.032c0-42.496-36.288-74.88-78.72-74.88H260.544c-42.496 0-78.784 32.384-78.784 74.88v145.344h85.312V558.528z"
+          fill="#80A0BA" />
+    <path d="M477.184 351.936h72.192v143.36H477.184z" fill="#80A0BA" />
+</svg>

File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/SCM_filled.svg


File diff suppressed because it is too large
+ 8 - 0
src/components/Select/static/iconSvg/action/SRM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/SRM_filled.svg


File diff suppressed because it is too large
+ 10 - 0
src/components/Select/static/iconSvg/action/WFM.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/WFM_filled.svg


File diff suppressed because it is too large
+ 11 - 0
src/components/Select/static/iconSvg/action/addCollection.svg


+ 11 - 0
src/components/Select/static/iconSvg/action/adjustTimeRange.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <path d="M512 981.333333c259.2 0 469.333333-210.133333 469.333333-469.333333S771.2 42.666667 512 42.666667 42.666667 252.8 42.666667 512s210.133333 469.333333 469.333333 469.333333z m0-85.333333a384 384 0 1 1 0-768 384 384 0 0 1 0 768z"
+          fill="#8D9399"/>
+    <path d="M420.565333 323.925333m42.666667 0l0 0q42.666667 0 42.666667 42.666667l0 187.733333q0 42.666667-42.666667 42.666667l0 0q-42.666667 0-42.666667-42.666667l0-187.733333q0-42.666667 42.666667-42.666667Z"
+          fill="#373C43"/>
+    <path d="M760.704 526.506667m0 42.666666l0 0q0 42.666667-42.666667 42.666667l-249.813333 0q-42.666667 0-42.666667-42.666667l0 0q0-42.666667 42.666667-42.666666l249.813333 0q42.666667 0 42.666667 42.666666Z"
+          fill="#373C43"/>
+</svg>

File diff suppressed because it is too large
+ 12 - 0
src/components/Select/static/iconSvg/action/alarm.svg


+ 8 - 0
src/components/Select/static/iconSvg/action/analysis.svg

@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
+    <path d="M377.941333 80.384C180.992 136.704 42.666667 318.208 42.666667 527.061333c0 256.384 206.72 464.298667 461.824 464.298667 201.472 0 377.770667-130.816 439.210666-320.341333a42.666667 42.666667 0 1 0-81.194666-26.325334c-50.090667 154.666667-193.877333 261.333333-357.973334 261.333334C296.576 906.026667 128 736.426667 128 527.061333c0-170.581333 112.896-318.762667 273.408-364.629333a42.666667 42.666667 0 0 0-23.466667-82.048z"
+          fill="#373C43"/>
+    <path d="M978.432 547.669333a42.666667 42.666667 0 0 1-42.154667 48.981334l-484.693333 0.384V85.333333A42.666667 42.666667 0 0 1 494.805333 42.666667c267.648 0 484.053333 225.365333 484.053334 498.730666 0 2.133333-0.170667 4.224-0.426667 6.272z m-85.930667-36.309333c-13.909333-198.741333-165.034667-360.106667-355.626666-381.056v381.312l355.626666-0.256z"
+          fill="#8D9399"/>
+</svg>

File diff suppressed because it is too large
+ 14 - 0
src/components/Select/static/iconSvg/action/apply.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/ascendingOrder.svg


File diff suppressed because it is too large
+ 14 - 0
src/components/Select/static/iconSvg/action/assign.svg


File diff suppressed because it is too large
+ 14 - 0
src/components/Select/static/iconSvg/action/audit.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/backLog.svg


File diff suppressed because it is too large
+ 7 - 0
src/components/Select/static/iconSvg/action/boiler.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/bottomSetting.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/calendar.svg


File diff suppressed because it is too large
+ 7 - 0
src/components/Select/static/iconSvg/action/camera.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/cease.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/chainRatio.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/close.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/collection.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/complaint.svg


+ 1 - 0
src/components/Select/static/iconSvg/action/complete.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#333333" d="M53.333333 550.912l305.877334 347.136a85.333333 85.333333 0 0 0 132.693333-5.76l481.706667-653.653333a42.666667 42.666667 0 0 0-68.693334-50.602667l-481.706666 653.653333L117.333333 494.506667a42.666667 42.666667 0 1 0-64 56.405333z"  /></svg>

+ 11 - 0
src/components/Select/static/iconSvg/action/computerTerminal.svg

@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+        "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg viewBox="0 0 1024 1024" version="1.1"
+     xmlns="http://www.w3.org/2000/svg">
+    <g transform="translate(0, 15)">
+        <path d="M0 128v512a128 128 0 0 0 128 128h768a128 128 0 0 0 128-128V128a128 128 0 0 0-128-128H128a128 128 0 0 0-128 128z m85.333333 512V128a42.666667 42.666667 0 0 1 42.666667-42.666667h768a42.666667 42.666667 0 0 1 42.666667 42.666667v512a42.666667 42.666667 0 0 1-42.666667 42.666667H128a42.666667 42.666667 0 0 1-42.666667-42.666667z"
+              fill="#373C43"/>
+        <path d="M256 896m42.666667 0l426.666666 0q42.666667 0 42.666667 42.666667l0 0q0 42.666667-42.666667 42.666666l-426.666666 0q-42.666667 0-42.666667-42.666666l0 0q0-42.666667 42.666667-42.666667Z"
+              fill="#8D9399"/>
+    </g>
+</svg>

File diff suppressed because it is too large
+ 9 - 0
src/components/Select/static/iconSvg/action/confirm.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/contrast.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/control.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/coolingRoom.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/coolingStation.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/coolingTower.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/copy.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/cost.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/data.svg


File diff suppressed because it is too large
+ 1 - 0
src/components/Select/static/iconSvg/action/delete.svg


+ 0 - 0
src/components/Select/static/iconSvg/action/deleteUpload.svg


Some files were not shown because too many files changed in this diff