Quellcode durchsuchen

小程序:初始化项目

panyong vor 2 Jahren
Ursprung
Commit
1a35734b8a
100 geänderte Dateien mit 3891 neuen und 0 gelöschten Zeilen
  1. 9 0
      htmldev/wxMini/.editorconfig
  2. 31 0
      htmldev/wxMini/.eslintrc.js
  3. 0 0
      htmldev/wxMini/.gitkeep
  4. 4 0
      htmldev/wxMini/README.md
  5. 118 0
      htmldev/wxMini/api/common.js
  6. 159 0
      htmldev/wxMini/api/request.js
  7. 47 0
      htmldev/wxMini/app.js
  8. 44 0
      htmldev/wxMini/app.json
  9. 363 0
      htmldev/wxMini/app.wxss
  10. 38 0
      htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.js
  11. 6 0
      htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.json
  12. 60 0
      htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.wxml
  13. 111 0
      htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.wxss
  14. 165 0
      htmldev/wxMini/components/index-list/index.js
  15. 4 0
      htmldev/wxMini/components/index-list/index.json
  16. 43 0
      htmldev/wxMini/components/index-list/index.wxml
  17. 115 0
      htmldev/wxMini/components/index-list/index.wxss
  18. 57 0
      htmldev/wxMini/components/navigationBar/navigationBar.js
  19. 4 0
      htmldev/wxMini/components/navigationBar/navigationBar.json
  20. 25 0
      htmldev/wxMini/components/navigationBar/navigationBar.wxml
  21. 66 0
      htmldev/wxMini/components/navigationBar/navigationBar.wxss
  22. 133 0
      htmldev/wxMini/components/wxs/index.wxs
  23. BIN
      htmldev/wxMini/image/tabBar/home_0@2x.png
  24. BIN
      htmldev/wxMini/image/tabBar/home_1@2x.png
  25. BIN
      htmldev/wxMini/image/tabBar/mine_0@2x.png
  26. BIN
      htmldev/wxMini/image/tabBar/mine_1@2x.png
  27. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts
  28. 73 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.js
  29. 8 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.json
  30. 69 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.wxml
  31. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.wxss
  32. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.d.ts
  33. 232 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.js
  34. 6 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.json
  35. 20 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.wxml
  36. 8 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.wxs
  37. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.wxss
  38. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.d.ts
  39. 67 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.js
  40. 7 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.json
  41. 53 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.wxml
  42. 39 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.wxs
  43. 0 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.wxss
  44. 68 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/calendar.wxml
  45. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts
  46. 45 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.js
  47. 3 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.json
  48. 16 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml
  49. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss
  50. 6 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts
  51. 158 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.js
  52. 3 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.json
  53. 39 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml
  54. 71 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs
  55. 0 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss
  56. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.d.ts
  57. 360 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.js
  58. 10 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.json
  59. 25 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.wxml
  60. 38 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.wxs
  61. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.wxss
  62. 12 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/utils.d.ts
  63. 97 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/utils.js
  64. 25 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/utils.wxs
  65. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.d.ts
  66. 51 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.js
  67. 6 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.json
  68. 56 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.wxml
  69. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.wxss
  70. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.d.ts
  71. 13 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.js
  72. 3 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.json
  73. 11 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.wxml
  74. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.wxss
  75. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.d.ts
  76. 40 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.js
  77. 6 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.json
  78. 47 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.wxml
  79. 17 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.wxs
  80. 0 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.wxss
  81. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts
  82. 39 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.js
  83. 3 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.json
  84. 5 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml
  85. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss
  86. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.d.ts
  87. 79 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.js
  88. 6 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.json
  89. 31 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.wxml
  90. 20 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.wxs
  91. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.wxss
  92. 4 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/canvas.d.ts
  93. 47 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/canvas.js
  94. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.d.ts
  95. 203 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.js
  96. 3 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.json
  97. 9 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.wxml
  98. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.wxss
  99. 1 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/col/index.d.ts
  100. 11 0
      htmldev/wxMini/miniprogram_npm/@vant/weapp/col/index.js

+ 9 - 0
htmldev/wxMini/.editorconfig

@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true

+ 31 - 0
htmldev/wxMini/.eslintrc.js

@@ -0,0 +1,31 @@
+/*
+ * Eslint config file
+ * Documentation: https://eslint.org/docs/user-guide/configuring/
+ * Install the Eslint extension before using this feature.
+ */
+module.exports = {
+  env: {
+    es6: true,
+    browser: true,
+    node: true,
+  },
+  ecmaFeatures: {
+    modules: true,
+  },
+  parserOptions: {
+    ecmaVersion: 2018,
+    sourceType: 'module',
+  },
+  globals: {
+    wx: true,
+    App: true,
+    Page: true,
+    getCurrentPages: true,
+    getApp: true,
+    Component: true,
+    requirePlugin: true,
+    requireMiniProgram: true,
+  },
+  // extends: 'eslint:recommended',
+  rules: {},
+}

+ 0 - 0
htmldev/wxMini/.gitkeep


+ 4 - 0
htmldev/wxMini/README.md

@@ -0,0 +1,4 @@
+### 页面
+
+
+### TODO

+ 118 - 0
htmldev/wxMini/api/common.js

@@ -0,0 +1,118 @@
+const { request } = require('./request')
+/**
+ * 获取验证码
+ * @param obj
+ * @returns {Promise<unknown>}
+ */
+export const sendCode = (obj) => request({
+  url: '/api/send/code',
+  method: 'POST',
+  data: {
+    'phone': obj.phone, // 手机号码
+    'source_type': 2, // 来源(1客运端2客户端)
+    'type': obj.type // 1注册2登录3更换手机号
+  },
+  showLoading: false
+})
+
+/**
+ * 手机号登录
+ * @param obj
+ * @returns {Promise<*>}
+ */
+export const miniPhoneLogin = (obj) => request({
+  url: '/api/user/mini/phone/login',
+  method: 'POST',
+  data: {
+    'code': obj.wxCode, // 小程序授权code
+    'user_phone': obj.cellphone, // 手机号
+    'user_code': obj.code // 验证码
+  },
+  showLoading: false
+})
+
+/**
+ * 修改用户手机号
+ * @param obj
+ * @returns {Promise<unknown>}
+ */
+export const modifyUserPhone = (obj) => request({
+  url: '/api/user/modify/phone',
+  method: 'POST',
+  data: {
+    'user_phone': obj.cellphone, // 手机号
+    'user_code': obj.code // 验证码
+  },
+  showLoading: false
+})
+
+/**
+ * 校验手机验证码
+ * @param obj
+ * @returns {Promise | Promise<unknown>}
+ */
+export const postCheckSMS = (obj) => request({
+  url: '/api/check/code',
+  method: 'POST',
+  data: {
+    'user_phone': obj.phone,
+    'source_type': 2, // 来源(1客运端2客户端)
+    'user_code': obj.code //验证码
+  },
+  showLoading: false
+})
+
+/**
+ * 获取用户信息
+ * @returns {Promise<unknown>}
+ */
+export const getUserInfo = () => request({
+  url: '/api/user/info',
+  method: 'POST',
+  showLoading: false
+}, false)
+
+/**
+ * 更新用户信息
+ * @param obj
+ * @returns {Promise<unknown>}
+ */
+export const updateUserInfo = (obj) => request({
+  url: '/api/user/update/info',
+  method: 'POST',
+  data: {
+    // 'user_head_img_url': '', // 用户头像
+    // 'user_nickname': '', // 用户昵称
+    // 'user_sex': 1, // 性别(1男2女)
+    // 'user_birthday': '', // 用户生日
+    // 'user_address': '', // 用户地址
+    ...obj
+  },
+  showLoading: true
+})
+
+/**
+ * 用户退出登录接口
+ * @returns {Promise<unknown>}
+ */
+export const userLoginOut = () => request({
+  url: '/api/user/login/out',
+  method: 'POST',
+  showLoading: false
+})
+
+/**
+ * 逆地址解析
+ * @param lat
+ * @param lng
+ * @returns {Promise}
+ */
+export const postGeoCoder = (lat, lng) => request({
+  url: '/api/user/geo/coder',
+  method: 'POST',
+  data: {
+    lat: lat,
+    lng: lng
+  },
+  showLoading: false
+})

+ 159 - 0
htmldev/wxMini/api/request.js

@@ -0,0 +1,159 @@
+const { envDomain } = require('../utils/config')
+const sessionStorageKey = 'baoGeDaBaReqSessionId'
+const req = {
+  baseURL: envDomain.apiDomain,
+  header: {
+    'content-type': 'application/json'
+  }
+}
+let loading = 0
+// 当前正在请求的数量
+let needLoadingRequestCount = 0
+
+// 显示loading
+function _showLoading() {
+  if (needLoadingRequestCount === 0 && !loading) {
+    wx.showToast({
+      title: '拼命获取中',
+      icon: 'loading',
+      duration: 86400000 // 设置1小时:类似一直显示
+    })
+    loading = 1
+  }
+  needLoadingRequestCount++
+}
+
+// 隐藏loading
+function _hideLoading() {
+  needLoadingRequestCount--
+  needLoadingRequestCount = Math.max(needLoadingRequestCount, 0) // 做个保护
+  if (needLoadingRequestCount === 0) {
+    // 关闭loading
+    wx.hideToast()
+    loading = 0
+  }
+}
+
+/**
+ * 登录
+ */
+function login() {
+  return new Promise((resolve, reject) => {
+    // 微信登录
+    wx.login({
+      success(res) {
+        if (res.code) {
+          resolve(res.code)
+        } else {
+          reject(res)
+        }
+      },
+      fail: reject
+    })
+  })
+}
+
+/**
+ * 判断请求状态是否成功
+ * @param {number} status
+ */
+function isHttpSuccess(status) {
+  return (status >= 200 && status < 300) || status === 304
+}
+
+/**
+ * wx.request二次封装
+ * @param options
+ * @param keepLogin
+ * @returns {Promise<unknown>}
+ */
+function request(options = {}, keepLogin = true) {
+  const header = Object.assign({ 'access-token': wx.getStorageSync(sessionStorageKey) }, req.header,
+    options.header)
+  const url = /^http/.test(options.url) ? options.url : (req.baseURL + options.url)
+  // 判断当前请求是否设置了不显示Loading
+  if (options.showLoading) {
+    _showLoading()
+  }
+  return new Promise((resolve, reject) => {
+    wx.request(Object.assign({}, options, {
+        url,
+        header,
+        success(r) {
+          const isSuccess = isHttpSuccess(r.statusCode)
+          const err = {
+            msg: `服务器好像出了点小问题,请与客服联系~(错误代码:${r.statusCode})`,
+            detail: r
+          }
+          const pages = getCurrentPages()
+
+          if (isSuccess) {
+            if (r.data.code === 403) {
+              wx.removeStorage({
+                key: sessionStorageKey
+              })
+            }
+            if (r.data.code === 403 && keepLogin) {
+              const { route } = Array.isArray(pages) && pages.length ? pages[pages.length - 1] : {}
+              if (!/^pages\/login\/login/.test(route)) {
+                wx.navigateTo({
+                  url: `/pages/login/login`
+                })
+              }
+              reject(err)
+              return
+            }
+            resolve(r.data)
+            return
+          }
+          reject(err)
+        },
+        fail(err) {
+          reject(err)
+        },
+        complete() {
+          if (loading) {
+            _hideLoading()
+          }
+        }
+      }
+    ))
+  })
+}
+
+function handleUpload(filePath) {
+  return new Promise((resolve, reject) => {
+    wx.uploadFile({
+      url: `${req.baseURL}/api/upload/img`,
+      filePath: filePath,
+      name: 'file',
+      formData: {
+        'user': 'test'
+      },
+      success(r) {
+        const isSuccess = isHttpSuccess(r.statusCode)
+        if (isSuccess) {
+          const temp = JSON.parse(r.data)
+          if (temp.status && Object.prototype.toString.call(temp.data) === '[object Object]' &&
+            temp.data.path) {
+            resolve(temp.data.path)
+          } else {
+            reject(r)
+          }
+        } else {
+          reject(r)
+        }
+      },
+      fail(err) {
+        reject(err)
+      }
+    })
+  })
+}
+
+module.exports = {
+  request,
+  handleUpload,
+  login,
+  sessionStorageKey
+}

+ 47 - 0
htmldev/wxMini/app.js

@@ -0,0 +1,47 @@
+const { getUserInfo } = require('./api/common')
+const { isMobile } = require('./utils/validate')
+const { checkUpdateVersion } = require('./utils/util')
+
+App({
+  onLaunch () {
+    const that = this
+    // 获取系统信息
+    const systemInfo = wx.getSystemInfoSync()
+    // 胶囊按钮位置信息
+    const menuButtonInfo = wx.getMenuButtonBoundingClientRect()
+    // 导航栏高度 = 状态栏到胶囊的间距(胶囊距上距离-状态栏高度) * 2 + 胶囊高度 + 状态栏高度
+    that.globalData.navBarHeight = (menuButtonInfo.top - systemInfo.statusBarHeight) * 2 +
+      menuButtonInfo.height + systemInfo.statusBarHeight
+    that.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right
+    that.globalData.menuBottom = menuButtonInfo.top - systemInfo.statusBarHeight
+    that.globalData.menuHeight = menuButtonInfo.height
+    that.fetchUserData()
+    checkUpdateVersion()
+  },
+  globalData: {
+    wxMiniversion: 'v0.0.0',
+    userInfo: {},
+    navBarHeight: 0, // 导航栏高度
+    menuRight: 0, // 胶囊距右方间距(方保持左、右间距一致)
+    menuBottom: 0, // 胶囊距底部间距(保持底部间距一致)
+    menuHeight: 0 // 胶囊高度(自定义内容可与胶囊高度保证一致)
+  },
+  async fetchUserData () {
+    try {
+      const { status, data } = await getUserInfo()
+      if (status && Object.prototype.toString.call(data) === '[object Object]' && isMobile(data.user_phone)) {
+        const temp = {
+          ...data
+        }
+        // 设置默认昵称
+        if (!temp.user_nickname) {
+          temp.user_nickname = 'bbs' + temp.user_phone.replace(/(\d{7})(.*)/, '$2')
+        }
+        if (temp.user_address && temp.user_address.indexOf('/') > -1) {
+          temp.user_address = temp.user_address.split('/')
+        }
+        this.globalData.userInfo = temp
+      }
+    } catch (e) {}
+  }
+})

+ 44 - 0
htmldev/wxMini/app.json

@@ -0,0 +1,44 @@
+{
+  "pages": [
+    "pages/home/home",
+    "pages/login/login",
+    "pages/mine/mine"
+  ],
+  "permission": {
+    "scope.userLocation": {
+      "desc": "你的位置信息将用于为了确认您所选的出发地、目的地地理位置"
+    }
+  },
+  "requiredPrivateInfos": [
+    "chooseLocation"
+  ],
+  "window": {
+    "backgroundTextStyle": "light",
+    "navigationBarBackgroundColor": "#fff",
+    "navigationBarTitleText": "始宁农业",
+    "navigationBarTextStyle": "black"
+  },
+  "sitemapLocation": "sitemap.json",
+  "useExtendedLib": {
+    "weui": true
+  },
+  "tabBar": {
+    "color": "#999999",
+    "selectedColor": "#333333",
+    "backgroundColor": "#FFFFFF",
+    "list": [
+      {
+        "pagePath": "pages/home/home",
+        "text": "首页",
+        "iconPath": "image/tabBar/home_0@2x.png",
+        "selectedIconPath": "image/tabBar/home_1@2x.png"
+      },
+      {
+        "pagePath": "pages/mine/mine",
+        "text": "我的",
+        "iconPath": "image/tabBar/mine_0@2x.png",
+        "selectedIconPath": "image/tabBar/mine_1@2x.png"
+      }
+    ]
+  }
+}

+ 363 - 0
htmldev/wxMini/app.wxss

@@ -0,0 +1,363 @@
+view,
+text,
+image,
+form,
+button,
+input,
+textarea {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+  font-family: PingFang SC, HYQiHei-FES, "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
+  font-weight: 400;
+  line-height: 1.42857143;
+  -webkit-tap-highlight-color: transparent;
+  -webkit-text-size-adjust: 100%;
+}
+
+button {
+  border: none;
+  outline: none;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+input {
+  outline: none;
+  border: none;
+  -webkit-appearance: none
+}
+
+button::after {
+  border: none;
+}
+
+.customer-picker {
+  height: 480rpx;
+  padding: 0 40rpx;
+}
+
+.customer-picker .customer-picker_indicator {
+  height: 96rpx;
+}
+
+.customer-picker .picker-list {
+  line-height: 96rpx;
+  text-align: center;
+  font-size: 32rpx;
+  color: rgba(0, 0, 0, 1);
+}
+
+.customer-picker .customer-picker_mask {
+  color: rgba(51, 51, 51, 0.4);
+}
+
+button.customer-picker_footer[type='primary'] {
+  width: 686rpx !important;
+  height: 104rpx;
+  border-radius: 24rpx;
+  margin: 40rpx auto !important;
+  padding: 0 !important;
+  background-color: rgba(74, 106, 150, 1);
+  color: rgba(255, 255, 255, 1);
+  font-size: 32rpx;
+  font-weight: 500;
+}
+
+button.customer-picker_footer[disabled] {
+  color: #FFF;
+  background-color: #DDDDDD;
+}
+
+.customer-van-popup .close-icon {
+  position: absolute;
+  z-index: 1;
+  padding: 40rpx 24rpx;
+}
+
+.customer-van-popup .close-icon .image {
+  display: block;
+  width: 48rpx;
+  height: 48rpx;
+}
+
+.customer-van-popup .title {
+  height: 122rpx;
+  padding-top: 48rpx;
+  color: rgba(0, 0, 0, 1);
+  font-size: 32rpx;
+  font-weight: 500;
+  text-align: center;
+}
+
+.agreement-wrap {
+  display: flex;
+  align-items: center;
+  margin-top: 57rpx;
+}
+
+.agreement-wrap .text-wrap {
+  display: flex;
+  flex-flow: row wrap;
+}
+
+.agreement-wrap .text-wrap text {
+  font-size: 24rpx;
+  line-height: 30rpx;
+}
+
+.customer-van-model {
+  width: 560rpx;
+  border-radius: 24rpx;
+  overflow: hidden;
+}
+
+.customer-van-model_body {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding: 48rpx 0;
+}
+
+.customer-van-model_body .content {
+  width: 480rpx;
+  color: #333333;
+  font-size: 32rpx;
+  line-height: 48rpx;
+  text-align: center;
+  word-break: break-all;
+  word-wrap: break-word;
+}
+
+.customer-van-model_body .content.cancel-order {
+  display: flex;
+  flex-flow: row wrap;
+  justify-content: center;
+}
+
+.customer-van-model_body .content.cancel-order text {
+  color: #333333;
+  font-size: 32rpx;
+  line-height: 48rpx;
+}
+
+.customer-van-model_footer {
+  display: flex;
+  align-items: center;
+  border-top: 1rpx solid #EEEEEE;
+}
+
+.customer-van-model_footer button[type="default"].customer-van-model_cancel {
+  position: relative;
+  left: 0;
+  top: 0;
+  width: 50%;
+  height: 104rpx;
+  color: #666666;
+  font-size: 32rpx;
+  line-height: 48rpx;
+  background: transparent;
+
+}
+
+.customer-van-model_footer button[type="default"].customer-van-model_cancel:after {
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  content: '';
+  border-right: 1rpx solid #EEEEEE;
+}
+
+.customer-van-model_footer button[type="primary"].customer-van-model_confirm {
+  width: 50%;
+  height: 104rpx;
+  color: #4A6A96;
+  font-size: 32rpx;
+  font-weight: 500;
+  line-height: 48rpx;
+  background: transparent;
+}
+
+.customer-van-model_footer button[type="warn"].customer-van-model_confirm {
+  width: 50%;
+  height: 104rpx;
+  color: #DC4F3F;
+  font-size: 32rpx;
+  font-weight: 500;
+  line-height: 48rpx;
+  background: transparent;
+}
+
+.list-bitmap {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding-top: 320rpx;
+}
+
+.list-bitmap image {
+  width: 400rpx;
+  height: 400rpx;
+}
+
+
+.list-bitmap text {
+  margin-top: 8rpx;
+  color: rgba(102, 102, 102, 1);
+  font-size: 28rpx;
+  line-height: 34rpx;
+}
+
+view.footer-fixed-bottom {
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 10;
+  background: rgba(255, 255, 255, 1);
+  box-shadow: 0 -16px 15px 0 rgba(237, 237, 237, 0.25);
+}
+
+view.footer-fixed-bottom > view {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 24rpx 0 24rpx 0;
+}
+
+view.footer-fixed-bottom:after {
+  display: block;
+  content: '';
+  width: 100%;
+  padding-bottom: constant(safe-area-inset-bottom);
+  padding-bottom: env(safe-area-inset-bottom);
+}
+
+view.footer-fixed-bottom button {
+  width: 690rpx;
+  height: 104rpx;
+  border-radius: 24rpx;
+  font-size: 32rpx;
+  font-weight: 500;
+  color: rgba(255, 255, 255, 1);
+}
+
+view.footer-fixed-bottom button[type='primary'] {
+  background-color: #4A6A96;
+}
+
+view.footer-fixed-bottom button[type='default'] {
+  background-color: #DDDDDD;
+}
+
+.van-picker-column__item {
+  line-height: inherit;
+}
+
+.customer-van-popup-diff-price-body {
+  width: 690rpx;
+  margin: 0 auto;
+}
+
+.customer-van-popup-diff-price .alert {
+  width: 100%;
+  padding: 16rpx 0;
+  border-radius: 16rpx;
+  background: rgba(254, 248, 236, 1);
+}
+
+.customer-van-popup-diff-price .alert view {
+  width: 630rpx;
+  margin: 0 auto;
+  color: rgba(198, 150, 76, 1);
+  font-size: 26rpx;
+  line-height: 36rpx;
+}
+
+.customer-van-popup-diff-price .amount {
+  display: flex;
+  justify-content: space-between;
+  align-items: flex-start;
+  padding-bottom: 48rpx;
+  margin-top: 48rpx;
+  border-bottom: 1px solid #EEEEEE;
+}
+
+.customer-van-popup-diff-price .amount .label view:nth-of-type(1) {
+  color: rgba(51, 51, 51, 1);
+  font-size: 30rpx;
+  line-height: 36rpx;
+}
+
+.customer-van-popup-diff-price .amount .label view:nth-of-type(2) {
+  margin-top: 8rpx;
+  color: rgba(153, 153, 153, 1);
+  font-size: 24rpx;
+  line-height: 30rpx;
+  text-align: center;
+}
+
+.customer-van-popup-diff-price .amount .value {
+  color: rgba(253, 102, 0, 1);
+  font-size: 30rpx;
+  line-height: 36rpx;
+}
+
+.customer-van-popup-diff-price .diff-price {
+  display: flex;
+  align-items: flex-end;
+  justify-content: center;
+  margin-top: 48rpx;
+  color: rgba(0, 0, 0, 1);
+}
+
+.customer-van-popup-diff-price .diff-price .label {
+  padding-bottom: 12rpx;
+  margin-right: 8rpx;
+  font-size: 48rpx;
+  font-weight: 500;
+}
+
+.customer-van-popup-diff-price .diff-price .value {
+  font-size: 80rpx;
+  font-weight: 500;
+}
+
+.customer-van-popup-diff-price .diff-price-text {
+  color: rgba(0, 0, 0, 1);
+  font-size: 26rpx;
+  text-align: center;
+}
+
+.customer-van-popup-diff-price .wechat {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding-top: 72rpx;
+  padding-bottom: 32rpx;
+}
+
+.customer-van-popup-diff-price .wechat .name {
+  display: flex;
+  align-items: center;
+}
+
+.customer-van-popup-diff-price .wechat .logo {
+  width: 48rpx;
+  height: 48rpx;
+}
+
+.customer-van-popup-diff-price .wechat .logo + text {
+  margin-left: 16rpx;
+  color: rgba(51, 51, 51, 1);
+  font-size: 32rpx;
+  font-weight: Medium;
+  line-height: 40rpx;
+}
+
+.customer-van-popup-diff-price .wechat .checked {
+  width: 32rpx;
+  height: 32rpx;
+}

+ 38 - 0
htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.js

@@ -0,0 +1,38 @@
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    booWay: {
+      type: Boolean,
+      value: false
+    },
+    start_point: {
+      type: Object,
+      value: {}
+    },
+    order_pass_location: {
+      type: Array,
+      value: []
+    },
+    end_point: {
+      type: Object,
+      value: {}
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {},
+  pageLifetimes: {},
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    hideWay() {
+      this.triggerEvent('hideWay')
+    }
+  }
+})

+ 6 - 0
htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-popup": "@vant/weapp/popup/index"
+  }
+}

+ 60 - 0
htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.wxml

@@ -0,0 +1,60 @@
+<!-- 路线详情 -->
+<van-popup
+  custom-class="customer-van-popup customer-van-popup_way"
+  show="{{ booWay }}"
+  round
+  position="bottom"
+  bind:close="hideWay">
+  <view style="right:0;top:0;"
+        class="close-icon"
+        bind:tap="hideWay">
+    <image class="image" src="{{tools.imgFilter('/common/Popup_bus_icon_close@2x.png')}}"></image>
+  </view>
+  <view class="title">路线详情</view>
+  <!-- min-height-420 max-height-668 -->
+  <view
+    class="way-list {{order_pass_location && order_pass_location.length > 0 ? 'max-height-668' : 'min-height-420'}}">
+    <scroll-view
+      class="scroll-wrap"
+      scroll-y>
+      <view class="list">
+        <view class="address">
+          <text class="label">起</text>
+          <view class="wrap">
+            <text class="text">{{start_point.name}}</text>
+            <text class="text">{{start_point.address_name}}</text>
+          </view>
+        </view>
+        <image class="icon"
+               src="{{tools.imgFilter('/createOrder/Popup_route_icon_direction@2x.png')}}"></image>
+      </view>
+      <block wx:if="{{order_pass_location && order_pass_location.length > 0}}">
+        <view class="list"
+              wx:for="{{order_pass_location}}"
+              wx:key="index">
+          <view class="address">
+            <text style="background: #CCCCCC;" class="label">经</text>
+            <view class="wrap">
+              <text class="text">{{item.name}}</text>
+              <text class="text">{{item.address_name}}</text>
+            </view>
+          </view>
+          <image class="icon"
+                 src="{{tools.imgFilter('/createOrder/Popup_route_icon_direction@2x.png')}}"></image>
+        </view>
+      </block>
+      <view class="list">
+        <view class="address">
+          <text class="label" style="background: #FD6600;">终</text>
+          <view class="wrap">
+            <text class="text">{{end_point.name}}</text>
+            <text class="text">{{end_point.address_name}}</text>
+          </view>
+        </view>
+      </view>
+    </scroll-view>
+    <view class="mask"
+          hidden="{{order_pass_location.length <= 2}}"></view>
+  </view>
+</van-popup>
+<wxs src="../wxs/index.wxs" module="tools"></wxs>

+ 111 - 0
htmldev/wxMini/components/customerVanPopupWay/customerVanPopupWay.wxss

@@ -0,0 +1,111 @@
+.customer-van-popup .close-icon {
+  position: absolute;
+  z-index: 1;
+  padding: 40rpx 24rpx;
+}
+
+.customer-van-popup .close-icon .image {
+  display: block;
+  width: 48rpx;
+  height: 48rpx;
+}
+
+.customer-van-popup .title {
+  height: 122rpx;
+  padding-top: 48rpx;
+  color: rgba(0, 0, 0, 1);
+  font-size: 32rpx;
+  font-weight: 500;
+  text-align: center;
+}
+
+.customer-van-popup_way .way-list {
+  position: relative;
+  left: 0;
+  top: 0;
+  padding: 22rpx 0 54rpx;
+}
+
+.customer-van-popup_way .mask {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 1;
+  height: 137rpx;
+  background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%);
+}
+
+.customer-van-popup_way .way-list.min-height-420 {
+  height: 296rpx;
+}
+
+.customer-van-popup_way .way-list.max-height-668 {
+  height: 582rpx;
+}
+
+.customer-van-popup_way .scroll-wrap {
+  position: absolute;
+  left: 0;
+  top: 22rpx;
+  right: 0;
+  bottom: 54rpx;
+}
+
+.customer-van-popup_way .list {
+  padding-left: 32rpx;
+}
+
+.customer-van-popup_way .address {
+  display: flex;
+  align-items: center;
+  padding: 12rpx 0;
+}
+
+.customer-van-popup_way .label {
+  width: 32rpx;
+  height: 32rpx;
+  border-radius: 50%;
+  background: rgba(51, 51, 51, 1);
+  color: rgba(255, 255, 255, 1);
+  font-size: 20rpx;
+  font-weight: 500;
+  line-height: 32rpx;
+  text-align: center;
+}
+
+.customer-van-popup_way .wrap {
+  display: flex;
+  flex-direction: column;
+  width: 590rpx;
+  margin-left: 32rpx;
+}
+
+.customer-van-popup_way .wrap .text {
+  width: 100%;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.customer-van-popup_way .wrap .text:nth-of-type(1) {
+  color: rgba(0, 0, 0, 1);
+  font-size: 32rpx;
+  font-weight: 500;
+  line-height: 40rpx;
+}
+
+.customer-van-popup_way .wrap .text:nth-of-type(2) {
+  margin-top: 8rpx;
+  color: rgba(138, 149, 176, 1);
+  font-size: 24rpx;
+  font-size: 26rpx;
+  line-height: 32rpx;
+}
+
+.customer-van-popup_way .icon {
+  display: block;
+  width: 28rpx;
+  height: 28rpx;
+  margin-left: 2rpx;
+}

+ 165 - 0
htmldev/wxMini/components/index-list/index.js

@@ -0,0 +1,165 @@
+const throttle = function (func, wait, options) {
+    let context
+    let args
+    let result
+    let timeout = null
+    // 上次执行时间点
+    let previous = 0
+    if (!options) options = {}
+    // 延迟执行函数
+    const later = function () {
+        // 若设定了开始边界不执行选项,上次执行时间始终为0
+        previous = options.leading === false ? 0 : Date.now()
+        timeout = null
+        result = func.apply(context, args)
+        if (!timeout) context = args = null
+    }
+    return function () {
+        const now = Date.now()
+        // 首次执行时,如果设定了开始边界不执行选项,将上次执行时间设定为当前时间。
+        if (!previous && options.leading === false) previous = now
+        // 延迟执行时间间隔
+        const remaining = wait - (now - previous)
+        context = this
+        args = arguments
+        // 延迟时间间隔remaining小于等于0,表示上次执行至此所间隔时间已经超过一个时间窗口
+        // remaining大于时间窗口wait,表示客户端系统时间被调整过
+        if (remaining <= 0 || remaining > wait) {
+            clearTimeout(timeout)
+            timeout = null
+            previous = now
+            result = func.apply(context, args)
+            if (!timeout) context = args = null
+            // 如果延迟执行不存在,且没有设定结尾边界不执行选项
+        } else if (!timeout && options.trailing !== false) {
+            timeout = setTimeout(later, remaining)
+        }
+        return result
+    }
+}
+
+Component({
+    options: {
+        addGlobalClass: true,
+        pureDataPattern: /^_/ // 指定所有 _ 开头的数据字段为纯数据字段
+    },
+    properties: {
+        list: {
+            type: Array,
+            value: [],
+            observer: function (newVal) {
+                if (newVal.length === 0) return
+                const data = this.data
+                const alphabet = data.list.map(item => item.alpha)
+                this.setData({
+                    alphabet,
+                    current: alphabet[0]
+                }, () => {
+                    this.computedSize()
+                })
+            }
+
+        },
+        vibrated: {
+            type: Boolean,
+            value: true
+        }
+
+    },
+    data: {
+        windowHeight: 612,
+        current: 'A',
+        intoView: '',
+        touching: false,
+        alphabet: [],
+        _tops: [],
+        _anchorItemH: 0,
+        _anchorItemW: 0,
+        _anchorTop: 0,
+        _listUpperBound: 0
+    },
+    lifetimes: {
+        created() {
+
+        },
+        attached() {
+            this.__scrollTo = throttle(this._scrollTo, 100, {})
+            this.__onScroll = throttle(this._onScroll, 100, {})
+            const { windowHeight } = wx.getSystemInfoSync()
+            this.setData({ windowHeight })
+        }
+    },
+    methods: {
+        handleSelectAlpha(current) {
+            this.setData({ current, intoView: current })
+        },
+        choose(e) {
+            const item = e.target.dataset.item
+            this.triggerEvent('choose', { item })
+        },
+        scrollTo(e) {
+            this.__scrollTo(e)
+        },
+
+        _scrollTo(e) {
+            const data = this.data
+            const clientY = e.changedTouches[0].clientY
+            const index = Math.floor((clientY - data._anchorTop) / data._anchorItemH)
+            const current = data.alphabet[index]
+
+            this.setData({ current, intoView: current, touching: true })
+            // 振动效果
+            if (data.vibrated) wx.vibrateShort()
+        },
+
+        computedSize() {
+            const data = this.data
+            // 计算列表每个区块的高度等信息
+            const query = this.createSelectorQuery()
+            query.selectAll('.index_list_item').boundingClientRect(rects => {
+                const result = rects
+                data._tops = result.map(item => item.top)
+            }).exec()
+            // 计算右侧字母栏小区块的高度等信息
+            query.select('.anchor-list').boundingClientRect(rect => {
+                data._anchorItemH = rect.height / data.alphabet.length
+                data._anchorItemW = rect.width
+                data._anchorTop = rect.top
+            }).exec()
+            // 计算滚动区域的上边界
+            query.select('.page-select-index').boundingClientRect(rect => {
+                data._listUpperBound = rect.top
+            })
+        },
+
+        // throttle 的延迟
+        removeTouching() {
+            setTimeout(() => {
+                this.setData({ touching: false })
+            }, 150)
+        },
+
+        onScroll(e) {
+            this.__onScroll(e)
+        },
+
+        _onScroll(e) {
+            const data = this.data
+            const { _tops, alphabet } = data
+            const scrollTop = e.detail.scrollTop
+            let current = ''
+            if (scrollTop < _tops[0]) {
+                current = alphabet[0]
+            } else {
+                for (let i = 0, len = _tops.length; i < len - 1; i++) {
+                    if (scrollTop >= _tops[i] && scrollTop < _tops[i + 1]) {
+                        current = alphabet[i]
+                    }
+                }
+            }
+
+            if (!current) current = alphabet[alphabet.length - 1]
+            this.setData({ current })
+        }
+    }
+})

+ 4 - 0
htmldev/wxMini/components/index-list/index.json

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

+ 43 - 0
htmldev/wxMini/components/index-list/index.wxml

@@ -0,0 +1,43 @@
+<scroll-view class="page page-select-index"
+             style="height: {{windowHeight}}px;"
+             enable-back-to-top
+             scroll-into-view="{{intoView}}"
+             scroll-y
+             bindscroll="onScroll">
+    <view>
+        <slot></slot>
+    </view>
+    <view class="index_list_item"
+          wx:for="{{list}}"
+          wx:key="alpha"
+          id="{{item.alpha}}">
+        <view class="index-group__title">{{item.alpha}}</view>
+        <view class="index-group__content">
+            <view class="index-group__list">
+                <block wx:for="{{item.subItems}}" wx:for-item="subItem" wx:key="name">
+                    <view class="index-group__item thin-border-bottom"
+                          hover-class="bg-highlight"
+                          data-item="{{subItem}}"
+                          bindtap="choose">{{subItem.name}}
+                    </view>
+                </block>
+            </view>
+        </view>
+    </view>
+</scroll-view>
+<view class="anchor-bar__wrp wx-flex"
+      catchtouchstart='scrollTo'
+      catchtouchmove='scrollTo'
+      catchtouchend='removeTouching'>
+    <view class="anchor-bar wx-flex__item">
+        <view class="anchor-list">
+            <block wx:for="{{alphabet}}" wx:key="*this" wx:for-item="alpha">
+                <view class="anchor-item {{current == alpha ? ( touching ? 'selected tapped' : 'selected' ): ''}}"
+                      data-alpha="{{alpha}}">
+                    <view class="anchor-item__inner">{{alpha}}</view>
+                    <view class="anchor-item__pop">{{alpha}}</view>
+                </view>
+            </block>
+        </view>
+    </view>
+</view>

+ 115 - 0
htmldev/wxMini/components/index-list/index.wxss

@@ -0,0 +1,115 @@
+.wx-flex {
+    display: flex;
+    align-items: center;
+}
+
+.wx-flex__item {
+    flex: 1;
+}
+
+.thin-border-bottom {
+    position: relative;
+}
+
+.thin-border-bottom:after {
+    content: "";
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    right: 0;
+    height: 1px;
+    border-bottom: 1px solid #EAEAEA;
+    color: #e5e5e5;
+    -webkit-transform-origin: 0 0;
+    transform-origin: 0 0;
+    -webkit-transform: scaleY(0.5);
+    transform: scaleY(0.5);
+    z-index: 2;
+}
+
+.index-group__title {
+    padding: 32rpx 30rpx;
+    color: rgba(0, 0, 0, 1);
+    font-size: 28rpx;
+    font-weight: 500;
+}
+
+.index-group__content {
+    font-size: 0;
+}
+
+.index-group__item {
+    padding: 28rpx 0rpx 28rpx 40rpx;
+    color: rgba(51, 51, 51, 1);
+    font-size: 32rpx;
+    line-height: 40rpx;
+}
+
+.index-group__item.thin-border-bottom:after {
+    left: 30rpx;
+    right: 30rpx;
+}
+
+.anchor-bar__wrp {
+    position: fixed;
+    top: 0;
+    bottom: 0;
+    right: 0;
+    width: 60rpx;
+    z-index: 99;
+}
+
+.anchor-item {
+    font-size: 0;
+    text-align: center;
+    position: relative;
+}
+
+.anchor-item__inner {
+    line-height: 28rpx;
+    height: 28rpx;
+    width: 28rpx;
+    border-radius: 50%;
+    display: inline-block;
+    font-size: 20rpx;
+    margin: 6rpx 0;
+    font-weight: 500;
+    color: rgba(153, 153, 153, 1);
+}
+
+.tapped .anchor-item__pop {
+    display: block;
+}
+
+.anchor-item__pop {
+    position: absolute;
+    font-size: 64rpx;
+    width: 100rpx;
+    height: 100rpx;
+    line-height: 100rpx;
+    color: #fff;
+    background-color: #C9C9C9;
+    border-radius: 50%;
+    right: 80rpx;
+    top: 50%;
+    transform: translateY(-50%);
+    display: none;
+}
+
+.anchor-item__pop:after {
+    content: "";
+    display: block;
+    position: absolute;
+    width: 0;
+    height: 0;
+    left: 80rpx;
+    border: 40rpx solid;
+    border-color: transparent transparent transparent #C9C9C9;
+    top: 50%;
+    transform: translateY(-50%);
+}
+
+.anchor-item.selected .anchor-item__inner {
+    color: #fff;
+    background-color: #1aad19;
+}

+ 57 - 0
htmldev/wxMini/components/navigationBar/navigationBar.js

@@ -0,0 +1,57 @@
+const app = getApp()
+Component({
+  options: {
+    styleIsolation: 'apply-shared'
+  },
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    navBarConfig: {
+      type: Object,
+      value: {
+        booFixed: false,
+        backgroundColor: 'transparent',
+        icon: 'back',
+        iconPath: '',
+        title: '',
+        label: ''
+      },
+      observer: function (newVal, oldVal) {
+      }
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+    navBarHeight: app.globalData.navBarHeight,
+    menuRight: app.globalData.menuRight,
+    menuBottom: app.globalData.menuBottom,
+    menuHeight: app.globalData.menuHeight,
+    historyLength: 1
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    navBarEvent() {
+      if (this.data.historyLength <= 1 && this.data.navBarConfig.icon === 'back') {
+        wx.switchTab({
+          url: '/pages/home/home'
+        })
+        return
+      }
+      this.triggerEvent('navBarEvent', { name: 'ppp' })
+    }
+  },
+  pageLifetimes: {
+    show: function () {
+      this.setData({
+        historyLength: getCurrentPages().length
+      })
+    }
+  }
+})

+ 4 - 0
htmldev/wxMini/components/navigationBar/navigationBar.json

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

+ 25 - 0
htmldev/wxMini/components/navigationBar/navigationBar.wxml

@@ -0,0 +1,25 @@
+<!-- 参考:https://zhuanlan.zhihu.com/p/117244248 -->
+<view class="nav-bar"
+      style="position:{{navBarConfig.booFixed ? 'fixed' : 'relative'}}; height:{{navBarHeight}}px; background-color: {{navBarConfig.backgroundColor || 'transparent'}};">
+  <view class="nav-bar-wrap"
+        style="height:{{menuHeight}}px; min-height:{{menuHeight}}px; line-height:{{menuHeight}}px;left:{{menuRight}}px; bottom:{{menuBottom}}px;"
+        bind:tap="navBarEvent">
+    <view class="jump-home"
+          wx:if="{{historyLength <=1 && navBarConfig.icon === 'back'}}">
+      <image class="home-icon" src="{{tools.imgFilter('/common/nav_icon_home_white@2x.png')}}"></image>
+      <text class="home-text">首页</text>
+    </view>
+    <block wx:else>
+      <image class="icon {{navBarConfig.icon}}"
+             src="{{tools.imgFilter(navBarConfig.iconPath)}}"
+             wx:if="{{navBarConfig.icon}}"></image>
+      <text class="label"
+            wx:if="{{navBarConfig.label}}">{{navBarConfig.label}}</text>
+    </block>
+  </view>
+  <view class="title"
+        style="height:{{menuHeight}}px; min-height:{{menuHeight}}px; line-height:{{menuHeight}}px;left:{{menuRight}}px;right:{{menuRight}}px;bottom:{{menuBottom}}px;"
+        wx:if="{{navBarConfig.title}}">{{navBarConfig.title}}
+  </view>
+</view>
+<wxs src="../wxs/index.wxs" module="tools"></wxs>

+ 66 - 0
htmldev/wxMini/components/navigationBar/navigationBar.wxss

@@ -0,0 +1,66 @@
+.nav-bar {
+  left: 0;
+  top: 0;
+  z-index: 99;
+  width: 100%;
+}
+
+.nav-bar .nav-bar-wrap {
+  position: absolute;
+  z-index: 2;
+  display: flex;
+  align-items: center;
+}
+
+.nav-bar .nav-bar-wrap .icon {
+  width: 40rpx;
+  height: 40rpx;
+}
+
+.nav-bar .nav-bar-wrap .icon.home {
+  width: 154rpx;
+  height: 44rpx;
+}
+
+.nav-bar .nav-bar-wrap .icon.back {
+  width: 48rpx;
+  height: 48rpx;
+}
+
+.nav-bar .nav-bar-wrap .label {
+  margin-left: 8rpx;
+  color: #FFF;
+  font-size: 32rpx;
+}
+
+.nav-bar .nav-bar-wrap .jump-home {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 140rpx;
+  height: 64rpx;
+  border-radius: 32px;
+  border: 1px solid rgba(1, 1, 1, 0.19);
+  background: rgba(0, 0, 0, 0.14);
+}
+
+.nav-bar .nav-bar-wrap .jump-home .home-icon {
+  width: 48rpx;
+  height: 48rpx;
+}
+
+.nav-bar .nav-bar-wrap .jump-home .home-text {
+  margin-left: 4rpx;
+  color: rgba(255, 255, 255, 1);
+  font-size: 28rpx;
+  line-height: 34rpx;
+}
+
+.nav-bar .title {
+  position: absolute;
+  z-index: 1;
+  text-align: center;
+  color: rgba(255, 255, 255, 1);
+  font-size: 34rpx;
+  font-weight: 500;
+}

+ 133 - 0
htmldev/wxMini/components/wxs/index.wxs

@@ -0,0 +1,133 @@
+var WEEK = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
+
+function datePolyfill(val) {
+  return val < 10 ? '0' + val : val
+}
+
+/**
+ * 时间戳解析
+ * @param ts 单位:ms
+ * @param type
+ * @returns {string}
+ */
+function formatTs(ts, type) {
+  var date = getDate(ts)
+  var obj = {
+    YYYY: date.getFullYear(),
+    MM: datePolyfill(date.getMonth() + 1),
+    DD: datePolyfill(date.getDate()),
+    HH: datePolyfill(date.getHours()),
+    mm: datePolyfill(date.getMinutes()),
+    ss: datePolyfill(date.getSeconds()),
+    week: WEEK[date.getDay()]
+  }
+
+  if (isNaN(ts)) {
+    return ''
+  }
+
+  if (type === 'hh:mm:ss') {
+    return obj.HH + ':' + obj.mm + ':' + obj.ss
+  }
+
+  if (type === 'MM.DD hh:mm') {
+    return obj.MM + '.' + obj.DD + ' ' + obj.HH + ':' + obj.mm
+  }
+
+  if (type === 'YYYY.MM.DD hh:mm week') {
+    return obj.YYYY + '.' + obj.MM + '.' + obj.DD + ' ' + obj.HH + ':' + obj.mm + ' ' + obj.week
+  }
+  if (type === 'YYYY-MM-DD hh:mm') {
+    return obj.YYYY + '-' + obj.MM + '-' + obj.DD + ' ' + obj.HH + ':' + obj.mm
+  }
+
+  if (type === 'hh:mm zh') {
+    return obj.HH + '小时' + obj.mm + '分'
+  }
+}
+
+function formatNumber(n) {
+  n = n.toString()
+  return n[1] ? n : '0' + n
+}
+
+function cutDownTime(ts, type) {
+  if (ts < 0) {
+    return ['0', '00', '00', '00']
+  }
+  ts = parseInt(ts)
+  var D = Math.floor(ts / 24 / 60 / 60)
+
+  // 小时位
+  var h = Math.floor((ts - D * 24 * 60 * 60) / 3600)
+  // 分钟位
+  var m = Math.floor((ts - D * 24 * 3600 - h * 3600) / 60)
+  // 秒位
+  var s = ts - D * 24 * 3600 - h * 3600 - m * 60
+
+  if (type === 'hh:mm:ss') {
+    return formatNumber(D * 24 + h) + ':' + formatNumber(m) + ':' + formatNumber(s)
+  }
+
+  if (type === 'hh:mm zh') {
+    return (D * 24 + h) + '小时' + m + '分'
+  }
+
+  return [D, formatNumber(h), formatNumber(m), formatNumber(s)]
+}
+
+function computedFormOrderCarCount(list) {
+  var result = 0
+  for (var i = 0; i < list.length; i++) {
+    result += list[i].car_num
+  }
+  return result
+}
+
+function fen2Yuan(num) {
+  return isNaN(num) ? '' : (num * 0.01).toFixed(2) * 1
+}
+
+function yuan2Fen(num) {
+  if (isNaN(num)) {
+    return ''
+  }
+  var amount = num.toString()
+  var index = amount.indexOf('.')
+  var arr = amount.split('.')
+  var result = arr[0] * 100
+  if (index > -1) {
+    var temp = arr[1].split('')
+    for (var i = 0; i < temp.length; i++) {
+      if (i === 0) {
+        result += temp[i] * 10
+      } else {
+        result += temp[i] * 1
+      }
+    }
+  }
+  return result
+}
+
+function mToKm(distance) {
+  if (isNaN(distance)) {
+    return ''
+  }
+  return Math.ceil(distance / 1000) + 'KM'
+}
+
+function imgFilter(src) {
+  return src.indexOf('http') > -1
+    ? src
+    : 'https://bashi-1311374120.cos.ap-shanghai.myqcloud.com/wxMini/image' + src
+}
+
+module.exports = {
+  formatTs: formatTs,
+  computedFormOrderCarCount: computedFormOrderCarCount,
+  fen2Yuan: fen2Yuan,
+  yuan2Fen: yuan2Fen,
+  mToKm: mToKm,
+  cutDownTime: cutDownTime,
+  imgFilter: imgFilter
+}

BIN
htmldev/wxMini/image/tabBar/home_0@2x.png


BIN
htmldev/wxMini/image/tabBar/home_1@2x.png


BIN
htmldev/wxMini/image/tabBar/mine_0@2x.png


BIN
htmldev/wxMini/image/tabBar/mine_1@2x.png


+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.d.ts

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

+ 73 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.js

@@ -0,0 +1,73 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../common/component");
+var button_1 = require("../mixins/button");
+(0, component_1.VantComponent)({
+    mixins: [button_1.button],
+    props: {
+        show: Boolean,
+        title: String,
+        cancelText: String,
+        description: String,
+        round: {
+            type: Boolean,
+            value: true,
+        },
+        zIndex: {
+            type: Number,
+            value: 100,
+        },
+        actions: {
+            type: Array,
+            value: [],
+        },
+        overlay: {
+            type: Boolean,
+            value: true,
+        },
+        closeOnClickOverlay: {
+            type: Boolean,
+            value: true,
+        },
+        closeOnClickAction: {
+            type: Boolean,
+            value: true,
+        },
+        safeAreaInsetBottom: {
+            type: Boolean,
+            value: true,
+        },
+    },
+    methods: {
+        onSelect: function (event) {
+            var _this = this;
+            var index = event.currentTarget.dataset.index;
+            var _a = this.data, actions = _a.actions, closeOnClickAction = _a.closeOnClickAction, canIUseGetUserProfile = _a.canIUseGetUserProfile;
+            var item = actions[index];
+            if (item) {
+                this.$emit('select', item);
+                if (closeOnClickAction) {
+                    this.onClose();
+                }
+                if (item.openType === 'getUserInfo' && canIUseGetUserProfile) {
+                    wx.getUserProfile({
+                        desc: item.getUserProfileDesc || '  ',
+                        complete: function (userProfile) {
+                            _this.$emit('getuserinfo', userProfile);
+                        },
+                    });
+                }
+            }
+        },
+        onCancel: function () {
+            this.$emit('cancel');
+        },
+        onClose: function () {
+            this.$emit('close');
+        },
+        onClickOverlay: function () {
+            this.$emit('click-overlay');
+            this.onClose();
+        },
+    },
+});

+ 8 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.json

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

+ 69 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.wxml

@@ -0,0 +1,69 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<van-popup
+  show="{{ show }}"
+  position="bottom"
+  round="{{ round }}"
+  z-index="{{ zIndex }}"
+  overlay="{{ overlay }}"
+  custom-class="van-action-sheet"
+  safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:close="onClickOverlay"
+>
+  <view wx:if="{{ title }}" class="van-action-sheet__header">
+    {{ title }}
+    <van-icon
+      name="cross"
+      custom-class="van-action-sheet__close"
+      bind:click="onClose"
+    />
+  </view>
+  <view wx:if="{{ description }}" class="van-action-sheet__description van-hairline--bottom">
+    {{ description }}
+  </view>
+  <view wx:if="{{ actions && actions.length }}">
+    <!-- button外包一层view,防止actions动态变化,导致渲染时button被打散 -->
+    <button
+      wx:for="{{ actions }}"
+      wx:key="index"
+      open-type="{{ item.disabled || item.loading || (canIUseGetUserProfile && item.openType === 'getUserInfo') ? '' : item.openType }}"
+      style="{{ item.color ? 'color: ' + item.color : '' }}"
+      class="{{ utils.bem('action-sheet__item', { disabled: item.disabled || item.loading }) }} {{ item.className || '' }}"
+      hover-class="van-action-sheet__item--hover"
+      data-index="{{ index }}"
+      bindtap="{{ item.disabled || item.loading ? '' : 'onSelect' }}"
+      bindgetuserinfo="onGetUserInfo"
+      bindcontact="onContact"
+      bindgetphonenumber="onGetPhoneNumber"
+      binderror="onError"
+      bindlaunchapp="onLaunchApp"
+      bindopensetting="onOpenSetting"
+      lang="{{ lang }}"
+      session-from="{{ sessionFrom }}"
+      send-message-title="{{ sendMessageTitle }}"
+      send-message-path="{{ sendMessagePath }}"
+      send-message-img="{{ sendMessageImg }}"
+      show-message-card="{{ showMessageCard }}"
+      app-parameter="{{ appParameter }}"
+    >
+      <block wx:if="{{ !item.loading }}">
+        {{ item.name }}
+        <view wx:if="{{ item.subname }}" class="van-action-sheet__subname" >{{ item.subname }}</view>
+      </block>
+      <van-loading wx:else custom-class="van-action-sheet__loading" size="22px" />
+    </button>
+  </view>
+  <slot />
+  <block wx:if="{{ cancelText }}">
+    <view class="van-action-sheet__gap" />
+    <view
+      class="van-action-sheet__cancel"
+      hover-class="van-action-sheet__cancel--hover"
+      hover-stay-time="70"
+      bind:tap="onCancel"
+    >
+      {{ cancelText }}
+    </view>
+  </block>
+</van-popup>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/action-sheet/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-action-sheet{color:var(--action-sheet-item-text-color,#323233);max-height:var(--action-sheet-max-height,90%)!important}.van-action-sheet__cancel,.van-action-sheet__item{background-color:var(--action-sheet-item-background,#fff);font-size:var(--action-sheet-item-font-size,16px);line-height:var(--action-sheet-item-line-height,22px);padding:14px 16px;text-align:center}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5}.van-action-sheet__cancel:after,.van-action-sheet__item:after{border-width:0}.van-action-sheet__cancel{color:var(--action-sheet-cancel-text-color,#646566)}.van-action-sheet__gap{background-color:var(--action-sheet-cancel-padding-color,#f7f8fa);display:block;height:var(--action-sheet-cancel-padding-top,8px)}.van-action-sheet__item--disabled{color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{color:var(--action-sheet-subname-color,#969799);font-size:var(--action-sheet-subname-font-size,12px);line-height:var(--action-sheet-subname-line-height,20px);margin-top:var(--padding-xs,8px)}.van-action-sheet__header{font-size:var(--action-sheet-header-font-size,16px);font-weight:var(--font-weight-bold,500);line-height:var(--action-sheet-header-height,48px);text-align:center}.van-action-sheet__description{color:var(--action-sheet-description-color,#969799);font-size:var(--action-sheet-description-font-size,14px);line-height:var(--action-sheet-description-line-height,20px);padding:20px var(--padding-md,16px);text-align:center}.van-action-sheet__close{color:var(--action-sheet-close-icon-color,#c8c9cc);font-size:var(--action-sheet-close-icon-size,22px)!important;line-height:inherit!important;padding:var(--action-sheet-close-icon-padding,0 16px);position:absolute!important;right:0;top:0}.van-action-sheet__loading{display:flex!important}

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.d.ts

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

+ 232 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.js

@@ -0,0 +1,232 @@
+"use strict";
+var __assign = (this && this.__assign) || function () {
+    __assign = Object.assign || function(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
+                t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../common/component");
+var shared_1 = require("../picker/shared");
+var utils_1 = require("../common/utils");
+var EMPTY_CODE = '000000';
+(0, component_1.VantComponent)({
+    classes: ['active-class', 'toolbar-class', 'column-class'],
+    props: __assign(__assign({}, shared_1.pickerProps), { value: {
+            type: String,
+            observer: function (value) {
+                this.code = value;
+                this.setValues();
+            },
+        }, areaList: {
+            type: Object,
+            value: {},
+            observer: 'setValues',
+        }, columnsNum: {
+            type: null,
+            value: 3,
+        }, columnsPlaceholder: {
+            type: Array,
+            observer: function (val) {
+                this.setData({
+                    typeToColumnsPlaceholder: {
+                        province: val[0] || '',
+                        city: val[1] || '',
+                        county: val[2] || '',
+                    },
+                });
+            },
+        } }),
+    data: {
+        columns: [{ values: [] }, { values: [] }, { values: [] }],
+        typeToColumnsPlaceholder: {},
+    },
+    mounted: function () {
+        var _this = this;
+        (0, utils_1.requestAnimationFrame)(function () {
+            _this.setValues();
+        });
+    },
+    methods: {
+        getPicker: function () {
+            if (this.picker == null) {
+                this.picker = this.selectComponent('.van-area__picker');
+            }
+            return this.picker;
+        },
+        onCancel: function (event) {
+            this.emit('cancel', event.detail);
+        },
+        onConfirm: function (event) {
+            var index = event.detail.index;
+            var value = event.detail.value;
+            value = this.parseValues(value);
+            this.emit('confirm', { value: value, index: index });
+        },
+        emit: function (type, detail) {
+            detail.values = detail.value;
+            delete detail.value;
+            this.$emit(type, detail);
+        },
+        parseValues: function (values) {
+            var columnsPlaceholder = this.data.columnsPlaceholder;
+            return values.map(function (value, index) {
+                if (value &&
+                    (!value.code || value.name === columnsPlaceholder[index])) {
+                    return __assign(__assign({}, value), { code: '', name: '' });
+                }
+                return value;
+            });
+        },
+        onChange: function (event) {
+            var _this = this;
+            var _a;
+            var _b = event.detail, index = _b.index, picker = _b.picker, value = _b.value;
+            this.code = value[index].code;
+            (_a = this.setValues()) === null || _a === void 0 ? void 0 : _a.then(function () {
+                _this.$emit('change', {
+                    picker: picker,
+                    values: _this.parseValues(picker.getValues()),
+                    index: index,
+                });
+            });
+        },
+        getConfig: function (type) {
+            var areaList = this.data.areaList;
+            return (areaList && areaList["".concat(type, "_list")]) || {};
+        },
+        getList: function (type, code) {
+            if (type !== 'province' && !code) {
+                return [];
+            }
+            var typeToColumnsPlaceholder = this.data.typeToColumnsPlaceholder;
+            var list = this.getConfig(type);
+            var result = Object.keys(list).map(function (code) { return ({
+                code: code,
+                name: list[code],
+            }); });
+            if (code != null) {
+                // oversea code
+                if (code[0] === '9' && type === 'city') {
+                    code = '9';
+                }
+                result = result.filter(function (item) { return item.code.indexOf(code) === 0; });
+            }
+            if (typeToColumnsPlaceholder[type] && result.length) {
+                // set columns placeholder
+                var codeFill = type === 'province'
+                    ? ''
+                    : type === 'city'
+                        ? EMPTY_CODE.slice(2, 4)
+                        : EMPTY_CODE.slice(4, 6);
+                result.unshift({
+                    code: "".concat(code).concat(codeFill),
+                    name: typeToColumnsPlaceholder[type],
+                });
+            }
+            return result;
+        },
+        getIndex: function (type, code) {
+            var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
+            var 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 (var i = 0; i < list.length; i++) {
+                if (list[i].code.slice(0, compareNum) === code) {
+                    return i;
+                }
+            }
+            return 0;
+        },
+        setValues: function () {
+            var picker = this.getPicker();
+            if (!picker) {
+                return;
+            }
+            var code = this.code || this.getDefaultCode();
+            var provinceList = this.getList('province');
+            var cityList = this.getList('city', code.slice(0, 2));
+            var stack = [];
+            var indexes = [];
+            var columnsNum = this.data.columnsNum;
+            if (columnsNum >= 1) {
+                stack.push(picker.setColumnValues(0, provinceList, false));
+                indexes.push(this.getIndex('province', code));
+            }
+            if (columnsNum >= 2) {
+                stack.push(picker.setColumnValues(1, cityList, false));
+                indexes.push(this.getIndex('city', code));
+                if (cityList.length && code.slice(2, 4) === '00') {
+                    code = cityList[0].code;
+                }
+            }
+            if (columnsNum === 3) {
+                stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));
+                indexes.push(this.getIndex('county', code));
+            }
+            return Promise.all(stack)
+                .catch(function () { })
+                .then(function () { return picker.setIndexes(indexes); })
+                .catch(function () { });
+        },
+        getDefaultCode: function () {
+            var columnsPlaceholder = this.data.columnsPlaceholder;
+            if (columnsPlaceholder.length) {
+                return EMPTY_CODE;
+            }
+            var countyCodes = Object.keys(this.getConfig('county'));
+            if (countyCodes[0]) {
+                return countyCodes[0];
+            }
+            var cityCodes = Object.keys(this.getConfig('city'));
+            if (cityCodes[0]) {
+                return cityCodes[0];
+            }
+            return '';
+        },
+        getValues: function () {
+            var picker = this.getPicker();
+            if (!picker) {
+                return [];
+            }
+            return this.parseValues(picker.getValues().filter(function (value) { return !!value; }));
+        },
+        getDetail: function () {
+            var values = this.getValues();
+            var area = {
+                code: '',
+                country: '',
+                province: '',
+                city: '',
+                county: '',
+            };
+            if (!values.length) {
+                return area;
+            }
+            var names = values.map(function (item) { return 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: function (code) {
+            this.code = code || '';
+            return this.setValues();
+        },
+    },
+});

+ 6 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.json

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

+ 20 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.wxml

@@ -0,0 +1,20 @@
+<wxs src="./index.wxs" module="computed" />
+
+<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="{{ computed.displayColumns(columns, columnsNum) }}"
+  item-height="{{ itemHeight }}"
+  visible-item-count="{{ visibleItemCount }}"
+  cancel-button-text="{{ cancelButtonText }}"
+  confirm-button-text="{{ confirmButtonText }}"
+  bind:change="onChange"
+  bind:confirm="onConfirm"
+  bind:cancel="onCancel"
+/>

+ 8 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.wxs

@@ -0,0 +1,8 @@
+/* eslint-disable */
+function displayColumns(columns, columnsNum) {
+  return columns.slice(0, +columnsNum);
+}
+
+module.exports = {
+  displayColumns: displayColumns,
+};

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/area/index.wxss

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

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.d.ts

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

+ 67 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.js

@@ -0,0 +1,67 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../common/component");
+var button_1 = require("../mixins/button");
+var version_1 = require("../common/version");
+var mixins = [button_1.button];
+if ((0, version_1.canIUseFormFieldButton)()) {
+    mixins.push('wx://form-field-button');
+}
+(0, component_1.VantComponent)({
+    mixins: mixins,
+    classes: ['hover-class', 'loading-class'],
+    data: {
+        baseStyle: '',
+    },
+    props: {
+        formType: String,
+        icon: String,
+        classPrefix: {
+            type: String,
+            value: 'van-icon',
+        },
+        plain: Boolean,
+        block: Boolean,
+        round: Boolean,
+        square: Boolean,
+        loading: Boolean,
+        hairline: Boolean,
+        disabled: Boolean,
+        loadingText: String,
+        customStyle: String,
+        loadingType: {
+            type: String,
+            value: 'circular',
+        },
+        type: {
+            type: String,
+            value: 'default',
+        },
+        dataset: null,
+        size: {
+            type: String,
+            value: 'normal',
+        },
+        loadingSize: {
+            type: String,
+            value: '20px',
+        },
+        color: String,
+    },
+    methods: {
+        onClick: function (event) {
+            var _this = this;
+            this.$emit('click', event);
+            var _a = this.data, canIUseGetUserProfile = _a.canIUseGetUserProfile, openType = _a.openType, getUserProfileDesc = _a.getUserProfileDesc, lang = _a.lang;
+            if (openType === 'getUserInfo' && canIUseGetUserProfile) {
+                wx.getUserProfile({
+                    desc: getUserProfileDesc || '  ',
+                    lang: lang || 'en',
+                    complete: function (userProfile) {
+                        _this.$emit('getuserinfo', userProfile);
+                    },
+                });
+            }
+        },
+    },
+});

+ 7 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.json

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

+ 53 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.wxml

@@ -0,0 +1,53 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+<wxs src="./index.wxs" module="computed" />
+
+<button
+  id="{{ id }}"
+  data-detail="{{ dataset }}"
+  class="custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, hairline, unclickable: disabled || loading }]) }} {{ hairline ? 'van-hairline--surround' : '' }}"
+  hover-class="van-button--active hover-class"
+  lang="{{ lang }}"
+  form-type="{{ formType }}"
+  style="{{ computed.rootStyle({ plain, color, customStyle }) }}"
+  open-type="{{ disabled || loading || (canIUseGetUserProfile && openType === 'getUserInfo') ? '' : openType }}"
+  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="{{ disabled || loading ? '' : 'onClick' }}"
+  bindgetuserinfo="onGetUserInfo"
+  bindcontact="onContact"
+  bindgetphonenumber="onGetPhoneNumber"
+  binderror="onError"
+  bindlaunchapp="onLaunchApp"
+  bindopensetting="onOpenSetting"
+>
+  <block wx:if="{{ loading }}">
+    <van-loading
+      custom-class="loading-class"
+      size="{{ loadingSize }}"
+      type="{{ loadingType }}"
+      color="{{ computed.loadingColor({ type, color, plain }) }}"
+    />
+    <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-prefix="{{ classPrefix }}"
+      class="van-button__icon"
+      custom-style="line-height: inherit;"
+    />
+    <view class="van-button__text">
+      <slot />
+    </view>
+  </block>
+</button>

+ 39 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.wxs

@@ -0,0 +1,39 @@
+/* eslint-disable */
+var style = require('../wxs/style.wxs');
+
+function rootStyle(data) {
+  if (!data.color) {
+    return data.customStyle;
+  }
+
+  var properties = {
+    color: data.plain ? data.color : '#fff',
+    background: data.plain ? null : data.color,
+  };
+
+  // hide border when color is linear-gradient
+  if (data.color.indexOf('gradient') !== -1) {
+    properties.border = 0;
+  } else {
+    properties['border-color'] = data.color;
+  }
+
+  return style([properties, data.customStyle]);
+}
+
+function loadingColor(data) {
+  if (data.plain) {
+    return data.color ? data.color : '#c9c9c9';
+  }
+
+  if (data.type === 'default') {
+    return '#c9c9c9';
+  }
+
+  return '#fff';
+}
+
+module.exports = {
+  rootStyle: rootStyle,
+  loadingColor: loadingColor,
+};

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/button/index.wxss


+ 68 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/calendar.wxml

@@ -0,0 +1,68 @@
+<view class="van-calendar">
+  <header
+    title="{{ title }}"
+    showTitle="{{ showTitle }}"
+    subtitle="{{ subtitle }}"
+    showSubtitle="{{ showSubtitle }}"
+    firstDayOfWeek="{{ firstDayOfWeek }}"
+    bind:click-subtitle="onClickSubtitle"
+  >
+    <slot name="title" slot="title"></slot>
+  </header>
+
+  <scroll-view
+    class="van-calendar__body"
+    scroll-y
+    scroll-into-view="{{ scrollIntoView }}"
+  >
+    <month
+      wx:for="{{ computed.getMonths(minDate, maxDate) }}"
+      wx:key="index"
+      id="month{{ index }}"
+      class="month"
+      data-date="{{ item }}"
+      date="{{ item }}"
+      type="{{ type }}"
+      color="{{ color }}"
+      minDate="{{ minDate }}"
+      maxDate="{{ maxDate }}"
+      showMark="{{ showMark }}"
+      formatter="{{ formatter }}"
+      rowHeight="{{ rowHeight }}"
+      currentDate="{{ currentDate }}"
+      showSubtitle="{{ showSubtitle }}"
+      allowSameDay="{{ allowSameDay }}"
+      showMonthTitle="{{ index !== 0 || !showSubtitle }}"
+      firstDayOfWeek="{{ firstDayOfWeek }}"
+      bind:click="onClickDay"
+    />
+  </scroll-view>
+
+  <view
+    class="{{ utils.bem('calendar__footer', { safeAreaInsetBottom }) }}"
+  >
+    <slot name="footer"></slot>
+  </view>
+
+  <view
+    class="{{ utils.bem('calendar__footer', { safeAreaInsetBottom }) }}"
+  >
+    <van-button
+      wx:if="{{ showConfirm }}"
+      round
+      block
+      type="danger"
+      color="{{ color }}"
+      custom-class="van-calendar__confirm"
+      disabled="{{ computed.getButtonDisabled(type, currentDate) }}"
+      nativeType="text"
+      bind:click="onConfirm"
+    >
+      {{
+        computed.getButtonDisabled(type, currentDate)
+          ? confirmDisabledText
+          : confirmText
+      }}
+    </van-button>
+  </view>
+</view>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts

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

+ 45 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.js

@@ -0,0 +1,45 @@
+"use strict";
+var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
+    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+        if (ar || !(i in from)) {
+            if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+            ar[i] = from[i];
+        }
+    }
+    return to.concat(ar || Array.prototype.slice.call(from));
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../../../common/component");
+(0, component_1.VantComponent)({
+    props: {
+        title: {
+            type: String,
+            value: '日期选择',
+        },
+        subtitle: String,
+        showTitle: Boolean,
+        showSubtitle: Boolean,
+        firstDayOfWeek: {
+            type: Number,
+            observer: 'initWeekDay',
+        },
+    },
+    data: {
+        weekdays: [],
+    },
+    created: function () {
+        this.initWeekDay();
+    },
+    methods: {
+        initWeekDay: function () {
+            var defaultWeeks = ['日', '一', '二', '三', '四', '五', '六'];
+            var firstDayOfWeek = this.data.firstDayOfWeek || 0;
+            this.setData({
+                weekdays: __spreadArray(__spreadArray([], defaultWeeks.slice(firstDayOfWeek, 7), true), defaultWeeks.slice(0, firstDayOfWeek), true),
+            });
+        },
+        onClickSubtitle: function (event) {
+            this.$emit('click-subtitle', event);
+        },
+    },
+});

+ 3 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.json

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

+ 16 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml

@@ -0,0 +1,16 @@
+<view class="van-calendar__header">
+  <block wx:if="{{ showTitle }}">
+    <view class="van-calendar__header-title"><slot name="title"></slot></view>
+    <view class="van-calendar__header-title">{{ title }}</view>
+  </block>
+
+  <view wx:if="{{ showSubtitle }}" class="van-calendar__header-subtitle" bind:tap="onClickSubtitle">
+    {{ subtitle }}
+  </view>
+
+  <view class="van-calendar__weekdays">
+    <view wx:for="{{ weekdays }}" wx:key="index" class="van-calendar__weekday">
+      {{ item }}
+    </view>
+  </view>
+</view>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss

@@ -0,0 +1 @@
+@import '../../../common/index.wxss';.van-calendar__header{box-shadow:var(--calendar-header-box-shadow,0 2px 10px hsla(220,1%,50%,.16));flex-shrink:0}.van-calendar__header-subtitle,.van-calendar__header-title{font-weight:var(--font-weight-bold,500);height:var(--calendar-header-title-height,44px);line-height:var(--calendar-header-title-height,44px);text-align:center}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:flex}.van-calendar__weekday{flex:1;font-size:var(--calendar-weekdays-font-size,12px);line-height:var(--calendar-weekdays-height,30px);text-align:center}

+ 6 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts

@@ -0,0 +1,6 @@
+export interface Day {
+    date: Date;
+    type: string;
+    text: number;
+    bottomInfo?: string;
+}

+ 158 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.js

@@ -0,0 +1,158 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../../../common/component");
+var utils_1 = require("../../utils");
+(0, component_1.VantComponent)({
+    props: {
+        date: {
+            type: null,
+            observer: 'setDays',
+        },
+        type: {
+            type: String,
+            observer: 'setDays',
+        },
+        color: String,
+        minDate: {
+            type: null,
+            observer: 'setDays',
+        },
+        maxDate: {
+            type: null,
+            observer: 'setDays',
+        },
+        showMark: Boolean,
+        rowHeight: null,
+        formatter: {
+            type: null,
+            observer: 'setDays',
+        },
+        currentDate: {
+            type: null,
+            observer: 'setDays',
+        },
+        firstDayOfWeek: {
+            type: Number,
+            observer: 'setDays',
+        },
+        allowSameDay: Boolean,
+        showSubtitle: Boolean,
+        showMonthTitle: Boolean,
+    },
+    data: {
+        visible: true,
+        days: [],
+    },
+    methods: {
+        onClick: function (event) {
+            var index = event.currentTarget.dataset.index;
+            var item = this.data.days[index];
+            if (item.type !== 'disabled') {
+                this.$emit('click', item);
+            }
+        },
+        setDays: function () {
+            var days = [];
+            var startDate = new Date(this.data.date);
+            var year = startDate.getFullYear();
+            var month = startDate.getMonth();
+            var totalDay = (0, utils_1.getMonthEndDay)(startDate.getFullYear(), startDate.getMonth() + 1);
+            for (var day = 1; day <= totalDay; day++) {
+                var date = new Date(year, month, day);
+                var type = this.getDayType(date);
+                var config = {
+                    date: date,
+                    type: type,
+                    text: day,
+                    bottomInfo: this.getBottomInfo(type),
+                };
+                if (this.data.formatter) {
+                    config = this.data.formatter(config);
+                }
+                days.push(config);
+            }
+            this.setData({ days: days });
+        },
+        getMultipleDayType: function (day) {
+            var currentDate = this.data.currentDate;
+            if (!Array.isArray(currentDate)) {
+                return '';
+            }
+            var isSelected = function (date) {
+                return currentDate.some(function (item) { return (0, utils_1.compareDay)(item, date) === 0; });
+            };
+            if (isSelected(day)) {
+                var prevDay = (0, utils_1.getPrevDay)(day);
+                var nextDay = (0, utils_1.getNextDay)(day);
+                var prevSelected = isSelected(prevDay);
+                var nextSelected = isSelected(nextDay);
+                if (prevSelected && nextSelected) {
+                    return 'multiple-middle';
+                }
+                if (prevSelected) {
+                    return 'end';
+                }
+                return nextSelected ? 'start' : 'multiple-selected';
+            }
+            return '';
+        },
+        getRangeDayType: function (day) {
+            var _a = this.data, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay;
+            if (!Array.isArray(currentDate)) {
+                return '';
+            }
+            var startDay = currentDate[0], endDay = currentDate[1];
+            if (!startDay) {
+                return '';
+            }
+            var compareToStart = (0, utils_1.compareDay)(day, startDay);
+            if (!endDay) {
+                return compareToStart === 0 ? 'start' : '';
+            }
+            var compareToEnd = (0, utils_1.compareDay)(day, endDay);
+            if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) {
+                return 'start-end';
+            }
+            if (compareToStart === 0) {
+                return 'start';
+            }
+            if (compareToEnd === 0) {
+                return 'end';
+            }
+            if (compareToStart > 0 && compareToEnd < 0) {
+                return 'middle';
+            }
+            return '';
+        },
+        getDayType: function (day) {
+            var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate, currentDate = _a.currentDate;
+            if ((0, utils_1.compareDay)(day, minDate) < 0 || (0, utils_1.compareDay)(day, maxDate) > 0) {
+                return 'disabled';
+            }
+            if (type === 'single') {
+                return (0, utils_1.compareDay)(day, currentDate) === 0 ? 'selected' : '';
+            }
+            if (type === 'multiple') {
+                return this.getMultipleDayType(day);
+            }
+            /* istanbul ignore else */
+            if (type === 'range') {
+                return this.getRangeDayType(day);
+            }
+            return '';
+        },
+        getBottomInfo: function (type) {
+            if (this.data.type === 'range') {
+                if (type === 'start') {
+                    return '开始';
+                }
+                if (type === 'end') {
+                    return '结束';
+                }
+                if (type === 'start-end') {
+                    return '开始/结束';
+                }
+            }
+        },
+    },
+});

+ 3 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.json

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

+ 39 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml

@@ -0,0 +1,39 @@
+<wxs src="./index.wxs" module="computed"></wxs>
+<wxs src="../../../wxs/utils.wxs" module="utils" />
+
+<view class="van-calendar__month" style="{{ computed.getMonthStyle(visible, date, rowHeight) }}">
+  <view wx:if="{{ showMonthTitle }}" class="van-calendar__month-title">
+    {{ computed.formatMonthTitle(date) }}
+  </view>
+
+  <view wx:if="{{ visible }}" class="van-calendar__days">
+    <view wx:if="{{ showMark }}" class="van-calendar__month-mark">
+      {{ computed.getMark(date) }}
+    </view>
+
+    <view
+      wx:for="{{ days }}"
+      wx:key="index"
+      style="{{ computed.getDayStyle(item.type, index, date, rowHeight, color, firstDayOfWeek) }}"
+      class="{{ utils.bem('calendar__day', [item.type]) }} {{ item.className }}"
+      data-index="{{ index }}"
+      bindtap="onClick"
+    >
+      <view wx:if="{{ item.type === 'selected' }}" class="van-calendar__selected-day" style="width: {{ rowHeight }}px; height: {{ rowHeight }}px; background: {{ color }}">
+        <view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
+        {{ item.text }}
+        <view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
+          {{ item.bottomInfo }}
+        </view>
+      </view>
+
+      <view wx:else>
+        <view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
+        {{ item.text }}
+        <view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
+          {{ item.bottomInfo }}
+        </view>
+      </view>
+    </view>
+  </view>
+</view>

+ 71 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs

@@ -0,0 +1,71 @@
+/* eslint-disable */
+var utils = require('../../utils.wxs');
+
+function getMark(date) {
+  return getDate(date).getMonth() + 1;
+}
+
+var ROW_HEIGHT = 64;
+
+function getDayStyle(type, index, date, rowHeight, color, firstDayOfWeek) {
+  var style = [];
+  var current = getDate(date).getDay() || 7;
+  var offset = current < firstDayOfWeek ? (7 - firstDayOfWeek + current) :
+               current === 7 && firstDayOfWeek === 0 ? 0 :
+               (current - firstDayOfWeek);
+
+  if (index === 0) {
+    style.push(['margin-left', (100 * offset) / 7 + '%']);
+  }
+
+  if (rowHeight !== ROW_HEIGHT) {
+    style.push(['height', rowHeight + 'px']);
+  }
+
+  if (color) {
+    if (
+      type === 'start' ||
+      type === 'end' ||
+      type === 'start-end' ||
+      type === 'multiple-selected' ||
+      type === 'multiple-middle'
+    ) {
+      style.push(['background', color]);
+    } else if (type === 'middle') {
+      style.push(['color', color]);
+    }
+  }
+
+  return style
+    .map(function(item) {
+      return item.join(':');
+    })
+    .join(';');
+}
+
+function formatMonthTitle(date) {
+  date = getDate(date);
+  return date.getFullYear() + '年' + (date.getMonth() + 1) + '月';
+}
+
+function getMonthStyle(visible, date, rowHeight) {
+  if (!visible) {
+    date = getDate(date);
+
+    var totalDay = utils.getMonthEndDay(
+      date.getFullYear(),
+      date.getMonth() + 1
+    );
+    var offset = getDate(date).getDay();
+    var padding = Math.ceil((totalDay + offset) / 7) * rowHeight;
+
+    return 'padding-bottom:' + padding + 'px';
+  }
+}
+
+module.exports = {
+  getMark: getMark,
+  getDayStyle: getDayStyle,
+  formatMonthTitle: formatMonthTitle,
+  getMonthStyle: getMonthStyle
+};

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss


+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.d.ts

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

+ 360 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.js

@@ -0,0 +1,360 @@
+"use strict";
+var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
+    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+        if (ar || !(i in from)) {
+            if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+            ar[i] = from[i];
+        }
+    }
+    return to.concat(ar || Array.prototype.slice.call(from));
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../common/component");
+var utils_1 = require("./utils");
+var toast_1 = __importDefault(require("../toast/toast"));
+var utils_2 = require("../common/utils");
+var initialMinDate = (0, utils_1.getToday)().getTime();
+var initialMaxDate = (function () {
+    var now = (0, utils_1.getToday)();
+    return new Date(now.getFullYear(), now.getMonth() + 6, now.getDate()).getTime();
+})();
+var getTime = function (date) {
+    return date instanceof Date ? date.getTime() : date;
+};
+(0, component_1.VantComponent)({
+    props: {
+        title: {
+            type: String,
+            value: '日期选择',
+        },
+        color: String,
+        show: {
+            type: Boolean,
+            observer: function (val) {
+                if (val) {
+                    this.initRect();
+                    this.scrollIntoView();
+                }
+            },
+        },
+        formatter: null,
+        confirmText: {
+            type: String,
+            value: '确定',
+        },
+        confirmDisabledText: {
+            type: String,
+            value: '确定',
+        },
+        rangePrompt: String,
+        showRangePrompt: {
+            type: Boolean,
+            value: true,
+        },
+        defaultDate: {
+            type: null,
+            observer: function (val) {
+                this.setData({ currentDate: val });
+                this.scrollIntoView();
+            },
+        },
+        allowSameDay: Boolean,
+        type: {
+            type: String,
+            value: 'single',
+            observer: 'reset',
+        },
+        minDate: {
+            type: Number,
+            value: initialMinDate,
+        },
+        maxDate: {
+            type: Number,
+            value: initialMaxDate,
+        },
+        position: {
+            type: String,
+            value: 'bottom',
+        },
+        rowHeight: {
+            type: null,
+            value: utils_1.ROW_HEIGHT,
+        },
+        round: {
+            type: Boolean,
+            value: true,
+        },
+        poppable: {
+            type: Boolean,
+            value: true,
+        },
+        showMark: {
+            type: Boolean,
+            value: true,
+        },
+        showTitle: {
+            type: Boolean,
+            value: true,
+        },
+        showConfirm: {
+            type: Boolean,
+            value: true,
+        },
+        showSubtitle: {
+            type: Boolean,
+            value: true,
+        },
+        safeAreaInsetBottom: {
+            type: Boolean,
+            value: true,
+        },
+        closeOnClickOverlay: {
+            type: Boolean,
+            value: true,
+        },
+        maxRange: {
+            type: null,
+            value: null,
+        },
+        firstDayOfWeek: {
+            type: Number,
+            value: 0,
+        },
+        readonly: Boolean,
+    },
+    data: {
+        subtitle: '',
+        currentDate: null,
+        scrollIntoView: '',
+    },
+    created: function () {
+        this.setData({
+            currentDate: this.getInitialDate(this.data.defaultDate),
+        });
+    },
+    mounted: function () {
+        if (this.data.show || !this.data.poppable) {
+            this.initRect();
+            this.scrollIntoView();
+        }
+    },
+    methods: {
+        reset: function () {
+            this.setData({ currentDate: this.getInitialDate() });
+            this.scrollIntoView();
+        },
+        initRect: function () {
+            var _this = this;
+            if (this.contentObserver != null) {
+                this.contentObserver.disconnect();
+            }
+            var contentObserver = this.createIntersectionObserver({
+                thresholds: [0, 0.1, 0.9, 1],
+                observeAll: true,
+            });
+            this.contentObserver = contentObserver;
+            contentObserver.relativeTo('.van-calendar__body');
+            contentObserver.observe('.month', function (res) {
+                if (res.boundingClientRect.top <= res.relativeRect.top) {
+                    // @ts-ignore
+                    _this.setData({ subtitle: (0, utils_1.formatMonthTitle)(res.dataset.date) });
+                }
+            });
+        },
+        limitDateRange: function (date, minDate, maxDate) {
+            if (minDate === void 0) { minDate = null; }
+            if (maxDate === void 0) { maxDate = null; }
+            minDate = minDate || this.data.minDate;
+            maxDate = maxDate || this.data.maxDate;
+            if ((0, utils_1.compareDay)(date, minDate) === -1) {
+                return minDate;
+            }
+            if ((0, utils_1.compareDay)(date, maxDate) === 1) {
+                return maxDate;
+            }
+            return date;
+        },
+        getInitialDate: function (defaultDate) {
+            var _this = this;
+            if (defaultDate === void 0) { defaultDate = null; }
+            var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate;
+            var now = (0, utils_1.getToday)().getTime();
+            if (type === 'range') {
+                if (!Array.isArray(defaultDate)) {
+                    defaultDate = [];
+                }
+                var _b = defaultDate || [], startDay = _b[0], endDay = _b[1];
+                var start = this.limitDateRange(startDay || now, minDate, (0, utils_1.getPrevDay)(new Date(maxDate)).getTime());
+                var end = this.limitDateRange(endDay || now, (0, utils_1.getNextDay)(new Date(minDate)).getTime());
+                return [start, end];
+            }
+            if (type === 'multiple') {
+                if (Array.isArray(defaultDate)) {
+                    return defaultDate.map(function (date) { return _this.limitDateRange(date); });
+                }
+                return [this.limitDateRange(now)];
+            }
+            if (!defaultDate || Array.isArray(defaultDate)) {
+                defaultDate = now;
+            }
+            return this.limitDateRange(defaultDate);
+        },
+        scrollIntoView: function () {
+            var _this = this;
+            (0, utils_2.requestAnimationFrame)(function () {
+                var _a = _this.data, currentDate = _a.currentDate, type = _a.type, show = _a.show, poppable = _a.poppable, minDate = _a.minDate, maxDate = _a.maxDate;
+                // @ts-ignore
+                var targetDate = type === 'single' ? currentDate : currentDate[0];
+                var displayed = show || !poppable;
+                if (!targetDate || !displayed) {
+                    return;
+                }
+                var months = (0, utils_1.getMonths)(minDate, maxDate);
+                months.some(function (month, index) {
+                    if ((0, utils_1.compareMonth)(month, targetDate) === 0) {
+                        _this.setData({ scrollIntoView: "month".concat(index) });
+                        return true;
+                    }
+                    return false;
+                });
+            });
+        },
+        onOpen: function () {
+            this.$emit('open');
+        },
+        onOpened: function () {
+            this.$emit('opened');
+        },
+        onClose: function () {
+            this.$emit('close');
+        },
+        onClosed: function () {
+            this.$emit('closed');
+        },
+        onClickDay: function (event) {
+            if (this.data.readonly) {
+                return;
+            }
+            var date = event.detail.date;
+            var _a = this.data, type = _a.type, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay;
+            if (type === 'range') {
+                // @ts-ignore
+                var startDay_1 = currentDate[0], endDay = currentDate[1];
+                if (startDay_1 && !endDay) {
+                    var compareToStart = (0, utils_1.compareDay)(date, startDay_1);
+                    if (compareToStart === 1) {
+                        var days_1 = this.selectComponent('.month').data.days;
+                        days_1.some(function (day, index) {
+                            var isDisabled = day.type === 'disabled' &&
+                                getTime(startDay_1) < getTime(day.date) &&
+                                getTime(day.date) < getTime(date);
+                            if (isDisabled) {
+                                (date = days_1[index - 1].date);
+                            }
+                            return isDisabled;
+                        });
+                        this.select([startDay_1, date], true);
+                    }
+                    else if (compareToStart === -1) {
+                        this.select([date, null]);
+                    }
+                    else if (allowSameDay) {
+                        this.select([date, date]);
+                    }
+                }
+                else {
+                    this.select([date, null]);
+                }
+            }
+            else if (type === 'multiple') {
+                var selectedIndex_1;
+                // @ts-ignore
+                var selected = currentDate.some(function (dateItem, index) {
+                    var equal = (0, utils_1.compareDay)(dateItem, date) === 0;
+                    if (equal) {
+                        selectedIndex_1 = index;
+                    }
+                    return equal;
+                });
+                if (selected) {
+                    // @ts-ignore
+                    var cancelDate = currentDate.splice(selectedIndex_1, 1);
+                    this.setData({ currentDate: currentDate });
+                    this.unselect(cancelDate);
+                }
+                else {
+                    // @ts-ignore
+                    this.select(__spreadArray(__spreadArray([], currentDate, true), [date], false));
+                }
+            }
+            else {
+                this.select(date, true);
+            }
+        },
+        unselect: function (dateArray) {
+            var date = dateArray[0];
+            if (date) {
+                this.$emit('unselect', (0, utils_1.copyDates)(date));
+            }
+        },
+        select: function (date, complete) {
+            if (complete && this.data.type === 'range') {
+                var valid = this.checkRange(date);
+                if (!valid) {
+                    // auto selected to max range if showConfirm
+                    if (this.data.showConfirm) {
+                        this.emit([
+                            date[0],
+                            (0, utils_1.getDayByOffset)(date[0], this.data.maxRange - 1),
+                        ]);
+                    }
+                    else {
+                        this.emit(date);
+                    }
+                    return;
+                }
+            }
+            this.emit(date);
+            if (complete && !this.data.showConfirm) {
+                this.onConfirm();
+            }
+        },
+        emit: function (date) {
+            this.setData({
+                currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date),
+            });
+            this.$emit('select', (0, utils_1.copyDates)(date));
+        },
+        checkRange: function (date) {
+            var _a = this.data, maxRange = _a.maxRange, rangePrompt = _a.rangePrompt, showRangePrompt = _a.showRangePrompt;
+            if (maxRange && (0, utils_1.calcDateNum)(date) > maxRange) {
+                if (showRangePrompt) {
+                    (0, toast_1.default)({
+                        context: this,
+                        message: rangePrompt || "\u9009\u62E9\u5929\u6570\u4E0D\u80FD\u8D85\u8FC7 ".concat(maxRange, " \u5929"),
+                    });
+                }
+                this.$emit('over-range');
+                return false;
+            }
+            return true;
+        },
+        onConfirm: function () {
+            var _this = this;
+            if (this.data.type === 'range' &&
+                !this.checkRange(this.data.currentDate)) {
+                return;
+            }
+            wx.nextTick(function () {
+                // @ts-ignore
+                _this.$emit('confirm', (0, utils_1.copyDates)(_this.data.currentDate));
+            });
+        },
+        onClickSubtitle: function (event) {
+            this.$emit('click-subtitle', event);
+        },
+    },
+});

+ 10 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.json

@@ -0,0 +1,10 @@
+{
+  "component": true,
+  "usingComponents": {
+    "header": "./components/header/index",
+    "month": "./components/month/index",
+    "van-button": "../button/index",
+    "van-popup": "../popup/index",
+    "van-toast": "../toast/index"
+  }
+}

+ 25 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.wxml

@@ -0,0 +1,25 @@
+<wxs src="./index.wxs" module="computed" />
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<import src="./calendar.wxml" />
+
+<van-popup
+  wx:if="{{ poppable }}"
+  custom-class="van-calendar__popup--{{ position }}"
+  close-icon-class="van-calendar__close-icon"
+  show="{{ show }}"
+  round="{{ round }}"
+  position="{{ position }}"
+  closeable="{{ showTitle || showSubtitle }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:enter="onOpen"
+  bind:close="onClose"
+  bind:after-enter="onOpened"
+  bind:after-leave="onClosed"
+>
+  <include src="./calendar.wxml" />
+</van-popup>
+
+<include wx:else src="./calendar.wxml" />
+
+<van-toast id="van-toast" />

+ 38 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.wxs

@@ -0,0 +1,38 @@
+/* eslint-disable */
+var utils = require('./utils.wxs');
+
+function getMonths(minDate, maxDate) {
+  var months = [];
+  var cursor = getDate(minDate);
+
+  cursor.setDate(1);
+  cursor.setMinutes(cursor.getMinutes() - cursor.getTimezoneOffset());
+
+  do {
+    months.push(cursor.getTime());
+    cursor.setMonth(cursor.getMonth() + 1);
+  } while (utils.compareMonth(cursor, getDate(maxDate)) !== 1);
+
+  return months;
+}
+
+function getButtonDisabled(type, currentDate) {
+  if (currentDate == null) {
+    return true;
+  }
+
+  if (type === 'range') {
+    return !currentDate[0] || !currentDate[1];
+  }
+
+  if (type === 'multiple') {
+    return !currentDate.length;
+  }
+
+  return !currentDate;
+}
+
+module.exports = {
+  getMonths: getMonths,
+  getButtonDisabled: getButtonDisabled
+};

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:var(--calendar-height,100%)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:var(--calendar-popup-height,80%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.van-calendar__footer{flex-shrink:0;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:var(--calendar-confirm-button-height,36px)!important;line-height:var(--calendar-confirm-button-line-height,34px)!important;margin:var(--calendar-confirm-button-margin,7px 0)!important}

+ 12 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/utils.d.ts

@@ -0,0 +1,12 @@
+export declare const ROW_HEIGHT = 64;
+export declare function formatMonthTitle(date: Date): string;
+export declare function compareMonth(date1: Date | number, date2: Date | number): 1 | -1 | 0;
+export declare function compareDay(day1: Date | number, day2: Date | number): 1 | -1 | 0;
+export declare function getDayByOffset(date: Date, offset: number): Date;
+export declare function getPrevDay(date: Date): Date;
+export declare function getNextDay(date: Date): Date;
+export declare function getToday(): Date;
+export declare function calcDateNum(date: [Date, Date]): number;
+export declare function copyDates(dates: Date | Date[]): Date | Date[];
+export declare function getMonthEndDay(year: number, month: number): number;
+export declare function getMonths(minDate: number, maxDate: number): number[];

+ 97 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/utils.js

@@ -0,0 +1,97 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getMonths = exports.getMonthEndDay = exports.copyDates = exports.calcDateNum = exports.getToday = exports.getNextDay = exports.getPrevDay = exports.getDayByOffset = exports.compareDay = exports.compareMonth = exports.formatMonthTitle = exports.ROW_HEIGHT = void 0;
+exports.ROW_HEIGHT = 64;
+function formatMonthTitle(date) {
+    if (!(date instanceof Date)) {
+        date = new Date(date);
+    }
+    return "".concat(date.getFullYear(), "\u5E74").concat(date.getMonth() + 1, "\u6708");
+}
+exports.formatMonthTitle = formatMonthTitle;
+function compareMonth(date1, date2) {
+    if (!(date1 instanceof Date)) {
+        date1 = new Date(date1);
+    }
+    if (!(date2 instanceof Date)) {
+        date2 = new Date(date2);
+    }
+    var year1 = date1.getFullYear();
+    var year2 = date2.getFullYear();
+    var month1 = date1.getMonth();
+    var month2 = date2.getMonth();
+    if (year1 === year2) {
+        return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
+    }
+    return year1 > year2 ? 1 : -1;
+}
+exports.compareMonth = compareMonth;
+function compareDay(day1, day2) {
+    if (!(day1 instanceof Date)) {
+        day1 = new Date(day1);
+    }
+    if (!(day2 instanceof Date)) {
+        day2 = new Date(day2);
+    }
+    var compareMonthResult = compareMonth(day1, day2);
+    if (compareMonthResult === 0) {
+        var date1 = day1.getDate();
+        var date2 = day2.getDate();
+        return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
+    }
+    return compareMonthResult;
+}
+exports.compareDay = compareDay;
+function getDayByOffset(date, offset) {
+    date = new Date(date);
+    date.setDate(date.getDate() + offset);
+    return date;
+}
+exports.getDayByOffset = getDayByOffset;
+function getPrevDay(date) {
+    return getDayByOffset(date, -1);
+}
+exports.getPrevDay = getPrevDay;
+function getNextDay(date) {
+    return getDayByOffset(date, 1);
+}
+exports.getNextDay = getNextDay;
+function getToday() {
+    var today = new Date();
+    today.setHours(0, 0, 0, 0);
+    return today;
+}
+exports.getToday = getToday;
+function calcDateNum(date) {
+    var day1 = new Date(date[0]).getTime();
+    var day2 = new Date(date[1]).getTime();
+    return (day2 - day1) / (1000 * 60 * 60 * 24) + 1;
+}
+exports.calcDateNum = calcDateNum;
+function copyDates(dates) {
+    if (Array.isArray(dates)) {
+        return dates.map(function (date) {
+            if (date === null) {
+                return date;
+            }
+            return new Date(date);
+        });
+    }
+    return new Date(dates);
+}
+exports.copyDates = copyDates;
+function getMonthEndDay(year, month) {
+    return 32 - new Date(year, month - 1, 32).getDate();
+}
+exports.getMonthEndDay = getMonthEndDay;
+function getMonths(minDate, maxDate) {
+    var months = [];
+    var cursor = new Date(minDate);
+    cursor.setDate(1);
+    do {
+        months.push(cursor.getTime());
+        cursor.setMonth(cursor.getMonth() + 1);
+    } while (compareMonth(cursor, maxDate) !== 1);
+    return months;
+}
+exports.getMonths = getMonths;

+ 25 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/calendar/utils.wxs

@@ -0,0 +1,25 @@
+/* eslint-disable */
+function getMonthEndDay(year, month) {
+  return 32 -  getDate(year, month - 1, 32).getDate();
+}
+
+function compareMonth(date1, date2) {
+  date1 = getDate(date1);
+  date2 = getDate(date2);
+
+  var year1 = date1.getFullYear();
+  var year2 = date2.getFullYear();
+  var month1 = date1.getMonth();
+  var month2 = date2.getMonth();
+
+  if (year1 === year2) {
+    return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
+  }
+
+  return year1 > year2 ? 1 : -1;
+}
+
+module.exports = {
+  getMonthEndDay: getMonthEndDay,
+  compareMonth: compareMonth
+};

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.d.ts

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

+ 51 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.js

@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var link_1 = require("../mixins/link");
+var component_1 = require("../common/component");
+(0, component_1.VantComponent)({
+    classes: [
+        'num-class',
+        'desc-class',
+        'thumb-class',
+        'title-class',
+        'price-class',
+        'origin-price-class',
+    ],
+    mixins: [link_1.link],
+    props: {
+        tag: String,
+        num: String,
+        desc: String,
+        thumb: String,
+        title: String,
+        price: {
+            type: String,
+            observer: 'updatePrice',
+        },
+        centered: Boolean,
+        lazyLoad: Boolean,
+        thumbLink: String,
+        originPrice: String,
+        thumbMode: {
+            type: String,
+            value: 'aspectFit',
+        },
+        currency: {
+            type: String,
+            value: '¥',
+        },
+    },
+    methods: {
+        updatePrice: function () {
+            var price = this.data.price;
+            var priceArr = price.toString().split('.');
+            this.setData({
+                integerStr: priceArr[0],
+                decimalStr: priceArr[1] ? ".".concat(priceArr[1]) : '',
+            });
+        },
+        onClickThumb: function () {
+            this.jumpLink('thumbLink');
+        },
+    },
+});

+ 6 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.json

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

+ 56 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.wxml

@@ -0,0 +1,56 @@
+<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 wx:else name="thumb" />
+      <van-tag
+        wx:if="{{ tag }}"
+        mark
+        type="danger"
+        custom-class="van-card__tag"
+      >
+        {{ tag }}
+      </van-tag>
+      <slot wx:else name="tag" />
+    </view>
+
+    <view class="van-card__content {{ utils.bem('card__content', { center: centered }) }}">
+      <view>
+        <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>
+
+      <view class="van-card__bottom">
+        <slot name="price-top" />
+        <view wx:if="{{ price || price === 0 }}" class="van-card__price price-class">
+          <text>{{ currency }}</text>
+          <text class="van-card__price-integer">{{ integerStr }}</text>
+          <text class="van-card__price-decimal">{{ decimalStr }}</text>
+        </view>
+        <slot wx:else name="price" />
+        <view wx:if="{{ originPrice || originPrice === 0 }}" class="van-card__origin-price origin-price-class">{{ currency }} {{ originPrice }}</view>
+        <slot wx:else name="origin-price" />
+        <view wx:if="{{ num }}" class="van-card__num num-class">x {{ num }}</view>
+        <slot wx:else  name="num" />
+        <slot name="bottom" />
+      </view>
+    </view>
+  </view>
+
+  <view class="van-card__footer">
+    <slot name="footer" />
+  </view>
+</view>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/card/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-card{background-color:var(--card-background-color,#fafafa);box-sizing:border-box;color:var(--card-text-color,#323233);font-size:var(--card-font-size,12px);padding:var(--card-padding,8px 16px);position:relative}.van-card__header{display:flex}.van-card__header--center{align-items:center;justify-content:center}.van-card__thumb{flex:none;height:var(--card-thumb-size,88px);margin-right:var(--padding-xs,8px);position:relative;width:var(--card-thumb-size,88px)}.van-card__thumb:empty{display:none}.van-card__img{border-radius:8px;height:100%;width:100%}.van-card__content{display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:var(--card-thumb-size,88px);min-width:0;position:relative}.van-card__content--center{justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:var(--card-title-line-height,16px)}.van-card__desc{color:var(--card-desc-color,#646566);line-height:var(--card-desc-line-height,20px)}.van-card__bottom{line-height:20px}.van-card__price{color:var(--card-price-color,#ee0a24);display:inline-block;font-size:var(--card-price-font-size,12px);font-weight:700}.van-card__price-integer{font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{color:var(--card-origin-price-color,#646566);display:inline-block;font-size:var(--card-origin-price-font-size,10px);margin-left:5px;text-decoration:line-through}.van-card__num{float:right}.van-card__tag{left:0;position:absolute!important;top:2px}.van-card__footer{flex:none;text-align:right;width:100%}

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.d.ts

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

+ 13 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.js

@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var component_1 = require("../common/component");
+(0, component_1.VantComponent)({
+    props: {
+        title: String,
+        border: {
+            type: Boolean,
+            value: true,
+        },
+        inset: Boolean,
+    },
+});

+ 3 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.json

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

+ 11 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.wxml

@@ -0,0 +1,11 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  wx:if="{{ title }}"
+  class="{{ utils.bem('cell-group__title', { inset }) }}"
+>
+  {{ title }}
+</view>
+<view class="custom-class {{ utils.bem('cell-group', { inset }) }} {{ border ? 'van-hairline--top-bottom' : '' }}">
+  <slot />
+</view>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-cell-group--inset{border-radius:var(--cell-group-inset-border-radius,8px);margin:var(--cell-group-inset-padding,0 16px);overflow:hidden}.van-cell-group__title{color:var(--cell-group-title-color,#969799);font-size:var(--cell-group-title-font-size,14px);line-height:var(--cell-group-title-line-height,16px);padding:var(--cell-group-title-padding,16px 16px 8px)}.van-cell-group__title--inset{padding:var(--cell-group-inset-title-padding,16px 16px 8px 32px)}

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.d.ts

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

+ 40 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.js

@@ -0,0 +1,40 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var link_1 = require("../mixins/link");
+var component_1 = require("../common/component");
+(0, component_1.VantComponent)({
+    classes: [
+        'title-class',
+        'label-class',
+        'value-class',
+        'right-icon-class',
+        'hover-class',
+    ],
+    mixins: [link_1.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,
+        },
+        titleStyle: String,
+    },
+    methods: {
+        onClick: function (event) {
+            this.$emit('click', event.detail);
+            this.jumpLink();
+        },
+    },
+});

+ 6 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.json

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

+ 47 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.wxml

@@ -0,0 +1,47 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+<wxs src="./index.wxs" module="computed" />
+
+<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="{{ computed.titleStyle({ titleWidth, titleStyle }) }}"
+    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>

+ 17 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.wxs

@@ -0,0 +1,17 @@
+/* eslint-disable */
+var style = require('../wxs/style.wxs');
+var addUnit = require('../wxs/add-unit.wxs');
+
+function titleStyle(data) {
+  return style([
+    {
+      'max-width': addUnit(data.titleWidth),
+      'min-width': addUnit(data.titleWidth),
+    },
+    data.titleStyle,
+  ]);
+}
+
+module.exports = {
+  titleStyle: titleStyle,
+};

Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/cell/index.wxss


+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts

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

+ 39 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.js

@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var relation_1 = require("../common/relation");
+var component_1 = require("../common/component");
+(0, component_1.VantComponent)({
+    field: true,
+    relation: (0, relation_1.useChildren)('checkbox', function (target) {
+        this.updateChild(target);
+    }),
+    props: {
+        max: Number,
+        value: {
+            type: Array,
+            observer: 'updateChildren',
+        },
+        disabled: {
+            type: Boolean,
+            observer: 'updateChildren',
+        },
+        direction: {
+            type: String,
+            value: 'vertical',
+        },
+    },
+    methods: {
+        updateChildren: function () {
+            var _this = this;
+            this.children.forEach(function (child) { return _this.updateChild(child); });
+        },
+        updateChild: function (child) {
+            var _a = this.data, value = _a.value, disabled = _a.disabled, direction = _a.direction;
+            child.setData({
+                value: value.indexOf(child.data.name) !== -1,
+                parentDisabled: disabled,
+                direction: direction,
+            });
+        },
+    },
+});

+ 3 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.json

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

+ 5 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml

@@ -0,0 +1,5 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="{{ utils.bem('checkbox-group', [{ horizontal: direction === 'horizontal' }]) }}">
+  <slot />
+</view>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap}

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.d.ts

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

+ 79 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.js

@@ -0,0 +1,79 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var relation_1 = require("../common/relation");
+var component_1 = require("../common/component");
+function emit(target, value) {
+    target.$emit('input', value);
+    target.$emit('change', value);
+}
+(0, component_1.VantComponent)({
+    field: true,
+    relation: (0, relation_1.useParent)('checkbox-group'),
+    classes: ['icon-class', 'label-class'],
+    props: {
+        value: Boolean,
+        disabled: Boolean,
+        useIconSlot: Boolean,
+        checkedColor: String,
+        labelPosition: {
+            type: String,
+            value: 'right',
+        },
+        labelDisabled: Boolean,
+        shape: {
+            type: String,
+            value: 'round',
+        },
+        iconSize: {
+            type: null,
+            value: 20,
+        },
+    },
+    data: {
+        parentDisabled: false,
+        direction: 'vertical',
+    },
+    methods: {
+        emitChange: function (value) {
+            if (this.parent) {
+                this.setParentValue(this.parent, value);
+            }
+            else {
+                emit(this, value);
+            }
+        },
+        toggle: function () {
+            var _a = this.data, parentDisabled = _a.parentDisabled, disabled = _a.disabled, value = _a.value;
+            if (!disabled && !parentDisabled) {
+                this.emitChange(!value);
+            }
+        },
+        onClickLabel: function () {
+            var _a = this.data, labelDisabled = _a.labelDisabled, parentDisabled = _a.parentDisabled, disabled = _a.disabled, value = _a.value;
+            if (!disabled && !labelDisabled && !parentDisabled) {
+                this.emitChange(!value);
+            }
+        },
+        setParentValue: function (parent, value) {
+            var parentValue = parent.data.value.slice();
+            var name = this.data.name;
+            var max = parent.data.max;
+            if (value) {
+                if (max && parentValue.length >= max) {
+                    return;
+                }
+                if (parentValue.indexOf(name) === -1) {
+                    parentValue.push(name);
+                    emit(parent, parentValue);
+                }
+            }
+            else {
+                var index = parentValue.indexOf(name);
+                if (index !== -1) {
+                    parentValue.splice(index, 1);
+                    emit(parent, parentValue);
+                }
+            }
+        },
+    },
+});

+ 6 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.json

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

+ 31 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.wxml

@@ -0,0 +1,31 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+<wxs src="./index.wxs" module="computed" />
+
+<view class="{{ utils.bem('checkbox', [{ horizontal: direction === 'horizontal' }]) }} custom-class">
+  <view
+    wx:if="{{ labelPosition === 'left' }}"
+    class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}"
+    bindtap="onClickLabel"
+  >
+    <slot />
+  </view>
+  <view class="van-checkbox__icon-wrap" bindtap="toggle">
+    <slot wx:if="{{ useIconSlot }}" name="icon" />
+    <van-icon
+      wx:else
+      name="success"
+      size="0.8em"
+      class="{{ utils.bem('checkbox__icon', [shape, { disabled: disabled || parentDisabled, checked: value }]) }}"
+      style="{{ computed.iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) }}"
+      custom-class="icon-class"
+      custom-style="line-height: 1.25em;"
+    />
+  </view>
+  <view
+    wx:if="{{ labelPosition === 'right' }}"
+    class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}"
+    bindtap="onClickLabel"
+  >
+    <slot />
+  </view>
+</view>

+ 20 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.wxs

@@ -0,0 +1,20 @@
+/* eslint-disable */
+var style = require('../wxs/style.wxs');
+var addUnit = require('../wxs/add-unit.wxs');
+
+function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) {
+  var styles = {
+    'font-size': addUnit(iconSize),
+  };
+
+  if (checkedColor && value && !disabled && !parentDisabled) {
+    styles['border-color'] = checkedColor;
+    styles['background-color'] = checkedColor;
+  }
+
+  return style(styles);
+}
+
+module.exports = {
+  iconStyle: iconStyle,
+};

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/checkbox/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-checkbox{align-items:center;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox--horizontal{margin-right:12px}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{flex:none}.van-checkbox__icon{align-items:center;border:1px solid var(--checkbox-border-color,#c8c9cc);box-sizing:border-box;color:transparent;display:flex;font-size:var(--checkbox-size,20px);height:1em;justify-content:center;text-align:center;transition-duration:var(--checkbox-transition-duration,.2s);transition-property:color,border-color,background-color;width:1em}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:var(--checkbox-checked-icon-color,#1989fa);color:#fff}.van-checkbox__icon--disabled{background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;color:var(--checkbox-label-color,#323233);padding-left:var(--checkbox-label-margin,10px)}.van-checkbox__label--left{float:left;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0}

+ 4 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/canvas.d.ts

@@ -0,0 +1,4 @@
+/// <reference types="miniprogram-api-typings" />
+declare type CanvasContext = WechatMiniprogram.CanvasContext;
+export declare function adaptor(ctx: CanvasContext & Record<string, unknown>): CanvasContext;
+export {};

+ 47 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/canvas.js

@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.adaptor = void 0;
+function adaptor(ctx) {
+    // @ts-ignore
+    return Object.assign(ctx, {
+        setStrokeStyle: function (val) {
+            ctx.strokeStyle = val;
+        },
+        setLineWidth: function (val) {
+            ctx.lineWidth = val;
+        },
+        setLineCap: function (val) {
+            ctx.lineCap = val;
+        },
+        setFillStyle: function (val) {
+            ctx.fillStyle = val;
+        },
+        setFontSize: function (val) {
+            ctx.font = String(val);
+        },
+        setGlobalAlpha: function (val) {
+            ctx.globalAlpha = val;
+        },
+        setLineJoin: function (val) {
+            ctx.lineJoin = val;
+        },
+        setTextAlign: function (val) {
+            ctx.textAlign = val;
+        },
+        setMiterLimit: function (val) {
+            ctx.miterLimit = val;
+        },
+        setShadow: function (offsetX, offsetY, blur, color) {
+            ctx.shadowOffsetX = offsetX;
+            ctx.shadowOffsetY = offsetY;
+            ctx.shadowBlur = blur;
+            ctx.shadowColor = color;
+        },
+        setTextBaseline: function (val) {
+            ctx.textBaseline = val;
+        },
+        createCircularGradient: function () { },
+        draw: function () { },
+    });
+}
+exports.adaptor = adaptor;

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.d.ts

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

+ 203 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.js

@@ -0,0 +1,203 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var color_1 = require("../common/color");
+var component_1 = require("../common/component");
+var utils_1 = require("../common/utils");
+var validator_1 = require("../common/validator");
+var version_1 = require("../common/version");
+var canvas_1 = require("./canvas");
+function format(rate) {
+    return Math.min(Math.max(rate, 0), 100);
+}
+var PERIMETER = 2 * Math.PI;
+var BEGIN_ANGLE = -Math.PI / 2;
+var STEP = 1;
+(0, component_1.VantComponent)({
+    props: {
+        text: String,
+        lineCap: {
+            type: String,
+            value: 'round',
+        },
+        value: {
+            type: Number,
+            value: 0,
+            observer: 'reRender',
+        },
+        speed: {
+            type: Number,
+            value: 50,
+        },
+        size: {
+            type: Number,
+            value: 100,
+            observer: function () {
+                this.drawCircle(this.currentValue);
+            },
+        },
+        fill: String,
+        layerColor: {
+            type: String,
+            value: color_1.WHITE,
+        },
+        color: {
+            type: null,
+            value: color_1.BLUE,
+            observer: function () {
+                var _this = this;
+                this.setHoverColor().then(function () {
+                    _this.drawCircle(_this.currentValue);
+                });
+            },
+        },
+        type: {
+            type: String,
+            value: '',
+        },
+        strokeWidth: {
+            type: Number,
+            value: 4,
+        },
+        clockwise: {
+            type: Boolean,
+            value: true,
+        },
+    },
+    data: {
+        hoverColor: color_1.BLUE,
+    },
+    methods: {
+        getContext: function () {
+            var _this = this;
+            var _a = this.data, type = _a.type, size = _a.size;
+            if (type === '' || !(0, version_1.canIUseCanvas2d)()) {
+                var ctx = wx.createCanvasContext('van-circle', this);
+                return Promise.resolve(ctx);
+            }
+            var dpr = (0, utils_1.getSystemInfoSync)().pixelRatio;
+            return new Promise(function (resolve) {
+                wx.createSelectorQuery()
+                    .in(_this)
+                    .select('#van-circle')
+                    .node()
+                    .exec(function (res) {
+                    var canvas = res[0].node;
+                    var ctx = canvas.getContext(type);
+                    if (!_this.inited) {
+                        _this.inited = true;
+                        canvas.width = size * dpr;
+                        canvas.height = size * dpr;
+                        ctx.scale(dpr, dpr);
+                    }
+                    resolve((0, canvas_1.adaptor)(ctx));
+                });
+            });
+        },
+        setHoverColor: function () {
+            var _this = this;
+            var _a = this.data, color = _a.color, size = _a.size;
+            if ((0, validator_1.isObj)(color)) {
+                return this.getContext().then(function (context) {
+                    var LinearColor = context.createLinearGradient(size, 0, 0, 0);
+                    Object.keys(color)
+                        .sort(function (a, b) { return parseFloat(a) - parseFloat(b); })
+                        .map(function (key) {
+                        return LinearColor.addColorStop(parseFloat(key) / 100, color[key]);
+                    });
+                    _this.hoverColor = LinearColor;
+                });
+            }
+            this.hoverColor = color;
+            return Promise.resolve();
+        },
+        presetCanvas: function (context, strokeStyle, beginAngle, endAngle, fill) {
+            var _a = this.data, strokeWidth = _a.strokeWidth, lineCap = _a.lineCap, clockwise = _a.clockwise, size = _a.size;
+            var position = size / 2;
+            var radius = position - strokeWidth / 2;
+            context.setStrokeStyle(strokeStyle);
+            context.setLineWidth(strokeWidth);
+            context.setLineCap(lineCap);
+            context.beginPath();
+            context.arc(position, position, radius, beginAngle, endAngle, !clockwise);
+            context.stroke();
+            if (fill) {
+                context.setFillStyle(fill);
+                context.fill();
+            }
+        },
+        renderLayerCircle: function (context) {
+            var _a = this.data, layerColor = _a.layerColor, fill = _a.fill;
+            this.presetCanvas(context, layerColor, 0, PERIMETER, fill);
+        },
+        renderHoverCircle: function (context, formatValue) {
+            var clockwise = this.data.clockwise;
+            // 结束角度
+            var progress = PERIMETER * (formatValue / 100);
+            var endAngle = clockwise
+                ? BEGIN_ANGLE + progress
+                : 3 * Math.PI - (BEGIN_ANGLE + progress);
+            this.presetCanvas(context, this.hoverColor, BEGIN_ANGLE, endAngle);
+        },
+        drawCircle: function (currentValue) {
+            var _this = this;
+            var size = this.data.size;
+            this.getContext().then(function (context) {
+                context.clearRect(0, 0, size, size);
+                _this.renderLayerCircle(context);
+                var formatValue = format(currentValue);
+                if (formatValue !== 0) {
+                    _this.renderHoverCircle(context, formatValue);
+                }
+                context.draw();
+            });
+        },
+        reRender: function () {
+            var _this = this;
+            // tofector 动画暂时没有想到好的解决方案
+            var _a = this.data, value = _a.value, speed = _a.speed;
+            if (speed <= 0 || speed > 1000) {
+                this.drawCircle(value);
+                return;
+            }
+            this.clearMockInterval();
+            this.currentValue = this.currentValue || 0;
+            var run = function () {
+                _this.interval = setTimeout(function () {
+                    if (_this.currentValue !== value) {
+                        if (Math.abs(_this.currentValue - value) < STEP) {
+                            _this.currentValue = value;
+                        }
+                        else if (_this.currentValue < value) {
+                            _this.currentValue += STEP;
+                        }
+                        else {
+                            _this.currentValue -= STEP;
+                        }
+                        _this.drawCircle(_this.currentValue);
+                        run();
+                    }
+                    else {
+                        _this.clearMockInterval();
+                    }
+                }, 1000 / speed);
+            };
+            run();
+        },
+        clearMockInterval: function () {
+            if (this.interval) {
+                clearTimeout(this.interval);
+                this.interval = null;
+            }
+        },
+    },
+    mounted: function () {
+        var _this = this;
+        this.currentValue = this.data.value;
+        this.setHoverColor().then(function () {
+            _this.drawCircle(_this.currentValue);
+        });
+    },
+    destroyed: function () {
+        this.clearMockInterval();
+    },
+});

+ 3 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.json

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

+ 9 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.wxml

@@ -0,0 +1,9 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-circle">
+  <canvas class="van-circle__canvas" type="{{ type }}" style="width: {{ utils.addUnit(size) }};height:{{ utils.addUnit(size) }}" id="van-circle" canvas-id="van-circle"></canvas>
+  <view wx:if="{{ !text }}" class="van-circle__text">
+    <slot></slot>
+  </view>
+  <cover-view wx:else class="van-circle__text">{{ text }}</cover-view>
+</view>

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/circle/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-circle{display:inline-block;position:relative;text-align:center}.van-circle__text{color:var(--circle-text-color,#323233);left:0;position:absolute;top:50%;transform:translateY(-50%);width:100%}

+ 1 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/col/index.d.ts

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

+ 11 - 0
htmldev/wxMini/miniprogram_npm/@vant/weapp/col/index.js

@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var relation_1 = require("../common/relation");
+var component_1 = require("../common/component");
+(0, component_1.VantComponent)({
+    relation: (0, relation_1.useParent)('row'),
+    props: {
+        span: Number,
+        offset: Number,
+    },
+});

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.