geek преди 4 години
родител
ревизия
ee953c0013
променени са 100 файла, в които са добавени 6213 реда и са изтрити 38 реда
  1. 21 0
      api/commonApi.js
  2. 14 0
      api/store.js
  3. 16 0
      api/user.js
  4. 26 30
      app.js
  5. 7 4
      app.json
  6. 4 2
      componets/shop/index.js
  7. 5 2
      componets/shop/index.wxml
  8. 209 0
      miniprogram_npm/miniprogram-api-promise/index.js
  9. 1 0
      miniprogram_npm/miniprogram-api-promise/index.js.map
  10. 33 0
      node_modules/miniprogram-api-promise/README.md
  11. 52 0
      node_modules/miniprogram-api-promise/package.json
  12. 1 0
      node_modules/miniprogram-api-promise/src/index.js
  13. 149 0
      node_modules/miniprogram-api-promise/src/method.js
  14. 43 0
      node_modules/miniprogram-api-promise/src/promise.js
  15. 38 0
      node_modules/weui-miniprogram/CHANGELOG.md
  16. 21 0
      node_modules/weui-miniprogram/LICENSE
  17. 56 0
      node_modules/weui-miniprogram/README.md
  18. 193 0
      node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.js
  19. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.json
  20. 51 0
      node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.wxml
  21. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.wxss
  22. 114 0
      node_modules/weui-miniprogram/miniprogram_dist/badge/badge.js
  23. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/badge/badge.json
  24. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/badge/badge.wxml
  25. 0 0
      node_modules/weui-miniprogram/miniprogram_dist/badge/badge.wxss
  26. 231 0
      node_modules/weui-miniprogram/miniprogram_dist/cell/cell.js
  27. 6 0
      node_modules/weui-miniprogram/miniprogram_dist/cell/cell.json
  28. 73 0
      node_modules/weui-miniprogram/miniprogram_dist/cell/cell.wxml
  29. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/cell/cell.wxss
  30. 183 0
      node_modules/weui-miniprogram/miniprogram_dist/cells/cells.js
  31. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/cells/cells.json
  32. 8 0
      node_modules/weui-miniprogram/miniprogram_dist/cells/cells.wxml
  33. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/cells/cells.wxss
  34. 226 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.js
  35. 6 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.json
  36. 6 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxml
  37. 0 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxss
  38. 184 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.js
  39. 7 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.json
  40. 20 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.wxml
  41. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.wxss
  42. 182 0
      node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.js
  43. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.json
  44. 20 0
      node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.wxml
  45. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.wxss
  46. 138 0
      node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.js
  47. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.json
  48. 31 0
      node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.wxml
  49. 0 0
      node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.wxss
  50. 746 0
      node_modules/weui-miniprogram/miniprogram_dist/form/form.js
  51. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/form/form.json
  52. 3 0
      node_modules/weui-miniprogram/miniprogram_dist/form/form.wxml
  53. 192 0
      node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.js
  54. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.json
  55. 13 0
      node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.wxml
  56. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.wxss
  57. 149 0
      node_modules/weui-miniprogram/miniprogram_dist/grids/grids.js
  58. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/grids/grids.json
  59. 26 0
      node_modules/weui-miniprogram/miniprogram_dist/grids/grids.wxml
  60. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/grids/grids.wxss
  61. 185 0
      node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.js
  62. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.json
  63. 42 0
      node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.wxml
  64. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.wxss
  65. 568 0
      node_modules/weui-miniprogram/miniprogram_dist/icon/icon.js
  66. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/icon/icon.json
  67. 14 0
      node_modules/weui-miniprogram/miniprogram_dist/icon/icon.wxml
  68. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/icon/icon.wxss
  69. 100 0
      node_modules/weui-miniprogram/miniprogram_dist/index.js
  70. 193 0
      node_modules/weui-miniprogram/miniprogram_dist/loading/loading.js
  71. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/loading/loading.json
  72. 9 0
      node_modules/weui-miniprogram/miniprogram_dist/loading/loading.wxml
  73. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/loading/loading.wxss
  74. 137 0
      node_modules/weui-miniprogram/miniprogram_dist/msg/msg.js
  75. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/msg/msg.json
  76. 29 0
      node_modules/weui-miniprogram/miniprogram_dist/msg/msg.wxml
  77. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/msg/msg.wxss
  78. 211 0
      node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.js
  79. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.json
  80. 32 0
      node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.wxml
  81. 0 0
      node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.wxss
  82. 7 0
      node_modules/weui-miniprogram/miniprogram_dist/package.json
  83. 243 0
      node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.js
  84. 7 0
      node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.json
  85. 19 0
      node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.wxml
  86. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.wxss
  87. 225 0
      node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.js
  88. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.json
  89. 23 0
      node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.wxml
  90. 243 0
      node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.wxs
  91. 0 0
      node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.wxss
  92. BIN
      node_modules/weui-miniprogram/miniprogram_dist/static/icon/s-arrow-back.png
  93. 20 0
      node_modules/weui-miniprogram/miniprogram_dist/static/icon/s-arrow-back.svg
  94. 138 0
      node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.js
  95. 6 0
      node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.json
  96. 10 0
      node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.wxml
  97. 1 0
      node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.wxss
  98. 174 0
      node_modules/weui-miniprogram/miniprogram_dist/toptips/toptips.js
  99. 4 0
      node_modules/weui-miniprogram/miniprogram_dist/toptips/toptips.json
  100. 0 0
      node_modules/weui-miniprogram/miniprogram_dist/toptips/toptips.wxml

+ 21 - 0
api/commonApi.js

@@ -0,0 +1,21 @@
+import request from '../utils/request.js'
+
+class commonApi extends request{
+    // static constructor() {
+    //     super();
+    //     // this._baseUrl = 'https://live-api.shpr.top/api/'
+    //     // this._defaultHeader = {}
+    //     // this._request = new request
+    //     // this._request.setErrorHandler(this.errorHandel)
+    // }
+
+    // static errorHandel(res) {
+    //     console.log(res);
+    // }
+    static async getToken() {
+        const res = await this.getRequest(this.BASE_URL+`Token/getToken`)
+        return res.data
+    }
+
+}
+export default commonApi

+ 14 - 0
api/store.js

@@ -0,0 +1,14 @@
+import request from '../utils/request.js'
+
+class store extends request{
+
+    // static errorHandel(res) {
+    //     console.log(res);
+    // }
+
+    static async getStoreList(page = 1, pageSize = 10) {
+        const res = await this.getRequest(`${this.BASE_URL}Store/index?page=${page}&pageSize=${pageSize}`, this._defaultHeader)
+        return res.data;
+    }
+}
+export default store

+ 16 - 0
api/user.js

@@ -0,0 +1,16 @@
+import request from '../utils/request.js'
+
+class store extends request{
+
+    // static errorHandel(res) {
+    //     console.log(res);
+    // }
+
+    static async userLogin(code) {
+        const res = await this.postRequest(`${this.BASE_URL}User/save`, {
+            code: code
+        })
+        return res.data;
+    }
+}
+export default store

+ 26 - 30
app.js

@@ -1,39 +1,35 @@
 //app.js
+import { default as commonApi } from "./api/commonApi"
+import { default as userApi } from "./api/user"
+
+import { promisifyAll, promisify } from 'miniprogram-api-promise';
+const wxp = {}
+// promisify all wx's api
+promisifyAll(wx, wxp)
 App({
-  onLaunch: function () {
+  onLaunch: async function () {
     // 展示本地存储能力
-    var logs = wx.getStorageSync('logs') || []
-    logs.unshift(Date.now())
-    wx.setStorageSync('logs', logs)
-
-    // 登录
-    wx.login({
-      success: res => {
-        // 发送 res.code 到后台换取 openId, sessionKey, unionId
+    if(!wx.getStorageSync('token')){
+      const tokenData = await commonApi.getToken();
+      if(tokenData.token){
+        wx.setStorageSync('token', tokenData.token)
       }
-    })
-    // 获取用户信息
-    wx.getSetting({
-      success: res => {
-        if (res.authSetting['scope.userInfo']) {
-          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
-          wx.getUserInfo({
-            success: res => {
-              // 可以将 res 发送给后台解码出 unionId
-              this.globalData.userInfo = res.userInfo
+    }
+    // 登录
+    const auth = await wxp.getSetting()
+    if (!auth.authSetting['scope.userInfo']){
+      console.log('您还没有授权');
+      return
+    }
+    // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
+    const info = await wxp.getUserInfo()
+    this.globalData.userInfo = res.userInfo
+    if (this.userInfoReadyCallback) {
+      this.userInfoReadyCallback(res)
+    }
 
-              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
-              // 所以此处加入 callback 以防止这种情况
-              if (this.userInfoReadyCallback) {
-                this.userInfoReadyCallback(res)
-              }
-            }
-          })
-        }
-      }
-    })
   },
   globalData: {
     userInfo: null
   }
-})
+})

+ 7 - 4
app.json

@@ -1,6 +1,5 @@
 {
   "pages":[
-    
     "pages/index/index",
     "pages/commentinfo/commentinfo",
     "pages/product/product",
@@ -13,7 +12,6 @@
     "pages/shop/shop",
     "pages/comments/comments"
 
-   
   ],
   "window":{
     "navigationBarBackgroundColor": "#343434",
@@ -21,8 +19,8 @@
     "navigationBarTitleText": "首页",
     "backgroundColor": "#fff",
     "backgroundTextStyle": "light"
-  
- 
+
+
   },
   "tabBar": {
     "color": "#444",
@@ -52,5 +50,10 @@
   "useExtendedLib": {
     "kbone": true,
     "weui": true
+  },
+  "permission": {
+    "scope.userLocation": {
+      "desc": "你的位置信息将用于小程序位置接口的效果展示"
+    }
   }
 }

+ 4 - 2
componets/shop/index.js

@@ -8,7 +8,9 @@ Component({
 
     },
     methods: {
-        
+        getLocation: function(res){
+            this.triggerEvent('getLocation', { });
+        }
     },
     created: function(){
 
@@ -25,4 +27,4 @@ Component({
     detached: function(){
 
     },
-});
+});

+ 5 - 2
componets/shop/index.wxml

@@ -1,5 +1,5 @@
     <navigator url="../../pages/shopinfo/shopinfo?id={{item.id}}" wx:for="{{shops}}" wx:key="id" hover-class="none">
-        <view class="shop-info">
+        <view class="shop-info" wx:if="{{false}}">
             <view class="shopimg">
                 <image src="{{item.imgurl}}" mode="aspectFill" lazy-load="false" class="img">
 
@@ -37,4 +37,7 @@
             </view>
 
         </view>
-    </navigator>
+        <view catchtap="getLocation" open-type="getLocation">
+            <button>授权获取最近门店信息</button>
+        </view>
+    </navigator>

Файловите разлики са ограничени, защото са твърде много
+ 209 - 0
miniprogram_npm/miniprogram-api-promise/index.js


Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
miniprogram_npm/miniprogram-api-promise/index.js.map


+ 33 - 0
node_modules/miniprogram-api-promise/README.md

@@ -0,0 +1,33 @@
+# miniprogram-api-promise
+
+[![](https://img.shields.io/npm/v/miniprogram-api-promise.svg?style=flat)](https://www.npmjs.com/package/miniprogram-api-promise)
+[![](https://img.shields.io/github/license/wechat-miniprogram/api-typings.svg)](https://github.com/wechat-miniprogram/miniprogram-api-promise)
+
+Extend WeChat miniprogram's api to surport promise.
+
+# Installation
+
+```
+npm install --save miniprogram-api-promise
+```
+
+# Getting started
+Call the method promisifyAll at the program entry (app.js), It only needs to be called once.
+
+💨example:
+```
+import { promisifyAll, promisify } from 'miniprogram-api-promise';
+
+const wxp = {}
+// promisify all wx's api
+promisifyAll(wx, wxp)
+console.log(wxp.getSystemInfoSync())
+wxp.getSystemInfo().then(console.log)
+wxp.showModal().then(wxp.openSetting())
+
+// compatible usage
+wxp.getSystemInfo({success(res) {console.log(res)}})
+
+// promisify single api
+promisify(wx.getSystemInfo)().then(console.log)
+```

+ 52 - 0
node_modules/miniprogram-api-promise/package.json

@@ -0,0 +1,52 @@
+{
+  "_from": "miniprogram-api-promise",
+  "_id": "miniprogram-api-promise@1.0.4",
+  "_inBundle": false,
+  "_integrity": "sha512-lS2ukj03Ugy8IJUDmdssklLT4kjzyRtVYwErhyDZkzxtqcxaed2xldRgNrsikigeMUBR9gAs7wgnjSKPlyKIYg==",
+  "_location": "/miniprogram-api-promise",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "miniprogram-api-promise",
+    "name": "miniprogram-api-promise",
+    "escapedName": "miniprogram-api-promise",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/miniprogram-api-promise/-/miniprogram-api-promise-1.0.4.tgz",
+  "_shasum": "fefe9b72923fd31f88b12463b502cb457c892b4c",
+  "_spec": "miniprogram-api-promise",
+  "_where": "/Users/liuluzheng/WebstormProjects/pos_xcx",
+  "author": {
+    "name": "sanfordsun"
+  },
+  "bugs": {
+    "url": "https://github.com/wechat-miniprogram-admin/miniprogram-api-promise/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Extend WeChat miniprogram's api to surport promise",
+  "homepage": "https://github.com/wechat-miniprogram-admin/miniprogram-api-promise#readme",
+  "keywords": [
+    "miniprogram",
+    "api",
+    "promise"
+  ],
+  "license": "ISC",
+  "main": "src/index.js",
+  "name": "miniprogram-api-promise",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/wechat-miniprogram-admin/miniprogram-api-promise.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.0.4"
+}

+ 1 - 0
node_modules/miniprogram-api-promise/src/index.js

@@ -0,0 +1 @@
+export {promisify, promisifyAll} from './promise'

+ 149 - 0
node_modules/miniprogram-api-promise/src/method.js

@@ -0,0 +1,149 @@
+export const asyncMethods = [
+  'canvasGetImageData',
+  'canvasPutImageData',
+  'canvasToTempFilePath',
+  'setEnableDebug',
+  'startAccelerometer',
+  'stopAccelerometer',
+  'getBatteryInfo',
+  'getClipboardData',
+  'setClipboardData',
+  'startCompass',
+  'stopCompass',
+  'addPhoneContact',
+  'startGyroscope',
+  'stopGyroscope',
+  'startBeaconDiscovery',
+  'stopBeaconDiscovery',
+  'getBeacons',
+  'startLocalServiceDiscovery',
+  'stopLocalServiceDiscovery',
+  'startDeviceMotionListening',
+  'stopDeviceMotionListening',
+  'getNetworkType',
+  'makePhoneCall',
+  'scanCode',
+  'getSystemInfo',
+  'vibrateShort',
+  'vibrateLong',
+  'getExtConfig',
+  'chooseLocation',
+  'getLocation',
+  'openLocation',
+  'chooseMessageFile',
+  'loadFontFace',
+  'chooseImage',
+  'previewImage',
+  'getImageInfo',
+  'saveImageToPhotosAlbum',
+  'compressImage',
+  'chooseVideo',
+  'saveVideoToPhotosAlbum',
+  'downloadFile',
+  'request',
+  'connectSocket',
+  'closeSocket',
+  'sendSocketMessage',
+  'uploadFile',
+  'login',
+  'checkSession',
+  'chooseAddress',
+  'authorize',
+  'addCard',
+  'openCard',
+  'chooseInvoice',
+  'chooseInvoiceTitle',
+  'getUserInfo',
+  'requestPayment',
+  'getWeRunData',
+  'showModal',
+  'showToast',
+  'hideToast',
+  'showLoading',
+  'hideLoading',
+  'showActionSheet',
+  'pageScrollTo',
+  'startPullDownRefresh',
+  'stopPullDownRefresh',
+  'setBackgroundColor',
+  'setBackgroundTextStyle',
+  'setTabBarBadge',
+  'removeTabBarBadge',
+  'showTabBarRedDot',
+  'hideTabBarRedDot',
+  'showTabBar',
+  'hideTabBar',
+  'setTabBarStyle',
+  'setTabBarItem',
+  'setTopBarText',
+  'saveFile',
+  'openDocument',
+  'getSavedFileList',
+  'getSavedFileInfo',
+  'removeSavedFile',
+  'getFileInfo',
+  'getStorage',
+  'setStorage',
+  'removeStorage',
+  'clearStorage',
+  'getStorageInfo',
+  'closeBLEConnection',
+  'closeBluetoothAdapter',
+  'createBLEConnection',
+  'getBLEDeviceCharacteristics',
+  'getBLEDeviceServices',
+  'getBluetoothAdapterState',
+  'getBluetoothDevices',
+  'getConnectedBluetoothDevices',
+  'notifyBLECharacteristicValueChange',
+  'openBluetoothAdapter',
+  'readBLECharacteristicValue',
+  'startBluetoothDevicesDiscovery',
+  'stopBluetoothDevicesDiscovery',
+  'writeBLECharacteristicValue',
+  'getHCEState',
+  'sendHCEMessage',
+  'startHCE',
+  'stopHCE',
+  'getScreenBrightness',
+  'setKeepScreenOn',
+  'setScreenBrightness',
+  'connectWifi',
+  'getConnectedWifi',
+  'getWifiList',
+  'setWifiList',
+  'startWifi',
+  'stopWifi',
+  'getBackgroundAudioPlayerState',
+  'playBackgroundAudio',
+  'pauseBackgroundAudio',
+  'seekBackgroundAudio',
+  'stopBackgroundAudio',
+  'getAvailableAudioSources',
+  'startRecord',
+  'stopRecord',
+  'setInnerAudioOption',
+  'playVoice',
+  'pauseVoice',
+  'stopVoice',
+  'getSetting',
+  'openSetting',
+  'getShareInfo',
+  'hideShareMenu',
+  'showShareMenu',
+  'updateShareMenu',
+  'checkIsSoterEnrolledInDevice',
+  'checkIsSupportSoterAuthentication',
+  'startSoterAuthentication',
+  'navigateBackMiniProgram',
+  'navigateToMiniProgram',
+  'setNavigationBarTitle',
+  'showNavigationBarLoading',
+  'hideNavigationBarLoading',
+  'setNavigationBarColor',
+  'redirectTo',
+  'reLaunch',
+  'navigateTo',
+  'switchTab',
+  'navigateBack'
+]

+ 43 - 0
node_modules/miniprogram-api-promise/src/promise.js

@@ -0,0 +1,43 @@
+import { asyncMethods } from './method'
+
+function hasCallback(args) {
+  if (!args || typeof args !== 'object') return false
+
+  const callback = ['success', 'fail', 'complete']
+  for (const m of callback) {
+    if (typeof args[m] === 'function') return true
+  }
+  return false
+}
+
+function _promisify(func) {
+  if (typeof func !== 'function') return fn
+  return (args = {}) =>
+    new Promise((resolve, reject) => {
+      func(
+        Object.assign(args, {
+          success: resolve,
+          fail: reject
+        })
+      )
+    })
+}
+
+export function promisifyAll(wx = {}, wxp = {}) {
+  Object.keys(wx).forEach(key => {
+    const fn = wx[key]
+    if (typeof fn === 'function' && asyncMethods.indexOf(key) >= 0) {
+      wxp[key] = args => {
+        if (hasCallback(args)) {
+          fn(args)
+        } else {
+          return _promisify(fn)(args)
+        }
+      }
+    } else {
+      wxp[key] = fn
+    }
+  })
+}
+
+export const promisify = _promisify

+ 38 - 0
node_modules/weui-miniprogram/CHANGELOG.md

@@ -0,0 +1,38 @@
+# 更新日志
+
+## 1.0.6
+
+- feat: `mp-grids` 支持动态修改 grids
+- feat: `mp-searchbar` 点击取消按钮时触发 `cancel` 事件
+- fix: 修复 `mp-half-screen-dialog` 中的 desc 属性判断
+- fix: 修复 `mp-searchbar` 节流搜索没有获取最新数据
+- fix: 修复 `form-validator` 中 bytelength 报错
+
+## 1.0.5
+
+- updata: 升级 weui-wxss
+- update:使用 `hover-class` 代替 `:active`
+
+## 1.0.4
+
+- fix: 修复 rangelength 校验
+- feat: 支持自适应 tabbar
+
+## 1.0.3
+
+- fix: `required` 判断 (#93)
+- fix: dialog 未居中 (#94)
+
+## 1.0.2
+
+- fix: Toptips 不展示的bug
+- fix: Form 校验失效的bug
+
+## 1.0.1
+
+- 补充 package.json repository
+
+## 1.0.0
+
+- 更新`weui-wxss`到`2.3.0`版本,支持 DarkMode
+- Demo 支持 DarkMode

+ 21 - 0
node_modules/weui-miniprogram/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019 cunjinli,rockhou,xushengni,tomylin
+
+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.

+ 56 - 0
node_modules/weui-miniprogram/README.md

@@ -0,0 +1,56 @@
+## WeUI组件库简介
+
+[![](https://img.shields.io/npm/v/weui-miniprogram.svg?style=flat-square)](https://www.npmjs.com/package/weui-miniprogram)
+[![](https://img.shields.io/npm/dw/weui-miniprogram?style=flat-square)](https://www.npmjs.com/package/weui-miniprogram)
+[![](https://img.shields.io/travis/wechat-miniprogram/weui-miniprogram.svg?style=flat-square)](https://github.com/wechat-miniprogram/weui-miniprogram)
+[![](https://img.shields.io/github/license/wechat-miniprogram/weui-miniprogram.svg?style=flat-square)](https://github.com/wechat-miniprogram/weui-miniprogram)
+[![](https://img.shields.io/codecov/c/github/wechat-miniprogram/weui-miniprogram.svg?style=flat-square)](https://github.com/wechat-miniprogram/weui-miniprogram)
+
+这是一套基于样式库[weui-wxss](https://github.com/Tencent/weui-wxss/)开发的小程序扩展组件库,同微信原生视觉体验一致的扩展组件库,由微信官方设计团队和小程序团队为微信小程序量身设计,令用户的使用感知更加统一。
+
+## 如何使用
+详细使用参考[文档](https://developers.weixin.qq.com/miniprogram/dev/extended/weui)
+
+## 开发
+1. 初始化
+```
+npm run init
+```
+
+2. 执行命令:
+
+```
+npm run dev
+```
+
+默认会在包根目录下生成 miniprogram\_dev 目录,src 中的源代码会被构建并生成到 miniprogram\_dev/components 目录下。如果需要监听文件变化动态构建,则可以执行命令:
+
+```
+npm run watch
+```
+
+3. 生成的 miniprogram\_dev 目录是一个小程序项目目录,以此目录作为小程序项目目录在开发者工具中打开即可查看自定义组件被使用的效果。
+
+## 其他命令
+
+* 清空 miniprogram_dist 目录:
+
+```
+npm run clean
+```
+
+* 清空 miniprogam_dev 目录:
+
+```
+npm run clean-dev
+```
+
+## 适配 DarkMode
+
+在根结点(或组件的外层结点)增加属性 `data-weui-theme="dark"`,即把 WeUI 组件切换到 DarkMode 的表现,如:
+
+```html
+<view data-weui-theme="dark">
+    ...
+</view>
+```

+ 193 - 0
node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.js

@@ -0,0 +1,193 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 1);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */,
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    multipleSlots: true,
+    // 在组件定义时的选项中启用多slot支持
+    addGlobalClass: true
+  },
+  properties: {
+    title: {
+      // 标题
+      type: String,
+      value: ''
+    },
+    showCancel: {
+      // 是否显示取消按钮
+      type: Boolean,
+      value: true
+    },
+    cancelText: {
+      // 取消按钮文案
+      type: String,
+      value: '取消'
+    },
+    maskClass: {
+      // 遮罩层class
+      type: String,
+      value: ''
+    },
+    extClass: {
+      // 弹出窗 class
+      type: String,
+      value: ''
+    },
+    maskClosable: {
+      // 点击遮罩 关闭 actionsheet
+      type: Boolean,
+      value: true
+    },
+    mask: {
+      // 是否需要 遮罩层
+      type: Boolean,
+      value: true
+    },
+    show: {
+      // 是否开启 actionsheet
+      type: Boolean,
+      value: false
+    },
+    actions: {
+      // actions 列表
+      type: Array,
+      value: [],
+      // {text, extClass}
+      observer: '_groupChange'
+    }
+  },
+  methods: {
+    _groupChange(e) {
+      // 支持 一维数组 写法
+      if (e.length > 0 && typeof e[0] !== 'string' && !(e[0] instanceof Array)) {
+        this.setData({
+          actions: [this.data.actions]
+        });
+      }
+    },
+
+    buttonTap(e) {
+      const {
+        value,
+        groupindex,
+        index
+      } = e.currentTarget.dataset;
+      this.triggerEvent('actiontap', {
+        value,
+        groupindex,
+        index
+      });
+    },
+
+    closeActionSheet(e) {
+      const {
+        type
+      } = e.currentTarget.dataset;
+
+      if (this.data.maskClosable || type) {
+        // 点击 action 里面的 取消
+        this.setData({
+          show: false
+        }); // 关闭回调事件
+
+        this.triggerEvent('close');
+      }
+    }
+
+  }
+});
+
+/***/ })
+/******/ ]);

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 51 - 0
node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.wxml

@@ -0,0 +1,51 @@
+<wxs module="utils">
+    var join = function(a,b) {
+        return a+b
+    };
+    var isNotSlot = function(v) {
+        return typeof v !== 'string'
+    }
+    module.exports = {
+        join: join,
+        isNotSlot: isNotSlot
+    }
+</wxs>
+
+<view wx:if="{{mask}}" class="weui-mask {{show ? '' : 'weui-mask_hidden'}} {{maskClass}}" bindtap="closeActionSheet"></view>
+<view class="weui-actionsheet {{show ? 'weui-actionsheet_toggle' : ''}} {{extClass}}">
+    <!-- 标题 -->
+    <block  wx:if="{{title}}"> 
+        <view class="weui-actionsheet__title">
+            <view class="weui-actionsheet__title-text">{{title}}</view>
+        </view>
+    </block>
+    <slot name="title" wx:else></slot>
+    <view 
+        class="{{ !showCancel && index === actions.length-1 ? 'weui-actionsheet__action' : 'weui-actionsheet__menu' }}"
+        wx:key="index"
+        wx:for-item="actionItem" 
+        wx:for-index="index"
+        wx:for="{{actions}}"
+    >
+        <block wx:if="{{utils.isNotSlot(actionItem)}}">
+            <view
+                class="weui-actionsheet__cell {{item.type === 'warn' ? 'weui-actionsheet__cell_warn' : '' }}"
+                hover-class="weui-active"
+                wx:key="actionIndex" 
+                wx:for="{{actionItem}}"
+                wx:for-index="actionIndex"
+                data-groupindex="{{index}}"
+                data-index="{{actionIndex}}" 
+                data-value="{{item.value}}"
+                bindtap="buttonTap"
+            >
+                {{item.text}}
+            </view>  
+        </block>
+        <slot name="{{actionItem}}" wx:else></slot>
+    </view>
+    <!-- 取消按钮 -->
+    <view class="weui-actionsheet__action" wx:if="{{showCancel}}">
+        <view class="weui-actionsheet__cell" hover-class="weui-active" data-type="close" id="iosActionsheetCancel" bindtap="closeActionSheet">{{cancelText}}</view>
+    </view>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/actionsheet/actionsheet.wxss

@@ -0,0 +1 @@
+.weui-mask.weui-mask_hidden{opacity:0;transform:scale3d(1, 1, 0)}.weui-mask{opacity:1;transform:scale3d(1, 1, 1);transition:all .3s}

+ 114 - 0
node_modules/weui-miniprogram/miniprogram_dist/badge/badge.js

@@ -0,0 +1,114 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 15);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 15:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true
+  },
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    content: {
+      type: String,
+      value: ''
+    }
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/badge/badge.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/badge/badge.wxml

@@ -0,0 +1 @@
+<view class="weui-badge {{extClass}} {{!content ? 'weui-badge_dot' : ''}}">{{content}}</view>

+ 0 - 0
node_modules/weui-miniprogram/miniprogram_dist/badge/badge.wxss


+ 231 - 0
node_modules/weui-miniprogram/miniprogram_dist/cell/cell.js

@@ -0,0 +1,231 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 9);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 9:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    hover: {
+      type: Boolean,
+      value: false
+    },
+    link: {
+      type: Boolean,
+      value: false
+    },
+    extClass: {
+      type: String,
+      value: ''
+    },
+    iconClass: {
+      type: String,
+      value: ''
+    },
+    bodyClass: {
+      type: String,
+      value: ''
+    },
+    icon: {
+      type: String,
+      value: ''
+    },
+    title: {
+      // 和icon二选一,都是放在cell_hd里面
+      type: String,
+      value: ''
+    },
+    value: {
+      type: String,
+      value: ''
+    },
+    showError: {
+      type: Boolean,
+      value: false
+    },
+    prop: {
+      // 校验的属性,给父元素form使用
+      type: String,
+      value: ''
+    },
+    url: {
+      // 在link为true的时候有效,表示navigator的跳转url
+      type: String,
+      value: ''
+    },
+    footerClass: {
+      type: String,
+      value: ''
+    },
+    footer: {
+      type: String,
+      value: ''
+    },
+    inline: {
+      // 左右布局样式还是上下布局
+      type: Boolean,
+      value: true
+    },
+    hasHeader: {
+      type: Boolean,
+      value: true
+    },
+    hasFooter: {
+      type: Boolean,
+      value: true
+    },
+    hasBody: {
+      type: Boolean,
+      value: true
+    },
+    extHoverClass: {
+      // 提供给需要定制 hover-class 的场景,要求 hover 为 false
+      type: String,
+      value: ''
+    }
+  },
+  relations: {
+    '../form/form': {
+      type: 'ancestor'
+    },
+    '../cells/cells': {
+      type: 'ancestor'
+    }
+  },
+  data: {
+    inForm: false
+  },
+  methods: {
+    setError(error) {
+      this.setData({
+        error: error || false
+      });
+    },
+
+    setInForm() {
+      this.setData({
+        inForm: true
+      });
+    },
+
+    setOuterClass(className) {
+      this.setData({
+        outerClass: className
+      });
+    },
+
+    navigateTo() {
+      const data = this.data;
+
+      if (data.url && data.link) {
+        wx.navigateTo({
+          url: data.url,
+          success: res => {
+            this.triggerEvent('navigatesuccess', res, {});
+          },
+          fail: fail => {
+            this.triggerEvent('navigateerror', fail, {});
+          }
+        });
+      }
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 6 - 0
node_modules/weui-miniprogram/miniprogram_dist/cell/cell.json

@@ -0,0 +1,6 @@
+{
+    "component": true,
+    "usingComponents": {
+        "mp-cells": "../cells/cells"
+    }
+}

+ 73 - 0
node_modules/weui-miniprogram/miniprogram_dist/cell/cell.wxml

@@ -0,0 +1,73 @@
+<block wx:if="{{link}}">
+    <view bindtap="navigateTo" class="weui-cell weui-cell_access {{extClass}} {{outerClass}}{{inForm ? ' weui-cell-inform' : ''}}{{inline ? '' : ' .weui-cell_label-block'}}" hover-class="{{hover ? 'weui-cell_active weui-active' : extHoverClass}}">
+        <view wx:if="{{hasHeader}}" class="weui-cell__hd {{iconClass}}">
+            <block wx:if="{{icon}}">
+                <image src="{{icon}}" class="weui-cell__icon" mode="aspectFit"></image>
+            </block>
+            <block wx:else>
+                <slot name="icon"></slot>
+            </block>
+            <block wx:if="{{inForm}}">
+                <block wx:if="{{title}}"><view class="weui-label">{{title}}</view></block>
+                <block wx:else>
+                    <slot name="title"></slot>
+                </block>
+            </block>
+            <block wx:else>
+                <block wx:if="{{title}}">{{title}}</block>
+                <block wx:else>
+                    <slot name="title"></slot>
+                </block>
+            </block>
+        </view>
+        <view wx:if="{{hasBody}}" class="weui-cell__bd">
+            <block wx:if="{{value}}">{{value}}</block>
+            <block wx:else>
+                <slot></slot>
+            </block>
+        </view>
+        <view wx:if="{{hasFooter}}" class="weui-cell__ft weui-cell__ft_in-access {{footerClass}}">
+            <block wx:if="{{footer}}">{{footer}}</block>
+            <block wx:else>
+                <slot name="footer"></slot>
+            </block>
+        </view>
+    </view>
+</block>
+<block wx:else>
+    <view bindtap="navigateTo" class="weui-cell {{showError && error ? 'weui-cell_warn' : ''}} {{inForm ? 'weui-cell-inform' : ''}} {{extClass}} {{outerClass}}" hover-class="{{hover ? 'weui-cell_active weui-active' : extHoverClass}}">
+        <view wx:if="{{hasHeader}}" class="weui-cell__hd {{iconClass}}">
+            <block wx:if="{{icon}}">
+                <image src="{{icon}}" class="weui-cell__icon" mode="aspectFit"></image>
+            </block>
+            <block wx:else>
+                <slot name="icon"></slot>
+            </block>
+            <block wx:if="{{inForm}}">
+                <block wx:if="{{title}}"><view class="weui-label">{{title}}</view></block>
+                <block wx:else>
+                    <slot name="title"></slot>
+                </block>
+            </block>
+            <block wx:else>
+                <block wx:if="{{title}}">{{title}}</block>
+                <block wx:else>
+                    <slot name="title"></slot>
+                </block>
+            </block>
+        </view>
+        <view wx:if="{{hasBody}}" class="weui-cell__bd {{bodyClass}}">
+            <block wx:if="{{value}}">{{value}}</block>
+            <block wx:else>
+                <slot></slot>
+            </block>
+        </view>
+        <view wx:if="{{hasFooter}}" class="weui-cell__ft {{footerClass}}">
+            <block wx:if="{{footer}}">{{footer}}</block>
+            <block wx:else>
+                <slot name="footer"></slot>
+            </block>
+            <icon wx:if="{{showError && error}}" type="warn" size="23" color="#E64340"></icon>
+        </view>
+    </view>
+</block>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/cell/cell.wxss

@@ -0,0 +1 @@
+.weui-cell_wxss.weui-cell_wxss:before{display:block}

+ 183 - 0
node_modules/weui-miniprogram/miniprogram_dist/cells/cells.js

@@ -0,0 +1,183 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 8);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 8:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    title: {
+      type: String,
+      value: ''
+    },
+    extClass: {
+      type: String,
+      value: ''
+    },
+    footer: {
+      type: String,
+      value: ''
+    }
+  },
+  data: {
+    firstItem: null,
+    checkboxCount: 0,
+    checkboxIsMulti: false,
+    outerClass: '',
+    childClass: ''
+  },
+  relations: {
+    '../cell/cell': {
+      type: 'descendant',
+
+      linked(target) {
+        if (!this.data.firstItem) {
+          this.data.firstItem = target;
+        }
+
+        if (target !== this.data.firstItem) {
+          target.setOuterClass('weui-cell_wxss');
+        }
+      }
+
+    },
+    '../form-page/form-page': {
+      type: 'ancestor'
+    },
+    '../checkbox-group/checkbox-group': {
+      type: 'descendant',
+
+      linked(target) {
+        this.setData({
+          checkboxCount: this.data.checkboxCount + 1,
+          checkboxIsMulti: target.data.multi
+        });
+      },
+
+      unlinked(target) {
+        this.setData({
+          checkboxCount: this.data.checkboxCount - 1,
+          checkboxIsMulti: target.data.multi
+        });
+      }
+
+    }
+  },
+  methods: {
+    setCellMulti(multi) {
+      this.setData({
+        checkboxIsMulti: multi
+      });
+    },
+
+    setCellsClass(className) {
+      this.setData({
+        childClass: className
+      });
+    },
+
+    setOuterClass(className) {
+      this.setData({
+        outerClass: className
+      });
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/cells/cells.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 8 - 0
node_modules/weui-miniprogram/miniprogram_dist/cells/cells.wxml

@@ -0,0 +1,8 @@
+<view class="{{extClass}} weui-cells__group {{outerClass}} {{childClass}}">
+    <view wx:if="{{title}}" class="weui-cells__title">{{title}}</view>
+    <view class="weui-cells weui-cells_after-title {{checkboxCount > 0 && checkboxIsMulti ? 'weui-cells_checkbox' : ''}}">
+        <slot></slot>
+    </view>
+    <view wx:if="{{footer}}" class="weui-cells__tips">{{footer}}</view>
+    <slot name="footer" wx:else></slot>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/cells/cells.wxss

@@ -0,0 +1 @@
+.weui-cells__group_wxss.weui-cells__group_wxss .weui-cells__title{margin-top:24px}.weui-cells__group_form .weui-cells__tips{margin-top:8px;padding:0 32px;color:var(--weui-FG-1)}

+ 226 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.js

@@ -0,0 +1,226 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 24);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 24:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    multi: {
+      type: Boolean,
+      value: true,
+      observer: '_multiChange'
+    },
+    extClass: {
+      type: String,
+      value: ''
+    },
+    prop: {
+      type: String,
+      value: ''
+    }
+  },
+  data: {
+    targetList: [],
+    parentCell: null
+  },
+  relations: {
+    '../checkbox/checkbox': {
+      type: 'descendant',
+
+      linked(target) {
+        this.data.targetList.push(target);
+        target.setMulti(this.data.multi);
+
+        if (!this.data.firstItem) {
+          this.data.firstItem = target;
+        }
+
+        if (target !== this.data.firstItem) {
+          target.setOuterClass('weui-cell_wxss');
+        }
+      },
+
+      unlinked(target) {
+        let index = -1;
+        this.data.targetList.forEach((item, idx) => {
+          if (item === target) {
+            index = idx;
+          }
+        });
+        this.data.targetList.splice(index, 1);
+
+        if (!this.data.targetList) {
+          this.data.firstItem = null;
+        }
+      }
+
+    },
+    '../form/form': {
+      type: 'ancestor'
+    },
+    '../cells/cells': {
+      type: 'ancestor',
+
+      linked(target) {
+        if (!this.data.parentCell) {
+          this.data.parentCell = target;
+        }
+
+        this.setParentCellsClass();
+      },
+
+      unlinked() {
+        this.data.parentCell = null; // 方便内存回收
+      }
+
+    }
+  },
+  methods: {
+    checkedChange(checked, target) {
+      if (this.data.multi) {
+        const vals = [];
+        this.data.targetList.forEach(item => {
+          if (item.data.checked) {
+            vals.push(item.data.value);
+          }
+        });
+        this.triggerEvent('change', {
+          value: vals
+        });
+      } else {
+        let val = '';
+        this.data.targetList.forEach(item => {
+          if (item === target) {
+            val = item.data.value;
+          } else {
+            item.setData({
+              checked: false
+            });
+          }
+        });
+        this.triggerEvent('change', {
+          value: val
+        }, {});
+      }
+    },
+
+    setParentCellsClass() {
+      const className = this.data.multi ? 'weui-cells_checkbox' : '';
+
+      if (this.data.parentCell) {
+        this.data.parentCell.setCellsClass(className);
+      }
+    },
+
+    _multiChange(multi) {
+      this.data.targetList.forEach(target => {
+        target.setMulti(multi);
+      });
+
+      if (this.data.parentCell) {
+        this.data.parentCell.setCellMulti(multi);
+      }
+
+      return multi;
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 6 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.json

@@ -0,0 +1,6 @@
+{
+    "component": true,
+    "usingComponents": {
+        "mp-cells": "../cells/cells"
+    }
+}

+ 6 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxml

@@ -0,0 +1,6 @@
+<checkbox-group class="{{extClass}}" wx-if="{{multi}}" bindchange="checkedChange">
+    <slot></slot>
+</checkbox-group>
+<radio-group class="{{extClass}}" wx-else bindchange="checkedChange">
+    <slot></slot>
+</radio-group>

+ 0 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox-group/checkbox-group.wxss


+ 184 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.js

@@ -0,0 +1,184 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 25);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 25:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    multi: {
+      type: Boolean,
+      value: true
+    },
+    checked: {
+      type: Boolean,
+      value: false
+    },
+    value: {
+      type: String,
+      value: ''
+    },
+    label: {
+      type: String,
+      value: 'label'
+    },
+    extClass: {
+      type: String,
+      value: ''
+    }
+  },
+  data: {},
+  relations: {
+    '../checkbox-group/checkbox-group': {
+      type: 'ancestor',
+
+      linked(target) {
+        this.data.group = target;
+      },
+
+      unlinked() {
+        this.data.group = null;
+      }
+
+    }
+  },
+  methods: {
+    setMulti(multi) {
+      this.setData({
+        multi
+      });
+    },
+
+    setOuterClass(className) {
+      this.setData({
+        outerClass: className
+      });
+    },
+
+    checkedChange() {
+      if (this.data.multi) {
+        const checked = !this.data.checked;
+        this.setData({
+          checked
+        });
+
+        if (this.data.group) {
+          this.data.group.checkedChange(checked, this);
+        }
+      } else {
+        const checked = this.data.checked;
+        if (checked) return;
+        this.setData({
+          checked: true
+        });
+
+        if (this.data.group) {
+          this.data.group.checkedChange(checked, this);
+        }
+      }
+
+      this.triggerEvent('change', {
+        value: this.data.value,
+        checked: this.data.checked
+      });
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 7 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.json

@@ -0,0 +1,7 @@
+{
+    "component": true,
+    "usingComponents": {
+        "mp-cell": "../cell/cell",
+        "mp-checkbox-group": "../checkbox-group/checkbox-group"
+    }
+}

+ 20 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.wxml

@@ -0,0 +1,20 @@
+<mp-cell
+  has-footer="{{!multi}}"
+  has-header="{{multi}}"
+  bindtap="checkedChange"
+  ext-class="weui-check__label {{outerClass}} {{extClass}} {{!multi ? '^weui-cell_radio' : '^weui-cell_checkbox'}}"
+  ext-hover-class="weui-active">
+
+  <view slot="icon" wx:if="{{multi}}">
+    <checkbox value="{{value}}" checked="{{checked}}" disabled="{{disabled}}" color="{{color}}" class="weui-check">
+    </checkbox>
+    <!-- 未勾选 -->
+    <icon class="weui-icon-checked"></icon>
+  </view>
+  <view>{{label}}</view>
+  <view slot="footer" wx:if="{{!multi}}">
+    <radio value="{{value}}" checked="{{checked}}" disabled="{{disabled}}" color="{{color}}" class="weui-check"></radio>
+    <!-- 已勾选 -->
+    <icon class="weui-icon-checked"></icon>
+  </view>
+</mp-cell>

Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/checkbox/checkbox.wxss


+ 182 - 0
node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.js

@@ -0,0 +1,182 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 20);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 20:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    multipleSlots: true,
+    // 在组件定义时的选项中启用多slot支持
+    addGlobalClass: true
+  },
+  properties: {
+    title: {
+      // 弹窗标题,也可以通过 slot 自定义
+      type: String,
+      value: ''
+    },
+    extClass: {
+      // 弹窗 class
+      type: String,
+      value: ''
+    },
+    maskClosable: {
+      type: Boolean,
+      value: true
+    },
+    mask: {
+      // 是否需要 遮罩层
+      type: Boolean,
+      value: true
+    },
+    show: {
+      // 是否开启弹窗
+      type: Boolean,
+      value: false,
+      observer: '_showChange'
+    },
+    buttons: {
+      type: Array,
+      value: [] // {text, extClass}
+
+    }
+  },
+  data: {
+    innerShow: false
+  },
+
+  ready() {
+    const buttons = this.data.buttons;
+    const len = buttons.length;
+    buttons.forEach((btn, index) => {
+      if (len === 1) {
+        btn.className = 'weui-dialog__btn_primary';
+      } else if (index === 0) {
+        btn.className = 'weui-dialog__btn_default';
+      } else {
+        btn.className = 'weui-dialog__btn_primary';
+      }
+    });
+    this.setData({
+      buttons
+    });
+  },
+
+  methods: {
+    buttonTap(e) {
+      const {
+        index
+      } = e.currentTarget.dataset;
+      this.triggerEvent('buttontap', {
+        index,
+        item: this.data.buttons[index]
+      }, {});
+    },
+
+    close() {
+      const data = this.data;
+      if (!data.maskClosable) return;
+      this.setData({
+        show: false
+      });
+      this.triggerEvent('close', {}, {});
+    },
+
+    stopEvent() {}
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 20 - 0
node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.wxml

@@ -0,0 +1,20 @@
+<view bindtap="close" class="weui-mask {{!show ? 'weui-mask_hidden' : '' }}" wx:if="{{mask}}"></view>
+<view wx:if="{{show}}" bindtap="close" class="weui-dialog__wrp {{extClass}}">
+    <view class="weui-dialog" catchtap="stopEvent">
+      <view class="weui-dialog__hd">
+        <view class="weui-dialog__title">{{title}}
+          <slot name="title"></slot>
+        </view>
+      </view>
+      <view class="weui-dialog__bd">
+        <slot></slot>
+      </view>
+      <view class="weui-dialog__ft">
+        <block wx:if="{{buttons && buttons.length}}">
+          <view wx:for="{{buttons}}" wx:key="index" class="weui-dialog__btn {{item.className}} {{item.extClass}}" hover-class="weui-active" data-index="{{index}}" bindtap="buttonTap">{{item.text}}</view>
+        </block>
+        <slot name="footer" wx:else></slot>
+      </view>
+    </view>
+</view>
+

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/dialog/dialog.wxss

@@ -0,0 +1 @@
+.weui-dialog.weui-dialog_hidden{opacity:0;transform:scale3d(1, 1, 0)}.weui-dialog{opacity:1;-webkit-transform:scale3d(1, 1, 1) translateY(-50%);transform:scale3d(1, 1, 1) translateY(-50%);transition:all .2s ease-in}.weui-mask.weui-mask_hidden{opacity:0;transform:scale3d(1, 1, 0)}.weui-mask{opacity:1;transform:scale3d(1, 1, 1);transition:all .2s ease-in}

+ 138 - 0
node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.js

@@ -0,0 +1,138 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 2);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 2:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    title: {
+      // Msg 标题
+      type: String,
+      value: ''
+    },
+    subtitle: {
+      // icon 的 type
+      type: String,
+      value: ''
+    }
+  },
+  relations: {
+    '../cells/cells': {
+      type: 'descendant',
+
+      linked(target) {
+        if (!this.data.firstItem) {
+          this.data.firstItem = target;
+        }
+
+        target.setOuterClass('weui-cells__group weui-cells__group_form weui-cells_form');
+
+        if (target !== this.data.firstItem) {
+          target.setOuterClass('weui-cells__group_wxss weui-cells__group weui-cells__group_form weui-cells_form');
+        }
+      }
+
+    }
+  },
+  data: {
+    firstItem: null
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 31 - 0
node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.wxml

@@ -0,0 +1,31 @@
+<view class="weui-form">
+    <block wx:if="{{title || subtitle}}">
+      <view class="weui-form__text-area">
+          <view class="weui-form__title">{{title}}</view>
+          <view class="weui-form__desc">{{subtitle}}</view>
+      </view>
+    </block>
+    <block wx:else>
+      <view class="weui-form__text-area">
+        <slot name="title"></slot>
+      </view>
+    </block>
+  <view class="weui-form__control-area">
+    <slot></slot>
+  </view>
+  <view class="weui-form__tips-area">
+    <slot name="tips"></slot>
+  </view>
+  <view class="weui-form__opr-area">
+    <slot name="button"></slot>
+  </view>
+  <view class="weui-form__tips-area">
+    <slot name="suffixtips"></slot>
+  </view>
+  <view class="weui-form__extra-area">
+    <view class="weui-footer">
+      <slot name="footer"></slot>
+    </view>
+  </view>
+</view>
+

+ 0 - 0
node_modules/weui-miniprogram/miniprogram_dist/form-page/form-page.wxss


Файловите разлики са ограничени, защото са твърде много
+ 746 - 0
node_modules/weui-miniprogram/miniprogram_dist/form/form.js


+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/form/form.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 3 - 0
node_modules/weui-miniprogram/miniprogram_dist/form/form.wxml

@@ -0,0 +1,3 @@
+<view class="{{extClass}}">
+    <slot></slot>
+</view>

+ 192 - 0
node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.js

@@ -0,0 +1,192 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 21);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 21:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true
+  },
+  properties: {
+    imgUrls: {
+      type: Array,
+      value: [],
+
+      observer(newVal) {
+        this.setData({
+          currentImgs: newVal
+        });
+      }
+
+    },
+    showDelete: {
+      // 是否显示delete按钮
+      type: Boolean,
+      value: true
+    },
+    show: {
+      type: Boolean,
+      value: true
+    },
+    current: {
+      type: Number,
+      value: 0
+    },
+    hideOnClick: {
+      type: Boolean,
+      value: true
+    },
+    extClass: {
+      type: String,
+      value: ''
+    }
+  },
+  data: {
+    currentImgs: []
+  },
+
+  ready() {
+    const data = this.data;
+    this.setData({
+      currentImgs: data.imgUrls
+    });
+  },
+
+  methods: {
+    change(e) {
+      this.setData({
+        current: e.detail.current
+      });
+      this.triggerEvent('change', {
+        current: e.detail.current
+      }, {});
+    },
+
+    deleteImg() {
+      const data = this.data;
+      const imgs = data.currentImgs;
+      const url = imgs.splice(data.current, 1);
+      this.triggerEvent('delete', {
+        url: url[0],
+        index: data.current
+      }, {});
+
+      if (imgs.length === 0) {
+        // @ts-ignore
+        this.hideGallery();
+        return;
+      }
+
+      this.setData({
+        current: 0,
+        currentImgs: imgs
+      });
+    },
+
+    hideGallery() {
+      const data = this.data;
+
+      if (data.hideOnClick) {
+        this.setData({
+          show: false
+        });
+        this.triggerEvent('hide', {}, {});
+      }
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 13 - 0
node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.wxml

@@ -0,0 +1,13 @@
+<view class="weui-gallery {{show ? 'weui-gallery_show' : ''}} {{extClass}}">
+  <view class="weui-gallery__info">{{current+1}}/{{currentImgs.length}}</view>
+  <swiper class="weui-gallery__img__wrp" bindtap="hideGallery" indicator-dots="{{false}}" bindchange="change" current="{{current}}" autoplay="{{false}}" duration="{{500}}">
+    <block wx:for="{{currentImgs}}" wx:key="index">
+      <swiper-item>
+        <image mode="aspectFit" class="weui-gallery__img" src="{{item}}"></image>
+      </swiper-item>
+    </block>
+  </swiper>
+  <view class="weui-gallery__opr" wx:if="{{showDelete}}">
+    <navigator bindtap="deleteImg" class="weui-gallery__del">删除</navigator>
+  </view>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/gallery/gallery.wxss

@@ -0,0 +1 @@
+.weui-gallery{display:none}.weui-gallery_show.weui-gallery{display:flex}

+ 149 - 0
node_modules/weui-miniprogram/miniprogram_dist/grids/grids.js

@@ -0,0 +1,149 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 23);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 23:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+const defaultGridProps = {
+  target: 'self',
+  url: '',
+  openType: 'navigate',
+  delta: 1,
+  appId: '',
+  path: '',
+  extraData: '',
+  version: 'release',
+  hoverClass: 'navigator-hover',
+  hoverStopPropagation: false,
+  hoverStartTime: 50,
+  hoverStayTime: 600,
+  bindsuccess: () => {},
+  bindfail: () => {},
+  bindcomplete: () => {}
+};
+Component({
+  options: {
+    addGlobalClass: true,
+    pureDataPattern: /^_/
+  },
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    grids: {
+      type: Array,
+      value: [],
+      observer: '_onGridsChange'
+    }
+  },
+  data: {
+    innerGrids: []
+  },
+
+  ready() {},
+
+  methods: {
+    _onGridsChange(grids) {
+      if (grids) {
+        this.setData({
+          innerGrids: grids.map(grid => Object.assign({}, defaultGridProps, grid))
+        });
+      }
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/grids/grids.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 26 - 0
node_modules/weui-miniprogram/miniprogram_dist/grids/grids.wxml

@@ -0,0 +1,26 @@
+<view class="weui-grids {{extClass}}">
+  <block wx:for="{{innerGrids}}" wx:key="index">
+    <navigator
+      class="weui-grid"
+      target="{{item.target}}"
+      url="{{item.url}}"
+      open-type="{{item.openType}}"
+      app-id="{{item.appId}}"
+      path="{{item.path}}"
+      extra-data="{{item.extraData}}"
+      version="{{item.version}}"
+      hover-class="{{item.hoverClass}}"
+      hover-stop-propagation="{{item.hoverStopPropagation}}"
+      hover-start-time="{{item.hoverStartTime}}"
+      hover-stay-time="{{item.hoverStayTime}}"
+      bindsuccess="{{item.bindsuccess}}"
+      bindfail="{{item.bindfail}}"
+      bindcomplete="{{item.bindcomplete}}"
+    >
+      <view class="weui-grid__icon">
+        <image class="weui-grid__icon_img" src="{{item.imgUrl}}" alt></image>
+      </view>
+      <view class="weui-grid__label">{{item.text}}</view>
+    </navigator>
+  </block>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/grids/grids.wxss

@@ -0,0 +1 @@
+.weui-grid .weui-grid__icon_img{width:100%;height:100%}

+ 185 - 0
node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.js

@@ -0,0 +1,185 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 17);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 17:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    multipleSlots: true,
+    // 在组件定义时的选项中启用多slot支持
+    addGlobalClass: true
+  },
+  properties: {
+    closabled: {
+      // 是否具有关闭标签
+      type: Boolean,
+      value: true
+    },
+    title: {
+      // 标题,也可以通过 slot 自定义
+      type: String,
+      value: ''
+    },
+    subTitle: {
+      // 副标题,也可以通过 slot 自定义
+      type: String,
+      value: ''
+    },
+    extClass: {
+      // 弹窗 class
+      type: String,
+      value: ''
+    },
+    desc: {
+      type: String,
+      value: ''
+    },
+    tips: {
+      type: String,
+      value: ''
+    },
+    maskClosable: {
+      type: Boolean,
+      value: true
+    },
+    mask: {
+      // 是否需要 遮罩层
+      type: Boolean,
+      value: true
+    },
+    show: {
+      // 是否开启弹窗
+      type: Boolean,
+      value: false,
+      observer: '_showChange'
+    },
+    buttons: {
+      type: Array,
+      value: [] // {text, extClass}
+
+    }
+  },
+  methods: {
+    close(e) {
+      const {
+        type
+      } = e.currentTarget.dataset;
+
+      if (this.data.maskClosable || type === 'close') {
+        this.setData({
+          show: false
+        }); // 关闭弹窗回调事件
+
+        this.triggerEvent('close');
+      }
+    },
+
+    buttonTap(e) {
+      const {
+        index
+      } = e.currentTarget.dataset;
+      this.triggerEvent('buttontap', {
+        index,
+        item: this.data.buttons[index]
+      }, {});
+    },
+
+    onMaskMouseMove(e) {// do nothing
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 42 - 0
node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.wxml

@@ -0,0 +1,42 @@
+<view class="{{show ? 'weui-show' :'weui-hidden'}}">
+  <view class="weui-mask init" wx:if="{{mask}}" bindtap="close" catch:touchmove="onMaskMouseMove" data-type="tap"></view>
+  <view class="weui-half-screen-dialog {{extClass}}">
+    <view class="weui-half-screen-dialog__hd">
+      <view wx:if="{{closabled}}" class="weui-half-screen-dialog__hd__side" bindtap="close" data-type="close">
+        <view class="weui-icon-btn weui-icon-btn_close" hover-class="weui-active">关闭</view>
+      </view>
+      <view class="weui-half-screen-dialog__hd__main">
+        <block wx:if="{{title}}">
+          <text class="weui-half-screen-dialog__title">{{title}}</text>
+          <text class="weui-half-screen-dialog__subtitle">{{subTitle}}</text>
+        </block>
+        <block wx:else>
+          <view class="weui-half-screen-dialog__title"><slot name="title"></slot></view>
+        </block>
+      </view>
+      <view class="weui-half-screen-dialog__hd__side">
+        <view class="weui-icon-btn weui-icon-btn_more" hover-class="weui-active">更多</view>
+      </view>
+    </view>
+    <view class="weui-half-screen-dialog__bd">
+      <block wx:if="{{desc}}">
+        <view class="weui-half-screen-dialog__desc">{{desc}}</view>
+        <view class="weui-half-screen-dialog__tips">{{tips}}</view>
+      </block>
+      <slot name="desc" wx:else></slot>
+    </view>
+    <view class="weui-half-screen-dialog__ft">
+      <block wx:if="{{buttons && buttons.length}}">
+        <button
+          wx:for="{{buttons}}"
+          wx:key="index"
+          type="{{item.type}}"
+          class="weui-btn {{item.className}}"
+          data-index="{{index}}"
+          bindtap="buttonTap"
+        >{{item.text}}</button>
+      </block>
+      <slot name="footer" wx:else></slot>
+    </view>
+  </view>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/half-screen-dialog/half-screen-dialog.wxss

@@ -0,0 +1 @@
+.weui-mask,.weui-half-screen-dialog{transition:all .3s}.weui-hidden .weui-mask{visibility:hidden;opacity:0}.weui-hidden .weui-half-screen-dialog{transform:translateY(100%)}.weui-show .weui-mask{opacity:1;visibility:visible}.weui-show .weui-half-screen-dialog{transform:translateY(0%)}

Файловите разлики са ограничени, защото са твърде много
+ 568 - 0
node_modules/weui-miniprogram/miniprogram_dist/icon/icon.js


+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/icon/icon.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 14 - 0
node_modules/weui-miniprogram/miniprogram_dist/icon/icon.wxml

@@ -0,0 +1,14 @@
+<wxs module="utils">
+    var double = function(a) {
+        return 2*a
+    };
+    var ifSpecialIcon = function(v) {
+      return v === 'arrow' || v === 'back'
+    }
+    module.exports = {
+      double: double,
+      ifSpecialIcon: ifSpecialIcon
+    }
+</wxs>
+
+<view class="{{extClass}} weui-icon" style="background:{{color}};width:{{size}}px;height:{{ utils.ifSpecialIcon(icon) ? utils.double(size) : size}}px;mask-image:url({{src}});-webkit-mask-image:url({{src}});-moz-mask-image:url({{src}})"></view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/icon/icon.wxss

@@ -0,0 +1 @@
+.weui-icon{vertical-align:middle;display:inline-block;background:black;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;-moz-mask-repeat:no-repeat;mask-size:cover;-webkit-mask-size:cover;-moz-mask-size:cover}

+ 100 - 0
node_modules/weui-miniprogram/miniprogram_dist/index.js

@@ -0,0 +1,100 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 27);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 27:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+exports.__esModule = true;
+
+/***/ })
+
+/******/ });

+ 193 - 0
node_modules/weui-miniprogram/miniprogram_dist/loading/loading.js

@@ -0,0 +1,193 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 14);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 14:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true
+  },
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    show: {
+      // 默认显示出来
+      type: Boolean,
+      value: true,
+
+      observer(newValue) {
+        this._computedStyle(newValue, this.data.animated);
+      }
+
+    },
+    animated: {
+      type: Boolean,
+      value: false,
+
+      observer(newValue) {
+        this._computedStyle(this.data.show, newValue);
+      }
+
+    },
+    duration: {
+      // 过渡动画时间
+      type: Number,
+      value: 350
+    },
+    type: {
+      type: String,
+      value: 'dot-gray' // 取值dot-white、dot-gray、circle
+
+    },
+    tips: {
+      // type是circle的时候才有效
+      type: String,
+      value: '加载中'
+    }
+  },
+  data: {
+    animationData: {},
+    animationInstance: {},
+    displayStyle: 'none'
+  },
+  methods: {
+    _computedStyle(show, animated) {
+      if (!show) {
+        if (!animated) {
+          this.setData({
+            displayStyle: 'none'
+          });
+        } else {
+          this._startAnimation();
+        }
+      } else {
+        this.setData({
+          displayStyle: ''
+        });
+      }
+    },
+
+    _startAnimation() {
+      setTimeout(() => {
+        const data = this.data;
+        const animation = data.animationInstance;
+        animation.height(0).step();
+        this.setData({
+          animationData: animation.export()
+        });
+      }, 0);
+    }
+
+  },
+  lifetimes: {
+    attached() {
+      const data = this.data;
+      const animationInstance = wx.createAnimation({
+        duration: data.duration,
+        timingFunction: 'ease'
+      });
+      this.setData({
+        animationInstance
+      });
+
+      this._computedStyle(this.data.show, this.data.animated);
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/loading/loading.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 9 - 0
node_modules/weui-miniprogram/miniprogram_dist/loading/loading.wxml

@@ -0,0 +1,9 @@
+<view style="display:{{displayStyle}};" class="wx_loading_view {{extClass}}" animation="{{animationData}}" id="wx_loading_view">
+    <view wx:if="{{type==='dot-white'}}" class="loading wx_dot_loading wx_dot_loading_white">
+    </view>
+    <view wx:elif="{{type==='dot-gray'}}" class="loading wx_dot_loading"></view>
+    <view wx:elif="{{type==='circle'}}" class="weui-loadmore">
+        <view class="weui-loading"></view>
+        <view class="weui-loadmore__tips">{{tips}}</view>
+    </view>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/loading/loading.wxss

@@ -0,0 +1 @@
+.wx_loading_view{display:flex;justify-content:center;align-items:center;overflow:hidden}.loading{color:rgba(255,255,255,0.9);font-size:17px;text-align:center}.loading_view_translation{transition:height .2s .3s ease}

+ 137 - 0
node_modules/weui-miniprogram/miniprogram_dist/msg/msg.js

@@ -0,0 +1,137 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 19);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 19:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    title: {
+      // Msg 标题
+      type: String,
+      value: ''
+    },
+    type: {
+      // icon 的 type
+      type: String,
+      value: ''
+    },
+    icon: {
+      // 可以自行设置 icon, 设置icon 之后,type 失效
+      type: String,
+      value: ''
+    },
+    desc: {
+      // 描述
+      type: String,
+      value: ''
+    },
+    extClass: {
+      type: String,
+      value: ''
+    },
+    size: {
+      // 可以自行设置 icon, 设置icon 之后,type 失效
+      type: Number,
+      value: 64
+    }
+  },
+  data: {}
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/msg/msg.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 29 - 0
node_modules/weui-miniprogram/miniprogram_dist/msg/msg.wxml

@@ -0,0 +1,29 @@
+<view class="weui-msg {{extClass}}">
+  <view class="weui-msg__icon-area">
+    <icon type="{{type}}" size="{{size}}" wx:if="{{type}}"></icon>
+    <image class="weui-msg__icon-img" src="{{icon}}" mode="aspectFit" wx:elif="{{icon}}" />
+  </view>
+  <view class="weui-msg__text-area">
+    <view class="weui-msg__title">{{title}}</view>
+    <view class="weui-msg__desc">
+      {{desc}}
+      <slot name="desc" wx:if="{{!desc}}"></slot>
+    </view>
+    <slot name="extend"></slot>
+  </view>
+  <view class="weui-msg__opr-area">
+    <view class="weui-btn-area">
+      <slot name="handle"></slot>
+    </view>
+  </view>
+  <view class="weui-msg__tips-area">
+    <view class="weui-msg__tips">
+      <slot name="tips"></slot>
+    </view>
+  </view>
+  <view class="weui-msg__extra-area">
+    <view class="weui-footer">
+      <slot name="footer"></slot>
+    </view>
+  </view>
+</view>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/msg/msg.wxss

@@ -0,0 +1 @@
+.weui-msg__icon-img{width:190rpx;height:190rpx}

+ 211 - 0
node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.js

@@ -0,0 +1,211 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 3);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 3:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    multipleSlots: true,
+    // 在组件定义时的选项中启用多slot支持
+    addGlobalClass: true
+  },
+
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    title: {
+      type: String,
+      value: ''
+    },
+    background: {
+      type: String,
+      value: ''
+    },
+    color: {
+      type: String,
+      value: ''
+    },
+    back: {
+      type: Boolean,
+      value: true
+    },
+    loading: {
+      type: Boolean,
+      value: false
+    },
+    animated: {
+      // 显示隐藏的时候opacity动画效果
+      type: Boolean,
+      value: true
+    },
+    show: {
+      // 显示隐藏导航,隐藏的时候navigation-bar的高度占位还在
+      type: Boolean,
+      value: true,
+      observer: '_showChange'
+    },
+    // back为true的时候,返回的页面深度
+    delta: {
+      type: Number,
+      value: 1
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+    displayStyle: ''
+  },
+
+  attached() {
+    const isSupport = !!wx.getMenuButtonBoundingClientRect;
+    const rect = wx.getMenuButtonBoundingClientRect ? wx.getMenuButtonBoundingClientRect() : null;
+    wx.getSystemInfo({
+      success: res => {
+        const ios = !!(res.system.toLowerCase().search('ios') + 1);
+        this.setData({
+          ios,
+          statusBarHeight: res.statusBarHeight,
+          innerWidth: isSupport ? `width:${rect.left}px` : '',
+          innerPaddingRight: isSupport ? `padding-right:${res.windowWidth - rect.left}px` : '',
+          leftWidth: isSupport ? `width:${res.windowWidth - rect.left}px` : ''
+        });
+      }
+    });
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    _showChange(show) {
+      const animated = this.data.animated;
+      let displayStyle = '';
+
+      if (animated) {
+        displayStyle = `opacity: ${show ? '1' : '0'};-webkit-transition:opacity 0.5s;transition:opacity 0.5s;`;
+      } else {
+        displayStyle = `display: ${show ? '' : 'none'}`;
+      }
+
+      this.setData({
+        displayStyle
+      });
+    },
+
+    back() {
+      const data = this.data;
+
+      if (data.delta) {
+        wx.navigateBack({
+          delta: data.delta
+        });
+      }
+
+      this.triggerEvent('back', {
+        delta: data.delta
+      }, {});
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 32 - 0
node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.wxml

@@ -0,0 +1,32 @@
+<view class="weui-navigation-bar {{extClass}}">
+  <view class="weui-navigation-bar__placeholder {{ios ? 'ios' : 'android'}}" style="padding-top: {{statusBarHeight}}px;visibility: hidden;"></view>
+  <view class="weui-navigation-bar__inner {{ios ? 'ios' : 'android'}}" style="padding-top: {{statusBarHeight}}px; color: {{color}};background: {{background}};{{displayStyle}};{{innerPaddingRight}};{{innerWidth}};">
+
+    <view class='weui-navigation-bar__left' style="{{leftWidth}}">
+      <block wx:if="{{back}}">
+        <view class="weui-navigation-bar__buttons">
+          <view bindtap="back" class="weui-navigation-bar__button weui-navigation-bar__btn_goback" hover-class="weui-active"></view>
+        </view>
+      </block>
+      <block wx:else>
+        <slot name="left"></slot>
+      </block>
+    </view>
+
+    <view class='weui-navigation-bar__center'>
+      <view wx:if="{{loading}}" class="weui-navigation-bar__loading">
+        <view class="weui-loading" style="width:{{size.width}}rpx;height:{{size.height}}rpx;"></view>
+      </view>
+      <block wx:if="{{title}}">
+        <text>{{title}}</text>
+      </block>
+      <block wx:else>
+        <slot name="center"></slot>
+      </block>
+    </view>
+
+    <view class='weui-navigation-bar__right'>
+      <slot name="right"></slot>
+    </view>
+  </view>
+</view>

+ 0 - 0
node_modules/weui-miniprogram/miniprogram_dist/navigation-bar/navigation-bar.wxss


+ 7 - 0
node_modules/weui-miniprogram/miniprogram_dist/package.json

@@ -0,0 +1,7 @@
+{
+    "name": "weui-miniprogram",
+    "version": "1.0.6",
+    "description": "小程序 WeUI 组件库",
+    "author": "xushengni,tomylin,cunjinli,rockhou",
+    "license": "MIT"
+}

+ 243 - 0
node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.js

@@ -0,0 +1,243 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 26);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 26:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true
+  },
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    focus: {
+      type: Boolean,
+      value: false
+    },
+    placeholder: {
+      type: String,
+      value: '搜索'
+    },
+    value: {
+      type: String,
+      value: ''
+    },
+    search: {
+      // 返回Promise的函数
+      // @ts-ignore
+      type: Function,
+      value: null
+    },
+    throttle: {
+      // 500ms内只会调用一次search函数
+      type: Number,
+      value: 500
+    },
+    cancelText: {
+      type: String,
+      value: '取消'
+    },
+    cancel: {
+      type: Boolean,
+      value: true
+    }
+  },
+  data: {
+    result: [] // 搜索结果
+
+  },
+
+  /* @ts-ignore */
+  lastSearch: Date.now(),
+  lifetimes: {
+    // @ts-ignore
+    attached() {
+      // @ts-ignore
+      if (this.data.focus) {
+        this.setData({
+          searchState: true
+        });
+      }
+    }
+
+  },
+  methods: {
+    clearInput() {
+      // @ts-ignore
+      this.setData({
+        value: '',
+        focus: true,
+        result: []
+      }); // @ts-ignore
+
+      this.triggerEvent('clear');
+    },
+
+    // @ts-ignore
+    inputFocus(e) {
+      // this.setData({
+      //     searchState: true
+      // })
+      // @ts-ignore
+      this.triggerEvent('focus', e.detail);
+    },
+
+    // @ts-ignore
+    inputBlur(e) {
+      this.setData({
+        focus: false
+      });
+      this.triggerEvent('blur', e.detail);
+    },
+
+    showInput() {
+      this.setData({
+        focus: true,
+        searchState: true
+      });
+    },
+
+    hideInput() {
+      this.setData({
+        searchState: false
+      });
+      this.triggerEvent('cancel');
+    },
+
+    // @ts-ignore
+    inputChange(e) {
+      this.setData({
+        value: e.detail.value
+      });
+      this.triggerEvent('input', e.detail);
+
+      if (Date.now() - this.lastSearch < this.data.throttle) {
+        return;
+      }
+
+      if (typeof this.data.search !== 'function') {
+        return;
+      }
+
+      this.lastSearch = Date.now();
+      this.timerId = setTimeout(() => {
+        this.data.search(this.data.value).then(json => {
+          this.setData({
+            result: json
+          });
+        }).catch(err => {
+          console.error('search error', err);
+        });
+      }, this.data.throttle);
+    },
+
+    // @ts-ignore
+    selectResult(e) {
+      const {
+        index
+      } = e.currentTarget.dataset;
+      const item = this.data.result[index];
+      this.triggerEvent('selectresult', {
+        index,
+        item
+      });
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 7 - 0
node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.json

@@ -0,0 +1,7 @@
+{
+    "component": true,
+    "usingComponents": {
+        "mp-cells": "../cells/cells",
+        "mp-cell": "../cell/cell"
+    }
+}

+ 19 - 0
node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.wxml

@@ -0,0 +1,19 @@
+<view class="weui-search-bar {{searchState ? 'weui-search-bar_focusing' : ''}} {{extClass}}">
+    <view class="weui-search-bar__form">
+        <view class="weui-search-bar__box">
+            <icon class="weui-icon-search" type="search" size="12"></icon>
+            <input type="text" class="weui-search-bar__input" placeholder="{{placeholder}}" value="{{value}}" focus="{{focus}}" bindblur="inputBlur" bindfocus="inputFocus" bindinput="inputChange" />
+            <text class="weui-icon-clear" hover-class="weui-active" wx:if="{{value.length > 0}}" bindtap="clearInput"></text>
+        </view>
+        <label class="weui-search-bar__label" bindtap="showInput">
+            <icon class="weui-icon-search" type="search" size="12"></icon>
+            <text class="weui-search-bar__text">搜索</text>
+        </label>
+    </view>
+    <view wx:if="{{cancel && searchState}}" class="weui-search-bar__cancel-btn" bindtap="hideInput">{{cancelText}}</view>
+</view>
+<mp-cells ext-class=" {{'searchbar-result ' + extClass}}" wx:if="{{searchState && result.length > 0}}">
+    <mp-cell class="result" bindtap="selectResult" body-class="weui-cell_primary" data-index="{{index}}" wx:for="{{result}}" wx:key="index" hover>
+        <view>{{item.text}}</view>
+    </mp-cell>
+</mp-cells>

+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/searchbar/searchbar.wxss

@@ -0,0 +1 @@
+.weui-search-bar__label text{display:inline-block;font-size:14px;vertical-align:middle}

+ 225 - 0
node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.js

@@ -0,0 +1,225 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 18);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 18:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  /**
+   * 组件的属性列表
+   */
+  options: {
+    addGlobalClass: true,
+    multipleSlots: true
+  },
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    buttons: {
+      type: Array,
+      value: [],
+
+      // type, data, text, src, extClass
+      observer() {
+        this.addClassNameForButton();
+      }
+
+    },
+    disable: {
+      type: Boolean,
+      value: false
+    },
+    icon: {
+      // 是否是icon
+      type: Boolean,
+      value: false
+    },
+    show: {
+      type: Boolean,
+      value: false
+    },
+    duration: {
+      type: Number,
+      value: 350 // 动画市场,单位ms
+
+    },
+    throttle: {
+      type: Number,
+      value: 40
+    },
+    rebounce: {
+      type: Number,
+      value: 0 // 回弹距离
+
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+    size: null
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  ready() {
+    // @ts-ignore
+    this.updateRight();
+    this.addClassNameForButton();
+  },
+
+  methods: {
+    updateRight() {
+      // 获取右侧滑动显示区域的宽度
+      const data = this.data;
+      const query = wx.createSelectorQuery().in(this);
+      query.select('.left').boundingClientRect(res => {
+        const btnQuery = wx.createSelectorQuery().in(this);
+        btnQuery.selectAll('.btn').boundingClientRect(rects => {
+          this.setData({
+            size: {
+              buttons: rects,
+              button: res,
+              show: data.show,
+              disable: data.disable,
+              throttle: data.throttle,
+              rebounce: data.rebounce
+            }
+          });
+        }).exec();
+      }).exec();
+    },
+
+    addClassNameForButton() {
+      // @ts-ignore
+      const {
+        buttons,
+        icon
+      } = this.data;
+      buttons.forEach(btn => {
+        if (icon) {
+          btn.className = '';
+        } else if (btn.type === 'warn') {
+          btn.className = 'weui-slideview__btn-group_warn';
+        } else {
+          btn.className = 'weui-slideview__btn-group_default';
+        }
+      });
+      this.setData({
+        buttons
+      });
+    },
+
+    buttonTapByWxs(data) {
+      this.triggerEvent('buttontap', data, {});
+    },
+
+    hide() {
+      this.triggerEvent('hide', {}, {});
+    },
+
+    show() {
+      this.triggerEvent('show', {}, {});
+    },
+
+    transitionEnd() {}
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 23 - 0
node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.wxml

@@ -0,0 +1,23 @@
+<!-- slide-view/slide-view.wxml -->
+<wxs module="handler" src="./slideview.wxs"></wxs>
+<view class="weui-slideview weui-movable-view {{icon ? 'weui-slideview_icon' : ''}} {{extClass}}" style="width: 100%;height: 100%;">
+    <view bindtransitionend="{{handler.transitionEnd}}"
+      show="{{show}}" change:show="{{handler.showChange}}" 
+      rebounce="{{rebounce}}" change:rebounce="{{handler.rebounceChange}}" 
+      duration="{{duration}}" change:duration="{{handler.durationChange}}" 
+      change:disable="{{handler.disableChange}}" disable="{{disable}}" 
+      change:prop="{{handler.sizeReady}}" prop="{{size}}" 
+      bindtouchstart="{{handler.touchstart}}" bindtouchmove="{{handler.touchmove}}" bindtouchend="{{handler.touchend}}" class="weui-slideview__left left" style="width:100%;">
+      <slot></slot>
+    </view>
+    <view class="weui-slideview__right right">
+      <view class="weui-slideview__buttons" style="height:100%;width:100%;" wx:if="{{buttons && buttons.length}}">
+        <view wx:for="{{buttons}}" wx:key="index" class='btn weui-slideview__btn__wrp {{item.className}} {{item.extClass}}'>
+          <view bindtap="{{handler.hideButton}}" data-data="{{item.data}}" data-index="{{index}}" class='weui-slideview__btn'>
+            <text wx:if="{{!icon}}">{{item.text}}</text>
+            <image class="weui-slideview__btn__icon" wx:else src="{{item.src}}"/>
+          </view>
+        </view>
+      </view>
+    </view>
+</view>

+ 243 - 0
node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.wxs

@@ -0,0 +1,243 @@
+/* eslint-disable */
+var touchstart = function(event, ownerInstance) {
+    var ins = event.instance
+    var st = ins.getState()
+    if (st.disable) return // disable的逻辑
+    // console.log('touchstart st', JSON.stringify(st))
+    if (!st.size) return
+    // console.log('touchstart', JSON.stringify(event))
+    st.isMoving = true
+    st.startX = event.touches[0].pageX
+    st.startY = event.touches[0].pageY
+    st.firstAngle = 0
+}
+var touchmove = function(event, ownerInstance) {
+    var ins = event.instance
+    var st = ins.getState()
+    if (!st.size || !st.isMoving) return
+    // console.log('touchmove', JSON.stringify(event))
+    var pagex = event.touches[0].pageX - st.startX
+    var pagey = event.touches[0].pageY - st.startY
+    // 左侧45度角为界限,大于45度则允许水平滑动
+    if (st.firstAngle === 0) {
+        st.firstAngle = Math.abs(pagex) - Math.abs(pagey)
+    }
+    if (st.firstAngle < 0) {
+        return
+    }
+    var movex = pagex > 0 ? Math.min(st.max, pagex) : Math.max(-st.max, pagex)
+    // 往回滑动的情况
+    if (st.out) {
+        // 已经是划出来了,还要往左滑动,忽略
+        if (movex < 0) return
+        ins.setStyle({
+            'transform': 'translateX(' + (st.transformx + movex) + 'px)',
+            'transition': ''
+        })
+        var btns = ownerInstance.selectAllComponents('.btn')
+        var transformTotal = 0
+        var len = btns.length
+        var i = len - 1;
+        for (;i >= 0; i--) {
+            var transform = st.size.buttons[i].width / st.max * movex
+            var transformx = st.size.buttons[i].max - Math.min(st.size.buttons[i].max, transform + transformTotal)
+            btns[i].setStyle({
+                'transform': 'translateX(' + (-transformx) + 'px)',
+                'transition': ''
+            })
+            transformTotal += transform
+        }
+        return false
+    }
+    if (movex > 0) movex = 0
+    ins.setStyle({
+        'transform': 'translateX(' + movex + 'px)',
+        'transition': ''
+    })
+    st.transformx = movex
+    var btns = ownerInstance.selectAllComponents('.btn')
+    var transformTotal = 0
+    var len = btns.length
+    var i = len - 1;
+    for (;i >= 0; i--) {
+        var transform = st.size.buttons[i].width / st.max * movex
+        var transformx = Math.max(-st.size.buttons[i].max, transform + transformTotal)
+        btns[i].setStyle({
+            'transform': 'translateX(' + transformx + 'px)',
+            'transition': ''
+        })
+        st.size.buttons[i].transformx = transformx
+        transformTotal += transform
+    }
+    return false // 禁止垂直方向的滑动
+}
+var touchend = function(event, ownerInstance) {
+    var ins = event.instance
+    var st = ins.getState()
+    if (!st.size || !st.isMoving) return
+    // 左侧45度角为界限,大于45度则允许水平滑动
+    if (st.firstAngle < 0) {
+        return
+    }
+    var duration = st.duration / 1000
+    st.isMoving = false
+    // console.log('touchend', JSON.stringify(event))
+    var btns = ownerInstance.selectAllComponents('.btn')
+    var len = btns.length
+    var i = len - 1
+    // console.log('len size', len)
+    if (Math.abs(event.changedTouches[0].pageX - st.startX) < st.throttle || event.changedTouches[0].pageX - st.startX > 0) { // 方向也要控制
+        st.out = false
+        ins.setStyle({
+            'transform': 'translate3d(0px, 0, 0)',
+            'transition': 'transform ' + (duration) + 's'
+        })
+        for (;i >= 0; i--) {
+            btns[i].setStyle({
+                'transform': 'translate3d(0px, 0, 0)',
+                'transition': 'transform ' + (duration) + 's'
+            })
+        }
+        ownerInstance.callMethod('hide')
+        return
+    }
+    showButtons(ins, ownerInstance, duration)
+    ownerInstance.callMethod('show')
+}
+var REBOUNCE_TIME = 0.2
+var showButtons = function(ins, ownerInstance, withDuration) {
+    var st = ins.getState()
+    if (!st.size) return
+    var rebounceTime = st.rebounce ? REBOUNCE_TIME : 0
+    var movex = st.max
+    st.out = true
+    var btns = ownerInstance.selectAllComponents('.btn')
+    var rebounce = st.rebounce || 0
+    var len = btns.length
+    var i = len - 1
+    ins.setStyle({
+        'transform': 'translate3d(' + (-movex - rebounce) + 'px, 0, 0)',
+        'transition': 'transform ' + (withDuration) + 's'
+    })
+    st.transformx = -movex
+    var transformTotal = 0
+    for (;i >= 0; i--) {
+        var transform = st.size.buttons[i].width / st.max * movex
+        var transformx = (-(transform + transformTotal))
+        btns[i].setStyle({
+            'transform': 'translate3d(' + transformx + 'px, 0, 0)',
+            'transition': 'transform ' + (withDuration ? withDuration + rebounceTime : withDuration) + 's'
+        })
+        st.size.buttons[i].transformx = transformx
+        transformTotal += transform
+    }
+}
+var innerHideButton = function(ownerInstance) {
+    var ins = ownerInstance.selectComponent('.left')
+    var st = ins.getState()
+    if (!st.size) return
+    var duration = st.duration ? st.duration / 1000 : 0
+    var btns = ownerInstance.selectAllComponents('.btn')
+    var len = btns.length
+    var i = len - 1
+    ins.setStyle({
+        'transform': 'translate3d(0px, 0, 0)',
+        'transition': 'transform ' + (duration) + 's'
+    })
+    st.transformx = 0
+    for (;i >= 0; i--) {
+        btns[i].setStyle({
+            'transform': 'translate3d(0px, 0, 0)',
+            'transition': 'transform ' + (duration) + 's'
+        })
+        st.size.buttons[i].transformx = 0
+    }
+}
+var hideButton = function(event, ownerInstance) {
+    innerHideButton(ownerInstance)
+    ownerInstance.callMethod('buttonTapByWxs', {index: event.currentTarget.dataset.index, data: event.currentTarget.dataset.data})
+    return false
+}
+var sizeReady = function(newVal, oldVal, ownerInstance, ins) {
+    var st = ins.getState()
+    // st.disable = newVal && newVal.disable
+    if (newVal && newVal.button && newVal.buttons) {
+        st.size = newVal
+        st.transformx = 0
+        // var min = newVal.button.width
+        var max = 0
+        var len = newVal.buttons.length
+        var i = newVal.buttons.length - 1;
+        var total = 0
+        for (; i >= 0; i--) {
+            max += newVal.buttons[i].width
+            // if (min > newVal.buttons[i]) {
+            //     min = newVal.buttons[i].width
+            // }
+            total += newVal.buttons[i].width
+            newVal.buttons[i].max = total
+            newVal.buttons[i].transformx = 0
+        }
+        st.throttle = st.size.throttle || 40 // 固定值
+        st.rebounce = st.size.rebounce
+        st.max = max
+        ownerInstance.selectComponent('.right').setStyle({
+            'line-height': newVal.button.height + 'px',
+            left: (newVal.button.width) + 'px',
+            width: max + 'px'
+        })
+        // console.log('st size', JSON.stringify(newVal))
+        if (!st.size.disable && st.size.show) {
+            showButtons(ins, ownerInstance)
+        }
+    }
+}
+var disableChange = function(newVal, oldVal, ownerInstance, ins) {
+    var st = ins.getState()
+    st.disable = newVal
+}
+var durationChange = function(newVal, oldVal, ownerInstance, ins) {
+    var st = ins.getState()
+    st.duration = newVal || 400
+}
+var showChange = function(newVal, oldVal, ownerInstance, ins) {
+    var st = ins.getState()
+    st.show = newVal
+    if (st.disable) return
+    // console.log('show change')
+    if (st.show) {
+        showButtons(ins, ownerInstance, st.duration)
+    } else {
+        innerHideButton(ownerInstance)
+    }
+}
+var rebounceChange = function(newVal, oldVal, ownerInstance, ins) {
+    var st = ins.getState()
+    // console.log('rebounce', st.rebounce)
+    st.rebounce = newVal
+}
+var transitionEnd = function(event, ownerInstance) {
+    // console.log('transition')
+    var ins = event.instance
+    var st = ins.getState()
+    // 回弹效果
+    if (st.out && st.rebounce) {
+        // console.log('transition rebounce', st.rebounce)
+        ins.setStyle({
+            'transform': 'translate3d(' + (-st.max) + 'px, 0, 0)',
+            'transition': 'transform ' + REBOUNCE_TIME +'s'
+        })
+    }
+}
+module.exports = {
+    touchstart: touchstart,
+    touchmove: touchmove,
+    touchend: touchend,
+    hideButton: hideButton,
+    sizeReady: sizeReady,
+    disableChange: disableChange,
+    durationChange: durationChange,
+    showChange: showChange,
+    rebounceChange: rebounceChange,
+    transitionEnd: transitionEnd
+}

+ 0 - 0
node_modules/weui-miniprogram/miniprogram_dist/slideview/slideview.wxss


BIN
node_modules/weui-miniprogram/miniprogram_dist/static/icon/s-arrow-back.png


+ 20 - 0
node_modules/weui-miniprogram/miniprogram_dist/static/icon/s-arrow-back.svg

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="12px" height="24px" viewBox="0 0 12 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <!-- Generator: Sketch 52.2 (67145) - http://www.bohemiancoding.com/sketch -->
+    <title>Icons/Filled/arrow Copy 2</title>
+    <desc>Created with Sketch.</desc>
+    <g id="05成员管理" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="单个成员编辑" transform="translate(-25.000000, -54.000000)">
+            <rect id="bg" x="0" y="0" width="375" height="236"></rect>
+            <g id="Navbar">
+                <g id="Group-4" transform="translate(8.000000, 50.000000)">
+                    <g id="Icons/Filled/arrow" transform="translate(23.000000, 16.000000) rotate(-180.000000) translate(-23.000000, -16.000000) translate(17.000000, 4.000000)" fill="#000000" fill-opacity="0.9">
+                        <g id="Group" transform="translate(-2.000000, 5.000000)">
+                            <path d="M3,2.5039609 L11,2.5039609 L11,4.5039609 L4,4.5039609 L4,11.5039609 L2,11.5039609 L2,3.5039609 C2,2.95167615 2.44771525,2.5039609 3,2.5039609 Z" id="图标颜色" transform="translate(6.500000, 7.003961) rotate(135.000000) translate(-6.500000, -7.003961) "></path>
+                        </g>
+                    </g>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 138 - 0
node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.js

@@ -0,0 +1,138 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 16);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 16:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true
+  },
+  properties: {
+    extClass: {
+      type: String,
+      value: ''
+    },
+    list: {
+      type: Array,
+      value: []
+    },
+    current: {
+      type: Number,
+      value: 0
+    }
+  },
+  methods: {
+    tabChange(e) {
+      const {
+        index
+      } = e.currentTarget.dataset;
+
+      if (index === this.data.current) {
+        return;
+      }
+
+      this.setData({
+        current: index
+      });
+      this.triggerEvent('change', {
+        index,
+        item: this.data.list[index]
+      });
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 6 - 0
node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.json

@@ -0,0 +1,6 @@
+{
+    "component": true,
+    "usingComponents": {
+        "mp-badge": "../badge/badge"
+    }
+}

+ 10 - 0
node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.wxml

@@ -0,0 +1,10 @@
+<view class="weui-tabbar {{extClass}}">
+  <!-- 选中的时候往 weui-tabbar__item 加 class:weui-bar__item_on -->
+  <view data-index='{{index}}' bindtap="tabChange" wx:for="{{list}}" wx:key="index" class="weui-tabbar__item {{index === current ? 'weui-bar__item_on' : ''}}">
+    <view style="position: relative;display:inline-block;">
+      <image src="{{current === index ? item.selectedIconPath : item.iconPath}}" class="weui-tabbar__icon"></image>
+      <mp-badge wx:if="{{item.badge || item.dot}}" content="{{item.badge}}" style="position: absolute;top:-2px;left:calc(100% - 3px)"></mp-badge>
+    </view>
+    <view class="weui-tabbar__label">{{item.text}}</view>
+  </view>
+</view>

Файловите разлики са ограничени, защото са твърде много
+ 1 - 0
node_modules/weui-miniprogram/miniprogram_dist/tabbar/tabbar.wxss


+ 174 - 0
node_modules/weui-miniprogram/miniprogram_dist/toptips/toptips.js

@@ -0,0 +1,174 @@
+module.exports =
+/******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+/******/
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+/******/
+/******/ 		// Check if module is in cache
+/******/ 		if(installedModules[moduleId]) {
+/******/ 			return installedModules[moduleId].exports;
+/******/ 		}
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			i: moduleId,
+/******/ 			l: false,
+/******/ 			exports: {}
+/******/ 		};
+/******/
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ 		// Flag the module as loaded
+/******/ 		module.l = true;
+/******/
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+/******/
+/******/
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+/******/
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+/******/
+/******/ 	// define getter function for harmony exports
+/******/ 	__webpack_require__.d = function(exports, name, getter) {
+/******/ 		if(!__webpack_require__.o(exports, name)) {
+/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ 		}
+/******/ 	};
+/******/
+/******/ 	// define __esModule on exports
+/******/ 	__webpack_require__.r = function(exports) {
+/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ 		}
+/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
+/******/ 	};
+/******/
+/******/ 	// create a fake namespace object
+/******/ 	// mode & 1: value is a module id, require it
+/******/ 	// mode & 2: merge all properties of value into the ns
+/******/ 	// mode & 4: return value when already ns object
+/******/ 	// mode & 8|1: behave like require
+/******/ 	__webpack_require__.t = function(value, mode) {
+/******/ 		if(mode & 1) value = __webpack_require__(value);
+/******/ 		if(mode & 8) return value;
+/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ 		var ns = Object.create(null);
+/******/ 		__webpack_require__.r(ns);
+/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ 		return ns;
+/******/ 	};
+/******/
+/******/ 	// getDefaultExport function for compatibility with non-harmony modules
+/******/ 	__webpack_require__.n = function(module) {
+/******/ 		var getter = module && module.__esModule ?
+/******/ 			function getDefault() { return module['default']; } :
+/******/ 			function getModuleExports() { return module; };
+/******/ 		__webpack_require__.d(getter, 'a', getter);
+/******/ 		return getter;
+/******/ 	};
+/******/
+/******/ 	// Object.prototype.hasOwnProperty.call
+/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+/******/
+/******/
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(__webpack_require__.s = 13);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ 13:
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Component({
+  options: {
+    addGlobalClass: true
+  },
+  properties: {
+    type: {
+      type: String,
+      value: 'error',
+      observer: '_typeChange'
+    },
+    show: {
+      type: Boolean,
+      value: false,
+      observer: '_showChange'
+    },
+    msg: {
+      type: String,
+      value: ''
+    },
+    delay: {
+      type: Number,
+      value: 2000
+    },
+    extClass: {
+      type: String,
+      value: ''
+    }
+  },
+  data: {
+    typeClassMap: {
+      warn: 'weui-toptips_warn',
+      info: 'weui-toptips_info',
+      success: 'weui-toptips_success',
+      error: 'weui-toptips_error'
+    }
+  },
+
+  attached() {
+    const data = this.data;
+    this.setData({
+      className: data.typeClassMap[data.type] || ''
+    });
+  },
+
+  methods: {
+    _typeChange(newVal) {
+      this.setData({
+        className: this.data.typeClassMap[newVal] || ''
+      });
+      return newVal;
+    },
+
+    _showChange(newVal) {
+      this._showToptips(newVal);
+    },
+
+    _showToptips(newVal) {
+      if (newVal && this.data.delay) {
+        setTimeout(() => {
+          this.setData({
+            show: false
+          }, () => {
+            // tooltips 隐藏了,触发 hide 事件
+            this.triggerEvent('hide', {}, {});
+          });
+        }, this.data.delay);
+      }
+
+      this.setData({
+        show: newVal
+      });
+    }
+
+  }
+});
+
+/***/ })
+
+/******/ });

+ 4 - 0
node_modules/weui-miniprogram/miniprogram_dist/toptips/toptips.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 0 - 0
node_modules/weui-miniprogram/miniprogram_dist/toptips/toptips.wxml


Някои файлове не бяха показани, защото твърде много файлове са промени