浏览代码

business2

liuxinyang 2 年之前
父节点
当前提交
cfd0deb4c4
共有 100 个文件被更改,包括 2046 次插入13 次删除
  1. 6 3
      app.json
  2. 1 9
      app.wxss
  3. 1 1
      images/jine.svg
  4. 二进制
      images/外卖小程序/麻辣烫-微辣.png
  5. 5 0
      node_modules/.package-lock.json
  6. 7 0
      node_modules/vant-weapp/LICENSE
  7. 128 0
      node_modules/vant-weapp/README.md
  8. 1 0
      node_modules/vant-weapp/dist/action-sheet/index.d.ts
  9. 43 0
      node_modules/vant-weapp/dist/action-sheet/index.js
  10. 8 0
      node_modules/vant-weapp/dist/action-sheet/index.json
  11. 51 0
      node_modules/vant-weapp/dist/action-sheet/index.wxml
  12. 1 0
      node_modules/vant-weapp/dist/action-sheet/index.wxss
  13. 1 0
      node_modules/vant-weapp/dist/area/index.d.ts
  14. 212 0
      node_modules/vant-weapp/dist/area/index.js
  15. 6 0
      node_modules/vant-weapp/dist/area/index.json
  16. 18 0
      node_modules/vant-weapp/dist/area/index.wxml
  17. 1 0
      node_modules/vant-weapp/dist/area/index.wxss
  18. 1 0
      node_modules/vant-weapp/dist/badge-group/index.d.ts
  19. 43 0
      node_modules/vant-weapp/dist/badge-group/index.js
  20. 3 0
      node_modules/vant-weapp/dist/badge-group/index.json
  21. 3 0
      node_modules/vant-weapp/dist/badge-group/index.wxml
  22. 1 0
      node_modules/vant-weapp/dist/badge-group/index.wxss
  23. 1 0
      node_modules/vant-weapp/dist/badge/index.d.ts
  24. 30 0
      node_modules/vant-weapp/dist/badge/index.js
  25. 6 0
      node_modules/vant-weapp/dist/badge/index.json
  26. 17 0
      node_modules/vant-weapp/dist/badge/index.wxml
  27. 1 0
      node_modules/vant-weapp/dist/badge/index.wxss
  28. 1 0
      node_modules/vant-weapp/dist/button/index.d.ts
  29. 38 0
      node_modules/vant-weapp/dist/button/index.js
  30. 7 0
      node_modules/vant-weapp/dist/button/index.json
  31. 51 0
      node_modules/vant-weapp/dist/button/index.wxml
  32. 0 0
      node_modules/vant-weapp/dist/button/index.wxss
  33. 1 0
      node_modules/vant-weapp/dist/card/index.d.ts
  34. 38 0
      node_modules/vant-weapp/dist/card/index.js
  35. 6 0
      node_modules/vant-weapp/dist/card/index.json
  36. 45 0
      node_modules/vant-weapp/dist/card/index.wxml
  37. 1 0
      node_modules/vant-weapp/dist/card/index.wxss
  38. 1 0
      node_modules/vant-weapp/dist/cell-group/index.d.ts
  39. 10 0
      node_modules/vant-weapp/dist/cell-group/index.js
  40. 3 0
      node_modules/vant-weapp/dist/cell-group/index.json
  41. 9 0
      node_modules/vant-weapp/dist/cell-group/index.wxml
  42. 1 0
      node_modules/vant-weapp/dist/cell-group/index.wxss
  43. 1 0
      node_modules/vant-weapp/dist/cell/index.d.ts
  44. 37 0
      node_modules/vant-weapp/dist/cell/index.js
  45. 6 0
      node_modules/vant-weapp/dist/cell/index.json
  46. 45 0
      node_modules/vant-weapp/dist/cell/index.wxml
  47. 1 0
      node_modules/vant-weapp/dist/cell/index.wxss
  48. 1 0
      node_modules/vant-weapp/dist/checkbox-group/index.d.ts
  49. 39 0
      node_modules/vant-weapp/dist/checkbox-group/index.js
  50. 3 0
      node_modules/vant-weapp/dist/checkbox-group/index.json
  51. 1 0
      node_modules/vant-weapp/dist/checkbox-group/index.wxml
  52. 1 0
      node_modules/vant-weapp/dist/checkbox-group/index.wxss
  53. 1 0
      node_modules/vant-weapp/dist/checkbox/index.d.ts
  54. 74 0
      node_modules/vant-weapp/dist/checkbox/index.js
  55. 6 0
      node_modules/vant-weapp/dist/checkbox/index.json
  56. 18 0
      node_modules/vant-weapp/dist/checkbox/index.wxml
  57. 1 0
      node_modules/vant-weapp/dist/checkbox/index.wxss
  58. 1 0
      node_modules/vant-weapp/dist/col/index.d.ts
  59. 23 0
      node_modules/vant-weapp/dist/col/index.js
  60. 3 0
      node_modules/vant-weapp/dist/col/index.json
  61. 8 0
      node_modules/vant-weapp/dist/col/index.wxml
  62. 1 0
      node_modules/vant-weapp/dist/col/index.wxss
  63. 1 0
      node_modules/vant-weapp/dist/collapse-item/index.d.ts
  64. 96 0
      node_modules/vant-weapp/dist/collapse-item/index.js
  65. 6 0
      node_modules/vant-weapp/dist/collapse-item/index.json
  66. 44 0
      node_modules/vant-weapp/dist/collapse-item/index.wxml
  67. 1 0
      node_modules/vant-weapp/dist/collapse-item/index.wxss
  68. 1 0
      node_modules/vant-weapp/dist/collapse/index.d.ts
  69. 50 0
      node_modules/vant-weapp/dist/collapse/index.js
  70. 3 0
      node_modules/vant-weapp/dist/collapse/index.json
  71. 3 0
      node_modules/vant-weapp/dist/collapse/index.wxml
  72. 1 0
      node_modules/vant-weapp/dist/collapse/index.wxss
  73. 4 0
      node_modules/vant-weapp/dist/common/color.d.ts
  74. 4 0
      node_modules/vant-weapp/dist/common/color.js
  75. 3 0
      node_modules/vant-weapp/dist/common/component.d.ts
  76. 48 0
      node_modules/vant-weapp/dist/common/component.js
  77. 1 0
      node_modules/vant-weapp/dist/common/index.wxss
  78. 1 0
      node_modules/vant-weapp/dist/common/style/clearfix.wxss
  79. 1 0
      node_modules/vant-weapp/dist/common/style/ellipsis.wxss
  80. 1 0
      node_modules/vant-weapp/dist/common/style/hairline.wxss
  81. 0 0
      node_modules/vant-weapp/dist/common/style/mixins/clearfix.wxss
  82. 0 0
      node_modules/vant-weapp/dist/common/style/mixins/ellipsis.wxss
  83. 0 0
      node_modules/vant-weapp/dist/common/style/mixins/hairline.wxss
  84. 0 0
      node_modules/vant-weapp/dist/common/style/var.wxss
  85. 7 0
      node_modules/vant-weapp/dist/common/utils.d.ts
  86. 25 0
      node_modules/vant-weapp/dist/common/utils.js
  87. 1 0
      node_modules/vant-weapp/dist/datetime-picker/index.d.ts
  88. 287 0
      node_modules/vant-weapp/dist/datetime-picker/index.js
  89. 6 0
      node_modules/vant-weapp/dist/datetime-picker/index.json
  90. 16 0
      node_modules/vant-weapp/dist/datetime-picker/index.wxml
  91. 1 0
      node_modules/vant-weapp/dist/datetime-picker/index.wxss
  92. 32 0
      node_modules/vant-weapp/dist/definitions/index.d.ts
  93. 0 0
      node_modules/vant-weapp/dist/definitions/index.js
  94. 111 0
      node_modules/vant-weapp/dist/definitions/weapp.d.ts
  95. 0 0
      node_modules/vant-weapp/dist/definitions/weapp.js
  96. 45 0
      node_modules/vant-weapp/dist/dialog/dialog.d.ts
  97. 61 0
      node_modules/vant-weapp/dist/dialog/dialog.js
  98. 1 0
      node_modules/vant-weapp/dist/dialog/index.d.ts
  99. 98 0
      node_modules/vant-weapp/dist/dialog/index.js
  100. 7 0
      node_modules/vant-weapp/dist/dialog/index.json

+ 6 - 3
app.json

@@ -6,7 +6,9 @@
     "pages/home/home",
     "pages/message/message",
     "pages/merManagement/merManagement",
-    "pages/bill/bill"
+    "pages/bill/bill",
+    "pages/order_details/order_details",
+    "pages/order_search/order_search"
   ],
   "window": {
     "backgroundTextStyle": "light",
@@ -51,6 +53,7 @@
     "van-icon": "@vant/weapp/icon/index",
     "van-calendar": "@vant/weapp/calendar/index"
   },
-  "sitemapLocation": "sitemap.json",
-  "lazyCodeLoading": "requiredComponents"
+ 
+  "sitemapLocation": "sitemap.json"
+
 }

+ 1 - 9
app.wxss

@@ -1,10 +1,2 @@
 /**app.wxss**/
-.container {
-  height: 100%;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: space-between;
-  padding: 200rpx 0;
-  box-sizing: border-box;
-} 
+/* @import '@vant/weapp/common/index.wxss'; */

+ 1 - 1
images/jine.svg

@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="14px" height="14.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#ea986c" d="M512 64c249.6 0 448 198.4 448 448s-198.4 448-448 448-448-198.4-448-448 198.4-448 448-448z m0 64C300.8 128 128 300.8 128 512s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384zM377.6 256L512 390.4 646.4 256l44.8 44.8L544 448h128v64h-128v64h128v64h-128v128h-64v-128h-128V576h128V512h-128V448h128L332.8 300.8l44.8-44.8z" /></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="25px" height="25.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#ea986c" d="M512 64c249.6 0 448 198.4 448 448s-198.4 448-448 448-448-198.4-448-448 198.4-448 448-448z m0 64C300.8 128 128 300.8 128 512s172.8 384 384 384 384-172.8 384-384-172.8-384-384-384zM377.6 256L512 390.4 646.4 256l44.8 44.8L544 448h128v64h-128v64h128v64h-128v128h-64v-128h-128V576h128V512h-128V448h128L332.8 300.8l44.8-44.8z" /></svg>

二进制
images/外卖小程序/麻辣烫-微辣.png


+ 5 - 0
node_modules/.package-lock.json

@@ -8,6 +8,11 @@
       "version": "1.10.16",
       "resolved": "https://registry.npmjs.org/@vant/weapp/-/weapp-1.10.16.tgz",
       "integrity": "sha512-6ewSFv0w4ckKyuimn/tSdSVdDg5IgontD6/g19w+kshm2x39aajWqxSs3HjW2+Cde+NG2ri949R+00+NFcVHPw=="
+    },
+    "node_modules/vant-weapp": {
+      "version": "0.5.29",
+      "resolved": "https://registry.npmjs.org/vant-weapp/-/vant-weapp-0.5.29.tgz",
+      "integrity": "sha512-RMc0Ga914XFwspw2WuOMU8bOHlIkua8X1DoQ/KPnGQzjwT1uEL4S7W186EmaHF1wN2krB9BVd0LdRRt39dGh6Q=="
     }
   }
 }

+ 7 - 0
node_modules/vant-weapp/LICENSE

@@ -0,0 +1,7 @@
+Copyright 2016-present Youzan
+
+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.

+ 128 - 0
node_modules/vant-weapp/README.md

@@ -0,0 +1,128 @@
+<p align="center">
+  <img alt="logo" src="https://img.yzcdn.cn/vant/logo.png" width="120" style="margin-bottom: 10px;">
+</p>
+<h3 align="center">轻量、可靠的小程序 UI 组件库</h3>
+
+<p align="center">
+  <img src="https://img.shields.io/npm/v/vant-weapp.svg?style=flat-square" alt="npm version" />
+  <img src="https://img.shields.io/npm/dt/vant-weapp.svg?style=flat-square" alt="downloads" />
+  <img src="https://img.shields.io/npm/dm/vant-weapp.svg?style=flat-square" alt="downloads" />
+  <img src="https://img.shields.io/badge/License-MIT-blue.svg">
+</p>
+
+<p align="center">
+  🔥 <a href="https://youzan.github.io/vant-weapp">文档网站</a>
+  &nbsp;
+  🚀 <a href="https://github.com/youzan/vant" target="_blank">Vue 版</a>
+</p>
+
+---
+
+## 介绍
+
+Vant Weapp 是移动端 Vue 组件库 [Vant](https://github.com/youzan/vant) 的小程序版本,两者基于相同的视觉规范,提供一致的 API 接口,助力开发者快速搭建小程序应用。
+
+## 预览
+
+扫描下方小程序二维码,体验组件库示例:
+
+<img src="https://img.yzcdn.cn/vant-weapp/qrcode-201808101114.jpg" width="200" height="200" style="margin-top: 10px;" >
+
+## 使用之前
+
+使用 Vant Weapp 前,请确保你已经学习过微信官方的 [小程序简易教程](https://mp.weixin.qq.com/debug/wxadoc/dev/) 和 [自定义组件介绍](https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/)。
+
+## 安装
+
+### 方式一. 通过 npm 安装 (推荐)
+
+小程序已经支持使用 npm 安装第三方包,详见 [npm 支持](https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html?search-key=npm)
+
+```bash
+# npm
+npm i vant-weapp -S --production
+
+# yarn
+yarn add vant-weapp --production
+```
+
+### 方式二. 下载代码
+
+直接通过 git 下载 Vant Weapp 源代码,并将`dist`目录拷贝到自己的项目中
+```bash
+git clone https://github.com/youzan/vant-weapp.git
+```
+
+## 使用组件
+
+以按钮组件为例,只需要在 json 文件中引入按钮对应的自定义组件即可
+
+```json
+{
+  "usingComponents": {
+    "van-button": "/path/to/vant-weapp/dist/button/index"
+  }
+}
+```
+
+接着就可以在 wxml 中直接使用组件
+
+```html
+<van-button type="primary">按钮</van-button>
+```
+
+## 在开发者工具中预览
+
+```bash
+# 安装项目依赖
+npm install
+
+# 执行组件编译
+npm run dev
+```
+
+打开[微信开发者工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html),把`vant-weapp/example`目录添加进去就可以预览示例了。
+
+## 基础库版本
+
+Vant Weapp 最低支持到小程序基础库 1.9.9 版本
+
+## 微信讨论群
+
+欢迎大家在微信上联系我们,添加下方微信并注明『交流 vant-weapp』即可
+
+<img src="https://img.yzcdn.cn/vant/wechat_20180606.png" width="220" height="292" >
+
+## 加入我们
+
+**有赞前端团队**是由一群年轻、皮实、对技术饱含热情的小伙伴组成的,目前共有 100 多名前端工程师,分布在业务中台、电商、零售、美业、资产、赋能等业务线。
+
+我们热爱分享和开源,崇尚用工程师的方式解决问题,因此造了很多工具来解决我们遇到的问题,目前我们维护的开源产品有:
+
+<img src="https://img.yzcdn.cn/public_files/2019/07/22/f4b70763c55c8710c52c667ecf192c05.jpeg" width="320" height="303">
+
+我们正在寻找更多优秀的小伙伴,一起拓展前端技术的边界,期待你的加入!
+
+- <a target="_blank" href="https://app.mokahr.com/apply/youzan/6252#/job/96f5d2c7-e657-4d31-9244-195edc443a7f?_k=jf2141">职位详情</a>(Base: 杭州/深圳)
+- <a target="_blank" href="https://tech.youzan.com/tag/front-end/">团队博客</a>
+- <a target="_blank" href="https://github.com/youzan">开源项目</a>
+
+## 链接
+
+* [更新日志](https://github.com/youzan/vant-weapp/blob/dev/docs/markdown/changelog.md)
+* [意见反馈](https://github.com/youzan/vant-weapp/issues)
+* [加入我们](https://job.youzan.com)
+* [Vant: 移动端 Vue UI](https://github.com/youzan/vant)
+* [React: PC 端 React UI](https://www.youzanyun.com/zanui/zent)
+
+## 开源协议
+
+本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89)协议,请自由地享受和参与开源。
+
+[vant-weapp]: https://github.com/youzan/vant-weapp
+[issue]: https://github.com/youzan/vant-weapp/issues/new
+[PR]: https://github.com/youzan/vant-weapp/compare
+[MIT]: http://opensource.org/licenses/MIT
+[小程序简易教程]: https://mp.weixin.qq.com/debug/wxadoc/dev/
+[小程序框架介绍]: https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html
+[微信开发者工具]: https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html

+ 1 - 0
node_modules/vant-weapp/dist/action-sheet/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 43 - 0
node_modules/vant-weapp/dist/action-sheet/index.js

@@ -0,0 +1,43 @@
+import { VantComponent } from '../common/component';
+import { safeArea } from '../mixins/safe-area';
+VantComponent({
+    mixins: [safeArea()],
+    props: {
+        show: Boolean,
+        title: String,
+        cancelText: String,
+        customStyle: String,
+        overlayStyle: String,
+        zIndex: {
+            type: Number,
+            value: 100
+        },
+        actions: {
+            type: Array,
+            value: []
+        },
+        overlay: {
+            type: Boolean,
+            value: true
+        },
+        closeOnClickOverlay: {
+            type: Boolean,
+            value: true
+        }
+    },
+    methods: {
+        onSelect(event) {
+            const { index } = event.currentTarget.dataset;
+            const item = this.data.actions[index];
+            if (item && !item.disabled && !item.loading) {
+                this.$emit('select', item);
+            }
+        },
+        onCancel() {
+            this.$emit('cancel');
+        },
+        onClose() {
+            this.$emit('close');
+        }
+    }
+});

+ 8 - 0
node_modules/vant-weapp/dist/action-sheet/index.json

@@ -0,0 +1,8 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index",
+    "van-popup": "../popup/index",
+    "van-loading": "../loading/index"
+  }
+}

+ 51 - 0
node_modules/vant-weapp/dist/action-sheet/index.wxml

@@ -0,0 +1,51 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<van-popup
+  show="{{ show }}"
+  position="bottom"
+  z-index="{{ zIndex }}"
+  overlay="{{ overlay }}"
+  custom-style="{{ customStyle }}"
+  overlay-style="{{ overlayStyle }}"
+  custom-class="van-action-sheet"
+  safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:close="onClose"
+>
+  <view wx:if="{{ title }}" class="van-hairline--bottom van-action-sheet__header">
+    {{ title }}
+    <van-icon
+      name="close"
+      custom-class="van-action-sheet__close"
+      bind:click="onClose"
+    />
+  </view>
+  <view wx:if="{{ actions && actions.length }}">
+    <!-- button外包一层view,防止actions动态变化,导致渲染时button被打散 -->
+    <button
+      wx:for="{{ actions }}"
+      wx:key="index"
+      open-type="{{ item.openType }}"
+      class="{{ utils.bem('action-sheet__item', { disabled: item.disabled || item.loading }) }} van-hairline--top {{ item.className || '' }}"
+      hover-class="van-action-sheet__item--hover"
+      data-index="{{ index }}"
+      bind:tap="onSelect"
+    >
+      <block wx:if="{{ !item.loading }}">
+        {{ item.name }}
+        <text wx:if="{{ item.subname }}" class="van-action-sheet__subname" >{{ item.subname }}</text>
+      </block>
+      <van-loading wx:else size="20px" />
+    </button>
+  </view>
+  <slot />
+  <view
+    wx:if="{{ cancelText }}"
+    class="van-action-sheet__cancel"
+    hover-class="van-action-sheet__cancel--hover"
+    hover-stay-time="70"
+    bind:tap="onCancel"
+  >
+    {{ cancelText }}
+  </view>
+</van-popup>

+ 1 - 0
node_modules/vant-weapp/dist/action-sheet/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-action-sheet{max-height:90%!important;color:#333}.van-action-sheet__cancel,.van-action-sheet__item{height:50px;font-size:16px;line-height:50px;text-align:center;background-color:#fff}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5}.van-action-sheet__cancel{height:60px}.van-action-sheet__cancel:before{display:block;height:10px;background-color:#f8f8f8;content:" "}.van-action-sheet__item--disabled{color:#c9c9c9}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:#fff}.van-action-sheet__subname{margin-left:5px;font-size:12px;color:#7d7e80}.van-action-sheet__header{font-size:16px;font-weight:500;line-height:44px;text-align:center}.van-action-sheet__close{position:absolute!important;top:0;right:0;padding:0 15px;font-size:18px!important;line-height:inherit!important;color:#999}

+ 1 - 0
node_modules/vant-weapp/dist/area/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 212 - 0
node_modules/vant-weapp/dist/area/index.js

@@ -0,0 +1,212 @@
+import { VantComponent } from '../common/component';
+import { pickerProps } from '../picker/shared';
+const COLUMNSPLACEHOLDERCODE = '000000';
+VantComponent({
+    classes: ['active-class', 'toolbar-class', 'column-class'],
+    props: Object.assign({}, pickerProps, { value: String, areaList: {
+            type: Object,
+            value: {}
+        }, columnsNum: {
+            type: [String, Number],
+            value: 3
+        }, columnsPlaceholder: {
+            type: Array,
+            observer(val) {
+                this.setData({
+                    typeToColumnsPlaceholder: {
+                        province: val[0] || '',
+                        city: val[1] || '',
+                        county: val[2] || '',
+                    }
+                });
+            }
+        } }),
+    data: {
+        columns: [{ values: [] }, { values: [] }, { values: [] }],
+        displayColumns: [{ values: [] }, { values: [] }, { values: [] }],
+        typeToColumnsPlaceholder: {}
+    },
+    watch: {
+        value(value) {
+            this.code = value;
+            this.setValues();
+        },
+        areaList: 'setValues',
+        columnsNum(value) {
+            this.set({
+                displayColumns: this.data.columns.slice(0, +value)
+            });
+        }
+    },
+    mounted() {
+        setTimeout(() => {
+            this.setValues();
+        }, 0);
+    },
+    methods: {
+        getPicker() {
+            if (this.picker == null) {
+                this.picker = this.selectComponent('.van-area__picker');
+            }
+            return this.picker;
+        },
+        onCancel(event) {
+            this.emit('cancel', event.detail);
+        },
+        onConfirm(event) {
+            const { index } = event.detail;
+            let { value } = event.detail;
+            value = this.parseOutputValues(value);
+            this.emit('confirm', { value, index });
+        },
+        emit(type, detail) {
+            detail.values = detail.value;
+            delete detail.value;
+            this.$emit(type, detail);
+        },
+        // parse output columns data
+        parseOutputValues(values) {
+            const { columnsPlaceholder } = this.data;
+            return values.map((value, index) => {
+                // save undefined value
+                if (!value)
+                    return value;
+                value = JSON.parse(JSON.stringify(value));
+                if (!value.code || value.name === columnsPlaceholder[index]) {
+                    value.code = '';
+                    value.name = '';
+                }
+                return value;
+            });
+        },
+        onChange(event) {
+            const { index, picker, value } = event.detail;
+            this.code = value[index].code;
+            let getValues = picker.getValues();
+            getValues = this.parseOutputValues(getValues);
+            this.setValues().then(() => {
+                this.$emit('change', {
+                    picker,
+                    values: getValues,
+                    index
+                });
+            });
+        },
+        getConfig(type) {
+            const { areaList } = this.data;
+            return (areaList && areaList[`${type}_list`]) || {};
+        },
+        getList(type, code) {
+            const { typeToColumnsPlaceholder } = this.data;
+            let result = [];
+            if (type !== 'province' && !code) {
+                return result;
+            }
+            const list = this.getConfig(type);
+            result = Object.keys(list).map(code => ({
+                code,
+                name: list[code]
+            }));
+            if (code) {
+                // oversea code
+                if (code[0] === '9' && type === 'city') {
+                    code = '9';
+                }
+                result = result.filter(item => item.code.indexOf(code) === 0);
+            }
+            if (typeToColumnsPlaceholder[type] && result.length) {
+                // set columns placeholder
+                const codeFill = type === 'province' ? '' : type === 'city' ? COLUMNSPLACEHOLDERCODE.slice(2, 4) : COLUMNSPLACEHOLDERCODE.slice(4, 6);
+                result.unshift({
+                    code: `${code}${codeFill}`,
+                    name: typeToColumnsPlaceholder[type]
+                });
+            }
+            return result;
+        },
+        getIndex(type, code) {
+            let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
+            const list = this.getList(type, code.slice(0, compareNum - 2));
+            // oversea code
+            if (code[0] === '9' && type === 'province') {
+                compareNum = 1;
+            }
+            code = code.slice(0, compareNum);
+            for (let i = 0; i < list.length; i++) {
+                if (list[i].code.slice(0, compareNum) === code) {
+                    return i;
+                }
+            }
+            return 0;
+        },
+        setValues() {
+            const county = this.getConfig('county');
+            let { code } = this;
+            if (!code) {
+                if (this.data.columnsPlaceholder.length) {
+                    code = COLUMNSPLACEHOLDERCODE;
+                }
+                else if (Object.keys(county)[0]) {
+                    code = Object.keys(county)[0];
+                }
+                else {
+                    code = '';
+                }
+            }
+            const province = this.getList('province');
+            const city = this.getList('city', code.slice(0, 2));
+            const picker = this.getPicker();
+            if (!picker) {
+                return;
+            }
+            const stack = [];
+            stack.push(picker.setColumnValues(0, province, false));
+            stack.push(picker.setColumnValues(1, city, false));
+            if (city.length && code.slice(2, 4) === '00') {
+                [{ code }] = city;
+            }
+            stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));
+            return Promise.all(stack)
+                .catch(() => { })
+                .then(() => picker.setIndexes([
+                this.getIndex('province', code),
+                this.getIndex('city', code),
+                this.getIndex('county', code)
+            ]))
+                .catch(() => { });
+        },
+        getValues() {
+            const picker = this.getPicker();
+            return picker ? picker.getValues().filter(value => !!value) : [];
+        },
+        getDetail() {
+            const values = this.getValues();
+            const area = {
+                code: '',
+                country: '',
+                province: '',
+                city: '',
+                county: ''
+            };
+            if (!values.length) {
+                return area;
+            }
+            const names = values.map((item) => item.name);
+            area.code = values[values.length - 1].code;
+            if (area.code[0] === '9') {
+                area.country = names[1] || '';
+                area.province = names[2] || '';
+            }
+            else {
+                area.province = names[0] || '';
+                area.city = names[1] || '';
+                area.county = names[2] || '';
+            }
+            return area;
+        },
+        reset() {
+            this.code = '';
+            return this.setValues();
+        }
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/area/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-picker": "../picker/index"
+  }
+}

+ 18 - 0
node_modules/vant-weapp/dist/area/index.wxml

@@ -0,0 +1,18 @@
+<van-picker
+  class="van-area__picker"
+  active-class="active-class"
+  toolbar-class="toolbar-class"
+  column-class="column-class"
+  show-toolbar
+  value-key="name"
+  title="{{ title }}"
+  loading="{{ loading }}"
+  columns="{{ displayColumns }}"
+  item-height="{{ itemHeight }}"
+  visible-item-count="{{ visibleItemCount }}"
+  cancel-button-text="{{ cancelButtonText }}"
+  confirm-button-text="{{ confirmButtonText }}"
+  bind:change="onChange"
+  bind:confirm="onConfirm"
+  bind:cancel="onCancel"
+/>

+ 1 - 0
node_modules/vant-weapp/dist/area/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 1 - 0
node_modules/vant-weapp/dist/badge-group/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 43 - 0
node_modules/vant-weapp/dist/badge-group/index.js

@@ -0,0 +1,43 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+    relation: {
+        name: 'badge',
+        type: 'descendant',
+        linked(target) {
+            this.badges.push(target);
+            this.setActive(this.data.active);
+        },
+        unlinked(target) {
+            this.badges = this.badges.filter(item => item !== target);
+            this.setActive(this.data.active);
+        }
+    },
+    props: {
+        active: {
+            type: Number,
+            value: 0,
+            observer: 'setActive'
+        }
+    },
+    beforeCreate() {
+        this.badges = [];
+        this.currentActive = -1;
+    },
+    methods: {
+        setActive(active) {
+            const { badges, currentActive } = this;
+            if (!badges.length) {
+                return Promise.resolve();
+            }
+            this.currentActive = active;
+            const stack = [];
+            if (currentActive !== active && badges[currentActive]) {
+                stack.push(badges[currentActive].setActive(false));
+            }
+            if (badges[active]) {
+                stack.push(badges[active].setActive(true));
+            }
+            return Promise.all(stack);
+        }
+    }
+});

+ 3 - 0
node_modules/vant-weapp/dist/badge-group/index.json

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

+ 3 - 0
node_modules/vant-weapp/dist/badge-group/index.wxml

@@ -0,0 +1,3 @@
+<view class="van-badge-group van-hairline--top-bottom custom-class">
+  <slot />
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/badge-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-badge-group{width:85px}

+ 1 - 0
node_modules/vant-weapp/dist/badge/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 30 - 0
node_modules/vant-weapp/dist/badge/index.js

@@ -0,0 +1,30 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+    relation: {
+        type: 'ancestor',
+        name: 'badge-group',
+        linked(target) {
+            this.parent = target;
+        }
+    },
+    props: {
+        info: null,
+        title: String
+    },
+    methods: {
+        onClick() {
+            const { parent } = this;
+            if (!parent) {
+                return;
+            }
+            const index = parent.badges.indexOf(this);
+            parent.setActive(index).then(() => {
+                this.$emit('click', index);
+                parent.$emit('change', index);
+            });
+        },
+        setActive(active) {
+            return this.set({ active });
+        }
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/badge/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-info": "../info/index"
+  }
+}

+ 17 - 0
node_modules/vant-weapp/dist/badge/index.wxml

@@ -0,0 +1,17 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="{{ utils.bem('badge', { active }) }} van-hairline custom-class"
+  hover-class="van-badge--hover"
+  hover-stay-time="70"
+  bind:tap="onClick"
+>
+  <view class="van-badge__text">
+    <van-info
+      wx:if="{{ info !== null }}"
+      info="{{ info }}"
+      custom-style="right: 4px"
+    />
+    {{ title }}
+  </view>
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/badge/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-badge{display:block;padding:20px 12px 20px 9px;overflow:hidden;font-size:14px;line-height:1.4;color:#7d7e80;word-break:break-all;background-color:#f8f8f8;border-left:3px solid transparent;box-sizing:border-box;-webkit-user-select:none;user-select:none}.van-badge--hover{background-color:#f2f3f5}.van-badge:after{border-bottom-width:1px}.van-badge--active{font-weight:700;color:#333;border-color:#f44}.van-badge--active:after{border-right-width:1px}.van-badge--active,.van-badge--active.van-badge--hover{background-color:#fff}.van-badge__text{position:relative}

+ 1 - 0
node_modules/vant-weapp/dist/button/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 38 - 0
node_modules/vant-weapp/dist/button/index.js

@@ -0,0 +1,38 @@
+import { VantComponent } from '../common/component';
+import { button } from '../mixins/button';
+import { openType } from '../mixins/open-type';
+VantComponent({
+    mixins: [button, openType],
+    classes: ['hover-class', 'loading-class'],
+    props: {
+        icon: String,
+        color: String,
+        plain: Boolean,
+        block: Boolean,
+        round: Boolean,
+        square: Boolean,
+        loading: Boolean,
+        hairline: Boolean,
+        disabled: Boolean,
+        loadingText: String,
+        type: {
+            type: String,
+            value: 'default'
+        },
+        size: {
+            type: String,
+            value: 'normal'
+        },
+        loadingSize: {
+            type: String,
+            value: '20px'
+        }
+    },
+    methods: {
+        onClick() {
+            if (!this.data.disabled && !this.data.loading) {
+                this.$emit('click');
+            }
+        }
+    }
+});

+ 7 - 0
node_modules/vant-weapp/dist/button/index.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index",
+    "van-loading": "../loading/index"
+  }
+}

+ 51 - 0
node_modules/vant-weapp/dist/button/index.wxml

@@ -0,0 +1,51 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<button
+  id="{{ id }}"
+  class="custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, hairline, unclickable: disabled || loading }]) }} {{ hairline ? 'van-hairline--surround' : '' }}"
+  open-type="{{ openType }}"
+  hover-class="van-button--active hover-class"
+  style="{{ color ? 'border-color: ' + color + ';' + (plain ? 'color: ' + color : 'color: #fff; background-color: ' + color) : '' }}"
+  lang="{{ lang }}"
+  business-id="{{ businessId }}"
+  session-from="{{ sessionFrom }}"
+  send-message-title="{{ sendMessageTitle }}"
+  send-message-path="{{ sendMessagePath }}"
+  send-message-img="{{ sendMessageImg }}"
+  show-message-card="{{ showMessageCard }}"
+  app-parameter="{{ appParameter }}"
+  aria-label="{{ ariaLabel }}"
+  bindtap="onClick"
+  bindgetuserinfo="bindGetUserInfo"
+  bindcontact="bindContact"
+  bindgetphonenumber="bindGetPhoneNumber"
+  binderror="bindError"
+  bindlaunchapp="bindLaunchApp"
+  bindopensetting="bindOpenSetting"
+>
+  <block wx:if="{{ loading }}">
+    <van-loading
+      custom-class="loading-class"
+      size="{{ loadingSize }}"
+      color="{{ type === 'default' ? '#c9c9c9' : '' }}"
+    />
+    <view
+      wx:if="{{ loadingText }}"
+      class="van-button__loading-text"
+    >
+      {{ loadingText }}
+    </view>
+  </block>
+  <block wx:else>
+    <van-icon
+      wx:if="{{ icon }}"
+      size="1.2em"
+      name="{{ icon }}"
+      class="van-button__icon"
+      custom-style="line-height: inherit;"
+    />
+    <view class="van-button__text">
+      <slot />
+    </view>
+  </block>
+</button>

文件差异内容过多而无法显示
+ 0 - 0
node_modules/vant-weapp/dist/button/index.wxss


+ 1 - 0
node_modules/vant-weapp/dist/card/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 38 - 0
node_modules/vant-weapp/dist/card/index.js

@@ -0,0 +1,38 @@
+import { link } from '../mixins/link';
+import { VantComponent } from '../common/component';
+VantComponent({
+    classes: [
+        'num-class',
+        'desc-class',
+        'thumb-class',
+        'title-class',
+        'price-class',
+        'origin-price-class',
+    ],
+    mixins: [link],
+    props: {
+        tag: String,
+        num: String,
+        desc: String,
+        thumb: String,
+        title: String,
+        price: String,
+        centered: Boolean,
+        lazyLoad: Boolean,
+        thumbLink: String,
+        originPrice: String,
+        thumbMode: {
+            type: String,
+            value: 'aspectFit'
+        },
+        currency: {
+            type: String,
+            value: '¥'
+        }
+    },
+    methods: {
+        onClickThumb() {
+            this.jumpLink('thumbLink');
+        }
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/card/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-tag": "../tag/index"
+  }
+}

+ 45 - 0
node_modules/vant-weapp/dist/card/index.wxml

@@ -0,0 +1,45 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="custom-class van-card">
+  <view class="{{ utils.bem('card__header', { center: centered }) }}">
+    <view class="van-card__thumb" bind:tap="onClickThumb">
+      <image
+        wx:if="{{ thumb }}"
+        src="{{ thumb }}"
+        mode="{{ thumbMode }}"
+        lazy-load="{{ lazyLoad }}"
+        class="van-card__img thumb-class"
+      />
+      <slot name="thumb" />
+      <van-tag
+        wx:if="{{ tag }}"
+        mark
+        type="danger"
+        custom-class="van-card__tag"
+      >
+        {{ tag }}
+      </van-tag>
+    </view>
+
+    <view class="van-card__content">
+      <view wx:if="{{ title }}" class="van-card__title title-class">{{ title }}</view>
+      <slot wx:else name="title" />
+
+      <view wx:if="{{ desc }}" class="van-card__desc desc-class">{{ desc }}</view>
+      <slot wx:else name="desc" />
+
+      <slot name="tags" />
+
+      <view class="van-card__bottom">
+        <view wx:if="{{ price || price === 0 }}" class="van-card__price price-class">{{ currency }} {{ price }}</view>
+        <view wx:if="{{ originPrice || originPrice === 0 }}" class="van-card__origin-price origin-price-class">{{ currency }} {{ originPrice }}</view>
+        <view wx:if="{{ num }}" class="van-card__num num-class">x {{ num }}</view>
+        <slot name="bottom" />
+      </view>
+    </view>
+  </view>
+
+  <view class="van-card__footer">
+    <slot name="footer" />
+  </view>
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/card/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-card{position:relative;padding:5px 15px;font-size:12px;color:#333;background-color:#fafafa;box-sizing:border-box}.van-card__header{display:-webkit-flex;display:flex}.van-card__header--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-card__thumb{position:relative;width:90px;height:90px;margin-right:10px;-webkit-flex:none;flex:none}.van-card__thumb:empty{display:none}.van-card__img{width:100%;height:100%}.van-card__content{position:relative;min-width:0;-webkit-flex:1;flex:1}.van-card__desc,.van-card__title{word-break:break-all}.van-card__title{font-weight:700;line-height:16px}.van-card__desc{color:#7d7e80}.van-card__bottom,.van-card__desc{line-height:20px}.van-card__price{display:inline-block;font-weight:700;color:#f44}.van-card__origin-price{display:inline-block;margin-left:5px;font-size:10px;color:#7d7e80;text-decoration:line-through}.van-card__num{float:right}.van-card__tag{position:absolute;top:2px;left:0}.van-card__footer{width:100%;text-align:right;-webkit-flex:none;flex:none}

+ 1 - 0
node_modules/vant-weapp/dist/cell-group/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 10 - 0
node_modules/vant-weapp/dist/cell-group/index.js

@@ -0,0 +1,10 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+    props: {
+        title: String,
+        border: {
+            type: Boolean,
+            value: true
+        }
+    }
+});

+ 3 - 0
node_modules/vant-weapp/dist/cell-group/index.json

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

+ 9 - 0
node_modules/vant-weapp/dist/cell-group/index.wxml

@@ -0,0 +1,9 @@
+<view
+  wx:if="{{ title }}"
+  class="van-cell-group__title"
+>
+  {{ title }}
+</view>
+<view class="custom-class van-cell-group {{ border ? 'van-hairline--top-bottom' : '' }}">
+  <slot />
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/cell-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-cell-group__title{font-size:14px;padding:15px 15px 5px;color:#999;line-height:16px}

+ 1 - 0
node_modules/vant-weapp/dist/cell/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 37 - 0
node_modules/vant-weapp/dist/cell/index.js

@@ -0,0 +1,37 @@
+import { link } from '../mixins/link';
+import { VantComponent } from '../common/component';
+VantComponent({
+    classes: [
+        'title-class',
+        'label-class',
+        'value-class',
+        'right-icon-class',
+        'hover-class'
+    ],
+    mixins: [link],
+    props: {
+        title: null,
+        value: null,
+        icon: String,
+        size: String,
+        label: String,
+        center: Boolean,
+        isLink: Boolean,
+        required: Boolean,
+        clickable: Boolean,
+        titleWidth: String,
+        customStyle: String,
+        arrowDirection: String,
+        useLabelSlot: Boolean,
+        border: {
+            type: Boolean,
+            value: true
+        }
+    },
+    methods: {
+        onClick(event) {
+            this.$emit('click', event.detail);
+            this.jumpLink();
+        }
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/cell/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index"
+  }
+}

+ 45 - 0
node_modules/vant-weapp/dist/cell/index.wxml

@@ -0,0 +1,45 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}"
+  hover-class="van-cell--hover hover-class"
+  hover-stay-time="70"
+  style="{{ customStyle }}"
+  bind:tap="onClick"
+>
+  <van-icon
+    wx:if="{{ icon }}"
+    name="{{ icon }}"
+    class="van-cell__left-icon-wrap"
+    custom-class="van-cell__left-icon"
+  />
+  <slot wx:else name="icon" />
+
+  <view
+    style="{{ titleWidth ? 'max-width:' + titleWidth + ';min-width:' + titleWidth : '' }}"
+    class="van-cell__title title-class"
+  >
+    <block wx:if="{{ title }}">{{ title }}</block>
+    <slot wx:else name="title" />
+
+    <view wx:if="{{ label || useLabelSlot }}" class="van-cell__label label-class">
+      <slot wx:if="{{ useLabelSlot }}" name="label" />
+      <block wx:elif="{{ label }}">{{ label }}</block>
+    </view>
+  </view>
+
+  <view class="van-cell__value value-class">
+    <block wx:if="{{ value || value === 0 }}">{{ value }}</block>
+    <slot wx:else />
+  </view>
+
+  <van-icon
+    wx:if="{{ isLink }}"
+    name="{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}"
+    class="van-cell__right-icon-wrap right-icon-class"
+    custom-class="van-cell__right-icon"
+  />
+  <slot wx:else name="right-icon" />
+
+  <slot name="extra" />
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/cell/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-cell{position:relative;display:-webkit-flex;display:flex;width:100%;padding:10px 15px;font-size:14px;line-height:24px;color:#333;background-color:#fff;box-sizing:border-box}.van-cell:after{content:" ";position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:auto;left:15px;right:0;bottom:0;-webkit-transform:scaleY(.5);transform:scaleY(.5);border-bottom:1px solid #eee}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff}.van-cell__label{margin-top:3px;font-size:12px;line-height:18px;color:#999}.van-cell__value{overflow:hidden;color:#999;text-align:right;vertical-align:middle}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;height:24px;font-size:16px;-webkit-align-items:center;align-items:center}.van-cell__left-icon-wrap{margin-right:5px}.van-cell__right-icon-wrap{margin-left:5px;color:#999}.van-cell__left-icon{line-height:24px;vertical-align:middle}.van-cell__right-icon{line-height:24px}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;left:7px;font-size:14px;color:#f44;content:"*"}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-bottom:12px}.van-cell--large .van-cell__title{font-size:16px}.van-cell--large .van-cell__label{font-size:14px}

+ 1 - 0
node_modules/vant-weapp/dist/checkbox-group/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 39 - 0
node_modules/vant-weapp/dist/checkbox-group/index.js

@@ -0,0 +1,39 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+    field: true,
+    relation: {
+        name: 'checkbox',
+        type: 'descendant',
+        linked(target) {
+            this.children = this.children || [];
+            this.children.push(target);
+            this.updateChild(target);
+        },
+        unlinked(target) {
+            this.children = this.children.filter((child) => child !== target);
+        }
+    },
+    props: {
+        max: Number,
+        value: {
+            type: Array,
+            observer: 'updateChildren'
+        },
+        disabled: {
+            type: Boolean,
+            observer: 'updateChildren'
+        }
+    },
+    methods: {
+        updateChildren() {
+            (this.children || []).forEach((child) => this.updateChild(child));
+        },
+        updateChild(child) {
+            const { value, disabled } = this.data;
+            child.set({
+                value: value.indexOf(child.data.name) !== -1,
+                disabled: disabled || child.data.disabled
+            });
+        }
+    }
+});

+ 3 - 0
node_modules/vant-weapp/dist/checkbox-group/index.json

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

+ 1 - 0
node_modules/vant-weapp/dist/checkbox-group/index.wxml

@@ -0,0 +1 @@
+<slot />

+ 1 - 0
node_modules/vant-weapp/dist/checkbox-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 1 - 0
node_modules/vant-weapp/dist/checkbox/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 74 - 0
node_modules/vant-weapp/dist/checkbox/index.js

@@ -0,0 +1,74 @@
+import { VantComponent } from '../common/component';
+function emit(target, value) {
+    target.$emit('input', value);
+    target.$emit('change', value);
+}
+VantComponent({
+    field: true,
+    relation: {
+        name: 'checkbox-group',
+        type: 'ancestor',
+        linked(target) {
+            this.parent = target;
+        },
+        unlinked() {
+            this.parent = null;
+        }
+    },
+    classes: ['icon-class', 'label-class'],
+    props: {
+        value: Boolean,
+        disabled: Boolean,
+        useIconSlot: Boolean,
+        checkedColor: String,
+        labelPosition: String,
+        labelDisabled: Boolean,
+        shape: {
+            type: String,
+            value: 'round'
+        }
+    },
+    methods: {
+        emitChange(value) {
+            if (this.parent) {
+                this.setParentValue(this.parent, value);
+            }
+            else {
+                emit(this, value);
+            }
+        },
+        toggle() {
+            const { disabled, value } = this.data;
+            if (!disabled) {
+                this.emitChange(!value);
+            }
+        },
+        onClickLabel() {
+            const { labelDisabled, disabled, value } = this.data;
+            if (!disabled && !labelDisabled) {
+                this.emitChange(!value);
+            }
+        },
+        setParentValue(parent, value) {
+            const parentValue = parent.data.value.slice();
+            const { name } = this.data;
+            const { max } = parent.data;
+            if (value) {
+                if (max && parentValue.length >= max) {
+                    return;
+                }
+                if (parentValue.indexOf(name) === -1) {
+                    parentValue.push(name);
+                    emit(parent, parentValue);
+                }
+            }
+            else {
+                const index = parentValue.indexOf(name);
+                if (index !== -1) {
+                    parentValue.splice(index, 1);
+                    emit(parent, parentValue);
+                }
+            }
+        }
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/checkbox/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index"
+  }
+}

+ 18 - 0
node_modules/vant-weapp/dist/checkbox/index.wxml

@@ -0,0 +1,18 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-checkbox custom-class">
+  <view class="van-checkbox__icon-wrap" bindtap="toggle">
+    <slot wx:if="{{ useIconSlot }}" name="icon" />
+    <van-icon
+      wx:else
+      name="success"
+      class="{{ utils.bem('checkbox__icon', [shape, { disabled, checked: value }]) }}"
+      style="{{ checkedColor && value && !disabled ? 'border-color:' + checkedColor + '; background-color:' + checkedColor : '' }}"
+      custom-class="icon-class"
+      custom-style="line-height: 20px;"
+    />
+  </view>
+  <view class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled }]) }}" bindtap="onClickLabel">
+    <slot />
+  </view>
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/checkbox/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:block;width:20px;height:20px;font-size:14px;color:transparent;text-align:center;border:1px solid #e5e5e5;box-sizing:border-box;transition:.2s}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;background-color:#1989fa;border-color:#1989fa}.van-checkbox__icon--disabled{background-color:#eee;border-color:#c9c9c9}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c9c9c9}.van-checkbox__label{margin-left:10px;color:#333;word-break:break-all}.van-checkbox__label--left{float:left;margin:0 10px 0 0}.van-checkbox__label--disabled{color:#c9c9c9}.van-checkbox__label:empty{margin:0}

+ 1 - 0
node_modules/vant-weapp/dist/col/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 23 - 0
node_modules/vant-weapp/dist/col/index.js

@@ -0,0 +1,23 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+    relation: {
+        name: 'row',
+        type: 'ancestor'
+    },
+    props: {
+        span: Number,
+        offset: Number
+    },
+    data: {
+        style: ''
+    },
+    methods: {
+        setGutter(gutter) {
+            const padding = `${gutter / 2}px`;
+            const style = gutter ? `padding-left: ${padding}; padding-right: ${padding};` : '';
+            if (style !== this.data.style) {
+                this.set({ style });
+            }
+        }
+    }
+});

+ 3 - 0
node_modules/vant-weapp/dist/col/index.json

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

+ 8 - 0
node_modules/vant-weapp/dist/col/index.wxml

@@ -0,0 +1,8 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="custom-class {{ utils.bem('col', [span]) }} {{ offset ? 'van-col--offset-' + offset : '' }}"
+  style="{{ style }}"
+>
+  <slot />
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/col/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-col{float:left;box-sizing:border-box}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%}

+ 1 - 0
node_modules/vant-weapp/dist/collapse-item/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 96 - 0
node_modules/vant-weapp/dist/collapse-item/index.js

@@ -0,0 +1,96 @@
+import { VantComponent } from '../common/component';
+const nextTick = () => new Promise(resolve => setTimeout(resolve, 20));
+VantComponent({
+    classes: ['title-class', 'content-class'],
+    relation: {
+        name: 'collapse',
+        type: 'ancestor',
+        linked(parent) {
+            this.parent = parent;
+        }
+    },
+    props: {
+        name: null,
+        title: null,
+        value: null,
+        icon: String,
+        label: String,
+        disabled: Boolean,
+        clickable: Boolean,
+        border: {
+            type: Boolean,
+            value: true
+        },
+        isLink: {
+            type: Boolean,
+            value: true
+        }
+    },
+    data: {
+        contentHeight: 0,
+        expanded: false,
+        transition: false
+    },
+    mounted() {
+        this.updateExpanded()
+            .then(nextTick)
+            .then(() => {
+            const data = { transition: true };
+            if (this.data.expanded) {
+                data.contentHeight = 'auto';
+            }
+            this.set(data);
+        });
+    },
+    methods: {
+        updateExpanded() {
+            if (!this.parent) {
+                return Promise.resolve();
+            }
+            const { value, accordion } = this.parent.data;
+            const { children = [] } = this.parent;
+            const { name } = this.data;
+            const index = children.indexOf(this);
+            const currentName = name == null ? index : name;
+            const expanded = accordion
+                ? value === currentName
+                : (value || []).some((name) => name === currentName);
+            const stack = [];
+            if (expanded !== this.data.expanded) {
+                stack.push(this.updateStyle(expanded));
+            }
+            stack.push(this.set({ index, expanded }));
+            return Promise.all(stack);
+        },
+        updateStyle(expanded) {
+            return this.getRect('.van-collapse-item__content')
+                .then((rect) => rect.height)
+                .then((height) => {
+                if (expanded) {
+                    return this.set({
+                        contentHeight: height ? `${height}px` : 'auto'
+                    });
+                }
+                return this.set({ contentHeight: `${height}px` })
+                    .then(nextTick)
+                    .then(() => this.set({ contentHeight: 0 }));
+            });
+        },
+        onClick() {
+            if (this.data.disabled) {
+                return;
+            }
+            const { name, expanded } = this.data;
+            const index = this.parent.children.indexOf(this);
+            const currentName = name == null ? index : name;
+            this.parent.switch(currentName, !expanded);
+        },
+        onTransitionEnd() {
+            if (this.data.expanded) {
+                this.set({
+                    contentHeight: 'auto'
+                });
+            }
+        }
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/collapse-item/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-cell": "../cell/index"
+  }
+}

+ 44 - 0
node_modules/vant-weapp/dist/collapse-item/index.wxml

@@ -0,0 +1,44 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-collapse-item custom-class {{ index !== 0 ? 'van-hairline--top' : '' }}">
+  <van-cell
+    title="{{ title }}"
+    title-class="title-class"
+    icon="{{ icon }}"
+    value="{{ value }}"
+    label="{{ label }}"
+    is-link="{{ isLink }}"
+    clickable="{{ clickable }}"
+    border="{{ border && expanded }}"
+    class="{{ utils.bem('collapse-item__title', { disabled, expanded }) }}"
+    right-icon-class="van-cell__right-icon"
+    custom-class="van-cell"
+    hover-class="van-cell--hover"
+    bind:click="onClick"
+  >
+    <slot
+      name="title"
+      slot="title"
+    />
+    <slot
+      name="icon"
+      slot="icon"
+    />
+    <slot name="value" />
+    <slot
+      name="right-icon"
+      slot="right-icon"
+    />
+  </van-cell>
+  <view
+    class="{{ utils.bem('collapse-item__wrapper', { transition }) }}"
+    style="height: {{ contentHeight }};"
+    bind:transitionend="onTransitionEnd"
+  >
+    <view
+      class="van-collapse-item__content content-class"
+    >
+      <slot />
+    </view>
+  </view>
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/collapse-item/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg);transition:.3s}.van-collapse-item__title--expanded .van-cell__right-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c9c9c9!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__wrapper--transition{transition:height .3s ease-in-out}.van-collapse-item__content{padding:15px;font-size:13px;line-height:1.5;color:#999;background-color:#fff}

+ 1 - 0
node_modules/vant-weapp/dist/collapse/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 50 - 0
node_modules/vant-weapp/dist/collapse/index.js

@@ -0,0 +1,50 @@
+import { VantComponent } from '../common/component';
+VantComponent({
+    relation: {
+        name: 'collapse-item',
+        type: 'descendant',
+        linked(child) {
+            this.children.push(child);
+        },
+        unlinked(child) {
+            this.children = this.children.filter((item) => item !== child);
+        }
+    },
+    props: {
+        value: {
+            type: null,
+            observer: 'updateExpanded'
+        },
+        accordion: {
+            type: Boolean,
+            observer: 'updateExpanded'
+        },
+        border: {
+            type: Boolean,
+            value: true
+        }
+    },
+    beforeCreate() {
+        this.children = [];
+    },
+    methods: {
+        updateExpanded() {
+            this.children.forEach((child) => {
+                child.updateExpanded();
+            });
+        },
+        switch(name, expanded) {
+            const { accordion, value } = this.data;
+            if (!accordion) {
+                name = expanded
+                    ? (value || []).concat(name)
+                    : (value || []).filter((activeName) => activeName !== name);
+            }
+            else {
+                name = expanded ? name : '';
+            }
+            this.$emit('change', name);
+            this.$emit('input', name);
+        }
+    }
+});

+ 3 - 0
node_modules/vant-weapp/dist/collapse/index.json

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

+ 3 - 0
node_modules/vant-weapp/dist/collapse/index.wxml

@@ -0,0 +1,3 @@
+<view class="custom-class van-collapse {{ border ? 'van-hairline--top-bottom' : '' }}">
+  <slot />
+</view>

+ 1 - 0
node_modules/vant-weapp/dist/collapse/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 4 - 0
node_modules/vant-weapp/dist/common/color.d.ts

@@ -0,0 +1,4 @@
+export declare const RED = "#f44";
+export declare const BLUE = "#1989fa";
+export declare const GREEN = "#07c160";
+export declare const ORANGE = "#ff976a";

+ 4 - 0
node_modules/vant-weapp/dist/common/color.js

@@ -0,0 +1,4 @@
+export const RED = '#f44';
+export const BLUE = '#1989fa';
+export const GREEN = '#07c160';
+export const ORANGE = '#ff976a';

+ 3 - 0
node_modules/vant-weapp/dist/common/component.d.ts

@@ -0,0 +1,3 @@
+import { VantComponentOptions, CombinedComponentInstance } from '../definitions/index';
+declare function VantComponent<Data, Props, Methods, Computed>(vantOptions?: VantComponentOptions<Data, Props, Methods, Computed, CombinedComponentInstance<Data, Props, Methods, Computed>>): void;
+export { VantComponent };

+ 48 - 0
node_modules/vant-weapp/dist/common/component.js

@@ -0,0 +1,48 @@
+import { basic } from '../mixins/basic';
+import { observe } from '../mixins/observer/index';
+function mapKeys(source, target, map) {
+    Object.keys(map).forEach(key => {
+        if (source[key]) {
+            target[map[key]] = source[key];
+        }
+    });
+}
+function VantComponent(vantOptions = {}) {
+    const options = {};
+    mapKeys(vantOptions, options, {
+        data: 'data',
+        props: 'properties',
+        mixins: 'behaviors',
+        methods: 'methods',
+        beforeCreate: 'created',
+        created: 'attached',
+        mounted: 'ready',
+        relations: 'relations',
+        destroyed: 'detached',
+        classes: 'externalClasses'
+    });
+    const { relation } = vantOptions;
+    if (relation) {
+        options.relations = Object.assign(options.relations || {}, {
+            [`../${relation.name}/index`]: relation
+        });
+    }
+    // add default externalClasses
+    options.externalClasses = options.externalClasses || [];
+    options.externalClasses.push('custom-class');
+    // add default behaviors
+    options.behaviors = options.behaviors || [];
+    options.behaviors.push(basic);
+    // map field to form-field behavior
+    if (vantOptions.field) {
+        options.behaviors.push('wx://form-field');
+    }
+    // add default options
+    options.options = {
+        multipleSlots: true,
+        addGlobalClass: true
+    };
+    observe(vantOptions, options);
+    Component(options);
+}
+export { VantComponent };

+ 1 - 0
node_modules/vant-weapp/dist/common/index.wxss

@@ -0,0 +1 @@
+.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{content:"";display:table;clear:both}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{content:" ";position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:-50%;left:-50%;right:-50%;bottom:-50%;-webkit-transform:scale(.5);transform:scale(.5);border:0 solid #eee}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}

+ 1 - 0
node_modules/vant-weapp/dist/common/style/clearfix.wxss

@@ -0,0 +1 @@
+.van-clearfix:after{content:"";display:table;clear:both}

+ 1 - 0
node_modules/vant-weapp/dist/common/style/ellipsis.wxss

@@ -0,0 +1 @@
+.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}

+ 1 - 0
node_modules/vant-weapp/dist/common/style/hairline.wxss

@@ -0,0 +1 @@
+.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{content:" ";position:absolute;pointer-events:none;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;top:-50%;left:-50%;right:-50%;bottom:-50%;-webkit-transform:scale(.5);transform:scale(.5);border:0 solid #eee}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}

+ 0 - 0
node_modules/vant-weapp/dist/common/style/mixins/clearfix.wxss


+ 0 - 0
node_modules/vant-weapp/dist/common/style/mixins/ellipsis.wxss


+ 0 - 0
node_modules/vant-weapp/dist/common/style/mixins/hairline.wxss


+ 0 - 0
node_modules/vant-weapp/dist/common/style/var.wxss


+ 7 - 0
node_modules/vant-weapp/dist/common/utils.d.ts

@@ -0,0 +1,7 @@
+/// <reference types="miniprogram-api-typings" />
+export declare function isDef(value: any): boolean;
+export declare function isObj(x: any): boolean;
+export declare function isNumber(value: any): boolean;
+export declare function range(num: number, min: number, max: number): number;
+export declare function nextTick(fn: Function): void;
+export declare function getSystemInfoSync(): WechatMiniprogram.GetSystemInfoSuccessCallbackResult;

+ 25 - 0
node_modules/vant-weapp/dist/common/utils.js

@@ -0,0 +1,25 @@
+export function isDef(value) {
+    return value !== undefined && value !== null;
+}
+export function isObj(x) {
+    const type = typeof x;
+    return x !== null && (type === 'object' || type === 'function');
+}
+export function isNumber(value) {
+    return /^\d+$/.test(value);
+}
+export function range(num, min, max) {
+    return Math.min(Math.max(num, min), max);
+}
+export function nextTick(fn) {
+    setTimeout(() => {
+        fn();
+    }, 1000 / 30);
+}
+let systemInfo = null;
+export function getSystemInfoSync() {
+    if (systemInfo == null) {
+        systemInfo = wx.getSystemInfoSync();
+    }
+    return systemInfo;
+}

+ 1 - 0
node_modules/vant-weapp/dist/datetime-picker/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 287 - 0
node_modules/vant-weapp/dist/datetime-picker/index.js

@@ -0,0 +1,287 @@
+import { VantComponent } from '../common/component';
+import { isDef } from '../common/utils';
+import { pickerProps } from '../picker/shared';
+const currentYear = new Date().getFullYear();
+function isValidDate(date) {
+    return isDef(date) && !isNaN(new Date(date).getTime());
+}
+function range(num, min, max) {
+    return Math.min(Math.max(num, min), max);
+}
+function padZero(val) {
+    return `00${val}`.slice(-2);
+}
+function times(n, iteratee) {
+    let index = -1;
+    const result = Array(n < 0 ? 0 : n);
+    while (++index < n) {
+        result[index] = iteratee(index);
+    }
+    return result;
+}
+function getTrueValue(formattedValue) {
+    if (!formattedValue)
+        return;
+    while (isNaN(parseInt(formattedValue, 10))) {
+        formattedValue = formattedValue.slice(1);
+    }
+    return parseInt(formattedValue, 10);
+}
+function getMonthEndDay(year, month) {
+    return 32 - new Date(year, month - 1, 32).getDate();
+}
+const defaultFormatter = (_, value) => value;
+VantComponent({
+    classes: ['active-class', 'toolbar-class', 'column-class'],
+    props: Object.assign({}, pickerProps, { formatter: {
+            type: Function,
+            value: defaultFormatter
+        }, value: null, type: {
+            type: String,
+            value: 'datetime'
+        }, showToolbar: {
+            type: Boolean,
+            value: true
+        }, minDate: {
+            type: Number,
+            value: new Date(currentYear - 10, 0, 1).getTime()
+        }, maxDate: {
+            type: Number,
+            value: new Date(currentYear + 10, 11, 31).getTime()
+        }, minHour: {
+            type: Number,
+            value: 0
+        }, maxHour: {
+            type: Number,
+            value: 23
+        }, minMinute: {
+            type: Number,
+            value: 0
+        }, maxMinute: {
+            type: Number,
+            value: 59
+        } }),
+    data: {
+        innerValue: Date.now(),
+        columns: []
+    },
+    watch: {
+        value: 'updateValue',
+        type: 'updateValue',
+        minDate: 'updateValue',
+        maxDate: 'updateValue',
+        minHour: 'updateValue',
+        maxHour: 'updateValue',
+        minMinute: 'updateValue',
+        maxMinute: 'updateValue'
+    },
+    methods: {
+        updateValue() {
+            const { data } = this;
+            const val = this.correctValue(this.data.value);
+            const isEqual = val === data.innerValue;
+            if (!isEqual) {
+                this.updateColumnValue(val).then(() => {
+                    this.$emit('input', val);
+                });
+            }
+            else {
+                this.updateColumns();
+            }
+        },
+        getPicker() {
+            if (this.picker == null) {
+                this.picker = this.selectComponent('.van-datetime-picker');
+                const { picker } = this;
+                const { setColumnValues } = picker;
+                picker.setColumnValues = (...args) => setColumnValues.apply(picker, [...args, false]);
+            }
+            return this.picker;
+        },
+        updateColumns() {
+            const { formatter = defaultFormatter } = this.data;
+            const results = this.getRanges().map(({ type, range }) => {
+                const values = times(range[1] - range[0] + 1, index => {
+                    let value = range[0] + index;
+                    value = type === 'year' ? `${value}` : padZero(value);
+                    return formatter(type, value);
+                });
+                return { values };
+            });
+            return this.set({ columns: results });
+        },
+        getRanges() {
+            const { data } = this;
+            if (data.type === 'time') {
+                return [
+                    {
+                        type: 'hour',
+                        range: [data.minHour, data.maxHour]
+                    },
+                    {
+                        type: 'minute',
+                        range: [data.minMinute, data.maxMinute]
+                    }
+                ];
+            }
+            const { maxYear, maxDate, maxMonth, maxHour, maxMinute } = this.getBoundary('max', data.innerValue);
+            const { minYear, minDate, minMonth, minHour, minMinute } = this.getBoundary('min', data.innerValue);
+            const result = [
+                {
+                    type: 'year',
+                    range: [minYear, maxYear]
+                },
+                {
+                    type: 'month',
+                    range: [minMonth, maxMonth]
+                },
+                {
+                    type: 'day',
+                    range: [minDate, maxDate]
+                },
+                {
+                    type: 'hour',
+                    range: [minHour, maxHour]
+                },
+                {
+                    type: 'minute',
+                    range: [minMinute, maxMinute]
+                }
+            ];
+            if (data.type === 'date')
+                result.splice(3, 2);
+            if (data.type === 'year-month')
+                result.splice(2, 3);
+            return result;
+        },
+        correctValue(value) {
+            const { data } = this;
+            // validate value
+            const isDateType = data.type !== 'time';
+            if (isDateType && !isValidDate(value)) {
+                value = data.minDate;
+            }
+            else if (!isDateType && !value) {
+                const { minHour } = data;
+                value = `${padZero(minHour)}:00`;
+            }
+            // time type
+            if (!isDateType) {
+                let [hour, minute] = value.split(':');
+                hour = padZero(range(hour, data.minHour, data.maxHour));
+                minute = padZero(range(minute, data.minMinute, data.maxMinute));
+                return `${hour}:${minute}`;
+            }
+            // date type
+            value = Math.max(value, data.minDate);
+            value = Math.min(value, data.maxDate);
+            return value;
+        },
+        getBoundary(type, innerValue) {
+            const value = new Date(innerValue);
+            const boundary = new Date(this.data[`${type}Date`]);
+            const year = boundary.getFullYear();
+            let month = 1;
+            let date = 1;
+            let hour = 0;
+            let minute = 0;
+            if (type === 'max') {
+                month = 12;
+                date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);
+                hour = 23;
+                minute = 59;
+            }
+            if (value.getFullYear() === year) {
+                month = boundary.getMonth() + 1;
+                if (value.getMonth() + 1 === month) {
+                    date = boundary.getDate();
+                    if (value.getDate() === date) {
+                        hour = boundary.getHours();
+                        if (value.getHours() === hour) {
+                            minute = boundary.getMinutes();
+                        }
+                    }
+                }
+            }
+            return {
+                [`${type}Year`]: year,
+                [`${type}Month`]: month,
+                [`${type}Date`]: date,
+                [`${type}Hour`]: hour,
+                [`${type}Minute`]: minute
+            };
+        },
+        onCancel() {
+            this.$emit('cancel');
+        },
+        onConfirm() {
+            this.$emit('confirm', this.data.innerValue);
+        },
+        onChange() {
+            const { data } = this;
+            let value;
+            const picker = this.getPicker();
+            if (data.type === 'time') {
+                const indexes = picker.getIndexes();
+                value = `${indexes[0] + data.minHour}:${indexes[1] + data.minMinute}`;
+            }
+            else {
+                const values = picker.getValues();
+                const year = getTrueValue(values[0]);
+                const month = getTrueValue(values[1]);
+                const maxDate = getMonthEndDay(year, month);
+                let date = getTrueValue(values[2]);
+                if (data.type === 'year-month') {
+                    date = 1;
+                }
+                date = date > maxDate ? maxDate : date;
+                let hour = 0;
+                let minute = 0;
+                if (data.type === 'datetime') {
+                    hour = getTrueValue(values[3]);
+                    minute = getTrueValue(values[4]);
+                }
+                value = new Date(year, month - 1, date, hour, minute);
+            }
+            value = this.correctValue(value);
+            this.updateColumnValue(value).then(() => {
+                this.$emit('input', value);
+                this.$emit('change', picker);
+            });
+        },
+        updateColumnValue(value) {
+            let values = [];
+            const { type, formatter = defaultFormatter } = this.data;
+            const picker = this.getPicker();
+            if (type === 'time') {
+                const pair = value.split(':');
+                values = [
+                    formatter('hour', pair[0]),
+                    formatter('minute', pair[1])
+                ];
+            }
+            else {
+                const date = new Date(value);
+                values = [
+                    formatter('year', `${date.getFullYear()}`),
+                    formatter('month', padZero(date.getMonth() + 1))
+                ];
+                if (type === 'date') {
+                    values.push(formatter('day', padZero(date.getDate())));
+                }
+                if (type === 'datetime') {
+                    values.push(formatter('day', padZero(date.getDate())), formatter('hour', padZero(date.getHours())), formatter('minute', padZero(date.getMinutes())));
+                }
+            }
+            return this.set({ innerValue: value })
+                .then(() => this.updateColumns())
+                .then(() => picker.setValues(values));
+        }
+    },
+    created() {
+        const innerValue = this.correctValue(this.data.value);
+        this.updateColumnValue(innerValue).then(() => {
+            this.$emit('input', innerValue);
+        });
+    }
+});

+ 6 - 0
node_modules/vant-weapp/dist/datetime-picker/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-picker": "../picker/index"
+  }
+}

+ 16 - 0
node_modules/vant-weapp/dist/datetime-picker/index.wxml

@@ -0,0 +1,16 @@
+<van-picker
+  class="van-datetime-picker"
+  active-class="active-class"
+  toolbar-class="toolbar-class"
+  column-class="column-class"
+  title="{{ title }}"
+  columns="{{ columns }}"
+  item-height="{{ itemHeight }}"
+  show-toolbar="{{ showToolbar }}"
+  visible-item-count="{{ visibleItemCount }}"
+  confirm-button-text="{{ confirmButtonText }}"
+  cancel-button-text="{{ cancelButtonText }}"
+  bind:change="onChange"
+  bind:confirm="onConfirm"
+  bind:cancel="onCancel"
+/>

+ 1 - 0
node_modules/vant-weapp/dist/datetime-picker/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 32 - 0
node_modules/vant-weapp/dist/definitions/index.d.ts

@@ -0,0 +1,32 @@
+/// <reference types="miniprogram-api-typings" />
+import { Weapp } from './weapp';
+declare type RecordToAny<T> = {
+    [K in keyof T]: any;
+};
+declare type RecordToReturn<T> = {
+    [P in keyof T]: T[P] extends (...args: any[]) => any ? ReturnType<T[P]> : T[P];
+};
+export declare type CombinedComponentInstance<Data, Props, Methods, Computed> = Methods & WechatMiniprogram.Component.TrivialInstance & Weapp.FormField & {
+    data: Data & RecordToReturn<Computed> & RecordToAny<Props>;
+};
+export interface VantComponentOptions<Data, Props, Methods, Computed, Instance> {
+    data?: Data;
+    field?: boolean;
+    classes?: string[];
+    mixins?: string[];
+    props?: Props & Weapp.PropertyOption;
+    watch?: Weapp.WatchOption<Instance>;
+    computed?: Computed & Weapp.ComputedOption<Instance>;
+    relation?: Weapp.RelationOption<Instance> & {
+        name: string;
+    };
+    relations?: {
+        [componentName: string]: Weapp.RelationOption<Instance>;
+    };
+    methods?: Methods & Weapp.MethodOption<Instance>;
+    beforeCreate?: (this: Instance) => void;
+    created?: (this: Instance) => void;
+    mounted?: (this: Instance) => void;
+    destroyed?: (this: Instance) => void;
+}
+export {};

+ 0 - 0
node_modules/vant-weapp/dist/definitions/index.js


+ 111 - 0
node_modules/vant-weapp/dist/definitions/weapp.d.ts

@@ -0,0 +1,111 @@
+/// <reference types="miniprogram-api-typings" />
+export declare namespace Weapp {
+    interface FormField {
+        data: {
+            name: string;
+            value: any;
+        };
+    }
+    interface Target {
+        id: string;
+        tagName: string;
+        dataset: {
+            [key: string]: any;
+        };
+    }
+    interface Event {
+        /**
+         * 代表事件的类型。
+         */
+        type: string;
+        /**
+         * 页面打开到触发事件所经过的毫秒数。
+         */
+        timeStamp: number;
+        /**
+         * 触发事件的源组件。
+         */
+        target: Target;
+        /**
+         * 事件绑定的当前组件。
+         */
+        currentTarget: Target;
+        /**
+         * 额外的信息
+         */
+        detail: any;
+    }
+    interface Touch {
+        /**
+         * 触摸点的标识符
+         */
+        identifier: number;
+        /**
+         * 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴
+         */
+        pageX: number;
+        /**
+         * 距离文档左上角的距离,文档的左上角为原点 ,横向为X轴,纵向为Y轴
+         */
+        pageY: number;
+        /**
+         * 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴
+         */
+        clientX: number;
+        /**
+         * 距离页面可显示区域(屏幕除去导航条)左上角距离,横向为X轴,纵向为Y轴
+         */
+        clientY: number;
+    }
+    interface TouchEvent extends Event {
+        touches: Array<Touch>;
+        changedTouches: Array<Touch>;
+    }
+    /**
+     * relation定义,miniprogram-api-typings缺少this定义
+     */
+    interface RelationOption<Instance> {
+        /** 目标组件的相对关系 */
+        type: 'parent' | 'child' | 'ancestor' | 'descendant';
+        /** 关系生命周期函数,当关系被建立在页面节点树中时触发,触发时机在组件attached生命周期之后 */
+        linked?(this: Instance, target: WechatMiniprogram.Component.TrivialInstance): void;
+        /** 关系生命周期函数,当关系在页面节点树中发生改变时触发,触发时机在组件moved生命周期之后 */
+        linkChanged?(this: Instance, target: WechatMiniprogram.Component.TrivialInstance): void;
+        /** 关系生命周期函数,当关系脱离页面节点树时触发,触发时机在组件detached生命周期之后 */
+        unlinked?(this: Instance, target: WechatMiniprogram.Component.TrivialInstance): void;
+        /** 如果这一项被设置,则它表示关联的目标节点所应具有的behavior,所有拥有这一behavior的组件节点都会被关联 */
+        target?: string;
+    }
+    /**
+     * obverser定义,miniprogram-api-typings缺少this定义
+     */
+    type Observer<Instance, T> = (this: Instance, newVal: T, oldVal: T, changedPath: Array<string | number>) => void;
+    /**
+     * watch定义
+     */
+    interface WatchOption<Instance> {
+        [name: string]: string | Observer<Instance, any>;
+    }
+    /**
+     * methods定义,miniprogram-api-typings缺少this定义
+     */
+    interface MethodOption<Instance> {
+        [name: string]: (this: Instance, ...args: any[]) => any;
+    }
+    interface ComputedOption<Instance> {
+        [name: string]: (this: Instance) => any;
+    }
+    type PropertyType = StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | FunctionConstructor | null;
+    interface PropertyOption {
+        [name: string]: PropertyType | PropertyType[] | {
+            /** 属性类型 */
+            type: PropertyType | PropertyType[];
+            /** 属性初始值 */
+            value?: any;
+            /** 属性值被更改时的响应函数 */
+            observer?: string | Observer<WechatMiniprogram.Component.TrivialInstance, any>;
+            /** 属性的类型(可以指定多个) */
+            optionalTypes?: PropertyType[];
+        };
+    }
+}

+ 0 - 0
node_modules/vant-weapp/dist/definitions/weapp.js


+ 45 - 0
node_modules/vant-weapp/dist/dialog/dialog.d.ts

@@ -0,0 +1,45 @@
+/// <reference types="miniprogram-api-typings" />
+declare type DialogAction = 'confirm' | 'cancel';
+declare type DialogOptions = {
+    lang?: string;
+    show?: boolean;
+    title?: string;
+    zIndex?: number;
+    context?: WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;
+    message?: string;
+    overlay?: boolean;
+    selector?: string;
+    ariaLabel?: string;
+    className?: string;
+    customStyle?: string;
+    transition?: string;
+    asyncClose?: boolean;
+    businessId?: number;
+    sessionFrom?: string;
+    appParameter?: string;
+    messageAlign?: string;
+    sendMessageImg?: string;
+    showMessageCard?: boolean;
+    sendMessagePath?: string;
+    sendMessageTitle?: string;
+    confirmButtonText?: string;
+    cancelButtonText?: string;
+    showConfirmButton?: boolean;
+    showCancelButton?: boolean;
+    closeOnClickOverlay?: boolean;
+    confirmButtonOpenType?: string;
+};
+interface Dialog {
+    (options: DialogOptions): Promise<DialogAction>;
+    alert?: (options: DialogOptions) => Promise<DialogAction>;
+    confirm?: (options: DialogOptions) => Promise<DialogAction>;
+    close?: () => void;
+    stopLoading?: () => void;
+    install?: () => void;
+    setDefaultOptions?: (options: DialogOptions) => void;
+    resetDefaultOptions?: () => void;
+    defaultOptions?: DialogOptions;
+    currentOptions?: DialogOptions;
+}
+declare const Dialog: Dialog;
+export default Dialog;

+ 61 - 0
node_modules/vant-weapp/dist/dialog/dialog.js

@@ -0,0 +1,61 @@
+let queue = [];
+function getContext() {
+    const pages = getCurrentPages();
+    return pages[pages.length - 1];
+}
+const Dialog = options => {
+    options = Object.assign({}, Dialog.currentOptions, options);
+    return new Promise((resolve, reject) => {
+        const context = options.context || getContext();
+        const dialog = context.selectComponent(options.selector);
+        delete options.context;
+        delete options.selector;
+        if (dialog) {
+            dialog.set(Object.assign({ onCancel: reject, onConfirm: resolve }, options));
+            queue.push(dialog);
+        }
+        else {
+            console.warn('未找到 van-dialog 节点,请确认 selector 及 context 是否正确');
+        }
+    });
+};
+Dialog.defaultOptions = {
+    show: true,
+    title: '',
+    message: '',
+    zIndex: 100,
+    overlay: true,
+    className: '',
+    customStyle: '',
+    asyncClose: false,
+    messageAlign: '',
+    transition: 'scale',
+    selector: '#van-dialog',
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    showConfirmButton: true,
+    showCancelButton: false,
+    closeOnClickOverlay: false,
+    confirmButtonOpenType: ''
+};
+Dialog.alert = Dialog;
+Dialog.confirm = options => Dialog(Object.assign({ showCancelButton: true }, options));
+Dialog.close = () => {
+    queue.forEach(dialog => {
+        dialog.close();
+    });
+    queue = [];
+};
+Dialog.stopLoading = () => {
+    queue.forEach(dialog => {
+        dialog.stopLoading();
+    });
+};
+Dialog.setDefaultOptions = options => {
+    Object.assign(Dialog.currentOptions, options);
+};
+Dialog.resetDefaultOptions = () => {
+    Dialog.currentOptions = Object.assign({}, Dialog.defaultOptions);
+};
+Dialog.resetDefaultOptions();
+export default Dialog;

+ 1 - 0
node_modules/vant-weapp/dist/dialog/index.d.ts

@@ -0,0 +1 @@
+export {};

+ 98 - 0
node_modules/vant-weapp/dist/dialog/index.js

@@ -0,0 +1,98 @@
+import { VantComponent } from '../common/component';
+import { button } from '../mixins/button';
+import { openType } from '../mixins/open-type';
+VantComponent({
+    mixins: [button, openType],
+    props: {
+        show: Boolean,
+        title: String,
+        message: String,
+        useSlot: Boolean,
+        className: String,
+        customStyle: String,
+        asyncClose: Boolean,
+        messageAlign: String,
+        showCancelButton: Boolean,
+        closeOnClickOverlay: Boolean,
+        confirmButtonOpenType: String,
+        zIndex: {
+            type: Number,
+            value: 2000
+        },
+        confirmButtonText: {
+            type: String,
+            value: '确认'
+        },
+        cancelButtonText: {
+            type: String,
+            value: '取消'
+        },
+        showConfirmButton: {
+            type: Boolean,
+            value: true
+        },
+        overlay: {
+            type: Boolean,
+            value: true
+        },
+        transition: {
+            type: String,
+            value: 'scale'
+        }
+    },
+    data: {
+        loading: {
+            confirm: false,
+            cancel: false
+        }
+    },
+    watch: {
+        show(show) {
+            !show && this.stopLoading();
+        }
+    },
+    methods: {
+        onConfirm() {
+            this.handleAction('confirm');
+        },
+        onCancel() {
+            this.handleAction('cancel');
+        },
+        onClickOverlay() {
+            this.onClose('overlay');
+        },
+        handleAction(action) {
+            if (this.data.asyncClose) {
+                this.set({
+                    [`loading.${action}`]: true
+                });
+            }
+            this.onClose(action);
+        },
+        close() {
+            this.set({
+                show: false
+            });
+        },
+        stopLoading() {
+            this.set({
+                loading: {
+                    confirm: false,
+                    cancel: false
+                }
+            });
+        },
+        onClose(action) {
+            if (!this.data.asyncClose) {
+                this.close();
+            }
+            this.$emit('close', action);
+            // 把 dialog 实例传递出去,可以通过 stopLoading() 在外部关闭按钮的 loading
+            this.$emit(action, { dialog: this });
+            const callback = this.data[action === 'confirm' ? 'onConfirm' : 'onCancel'];
+            if (callback) {
+                callback(this);
+            }
+        }
+    }
+});

+ 7 - 0
node_modules/vant-weapp/dist/dialog/index.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-popup": "../popup/index",
+    "van-button": "../button/index"
+  }
+}

部分文件因为文件数量过多而无法显示