Selaa lähdekoodia

苏南产业园 管理端 第一次提交

陈鹏铭 2 vuotta sitten
commit
25c6cf8178
100 muutettua tiedostoa jossa 8259 lisäystä ja 0 poistoa
  1. 16 0
      .hbuilderx/launch.json
  2. 17 0
      App.vue
  3. 0 0
      LICENSE
  4. 129 0
      README.md
  5. 0 0
      changelog.md
  6. BIN
      common/assets/image/comicon.png
  7. BIN
      common/assets/image/fangke.png
  8. BIN
      common/assets/image/gantanhao.png
  9. BIN
      common/assets/image/guanbi.png
  10. BIN
      common/assets/image/head.png
  11. BIN
      common/assets/image/homeBg.png
  12. BIN
      common/assets/image/houseSel.png
  13. BIN
      common/assets/image/houseUnSel.png
  14. BIN
      common/assets/image/logo.png
  15. BIN
      common/assets/image/logobig.png
  16. 39 0
      common/assets/image/mineBg.svg
  17. BIN
      common/assets/image/mineSel.png
  18. BIN
      common/assets/image/mineUnSel.png
  19. 12 0
      common/assets/image/pswicon.svg
  20. BIN
      common/assets/image/qiye.png
  21. BIN
      common/assets/image/quezhen.png
  22. BIN
      common/assets/image/renyuan.png
  23. BIN
      common/assets/image/right.png
  24. BIN
      common/assets/image/suo.png
  25. BIN
      common/assets/image/yichang.png
  26. 9 0
      common/assets/image/yzmicon.svg
  27. 3 0
      common/assets/js/vconsole.js
  28. 16 0
      common/style/common.scss
  29. 622 0
      common/style/index.scss
  30. 215 0
      common/style/picker.css
  31. 324 0
      common/style/reset.scss
  32. 1688 0
      common/uni.css
  33. 37 0
      config.js
  34. 20 0
      index.html
  35. 150 0
      js_sdk/auth.js
  36. 185 0
      js_sdk/common.js
  37. 173 0
      js_sdk/dateFormat.js
  38. 488 0
      js_sdk/http.js
  39. 274 0
      js_sdk/request/request.js
  40. 118 0
      js_sdk/request/request.md
  41. 129 0
      js_sdk/request/requestConfig.js
  42. 72 0
      main.js
  43. 195 0
      manifest.json
  44. 1 0
      node_modules/.bin/atob
  45. 1 0
      node_modules/.bin/color-support
  46. 1 0
      node_modules/.bin/gulp
  47. 1 0
      node_modules/.bin/resolve
  48. 1 0
      node_modules/.bin/semver
  49. 1 0
      node_modules/.bin/which
  50. 21 0
      node_modules/ansi-colors/LICENSE
  51. 105 0
      node_modules/ansi-colors/README.md
  52. 456 0
      node_modules/ansi-colors/index.js
  53. 176 0
      node_modules/ansi-colors/package.json
  54. 31 0
      node_modules/ansi-colors/types/index.d.ts
  55. 21 0
      node_modules/ansi-gray/LICENSE
  56. 14 0
      node_modules/ansi-gray/index.js
  57. 86 0
      node_modules/ansi-gray/package.json
  58. 74 0
      node_modules/ansi-gray/readme.md
  59. 4 0
      node_modules/ansi-regex/index.js
  60. 21 0
      node_modules/ansi-regex/license
  61. 108 0
      node_modules/ansi-regex/package.json
  62. 39 0
      node_modules/ansi-regex/readme.md
  63. 165 0
      node_modules/ansi-styles/index.js
  64. 9 0
      node_modules/ansi-styles/license
  65. 88 0
      node_modules/ansi-styles/package.json
  66. 147 0
      node_modules/ansi-styles/readme.md
  67. 21 0
      node_modules/ansi-wrap/LICENSE
  68. 89 0
      node_modules/ansi-wrap/README.md
  69. 5 0
      node_modules/ansi-wrap/index.js
  70. 60 0
      node_modules/ansi-wrap/package.json
  71. 15 0
      node_modules/anymatch/LICENSE
  72. 99 0
      node_modules/anymatch/README.md
  73. 67 0
      node_modules/anymatch/index.js
  74. 21 0
      node_modules/anymatch/node_modules/normalize-path/LICENSE
  75. 92 0
      node_modules/anymatch/node_modules/normalize-path/README.md
  76. 19 0
      node_modules/anymatch/node_modules/normalize-path/index.js
  77. 117 0
      node_modules/anymatch/node_modules/normalize-path/package.json
  78. 75 0
      node_modules/anymatch/package.json
  79. 21 0
      node_modules/append-buffer/LICENSE
  80. 95 0
      node_modules/append-buffer/README.md
  81. 41 0
      node_modules/append-buffer/index.js
  82. 84 0
      node_modules/append-buffer/package.json
  83. 4 0
      node_modules/archy/.travis.yml
  84. 18 0
      node_modules/archy/LICENSE
  85. 24 0
      node_modules/archy/examples/beep.js
  86. 25 0
      node_modules/archy/examples/multi_line.js
  87. 35 0
      node_modules/archy/index.js
  88. 83 0
      node_modules/archy/package.json
  89. 88 0
      node_modules/archy/readme.markdown
  90. 40 0
      node_modules/archy/test/beep.js
  91. 45 0
      node_modules/archy/test/multi_line.js
  92. 40 0
      node_modules/archy/test/non_unicode.js
  93. 21 0
      node_modules/arr-diff/LICENSE
  94. 130 0
      node_modules/arr-diff/README.md
  95. 47 0
      node_modules/arr-diff/index.js
  96. 110 0
      node_modules/arr-diff/package.json
  97. 21 0
      node_modules/arr-filter/LICENSE
  98. 72 0
      node_modules/arr-filter/README.md
  99. 33 0
      node_modules/arr-filter/index.js
  100. 0 0
      node_modules/arr-filter/package.json

+ 16 - 0
.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 17 - 0
App.vue

@@ -0,0 +1,17 @@
+<script>
+export default {
+  methods: {},
+};
+</script>
+
+<style lang="scss">
+@import "./common/uni.css";
+@import "/wxcomponents/weapp/dist/common/index.wxss";
+@import "./common/style/index.scss";
+
+//@media screen and (min-width: 768px) {
+//	body {
+//		overflow-y: scroll;
+//	}
+//}
+</style>

+ 0 - 0
LICENSE


+ 129 - 0
README.md

@@ -0,0 +1,129 @@
+# hello-uniapp
+
+`uni-app`框架示例,一套代码,同时发行到iOS、Android、H5、小程序等多个平台,请使用手机在下方扫码快速体验`uni-app`的强大功能。[官方文档](https://uniapp.dcloud.net.cn/)
+
+## 快速上手
+hello-uniapp 示例工程可以通过两种方式创建, 一种是 HBuilderX, 配套 IDE,集成开发;另一种是 CLI 创建;推荐前者。
+### 通过 HBuilderX 可视化界面创建(推荐)
+
+可视化的方式比较简单,HBuilderX内置相关环境,开箱即用,无需配置nodejs。
+
+开始之前,开发者需先下载安装如下工具:
+
+- HBuilderX:[官方IDE下载地址](https://www.dcloud.io/hbuilderx.html)
+
+HBuilderX是通用的前端开发工具,但为`uni-app`做了特别强化,请下载App开发版。
+
+由于截图在 github 不便浏览,参见官方文档 [HBuilderX 可视化界面创建](https://uniapp.dcloud.net.cn/quickstart?id=_1-%e9%80%9a%e8%bf%87-hbuilderx-%e5%8f%af%e8%a7%86%e5%8c%96%e7%95%8c%e9%9d%a2)
+
+### 通过 vue-cli 创建
+
+```
+npm install -g @vue/cli
+```
+
+#### 创建uni-app
+
+**使用正式版**(对应HBuilderX最新正式版)
+
+```
+vue create -p dcloudio/uni-preset-vue my-project
+```
+
+**使用alpha版**(对应HBuilderX最新alpha版)
+
+```
+vue create -p dcloudio/uni-preset-vue#alpha my-alpha-project
+```
+
+此时,会提示选择项目模板,选择 `hello uni-app` 项目模板,如下所示:
+
+<div>
+<img src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/h5-cli-01.png" width="300">
+</div>
+
+创建好后,进入项目目录
+```
+cd my-project
+```
+
+执行该命令运行到 h5 端
+```
+npm run dev:h5
+```
+
+欢迎提 issues,推荐到[官方社区](https://ask.dcloud.net.cn/explore/)提问。
+
+## 扫码体验
+
+<div class="quick">
+    <p>一套代码编到10个平台,这不是梦想。眼见为实,扫描10个二维码,亲自体验最全面的跨平台效果!</p>
+    <div style="display: flex;">
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/ba7d0750-517d-11eb-bdc1-8bd33eb6adaa.png" width="160" />
+        </div>
+        <b>Android版</b>
+      </a>
+      <a href="https://itunes.apple.com/cn/app/hello-uni-app/id1417078253?mt=8" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/bb3ef7c0-517d-11eb-bdc1-8bd33eb6adaa.png" width="160" />
+        </div>
+        <b>iOS版</b>
+      </a>
+      <a href="https://hellouniapp.dcloud.net.cn/" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/bb3ef7c0-517d-11eb-bdc1-8bd33eb6adaa.png" width="160" />
+        </div>
+        <b>H5版</b>
+      </a>
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box"><img src="//img.cdn.aliyun.dcloud.net.cn/guide/uniapp/gh_33446d7f7a26_430.jpg" width="160" /></div>
+        <b>微信小程序版</b>
+      </a>
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box"><img src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b131e0d0-517d-11eb-a16f-5b3e54966275.png" width="160" /></div>
+        <b>支付宝小程序版</b>
+      </a>
+    </div>
+    <div class="flex-img-group-view" style="margin-top: 20px;">
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box"><img src="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/b204e840-517d-11eb-8ff1-d5dcf8779628.png" width="160" /></div>
+        <b>百度小程序版</b>
+      </a>
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/mp-toutiao.png" width="160" />
+        </div>
+        <b>字节跳动小程序版</b>
+      </a>
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hello-uni-qq.png" width="160" />
+        </div>
+        <b>QQ小程序版</b>
+      </a>
+      <a href="//m3w.cn/uniapp" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hello-uni-qa-union.png" width="160" />
+        </div>
+        <b>快应用</b>
+      </a>
+      <a href="https://so.mp.360.cn/mp.html?appid=qh4j181qqtru354st6" target="_blank" class="clear-style barcode-view">
+        <div class="barcode-img-box">
+          <img src="https://img.cdn.aliyun.dcloud.net.cn/guide/uniapp/hello-uni-mp-360-qr.png" width="160" />
+        </div>
+        <b>360小程序</b>
+      </a>
+    </div>
+    <p>
+        <em>注:某些平台不能提交简单demo,故补充了一些其他功能;hello uni-app示例代码可从[github](https://github.com/dcloudio/hello-uniapp)获取</em></br>
+        <em>快应用仅支持 vivo 、oppo、华为</em></br>
+        <em>360小程序仅 windows平台支持,需要在360浏览器中打开</em></br>
+    </p>
+</div>
+
+`uni-app`官网文档详见[https://uniapp.dcloud.io](https://uniapp.dcloud.io)
+
+更多uni-app的模板、示例详见[插件市场](https://ext.dcloud.net.cn/)
+

+ 0 - 0
changelog.md


BIN
common/assets/image/comicon.png


BIN
common/assets/image/fangke.png


BIN
common/assets/image/gantanhao.png


BIN
common/assets/image/guanbi.png


BIN
common/assets/image/head.png


BIN
common/assets/image/homeBg.png


BIN
common/assets/image/houseSel.png


BIN
common/assets/image/houseUnSel.png


BIN
common/assets/image/logo.png


BIN
common/assets/image/logobig.png


+ 39 - 0
common/assets/image/mineBg.svg

@@ -0,0 +1,39 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="375" height="212" viewBox="0 0 375 212">
+  <defs>
+    <linearGradient id="linear-gradient" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#fff5f5"/>
+      <stop offset="1" stop-color="#f6f6f6"/>
+    </linearGradient>
+    <clipPath id="clip-path">
+      <rect id="矩形_1648" data-name="矩形 1648" width="375" height="212" transform="translate(0 88)" fill="#2821f4"/>
+    </clipPath>
+    <clipPath id="clip-path-2">
+      <rect id="矩形_1644" data-name="矩形 1644" width="375" height="351" fill="url(#linear-gradient)"/>
+    </clipPath>
+    <linearGradient id="linear-gradient-2" x1="0.5" x2="0.5" y2="1" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#e6eeff"/>
+      <stop offset="1" stop-color="#f6f6f6"/>
+    </linearGradient>
+    <linearGradient id="linear-gradient-4" y1="0.342" x2="1.117" y2="0.342" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#c7d8fb" stop-opacity="0.169"/>
+      <stop offset="0.271" stop-color="#cedefd" stop-opacity="0.051"/>
+      <stop offset="0.448" stop-color="#dce8ff" stop-opacity="0.529"/>
+      <stop offset="1" stop-color="#dce8ff" stop-opacity="0.29"/>
+    </linearGradient>
+    <linearGradient id="linear-gradient-5" y1="0.342" x2="1.117" y2="0.342" gradientUnits="objectBoundingBox">
+      <stop offset="0" stop-color="#c7d8fb" stop-opacity="0.169"/>
+      <stop offset="0.271" stop-color="#cedefd" stop-opacity="0.2"/>
+      <stop offset="0.448" stop-color="#dce8ff" stop-opacity="0.6"/>
+      <stop offset="1" stop-color="#dce8ff" stop-opacity="0.29"/>
+    </linearGradient>
+  </defs>
+  <g id="蒙版组_32" data-name="蒙版组 32" transform="translate(0 -88)" clip-path="url(#clip-path)">
+    <rect id="矩形_49" data-name="矩形 49" width="375" height="212" transform="translate(0 88)" fill="#2821f4"/>
+    <g id="组_37" data-name="组 37" transform="translate(0 88)" clip-path="url(#clip-path-2)" style="mix-blend-mode: soft-light;isolation: isolate">
+      <path id="路径_1048" data-name="路径 1048" d="M538.612,478.438l-126.2,42.756a12.719,12.719,0,0,1-16.8-12.047v-204.2a12.72,12.72,0,0,1,8.638-12.047l126.2-42.756a12.72,12.72,0,0,1,16.8,12.047v204.2A12.719,12.719,0,0,1,538.612,478.438Z" transform="translate(-406.365 -261.114)" opacity="0.53" fill="url(#linear-gradient-2)"/>
+      <path id="路径_1049" data-name="路径 1049" d="M854.448,451.949l-119.255,40.4a12.019,12.019,0,0,1-15.876-11.384V288.007a12.019,12.019,0,0,1,8.163-11.384l119.255-40.4A12.02,12.02,0,0,1,862.611,247.6v192.96A12.02,12.02,0,0,1,854.448,451.949Z" transform="translate(-524.203 -256.059)" opacity="0.53" fill="url(#linear-gradient-2)"/>
+      <path id="路径_1050" data-name="路径 1050" d="M992.594,480.632l-119.255,40.4a12.02,12.02,0,0,1-15.876-11.384V316.69a12.019,12.019,0,0,1,8.163-11.384l119.255-40.4a12.019,12.019,0,0,1,15.876,11.384v192.96A12.019,12.019,0,0,1,992.594,480.632Z" transform="translate(-574.492 -266.5)" opacity="0.53" fill="url(#linear-gradient-4)"/>
+      <path id="路径_1051" data-name="路径 1051" d="M576.758,494.6l93.721,31.751a9.446,9.446,0,0,0,12.477-8.946V365.757a9.447,9.447,0,0,0-6.415-8.946L582.82,325.059a9.446,9.446,0,0,0-12.477,8.946V485.65A9.446,9.446,0,0,0,576.758,494.6Z" transform="translate(-469.973 -288.449)" opacity="0.53" fill="url(#linear-gradient-5)"/>
+    </g>
+  </g>
+</svg>

BIN
common/assets/image/mineSel.png


BIN
common/assets/image/mineUnSel.png


+ 12 - 0
common/assets/image/pswicon.svg

@@ -0,0 +1,12 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+  <g id="组_767" data-name="组 767" transform="translate(-705.397 -368.424)">
+    <rect id="矩形_382" data-name="矩形 382" width="24" height="24" transform="translate(705.397 368.424)" fill="none"/>
+    <g id="组_766" data-name="组 766">
+      <path id="矩形_383" data-name="矩形 383" d="M714.849,373.266h5.1a1.837,1.837,0,0,1,1.838,1.837h0v2.283h-8.773V375.1a1.839,1.839,0,0,1,1.838-1.838Z" fill="none" stroke="#666" stroke-miterlimit="10" stroke-width="1"/>
+      <rect id="矩形_1568" data-name="矩形 1568" width="14.933" height="10.195" rx="3" transform="translate(709.931 377.388)" fill="none" stroke="#666" stroke-width="1"/>
+    </g>
+    <g id="椭圆_1" data-name="椭圆 1">
+      <circle id="椭圆_1-2" data-name="椭圆 1" cx="2.378" cy="2.378" r="2.378" transform="translate(715.02 379.697)" fill="none" stroke="#666" stroke-width="1"/>
+    </g>
+  </g>
+</svg>

BIN
common/assets/image/qiye.png


BIN
common/assets/image/quezhen.png


BIN
common/assets/image/renyuan.png


BIN
common/assets/image/right.png


BIN
common/assets/image/suo.png


BIN
common/assets/image/yichang.png


+ 9 - 0
common/assets/image/yzmicon.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
+  <g id="组_431" data-name="组 431" transform="translate(-574.024 -308.439)">
+    <g id="组_433" data-name="组 433" transform="translate(574.024 308.439)">
+      <rect id="矩形_1566-3" data-name="矩形 1566-3" width="24" height="24" fill="none"/>
+    </g>
+    <path id="路径_20" data-name="路径 20" d="M593.486,316.625v4.362A8.094,8.094,0,0,1,589.436,328l-2.119,1.223L585.2,328a8.1,8.1,0,0,1-4.051-7.012v-4.362a34.146,34.146,0,0,0,6.17-2.893A34.148,34.148,0,0,0,593.486,316.625Z" transform="translate(-1.292 -1.143)" fill="none" stroke="#666" stroke-linecap="round" stroke-miterlimit="10" stroke-width="1"/>
+    <path id="路径_21" data-name="路径 21" d="M584.79,321.259l2.023,1.664,3.431-4.2" transform="translate(-1.111 -0.895)" fill="none" stroke="#666" stroke-linecap="round" stroke-miterlimit="10" stroke-width="1"/>
+  </g>
+</svg>

+ 3 - 0
common/assets/js/vconsole.js

@@ -0,0 +1,3 @@
+import Vconsole from 'vconsole'
+const vConsole = new Vconsole()
+export default vConsole

+ 16 - 0
common/style/common.scss

@@ -0,0 +1,16 @@
+html,
+body,
+#app {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    width: 100%;
+    height: 100%;
+    background-color: #f0f3f5;
+}
+
+#app {
+    background-color: var(--white);
+}

+ 622 - 0
common/style/index.scss

@@ -0,0 +1,622 @@
+@import './reset.scss';
+@import './common.scss';
+
+
+.second_title {
+    float: left;
+    width: 30%;
+    font-size: 28rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #777777;
+
+}
+
+.second_title_1 {
+    float: left;
+    width: 25%;
+    font-size: 28rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #777777;
+
+}
+
+.iconfont {
+    /*font-family: "iconfont" !important;*/
+    font-size: 16px;
+    font-style: normal;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+.float_left {
+    float: left;
+}
+
+.clear_both {
+    clear: both;
+}
+
+.margin12rpx {
+    margin: 12rpx
+}
+
+.chuzu_label {
+    width: 312rpx;
+    height: 36rpx;
+    font-size: 26rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #333333;
+    line-height: 36rpx;
+}
+
+.chuzu_vlaue {
+    width: 86rpx;
+    font-size: 32rpx;
+    font-family: PingFang SC-Bold, PingFang SC;
+    font-weight: bold;
+    color: #ec7359;
+    line-height: 38rpx;
+}
+
+.mb14rpx {
+    margin-bottom: 14rpx;
+}
+
+.height34rpx {
+    height: 34rpx;
+}
+
+.height50rpx {
+    height: 50rpx;
+}
+
+.font24rpx {
+    font-size: 24rpx;
+}
+
+.fontcolor251FCA {
+    color: #251FCA
+}
+
+.roomstatus1 {
+    height: 38rpx;
+    border-radius: 8rpx 8rpx 8rpx 8rpx;
+    line-height: 38rpx;
+    background: rgba(29, 24, 188, 0.05);
+    border: none;
+    padding: 0rpx 16rpx;
+    font-weight: 500;
+    color: #1d18bc;
+}
+
+.roomstatus {
+    height: 50rpx;
+    line-height: 50rpx;
+    font-size: 24rpx;
+    padding: 0rpx 16rpx;
+    float: left;
+    border-radius: 8rpx 8rpx 8rpx 8rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #1d18bc;
+    border: 2rpx solid #1d18bc;
+    margin-left: 16rpx;
+}
+
+.roomstatus:first-child {
+    margin-left: 0 !important;
+}
+
+.height50px {
+    height: 50rpx;
+}
+
+.mb8rpx {
+    margin-bottom: 8rpx;
+}
+
+.width100 {
+    width: 100%;
+}
+
+.width90 {
+    width: 90%;
+}
+
+.width10 {
+    width: 10%;
+}
+
+.width10imp {
+    width: 10% !important;
+}
+
+.height36rpx {
+    height: 36rpx;
+}
+
+.height40rpx {
+    height: 40rpx;
+}
+
+.list-row {
+    width: calc(100% - 64rpx);
+    padding: 32rpx 32rpx 32rpx 32rpx;
+    background: #ffffff;
+    margin-bottom: 16rpx;
+    display: flex;
+    //height: 278rpx;
+    border-radius: 8rpx 8rpx 8rpx 8rpx;
+}
+
+.list {
+    width: calc(100% - 64rpx);
+
+    margin: 32rpx;
+}
+
+.mb16rpx {
+    margin-bottom: 16rpx;
+}
+
+.height66rpx {
+    height: 66rpx;
+}
+
+.height44rpx {
+    height: 44rpx;
+}
+
+.total {
+    padding: 8rpx 32rpx 8rpx 0;
+    text-align: right;
+    background: #ffffff;
+}
+
+.roomstatus {
+    height: 50rpx;
+    line-height: 50rpx;
+    font-size: 24rpx;
+    padding: 0rpx 16rpx;
+    float: left;
+    border-radius: 8rpx 8rpx 8rpx 8rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #1d18bc;
+    border: 2rpx solid #1d18bc;
+    margin-left: 16rpx;
+}
+
+.companystatus {
+    height: 42rpx;
+    width: 80rpx;
+    line-height: 42rpx;
+    font-size: 24rpx;
+    text-align: center;
+
+    float: left;
+    border-radius: 8rpx 8rpx 8rpx 8rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #1d18bc;
+    background-color: #F1f1f9;
+    border-radius: 8rpx;
+    margin-left: 16rpx;
+}
+
+.bgc1d18bc {
+    background-color: #1d18bc;
+}
+
+.van-tabs__line {
+    background-color: #1d18bc !important;
+}
+
+.mt42rpx {
+    margin-top: 42rpx;
+}
+
+.mb42rpx {
+    margin-bottom: 42rpx;
+}
+
+.pd42rpx {
+    padding-bottom: 42rpx;
+}
+
+.margint16rpx {
+    margin-top: 16rpx
+}
+
+.height554rpx {
+    height: 554rpx;
+}
+
+.height35px {
+    height: 35px;
+}
+
+.l35pxheight {
+    line-height: 35px;
+}
+
+.width622rpx {
+    width: 622rpx;
+}
+
+.pdl16 {
+    padding-left: 16rpx;
+}
+
+.mt32rpx {
+    margin-top: 32rpx;
+}
+
+.mb32rpx {
+    margin-bottom: 32rpx;
+}
+
+.mb16rpx {
+    margin-bottom: 16rpx;
+}
+
+.pdr16 {
+    padding-left: 16rpx;
+}
+
+.pdt10 {
+    padding-top: 10rpx;
+}
+
+.pdb10 {
+    padding-bottom: 10rpx;
+}
+
+.mt60rpx {
+    margin-top: 60rpx
+}
+
+.margint8rpx {
+    margin-top: 8rpx
+}
+
+.icon-arrow-up:before {
+    content: "\e685";
+}
+
+.icon-location:before {
+    content: "\e600";
+}
+
+.icon-right:before {
+    content: "\e70d";
+}
+
+.icon-radio:before {
+    content: "\e601";
+}
+
+.icon-time:before {
+    content: "\e621";
+}
+
+.icon-radio-checked:before {
+    content: "\e60c";
+}
+
+.icon-actived:before {
+    content: "\e61e";
+}
+
+.icon-arrow-down:before {
+    content: "\e602";
+}
+
+.width100 {
+    width: 100%;
+}
+
+.width30 {
+    width: 30%;
+}
+
+.width60 {
+    width: 60%;
+}
+
+.whitespacenowrap {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.first_title {
+    height: 44rpx;
+    line-height: 44rpx;
+    font-size: 32rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #333333;
+}
+
+.third_title {
+    float: left;
+    width: 60%;
+    font-size: 26rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #AAAAAA;
+
+}
+
+.third_title_1 {
+    float: left;
+    width: 40%;
+    font-size: 26rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #AAAAAA;
+
+}
+
+
+
+.yongtu_first_title {
+    width: 100%;
+    height: 44rpx;
+    font-size: 32rpx;
+    margin-bottom: 4rpx;
+    text-align: center;
+    font-weight: 500;
+    color: #333333;
+}
+
+.yongtu_second_title {
+    width: 100%;
+    height: 36rpx;
+    font-size: 26rpx;
+    text-align: center;
+    color: #AAAAAA;
+}
+
+.height28rpx {
+    height: 28rpx;
+}
+
+.width80 {
+    width: 80% !important;
+}
+
+.width70 {
+    width: 70%;
+}
+
+.width30 {
+    width: 30%;
+}
+
+.width20 {
+    width: 20% !important;
+}
+
+.width40 {
+    width: 40% !important;
+}
+
+.width40rpx {
+    width: 40rpx;
+}
+
+.width50 {
+    width: 50%;
+}
+
+.float_left {
+    float: left;
+}
+
+.float_right {
+    float: right;
+}
+
+.pdl32 {
+    padding-left: 32rpx;
+}
+
+.pdr32 {
+    padding-right: 32rpx;
+}
+
+.pdt32 {
+    padding-top: 32rpx;
+}
+
+.pdb32 {
+    padding-bottom: 32rpx;
+}
+
+.pdb16 {
+    padding-bottom: 16rpx;
+}
+
+.mgb20 {
+    margin-bottom: 20rpx;
+}
+
+.allpd32rpx {
+    padding: 32rpx;
+}
+
+.pdb20 {
+    margin-bottom: 20rpx;
+}
+
+.pdt20 {
+    padding-top: 20rpx
+}
+
+.height50rpx {
+    height: 50rpx;
+}
+
+.marginb16 {
+    margin-bottom: 16rpx;
+}
+
+.height40rpx {
+    height: 40rpx;
+}
+
+.list_date {
+    color: #AAAAAA;
+    font-size: 28rpx;
+    font-weight: 500;
+}
+
+.border_bottom_ccc {
+    border-bottom: 2rpx solid #CCCCCC;
+}
+
+.report_title {
+    font-size: 28rpx;
+    height: 40rpx;
+    font-family: PingFang SC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #333333;
+}
+
+.border_bottom_f5f5f5 {
+    border-bottom: 2rpx solid #F5F5F5;
+}
+
+.txt_center {
+    text-align: center;
+}
+
+.height300rpx {
+    height: 300rpx;
+}
+
+.bgcF9F9F9 {
+    background: #f9f9f9;
+}
+
+.height218rpx {
+    height: 218rpx;
+}
+
+.cell_1 {
+    float: left;
+    width: 100%;
+}
+
+.cell_2 {
+    float: left;
+    width: 20%;
+
+    img {
+        height: 60rpx;
+        width: 60rpx;
+        float: right;
+        margin: 96rpx 0rpx 94rpx 0;
+    }
+}
+
+.ml16 {
+    margin-left: 16rpx;
+}
+
+.ml32 {
+    margin-left: 32rpx;
+}
+
+.mt10 {
+    margin-top: 10rpx;
+}
+
+.cell_3 {
+    width: 5%;
+    float: right;
+
+    img {
+        height: 50rpx;
+        width: 50rpx;
+        float: right;
+        margin: 35rpx 0;
+    }
+}
+
+.width50 {
+    width: 50%;
+}
+
+.marginl8 .ml8 {
+    margin-left: 8rpx;
+}
+
+.lh40rpx {
+    line-height: 40rpx;
+}
+
+.lh50rpx {
+    line-height: 50rpx;
+}
+
+.disflex {
+    display: flex;
+}
+
+.align_items_center {
+    align-items: center;
+}
+
+.height44rpx {
+    height: 44rpx;
+}
+
+.disblock {
+    display: block;
+}
+
+.marginauto {
+    margin: auto;
+}
+
+.font28rpx {
+    font-size: 28rpx;
+}
+
+.color292d98 {
+    color: #292d98;
+}
+
+.colorfffff {
+    color: #FFFFFF;
+}
+
+.bgcFFFFFF {
+    background-color: #FFFFFF;
+}
+
+.mt24rpx {
+    margin-top: 24rpx;
+}
+
+.mb24rpx {
+    margin-bottom: 24rpx;
+}
+
+.padb24rpx {
+    padding-bottom: 24rpx;
+}
+
+.height80rpx {
+    height: 80rpx;
+}
+
+.height24rpx {
+    height: 24rpx;
+}

+ 215 - 0
common/style/picker.css

@@ -0,0 +1,215 @@
+.weui-mask {
+  position: fixed;
+  z-index: 1000;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.6);
+}
+.weui-mask_transparent {
+  position: fixed;
+  z-index: 1000;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+}
+.weui-picker {
+  position: fixed;
+  width: 100%;
+  left: 0;
+  bottom: 0;
+  z-index: 5000;
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+  -webkit-transform: translate(0, 100%);
+  transform: translate(0, 100%);
+  -webkit-transition: -webkit-transform 0.3s;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+}
+.weui-picker__hd {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  padding: 9px 15px;
+  background-color: var(--White);
+  position: relative;
+  text-align: center;
+  font-size: 17px;
+}
+.weui-picker__hd:after {
+  content: ' ';
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  height: 1px;
+  border-bottom: 1px solid #e5e5e5;
+  color: #e5e5e5;
+  -webkit-transform-origin: 0 100%;
+  transform-origin: 0 100%;
+  -webkit-transform: scaleY(0.5);
+  transform: scaleY(0.5);
+}
+.weui-picker__action {
+  display: block;
+  -webkit-box-flex: 1;
+  -webkit-flex: 1;
+  flex: 1;
+  color: #1aad19;
+}
+.weui-picker__action:first-child {
+  text-align: left;
+  color: #888;
+}
+.weui-picker__action:last-child {
+  text-align: right;
+}
+.weui-picker__bd {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: flex;
+  position: relative;
+  background-color: var(--White);
+  height: 238px;
+  overflow: hidden;
+}
+.weui-picker__group {
+  -webkit-box-flex: 1;
+  -webkit-flex: 1;
+  flex: 1;
+  position: relative;
+  height: 100%;
+}
+.weui-picker__mask {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  margin: 0 auto;
+  z-index: 3;
+  background: -webkit-linear-gradient(
+      top,
+      rgba(255, 255, 255, 0.95),
+      rgba(255, 255, 255, 0.6)
+    ),
+    -webkit-linear-gradient(bottom, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.6));
+  background: linear-gradient(
+      180deg,
+      rgba(255, 255, 255, 0.95),
+      rgba(255, 255, 255, 0.6)
+    ),
+    linear-gradient(0deg, rgba(255, 255, 255, 0.95), rgba(255, 255, 255, 0.6));
+  background-position: top, bottom;
+  background-size: 100% 102px;
+  background-repeat: no-repeat;
+  -webkit-transform: translateZ(0);
+  transform: translateZ(0);
+}
+.weui-picker__indicator {
+  width: 100%;
+  height: 34px;
+  position: absolute;
+  left: 0;
+  top: 102px;
+  z-index: 3;
+}
+.weui-picker__indicator:before {
+  content: ' ';
+  position: absolute;
+  left: 0;
+  top: 0;
+  right: 0;
+  height: 1px;
+  border-top: 1px solid #e5e5e5;
+  color: #e5e5e5;
+  -webkit-transform-origin: 0 0;
+  transform-origin: 0 0;
+  -webkit-transform: scaleY(0.5);
+  transform: scaleY(0.5);
+}
+.weui-picker__indicator:after {
+  content: ' ';
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  height: 1px;
+  border-bottom: 1px solid #e5e5e5;
+  color: #e5e5e5;
+  -webkit-transform-origin: 0 100%;
+  transform-origin: 0 100%;
+  -webkit-transform: scaleY(0.5);
+  transform: scaleY(0.5);
+}
+.weui-picker__content {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+}
+.weui-picker__item {
+  padding: 0;
+  height: 34px;
+  line-height: 34px;
+  text-align: center;
+  color: var(--DarkBlack);
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}
+.weui-picker__item_disabled {
+  color: #808080;
+}
+@-webkit-keyframes slideUp {
+  from {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+@keyframes slideUp {
+  from {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+.weui-animate-slide-up {
+  -webkit-animation: slideUp ease 0.3s forwards;
+  animation: slideUp ease 0.3s forwards;
+}
+@-webkit-keyframes slideDown {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+  to {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+@keyframes slideDown {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+  to {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+.weui-animate-slide-down {
+  -webkit-animation: slideDown ease 0.3s forwards;
+  animation: slideDown ease 0.3s forwards;
+}

+ 324 - 0
common/style/reset.scss

@@ -0,0 +1,324 @@
+html {
+    line-height: 1.15;
+
+    -ms-text-size-adjust: 100%;
+
+    -webkit-text-size-adjust: 100%;
+
+}
+
+body {
+    margin: 0;
+}
+
+
+
+article,
+aside,
+footer,
+header,
+nav,
+section {
+    display: block;
+}
+
+
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+
+
+figcaption,
+figure,
+main {
+
+    display: block;
+}
+
+
+
+
+
+
+hr {
+    box-sizing: content-box;
+
+    height: 0;
+
+    overflow: visible;
+
+}
+
+
+pre {
+    font-family: DINPro-Regular, Roboto;
+    font-size: 1em;
+
+}
+
+
+a {
+    background-color: transparent;
+
+    -webkit-text-decoration-skip: objects;
+
+}
+
+
+
+abbr[title] {
+    border-bottom: none;
+
+    text-decoration: underline;
+
+    text-decoration: underline dotted;
+
+}
+
+
+b,
+strong {
+    font-weight: inherit;
+}
+
+
+b,
+strong {
+    font-weight: bolder;
+}
+
+
+code,
+kbd,
+samp {
+    font-family: monospace, monospace;
+
+    font-size: 1em;
+
+}
+
+dfn {
+    font-style: italic;
+}
+
+
+mark {
+    background-color: #ff0;
+    color: #000;
+}
+
+
+
+small {
+    font-size: 80%;
+}
+
+
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+sup {
+    top: -0.5em;
+}
+
+audio,
+video {
+    display: inline-block;
+}
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+
+
+img {
+    border-style: none;
+}
+
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+
+button,
+input,
+optgroup,
+select,
+textarea {
+    font-family: sans-serif;
+
+    font-size: 100%;
+
+    line-height: 1.15;
+
+    margin: 0;
+
+}
+
+
+button,
+input {
+
+    overflow: visible;
+}
+
+
+
+button,
+select {
+
+    text-transform: none;
+}
+
+
+button,
+html [type="button"],
+
+[type="reset"],
+[type="submit"] {
+    -webkit-appearance: button;
+
+}
+
+
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+    border-style: none;
+    padding: 0;
+}
+
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+    outline: 1px dotted ButtonText;
+}
+
+
+
+fieldset {
+    padding: 0.35em 0.75em 0.625em;
+}
+
+
+
+legend {
+    box-sizing: border-box;
+
+    color: inherit;
+
+    display: table;
+
+    max-width: 100%;
+
+    padding: 0;
+
+    white-space: normal;
+
+}
+
+progress {
+    display: inline-block;
+
+    vertical-align: baseline;
+
+}
+
+
+
+textarea {
+    overflow: auto;
+}
+
+
+
+[type="checkbox"],
+[type="radio"] {
+    box-sizing: border-box;
+
+    padding: 0;
+
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+    height: auto;
+}
+
+
+[type="search"] {
+    -webkit-appearance: textfield;
+
+    outline-offset: -2px;
+
+}
+
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+
+
+::-webkit-file-upload-button {
+    -webkit-appearance: button;
+
+    font: inherit;
+
+}
+
+
+
+details,
+
+menu {
+    display: block;
+}
+
+
+
+summary {
+    display: list-item;
+}
+
+
+
+canvas {
+    display: inline-block;
+}
+
+
+
+template {
+    display: none;
+}
+
+
+[hidden] {
+    display: none;
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1688 - 0
common/uni.css


+ 37 - 0
config.js

@@ -0,0 +1,37 @@
+import {
+    BASE_URI
+} from "./pages/utils/constant.js";
+
+// console.log(BASE_URI)
+var baseUrl = BASE_URI
+
+let device, platform;
+device = uni.getSystemInfoSync().brand + ' ' + uni.getSystemInfoSync().model;
+
+// #ifdef MP-WEIXIN
+platform = 'wxmini';
+// #endif
+
+// #ifdef APP-PLUS
+platform = uni.getSystemInfoSync().platform;
+// #endif
+
+
+// #ifndef APP-PLUS||MP-WEIXIN
+device = 'h5';
+// #endif
+
+
+// app版本
+const version = "1.0";
+// 高德地图 key
+const key = "53ea64b17287b1f7323e9f29870af813";
+
+
+export default {
+    device,
+    version,
+    platform,
+    key,
+    baseUrl,
+}

+ 20 - 0
index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 150 - 0
js_sdk/auth.js

@@ -0,0 +1,150 @@
+import common from './common.js'
+
+export default {
+
+    TYPE_FRAME: 'FRAME',
+
+    TYPE_BIZ: 'BIZ',
+
+    TYPE_USER: 'USER',
+
+    TYPE_PERSON_BIZ: 'BIZ_PERSON',
+
+    // ------------------------------ User -----------------------------------
+
+    uid: function () {
+        return this.currUser() ? this.currUser().id : null
+    },
+
+    setUser: function (value) {
+        uni.setStorage({
+            key: 'laocui_user_token',
+            data: value,
+            success: function () {}
+        });
+    },
+    setUserInfo(value) {
+        uni.setStorage({
+            key: 'laocui_user_info',
+            data: JSON.stringify(value),
+            success: function () {}
+        });
+    },
+    currUser: function () {
+        return common.castEval(localStorage.getItem(this.userKey()) || '')
+    },
+
+    removeUser: function () {
+        uni.removeStorage(this.userKey())
+    },
+
+    // ------------------------------ Biz -----------------------------------
+
+    bid: function () {
+        return this.currBiz() ? this.currBiz().id : null
+    },
+
+    setBiz: function (value) {
+        sessionStorage.setItem(this.bizKey(), JSON.stringify(value))
+    },
+
+    removeBiz: function () {
+        sessionStorage.removeItem(this.bizKey())
+    },
+
+    currBiz: function () {
+        return common.castEval(sessionStorage.getItem(this.bizKey()) || null)
+    },
+
+    // ------------------------------ Token -----------------------------------
+
+    setToken: function (token) {
+        localStorage.setItem(this.tokenKey(), token)
+    },
+
+    getToken: function () {
+        return localStorage.getItem(this.tokenKey()) || null
+    },
+
+    removeToken: function () {
+        localStorage.removeItem(this.tokenKey())
+    },
+
+    // ------------------------------ key -----------------------------------
+
+    // bizKey: function() {
+    //   const key = this.hashCode(window.location.host + '_biz_' + this.getUserType())
+    //   return key
+    // },
+    //
+    // userKey: function() {
+    //   const key = this.hashCode(window.location.host + '_user_' + this.getUserType())
+    //   return key
+    // },
+    //
+    // tokenKey: function() {
+    //   const key = this.hashCode(window.location.host + '_token_' + this.getUserType())
+    //   return key
+    // },
+
+    // Frame
+    setLoginInfo: function (value) {
+        localStorage.setItem('KEY_ADMIN_USER_LOGIN_INFO', JSON.stringify(value))
+    },
+    getLoginInfo: function () {
+        return common.castEval(localStorage.getItem('KEY_ADMIN_USER_LOGIN_INFO') || null)
+    },
+    removeLoginInfo: function () {
+        localStorage.removeItem('KEY_ADMIN_USER_LOGIN_INFO')
+    },
+
+    // Biz
+    setBizLoginInfo: function (value) {
+        localStorage.setItem('KEY_BIZ_USER_LOGIN_INFO', JSON.stringify(value))
+    },
+    getBizLoginInfo: function () {
+        return common.castEval(localStorage.getItem('KEY_BIZ_USER_LOGIN_INFO') || null)
+    },
+    removeBizLoginInfo: function () {
+        localStorage.removeItem('KEY_BIZ_USER_LOGIN_INFO')
+    },
+
+    setUserType: function (value) {
+        localStorage.setItem('KEY_USER_TYPE', value)
+    },
+    getUserType: function () {
+        return localStorage.getItem('KEY_USER_TYPE') || 'TYPE_FRAME'
+    },
+
+    hashCode: function (str) {
+        let hash = 0
+        if (str.length === 0) return hash
+        for (let i = 0; i < str.length; i++) {
+            const char = str.charCodeAt(i)
+            hash = ((hash << 5) - hash) + char
+            hash = hash & hash // Convert to 32bit integer
+        }
+        return hash
+    },
+    /*
+        定时缓存
+     */
+    setTimingLocalStorage: function (key, value, ttl_ms) {
+        var data = {
+            value: value,
+            expirse: new Date(ttl_ms).getTime()
+        }
+        localStorage.setItem(key, JSON.stringify(data))
+    },
+    getTimingLocalStorage: function (key) {
+        var data = JSON.parse(localStorage.getItem(key))
+        if (data !== null) {
+            if (data.expirse == null || (data.expirse != null && data.expirse < new Date().getTime())) {
+                localStorage.removeItem(key)
+            } else {
+                return JSON.parse(data.value)
+            }
+        }
+        return null
+    }
+}

+ 185 - 0
js_sdk/common.js

@@ -0,0 +1,185 @@
+/**
+ * 获取url参数值
+ * @param {*} url
+ * @param {*} name
+ */
+export function getUrlParameter(url, name) {
+    var regexSearch = '[\\?&#]' + name + '=([^&#]*)'
+    var regex = new RegExp(regexSearch)
+    var results = regex.exec(url)
+    return results ? window.decodeURIComponent(results[1]) : ''
+}
+export function showToast(e) {
+    uni.showToast({
+        title: e,
+        icon: 'none',
+        mask: true,
+        duration: 1000
+    });
+}
+export default {
+
+    transDate: function (val, pattern) {
+        if (val) {
+            let time = new Date()
+            time.setTime(val)
+            if (Date.parse(val)) {
+                time = new Date(val)
+            }
+            if (time instanceof Date) {
+                return this.formatDate((pattern) || 'yyyy-MM-dd', time)
+            }
+        }
+        return ''
+    },
+    transBaseDateTime: function (val, pattern) {
+        if (val) {
+            let time = new Date()
+            time.setTime(val)
+            if (Date.parse(val)) {
+                time = new Date(val)
+            }
+            if (time instanceof Date) {
+                return this.formatDate((pattern) || 'yyyy年MM月dd日 hh:mm', time)
+            }
+        }
+        return ''
+    },
+    transBaseToDateTime: function (val, pattern) {
+        if (val) {
+            let time = new Date()
+            time.setTime(val)
+            if (Date.parse(val)) {
+                time = new Date(val)
+            }
+            if (time instanceof Date) {
+                return this.formatDate((pattern) || 'MM月dd日 hh:mm', time)
+            }
+        }
+        return ''
+    },
+    transServDate: function (val) {
+        return this.transDate(val, 'yyyy-MM-dd hh:mm:ss')
+    },
+    transServDay: function (val) {
+        return this.transDate(val, 'yyyy-MM-dd')
+    },
+    isArrayFn: function (value) {
+        if (typeof Array.isArray === 'function') {
+            return Array.isArray(value)
+        } else {
+            return Object.prototype.toString.call(value) === '[object Array]'
+        }
+    },
+
+    transDcMap: function (arr) {
+        const tMap = {}
+        arr.forEach(item => {
+            tMap[item.value] = item.label
+        })
+        return tMap
+    },
+
+    castEval: function (val) {
+        // return JSON.parse(val)
+        if (val) {
+            return eval('(' + val + ')')
+        } else {
+            return ''
+        }
+    },
+
+    castString: function (val) {
+        return JSON.stringify(val)
+    },
+
+    // 金额格式化,整数部分每3位用逗号分隔,支持带有正负号以及小数部分
+    formatMoney: function (amt) {
+        if (!amt) return ''
+        if (amt.length <= 3) {
+            return amt
+        }
+
+        if (!/^(\+|-)?(\d+)(\.\d+)?$/.test(amt)) {
+            return amt
+        }
+
+        var a = RegExp.$1;
+        var b = RegExp.$2;
+        var c = RegExp.$3
+        var re = new RegExp()
+        re.compile('(\\d)(\\d{3})(,|$)')
+        while (re.test(b)) {
+            b = b.replace(re, '$1,$2$3')
+        }
+        return a + '' + b + '' + c
+    },
+
+    formatDate: function (fmt, date) { // author: meizz
+        var o = {
+            'M+': date.getMonth() + 1, // 月份
+            'd+': date.getDate(), // 日
+            'h+': date.getHours(), // 小时
+            'm+': date.getMinutes(), // 分
+            's+': date.getSeconds(), // 秒
+            'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
+            'S': date.getMilliseconds() // 毫秒
+        }
+        if (/(y+)/.test(fmt)) {
+            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
+        }
+        for (var k in o) {
+            if (new RegExp('(' + k + ')').test(fmt)) {
+                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
+            }
+        }
+        return fmt
+    },
+
+    replaceThumbnail: function (urlPath) {
+        if (urlPath != null) {
+            urlPath = urlPath.replace('/server/FileController/download/', this.$constant.BASE_URI + '/wx/fileController/downloadThumbnail/')
+        }
+        if (urlPath != null) {
+            urlPath = urlPath.replace('/h5Server/FileController/download/', this.$constant.BASE_URI + '/wx/fileController/downloadThumbnail/')
+        }
+        return urlPath
+    },
+
+    goBack: function () {
+        // window.history.go(-1)
+        // self.location = document.referrer
+        history.back()
+    },
+
+    uuid: function (len, radix) {
+        const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('')
+        const uuid = []
+        let i
+        radix = radix || chars.length
+
+        if (len) {
+            // Compact form
+            for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]
+        } else {
+            // rfc4122, version 4 form
+            let r
+
+            // rfc4122 requires these characters
+            uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'
+            uuid[14] = '4'
+
+            // Fill in random data.  At i==19 set the high bits of clock sequence as
+            // per rfc4122, sec. 4.1.5
+            for (i = 0; i < 36; i++) {
+                if (!uuid[i]) {
+                    r = 0 | Math.random() * 16
+                    uuid[i] = chars[(i === 19) ? (r & 0x3) | 0x8 : r]
+                }
+            }
+        }
+
+        return uuid.join('')
+    },
+
+}

+ 173 - 0
js_sdk/dateFormat.js

@@ -0,0 +1,173 @@
+/*若小于10,前面加0*/
+function isZero(m) {
+    return m < 10 ? '0' + m : m
+}
+
+function friendlyDate(timestamp) {
+    let formats = {
+        'year': '%n% 年前',
+        'month': '%n% 月前',
+        'day': '%n% 天前',
+        'hour': '%n% 小时前',
+        'minute': '%n% 分钟前',
+        'second': '%n% 秒前',
+    };
+
+    let now = Date.now();
+    let seconds = Math.floor((now - timestamp) / 1000);
+    let minutes = Math.floor(seconds / 60);
+    let hours = Math.floor(minutes / 60);
+    let days = Math.floor(hours / 24);
+    let months = Math.floor(days / 30);
+    let years = Math.floor(months / 12);
+
+    let diffType = '';
+    let diffValue = 0;
+    if (years > 0) {
+        diffType = 'year';
+        diffValue = years;
+    } else {
+        if (months > 0) {
+            diffType = 'month';
+            diffValue = months;
+        } else {
+            if (days > 0) {
+                diffType = 'day';
+                diffValue = days;
+            } else {
+                if (hours > 0) {
+                    diffType = 'hour';
+                    diffValue = hours;
+                } else {
+                    if (minutes > 0) {
+                        diffType = 'minute';
+                        diffValue = minutes;
+                    } else {
+                        diffType = 'second';
+                        diffValue = seconds === 0 ? (seconds = 1) : seconds;
+                    }
+                }
+            }
+        }
+    }
+    return formats[diffType].replace('%n%', diffValue);
+}
+/*
+ * 时间格式转换
+ * @param timestamp 时间 String || Date (123456 && 1978-10-25 10:25:20 && data对象)
+ * @param format 输出格式 String (slash: 1978/10/25 10:25:20  horizontal: 1978-10-25 10:25:20 minute:10:25 second:10:25)
+ */
+function formatDate(timestamp, format = 'slash') {
+    //时间戳是整数,否则要parseInt转换
+    let time = '';
+    console.log(timestamp.constructor);
+    if (timestamp.constructor === Date) {
+        time = timestamp;
+    } else {
+        time = (parseFloat(timestamp) + 946684800).toString();
+        if (time.indexOf('-') != -1 || time.indexOf('/') != -1 || time.indexOf(':') != -1) {
+            //将时间字符串转成时间戳
+            time = time.replace(/-/g, '/') //为了兼容IOS,需先将字符串转换为'2018/9/11 9:11:23'
+            time = new Date(time);
+        } else {
+            if (time.length == 10) {
+                time = new Date(parseInt(time) * 1000);
+            } else if (time.length == 13) {
+                time = new Date(parseInt(time));
+            }
+        }
+    }
+    let y = time.getFullYear();
+    let m = time.getMonth() + 1;
+    let d = time.getDate();
+    let h = time.getHours();
+    let mm = time.getMinutes();
+    let s = time.getSeconds();
+    let now = new Date();
+    let seconds = Math.floor((now - time));
+    let minutes = Math.floor(seconds / 60);
+    let hours = Math.floor(minutes / 60);
+    let days = Math.floor(hours / 24);
+    let months = Math.floor(days / 30);
+    let years = Math.floor(months / 12);
+    let NowY = (new Date()).getFullYear();
+    let dayTime = 24 * 60 * 60;
+    //当前时间
+    let td = new Date();
+    td = new Date(td.getFullYear(), td.getMonth(), td.getDate());
+    //传递时间
+    let od = new Date(time);
+    od = new Date(od.getFullYear(), od.getMonth(), od.getDate());
+    //当前时间与传递时间的差值
+    let xc = (od - td) / 1000 / 60 / 60 / 24;
+    //return y+'/'+isZero(m)+'/'+isZero(d)+' '+isZero(h)+':'+isZero(mm)+':'+isZero(s);
+    switch (format) {
+        case "horizontal":
+            return y + '-' + isZero(m) + '-' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm) + ':' + isZero(s);
+            break;
+        case "day":
+            return y + '-' + isZero(m) + '-' + isZero(d);
+            break;
+        case "minute":
+            let result = '';
+            if (NowY === y) {
+                if (xc < -1) {
+                    result = isZero(m) + '-' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm)
+                } else if (xc < 0) {
+                    result = '昨天' + ' ' + isZero(h) + ':' + isZero(mm)
+                } else if (xc == 0) {
+                    result = isZero(h) + ':' + isZero(mm)
+                };
+            } else {
+                result = y + '-' + isZero(m) + '-' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm)
+            }
+            return result;
+            break;
+        case "second":
+            let result2 = '';
+            if (NowY === y) {
+                if (xc < -1) {
+                    result2 = isZero(m) + '-' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm) + ':' + isZero(s)
+                } else if (xc < 0) {
+                    result2 = '昨天' + ' ' + isZero(h) + ':' + isZero(mm) + ':' + isZero(s)
+                } else if (xc == 0) {
+                    result2 = isZero(h) + ':' + isZero(mm) + ':' + isZero(s)
+                };
+            } else {
+                result2 = y + '-' + isZero(m) + '-' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm) + ':' + isZero(s)
+            }
+            return result2;
+            break;
+        case "spot":
+            let result3 = '';
+            result3 = y + '.' + isZero(m) + '.' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm) + ':' + isZero(s)
+            return result3;
+            break;
+        case "date":
+            let result4 = '';
+            result4 = y + '.' + isZero(m) + '.' + isZero(d);
+            return result4;
+            break;
+        case "time":
+            let result5 = '';
+            result5 = isZero(h) + ':' + isZero(mm);
+            return result5;
+            break;
+        case "dateTime":
+            let result6 = '';
+            result6 = y + '-' + isZero(m) + '-' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm);
+            return result6;
+            break;
+        case "bvcTime":
+            return isZero(h) + ':' + isZero(mm) + ':' + isZero(s) + ' ' + isZero(d) + '/' + isZero(m) + '/' + y;
+            break;
+        default:
+            return y + '/' + isZero(m) + '/' + isZero(d) + ' ' + isZero(h) + ':' + isZero(mm) + ':' + isZero(s);
+
+    }
+
+}
+export {
+    friendlyDate,
+    formatDate
+}

+ 488 - 0
js_sdk/http.js

@@ -0,0 +1,488 @@
+import $http from "./request/requestConfig"
+import {
+    BASE_URI
+} from "../pages/utils/constant.js";
+import qs from 'qs';
+
+const baseUri = '/smartParkH5Server'
+const parkActivity = '/wx/meetingAppoint'
+export function login(data) {
+    return $http.post(
+        '/wx/auth/login_by_app_main?' + qs.stringify(data), {}, {})
+
+}
+
+export function addRectificationManagement(data) {
+
+    return $http.post(
+        '/wx/RectificationController/addRectificationManagement',
+        data, {}
+    )
+}
+export function getUserLocalStorageInfo() {
+    const userInfo = JSON.parse(
+        uni.getStorageSync("laocui_user_info"));
+    return userInfo
+}
+export function uploadPDF() {
+    uni.showLoading({
+        title: '加载中',
+        mask: true
+    });
+    return new Promise((resolve, reject) => {
+        uni.chooseMessageFile({
+            count: 1, //默认100
+            type: 'file',
+            success: (res) => {
+                uni.uploadFile({
+                    url: BASE_URI + "/wx/fileController/upload",
+                    filePath: res.tempFiles[0].path,
+                    name: "file",
+                    formData: {
+                        user: "test"
+                    },
+                    success(successRes) {
+                        // 上传完成需要更新 fileList
+                        let data = JSON.parse(successRes.data);
+                        uni.showToast({
+                            title: '提交成功',
+                            duration: 500
+                        });
+                        resolve({
+                            url: data.data[0],
+                            name: res.tempFiles[0].name
+                        })
+
+                    },
+                    fail(res) {},
+                });
+
+            },
+            fail(e) {
+                uni.showToast({
+                    title: '提交成功',
+                    duration: 0
+                });
+            }
+        });
+    })
+}
+
+export function findRectificationManagementInOutList(data) {
+    return $http.post(
+        '/wx/RectificationController/findRectificationManagementInOutList',
+        data, {}
+    )
+}
+
+export function findRectificationManagementInOutById(e) {
+    return $http.post(
+        '/wx/RectificationController/findRectificationManagementInOutById', {
+            id: e
+        }, {}
+    )
+}
+export function repairList(data) {
+    return $http.post(
+        '/wx/repair/list',
+        data, {}
+    )
+}
+
+export function addSafetySelfCheckingManage(data) {
+    return $http.post(
+        '/wx/SafetyController/addSafetySelfCheckingManage',
+        data, {}
+    )
+}
+export function updateSafetySelfCheckingManage(data) {
+    return $http.post(
+        '/wx/SafetyController/updateSafetySelfCheckingManage',
+        data, {}
+    )
+}
+export function editRepair(data) {
+    return $http.post(
+        '/wx/repair/edit',
+        data, {}
+    )
+}
+export function addRepair(data) {
+    return $http.post(
+        '/wx/repair/add',
+        data, {}
+    )
+}
+export function getRepairDispatchById(id) {
+    return $http.post(
+        '/wx/repair/getById', {
+            id: id
+        }, {}
+    )
+}
+export function getDispatchToPerson(data) {
+    return $http.post(
+        '/wx/repair/getDispatchToPerson',
+        data, {}
+    )
+}
+export function getCompanyById(data) {
+    return $http.post(
+        '/wx/repair/getCompanyById', data, {},
+
+    )
+}
+
+export function getWxCompanyTags(e) {
+    return $http.post(
+        '/wx/MnpTagInfoController/tagInfoList', e, {}
+    )
+}
+
+export function tagsBind(e) {
+    return $http.post(
+        '/wx/MnpTagInfoController/bind', e, {}
+    )
+}
+export function getDetial(e) {
+    return $http.post(
+        '/wx/meetingAppoint/meetingAppointDetail', e, {}
+    )
+}
+export function saleControllerGetById(e) {
+    return $http.post(
+        '/wx/SaleController/getById', {
+            id: e
+        }, {}
+    )
+}
+
+export function getAppUserMain(data) {
+    return $http.post(
+        '/wx/company/getById',
+        data, {}
+    )
+}
+
+export function confirmAudit(data) {
+    return $http.post(
+        '/wx/meetingAppoint/confirmAudit',
+        data, {}
+    )
+
+}
+export function getCompanyTags(e) {
+    return $http.post(
+        '/wx/MnpTagInfoController/getCompanyTags', e, {}
+    )
+}
+export function getCompanyTagsByQybq(qybq) {
+    return $http.post(
+        '/wx/MnpTagInfoController/getCompanyTagsByQybq', {
+            qybq: qybq
+        }, {})
+}
+export function companyECdit(data) {
+    return $http.post(
+        '/wx/company/edit', data, {})
+}
+
+export function tagInfoList(e) {
+    return $http.post(
+        '/wx/MnpTagInfoController/tagInfoList',
+        e, {})
+}
+export function findDeptList() {
+
+    return $http.post(
+        '/wx/SaleController/findDeptList', {}, {})
+
+}
+export function tagCategoryList() {
+    return $http.post(
+        '/wx/MnpTagController/tagCategoryList', {}, {}
+    )
+}
+export function interviewEscalationListAll(id) {
+    debugger
+    return $http.post('/wx/interviewEscalation/listAll', {
+        companyId: id
+    }, {})
+}
+export function getUserInfo(data) {
+    let laocui_user_info = JSON.parse(uni.getStorageSync('laocui_user_info'))
+    return $http.post(
+        '/wx/frameUser/getMyInfo?userId=' + laocui_user_info.user.id, {}, {})
+
+}
+
+export function getRoomInfo(e) {
+    return $http.post(
+        '/wx/ParkRoomController/getById', {
+            id: e
+        }, {})
+}
+export function getCompanyHouseDetails(e) {
+    return $http.post(
+        '/wx/company/getById', {
+            id: e
+        }, {})
+}
+export function handleList(e) {
+    return $http.post(
+        '/wx/workPaneController/handleList',
+        e, {})
+}
+export function readList(e) {
+    return $http.post(
+        '/wx/workPaneController/readList',
+        e, {})
+}
+// handleList?
+export function findCompanyTags(e) {
+    return $http.post(
+        '/wx/MnpTagInfoController/getCompanyTags/' + e, {}, {})
+}
+export function removeTagsBind(e) {
+    return $http.post(
+        '/wx/MnpTagInfoController/removeBind', e, {}
+    )
+}
+export function addInterview(e) {
+
+    return $http.post(
+        "/wx/interviewEscalation/add", e, {})
+}
+export function editInterview(e) {
+    return $http.post(
+        "/wx/interviewEscalation/edit", e, {})
+}
+export function getInterviewList(e) {
+    return $http.post(
+        "/wx/interviewEscalation/list", e, {})
+}
+export function getInterviewDetails(e) {
+    return $http.post(
+        "/wx/interviewEscalation/getById", {
+            id: e
+        }, {})
+}
+export function findSafetySelfCheckingPlanById(e) {
+    return $http.post(
+        "/wx/SafetyController/findSafetySelfCheckingPlanById", {
+            id: e
+        }, {})
+}
+// 
+export function findSafetySelfCheckingPlanList(e) {
+    return $http.post(
+        "/wx/SafetyController/findSafetySelfCheckingPlanList",
+        e, {})
+}
+export function getBySaveStatus(e) {
+    return $http.post(
+        "/wx/interviewEscalation/getBySaveStatus", {
+            createdBy: e
+        }, {})
+}
+export function companyExamineAdd(e) {
+    return $http.post(
+        "/wx/company/add", e, {})
+}
+export function listByModel(e) {
+    return $http.post(
+        '/wx/SaleController/findSaleManagementListByRoomId',
+        e, {})
+}
+export function listVo(e) {
+    // 查询园区列表,不需要参数
+    return $http.post(
+        '/wx/company/listVo', e, {})
+}
+// /wx/SafetyController/addSafetySelfCheckingPlan
+export function addSafetySelfCheckingPlan(e) {
+    // 查询园区列表,不需要参数
+    return $http.post(
+        '/wx/SafetyController/addSafetySelfCheckingPlan', {
+            ...e
+        }, {})
+}
+export function findSafetySelfCheckingManagetById(e) {
+
+    // 查询园区列表,不需要参数
+    return $http.post(
+        '/wx/SafetyController/findSafetySelfCheckingManagetById', {
+            id: e
+        }, {})
+}
+export function findSafetySelfCheckingManageList(e) {
+
+    // 查询园区列表,不需要参数
+    return $http.post(
+        '/wx/SafetyController/findSafetySelfCheckingManageList', e, {})
+}
+export function findYuanQuList() {
+    // 查询园区列表,不需要参数
+    return $http.post(
+        '/wx/SaleController/findYuanQuList', {}, {})
+}
+export function findLongPanList(id) {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/SaleController/findLouPanList', {
+            id: id
+        }, {})
+}
+export function findLouDongList(id) {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/SaleController/findLouDongList', {
+            id: id
+        }, {})
+}
+export function clickCollect(e) {
+    return $http.post(
+        '/wx/parkActivity/clickCollect',
+        e, {})
+}
+export function insertRegisSignInfo(e) {
+    return $http.post(
+        '/wx/parkActivity/insertRegisSignInfo',
+        e, {})
+}
+
+export function richScan(e) {
+    return $http.post(
+        '/wx/parkActivity/richScan',
+        e, {})
+}
+export function getActivityById(id, signInCode, userId) {
+    return $http.get(
+        '/wx/parkActivity/getBySignInCode?id=' + id + '&userId=' + userId + "&signInCode=" + signInCode, {}, {})
+}
+// /wx/userPower/getUserPower?userId=1088765543780974592
+export function getUserPower(e) {
+    return $http.post(
+        '/wx/userPower/getUserPower', {
+            userId: e
+        }, {})
+}
+export function editPassword(e) {
+    return $http.post(
+        '/wx/frameUser/editPassword', e, {})
+}
+
+export function updateListRectificationManagement(e) {
+
+    return $http.post(
+        '/wx/RectificationController/updateListRectificationManagement', e, {})
+}
+// /wx/RectificationController/findUserListByRoleWuye
+export function findUserListByRoleWuye() {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/RectificationController/findUserListByRoleWuye',
+
+        {}, {})
+}
+export function getSelectUserTwo(e) {
+
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/frameUser/getSelectUserTwo', {
+            searchName: e
+        }, {})
+}
+export function getSelectDeptTwo(e) {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/frameUser/getSelectDeptTwo',
+
+        {
+            searchName: e
+        }, {})
+}
+export function findRoomInfoListByIds(e) {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/SaleController/findRoomInfoListByIds',
+
+        {
+            ids: e
+        }, {})
+}
+export function findCompanyList() {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/SaleController/findCompanyList', {}, {})
+}
+
+export function addyixiang(e) {
+    return $http.post(
+        '/wx/SaleController/add',
+        e, {})
+}
+export function findCompanyInfoList(data) {
+    return $http.post(
+        "/wx/SaleController/findCompanyInfoList",
+        data, {}
+    )
+}
+export function findRoomByCondition(params) {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/SaleController/findRoomByCondition', params, {})
+
+}
+export function getCompanyAll(qymc) {
+    return $http.post(
+        '/wx/company/listAll', {
+            qymc: qymc ? qymc : ""
+        }, {})
+
+}
+export function getByCodes(params) {
+    // 用园区ID查询楼盘列表
+    return $http.post(
+        '/wx/sysDict/getByCodes',
+
+        {
+            codes: params
+        }, {})
+}
+
+
+
+export function list(data) {
+    return $http.post(
+        parkActivity + '/getMeetingAppointList',
+        data, {}
+    )
+}
+
+export function listApp(data) {
+    return $http.post(
+        parkActivity + '/getMeetingAppointListApp',
+        data, {}
+    )
+}
+
+
+
+
+
+export function cancelAppoint(data) {
+    return $http.post(
+        parkActivity + '/cancelAppoint',
+        data, {}
+    )
+}
+
+
+// /wx/SaleController/
+export function getRepairList(data) {
+    return $http.post(
+        '/wx/repair/list',
+        data, {}
+    )
+}

+ 274 - 0
js_sdk/request/request.js

@@ -0,0 +1,274 @@
+export default class request {
+    constructor(options) {
+        //请求公共地址
+        this.baseUrl = options.baseUrl || "";
+        //公共文件上传请求地址
+        this.fileUrl = options.fileUrl || "";
+        //默认请求头
+        this.headers = options.headers || {};
+        //默认配置
+        this.config = {
+            isPrompt: options.isPrompt === false ? false : true,
+            load: options.load === false ? false : true,
+            isFactory: options.isFactory === false ? false : true,
+            loadMore: options.loadMore === false ? false : true
+        };
+    }
+    // 获取默认信息
+    getDefault(url, options, type) {
+        //判断url是不是链接
+        var urlType = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~/])+$/.test(url);
+        let httpUrl;
+        if (type == "file") {
+            httpUrl = urlType ? url : this.fileUrl + url;
+        } else {
+            httpUrl = urlType ? url : this.baseUrl + url;
+        }
+        let config = Object.assign({}, this.config, options);
+        //请求地址
+        config.httpUrl = httpUrl;
+        //请求头
+        config.headers = Object.assign(this.headers, options.headers);
+        return config;
+    }
+
+    //post请求
+    post(url = '', data = {}, options = {}) {
+        let requestInfo = this.getDefault(url, options, "data");
+        requestInfo.data = data;
+        return new Promise((resolve, reject) => {
+            this.getRequest("POST", requestInfo, (state, response) => {
+                //是否用外部的数据处理方法
+                if (state && requestInfo.isFactory && this.dataFactory) {
+
+                    //数据处理
+
+                    var factoryInfo = this.dataFactory(requestInfo, response);
+                    // console.log(factoryInfo)
+                    return resolve(factoryInfo.result)
+                    // factoryInfo.success ? resolve(factoryInfo.result) : reject(factoryInfo.result);
+                } else {
+                    // console.log(response, response)
+                    state ? resolve(response) : reject(response);
+                }
+            });
+        });
+    }
+    //get请求
+    get(url = '', data = {}, options = {}) {
+        let requestInfo = this.getDefault(url, options, "data");
+        requestInfo.data = data;
+        return new Promise((resolve, reject) => {
+            this.getRequest("GET", requestInfo, (state, response) => {
+                //是否用外部的数据处理方法
+                if (state && requestInfo.isFactory && this.dataFactory) {
+                    //数据处理
+                    var factoryInfo = this.dataFactory(requestInfo, response);
+                    factoryInfo.success ? resolve(factoryInfo.result) : reject(factoryInfo.result);
+                } else {
+                    state ? resolve(response) : reject(response);
+                }
+            });
+        });
+    }
+    //put请求
+    put(url = '', data = {}, options = {}) {
+        let requestInfo = this.getDefault(url, options, "data");
+        requestInfo.data = data;
+        return new Promise((resolve, reject) => {
+            this.getRequest("PUT", requestInfo, (state, response) => {
+                //是否用外部的数据处理方法
+                if (state && requestInfo.isFactory && this.dataFactory) {
+                    //数据处理
+                    var factoryInfo = this.dataFactory(requestInfo, response);
+                    factoryInfo.success ? resolve(factoryInfo.result) : reject(factoryInfo.result);
+                } else {
+                    state ? resolve(response) : reject(response);
+                }
+            });
+        });
+    }
+    //delete请求
+    delete(url = '', data = {}, options = {}) {
+        let requestInfo = this.getDefault(url, options, "data");
+        requestInfo.data = data;
+        return new Promise((resolve, reject) => {
+            this.getRequest("DELETE", requestInfo, (state, response) => {
+                //是否用外部的数据处理方法
+                if (state && requestInfo.isFactory && this.dataFactory) {
+                    //数据处理
+                    var factoryInfo = this.dataFactory(requestInfo, response);
+                    factoryInfo.success ? resolve(factoryInfo.result) : reject(factoryInfo.result);
+                } else {
+                    state ? resolve(response) : reject(response);
+                }
+            });
+        });
+    }
+
+    //接口请求方法
+    getRequest(ajaxType, options, callback) {
+        //请求前回调
+        if (this.requestStart) {
+            options.method = ajaxType;
+            var requestStart = this.requestStart(options);
+            if (typeof requestStart == "object") {
+                options.data = requestStart.data;
+                options.headers = requestStart.headers;
+                options.isPrompt = requestStart.isPrompt;
+                options.load = requestStart.load;
+                options.isFactory = requestStart.isFactory;
+            } else {
+                callback(false, "请求开始拦截器未通过");
+                return;
+            }
+        }
+        // console.log(options.data)
+        uni.request({
+            url: options.httpUrl,
+            data: options.data,
+            method: ajaxType, //请求类型
+            header: options.headers, //加入请求头
+            success: (res) => {
+                // ;
+                //请求完成回调
+                this.requestEnd && this.requestEnd(options, res);
+                callback(true, res);
+            },
+            fail: (err) => {
+                // console.log(err);
+                //请求完成回调
+                this.requestEnd && this.requestEnd(options, err);
+                callback(false, err);
+            }
+        });
+    }
+    //jsonp请求(只限于H5使用)
+    jsonp(url = '', data = {}, options = {}) {
+        let requestInfo = this.getDefault(url, options, "data");
+        let dataStr = '';
+        Object.keys(data).forEach(key => {
+            dataStr += key + '=' + data[key] + '&';
+        });
+        //匹配最后一个&并去除
+        if (dataStr !== '') {
+            dataStr = dataStr.substr(0, dataStr.lastIndexOf('&'));
+        }
+        requestInfo.httpUrl = requestInfo.httpUrl + '?' + dataStr;
+        const _this = this;
+        return new Promise((resolve, reject) => {
+            let callbackName = "callback" + Math.ceil(Math.random() * 1000000);
+            if (_this.requestStart) {
+                requestInfo.data = data;
+                var requestStart = _this.requestStart(requestInfo);
+                if (typeof requestStart == "object") {
+                    requestInfo.data = requestStart.data;
+                    requestInfo.headers = requestStart.headers;
+                    requestInfo.isPrompt = requestStart.isPrompt;
+                    requestInfo.load = requestStart.load;
+                    requestInfo.isFactory = requestStart.isFactory;
+                } else {
+                    reject("请求开始拦截器未通过");
+                    return;
+                }
+            }
+            window[callbackName] = function (data) {
+                resolve(data);
+            }
+            var script = document.createElement("script");
+            script.src = requestInfo.httpUrl + "&callback=" + callbackName;
+            document.head.appendChild(script);
+            // 及时删除,防止加载过多的JS
+            document.head.removeChild(script);
+            //请求完成回调
+            _this.requestEnd && _this.requestEnd(requestInfo, {});
+        });
+    }
+    //本地服务器图片上传
+    urlImgUpload(url = '', data = {}, options = {}) {
+        let requestInfo = this.getDefault(url, options, "file");
+        requestInfo.data = data;
+        const _this = this;
+        return new Promise((resolve, reject) => {
+            uni.chooseImage({
+                count: data.count || 9, //默认9
+                sizeType: data.sizeType || ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+                sourceType: data.sourceType || ['album', 'camera'], //从相册选择
+                success: function (res) {
+                    _this.urlFileUpload(requestInfo, res.tempFiles, (state, response) => {
+                        state ? resolve(response) : reject(response);
+                    });
+                }
+            });
+        });
+    }
+    //本地服务器文件上传方法
+    urlFileUpload(options, files, callback) {
+        const _this = this;
+        //请求前回调
+        if (this.requestStart) {
+            options.method = "FILE";
+            var requestStart = this.requestStart(options);
+            if (typeof requestStart == "object") {
+                if (typeof requestStart == "object") {
+                    options.data = requestStart.data;
+                    options.headers = requestStart.headers;
+                    options.isPrompt = requestStart.isPrompt;
+                    options.load = requestStart.load;
+                    options.isFactory = requestStart.isFactory;
+                } else {
+                    callback(false, "请求开始拦截器未通过");
+                    return;
+                }
+            }
+        }
+        const len = files.length - 1;
+        let fileList = new Array;
+        fileUpload(0);
+
+        function fileUpload(i) {
+            var config = {
+                url: options.httpUrl,
+                filePath: files[i].path,
+                header: options.headers, //加入请求头
+                name: options.name || "file",
+                success: (response) => {
+                    response.data = JSON.parse(response.data);
+                    //请求完成回调
+                    _this.requestEnd && _this.requestEnd(options, response);
+                    //是否用外部的数据处理方法
+                    if (options.isFactory && _this.dataFactory) {
+                        //数据处理
+                        var factoryInfo = _this.dataFactory(options, response);
+                        if (factoryInfo.success) {
+                            fileList.push(factoryInfo.result);
+                            if (len <= i) {
+                                callback(true, fileList);
+                            } else {
+                                fileUpload(i + 1);
+                            }
+                        } else {
+                            callback(false, factoryInfo.result);
+                        }
+                    } else {
+                        fileList.push(response.data);
+                        if (len <= i) {
+                            callback(true, fileList);
+                        } else {
+                            fileUpload(i + 1);
+                        }
+                    }
+                },
+                fail: (err) => {
+                    //请求完成回调
+                    _this.requestEnd && _this.requestEnd(options, err);
+                    callback(false, err);
+                }
+            };
+            if (options.data) {
+                config.formData = options.data;
+            }
+            uni.uploadFile(config);
+        }
+    }
+}

+ 118 - 0
js_sdk/request/request.md

@@ -0,0 +1,118 @@
+# request 请求、配置简单、源码清晰注释多、超强的适应性(很方便的支持多域名请求)
+
+1. 配置简单、源码清晰注释多、适用于一项目多域名请求、第三方请求、七牛云图片上传、本地服务器图片上传等等
+2. 支持请求`get`、`post`、`put`、`delete`
+3. 自动显示请求加载动画(可单个接口关闭)
+4. 全局`api`数据处理函数,只回调请求正确的数据(可单个接口关闭)
+5. 未登录或登录失效自动拦截并调用登录方法(可单个接口关闭)
+6. 全局自动提示接口抛出的错误信息(可单个接口关闭)
+7. 支持 Promise
+8. 支持拦截器
+
+# 文件说明
+
+1. `request.js` 源码文件
+2. `requestConfig.js` 请求配置文件(具体看代码)
+3. `qiniuUploader.js` 七牛云官方上传文件
+
+# 在 main.js 引入并挂在 Vue 上
+
+```
+import $http from '@/zhouWei-request/requestConfig';
+Vue.prototype.$http = $http;
+```
+
+# get 请求 正常写法
+
+```
+this.$http.get('aid/region',{pid:0}).
+then(function (response) {
+	//这里只会在接口是成功状态返回
+}).catch(function (error) {
+	//这里只会在接口是失败状态返回,不需要去处理错误提示
+
+});
+```
+
+# post 请求 async 写法
+
+```
+let data = await this.$http.post('aid/region',{pid:0});
+;
+```
+
+# 其他功能配置项
+
+```
+let data = await this.$http.post(
+	'http://www.aaa.com/aid/region', //可以直接放链接(将不启用全局定义域名)
+	{
+		pid:0
+	},
+	{
+		isPrompt: true,//(默认 true 说明:本接口抛出的错误是否提示)
+		load: true,//(默认 true 说明:本接口是否提示加载动画)
+		headers: { //默认 无 说明:请求头
+			'Content-Type': 'application/x-www-form-urlencoded'
+		},
+		isFactory: true //(默认 true 说明:本接口是否调用公共的数据处理方法,设置false后isPrompt参数奖失去作用)
+	}
+);
+```
+
+# 本地服务器图片上传(支持多张上传)
+
+```
+let data = await this.$http.urlImgUpload('flie/upload',{
+	name:"后台接受文件key名称", //默认 file
+	count:"最大选择数",//默认 9
+	sizeType:"选择压缩图原图,默认两个都选",//默认 ['original', 'compressed']
+	sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera']
+	data:"而外参数" //可不填
+});
+```
+
+# 本地服务器文件上传(支持多张上传)
+
+```
+this.$http.urlFileUpload({
+		data:"向服务器传递的参数", //可不填
+		name:"后台接受文件key名称", //默认 file
+	},
+	[], // 必填 临时文件路径
+	(res) => {
+		//这里是上传完成了数据数组
+	}
+);
+```
+
+# 七牛云图片上传(支持多张上传)
+
+```
+let data = await this.$http.qnImgUpload({
+		count:"最大选择数",//默认 9
+		sizeType:"选择压缩图原图,默认两个都选",//默认 ['original', 'compressed']
+		sourceType:"选择相机拍照或相册上传 默认两个都选",//默认 ['album','camera']
+	},
+	(res) => {
+		//这里是每上传一张都返回一张图片地址
+	}
+);
+```
+
+# 七牛云文件上传(支持多张上传)
+
+```
+let data = await this.$http.qnFileUpload(
+	[], // 必填 临时文件路径
+	(res) => {
+		//这里是每上传一张都返回一张图片地址
+	}
+);
+```
+
+# jsonp 跨域请求(只支持 H5)
+
+```
+let data = await this.$http.jsonp('http://www.aaa.com/aid/region',{pid:0});
+```

+ 129 - 0
js_sdk/request/requestConfig.js

@@ -0,0 +1,129 @@
+import request from "./request";
+import config from "config";
+// import store from "../../store/index.js";
+uni.getStorage({
+    key: 'storage_key',
+    success: function (res) {
+        console.log(res.data);
+    }
+});
+
+//可以new多个request来支持多个域名请求
+let $http = new request({
+    //接口请求地址
+    baseUrl: config.baseUrl,
+    //服务器本地上传文件地址
+    fileUrl: config.baseUrl,
+    //设置请求头
+    headers: {
+        'Content-Type': 'application/x-www-form-urlencoded;',
+        'ApiVersion': config.version,
+        'Device': config.device,
+        'Platform': config.platform,
+        "Authorization": 'Bearer ' + uni.getStorageSync('laocui_user_token')
+    },
+    //以下是默认值可不写
+    //是否提示--默认提示
+    isPrompt: true,
+    //是否显示请求动画
+    load: true,
+    //是否使用处理数据模板
+    isFactory: true,
+    //列表接口是否有加载判断
+    loadMore: true,
+});
+//当前接口请求数
+let requestNum = 0;
+//请求开始拦截器
+$http.requestStart = function (options) {
+    if (requestNum <= 0) {
+        uni.showNavigationBarLoading();
+        if (options.load) {
+            //打开加载动画
+            uni.showLoading({
+                title: '加载中',
+                mask: true
+            });
+        }
+    }
+    requestNum += 1;
+    //请求前加入token
+    options.headers['Authorization'] = 'Bearer ' + uni.getStorageSync('laocui_user_token');
+    // console.log("请求开始前", options);
+    return options;
+}
+//请求结束
+$http.requestEnd = function (options, resolve) {
+    //判断当前接口是否需要加载动画
+    requestNum = requestNum - 1;
+    if (requestNum <= 0) {
+        uni.hideLoading();
+        uni.hideNavigationBarLoading();
+    }
+    if (resolve.errMsg && (resolve.errMsg != "request:ok" || resolve.statusCode && resolve.statusCode != 200)) {
+        uni.showToast({
+            title: "网络错误,请检查一下网络",
+            mask: true,
+            icon: "none"
+        });
+    }
+}
+//登录弹窗次数
+let loginPopupNum = 0;
+//所有接口数据处理(可在接口里设置不调用此方法)
+$http.dataFactory = function (options, resolve) {
+    //设置回调默认值
+    var callback = {
+        //success数据是否请求成功状态
+        success: false,
+        //这里返回的数据就是调用请求方法收到的数据
+        result: ""
+    };
+    // 特殊接口处理  接口报请先登录  跳转登录
+    if (resolve.data.code === 101) {
+        uni.showModal({
+            title: '提示',
+            content: resolve.data.msg,
+            showCancel: false,
+            success: () => {
+                uni.setStorageSync('token', null);
+                uni.navigateTo({
+                    url: '/pages/login/login'
+                });
+            }
+        });
+        return false;
+    }
+    //判断数据是否请求成功
+    if (resolve.data.errmsg == "成功") {
+        callback.success = true;
+        callback.result = resolve.data;
+    } else if (resolve.data.errno == 303) {
+        uni.redirectTo({
+            url: '/pages/subPackages/pages/login/login'
+        });
+        this.$showToast('令牌过期,请重新登陆')
+    } else {
+        uni.showToast({
+            title: resolve.data.errmsg,
+            icon: "none",
+            mask: true,
+            duration: 2000
+        });
+        //设置可以提示的时候
+        // if (options.isPrompt) {
+        // 	setTimeout(function () {
+        //提示后台接口抛出的错误信息
+        // uni.showToast({
+        // 	title: resolve.data.msg,
+        // 	icon: "none",
+        // 	duration: 3000
+        // });
+        // 	}, 500);
+        // }
+        callback.result = resolve.data;
+    }
+    uni.stopPullDownRefresh();
+    return callback;
+};
+export default $http;

+ 72 - 0
main.js

@@ -0,0 +1,72 @@
+import App from './App'
+import store from './store'
+import common from './pages/utils/common.js'
+import constant from './pages/utils/constant.js'
+Vue.prototype.$gaodeKey = 'OJ7BZ-ULH6V-XBLPV-ULIMK-APS3H-QHFIP'; //高德地图key
+
+import {
+    showToast,
+    transDate
+} from './js_sdk/common.js'
+// #ifndef VUE3
+import Vue from 'vue'
+import auth from './js_sdk/auth'
+Vue.prototype.$auth = auth
+// import "./vite.config"
+Vue.prototype.$constant = constant
+Vue.prototype.$common = common
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+Vue.prototype.$transDate = transDate
+Vue.prototype.$showToast = showToast
+import $http from './js_sdk/request/requestConfig';
+Vue.prototype.$http = $http;
+
+// 全局mixin引入  是否登录判断
+// import {isLoginMixin} from "./common/mixins";
+// Vue.mixin(isLoginMixin);
+uni.getStorage({
+    key: 'laocui_user_token',
+    success: function (res) {
+        uni.switchTab({
+            url: "/pages/index/index"
+        })
+    },
+    fail(res) {
+        uni.showToast({
+            title: "请重新登陆",
+            mask: true,
+            icon: "none"
+        });
+        uni.redirectTo({
+            url: "/pages/login/login"
+        })
+    }
+});
+
+App.mpType = 'app'
+const app = new Vue({
+    store,
+    ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import {
+    createSSRApp
+} from 'vue'
+export function createApp() {
+    const app = createSSRApp(App)
+    app.use(store)
+    app.config.globalProperties.$adpid = "1111111111"
+    app.config.globalProperties.$backgroundAudioData = {
+        playing: false,
+        playTime: 0,
+        formatedPlayTime: '00:00:00'
+    }
+    return {
+        app
+    }
+}
+// #endif

+ 195 - 0
manifest.json

@@ -0,0 +1,195 @@
+{
+    "name" : "小艾微纳园",
+    "appid" : "__UNI__8C5F0F6",
+    "description" : "应用描述",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueCompiler" : "uni-app",
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "nvueLaunchMode" : "fast",
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "modules" : {
+            "OAuth" : {},
+            "Payment" : {},
+            "Push" : {},
+            "Share" : {},
+            "Speech" : {},
+            "VideoPlayer" : {}
+        },
+        "distribute" : {
+            "android" : {
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_TASKS\"/>",
+                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_SMS\"/>",
+                    "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.SEND_SMS\"/>",
+                    "<uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SMS\"/>",
+                    "<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"
+                ]
+            },
+            "ios" : {
+                "UIBackgroundModes" : [ "audio" ],
+                "urlschemewhitelist" : [ "baidumap", "iosamap" ]
+            },
+            "sdkConfigs" : {
+                "speech" : {
+                    "ifly" : {}
+                }
+            },
+            "orientation" : [ "portrait-primary" ]
+        },
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "quickapp" : {},
+    "quickapp-native" : {
+        "icon" : "/static/logo.png",
+        "package" : "com.example.demo",
+        "features" : [
+            {
+                "name" : "system.clipboard"
+            }
+        ]
+    },
+    "quickapp-webview" : {
+        "icon" : "/static/logo.png",
+        "package" : "com.example.demo",
+        "minPlatformVersion" : 1070,
+        "versionName" : "1.0.0",
+        "versionCode" : 100
+    },
+    "mp-weixin" : {
+        "appid" : "wxcfa83b07b1dbd591",
+        "optimization" : {
+            "subPackages" : true
+        },
+        "setting" : {
+            "urlCheck" : true,
+            "es6" : true,
+            "postcss" : true,
+            "minified" : true
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "查询用户地理位置"
+            }
+        },
+        "requiredPrivateInfos" : [ "getLocation" ],
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "mp-alipay" : {
+        "usingComponents" : true,
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "mp-baidu" : {
+        "usingComponents" : true,
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true,
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "mp-jd" : {
+        "usingComponents" : true,
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "h5" : {
+        "template" : "template.h5.html",
+        "router" : {
+            "mode" : "history",
+            "base" : ""
+        },
+        "sdkConfigs" : {
+            "maps" : {
+                "qqmap" : {
+                    "key" : "TKUBZ-D24AF-GJ4JY-JDVM2-IBYKK-KEBCU"
+                }
+            }
+        },
+        "async" : {
+            "timeout" : 20000
+        },
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "vueVersion" : "2",
+    "mp-kuaishou" : {
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "mp-lark" : {
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "mp-qq" : {
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "quickapp-webview-huawei" : {
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "quickapp-webview-union" : {
+        "uniStatistics" : {
+            "enable" : true
+        }
+    },
+    "uniStatistics" : {
+        "version" : "2",
+        "enable" : true
+    },
+    "locale" : "zh-Hans"
+}

+ 1 - 0
node_modules/.bin/atob

@@ -0,0 +1 @@
+../atob/bin/atob.js

+ 1 - 0
node_modules/.bin/color-support

@@ -0,0 +1 @@
+../color-support/bin.js

+ 1 - 0
node_modules/.bin/gulp

@@ -0,0 +1 @@
+../gulp/bin/gulp.js

+ 1 - 0
node_modules/.bin/resolve

@@ -0,0 +1 @@
+../resolve/bin/resolve

+ 1 - 0
node_modules/.bin/semver

@@ -0,0 +1 @@
+../semver/bin/semver

+ 1 - 0
node_modules/.bin/which

@@ -0,0 +1 @@
+../which/bin/which

+ 21 - 0
node_modules/ansi-colors/LICENSE

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

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 105 - 0
node_modules/ansi-colors/README.md


+ 456 - 0
node_modules/ansi-colors/index.js

@@ -0,0 +1,456 @@
+/*!
+ * ansi-colors <https://github.com/doowb/ansi-colors>
+ *
+ * Copyright (c) 2015-2017, Brian Woodward.
+ * Released under the MIT License.
+ */
+
+'use strict';
+
+/**
+ * Module dependencies
+ */
+
+var wrap = require('ansi-wrap');
+
+/**
+ * Wrap a string with ansi codes to create a black background.
+ *
+ * ```js
+ * console.log(colors.bgblack('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgblack
+ */
+
+exports.bgblack = function bgblack(message) {
+  return wrap(40, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a blue background.
+ *
+ * ```js
+ * console.log(colors.bgblue('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgblue
+ */
+
+exports.bgblue = function bgblue(message) {
+  return wrap(44, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a cyan background.
+ *
+ * ```js
+ * console.log(colors.bgcyan('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgcyan
+ */
+
+exports.bgcyan = function bgcyan(message) {
+  return wrap(46, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a green background.
+ *
+ * ```js
+ * console.log(colors.bggreen('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bggreen
+ */
+
+exports.bggreen = function bggreen(message) {
+  return wrap(42, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a magenta background.
+ *
+ * ```js
+ * console.log(colors.bgmagenta('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgmagenta
+ */
+
+exports.bgmagenta = function bgmagenta(message) {
+  return wrap(45, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a red background.
+ *
+ * ```js
+ * console.log(colors.bgred('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgred
+ */
+
+exports.bgred = function bgred(message) {
+  return wrap(41, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a white background.
+ *
+ * ```js
+ * console.log(colors.bgwhite('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgwhite
+ */
+
+exports.bgwhite = function bgwhite(message) {
+  return wrap(47, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create a yellow background.
+ *
+ * ```js
+ * console.log(colors.bgyellow('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bgyellow
+ */
+
+exports.bgyellow = function bgyellow(message) {
+  return wrap(43, 49, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create black text.
+ *
+ * ```js
+ * console.log(colors.black('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  black
+ */
+
+exports.black = function black(message) {
+  return wrap(30, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create blue text.
+ *
+ * ```js
+ * console.log(colors.blue('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  blue
+ */
+
+exports.blue = function blue(message) {
+  return wrap(34, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create bold text.
+ *
+ * ```js
+ * console.log(colors.bold('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  bold
+ */
+
+exports.bold = function bold(message) {
+  return wrap(1, 22, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create cyan text.
+ *
+ * ```js
+ * console.log(colors.cyan('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  cyan
+ */
+
+exports.cyan = function cyan(message) {
+  return wrap(36, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create dim text.
+ *
+ * ```js
+ * console.log(colors.dim('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  dim
+ */
+
+exports.dim = function dim(message) {
+  return wrap(2, 22, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create gray text.
+ *
+ * ```js
+ * console.log(colors.gray('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  gray
+ */
+
+exports.gray = function gray(message) {
+  return wrap(90, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create green text.
+ *
+ * ```js
+ * console.log(colors.green('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  green
+ */
+
+exports.green = function green(message) {
+  return wrap(32, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create grey text.
+ *
+ * ```js
+ * console.log(colors.grey('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  grey
+ */
+
+exports.grey = function grey(message) {
+  return wrap(90, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create hidden text.
+ *
+ * ```js
+ * console.log(colors.hidden('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  hidden
+ */
+
+exports.hidden = function hidden(message) {
+  return wrap(8, 28, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create inverse text.
+ *
+ * ```js
+ * console.log(colors.inverse('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  inverse
+ */
+
+exports.inverse = function inverse(message) {
+  return wrap(7, 27, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create italic text.
+ *
+ * ```js
+ * console.log(colors.italic('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  italic
+ */
+
+exports.italic = function italic(message) {
+  return wrap(3, 23, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create magenta text.
+ *
+ * ```js
+ * console.log(colors.magenta('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  magenta
+ */
+
+exports.magenta = function magenta(message) {
+  return wrap(35, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create red text.
+ *
+ * ```js
+ * console.log(colors.red('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  red
+ */
+
+exports.red = function red(message) {
+  return wrap(31, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to reset ansi colors currently on the string.
+ *
+ * ```js
+ * console.log(colors.reset('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  reset
+ */
+
+exports.reset = function reset(message) {
+  return wrap(0, 0, message);
+};
+
+/**
+ * Wrap a string with ansi codes to add a strikethrough to the text.
+ *
+ * ```js
+ * console.log(colors.strikethrough('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  strikethrough
+ */
+
+exports.strikethrough = function strikethrough(message) {
+  return wrap(9, 29, message);
+};
+
+/**
+ * Wrap a string with ansi codes to underline the text.
+ *
+ * ```js
+ * console.log(colors.underline('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  underline
+ */
+
+exports.underline = function underline(message) {
+  return wrap(4, 24, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create white text.
+ *
+ * ```js
+ * console.log(colors.white('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  white
+ */
+
+exports.white = function white(message) {
+  return wrap(37, 39, message);
+};
+
+/**
+ * Wrap a string with ansi codes to create yellow text.
+ *
+ * ```js
+ * console.log(colors.yellow('some string'));
+ * ```
+ *
+ * @param  {string} message String to wrap with ansi codes.
+ * @return {string} Wrapped string
+ * @api public
+ * @name  yellow
+ */
+
+exports.yellow = function yellow(message) {
+  return wrap(33, 39, message);
+};

+ 176 - 0
node_modules/ansi-colors/package.json

@@ -0,0 +1,176 @@
+{
+  "_from": "ansi-colors@^1.0.1",
+  "_id": "ansi-colors@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==",
+  "_location": "/ansi-colors",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ansi-colors@^1.0.1",
+    "name": "ansi-colors",
+    "escapedName": "ansi-colors",
+    "rawSpec": "^1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.1"
+  },
+  "_requiredBy": [
+    "/gulp/gulp-cli",
+    "/plugin-error"
+  ],
+  "_resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-1.1.0.tgz",
+  "_shasum": "6374b4dd5d4718ff3ce27a671a3b1cad077132a9",
+  "_spec": "ansi-colors@^1.0.1",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/gulp/node_modules/gulp-cli",
+  "author": {
+    "name": "Brian Woodward",
+    "url": "https://github.com/doowb"
+  },
+  "bugs": {
+    "url": "https://github.com/doowb/ansi-colors/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    }
+  ],
+  "dependencies": {
+    "ansi-wrap": "^0.1.0"
+  },
+  "deprecated": false,
+  "description": "Collection of ansi colors and styles.",
+  "devDependencies": {
+    "gulp-format-md": "^1.0.0",
+    "mocha": "^3.5.3",
+    "typescript": "^2.7.1"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js",
+    "types/index.d.ts"
+  ],
+  "homepage": "https://github.com/doowb/ansi-colors",
+  "keywords": [
+    "ansi-bgblack",
+    "ansi-bgblue",
+    "ansi-bgcyan",
+    "ansi-bggreen",
+    "ansi-bgmagenta",
+    "ansi-bgred",
+    "ansi-bgwhite",
+    "ansi-bgyellow",
+    "ansi-black",
+    "ansi-blue",
+    "ansi-bold",
+    "ansi-cyan",
+    "ansi-dim",
+    "ansi-gray",
+    "ansi-green",
+    "ansi-grey",
+    "ansi-hidden",
+    "ansi-inverse",
+    "ansi-italic",
+    "ansi-magenta",
+    "ansi-red",
+    "ansi-reset",
+    "ansi-strikethrough",
+    "ansi-underline",
+    "ansi-white",
+    "ansi-yellow",
+    "bgblack",
+    "bgblue",
+    "bgcyan",
+    "bggreen",
+    "bgmagenta",
+    "bgred",
+    "bgwhite",
+    "bgyellow",
+    "black",
+    "blue",
+    "bold",
+    "cyan",
+    "dim",
+    "gray",
+    "green",
+    "grey",
+    "hidden",
+    "inverse",
+    "italic",
+    "magenta",
+    "red",
+    "reset",
+    "strikethrough",
+    "underline",
+    "white",
+    "yellow"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ansi-colors",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/doowb/ansi-colors.git"
+  },
+  "scripts": {
+    "test": "mocha && tsc --project types"
+  },
+  "types": "./types/index.d.ts",
+  "verb": {
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "lint": {
+      "reflinks": true
+    },
+    "reflinks": [
+      "verb-readme-generator",
+      "verb"
+    ],
+    "related": {
+      "list": [
+        "ansi-bgblack",
+        "ansi-bgblue",
+        "ansi-bgcyan",
+        "ansi-bggreen",
+        "ansi-bgmagenta",
+        "ansi-bgred",
+        "ansi-bgwhite",
+        "ansi-bgyellow",
+        "ansi-black",
+        "ansi-blue",
+        "ansi-bold",
+        "ansi-cyan",
+        "ansi-dim",
+        "ansi-gray",
+        "ansi-green",
+        "ansi-grey",
+        "ansi-hidden",
+        "ansi-inverse",
+        "ansi-italic",
+        "ansi-magenta",
+        "ansi-red",
+        "ansi-reset",
+        "ansi-strikethrough",
+        "ansi-underline",
+        "ansi-white",
+        "ansi-wrap",
+        "ansi-yellow"
+      ]
+    }
+  },
+  "version": "1.1.0"
+}

+ 31 - 0
node_modules/ansi-colors/types/index.d.ts

@@ -0,0 +1,31 @@
+// Imported from from DefinitelyTyped project.
+// TypeScript definitions for ansi-colors
+// Definitions by: Rogier Schouten <https://github.com/rogierschouten>
+// Integrated by: Jordan Mele <https://github.com/Silic0nS0ldier>
+
+export function bgblack(message: string): string;
+export function bgblue(message: string): string;
+export function bgcyan(message: string): string;
+export function bggreen(message: string): string;
+export function bgmagenta(message: string): string;
+export function bgred(message: string): string;
+export function bgwhite(message: string): string;
+export function bgyellow(message: string): string;
+export function black(message: string): string;
+export function blue(message: string): string;
+export function bold(message: string): string;
+export function cyan(message: string): string;
+export function dim(message: string): string;
+export function gray(message: string): string;
+export function green(message: string): string;
+export function grey(message: string): string;
+export function hidden(message: string): string;
+export function inverse(message: string): string;
+export function italic(message: string): string;
+export function magenta(message: string): string;
+export function red(message: string): string;
+export function reset(message: string): string;
+export function strikethrough(message: string): string;
+export function underline(message: string): string;
+export function white(message: string): string;
+export function yellow(message: string): string;

+ 21 - 0
node_modules/ansi-gray/LICENSE

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

+ 14 - 0
node_modules/ansi-gray/index.js

@@ -0,0 +1,14 @@
+/*!
+ * ansi-gray <https://github.com/jonschlinkert/ansi-gray>
+ *
+ * Copyright (c) 2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+
+'use strict';
+
+var wrap = require('ansi-wrap');
+
+module.exports = function gray(message) {
+  return wrap(90, 39, message);
+};

+ 86 - 0
node_modules/ansi-gray/package.json

@@ -0,0 +1,86 @@
+{
+  "_from": "ansi-gray@^0.1.1",
+  "_id": "ansi-gray@0.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==",
+  "_location": "/ansi-gray",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ansi-gray@^0.1.1",
+    "name": "ansi-gray",
+    "escapedName": "ansi-gray",
+    "rawSpec": "^0.1.1",
+    "saveSpec": null,
+    "fetchSpec": "^0.1.1"
+  },
+  "_requiredBy": [
+    "/fancy-log"
+  ],
+  "_resolved": "https://registry.npmmirror.com/ansi-gray/-/ansi-gray-0.1.1.tgz",
+  "_shasum": "2962cf54ec9792c48510a3deb524436861ef7251",
+  "_spec": "ansi-gray@^0.1.1",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/fancy-log",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/ansi-gray/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "ansi-wrap": "0.1.0"
+  },
+  "deprecated": false,
+  "description": "The color gray, in ansi.",
+  "devDependencies": {
+    "mocha": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/ansi-gray",
+  "keywords": [
+    "gray",
+    "256",
+    "ansi",
+    "cli",
+    "color",
+    "colors",
+    "colour",
+    "command",
+    "command-line",
+    "console",
+    "format",
+    "formatting",
+    "iterm",
+    "log",
+    "logging",
+    "rgb",
+    "shell",
+    "string",
+    "style",
+    "styles",
+    "styling",
+    "terminal",
+    "text",
+    "tty",
+    "xterm"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "ansi-gray",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/ansi-gray.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "0.1.1"
+}

+ 74 - 0
node_modules/ansi-gray/readme.md

@@ -0,0 +1,74 @@
+# ansi-gray [![NPM version](https://badge.fury.io/js/ansi-gray.svg)](http://badge.fury.io/js/ansi-gray)
+
+> The color gray, in ansi.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/)
+
+```sh
+$ npm i ansi-gray --save
+```
+
+## Usage
+
+```js
+var gray = require('ansi-gray');
+```
+
+## Related projects
+
+* [ansi-reset](https://github.com/jonschlinkert/ansi-reset)
+* [ansi-bold](https://github.com/jonschlinkert/ansi-bold)
+* [ansi-dim](https://github.com/jonschlinkert/ansi-dim)
+* [ansi-italic](https://github.com/jonschlinkert/ansi-italic)
+* [ansi-underline](https://github.com/jonschlinkert/ansi-underline)
+* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse)
+* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden)
+* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough)
+* [ansi-black](https://github.com/jonschlinkert/ansi-black)
+* [ansi-red](https://github.com/jonschlinkert/ansi-red)
+* [ansi-green](https://github.com/jonschlinkert/ansi-green)
+* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow)
+* [ansi-blue](https://github.com/jonschlinkert/ansi-blue)
+* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta)
+* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan)
+* [ansi-white](https://github.com/jonschlinkert/ansi-white)
+* [ansi-gray](https://github.com/jonschlinkert/ansi-gray)
+* [ansi-grey](https://github.com/jonschlinkert/ansi-grey)
+* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack)
+* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred)
+* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen)
+* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow)
+* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue)
+* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta)
+* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan)
+* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite)
+
+## Running tests
+
+Install dev dependencies:
+
+```sh
+$ npm i -d && npm test
+```
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-gray/issues/new)
+
+## Author
+
+**Jon Schlinkert**
+
++ [github/jonschlinkert](https://github.com/jonschlinkert)
++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+
+## License
+
+Copyright © 2015 Jon Schlinkert
+Released under the MIT license.
+
+***
+
+_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._

+ 4 - 0
node_modules/ansi-regex/index.js

@@ -0,0 +1,4 @@
+'use strict';
+module.exports = function () {
+	return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
+};

+ 21 - 0
node_modules/ansi-regex/license

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

+ 108 - 0
node_modules/ansi-regex/package.json

@@ -0,0 +1,108 @@
+{
+  "_from": "ansi-regex@^2.0.0",
+  "_id": "ansi-regex@2.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+  "_location": "/ansi-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ansi-regex@^2.0.0",
+    "name": "ansi-regex",
+    "escapedName": "ansi-regex",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/strip-ansi"
+  ],
+  "_resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+  "_shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
+  "_spec": "ansi-regex@^2.0.0",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/strip-ansi",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-regex/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Regular expression for matching ANSI escape codes",
+  "devDependencies": {
+    "ava": "0.17.0",
+    "xo": "0.16.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/chalk/ansi-regex#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "command-line",
+    "text",
+    "regex",
+    "regexp",
+    "re",
+    "match",
+    "test",
+    "find",
+    "pattern"
+  ],
+  "license": "MIT",
+  "maintainers": [
+    {
+      "name": "Sindre Sorhus",
+      "email": "sindresorhus@gmail.com",
+      "url": "sindresorhus.com"
+    },
+    {
+      "name": "Joshua Appelman",
+      "email": "jappelman@xebia.com",
+      "url": "jbnicolai.com"
+    },
+    {
+      "name": "JD Ballard",
+      "email": "i.am.qix@gmail.com",
+      "url": "github.com/qix-"
+    }
+  ],
+  "name": "ansi-regex",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-regex.git"
+  },
+  "scripts": {
+    "test": "xo && ava --verbose",
+    "view-supported": "node fixtures/view-codes.js"
+  },
+  "version": "2.1.1",
+  "xo": {
+    "rules": {
+      "guard-for-in": 0,
+      "no-loop-func": 0
+    }
+  }
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 39 - 0
node_modules/ansi-regex/readme.md


+ 165 - 0
node_modules/ansi-styles/index.js

@@ -0,0 +1,165 @@
+'use strict';
+const colorConvert = require('color-convert');
+
+const wrapAnsi16 = (fn, offset) => function () {
+	const code = fn.apply(colorConvert, arguments);
+	return `\u001B[${code + offset}m`;
+};
+
+const wrapAnsi256 = (fn, offset) => function () {
+	const code = fn.apply(colorConvert, arguments);
+	return `\u001B[${38 + offset};5;${code}m`;
+};
+
+const wrapAnsi16m = (fn, offset) => function () {
+	const rgb = fn.apply(colorConvert, arguments);
+	return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
+
+function assembleStyles() {
+	const codes = new Map();
+	const styles = {
+		modifier: {
+			reset: [0, 0],
+			// 21 isn't widely supported and 22 does the same thing
+			bold: [1, 22],
+			dim: [2, 22],
+			italic: [3, 23],
+			underline: [4, 24],
+			inverse: [7, 27],
+			hidden: [8, 28],
+			strikethrough: [9, 29]
+		},
+		color: {
+			black: [30, 39],
+			red: [31, 39],
+			green: [32, 39],
+			yellow: [33, 39],
+			blue: [34, 39],
+			magenta: [35, 39],
+			cyan: [36, 39],
+			white: [37, 39],
+			gray: [90, 39],
+
+			// Bright color
+			redBright: [91, 39],
+			greenBright: [92, 39],
+			yellowBright: [93, 39],
+			blueBright: [94, 39],
+			magentaBright: [95, 39],
+			cyanBright: [96, 39],
+			whiteBright: [97, 39]
+		},
+		bgColor: {
+			bgBlack: [40, 49],
+			bgRed: [41, 49],
+			bgGreen: [42, 49],
+			bgYellow: [43, 49],
+			bgBlue: [44, 49],
+			bgMagenta: [45, 49],
+			bgCyan: [46, 49],
+			bgWhite: [47, 49],
+
+			// Bright color
+			bgBlackBright: [100, 49],
+			bgRedBright: [101, 49],
+			bgGreenBright: [102, 49],
+			bgYellowBright: [103, 49],
+			bgBlueBright: [104, 49],
+			bgMagentaBright: [105, 49],
+			bgCyanBright: [106, 49],
+			bgWhiteBright: [107, 49]
+		}
+	};
+
+	// Fix humans
+	styles.color.grey = styles.color.gray;
+
+	for (const groupName of Object.keys(styles)) {
+		const group = styles[groupName];
+
+		for (const styleName of Object.keys(group)) {
+			const style = group[styleName];
+
+			styles[styleName] = {
+				open: `\u001B[${style[0]}m`,
+				close: `\u001B[${style[1]}m`
+			};
+
+			group[styleName] = styles[styleName];
+
+			codes.set(style[0], style[1]);
+		}
+
+		Object.defineProperty(styles, groupName, {
+			value: group,
+			enumerable: false
+		});
+
+		Object.defineProperty(styles, 'codes', {
+			value: codes,
+			enumerable: false
+		});
+	}
+
+	const ansi2ansi = n => n;
+	const rgb2rgb = (r, g, b) => [r, g, b];
+
+	styles.color.close = '\u001B[39m';
+	styles.bgColor.close = '\u001B[49m';
+
+	styles.color.ansi = {
+		ansi: wrapAnsi16(ansi2ansi, 0)
+	};
+	styles.color.ansi256 = {
+		ansi256: wrapAnsi256(ansi2ansi, 0)
+	};
+	styles.color.ansi16m = {
+		rgb: wrapAnsi16m(rgb2rgb, 0)
+	};
+
+	styles.bgColor.ansi = {
+		ansi: wrapAnsi16(ansi2ansi, 10)
+	};
+	styles.bgColor.ansi256 = {
+		ansi256: wrapAnsi256(ansi2ansi, 10)
+	};
+	styles.bgColor.ansi16m = {
+		rgb: wrapAnsi16m(rgb2rgb, 10)
+	};
+
+	for (let key of Object.keys(colorConvert)) {
+		if (typeof colorConvert[key] !== 'object') {
+			continue;
+		}
+
+		const suite = colorConvert[key];
+
+		if (key === 'ansi16') {
+			key = 'ansi';
+		}
+
+		if ('ansi16' in suite) {
+			styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+			styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+		}
+
+		if ('ansi256' in suite) {
+			styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+			styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+		}
+
+		if ('rgb' in suite) {
+			styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+			styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+		}
+	}
+
+	return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+	enumerable: true,
+	get: assembleStyles
+});

+ 9 - 0
node_modules/ansi-styles/license

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

+ 88 - 0
node_modules/ansi-styles/package.json

@@ -0,0 +1,88 @@
+{
+  "_from": "ansi-styles@^3.2.1",
+  "_id": "ansi-styles@3.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+  "_location": "/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ansi-styles@^3.2.1",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "^3.2.1",
+    "saveSpec": null,
+    "fetchSpec": "^3.2.1"
+  },
+  "_requiredBy": [
+    "/chalk"
+  ],
+  "_resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+  "_shasum": "41fbb20243e50b12be0f04b8dedbf07520ce841d",
+  "_spec": "ansi-styles@^3.2.1",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/chalk",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "ava": {
+    "require": "babel-polyfill"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "color-convert": "^1.9.0"
+  },
+  "deprecated": false,
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "ava": "*",
+    "babel-polyfill": "^6.23.0",
+    "svg-term-cli": "^2.1.1",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava"
+  },
+  "version": "3.2.1"
+}

+ 147 - 0
node_modules/ansi-styles/readme.md

@@ -0,0 +1,147 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" width="900">
+
+
+## Install
+
+```
+$ npm install ansi-styles
+```
+
+
+## Usage
+
+```js
+const style = require('ansi-styles');
+
+console.log(`${style.green.open}Hello world!${style.green.close}`);
+
+
+// Color conversion between 16/256/truecolor
+// NOTE: If conversion goes to 16 colors or 256 colors, the original color
+//       may be degraded to fit that color palette. This means terminals
+//       that do not support 16 million colors will best-match the
+//       original color.
+console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
+console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
+console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close);
+```
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Advanced usage
+
+By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `style.modifier`
+- `style.color`
+- `style.bgColor`
+
+###### Example
+
+```js
+console.log(style.color.green.open);
+```
+
+Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
+
+###### Example
+
+```js
+console.log(style.codes.get(36));
+//=> 39
+```
+
+
+## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
+
+`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
+
+To use these, call the associated conversion function with the intended output, for example:
+
+```js
+style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
+style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
+
+style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+
+style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
+style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
+```
+
+
+## Related
+
+- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT

+ 21 - 0
node_modules/ansi-wrap/LICENSE

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

+ 89 - 0
node_modules/ansi-wrap/README.md

@@ -0,0 +1,89 @@
+# ansi-wrap [![NPM version](https://badge.fury.io/js/ansi-wrap.svg)](http://badge.fury.io/js/ansi-wrap)
+
+> Create ansi colors by passing the open and close codes.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/)
+
+```sh
+$ npm i ansi-wrap --save
+```
+
+## Usage
+
+```js
+var wrap = require('ansi-wrap');
+```
+
+**Example**
+
+Pass codes for [ansi magenta background](https://github.com/jonschlinkert/ansi-bgmagenta):
+
+```js
+console.log(wrap(45, 49, 'This is a message...'));
+//=> '\u001b[45mfoo\u001b[49m'
+```
+
+Which prints out...
+
+[![screen shot 2015-05-21 at 8 28 32 pm](https://cloud.githubusercontent.com/assets/383994/7761769/12488afa-fff8-11e4-9cc1-71a8a6ec14a4.png)](https://www.npmjs.com/)
+
+## Related projects
+
+This is used in these projects:
+
+* [ansi-reset](https://github.com/jonschlinkert/ansi-reset)
+* [ansi-bold](https://github.com/jonschlinkert/ansi-bold)
+* [ansi-dim](https://github.com/jonschlinkert/ansi-dim)
+* [ansi-italic](https://github.com/jonschlinkert/ansi-italic)
+* [ansi-underline](https://github.com/jonschlinkert/ansi-underline)
+* [ansi-inverse](https://github.com/jonschlinkert/ansi-inverse)
+* [ansi-hidden](https://github.com/jonschlinkert/ansi-hidden)
+* [ansi-strikethrough](https://github.com/jonschlinkert/ansi-strikethrough)
+* [ansi-black](https://github.com/jonschlinkert/ansi-black)
+* [ansi-red](https://github.com/jonschlinkert/ansi-red)
+* [ansi-green](https://github.com/jonschlinkert/ansi-green)
+* [ansi-yellow](https://github.com/jonschlinkert/ansi-yellow)
+* [ansi-blue](https://github.com/jonschlinkert/ansi-blue)
+* [ansi-magenta](https://github.com/jonschlinkert/ansi-magenta)
+* [ansi-cyan](https://github.com/jonschlinkert/ansi-cyan)
+* [ansi-white](https://github.com/jonschlinkert/ansi-white)
+* [ansi-gray](https://github.com/jonschlinkert/ansi-gray)
+* [ansi-grey](https://github.com/jonschlinkert/ansi-grey)
+* [ansi-bgblack](https://github.com/jonschlinkert/ansi-bgblack)
+* [ansi-bgred](https://github.com/jonschlinkert/ansi-bgred)
+* [ansi-bggreen](https://github.com/jonschlinkert/ansi-bggreen)
+* [ansi-bgyellow](https://github.com/jonschlinkert/ansi-bgyellow)
+* [ansi-bgblue](https://github.com/jonschlinkert/ansi-bgblue)
+* [ansi-bgmagenta](https://github.com/jonschlinkert/ansi-bgmagenta)
+* [ansi-bgcyan](https://github.com/jonschlinkert/ansi-bgcyan)
+* [ansi-bgwhite](https://github.com/jonschlinkert/ansi-bgwhite)
+
+## Running tests
+
+Install dev dependencies:
+
+```sh
+$ npm i -d && npm test
+```
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/ansi-wrap/issues/new)
+
+## Author
+
+**Jon Schlinkert**
+
++ [github/jonschlinkert](https://github.com/jonschlinkert)
++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+
+## License
+
+Copyright © 2015 Jon Schlinkert
+Released under the MIT license.
+
+***
+
+_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on May 21, 2015._

+ 5 - 0
node_modules/ansi-wrap/index.js

@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = function(a, b, msg) {
+  return '\u001b['+ a + 'm' + msg + '\u001b[' + b + 'm';
+};

+ 60 - 0
node_modules/ansi-wrap/package.json

@@ -0,0 +1,60 @@
+{
+  "_from": "ansi-wrap@^0.1.0",
+  "_id": "ansi-wrap@0.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==",
+  "_location": "/ansi-wrap",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ansi-wrap@^0.1.0",
+    "name": "ansi-wrap",
+    "escapedName": "ansi-wrap",
+    "rawSpec": "^0.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^0.1.0"
+  },
+  "_requiredBy": [
+    "/ansi-colors",
+    "/ansi-gray"
+  ],
+  "_resolved": "https://registry.npmmirror.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
+  "_shasum": "a82250ddb0015e9a27ca82e82ea603bbfa45efaf",
+  "_spec": "ansi-wrap@^0.1.0",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/ansi-colors",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/ansi-wrap/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Create ansi colors by passing the open and close codes.",
+  "devDependencies": {},
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/ansi-wrap",
+  "keywords": [],
+  "license": {
+    "type": "MIT",
+    "url": "https://github.com/jonschlinkert/ansi-wrap/blob/master/LICENSE"
+  },
+  "main": "index.js",
+  "name": "ansi-wrap",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/ansi-wrap.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "version": "0.1.0"
+}

+ 15 - 0
node_modules/anymatch/LICENSE

@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) 2014 Elan Shanker
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

+ 99 - 0
node_modules/anymatch/README.md

@@ -0,0 +1,99 @@
+anymatch [![Build Status](https://travis-ci.org/micromatch/anymatch.svg?branch=master)](https://travis-ci.org/micromatch/anymatch) [![Coverage Status](https://img.shields.io/coveralls/micromatch/anymatch.svg?branch=master)](https://coveralls.io/r/micromatch/anymatch?branch=master)
+======
+Javascript module to match a string against a regular expression, glob, string,
+or function that takes the string as an argument and returns a truthy or falsy
+value. The matcher can also be an array of any or all of these. Useful for
+allowing a very flexible user-defined config to define things like file paths.
+
+__Note: This module has Bash-parity, please be aware that Windows-style backslashes are not supported as separators. See https://github.com/micromatch/micromatch#backslashes for more information.__
+
+[![NPM](https://nodei.co/npm/anymatch.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/anymatch/)
+[![NPM](https://nodei.co/npm-dl/anymatch.png?height=3&months=9)](https://nodei.co/npm-dl/anymatch/)
+
+Usage
+-----
+```sh
+npm install anymatch --save
+```
+
+#### anymatch (matchers, testString, [returnIndex], [startIndex], [endIndex])
+* __matchers__: (_Array|String|RegExp|Function_)
+String to be directly matched, string with glob patterns, regular expression
+test, function that takes the testString as an argument and returns a truthy
+value if it should be matched, or an array of any number and mix of these types.
+* __testString__: (_String|Array_) The string to test against the matchers. If
+passed as an array, the first element of the array will be used as the
+`testString` for non-function matchers, while the entire array will be applied
+as the arguments for function matchers.
+* __returnIndex__: (_Boolean [optional]_) If true, return the array index of
+the first matcher that that testString matched, or -1 if no match, instead of a
+boolean result.
+* __startIndex, endIndex__: (_Integer [optional]_) Can be used to define a
+subset out of the array of provided matchers to test against. Can be useful
+with bound matcher functions (see below). When used with `returnIndex = true`
+preserves original indexing. Behaves the same as `Array.prototype.slice` (i.e.
+includes array members up to, but not including endIndex).
+
+```js
+var anymatch = require('anymatch');
+
+var matchers = [
+	'path/to/file.js',
+	'path/anyjs/**/*.js',
+	/foo\.js$/,
+	function (string) {
+		return string.indexOf('bar') !== -1 && string.length > 10
+	}
+];
+
+anymatch(matchers, 'path/to/file.js'); // true
+anymatch(matchers, 'path/anyjs/baz.js'); // true
+anymatch(matchers, 'path/to/foo.js'); // true
+anymatch(matchers, 'path/to/bar.js'); // true
+anymatch(matchers, 'bar.js'); // false
+
+// returnIndex = true
+anymatch(matchers, 'foo.js', true); // 2
+anymatch(matchers, 'path/anyjs/foo.js', true); // 1
+
+// skip matchers
+anymatch(matchers, 'path/to/file.js', false, 1); // false
+anymatch(matchers, 'path/anyjs/foo.js', true, 2, 3); // 2
+anymatch(matchers, 'path/to/bar.js', true, 0, 3); // -1
+
+// using globs to match directories and their children
+anymatch('node_modules', 'node_modules'); // true
+anymatch('node_modules', 'node_modules/somelib/index.js'); // false
+anymatch('node_modules/**', 'node_modules/somelib/index.js'); // true
+anymatch('node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // false
+anymatch('**/node_modules/**', '/absolute/path/to/node_modules/somelib/index.js'); // true
+```
+
+#### anymatch (matchers)
+You can also pass in only your matcher(s) to get a curried function that has
+already been bound to the provided matching criteria. This can be used as an
+`Array.prototype.filter` callback.
+
+```js
+var matcher = anymatch(matchers);
+
+matcher('path/to/file.js'); // true
+matcher('path/anyjs/baz.js', true); // 1
+matcher('path/anyjs/baz.js', true, 2); // -1
+
+['foo.js', 'bar.js'].filter(matcher); // ['foo.js']
+```
+
+Change Log
+----------
+[See release notes page on GitHub](https://github.com/micromatch/anymatch/releases)
+
+NOTE: As of v2.0.0, [micromatch](https://github.com/jonschlinkert/micromatch) moves away from minimatch-parity and inline with Bash. This includes handling backslashes differently (see https://github.com/micromatch/micromatch#backslashes for more information).
+
+NOTE: As of v1.2.0, anymatch uses [micromatch](https://github.com/jonschlinkert/micromatch)
+for glob pattern matching. Issues with glob pattern matching should be
+reported directly to the [micromatch issue tracker](https://github.com/jonschlinkert/micromatch/issues).
+
+License
+-------
+[ISC](https://raw.github.com/micromatch/anymatch/master/LICENSE)

+ 67 - 0
node_modules/anymatch/index.js

@@ -0,0 +1,67 @@
+'use strict';
+
+var micromatch = require('micromatch');
+var normalize = require('normalize-path');
+var path = require('path'); // required for tests.
+var arrify = function(a) { return a == null ? [] : (Array.isArray(a) ? a : [a]); };
+
+var anymatch = function(criteria, value, returnIndex, startIndex, endIndex) {
+  criteria = arrify(criteria);
+  value = arrify(value);
+  if (arguments.length === 1) {
+    return anymatch.bind(null, criteria.map(function(criterion) {
+      return typeof criterion === 'string' && criterion[0] !== '!' ?
+        micromatch.matcher(criterion) : criterion;
+    }));
+  }
+  startIndex = startIndex || 0;
+  var string = value[0];
+  var altString, altValue;
+  var matched = false;
+  var matchIndex = -1;
+  function testCriteria(criterion, index) {
+    var result;
+    switch (Object.prototype.toString.call(criterion)) {
+    case '[object String]':
+      result = string === criterion || altString && altString === criterion;
+      result = result || micromatch.isMatch(string, criterion);
+      break;
+    case '[object RegExp]':
+      result = criterion.test(string) || altString && criterion.test(altString);
+      break;
+    case '[object Function]':
+      result = criterion.apply(null, value);
+      result = result || altValue && criterion.apply(null, altValue);
+      break;
+    default:
+      result = false;
+    }
+    if (result) {
+      matchIndex = index + startIndex;
+    }
+    return result;
+  }
+  var crit = criteria;
+  var negGlobs = crit.reduce(function(arr, criterion, index) {
+    if (typeof criterion === 'string' && criterion[0] === '!') {
+      if (crit === criteria) {
+        // make a copy before modifying
+        crit = crit.slice();
+      }
+      crit[index] = null;
+      arr.push(criterion.substr(1));
+    }
+    return arr;
+  }, []);
+  if (!negGlobs.length || !micromatch.any(string, negGlobs)) {
+    if (path.sep === '\\' && typeof string === 'string') {
+      altString = normalize(string);
+      altString = altString === string ? null : altString;
+      if (altString) altValue = [altString].concat(value.slice(1));
+    }
+    matched = crit.slice(startIndex, endIndex).some(testCriteria);
+  }
+  return returnIndex === true ? matchIndex : matched;
+};
+
+module.exports = anymatch;

+ 21 - 0
node_modules/anymatch/node_modules/normalize-path/LICENSE

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

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 92 - 0
node_modules/anymatch/node_modules/normalize-path/README.md


+ 19 - 0
node_modules/anymatch/node_modules/normalize-path/index.js

@@ -0,0 +1,19 @@
+/*!
+ * normalize-path <https://github.com/jonschlinkert/normalize-path>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+var removeTrailingSeparator = require('remove-trailing-separator');
+
+module.exports = function normalizePath(str, stripTrailing) {
+  if (typeof str !== 'string') {
+    throw new TypeError('expected a string');
+  }
+  str = str.replace(/[\\\/]+/g, '/');
+  if (stripTrailing !== false) {
+    str = removeTrailingSeparator(str);
+  }
+  return str;
+};

+ 117 - 0
node_modules/anymatch/node_modules/normalize-path/package.json

@@ -0,0 +1,117 @@
+{
+  "_from": "normalize-path@^2.1.1",
+  "_id": "normalize-path@2.1.1",
+  "_inBundle": false,
+  "_integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+  "_location": "/anymatch/normalize-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "normalize-path@^2.1.1",
+    "name": "normalize-path",
+    "escapedName": "normalize-path",
+    "rawSpec": "^2.1.1",
+    "saveSpec": null,
+    "fetchSpec": "^2.1.1"
+  },
+  "_requiredBy": [
+    "/anymatch"
+  ],
+  "_resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+  "_shasum": "1ab28b556e198363a8c1a6f7e6fa20137fe6aed9",
+  "_spec": "normalize-path@^2.1.1",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/anymatch",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/normalize-path/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://twitter.com/BlaineBublitz"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    }
+  ],
+  "dependencies": {
+    "remove-trailing-separator": "^1.0.1"
+  },
+  "deprecated": false,
+  "description": "Normalize file path slashes to be unix-like forward slashes. Also condenses repeat slashes to a single slash and removes and trailing slashes unless disabled.",
+  "devDependencies": {
+    "benchmarked": "^0.1.1",
+    "gulp-format-md": "^0.1.11",
+    "minimist": "^1.2.0",
+    "mocha": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/normalize-path",
+  "keywords": [
+    "backslash",
+    "file",
+    "filepath",
+    "fix",
+    "forward",
+    "fp",
+    "fs",
+    "normalize",
+    "path",
+    "slash",
+    "slashes",
+    "trailing",
+    "unix",
+    "urix"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "normalize-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/normalize-path.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "related": {
+      "list": [
+        "contains-path",
+        "ends-with",
+        "is-absolute",
+        "is-relative",
+        "parse-filepath",
+        "path-ends-with",
+        "path-segments",
+        "rewrite-ext",
+        "unixify"
+      ],
+      "description": "Other useful libraries for working with paths in node.js:"
+    },
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "2.1.1"
+}

+ 75 - 0
node_modules/anymatch/package.json

@@ -0,0 +1,75 @@
+{
+  "_from": "anymatch@^2.0.0",
+  "_id": "anymatch@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+  "_location": "/anymatch",
+  "_phantomChildren": {
+    "remove-trailing-separator": "1.1.0"
+  },
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "anymatch@^2.0.0",
+    "name": "anymatch",
+    "escapedName": "anymatch",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/chokidar",
+    "/glob-watcher"
+  ],
+  "_resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+  "_shasum": "bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb",
+  "_spec": "anymatch@^2.0.0",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/glob-watcher",
+  "author": {
+    "name": "Elan Shanker",
+    "url": "http://github.com/es128"
+  },
+  "bugs": {
+    "url": "https://github.com/micromatch/anymatch/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "micromatch": "^3.1.4",
+    "normalize-path": "^2.1.1"
+  },
+  "deprecated": false,
+  "description": "Matches strings against configurable strings, globs, regular expressions, and/or functions",
+  "devDependencies": {
+    "coveralls": "^2.7.0",
+    "istanbul": "^0.4.5",
+    "mocha": "^3.0.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/micromatch/anymatch",
+  "keywords": [
+    "match",
+    "any",
+    "string",
+    "file",
+    "fs",
+    "list",
+    "glob",
+    "regex",
+    "regexp",
+    "regular",
+    "expression",
+    "function"
+  ],
+  "license": "ISC",
+  "name": "anymatch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/micromatch/anymatch.git"
+  },
+  "scripts": {
+    "test": "istanbul cover _mocha && cat ./coverage/lcov.info | coveralls"
+  },
+  "version": "2.0.0"
+}

+ 21 - 0
node_modules/append-buffer/LICENSE

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

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 95 - 0
node_modules/append-buffer/README.md


+ 41 - 0
node_modules/append-buffer/index.js

@@ -0,0 +1,41 @@
+'use strict';
+
+var os = require('os');
+var equals = require('buffer-equal');
+var cr = new Buffer('\r\n');
+var nl = new Buffer('\n');
+
+/**
+ * Append a buffer to another buffer ensuring to preserve line ending characters.
+ *
+ * ```js
+ * console.log([appendBuffer(new Buffer('abc\r\n'), new Buffer('def')).toString()]);
+ * //=> [ 'abc\r\ndef\r\n' ]
+ *
+ * console.log([appendBuffer(new Buffer('abc\n'), new Buffer('def')).toString()]);
+ * //=> [ 'abc\ndef\n' ]
+ *
+ * // uses os.EOL when a line ending is not found
+ * console.log([appendBuffer(new Buffer('abc'), new Buffer('def')).toString()]);
+ * //=> [ 'abc\ndef' ]
+ * * ```
+ * @param  {Buffer} `buf` Buffer that will be used to check for an existing line ending. The suffix is appended to this.
+ * @param  {Buffer} `suffix` Buffer that will be appended to the buf.
+ * @return {Buffer} Final Buffer
+ * @api public
+ */
+
+module.exports = function appendBuffer(buf, suffix) {
+  if (!suffix || !suffix.length) {
+    return buf;
+  }
+  var eol;
+  if (equals(buf.slice(-2), cr)) {
+    eol = cr;
+  } else if (equals(buf.slice(-1), nl)) {
+    eol = nl;
+  } else {
+    return Buffer.concat([buf, new Buffer(os.EOL), new Buffer(suffix)]);
+  }
+  return Buffer.concat([buf, new Buffer(suffix), eol]);
+};

+ 84 - 0
node_modules/append-buffer/package.json

@@ -0,0 +1,84 @@
+{
+  "_from": "append-buffer@^1.0.2",
+  "_id": "append-buffer@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==",
+  "_location": "/append-buffer",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "append-buffer@^1.0.2",
+    "name": "append-buffer",
+    "escapedName": "append-buffer",
+    "rawSpec": "^1.0.2",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.2"
+  },
+  "_requiredBy": [
+    "/vinyl-sourcemap"
+  ],
+  "_resolved": "https://registry.npmmirror.com/append-buffer/-/append-buffer-1.0.2.tgz",
+  "_shasum": "d8220cf466081525efea50614f3de6514dfa58f1",
+  "_spec": "append-buffer@^1.0.2",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/vinyl-sourcemap",
+  "author": {
+    "name": "Brian Woodward",
+    "url": "https://doowb.com"
+  },
+  "bugs": {
+    "url": "https://github.com/doowb/append-buffer/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "buffer-equal": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "Append a buffer to another buffer ensuring to preserve line ending characters.",
+  "devDependencies": {
+    "gulp-format-md": "^1.0.0",
+    "mocha": "^3.5.0"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/doowb/append-buffer",
+  "keywords": [
+    "append",
+    "append-buffer",
+    "concat",
+    "concat-buffer",
+    "eol",
+    "join",
+    "join-buffer",
+    "normalize",
+    "buffer"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "append-buffer",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/doowb/append-buffer.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "1.0.2"
+}

+ 4 - 0
node_modules/archy/.travis.yml

@@ -0,0 +1,4 @@
+language: node_js
+node_js:
+  - 0.6
+  - 0.8

+ 18 - 0
node_modules/archy/LICENSE

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

+ 24 - 0
node_modules/archy/examples/beep.js

@@ -0,0 +1,24 @@
+var archy = require('../');
+var s = archy({
+  label : 'beep',
+  nodes : [
+    'ity',
+    {
+      label : 'boop',
+      nodes : [
+        {
+          label : 'o_O',
+          nodes : [
+            {
+              label : 'oh',
+              nodes : [ 'hello', 'puny' ]
+            },
+            'human'
+          ]
+        },
+        'party\ntime!'
+      ]
+    }
+  ]
+});
+console.log(s);

+ 25 - 0
node_modules/archy/examples/multi_line.js

@@ -0,0 +1,25 @@
+var archy = require('../');
+
+var s = archy({
+  label : 'beep\none\ntwo',
+  nodes : [
+    'ity',
+    {
+      label : 'boop',
+      nodes : [
+        {
+          label : 'o_O\nwheee',
+          nodes : [
+            {
+              label : 'oh',
+              nodes : [ 'hello', 'puny\nmeat' ]
+            },
+            'creature'
+          ]
+        },
+        'party\ntime!'
+      ]
+    }
+  ]
+});
+console.log(s);

+ 35 - 0
node_modules/archy/index.js

@@ -0,0 +1,35 @@
+module.exports = function archy (obj, prefix, opts) {
+    if (prefix === undefined) prefix = '';
+    if (!opts) opts = {};
+    var chr = function (s) {
+        var chars = {
+            '│' : '|',
+            '└' : '`',
+            '├' : '+',
+            '─' : '-',
+            '┬' : '-'
+        };
+        return opts.unicode === false ? chars[s] : s;
+    };
+    
+    if (typeof obj === 'string') obj = { label : obj };
+    
+    var nodes = obj.nodes || [];
+    var lines = (obj.label || '').split('\n');
+    var splitter = '\n' + prefix + (nodes.length ? chr('│') : ' ') + ' ';
+    
+    return prefix
+        + lines.join(splitter) + '\n'
+        + nodes.map(function (node, ix) {
+            var last = ix === nodes.length - 1;
+            var more = node.nodes && node.nodes.length;
+            var prefix_ = prefix + (last ? ' ' : chr('│')) + ' ';
+            
+            return prefix
+                + (last ? chr('└') : chr('├')) + chr('─')
+                + (more ? chr('┬') : chr('─')) + ' '
+                + archy(node, prefix_, opts).slice(prefix.length + 2)
+            ;
+        }).join('')
+    ;
+};

+ 83 - 0
node_modules/archy/package.json

@@ -0,0 +1,83 @@
+{
+  "_from": "archy@^1.0.0",
+  "_id": "archy@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
+  "_location": "/archy",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "archy@^1.0.0",
+    "name": "archy",
+    "escapedName": "archy",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/gulp/gulp-cli"
+  ],
+  "_resolved": "https://registry.npmmirror.com/archy/-/archy-1.0.0.tgz",
+  "_shasum": "f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40",
+  "_spec": "archy@^1.0.0",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/gulp/node_modules/gulp-cli",
+  "author": {
+    "name": "James Halliday",
+    "email": "mail@substack.net",
+    "url": "http://substack.net"
+  },
+  "bugs": {
+    "url": "https://github.com/substack/node-archy/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "render nested hierarchies `npm ls` style with unicode pipes",
+  "devDependencies": {
+    "tap": "~0.3.3",
+    "tape": "~0.1.1"
+  },
+  "homepage": "https://github.com/substack/node-archy#readme",
+  "keywords": [
+    "hierarchy",
+    "npm ls",
+    "unicode",
+    "pretty",
+    "print"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "archy",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/substack/node-archy.git"
+  },
+  "scripts": {
+    "test": "tap test"
+  },
+  "testling": {
+    "files": "test/*.js",
+    "browsers": {
+      "iexplore": [
+        "6.0",
+        "7.0",
+        "8.0",
+        "9.0"
+      ],
+      "chrome": [
+        "20.0"
+      ],
+      "firefox": [
+        "10.0",
+        "15.0"
+      ],
+      "safari": [
+        "5.1"
+      ],
+      "opera": [
+        "12.0"
+      ]
+    }
+  },
+  "version": "1.0.0"
+}

+ 88 - 0
node_modules/archy/readme.markdown

@@ -0,0 +1,88 @@
+# archy
+
+Render nested hierarchies `npm ls` style with unicode pipes.
+
+[![browser support](http://ci.testling.com/substack/node-archy.png)](http://ci.testling.com/substack/node-archy)
+
+[![build status](https://secure.travis-ci.org/substack/node-archy.png)](http://travis-ci.org/substack/node-archy)
+
+# example
+
+``` js
+var archy = require('archy');
+var s = archy({
+  label : 'beep',
+  nodes : [
+    'ity',
+    {
+      label : 'boop',
+      nodes : [
+        {
+          label : 'o_O',
+          nodes : [
+            {
+              label : 'oh',
+              nodes : [ 'hello', 'puny' ]
+            },
+            'human'
+          ]
+        },
+        'party\ntime!'
+      ]
+    }
+  ]
+});
+console.log(s);
+```
+
+output
+
+```
+beep
+├── ity
+└─┬ boop
+  ├─┬ o_O
+  │ ├─┬ oh
+  │ │ ├── hello
+  │ │ └── puny
+  │ └── human
+  └── party
+      time!
+```
+
+# methods
+
+var archy = require('archy')
+
+## archy(obj, prefix='', opts={})
+
+Return a string representation of `obj` with unicode pipe characters like how
+`npm ls` looks.
+
+`obj` should be a tree of nested objects with `'label'` and `'nodes'` fields.
+`'label'` is a string of text to display at a node level and `'nodes'` is an
+array of the descendents of the current node.
+
+If a node is a string, that string will be used as the `'label'` and an empty
+array of `'nodes'` will be used.
+
+`prefix` gets prepended to all the lines and is used by the algorithm to
+recursively update.
+
+If `'label'` has newlines they will be indented at the present indentation level
+with the current prefix.
+
+To disable unicode results in favor of all-ansi output set `opts.unicode` to
+`false`.
+
+# install
+
+With [npm](http://npmjs.org) do:
+
+```
+npm install archy
+```
+
+# license
+
+MIT

+ 40 - 0
node_modules/archy/test/beep.js

@@ -0,0 +1,40 @@
+var test = require('tape');
+var archy = require('../');
+
+test('beep', function (t) {
+    var s = archy({
+      label : 'beep',
+      nodes : [
+        'ity',
+        {
+          label : 'boop',
+          nodes : [
+            {
+              label : 'o_O',
+              nodes : [
+                {
+                  label : 'oh',
+                  nodes : [ 'hello', 'puny' ]
+                },
+                'human'
+              ]
+            },
+            'party!'
+          ]
+        }
+      ]
+    });
+    t.equal(s, [
+        'beep',
+        '├── ity',
+        '└─┬ boop',
+        '  ├─┬ o_O',
+        '  │ ├─┬ oh',
+        '  │ │ ├── hello',
+        '  │ │ └── puny',
+        '  │ └── human',
+        '  └── party!',
+        ''
+    ].join('\n'));
+    t.end();
+});

+ 45 - 0
node_modules/archy/test/multi_line.js

@@ -0,0 +1,45 @@
+var test = require('tape');
+var archy = require('../');
+
+test('multi-line', function (t) {
+    var s = archy({
+      label : 'beep\none\ntwo',
+      nodes : [
+        'ity',
+        {
+          label : 'boop',
+          nodes : [
+            {
+              label : 'o_O\nwheee',
+              nodes : [
+                {
+                  label : 'oh',
+                  nodes : [ 'hello', 'puny\nmeat' ]
+                },
+                'creature'
+              ]
+            },
+            'party\ntime!'
+          ]
+        }
+      ]
+    });
+    t.equal(s, [
+        'beep',
+        '│ one',
+        '│ two',
+        '├── ity',
+        '└─┬ boop',
+        '  ├─┬ o_O',
+        '  │ │ wheee',
+        '  │ ├─┬ oh',
+        '  │ │ ├── hello',
+        '  │ │ └── puny',
+        '  │ │     meat',
+        '  │ └── creature',
+        '  └── party',
+        '      time!',
+        ''
+    ].join('\n'));
+    t.end();
+});

+ 40 - 0
node_modules/archy/test/non_unicode.js

@@ -0,0 +1,40 @@
+var test = require('tape');
+var archy = require('../');
+
+test('beep', function (t) {
+    var s = archy({
+      label : 'beep',
+      nodes : [
+        'ity',
+        {
+          label : 'boop',
+          nodes : [
+            {
+              label : 'o_O',
+              nodes : [
+                {
+                  label : 'oh',
+                  nodes : [ 'hello', 'puny' ]
+                },
+                'human'
+              ]
+            },
+            'party!'
+          ]
+        }
+      ]
+    }, '', { unicode : false });
+    t.equal(s, [
+        'beep',
+        '+-- ity',
+        '`-- boop',
+        '  +-- o_O',
+        '  | +-- oh',
+        '  | | +-- hello',
+        '  | | `-- puny',
+        '  | `-- human',
+        '  `-- party!',
+        ''
+    ].join('\n'));
+    t.end();
+});

+ 21 - 0
node_modules/arr-diff/LICENSE

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

+ 130 - 0
node_modules/arr-diff/README.md

@@ -0,0 +1,130 @@
+# arr-diff [![NPM version](https://img.shields.io/npm/v/arr-diff.svg?style=flat)](https://www.npmjs.com/package/arr-diff) [![NPM monthly downloads](https://img.shields.io/npm/dm/arr-diff.svg?style=flat)](https://npmjs.org/package/arr-diff) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/arr-diff.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/arr-diff)
+
+> Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save arr-diff
+```
+
+Install with [yarn](https://yarnpkg.com):
+
+```sh
+$ yarn add arr-diff
+```
+
+Install with [bower](https://bower.io/)
+
+```sh
+$ bower install arr-diff --save
+```
+
+## Usage
+
+Returns the difference between the first array and additional arrays.
+
+```js
+var diff = require('arr-diff');
+
+var a = ['a', 'b', 'c', 'd'];
+var b = ['b', 'c'];
+
+console.log(diff(a, b))
+//=> ['a', 'd']
+```
+
+## Benchmarks
+
+This library versus [array-differ](https://github.com/sindresorhus/array-differ), on April 14, 2017:
+
+```
+Benchmarking: (4 of 4)
+ · long-dupes
+ · long
+ · med
+ · short
+
+# benchmark/fixtures/long-dupes.js (100804 bytes)
+  arr-diff-3.0.0 x 822 ops/sec ±0.67% (86 runs sampled)
+  arr-diff-4.0.0 x 2,141 ops/sec ±0.42% (89 runs sampled)
+  array-differ x 708 ops/sec ±0.70% (89 runs sampled)
+
+  fastest is arr-diff-4.0.0
+
+# benchmark/fixtures/long.js (94529 bytes)
+  arr-diff-3.0.0 x 882 ops/sec ±0.60% (87 runs sampled)
+  arr-diff-4.0.0 x 2,329 ops/sec ±0.97% (83 runs sampled)
+  array-differ x 769 ops/sec ±0.61% (90 runs sampled)
+
+  fastest is arr-diff-4.0.0
+
+# benchmark/fixtures/med.js (708 bytes)
+  arr-diff-3.0.0 x 856,150 ops/sec ±0.42% (89 runs sampled)
+  arr-diff-4.0.0 x 4,665,249 ops/sec ±1.06% (89 runs sampled)
+  array-differ x 653,888 ops/sec ±1.02% (86 runs sampled)
+
+  fastest is arr-diff-4.0.0
+
+# benchmark/fixtures/short.js (60 bytes)
+  arr-diff-3.0.0 x 3,078,467 ops/sec ±0.77% (93 runs sampled)
+  arr-diff-4.0.0 x 9,213,296 ops/sec ±0.65% (89 runs sampled)
+  array-differ x 1,337,051 ops/sec ±0.91% (92 runs sampled)
+
+  fastest is arr-diff-4.0.0
+```
+
+## About
+
+### Related projects
+
+* [arr-flatten](https://www.npmjs.com/package/arr-flatten): Recursively flatten an array or arrays. This is the fastest implementation of array flatten. | [homepage](https://github.com/jonschlinkert/arr-flatten "Recursively flatten an array or arrays. This is the fastest implementation of array flatten.")
+* [array-filter](https://www.npmjs.com/package/array-filter): Array#filter for older browsers. | [homepage](https://github.com/juliangruber/array-filter "Array#filter for older browsers.")
+* [array-intersection](https://www.npmjs.com/package/array-intersection): Return an array with the unique values present in _all_ given arrays using strict equality… [more](https://github.com/jonschlinkert/array-intersection) | [homepage](https://github.com/jonschlinkert/array-intersection "Return an array with the unique values present in _all_ given arrays using strict equality for comparisons.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Contributors
+
+| **Commits** | **Contributor** | 
+| --- | --- |
+| 33 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 2 | [paulmillr](https://github.com/paulmillr) |
+
+### Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+### Running tests
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+### Author
+
+**Jon Schlinkert**
+
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
+
+### License
+
+Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 14, 2017._

+ 47 - 0
node_modules/arr-diff/index.js

@@ -0,0 +1,47 @@
+/*!
+ * arr-diff <https://github.com/jonschlinkert/arr-diff>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+'use strict';
+
+module.exports = function diff(arr/*, arrays*/) {
+  var len = arguments.length;
+  var idx = 0;
+  while (++idx < len) {
+    arr = diffArray(arr, arguments[idx]);
+  }
+  return arr;
+};
+
+function diffArray(one, two) {
+  if (!Array.isArray(two)) {
+    return one.slice();
+  }
+
+  var tlen = two.length
+  var olen = one.length;
+  var idx = -1;
+  var arr = [];
+
+  while (++idx < olen) {
+    var ele = one[idx];
+
+    var hasEle = false;
+    for (var i = 0; i < tlen; i++) {
+      var val = two[i];
+
+      if (ele === val) {
+        hasEle = true;
+        break;
+      }
+    }
+
+    if (hasEle === false) {
+      arr.push(ele);
+    }
+  }
+  return arr;
+}

+ 110 - 0
node_modules/arr-diff/package.json

@@ -0,0 +1,110 @@
+{
+  "_from": "arr-diff@^4.0.0",
+  "_id": "arr-diff@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+  "_location": "/arr-diff",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "arr-diff@^4.0.0",
+    "name": "arr-diff",
+    "escapedName": "arr-diff",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/micromatch",
+    "/nanomatch",
+    "/plugin-error"
+  ],
+  "_resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz",
+  "_shasum": "d6461074febfec71e7e15235761a329a5dc7c520",
+  "_spec": "arr-diff@^4.0.0",
+  "_where": "/Users/chenpengming/代码/微纳园管理端/node_modules/micromatch",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/arr-diff/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "email": "jon.schlinkert@sellside.com",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Paul Miller",
+      "email": "paul+gh@paulmillr.com",
+      "url": "paulmillr.com"
+    }
+  ],
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Returns an array with only the unique values from the first array, by excluding all values from additional arrays using strict equality for comparisons.",
+  "devDependencies": {
+    "ansi-bold": "^0.1.1",
+    "arr-flatten": "^1.0.1",
+    "array-differ": "^1.0.0",
+    "benchmarked": "^0.2.4",
+    "gulp-format-md": "^0.1.9",
+    "minimist": "^1.2.0",
+    "mocha": "^2.4.5"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/arr-diff",
+  "keywords": [
+    "arr",
+    "array",
+    "array differ",
+    "array-differ",
+    "diff",
+    "differ",
+    "difference"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "arr-diff",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/arr-diff.git"
+  },
+  "scripts": {
+    "test": "mocha"
+  },
+  "verb": {
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "related": {
+      "list": [
+        "arr-flatten",
+        "array-filter",
+        "array-intersection"
+      ]
+    },
+    "reflinks": [
+      "array-differ",
+      "verb"
+    ],
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "4.0.0"
+}

+ 21 - 0
node_modules/arr-filter/LICENSE

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

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 72 - 0
node_modules/arr-filter/README.md


+ 33 - 0
node_modules/arr-filter/index.js

@@ -0,0 +1,33 @@
+/*!
+ * arr-filter <https://github.com/jonschlinkert/arr-filter>
+ *
+ * Copyright (c) 2014-2015, 2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+'use strict';
+
+var makeIterator = require('make-iterator');
+
+module.exports = function filter(arr, fn, thisArg) {
+  if (arr == null) {
+    return [];
+  }
+
+  if (typeof fn !== 'function') {
+    throw new TypeError('expected callback to be a function');
+  }
+
+  var iterator = makeIterator(fn, thisArg);
+  var len = arr.length;
+  var res = arr.slice();
+  var i = -1;
+
+  while (len--) {
+    if (!iterator(arr[len], i++)) {
+      res.splice(len, 1);
+    }
+  }
+  return res;
+};
+

+ 0 - 0
node_modules/arr-filter/package.json


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä