Repository: woniudiancang/bee Branch: master Commit: d26ceea613c7 Files: 653 Total size: 1.2 MB Directory structure: gitextract_db_bu7mz/ ├── .gitignore ├── LICENSE ├── README.md ├── app.js ├── app.json ├── app.wxss ├── components/ │ ├── parser.20200731.min/ │ │ ├── libs/ │ │ │ ├── CssHandler.js │ │ │ ├── MpHtmlParser.js │ │ │ └── config.js │ │ ├── parser.js │ │ ├── parser.json │ │ ├── parser.wxml │ │ ├── parser.wxss │ │ └── trees/ │ │ ├── trees.js │ │ ├── trees.json │ │ ├── trees.wxml │ │ └── trees.wxss │ └── payment/ │ ├── index.js │ ├── index.json │ ├── index.wxml │ ├── index.wxss │ └── sn.txt ├── config.js ├── i18n/ │ ├── en.js │ ├── index.js │ └── zh_CN.js ├── miniprogram_npm/ │ ├── @vant/ │ │ └── weapp/ │ │ ├── action-sheet/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── area/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── button/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── calendar/ │ │ │ ├── calendar.wxml │ │ │ ├── components/ │ │ │ │ ├── header/ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.json │ │ │ │ │ ├── index.wxml │ │ │ │ │ └── index.wxss │ │ │ │ └── month/ │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── index.json │ │ │ │ ├── index.wxml │ │ │ │ ├── index.wxs │ │ │ │ └── index.wxss │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ ├── utils.d.ts │ │ │ ├── utils.js │ │ │ └── utils.wxs │ │ ├── card/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── cascader/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── cell/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── cell-group/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── checkbox/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── checkbox-group/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── circle/ │ │ │ ├── canvas.d.ts │ │ │ ├── canvas.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── col/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── collapse/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── collapse-item/ │ │ │ ├── animate.d.ts │ │ │ ├── animate.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── common/ │ │ │ ├── color.d.ts │ │ │ ├── color.js │ │ │ ├── component.d.ts │ │ │ ├── component.js │ │ │ ├── index.wxss │ │ │ ├── relation.d.ts │ │ │ ├── relation.js │ │ │ ├── style/ │ │ │ │ ├── clearfix.wxss │ │ │ │ ├── ellipsis.wxss │ │ │ │ ├── hairline.wxss │ │ │ │ ├── mixins/ │ │ │ │ │ ├── clearfix.wxss │ │ │ │ │ ├── ellipsis.wxss │ │ │ │ │ └── hairline.wxss │ │ │ │ └── var.wxss │ │ │ ├── utils.d.ts │ │ │ ├── utils.js │ │ │ ├── validator.d.ts │ │ │ ├── validator.js │ │ │ ├── version.d.ts │ │ │ └── version.js │ │ ├── config-provider/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxs │ │ ├── count-down/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ ├── utils.d.ts │ │ │ └── utils.js │ │ ├── datetime-picker/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── definitions/ │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── dialog/ │ │ │ ├── dialog.d.ts │ │ │ ├── dialog.js │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── divider/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── dropdown-item/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ ├── shared.d.ts │ │ │ └── shared.js │ │ ├── dropdown-menu/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── empty/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── field/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ ├── input.wxml │ │ │ ├── props.d.ts │ │ │ ├── props.js │ │ │ ├── textarea.wxml │ │ │ ├── types.d.ts │ │ │ └── types.js │ │ ├── goods-action/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── goods-action-button/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── goods-action-icon/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── grid/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── grid-item/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── icon/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── image/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── index-anchor/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── index-bar/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── info/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── loading/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── mixins/ │ │ │ ├── basic.d.ts │ │ │ ├── basic.js │ │ │ ├── button.d.ts │ │ │ ├── button.js │ │ │ ├── link.d.ts │ │ │ ├── link.js │ │ │ ├── page-scroll.d.ts │ │ │ ├── page-scroll.js │ │ │ ├── touch.d.ts │ │ │ ├── touch.js │ │ │ ├── transition.d.ts │ │ │ └── transition.js │ │ ├── nav-bar/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── notice-bar/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── notify/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ ├── notify.d.ts │ │ │ └── notify.js │ │ ├── overlay/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ └── overlay.wxml │ │ ├── panel/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── picker/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ ├── shared.d.ts │ │ │ ├── shared.js │ │ │ └── toolbar.wxml │ │ ├── picker-column/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── popup/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ └── popup.wxml │ │ ├── progress/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── radio/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── radio-group/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── rate/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── row/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── search/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── share-sheet/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ ├── options.d.ts │ │ │ ├── options.js │ │ │ ├── options.json │ │ │ ├── options.wxml │ │ │ ├── options.wxs │ │ │ └── options.wxss │ │ ├── sidebar/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── sidebar-item/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── skeleton/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── slider/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── stepper/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── steps/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── sticky/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── submit-bar/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── swipe-cell/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── switch/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── tab/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── tabbar/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── tabbar-item/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ ├── tabs/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── tag/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── toast/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxss │ │ │ ├── toast.d.ts │ │ │ └── toast.js │ │ ├── transition/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── tree-select/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ └── index.wxss │ │ ├── uploader/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ ├── index.wxs │ │ │ ├── index.wxss │ │ │ ├── shared.d.ts │ │ │ ├── shared.js │ │ │ ├── utils.d.ts │ │ │ └── utils.js │ │ └── wxs/ │ │ ├── add-unit.wxs │ │ ├── array.wxs │ │ ├── bem.wxs │ │ ├── memoize.wxs │ │ ├── object.wxs │ │ ├── style.wxs │ │ └── utils.wxs │ ├── apifm-wxapi/ │ │ └── index.js │ ├── wxa-plugin-canvas/ │ │ ├── index/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── poster/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ └── poster.js │ └── wxbarcode/ │ └── index.js ├── package.json ├── pages/ │ ├── about/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── ad/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── all-orders/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── asset/ │ │ ├── cash-log.js │ │ ├── cash-log.json │ │ ├── cash-log.wxml │ │ ├── cash-log.wxss │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── recharge-log.js │ │ ├── recharge-log.json │ │ ├── recharge-log.wxml │ │ └── recharge-log.wxss │ ├── booking/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── card/ │ │ ├── exchange.js │ │ ├── exchange.json │ │ ├── exchange.wxml │ │ ├── exchange.wxss │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── logs.js │ │ ├── logs.json │ │ ├── logs.wxml │ │ ├── logs.wxss │ │ ├── receive.js │ │ ├── receive.json │ │ ├── receive.wxml │ │ ├── receive.wxss │ │ ├── send.js │ │ ├── send.json │ │ ├── send.wxml │ │ └── send.wxss │ ├── cart/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── order.js │ │ ├── order.json │ │ ├── order.wxml │ │ └── order.wxss │ ├── coupons/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── goods/ │ │ ├── list.js │ │ ├── list.json │ │ ├── list.wxml │ │ └── list.wxss │ ├── goods-details/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── home/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── index/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── member-center/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── my/ │ │ ├── feedback.js │ │ ├── feedback.json │ │ ├── feedback.wxml │ │ ├── feedback.wxss │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── user-code.js │ │ ├── user-code.json │ │ ├── user-code.wxml │ │ └── user-code.wxss │ ├── notice/ │ │ ├── detail.js │ │ ├── detail.json │ │ ├── detail.wxml │ │ └── detail.wxss │ ├── order-details/ │ │ ├── doing.js │ │ ├── doing.json │ │ ├── doing.wxml │ │ ├── doing.wxss │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ ├── index.wxss │ │ ├── scan-result.js │ │ ├── scan-result.json │ │ ├── scan-result.wxml │ │ └── scan-result.wxss │ ├── pay/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── queue/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ ├── score/ │ │ ├── logs.js │ │ ├── logs.json │ │ ├── logs.wxml │ │ └── logs.wxss │ ├── shop/ │ │ ├── detail.js │ │ ├── detail.json │ │ ├── detail.wxml │ │ ├── detail.wxss │ │ ├── join-apply.js │ │ ├── join-apply.json │ │ ├── join-apply.wxml │ │ ├── join-apply.wxss │ │ ├── select.js │ │ ├── select.json │ │ ├── select.wxml │ │ └── select.wxss │ ├── sign/ │ │ ├── index.js │ │ ├── index.json │ │ ├── index.wxml │ │ └── index.wxss │ └── youhui-pay/ │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── project.config.json ├── project.private.config.json ├── sitemap.json └── utils/ ├── auth.js ├── image.js ├── pay.js ├── runtime.js ├── tools.js └── util.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ dist/ package-lock.json node_modules/ .DS_Store ================================================ FILE: LICENSE ================================================ 木兰宽松许可证, 第2版 木兰宽松许可证, 第2版 2020年1月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: 0. 定义 “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体”是指提交贡献的机构及其“关联实体”。 “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第2版,应用到您的软件 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; 3, 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License,Version 2 Mulan Permissive Software License,Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. ================================================ FILE: README.md ================================================ # 微信小程序——餐饮点餐商城 微信小程序——餐饮点餐商城,是针对餐饮行业推出的一套完整的餐饮解决方案,实现了用户在线点餐下单、外卖、叫号排队、支付、配送等功能,完美的使餐饮行业更高效便捷! 大家如果在使用过程有什么问题,欢迎通过lssues与我们交流! 如果本项目对您有所帮助或者启发,请给我们 Star 吧,您的鼓励是我们最大对动力~ # 加微信联系我 # 自提/外卖 扫码体验 # 扫码点餐演示 | 座号A1 | 座号A2 | 座号A3 | 座号A4 | 座号A5 | | :------: | :------: | :------: | :------: | :------: | | | | | | | | 座号A6 | 座号A7 | 座号A8 | 座号A9 | 座号A10 | | :------: | :------: | :------: | :------: | :------: | | | | | | | # 本项目使用了下面的组件,在此鸣谢 - [vant-UI库](https://youzan.github.io/vant-weapp/) - [小程序在线接口-SDK](https://github.com/gooking/apifm-wxapi) - [api工厂](https://admin.s2m.cc) - [FMUI-轻松活泼-icon](https://www.iconfont.cn/collections/detail?spm=a313x.7781069.0.da5a778a4&cid=17041) - [小程序HTML解析组件](https://github.com/jin-yufeng/Parser) - [生成条码和二维码](https://github.com/alsey/wxbarcode) # 其他优秀开源模板推荐 - [天使童装](https://github.com/EastWorld/wechat-app-mall) / [码云镜像](https://gitee.com/javazj/wechat-app-mall) / [GitCode镜像](https://gitcode.com/gooking2/wechat-app-mall) - [天使童装(uni-app版本)](https://github.com/gooking/uni-app-mall) / [码云镜像](https://gitee.com/javazj/uni-app-mall) / [GitCode镜像](https://gitcode.com/gooking2/uni-app-mall) - [简约精品商城(uni-app版本)](https://github.com/gooking/uni-app--mini-mall) / [码云镜像](https://gitee.com/javazj/uni-app--mini-mall) / [GitCode镜像](https://gitcode.com/gooking2/uni-app--mini-mall) - [舔果果小铺(升级版)](https://github.com/gooking/TianguoguoXiaopu) - [面馆风格小程序](https://gitee.com/javazj/noodle_shop_procedures) - [AI名片](https://github.com/gooking/visitingCard) / [码云镜像](https://gitee.com/javazj/visitingCard) / [GitCode镜像](https://gitcode.com/gooking2/visitingCard) - [仿海底捞订座排队 (uni-app)](https://github.com/gooking/dingzuopaidui) / [码云镜像](https://gitee.com/javazj/dingzuopaidui) / [GitCode镜像](https://gitcode.com/gooking2/dingzuopaidui) - [H5版本商城/餐饮](https://github.com/gooking/vueMinishop) / [码云镜像](https://gitee.com/javazj/vueMinishop) / [GitCode镜像](https://gitcode.com/gooking2/vueMinishop) - [餐饮点餐](https://github.com/woniudiancang/bee) / [码云镜像](https://gitee.com/woniudiancang/bee) / [GitCode镜像](https://gitcode.com/gooking2/bee) - [企业微展](https://github.com/gooking/qiyeweizan) / [码云镜像](https://gitee.com/javazj/qiyeweizan) / [GitCode镜像](https://gitcode.com/gooking2/qiyeweizan) - [无人棋牌室](https://github.com/gooking/wurenqipai) / [码云镜像](https://gitee.com/javazj/wurenqipai) / [GitCode镜像](https://gitcode.com/gooking2/wurenqipai) - [酒店客房服务小程序](https://github.com/gooking/hotelRoomService) / [码云镜像](https://gitee.com/javazj/hotelRoomService) / [GitCode镜像](https://gitcode.com/gooking2/hotelRoomService) - [面包店风格小程序](https://github.com/gooking/bread) / [码云镜像](https://gitee.com/javazj/bread) / [GitCode镜像](https://gitcode.com/gooking2/bread) - [朋友圈发圈素材小程序](https://github.com/gooking/moments) / [码云镜像](https://gitee.com/javazj/moments) / [GitCode镜像](https://gitcode.com/gooking2/moments) - [小红书企业微展](https://github.com/gooking/xhs-qiyeweizan) / [码云镜像](https://gitee.com/javazj/xhs-qiyeweizan) / [GitCode镜像](https://gitcode.com/gooking2/xhs-qiyeweizan) - [旧物回收、废品回收](https://github.com/gooking/recycle) / [码云镜像](https://gitee.com/javazj/recycle) / [GitCode镜像](https://gitcode.com/gooking2/recycle) - [会员卡(饭卡)储值消费系统](https://github.com/gooking/mealcard) / [码云镜像](https://gitee.com/javazj/mealcard) / [GitCode镜像](https://gitcode.com/gooking2/mealcard) # 使用教程 ## 注册开通小程序账号 https://mp.weixin.qq.com/ 根据自己的实际情况选择 “企业”、“个体工商户”身份,注册小程序账号,商城类小程序不支持个人用户上线,所以一定要选择企业或者个体户,获得你自己小程序的 appid 和 secret 信息,保存好,下面会用到: - [如何查看小程序的AppID和AppSecret](https://jingyan.baidu.com/article/642c9d340305e3644a46f795.html) 你需要设置小程序的合法域名,否则开发工具上运行正常,手机访问的时候将看不到数据 - [设置合法服务器域名](https://www.yuque.com/apifm/doc/tvpou9) ## 注册开通后台账号 https://admin.s2m.cc/ 免费注册开通新后台后登录,登录后的首页,请记下你的专属域名,后面会用到 左侧菜单 “工厂设置” --> “数据克隆” --> “将别人的数据克隆给我” 对方商户ID填写 27 点击 “立即克隆”,克隆成功后,F5 刷新一下后台 ## 配置小程序APPID/SECRET 左侧菜单,微信设置,填写配置上一步获得的 appid 和 secret 这一步很重要!!! 如果没有正确配置,下面步骤中打开小程序将无法连接你的后台 ## 配置微信支付 左侧菜单,系统设置 --> 在线支付配置,填写您自己的微信支付的信息 ## 下载安装开发工具 https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html ## 运行小程序看效果 双击运行第一步安装的小程序开发工具,打开看效果: 导入项目这里,目录选择你 “第二步” 中下载并加压的小程序代码所在目录 APPID 务必要改成你自己的小程序的 APPID APPID 务必要改成你自己的小程序的 APPID APPID 务必要改成你自己的小程序的 APPID 然后点击导入按钮 - [如何查看小程序的AppID和AppSecret](https://jingyan.baidu.com/article/642c9d340305e3644a46f795.html) ## 配置对接你自己的后台 在开发工具中 config.js 中的subDomain 改成你自己专属域名, ctrl + s 保存 - [如何查看自己的subDomain](https://www.yuque.com/apifm/doc/qr6l4m) ## 用户自提的订单如何扫码核销 用户选择自提的订单,会在底部取餐菜单界面显示订单信息以及取餐码,商家可通过 “我的” --> “扫码核销” 菜单,点击以后调起手机相机,扫用户出示的取餐码完成核销 但是默认情况下,是看不见 “我的” --> “扫码核销” 菜单的,需要在后台 “系统设置” --> “系统参数” ,添加文本类型的参数: - 参数名 order_hx_uids - 参数值,具有核销权限的用户的用户编号,多个用户编号,使用英文的逗号分隔 重新进入小程序以后,就可以看见 “扫码核销” 的菜单了 ## 桌号管理 登录后台,左侧菜单 “桌号管理”,添加并管理你的桌号信息,添加以后在列表你将可以看到 ID 和 密钥,这两个数据用来生成桌子的二维码 ## 生成桌子二维码 例如上面的ID为 308,密钥为 d3PiIY,那么现在去左侧菜单微信设置 -> 小程序设置 -> 获取小程序二维码(圆形码),即可获取小程序码: 填写信息如下: - 页面路径: pages/index/index - scene参数: 12879,308,d3PiIY - 其中 12879 为门店ID,逗号一定是英文的逗号,而且不要有空格,注意检查下 其中 shopId 为你对应的门店ID,其他参数默认就可以了 ## 如何修改小程序首页标题 登录后台,左侧菜单 “系统设置” --> “系统参数” ,添加一个文本类型的参数: mallName (注意大小写),小程序即可显示你后台填的名称 ## 根据选择的不同门店,区分显示商品(只显示当前门店的商品) 登录后台,左侧菜单 “系统设置” --> “系统参数” ,添加一个开关类型的参数: shop_goods_split,开启为区分,关闭为不区分 ## 如何设置服务范围(多少公里) 后台 “商场管理” --> “门店管理” ,编辑门店,服务距离处,填写你希望配送的距离即可 ## 如何显示销量 商品列表接口、商品详情接口,都会返回商品的销量数据,分别是 numberOrders 和 numberSells 两个字段,你可以在界面上任何希望显示销量的地方,进行展示即可 - numberOrders 订单数量 - numberSells 商品数量 假如说用户下了一个订单一次性购买10份这个商品,那么 numberOrders = 1 ,numberSells = 10 ## 如何区分门店显示商品 后台左侧菜单“系统设置” -> “系统参数”,增加一个开关类型的参数: shop_goods_split 开启则只会显示当前门店的商品,关闭则显示所有门店的商品 ## 在线订座如何配置 1. 左侧菜单 “预约报名” --> “项目设置” ,添加一个项目,添加完以后会得到一个编号 2. 左侧菜单 “系统设置” --> “系统参数”, 修改编号为 `zxdz` 的参数,将你的编号填进去即可 ## 配置达达配送 1. [如何对接达达配送,先按这个教程完成配置](https://www.yuque.com/apifm/doc/gxk08t) 2. 后台 “商城管理” --> “门店管理”, 编辑,门店编号填写你达达对应的门店编号,生鲜配送输入框填写 `dada` ## 二次开发如何使用国际化实现多语言 1. `js` 文件中,onload 方法中,加入: `getApp().initLanguage(this)` ;注意这里的路径要填正确,否则提示文件找不到; 2. 页面中可以直接显示语言包中的内容: `{{ $t.test.name }}`; 3. 语言内容,直接修改 `i18n` 文件夹中对应的语言的文件即可; ## 打印机配置自动出票 1. [打印机配置教程](https://www.it120.cc/help/ggrun8.html) 2. [打印机模板变量详细说明](https://www.it120.cc/help/wtviya.html) 3. 小票机模板: [小票机模版①](https://www.it120.cc/help/xc2hk2q4yrop12ll.html) [小票机模版②](https://www.it120.cc/help/taan6w2wvt6d00mg.html) [小票机模版③](https://www.it120.cc/help/vn7l4p2m28x7x30h.html) 3. 杯贴机模板: [杯贴机模版①](https://www.it120.cc/help/nl0frezogy8uunet.html) [杯贴机模版②](https://www.it120.cc/help/mlcqigcmz1ggydw2.html) # 常见问题 ## 无法登陆 / 无法获取 openid 1. 请检查 config.js 文件中的 subDomain 是否已经修改成你自己的专属域名了 [如何查看自己的subDomain](https://www.yuque.com/apifm/doc/qr6l4m) 2. 确保下面3个地方的 appID 你填的是一样的 - 登录你的小程序商户后台(https://mp.weixin.qq.com)左侧菜单 “开发” --> “开发设置” 中的 appid - 点击你的小程序开发工具 右上角 的“详情” --> “基本信息” 中的 appid - 登录你的 api工厂 后台(https://admin.s2m.cc),左侧菜单平台设置,微信小程序中的 appid ## 获取手机号码失败,提示没权限 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html 官方文档有说明,获取手机号码的前提条件是:非个人开发者,且完成了认证的小程序开放(不包含海外主体) ## wx.getLocation 改为 wx.getFuzzyLocation (getLocation的接口权限太难申请了) 微信申请 getLocation 接口的审核比较严格,可能比较难申请到这个接口,可以用 wx.getFuzzyLocation 来代替: https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.getFuzzyLocation.html 开发工具,全局替换以下代码: 需要替换3次 `scope.userLocation` 替换为 `scope.userFuzzyLocation` 如图: 再全局替换代码: `wx.getLocation` 替换为 `wx.getFuzzyLocation` 再全局替换代码: `"getLocation"` 替换为 `"getFuzzyLocation"` ## 小程序订单中心path 怎么填 请填写 `pages/all-orders/index` ## 小程序订单发货的地址怎么填 小程序订单管理 -> 订单信息录入 -> 小程序商品订单详情path `pages/order-details/index?payOrderNo=${商品订单号}` 直接一模一样复制上面的这个填进去就行 ## 微信支付MA授权(appid和mch_id不匹配) [微信支付MA授权(appid和mch_id不匹配)](https://www.yuque.com/apifm/doc/zrui8q) ## 使用国际化多语言,切换语言后底部菜单显示不对 `/i18n/index.js` 文件里面的菜单内容估计忘记修改了 ## 商家入驻申请页面 1. app.json 中,添加一个页面路径: `pages/shop/join-apply` 2. pages/shop/select 页面最下面的入口代码放开 ================================================ FILE: app.js ================================================ const WXAPI = require('apifm-wxapi') const CONFIG = require('config.js') const AUTH = require('utils/auth') const i18n = require("i18n/index") App({ onLaunch: function() { i18n.getLanguage() this.setTabBarLanguage() const $t = i18n.$t() WXAPI.init(CONFIG.subDomain) WXAPI.setMerchantId(CONFIG.merchantId) const that = this; // 检测新版本 const updateManager = wx.getUpdateManager() updateManager.onUpdateReady(function () { wx.showModal({ confirmText: $t.common.confirm, cancelText: $t.common.cancel, content: $t.common.upgrade, success(res) { if (res.confirm) { // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate() } } }) }) /** * 初次加载判断网络情况 * 无网络状态下根据实际情况进行调整 */ wx.getNetworkType({ success(res) { const networkType = res.networkType if (networkType === 'none') { that.globalData.isConnected = false wx.showToast({ title: $t.common.noNetwork, icon: 'loading' }) } } }); /** * 监听网络状态变化 * 可根据业务需求进行调整 */ wx.onNetworkStatusChange(function(res) { if (!res.isConnected) { that.globalData.isConnected = false wx.showToast({ title: $t.common.networkDown, icon: 'loading' }) } else { that.globalData.isConnected = true wx.hideToast() } }) WXAPI.queryConfigBatch('mallName,myBg,mapPos,order_hx_uids,subscribe_ids,share_profile,zxdz,admin_uids,shop_goods_split,QQ_MAP_KEY,shop_join_open,create_order_select_time,packaging_fee,customerServiceChatCorpId,customerServiceChatUrl,alipay,share_pic,tihuodianOpen').then(res => { if (res.code == 0) { res.data.forEach(config => { wx.setStorageSync(config.key, config.value); }) if (this.configLoadOK) { this.configLoadOK() } } }) }, onShow (e) { if (e && e.query && e.query.scene) { const scene = decodeURIComponent(e.query.scene) // 处理扫码进商品详情页面的逻辑 if (scene && scene.split(',').length == 3) { // 扫码点餐 } else { AUTH.checkHasLogined().then(isLogined => { if (!isLogined) { AUTH.authorize().then(() => { this.getUserApiInfo() }) } else { this.getUserApiInfo() } }) } } else { AUTH.checkHasLogined().then(isLogined => { if (!isLogined) { AUTH.authorize().then(() => { this.getUserApiInfo() }) } else { this.getUserApiInfo() } }) } // 保存邀请人 if (e && e.query && e.query.inviter_id) { wx.setStorageSync('referrer', e.query.inviter_id) if (e.shareTicket) { wx.getShareInfo({ shareTicket: e.shareTicket, success: res => { console.log(res) console.log({ referrer: e.query.inviter_id, encryptedData: res.encryptedData, iv: res.iv }) wx.login({ success(loginRes) { if (loginRes.code) { WXAPI.shareGroupGetScore( loginRes.code, e.query.inviter_id, res.encryptedData, res.iv ).then(_res => { console.log(_res) }).catch(err => { console.error(err) }) } else { console.error(loginRes.errMsg) } } }) } }) } } this.refreshStorageShopInfo() }, async refreshStorageShopInfo() { // 刷新本地缓存的门店信息 https://www.yuque.com/apifm/nu0f75/cu4cfi let shopInfo = wx.getStorageSync('shopInfo') if (!shopInfo) { return } const res = await WXAPI.shopSubdetail(shopInfo.id) if (res.code == 0) { const distance = shopInfo.distance shopInfo = res.data.info shopInfo.distance = distance wx.setStorageSync('shopInfo', shopInfo) } }, initLanguage(_this) { _this.setData({ language: i18n.getLanguage(), $t: i18n.$t(), }) }, changeLang(_this) { const langs = i18n.langs const nameArray = [] langs.forEach(ele => nameArray.push(ele.name)) wx.showActionSheet({ itemList: nameArray, success: (e) => { const lang = langs[e.tapIndex] wx.setStorageSync('Language', lang.code) _this.setData({ language: i18n.getLanguage(), $t: i18n.$t(), }) this.setTabBarLanguage() } }) }, setTabBarLanguage() { i18n.setTabBarLanguage() }, async getUserApiInfo() { const token = wx.getStorageSync('token') if (!token) { return null } // https://www.yuque.com/apifm/nu0f75/zgf8pu const res = await WXAPI.userDetail(token) if (res.code == 0) { this.globalData.apiUserInfoMap = res.data if (this.getUserDetailOK) { this.getUserDetailOK(res.data) } return res.data } }, globalData: { isConnected: true } }) ================================================ FILE: app.json ================================================ { "pages": [ "pages/home/index", "pages/index/index", "pages/all-orders/index", "pages/my/index", "pages/my/feedback", "pages/my/user-code", "pages/ad/index", "pages/pay/index", "pages/shop/select", "pages/shop/detail", "pages/shop/join-apply", "pages/youhui-pay/index", "pages/member-center/index", "pages/order-details/index", "pages/order-details/scan-result", "pages/order-details/doing", "pages/about/index", "pages/coupons/index", "pages/booking/index", "pages/asset/index", "pages/asset/recharge-log", "pages/asset/cash-log", "pages/sign/index", "pages/score/logs", "pages/notice/detail", "pages/queue/index", "pages/cart/index", "pages/cart/order", "pages/goods-details/index", "pages/goods/list", "pages/card/index", "pages/card/logs", "pages/card/exchange", "pages/card/send", "pages/card/receive" ], "requiredPrivateInfos": [ "getLocation", "chooseLocation", "chooseAddress" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle": "black" }, "tabBar": { "color": "#6e6d6b", "selectedColor": "#e64340", "backgroundColor": "#fff", "list": [ { "pagePath": "pages/home/index", "iconPath": "images/nav/home-off.png", "selectedIconPath": "images/nav/home-on.png", "text": "首页" }, { "pagePath": "pages/index/index", "iconPath": "images/nav/index-off.png", "selectedIconPath": "images/nav/index-on.png", "text": "点餐" }, { "pagePath": "pages/queue/index", "iconPath": "images/nav/qh-off.png", "selectedIconPath": "images/nav/qh-on.png", "text": "取号" }, { "pagePath": "pages/order-details/doing", "iconPath": "images/nav/qc-off.png", "selectedIconPath": "images/nav/qc-on.png", "text": "取餐" }, { "pagePath": "pages/my/index", "iconPath": "images/nav/my-off.png", "selectedIconPath": "images/nav/my-on.png", "text": "我的" } ] }, "permission": { "scope.userLocation": { "desc": "获取离你最近的门店" } }, "usingComponents": { "parser":"/components/parser.20200731.min/parser", "payment": "/components/payment/index", "van-button": "@vant/weapp/button/index", "van-sidebar": "@vant/weapp/sidebar/index", "van-sidebar-item": "@vant/weapp/sidebar-item/index", "van-swipe-cell": "@vant/weapp/swipe-cell/index", "van-card": "@vant/weapp/card/index", "van-submit-bar": "@vant/weapp/submit-bar/index", "van-popup": "@vant/weapp/popup/index", "van-stepper": "@vant/weapp/stepper/index", "van-row": "@vant/weapp/row/index", "van-col": "@vant/weapp/col/index", "van-divider": "@vant/weapp/divider/index", "van-icon": "@vant/weapp/icon/index", "van-empty": "@vant/weapp/empty/index", "van-field": "@vant/weapp/field/index", "van-cell": "@vant/weapp/cell/index", "van-cell-group": "@vant/weapp/cell-group/index", "van-dialog": "@vant/weapp/dialog/index", "van-overlay": "@vant/weapp/overlay/index", "van-tab": "@vant/weapp/tab/index", "van-tabs": "@vant/weapp/tabs/index", "van-datetime-picker": "@vant/weapp/datetime-picker/index", "van-calendar": "@vant/weapp/calendar/index", "van-notice-bar": "@vant/weapp/notice-bar/index", "van-tabbar": "@vant/weapp/tabbar/index", "van-tabbar-item": "@vant/weapp/tabbar-item/index", "van-tag": "@vant/weapp/tag/index", "van-goods-action": "@vant/weapp/goods-action/index", "van-goods-action-icon": "@vant/weapp/goods-action-icon/index", "van-goods-action-button": "@vant/weapp/goods-action-button/index", "van-uploader": "@vant/weapp/uploader/index", "van-grid": "@vant/weapp/grid/index", "van-grid-item": "@vant/weapp/grid-item/index", "van-count-down": "@vant/weapp/count-down/index", "van-progress": "@vant/weapp/progress/index", "van-radio": "@vant/weapp/radio/index", "van-radio-group": "@vant/weapp/radio-group/index", "van-sticky": "@vant/weapp/sticky/index" }, "sitemapLocation": "sitemap.json" } ================================================ FILE: app.wxss ================================================ page { font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif; } page,view,image,input { display: block; box-sizing: border-box; } .badge { position: absolute; top: 0; right: 0; box-sizing: border-box; width: 38rpx; height: 38rpx; line-height: 38rpx; color: #fff; font-size: 20rpx; text-align: center; background-color: #e64340; border: 1rpx solid #fff; border-radius: 50%; } .block-btn { padding: 0 32rpx; } ================================================ FILE: components/parser.20200731.min/libs/CssHandler.js ================================================ function t(t){var s=Object.assign(Object.create(null),i.userAgentStyles);for(var h in t)s[h]=(s[h]?s[h]+";":"")+t[h];this.styles=s}function s(t,s){this.data=t,this.floor=0,this.i=0,this.list=[],this.res=s,this.state=this.Space}var i=require("./config.js"),h=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};t.prototype.getStyle=function(t){this.styles=new s(t,this.styles).parse()},t.prototype.match=function(t,s){var i,h=(i=this.styles[t])?i+";":"";if(s.class)for(var e,a=s.class.split(" "),o=0;e=a[o];o++)(i=this.styles["."+e])&&(h+=i+";");return(i=this.styles["#"+s.id])&&(h+=i+";"),h},module.exports=t,s.prototype.parse=function(){for(var t;t=this.data[this.i];this.i++)this.state(t);return this.res},s.prototype.section=function(){return this.data.substring(this.start,this.i)},s.prototype.Space=function(t){"."==t||"#"==t||h(t)?(this.start=this.i,this.state=this.Name):"/"==t&&"*"==this.data[this.i+1]?this.Comment():i.blankChar[t]||";"==t||(this.state=this.Ignore)},s.prototype.Comment=function(){this.i=this.data.indexOf("*/",this.i)+1,this.i||(this.i=this.data.length),this.state=this.Space},s.prototype.Ignore=function(t){"{"==t?this.floor++:"}"!=t||--this.floor||(this.state=this.Space)},s.prototype.Name=function(t){i.blankChar[t]?(this.list.push(this.section()),this.state=this.NameSpace):"{"==t?(this.list.push(this.section()),this.Content()):","==t?(this.list.push(this.section()),this.Comma()):!h(t)&&(t<"0"||t>"9")&&"-"!=t&&"_"!=t&&(this.state=this.Ignore)},s.prototype.NameSpace=function(t){"{"==t?this.Content():","==t?this.Comma():i.blankChar[t]||(this.state=this.Ignore)},s.prototype.Comma=function(){for(;i.blankChar[this.data[++this.i]];);"{"==this.data[this.i]?this.Content():(this.start=this.i--,this.state=this.Name)},s.prototype.Content=function(){this.start=++this.i,-1==(this.i=this.data.indexOf("}",this.i))&&(this.i=this.data.length);for(var t,s=this.section(),i=0;t=this.list[i++];)this.res[t]?this.res[t]+=";"+s:this.res[t]=s;this.list=[],this.state=this.Space} ================================================ FILE: components/parser.20200731.min/libs/MpHtmlParser.js ================================================ // 小程序富文本插件 https://github.com/jin-yufeng/Parser var emoji;function t(t){var s=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.attrs={},this.CssHandler=new e(r.tagStyle,a),this.data=t,this.domain=r.domain,this.DOM=[],this.i=this.start=this.audioNum=this.imgNum=this.videoNum=0,r.prot=(this.domain||"").includes("://")?this.domain.split("://")[0]:"http",this.options=r,this.state=this.Text,this.STACK=[],this.bubble=function(){for(var t,e=s.STACK.length;t=s.STACK[--e];){if(i.richOnlyTags[t.name])return"table"!=t.name||Object.hasOwnProperty.call(t,"c")||(t.c=1),!1;t.c=1}return!0},this.decode=function(t,s){for(var e,a,r=-1;;){if(-1==(r=t.indexOf("&",r+1)))break;if(-1==(e=t.indexOf(";",r+2)))break;"#"==t[r+1]?(a=parseInt(("x"==t[r+2]?"0":"")+t.substring(r+2,e)),isNaN(a)||(t=t.substr(0,r)+String.fromCharCode(a)+t.substr(e+1))):(a=t.substring(r+1,e),(i.entities[a]||a==s)&&(t=t.substr(0,r)+(i.entities[a]||"&")+t.substr(e+1)))}return t},this.getUrl=function(t){return"/"==t[0]?"/"==t[1]?t=s.options.prot+":"+t:s.domain&&(t=s.domain+t):s.domain&&0!=t.indexOf("data:")&&!t.includes("://")&&(t=s.domain+"/"+t),t},this.isClose=function(){return">"==s.data[s.i]||"/"==s.data[s.i]&&">"==s.data[s.i+1]},this.section=function(){return s.data.substring(s.start,s.i)},this.parent=function(){return s.STACK[s.STACK.length-1]},this.siblings=function(){return s.STACK.length?s.parent().children:s.DOM}}var i=require("./config.js"),s=i.blankChar,e=require("./CssHandler.js"),a=wx.getSystemInfoSync().windowWidth;t.prototype.parse=function(){emoji&&(this.data=emoji.parseEmoji(this.data));for(var t;t=this.data[this.i];this.i++)this.state(t);for(this.state==this.Text&&this.setText();this.STACK.length;)this.popNode(this.STACK.pop());return this.DOM},t.prototype.setAttr=function(){var t=this.attrName.toLowerCase(),e=this.attrVal;for(i.boolAttrs[t]?this.attrs[t]="T":e&&("src"==t||"data-src"==t&&!this.attrs.src?this.attrs.src=this.getUrl(this.decode(e,"amp")):"href"==t||"style"==t?this.attrs[t]=this.decode(e,"amp"):"data-"!=t.substr(0,5)&&(this.attrs[t]=e)),this.attrVal="";s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)},t.prototype.setText=function(){var t,e=this.section();if(e)if(e=i.onText&&i.onText(e,function(){return t=!0})||e,t){this.data=this.data.substr(0,this.start)+e+this.data.substr(this.i);var a=this.start+e.length;for(this.i=this.start;this.i7&&(l=7);var d=["xx-small","x-small","small","medium","large","x-large","xx-large"];o["font-size"]=d[l-1],h.size=void 0}break;case"embed":var u=t.attrs.src||"",c=t.attrs.type||"";if(c.includes("video")||u.includes(".mp4")||u.includes(".3gp")||u.includes(".m3u8"))t.name="video";else{if(!(c.includes("audio")||u.includes(".m4a")||u.includes(".wav")||u.includes(".mp3")||u.includes(".aac")))break;t.name="audio"}t.attrs.autostart&&(t.attrs.autoplay="T"),t.attrs.controls="T";/*fallsthrough*/case"video":case"audio":h.id?this[t.name+"Num"]++:h.id=t.name+ ++this[t.name+"Num"],"video"==t.name&&(this.videoNum>3&&(t.lazyLoad=1),h.width&&(o.width=parseFloat(h.width)+(h.width.includes("%")?"%":"px"),h.width=void 0),h.height&&(o.height=parseFloat(h.height)+(h.height.includes("%")?"%":"px"),h.height=void 0)),h.controls||h.autoplay||(h.controls="T"),h.source=[],h.src&&(h.source.push(h.src),h.src=void 0),this.bubble();break;case"td":case"th":if(h.colspan||h.rowspan)for(var f,p=this.STACK.length;f=this.STACK[--p];)if("table"==f.name){f.c=void 0;break}}h.align&&(o["text-align"]=h.align,h.align=void 0);var m=n.split(";");n="";for(var g=0,v=m.length;ga&&(o.height="",h.height&&(h.height=void 0))),o.height?(h.height=o.height,o.height=""):h.height&&!h.height.includes("%")&&(h.height+="px")}for(var T in o){var w=o[T];if(w){if((T.includes("flex")||"order"==T||"self-align"==T)&&(t.c=1),w.includes("url")){var A=w.indexOf("(");if(-1!=A++){for(;'"'==w[A]||"'"==w[A]||s[w[A]];)A++;w=w.substr(0,A)+this.getUrl(w.substr(A))}}else w.includes("rpx")?w=w.replace(/[0-9.]+\s*rpx/g,function(t){return parseFloat(t)*a/750+"px"}):"white-space"==T&&w.includes("pre")&&!e&&(this.pre=t.pre=!0);n+=";"+T+":"+w}}n=n.substr(1),n&&(h.style=n),e?i.filter&&0==i.filter(t,this)||this.siblings().push(t):(t.children=[],"pre"==t.name&&i.highlight&&(this.remove(t),this.pre=t.pre=!0),this.siblings().push(t),this.STACK.push(t))}"/"==this.data[this.i]&&this.i++,this.start=this.i+1,this.state=this.Text},t.prototype.remove=function(t){var e=this,a=t.name,r=this.i,h=function(){var i=e.data.substring(r,e.i+1);t.attrs.xmlns||(i=' xmlns="http://www.w3.org/2000/svg"'+i);for(var s=r;"<"!=e.data[r];)r--;i=e.data.substring(r,s).replace("viewbox","viewBox")+i;var a=e.parent();"100%"==t.attrs.width&&a&&(a.attrs.style||"").includes("inline")&&(a.attrs.style="width:300px;max-width:100%;"+a.attrs.style),e.siblings().push({name:"img",attrs:{src:"data:image/svg+xml;utf8,"+i.replace(/#/g,"%23"),style:(/vertical[^;]+/.exec(t.attrs.style)||[]).shift(),ignore:"T"}})};if("svg"==t.name&&"/"==this.data[r])return h(this.i++);for(;;){if(-1==(this.i=this.data.indexOf("",this.i))&&(this.i=this.data.length),void("svg"==a&&h()))}},t.prototype.popNode=function(t){if(t.pre){t.pre=this.pre=void 0;for(var s=this.STACK.length;s--;)this.STACK[s].pre&&(this.pre=!0)}var e=this.siblings(),a=e.length,r=t.children;if("head"==t.name||i.filter&&0==i.filter(t,this))return e.pop();var h=t.attrs;if(i.blockTags[t.name]?t.name="div":i.trustTags[t.name]||(t.name="span"),t.c&&("ul"==t.name||"ol"==t.name))if((t.attrs.style||"").includes("list-style:none"))for(var n,o=0;n=r[o++];)"li"==n.name&&(n.name="div");else if("ul"==t.name){for(var l=1,d=this.STACK.length;d--;)"ul"==this.STACK[d].name&&l++;if(1!=l)for(var u=r.length;u--;)r[u].floor=l}else for(var c,f=0,p=1;c=r[f++];)"li"==c.name&&(c.type="ol",c.num=function(t,i){if("a"==i)return String.fromCharCode(97+(t-1)%26);if("A"==i)return String.fromCharCode(65+(t-1)%26);if("i"==i||"I"==i){t=(t-1)%99+1;var s=["I","II","III","IV","V","VI","VII","VIII","IX"],e=["X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],a=(e[Math.floor(t/10)-1]||"")+(s[t%10-1]||"");return"i"==i?a.toLowerCase():a}return t}(p++,h.type)+".");if("table"==t.name){var m=h.cellpadding,g=h.cellspacing,v=h.border;if(t.c&&(this.bubble(),h.style=(h.style||"")+";display:table",m||(m=2),g||(g=2)),v&&(h.style="border:"+v+"px solid gray;"+(h.style||"")),g&&(h.style="border-spacing:"+g+"px;"+(h.style||"")),(v||m||t.c)&&function i(s){for(var e,a=0;e=s[a];a++)if("text"!=e.type){var r=e.attrs.style||"";t.c&&"t"==e.name[0]&&(e.c=1,r+=";display:table-"+("th"==e.name||"td"==e.name?"cell":"tr"==e.name?"row":"row-group")),"th"==e.name||"td"==e.name?(v&&(r="border:"+v+"px solid gray;"+r),m&&(r="padding:"+m+"px;"+r)):i(e.children||[]),r&&(e.attrs.style=r)}}(r),this.options.autoscroll){var b=Object.assign({},t);t.name="div",t.attrs={style:"overflow:scroll"},t.children=[b]}}this.CssHandler.pop&&this.CssHandler.pop(t),"div"!=t.name||Object.keys(h).length||1!=r.length||"div"!=r[0].name||(e[a-1]=r[0])},t.prototype.Text=function(t){if("<"==t){var i=this.data[this.i+1],s=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"};s(i)?(this.setText(),this.start=this.i+1,this.state=this.TagName):"/"==i?(this.setText(),s(this.data[++this.i+1])?(this.start=this.i+1,this.state=this.EndTag):this.Comment()):"!"!=i&&"?"!=i||(this.setText(),this.Comment())}},t.prototype.Comment=function(){var t;t="--"==this.data.substring(this.i+2,this.i+4)?"--\x3e":"[CDATA["==this.data.substring(this.i+2,this.i+9)?"]]>":">",-1==(this.i=this.data.indexOf(t,this.i+2))?this.i=this.data.length:this.i+=t.length-1,this.start=this.i+1,this.state=this.Text},t.prototype.TagName=function(t){if(s[t]){for(this.tagName=this.section();s[this.data[this.i]];)this.i++;this.isClose()?this.setNode():(this.start=this.i,this.state=this.AttrName)}else this.isClose()&&(this.tagName=this.section(),this.setNode())},t.prototype.AttrName=function(t){if("="==t||s[t]||this.isClose()){if(this.attrName=this.section(),s[t])for(;s[this.data[++this.i]];);if("="==this.data[this.i]){for(;s[this.data[++this.i]];);this.start=this.i--,this.state=this.AttrValue}else this.setAttr()}},t.prototype.AttrValue=function(t){if('"'==t||"'"==t){if(this.start++,-1==(this.i=this.data.indexOf(t,this.i+1)))return this.i=this.data.length;this.attrVal=this.section(),this.i++}else{for(;!s[this.data[this.i]]&&!this.isClose();this.i++);this.attrVal=this.section()}this.setAttr()},t.prototype.EndTag=function(t){if(s[t]||">"==t||"/"==t){for(var i=this.section().toLowerCase(),e=this.STACK.length;e--&&this.STACK[e].name!=i;);if(-1!=e){for(var a;(a=this.STACK.pop()).name!=i;)this.popNode(a);this.popNode(a)}else"p"!=i&&"br"!=i||this.siblings().push({name:i,attrs:{}});this.i=this.data.indexOf(">",this.i),this.start=this.i+1,-1==this.i?this.i=this.data.length:this.state=this.Text}},module.exports=t ================================================ FILE: components/parser.20200731.min/libs/config.js ================================================ function e(e){for(var t=Object.create(null),a=e.split(","),o=a.length;o--;)t[a[o]]=!0;return t}var t=wx.canIUse("editor"); module.exports={ errorImg:null, filter:null, highlight:null, onText:null, entities:{quot:'"',apos:"'",semi:";",nbsp:" ",ndash:"–",mdash:"—",middot:"·",lsquo:"‘",rsquo:"’",ldquo:"“",rdquo:"”",bull:"•",hellip:"…"}, blankChar:e(' ,\xA0,\t,\r,\n,\f'), boolAttrs:e('autoplay,autostart,controls,ignore,loop,muted'), blockTags:e('address,article,aside,body,caption,center,cite,footer,header,html,nav,section'+(t?'':',pre')), ignoreTags:e('area,base,canvas,frame,iframe,input,link,map,meta,param,script,source,style,svg,textarea,title,track,wbr'+(t?',rp':'')), richOnlyTags:e('a,colgroup,fieldset,legend,table'+(t?',bdi,bdo,rt,ruby':'')), selfClosingTags:e('area,base,br,col,circle,ellipse,embed,frame,hr,img,input,line,link,meta,param,path,polygon,rect,source,track,use,wbr'), trustTags:e('a,abbr,ad,audio,b,blockquote,br,code,col,colgroup,dd,del,dl,dt,div,em,fieldset,h1,h2,h3,h4,h5,h6,hr,i,img,ins,label,legend,li,ol,p,q,source,span,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,title,ul,video'+(t?',bdi,bdo,caption,pre,rt,ruby':'')), userAgentStyles:{address:"font-style:italic",big:"display:inline;font-size:1.2em",blockquote:"background-color:#f6f6f6;border-left:3px solid #dbdbdb;color:#6c6c6c;padding:5px 0 5px 10px",caption:"display:table-caption;text-align:center",center:"text-align:center",cite:"font-style:italic",dd:"margin-left:40px",mark:"background-color:yellow",pre:"font-family:monospace;white-space:pre;overflow:scroll",s:"text-decoration:line-through",small:"display:inline;font-size:0.8em",u:"text-decoration:underline"} } ================================================ FILE: components/parser.20200731.min/parser.js ================================================ // 小程序富文本插件 https://github.com/jin-yufeng/Parser var dom;var search;function t(t){for(var e=t.length,i=5381;e--;)i+=(i<<5)+t.charCodeAt(e);return i}var e={},i=require("./libs/MpHtmlParser.js"),n=wx.getFileSystemManager&&wx.getFileSystemManager();Component({options:{pureDataPattern:/^[acdgtu]|W/},data:{nodes:[]},properties:{html:{type:String,observer:function(t){this.setContent(t)}},autopause:{type:Boolean,value:!0},autoscroll:Boolean,autosetTitle:{type:Boolean,value:!0},compress:Number,domain:String,lazyLoad:Boolean,loadingImg:String,selectable:Boolean,tagStyle:Object,showWithAnimation:Boolean,useAnchor:Boolean,useCache:Boolean},relations:{"../parser-group/parser-group":{type:"ancestor"}},created:function(){var t=this;this.imgList=[],this.imgList.setItem=function(t,e){var i=this;if(t&&e){if(0==e.indexOf("http")&&this.includes(e)){for(var s,a="",o=0;(s=e[o])&&("/"!=s||"/"==e[o-1]||"/"==e[o+1]);o++)a+=Math.random()>.5?s.toUpperCase():s;return a+=e.substr(o),this[t]=a}if(this[t]=e,e.includes("data:image")){var r=e.match(/data:image\/(\S+?);(\S+?),(.+)/);if(!r)return;var l=wx.env.USER_DATA_PATH+"/"+Date.now()+"."+r[1];n&&n.writeFile({filePath:l,data:r[3],encoding:r[2],success:function(){return i[t]=l}})}}},this.imgList.each=function(t){for(var e=0,i=this.length;e>>#"+t.id:"")).boundingClientRect();this._in?i.select(this._in.selector).fields({rect:!0,scrollOffset:!0}):i.selectViewport().scrollOffset(),i.exec(function(i){if(!i[0])return e.group?e.group.navigateTo(e.i,t):t.fail&&t.fail("Label not found");var n=i[1].scrollTop+i[0].top-(i[1].top||0)+(t.offset||0);if(e._in){var s={};s[e._in.scrollTop]=n,e._in.page.setData(s)}else wx.pageScrollTo({scrollTop:n});t.success&&t.success()})},getText:function(){for(var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.data.nodes,i="",n=0;t=e[n++];)if("text"==t.type)i+=t.text.replace(/ /g," ").replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&");else if("br"==t.type)i+="\n";else{var s="p"==t.name||"div"==t.name||"tr"==t.name||"li"==t.name||"h"==t.name[0]&&t.name[1]>"0"&&t.name[1]<"7";s&&i&&"\n"!=i[i.length-1]&&(i+="\n"),t.children&&(i+=this.getText(t.children)),s&&"\n"!=i[i.length-1]?i+="\n":"td"!=t.name&&"th"!=t.name||(i+="\t")}return i},getVideoContext:function(t){if(!t)return this.videoContexts;for(var e=this.videoContexts.length;e--;)if(this.videoContexts[e].id==t)return this.videoContexts[e]},setContent:function(n,s){var a,o=this,r=new i(n,this.data);if(this.data.useCache){var l=t(n);e[l]?a=e[l]:e[l]=a=r.parse()}else a=r.parse();this.triggerEvent("parse",a);var h={};if(s)for(var c=this.data.nodes.length,d=a.length;d--;)h["nodes["+(c+d)+"]"]=a[d];else h.nodes=a;this.showWithAnimation&&(h.showAm="animation: show .5s"),this.setData(h,function(){o.triggerEvent("load")}),a.title&&this.data.autosetTitle&&wx.setNavigationBarTitle({title:a.title}),this.imgList.length=0,this.videoContexts=[];for(var u,g=this.selectAllComponents(".top,.top>>>._node"),f=0;u=g[f++];){u.top=this;for(var m,p=0;m=u.data.nodes[p++];)if(!m.c)if("img"==m.name)this.imgList.setItem(m.attrs.i,m.attrs.src);else if("video"==m.name||"audio"==m.name){var v;v="video"==m.name?wx.createVideoContext(m.attrs.id,u):u.selectComponent("#"+m.attrs.id),v&&(v.id=m.attrs.id,this.videoContexts.push(v))}}var x;clearInterval(this._timer),this._timer=setInterval(function(){o.createSelectorQuery().select(".top").boundingClientRect(function(t){t&&(o.rect=t,t.height==x&&(o.triggerEvent("ready",t),clearInterval(o._timer)),x=t.height)}).exec()},350)}}}) ================================================ FILE: components/parser.20200731.min/parser.json ================================================ {"component":true,"usingComponents":{"trees":"./trees/trees"}} ================================================ FILE: components/parser.20200731.min/parser.wxml ================================================ ================================================ FILE: components/parser.20200731.min/parser.wxss ================================================ :host{display:block;overflow:scroll;webkit-overflow-scrolling:touch}.top{display:inherit}@keyframes show{0%{opacity:0}100%{opacity:1}} ================================================ FILE: components/parser.20200731.min/trees/trees.js ================================================ function _defineProperty(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var t=require("../libs/config.js").errorImg;Component({data:{canIUse:!!wx.chooseMessageFile,placeholder:"data:image/svg+xml;utf8,",ctrl:[]},properties:{nodes:Array,lazyLoad:Boolean,loading:String},methods:{play:function(t){if(this.top.group&&this.top.group.pause(this.top.i),this.top.videoContexts.length>1&&this.top.data.autopause)for(var e=this.top.videoContexts.length;e--;)this.top.videoContexts[e].id!=t.currentTarget.id&&this.top.videoContexts[e].pause()},imgtap:function(t){var e=t.currentTarget.dataset.attrs;if(!e.ignore){var r=!0;if(this.top.triggerEvent("imgtap",{id:t.currentTarget.id,src:e.src,ignore:function(){return r=!1}}),r){if(this.top.group)return this.top.group.preview(this.top.i,e.i);var i=this.top.imgList,a=i[e.i]?i[e.i]:(i=[e.src],e.src);wx.previewImage({current:a,urls:i})}}},loadImg:function(t){var e=t.target.dataset.i;this.data.lazyLoad&&!this.data.ctrl[e]?this.setData(_defineProperty({},"ctrl["+e+"]",1)):this.data.loading&&2!=this.data.ctrl[e]&&this.setData(_defineProperty({},"ctrl["+e+"]",2))},linkpress:function(t){var e=!0,r=t.currentTarget.dataset.attrs;r.ignore=function(){return e=!1},this.top.triggerEvent("linkpress",r),e&&(r["app-id"]?wx.navigateToMiniProgram({appId:r["app-id"],path:r.path}):r.href&&("#"==r.href[0]?this.top.navigateTo({id:r.href.substring(1)}):0==r.href.indexOf("http")||0==r.href.indexOf("//")?wx.setClipboardData({data:r.href,success:function(){return wx.showToast({title:"链接已复制"})}}):wx.navigateTo({url:r.href,fail:function(){wx.switchTab({url:r.href})}})))},error:function(e){var r=e.target.dataset.source,i=e.target.dataset.i,a=this.data.nodes[i];if("video"==r||"audio"==r){var s=(a.i||0)+1;if(svar s={abbr:1,b:1,big:1,code:1,del:1,em:1,i:1,ins:1,label:1,q:1,small:1,span:1,strong:1,sub:1,sup:1};module.exports={visited:function(s,e){s.instance.hasClass("_visited")||s.instance.addClass("_visited"),e.callMethod("linkpress",s)},use:function(e){return!e.c&&!s[e.name]&&-1==(e.attrs.style||"").indexOf("display:inline")}}{{n.text}}\n ================================================ FILE: components/parser.20200731.min/trees/trees.wxss ================================================ ._a{display:inline;padding:1.5px 0 1.5px 0;color:#366092;word-break:break-all}._hover{text-decoration:underline;opacity:.7}._visited{color:#551a8b}._img{display:inline-block;max-width:100%;overflow:hidden}:host{display:inline}._blockquote,._div,._p,._ul,._ol,._li{display:block}._b,._strong{font-weight:bold}._code{font-family:monospace}._del{text-decoration:line-through}._em,._i{font-style:italic}._h1{font-size:2em}._h2{font-size:1.5em}._h3{font-size:1.17em}._h5{font-size:.83em}._h6{font-size:.67em}._h1,._h2,._h3,._h4,._h5,._h6{display:block;font-weight:bold}._image{display:block;width:100%;height:360px;margin-top:-360px;opacity:0}._ins{text-decoration:underline}._li{flex:1;width:0}._ol-bef{width:36px;margin-right:5px;text-align:right}._ul-bef{margin:0 12px 0 23px;line-height:normal}._ol-bef,._ul-bef{flex:none;user-select:none}._ul-p1{display:inline-block;width:.3em;height:.3em;overflow:hidden;line-height:.3em}._ul-p2{display:inline-block;width:.23em;height:.23em;border:.05em solid black;border-radius:50%}._q::before{content:'"'}._q::after{content:'"'}._sub{font-size:smaller;vertical-align:sub}._sup{font-size:smaller;vertical-align:super}.__bdi,.__bdo,.__ruby,.__rt{display:inline-block}._video{position:relative;display:inline-block;width:300px;height:225px;background-color:black}._video::after{position:absolute;top:50%;left:50%;margin:-15px 0 0 -15px;content:'';border-color:transparent transparent transparent white;border-style:solid;border-width:15px 0 15px 30px} ================================================ FILE: components/payment/index.js ================================================ const WXAPI = require('apifm-wxapi'); const { wxaCode } = require('../../utils/auth'); Component({ options: { addGlobalClass: true, }, /** * 组件的对外属性,是属性名到属性设置的映射表 */ properties: { money: Number, remark: String, nextAction: Object, extData: Object, show: Boolean, useCard: { type: Boolean, value: true } }, /** * 组件的内部数据,和 properties 一同用于组件的模板渲染 */ data: { payType: 'wx', alipayOpenMod: '0' }, // 组件数据字段监听器,用于监听 properties 和 data 的变化 observers: { 'show': function(show) { this.setData({ alipayQrcode: null, alipayOpenMod: wx.getStorageSync('alipay') }) } }, lifetimes: { attached() { getApp().initLanguage(this) }, detached() { // 在组件实例被从页面节点树移除时执行 }, }, /** * 组件的方法列表 */ methods: { close() { this.triggerEvent('cancel') }, payTypeChange(event) { this.setData({ payType: event.detail, alipayQrcode: null, }); }, payTypeClick(event) { const { name } = event.currentTarget.dataset; this.setData({ payType: name, alipayQrcode: null, }); }, async submit() { let token = wx.getStorageSync('payToken') if (!token) { token = wx.getStorageSync('token') } const postData = { token, money: this.data.money, remark: this.data.remark, } if (this.data.extData) { postData = { ...postData, ...this.data.extData } } if (this.data.nextAction) { postData.nextAction = JSON.stringify(this.data.nextAction) } postData.payName = postData.remark const url = wx.getStorageSync('wxpay_api_url') let res if (this.data.payType == 'wx') { // https://www.yuque.com/apifm/nu0f75/ppadt8 res = await WXAPI.payVariableUrl(url ? url : '/pay/wx/wxapp', postData) } else if (this.data.payType == 'alipay') { // https://www.yuque.com/apifm/nu0f75/hguh83ekxsh71cn7 res = await WXAPI.alipayQrcode(postData) } else { wx.showModal({ content: this.data.$t.payment.notSupport, showCancel: false }) this.close() return } if (res.code != 0) { wx.showModal({ content: JSON.stringify(res), showCancel: false }) this.close() return } if (this.data.payType == 'wx') { wx.requestPayment({ timeStamp: res.data.timeStamp, nonceStr: res.data.nonceStr, package: res.data.package, signType: res.data.signType, paySign: res.data.paySign, fail: aaa => { console.error(aaa) wx.showToast({ title: '' + aaa, icon: 'none' }) }, success: () => { wx.showToast({ title: this.data.$t.asset.success }) this.triggerEvent('ok', this.data) } }) } if (this.data.payType == 'alipay') { const qrcodeRes = JSON.parse(res.data.qrcode) const alipayQrcode = qrcodeRes.alipay_trade_precreate_response.qr_code console.log(alipayQrcode); // 生成二维码 https://www.yuque.com/apifm/nu0f75/xrnyo9 const resQrcode = await WXAPI.commonQrcode({ content: alipayQrcode, width: 650 }) if (resQrcode.code != 0) { wx.showToast({ title: resQrcode.msg, icon: 'none' }) return } console.log(resQrcode.data); this.setData({ alipayQrcode: resQrcode.data }) } }, } }) ================================================ FILE: components/payment/index.json ================================================ { "component": true, "usingComponents": { } } ================================================ FILE: components/payment/index.wxml ================================================ {{ remark }} {{ money }} {{ $t.payment.select }} {{ $t.payment.alipayQrcodeText }} {{ $t.order.toPayTap }} ================================================ FILE: components/payment/index.wxss ================================================ .pop-main { display: flex; flex-direction: column; } .title { padding: 32rpx; text-align: center; } .btn-box { padding: 32rpx; } .alipayQrcode { margin-left: 50rpx; } .alipayQrcodeText { text-align: center; color: rgb(201, 25, 48); font-size: 24rpx; } .amount { padding: 16rpx; text-align: center; color: #e64340; font-weight: bold; font-size: 52rpx; } .amount text { font-weight: normal; font-size: 28rpx; } ================================================ FILE: components/payment/sn.txt ================================================ app.json usingComponents 加上 "payment": "/components/payment/index", 在需要的页面上加这句代码即可 paymentOk(e) { console.log(e.detail); // 这里是组件里data的数据 this.setData({ paymentShow: false }) }, paymentCancel() { this.setData({ paymentShow: false }) }, ================================================ FILE: config.js ================================================ module.exports = { version: "26.3.18", note: '商品存在多SKU的情况下,选择不同的规格,显示不同的规格图片', subDomain: "beeorder", // 根据教程 https://www.it120.cc/help/qr6l4m.html 查看并设置你自己的 subDomain merchantId: 27, // 商户ID,可在后台工厂设置-->商户信息查看 customerServiceType: 'QW' // 客服类型,QW为企业微信,需要在后台系统参数配置企业ID和客服URL,否则为小程序的默认客服 } ================================================ FILE: i18n/en.js ================================================ module.exports = { common: { select: 'Select', save: 'Submit', cancel: 'Cancel', confirm: 'Confirm', doubleClick: 'Take a break~', empty: 'No Data', submitSuccess: 'Submitted', gotIt: 'Got it', search: 'Search', searchPlaceholder: 'Enter search keywords', getCodeError: 'Fetch code Fail', loginFail: 'Can\'t Login', authorizeRequired: 'Need Authorization', authorize: 'Auth', upgrade: 'The new version is ready. Do you want to restart the application?', noNetwork: 'Currently no network available', networkDown: 'Network disconnected', privacyPermission: 'Not agreeing to the user privacy agreement', }, auth: { needLogin: 'Please Login First', goAdmin: 'Manager', }, date: { year: 'Y', month: 'M', day: 'D', hour: 'H', minutes: 'm', }, ad_index: { title: 'Shipping Address', add: 'New Address', empty: 'Address is Empty', pleaseAdd: 'Click to Add Address', linkMan: 'Name', linkManPlaceholder: 'Input Recipient Name', mobile: 'Mobile', mobilePlaceholder: 'Input Mobile', region: 'Region', regionPlaceholder: 'Select Region', location: 'Positioning', address: 'Address', addressPlaceholder: 'Streets, buildings, house signs, etc', apiError: 'Unable to Obtain Data', deleteProfile: 'Are you sure you want to delete this Shipping Address?', }, order: { title: 'Orders', cancelProfile: 'Are you sure you want to cancel this order?', scoreNotEnough: 'Your Score are is Not enough!', amountReal: 'Order Amount', balance: 'Balance', payAmount: 'Still need Pay', payScore: 'Score need to be deducted:', noCashAccount: 'Unable to obtain user funding information', status: { st01: 'Canceled', st10: 'To be picked', st11: 'In delivery', st3: 'Completed', }, deleteProfile: 'Are you sure you want to delete this order?', empty: { t1: 'You haven\'t ordered your meal yet', t2: 'Hurry up and reward yourself!', btn: 'Go and order a meal', }, dateAdd: 'Order Time', orderNumber: 'Order No', callShop: 'Contact', deleteOrder: 'Delete', cancelOrder: 'Cancel', toPayTap: 'Pay Now', detail: 'Order Detail', askConfirm: 'Are you sure you have received the product?', VerificationCompleted: 'Verification Completed', stausClosed: 'Order has been closed', stausNoPay: 'Waiting to Pay', stausSuccess: 'Transaction completed', }, cashLog: { title: 'Fund details', }, asset: { title: 'Wallet', recharge: 'Recharge', amount: 'Amount', amountPlaceholder: 'Please enter the recharge amount', confirmBtn: 'Confirm Recharge', success: 'Payment successful', confine: 'Pay', send: 'Send', other: 'Other', rechargeLogs: 'Recharge Records', }, booking: { title: 'Booking', name: 'Name', namePlaceholder: 'Enter contact person', mobile: 'Mobile', mobilePlaceholder: 'Convenient for us to contact you', time: 'Arrival', timePlaceholder: 'Select estimated time of arrival', person: 'Person', tip: 'Seat reserved for half an hour, invalid if overdue', }, cart: { title: 'Cart', empty: 'No Data', clear: 'Clear All', num: 'Num', btn: 'Submit', ordered: 'Ordered Dishes', tableNum: 'TableNum', Tobeconfirmed: 'To be confirmed', Cooked:'Cooked', Served:'Served', Numofdishes:'Num of dishes', Consumptionamount:'Consumption amount', Payableamount:'Payable amount', Check:'Check', }, coupons: { title: 'Coupons', inputpassword:'Input password', Cominglate:'Cominglate', receivedgreedy:'You have received it, you cannot receive it anymore', pointsinsufficient:'Your points are insufficient', Expired :'Expired', Successfullyclaimed :'Success', enternum:'Enter the coupon number', password:'password', Redemption:'Redemption successful', Invitingcoupons:'Inviting you to collect coupons', Vouchers: 'Vouchers', over: 'Over', btn: 'Fetch', expire: 'exp', toUse: 'Use', number: 'Code', numberPlaceholder: 'Please enter the coupon Code', pwd: 'Password', pwdPlaceholder: 'Please enter password', change: 'Exchange', }, goodsDetail: { title: 'Product Details', noStores: 'sold out', noSelectSku: 'Please select sku', noSelectAddtion: 'Please select an accessory', buyNumber: 'Purchase quantity', noSelectNumber: 'Please select the purchase quantity', addCartSuccess: 'Add Success', addCartBtn: 'Add to Cart', inviteKanJia: 'Inviting you to help TA negotiate', inviteKanJiaFriend: 'Invite friends to help', kanJiaAmount: 'Successfully helped TA cut it down', kanJiaSetting: 'Bargaining Settings', longTapQrcode: 'Long press to recognize mini program code', qrcodeSaved: 'saved to phone album', commission1: 'Sharing rewards, friends can receive rewards after placing an order', commission2: 'Points reward', commission3: 'Cash rewards', limit: 'Limited', saledNum: 'Sold', originalPrice: 'Original Price', minPrice: 'Min Price', end: 'End', ended: 'Bargaining has ended', help: 'Help', kanjia: 'Bargaining', help2: 'Help', helpPerson: 'Help Person', status: 'Status', joinTime: 'Registration Time', buy: 'Purchase', kanjiaLogs: 'Bargaining Records', helped: 'You have already Helped', helphe: 'Help', buyUseCurPrice: 'Purchase at current price', storeing: 'Replenishing', kanjiaBtn: 'Initiate bargaining | Invite friends to help', saveImage: 'Save to album', }, index: { pingtuanNoOpen: 'Grouping function is not enabled', pickup: 'Pickup', Delivery: 'Delivery', shopDetail: 'Merchant Info', minPrice: 'On hand price', noStart: 'Start Later', miaoshaEnd: 'Finished', pingtuan: 'Join', selectSku: 'SKU', submit: 'Selected', selectShop: ' Select Shop', noBusiness: 'no Business', p_persion: 'People Join', p_numsuc: 'Joined', remain: 'Remain', remainToSuccess: ' People, can be successfully', pingSuccess: 'Successfully', originalPriceBuy: 'Original Buy', openNewPingtuan: 'Reopen Group', pingtuanProcess: 'Collaborating process', step1: 'Payment Opening', step2: 'Friend participation', step3: 'Successfully picked up the meal', step4: 'Refund failed', order: 'Ordering', PickingUp: 'Picking Up', ordered: 'Ordered', home: 'Home', }, queue: { t: 'Queue', success: 'Successfully', myNumber: 'My Number', ExpectedWaiting: 'Expected Waiting', minutes: 'Minutes', }, my: { title: 'My', nickEdit: 'Edit Nick', nickSet: 'Edit Nick', nickRequired: 'Please fill in your Nick', uid: 'UID', userCode: 'Code', score: 'Score', signDaily: 'Daily check-in', scanHx: 'Scan code for verification', youhuimaidan: 'Discount purchase', aboutUs: 'About Us', Contact: 'Contact US', clearStorage: 'Clear Cache', }, vip: { title: 'VIP', consumption: 'Total Consumption', notVIP: 'Not VIP', tip: 'Consumption Reaches, Upgrade Automatically', growth: 'Member Growth System', growthName: 'Level', growthDiscount: 'Discount', growthConsumption: 'Consumption', profile: 'Note: When the shopping consumption reaches the specified standard, it will automatically become a member of that level', }, feedback: { title: 'Feedback', name: 'Name', namePlaceholder: 'Your Name', nameRequired: 'Please fill in your name', mobile: 'Mobile', mobilePlaceholder: 'Convenient for us to contact you', contentRequired: 'Please fill in feedback information', imageOrVideo: 'Image/Video', contentPlaceholder: 'Please leave your valuable suggestions or feedback~', btn: 'Submit', }, notice: { title: 'Notice', }, PickingUp: { qudanhao: 'Pickup No', Deliverying: 'Delivering For You', total: 'Total', goodsInfo: 'Goods Info', DeliveryMethod: 'Delivery Method', sf: 'SF Express', remark: 'Remark', remarkPlaceholder: 'If you need to Remark, please enter', goodsAmount: 'goods Amount', freight: 'Freight', realAmount: 'Total payable amount', ConfirmVerification: 'Confirm Verification', }, pay: { title: '确认订单', choose: 'Choose coupons', chooseCard: 'Choose Card', inputphoneNO: 'Input phone NO.', select: 'select self pickup/delivery time', address: 'The current address is beyond the delivery range', servicesclosed: 'The dine in and takeout services have been closed', setaddress: 'set delivery address', Receivingaddress: 'Please set the Receiving address', information: 'Unable to obtain user funding information', login: 'Please login first', fetchsuccessful: 'Fetch successful', memberinformation: 'Used to improve member information', Loginsuccessful: 'Login successful', Fullconsumption: 'Full consumption', RMBreduced: 'Yuan can be reduced', reduce: 'Reduce', Mealtime: 'Meal pickup time', Deliverytime: 'Delivery time', Addaddress: 'Add delivery address', Productdetails: 'Product details', Total: 'Total', piecegoods: 'Piece goods', Subtotal: 'Subtotal', Insulationbag: 'Insulation bag', Needbag: 'Need', UNneedbag: 'Unneed', reBind: 'ReBind', DeliveryFee: 'Delivery Fee', remark: 'Remark', remarkPlaceholder: 'If you need a note, please enter it', qisong: ' At least', login: 'Login', }, scoreLogs: { title: 'Score Logs', }, shop: { characteristic: 'Characteristic', openingHours: 'Business Time', contactUs: 'Contact US', viewMap: 'Open Map', Navigation: 'Navigation', join: 'Merchant Join', name: 'Name', namePlaceholder: 'Your Name', nameRequired: 'Please fill in your name', mobile: 'Mobile', mobilePlaceholder: 'Convenient for us to contact you', mobileRequired: 'Please provide your contact phone number', joinBtn: 'Apply', contentPlaceholder: 'If there is more information, please fill in~', contentRequired: 'Please fill in More information', select: 'Select Shop', }, sign: { signed: 'Signed', signSuccess: 'Sign Success', signBtn: 'Sign', }, youhuipay: { amountRequired: 'Please fill in the correct consumption amount', curAmount: 'Your current consumption', youhui: 'Discount', askAmount: 'Please ask the waiter and enter', btn: 'Confirm payment', youhuiList: 'Discount information', }, goodsList: { t: 'Goods List', sort: { zh: 'Default', xp: 'News', xl: 'Sales', jg: 'Price', } }, payment: { order: 'Pay Order', maidan: 'Check', recharge: 'Recharge', select: 'Select Payment', wx: 'WxPay', alipay: 'Alipay', alipayQrcodeText: 'Long press the picture to save, and then use Alipay to scan', notSupport: 'This payment method is not currently supported', }, home: { huiyuan: 'VIP0', zq: 'PICK UP', ps: 'Delivery', sc: 'Food', lpk: 'Gift Card', tg: 'Group Buy', bh: 'Stores', }, card: { title: 'Gift Card', buy: 'Buy Card', my: 'My Card', empty: 'No Card Sale', buy2: 'BUY', excharge: 'Exchange Card', times: 'CUP', logs: 'Consumption Details', pleaseInputNumber: 'Please enter the redemption code', xieyi: 'Agree to the Gift Card Usage Agreement', xieyi0: 'Please Read And Agree to the Gift Card Usage Agreement', cardShareOpen: 'Send Friend', cardShareClose: 'Cancel Send', shareplaceholder: 'Please have a cup of milk tea~', sending: 'Sending', receiveEmpty: 'The current gift card does not exist or has been claimed', friend: 'Friend', cardShareFetch: 'Accept Your Heart', fetchSuccess: 'The gift card has been deposited into the card bag', } } ================================================ FILE: i18n/index.js ================================================ /** * 获取当前使用的语言 */ function getLanguage() { const Language = wx.getStorageSync('Language') if (Language) { return Language } const allowLanguage = ['zh_CN', 'en'] // 目前支持的语言包 const appBaseInfo = wx.getAppBaseInfo() let _language = appBaseInfo.language || 'zh_CN' if (!allowLanguage.includes(_language)) { _language = 'zh_CN' } wx.setStorageSync('Language', _language) return _language } function $t(){ return require(getLanguage() + '.js'); } function setTabBarLanguage(){ const $t = this.$t() wx.setTabBarItem({ index: 0, pagePath: "pages/home/index", iconPath: "images/nav/home-off.png", selectedIconPath: "images/nav/home-on.png", text: $t.index.home }) wx.setTabBarItem({ index: 1, pagePath: "pages/index/index", iconPath: "images/nav/index-off.png", selectedIconPath: "images/nav/index-on.png", text: $t.index.order }) wx.setTabBarItem({ index: 2, pagePath: "pages/queue/index", iconPath: "images/nav/qh-off.png", selectedIconPath: "images/nav/qh-on.png", text: $t.queue.t }) wx.setTabBarItem({ index: 3, pagePath: "pages/order-details/doing", iconPath: "images/nav/qc-off.png", selectedIconPath: "images/nav/qc-on.png", text: $t.index.PickingUp }) wx.setTabBarItem({ index: 4, pagePath: "pages/my/index", iconPath: "images/nav/my-off.png", selectedIconPath: "images/nav/my-on.png", text: $t.my.title }) } module.exports = { setTabBarLanguage: setTabBarLanguage, getLanguage: getLanguage, $t: $t, langs: [ { name: '简体中文', code: 'zh_CN' }, { name: 'English', code: 'en' } ] } ================================================ FILE: i18n/zh_CN.js ================================================ module.exports = { common: { select: '请选择', save: '保存', cancel: '取消', confirm: '确定', doubleClick: '休息一下~', empty: '暂无数据', submitSuccess: '提交成功', gotIt: '知道了', search: '搜索', searchPlaceholder: '输入搜索关键词', getCodeError: '获取code失败', loginFail: '无法登录', authorizeRequired: '需要获得您的授权', authorize: '立即授权', upgrade: '新版本已经准备好,是否重启应用?', noNetwork: '当前无网络', networkDown: '网络已断开', privacyPermission: '未同意用户隐私协议保护协议,暂时无法使用', }, auth: { needLogin: '登陆后才能访问', goAdmin: '管理后台', }, date: { year: '年', month: '月', day: '日', hour: '点', minutes: '分', }, ad_index: { title: '地址管理', add: '新增收货地址', empty: '暂无地址信息', pleaseAdd: '请点击按钮添加地址信息', linkMan: '收件人姓名', linkManPlaceholder: '填写收件人姓名', mobile: '手机号码', mobilePlaceholder: '填写手机号码', region: '选择地区', regionPlaceholder: '选择行政地址(省、市、区县)', location: '选择定位', address: '详细地址', addressPlaceholder: '街道、楼栋、门牌等', apiError: '无法获取快递地址数据', deleteProfile: '确定要删除该收货地址吗?', }, order: { title: '全部订单', cancelProfile: '确定要取消该订单吗?', scoreNotEnough: '您的积分不足,无法支付', amountReal: '订单金额', balance: '可用余额', payAmount: '仍需支付', payScore: '需要扣除积分:', noCashAccount: '无法获取用户资金信息', status: { st01: '已取消', st10: '待取餐', st11: '配送中', st3: '已完成', }, deleteProfile: '确定要删除该订单吗?', empty: { t1: '您还没有点餐', t2: '快去犒劳一下自己吧!', btn: '去点餐', }, dateAdd: '下单时间', orderNumber: '订单编号', callShop: '联系商家', deleteOrder: '删除订单', cancelOrder: '关闭订单', toPayTap: '立即支付', detail: '订单详情', askConfirm: '确认您已收到商品?', VerificationCompleted: '核销完成', stausClosed: '当前订单已关闭', stausNoPay: '等待付款', stausSuccess: '交易完成', }, cashLog: { title: '资金明细', }, asset: { title: '我的钱包', recharge: '余额充值', amount: '充值金额', amountPlaceholder: '请输入充值金额', confirmBtn: '确认充值', success: '支付成功', confine: '充', send: '送', other: '其他', rechargeLogs: '充值记录', }, booking: { title: '在线订位', name: '联系人', namePlaceholder: '请输入联系人', mobile: '联系电话', mobilePlaceholder: '方便我们联系您', time: '到店时间', timePlaceholder: '选择预计到店时间', person: '用餐人数', tip: '座位预留半小时,逾期作废', }, cart: { title: '购物车', empty: '暂无菜品', clear: '清空购物车', num: '个商品', btn: '立即下单', ordered: '已点菜品', tableNum: '桌号', Tobeconfirmed: '待确认', Cooked:'已下厨', Served:'已上菜', Numofdishes:'菜品数量', Consumptionamount:'消费金额', Payableamount:'应付金额', Check:'结账买单', }, coupons: { title: '优惠券', inputpassword:'请输入口令', Cominglate:'来晚了', receivedgreedy:'你领过了,别贪心哦~', pointsinsufficient:'您的积分不足~', Expired :'已过期~', Successfullyclaimed :'领取成功~', enternum:'请输入券号', password:'请输入密码', Redemption:'兑换成功', Invitingcoupons:'邀您领取优惠券', Vouchers: '代金券', over: '满', btn: '立即领取', expire: '到期', toUse: '立即使用', number: '券号', numberPlaceholder: '请输入券号', pwd: '密码', pwdPlaceholder: '请输入密码', change: '立即兑换', }, goodsDetail: { title: '商品详情', noStores: '已售罄', noSelectSku: '请选择规格', noSelectAddtion: '请选择配件', buyNumber: '购买数量', noSelectNumber: '请选择购买数量', addCartSuccess: '加入购物车', addCartBtn: '加入购物车', inviteKanJia: '邀请您帮TA砍价', inviteKanJiaFriend: '邀请朋友帮忙', kanJiaAmount: '成功帮TA砍掉', kanJiaSetting: '砍价设置', longTapQrcode: '长按识别小程序码', qrcodeSaved: '已保存到手机相册', commission1: '分享有赏,好友下单后可得', commission2: '积分奖励', commission3: '现金奖励', limit: '限量', saledNum: '已售', originalPrice: '原价', minPrice: '底价', end: '截止', ended: '砍价已结束', help: '帮', kanjia: '砍价', help2: '帮砍', helpPerson: '帮砍人数', status: '状态', joinTime: '报名时间', buy: '购买', kanjiaLogs: '砍价记录', helped: '您已砍过', helphe: '帮TA砍', buyUseCurPrice: '用当前价购买', storeing: '补货中', kanjiaBtn: '发起砍价|邀请好友助力', saveImage: '保存到相册', }, index: { pingtuanNoOpen: '拼团功能未开启', pickup: '自取', Delivery: '外卖', shopDetail: '查看门店信息', minPrice: '到手价', noStart: '即将开抢', miaoshaEnd: '秒杀结束', pingtuan: '一起拼', selectSku: '选规格', submit: '选好了', selectShop: '获取门店', noBusiness: '未营业', p_persion: '人成单', p_numsuc: '已拼', remain: '差', remainToSuccess: '人,即可拼单成功', pingSuccess: '已拼单成功', originalPriceBuy: '原价购买', openNewPingtuan: '重新开团', pingtuanProcess: '拼单流程', step1: '支付开拼', step2: '好友参与', step3: '成功取餐', step4: '失败退款', order: '点餐', PickingUp: '取餐', ordered: '已点', home: '首页', }, queue: { t: '取号', success: '取号成功', myNumber: '我的号子', ExpectedWaiting: '预计等待', minutes: '分钟', }, my: { title: '我的', nickEdit: '修改昵称', nickSet: '点击设置昵称', nickRequired: '请填写昵称', uid: '用户ID', userCode: '会员码', score: '积分', signDaily: '每日签到', scanHx: '扫码核销', youhuimaidan: '优惠买单', aboutUs: '关于我们', Contact: '联系客服', clearStorage: '清除缓存', }, vip: { title: '会员', consumption: '累计消费', notVIP: '非会员', tip: '消费达到金额可自动成为会员', growth: '会员成长体系', growthName: '级别名称', growthDiscount: '购物折扣', growthConsumption: '消费标准(元)', profile: '注:当购物消费达指定标准自动成为该级别会员', }, feedback: { title: '意见反馈', name: '姓名', namePlaceholder: '如何称呼您', nameRequired: '请填写您的姓名', mobile: '联系电话', mobilePlaceholder: '方便我们与您联系', contentRequired: '请填写反馈信息', imageOrVideo: '图片/视频', contentPlaceholder: '请留下您的宝贵建议或意见~', btn: '提交反馈', }, notice: { title: '公告', }, PickingUp: { qudanhao: '取餐号', Deliverying: '正在为您配送', total: '合计', goodsInfo: '商品信息', DeliveryMethod: '配送方式', sf: '顺丰快递', remark: '留言', remarkPlaceholder: '如需留言请输入', goodsAmount: '商品金额', freight: '运费', realAmount: '应付总额', ConfirmVerification: '确认核销', }, pay: { title: '确认订单', choose: '请选择使用优惠券', chooseCard: '选择会员卡', inputphoneNO: '请输入手机号码', select: '请选择自取/配送时间', address: '当前地址超出配送范围', servicesclosed: '堂食和外卖服务已关闭', setaddress: '请设置配送地址', Receivingaddress: '请设置收货地址', information: '无法获取用户资金信息', login: '请先登陆', fetchsuccessful: '读取成功', memberinformation: '用于完善会员资料', Loginsuccessful: '登陆成功', Fullconsumption: '消费满', RMBreduced: '元可减', reduce: '减', Mealtime: '取餐时间', Deliverytime: '送达时间', Addaddress: '新增配送地址', Productdetails: '商品明细', Total: '共计', piecegoods: '件商品', Subtotal: '小计', Insulationbag: '保温袋', Needbag: '需要', UNneedbag: '不需要', reBind: '重新获取', DeliveryFee: '配送费', remark: '备注', remarkPlaceholder: '如需备注请输入', qisong: '起送', login: '授权登陆', }, scoreLogs: { title: '积分明细', }, shop: { characteristic: '本店特色', openingHours: '营业时间', contactUs: '联系我们', viewMap: '查看地图', Navigation: '导航到店', join: '商家入驻', name: '姓名', namePlaceholder: '如何称呼您', nameRequired: '请填写您的姓名', mobile: '联系电话', mobilePlaceholder: '方便我们与您联系', mobileRequired: '请填写您的联系电话', joinBtn: '申请入驻', contentPlaceholder: '如有更多信息请填写~', contentRequired: '请填写反馈信息', select: '选择门店', }, sign: { signed: '已签到', signSuccess: '签到成功', signBtn: '点击签到', }, youhuipay: { amountRequired: '请填写正确的消费金额', curAmount: '您本次消费', youhui: '优惠', askAmount: '请询问服务员后输入', btn: '确认付款', youhuiList: '优惠信息', }, goodsList: { t: '商品列表', sort: { zh: '综合', xp: '新品', xl: '销量', jg: '价格', } }, payment: { order: '支付订单', maidan: '优惠买单', recharge: '在线充值', select: '选择支付方式', wx: '微信支付', alipay: '支付宝支付', alipayQrcodeText: '长按图片保存,然后使用支付宝扫一扫付款', notSupport: '暂不支持该支付方式', }, home: { huiyuan: '普通会员', zq: '到店自取', ps: '骑手配送', sc: '食材透明', lpk: '礼品好卡', tg: '超值团购', bh: '精选百货', }, card: { title: '礼品卡', buy: '购买礼品卡', my: '我的礼品卡', empty: '暂无礼品卡', buy2: '立即购买', excharge: '兑换礼品卡', times: '杯', logs: '消费明细', pleaseInputNumber: '请输入兑换码', xieyi: '同意《礼品卡使用协议》', xieyi0: '请先阅读并同意《礼品卡使用协议》', cardShareOpen: '送给好友', cardShareClose: '取消赠送', shareplaceholder: '请你喝杯奶茶~', sending: '赠送中', receiveEmpty: '当前礼品卡不存在或已被领取', friend: '好友', cardShareFetch: '收下心意', fetchSuccess: '礼品卡已存入卡包', } } ================================================ FILE: miniprogram_npm/@vant/weapp/action-sheet/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/action-sheet/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); var button_1 = require("../mixins/button"); (0, component_1.VantComponent)({ classes: ['list-class'], 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, }, rootPortal: { type: Boolean, value: false, }, }, 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(); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/action-sheet/index.json ================================================ { "component": true, "usingComponents": { "van-icon": "../icon/index", "van-popup": "../popup/index", "van-loading": "../loading/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/action-sheet/index.wxml ================================================ {{ title }} {{ description }} {{ cancelText }} ================================================ FILE: miniprogram_npm/@vant/weapp/action-sheet/index.wxss ================================================ @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} ================================================ FILE: miniprogram_npm/@vant/weapp/area/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/area/index.js ================================================ "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), { showToolbar: { type: Boolean, value: true, }, 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(); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/area/index.json ================================================ { "component": true, "usingComponents": { "van-picker": "../picker/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/area/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/area/index.wxs ================================================ /* eslint-disable */ function displayColumns(columns, columnsNum) { return columns.slice(0, +columnsNum); } module.exports = { displayColumns: displayColumns, }; ================================================ FILE: miniprogram_npm/@vant/weapp/area/index.wxss ================================================ @import '../common/index.wxss'; ================================================ FILE: miniprogram_npm/@vant/weapp/button/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/button/index.js ================================================ "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); }, }); } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/button/index.json ================================================ { "component": true, "usingComponents": { "van-icon": "../icon/index", "van-loading": "../loading/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/button/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/button/index.wxs ================================================ /* 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, }; ================================================ FILE: miniprogram_npm/@vant/weapp/button/index.wxss ================================================ @import '../common/index.wxss';.van-button{-webkit-text-size-adjust:100%;align-items:center;-webkit-appearance:none;border-radius:var(--button-border-radius,2px);box-sizing:border-box;display:inline-flex;font-size:var(--button-default-font-size,16px);height:var(--button-default-height,44px);justify-content:center;line-height:var(--button-line-height,20px);padding:0;position:relative;text-align:center;transition:opacity .2s;vertical-align:middle}.van-button:before{background-color:#000;border:inherit;border-color:#000;border-radius:inherit;content:" ";height:100%;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{background:var(--button-default-background-color,#fff);border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0);color:var(--button-default-color,#323233)}.van-button--primary{background:var(--button-primary-background-color,#07c160);border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160);color:var(--button-primary-color,#fff)}.van-button--info{background:var(--button-info-background-color,#1989fa);border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa);color:var(--button-info-color,#fff)}.van-button--danger{background:var(--button-danger-background-color,#ee0a24);border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24);color:var(--button-danger-color,#fff)}.van-button--warning{background:var(--button-warning-background-color,#ff976a);border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a);color:var(--button-warning-color,#fff)}.van-button--plain{background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:var(--button-warning-background-color,#ff976a)}.van-button--large{height:var(--button-large-height,50px);width:100%}.van-button--normal{font-size:var(--button-normal-font-size,14px);padding:0 15px}.van-button--small{font-size:var(--button-small-font-size,12px);height:var(--button-small-height,30px);min-width:var(--button-small-min-width,60px);padding:0 var(--padding-xs,8px)}.van-button--mini{display:inline-block;font-size:var(--button-mini-font-size,10px);height:var(--button-mini-height,22px);min-width:var(--button-mini-min-width,50px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:flex;width:100%}.van-button--round{border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{line-height:inherit!important;min-width:1em;vertical-align:top}.van-button--hairline{border-width:0;padding-top:1px}.van-button--hairline:after{border-color:inherit;border-radius:calc(var(--button-border-radius, 2px)*2);border-width:1px}.van-button--hairline.van-button--round:after{border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0} ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/calendar.wxml ================================================
{{ computed.getButtonDisabled(type, currentDate, minRange) ? confirmDisabledText : confirmText }}
================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/header/index.js ================================================ "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); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/header/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml ================================================ {{ title }} {{ subtitle }} {{ item }} ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss ================================================ @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} ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts ================================================ export interface Day { date: Date; type: string; text: number; bottomInfo?: string; } ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/month/index.js ================================================ "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 '开始/结束'; } } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/month/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml ================================================ {{ computed.formatMonthTitle(date) }} {{ computed.getMark(date) }} {{ item.topInfo }} {{ item.text }} {{ item.bottomInfo }} {{ item.topInfo }} {{ item.text }} {{ item.bottomInfo }} ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs ================================================ /* 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 }; ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss ================================================ @import '../../../common/index.wxss';.van-calendar{background-color:var(--calendar-background-color,#fff);display:flex;flex-direction:column;height:100%}.van-calendar__month-title{font-size:var(--calendar-month-title-font-size,14px);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__days{display:flex;flex-wrap:wrap;position:relative;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:var(--calendar-month-mark-font-size,160px);left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:0}.van-calendar__day,.van-calendar__selected-day{align-items:center;display:flex;justify-content:center;text-align:center}.van-calendar__day{font-size:var(--calendar-day-font-size,16px);height:var(--calendar-day-height,64px);position:relative;width:14.285%}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{background-color:var(--calendar-range-edge-background-color,#ee0a24);color:var(--calendar-range-edge-color,#fff)}.van-calendar__day--start{border-radius:4px 0 0 4px}.van-calendar__day--end{border-radius:0 4px 4px 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px}.van-calendar__day--middle{color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{background-color:currentColor;bottom:0;content:"";left:0;opacity:var(--calendar-range-middle-background-opacity,.1);position:absolute;right:0;top:0}.van-calendar__day--disabled{color:var(--calendar-day-disabled-color,#c8c9cc);cursor:default}.van-calendar__bottom-info,.van-calendar__top-info{font-size:var(--calendar-info-font-size,10px);left:0;line-height:var(--calendar-info-line-height,14px);position:absolute;right:0}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;color:var(--calendar-selected-day-color,#fff);height:var(--calendar-selected-day-size,54px);width:var(--calendar-selected-day-size,54px)} ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/index.js ================================================ "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, value: (0, utils_1.getToday)().getTime(), 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, }, minRange: { type: Number, value: 1, }, firstDayOfWeek: { type: Number, value: 0, }, readonly: Boolean, rootPortal: { type: Boolean, value: false, }, }, data: { subtitle: '', currentDate: null, scrollIntoView: '', }, watch: { minDate: function () { this.initRect(); }, maxDate: function () { this.initRect(); }, }, 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.data.defaultDate) }); 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, allowSameDay = _a.allowSameDay; if (!defaultDate) return []; 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 startDate = getTime(startDay || now); var start = this.limitDateRange(startDate, minDate, allowSameDay ? startDate : (0, utils_1.getPrevDay)(new Date(maxDate)).getTime()); var date = getTime(endDay || now); var end = this.limitDateRange(date, allowSameDay ? date : (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; if (!currentDate) return; // @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], true); } } 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); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/index.json ================================================ { "component": true, "usingComponents": { "header": "./components/header/index", "month": "./components/month/index", "van-button": "../button/index", "van-popup": "../popup/index", "van-toast": "../toast/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/index.wxs ================================================ /* eslint-disable */ var utils = require('./utils.wxs'); function getMonths(minDate, maxDate) { var months = []; var cursor = getDate(minDate); cursor.setDate(1); do { months.push(cursor.getTime()); cursor.setMonth(cursor.getMonth() + 1); } while (utils.compareMonth(cursor, getDate(maxDate)) !== 1); return months; } function getButtonDisabled(type, currentDate, minRange) { if (currentDate == null) { return true; } if (type === 'range') { return !currentDate[0] || !currentDate[1]; } if (type === 'multiple') { return currentDate.length < minRange; } return !currentDate; } module.exports = { getMonths: getMonths, getButtonDisabled: getButtonDisabled }; ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/index.wxss ================================================ @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,90%)}.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} ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/utils.d.ts ================================================ export declare const ROW_HEIGHT = 64; export declare function formatMonthTitle(date: Date): string; export declare function compareMonth(date1: Date | number, date2: Date | number): 0 | 1 | -1; export declare function compareDay(day1: Date | number, day2: Date | number): 0 | 1 | -1; 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[]; ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/utils.js ================================================ "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; ================================================ FILE: miniprogram_npm/@vant/weapp/calendar/utils.wxs ================================================ /* 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 }; ================================================ FILE: miniprogram_npm/@vant/weapp/card/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/card/index.js ================================================ "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'); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/card/index.json ================================================ { "component": true, "usingComponents": { "van-tag": "../tag/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/card/index.wxml ================================================ {{ tag }} {{ title }} {{ desc }} {{ currency }} {{ integerStr }} {{ decimalStr }} {{ currency }} {{ originPrice }} x {{ num }} ================================================ FILE: miniprogram_npm/@vant/weapp/card/index.wxss ================================================ @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%} ================================================ FILE: miniprogram_npm/@vant/weapp/cascader/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/cascader/index.js ================================================ "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"); var FieldName; (function (FieldName) { FieldName["TEXT"] = "text"; FieldName["VALUE"] = "value"; FieldName["CHILDREN"] = "children"; })(FieldName || (FieldName = {})); var defaultFieldNames = { text: FieldName.TEXT, value: FieldName.VALUE, children: FieldName.CHILDREN, }; (0, component_1.VantComponent)({ props: { title: String, value: { type: String, }, placeholder: { type: String, value: '请选择', }, activeColor: { type: String, value: '#1989fa', }, options: { type: Array, value: [], }, swipeable: { type: Boolean, value: false, }, closeable: { type: Boolean, value: true, }, ellipsis: { type: Boolean, value: true, }, showHeader: { type: Boolean, value: true, }, closeIcon: { type: String, value: 'cross', }, fieldNames: { type: Object, value: defaultFieldNames, observer: 'updateFieldNames', }, useTitleSlot: Boolean, }, data: { tabs: [], activeTab: 0, textKey: FieldName.TEXT, valueKey: FieldName.VALUE, childrenKey: FieldName.CHILDREN, innerValue: '', }, watch: { options: function () { this.updateTabs(); }, value: function (newVal) { this.updateValue(newVal); }, }, created: function () { this.updateTabs(); }, methods: { updateValue: function (val) { var _this = this; if (val !== undefined) { var values = this.data.tabs.map(function (tab) { return tab.selected && tab.selected[_this.data.valueKey]; }); if (values.indexOf(val) > -1) { return; } } this.innerValue = val; this.updateTabs(); }, updateFieldNames: function () { var _a = this.data.fieldNames || defaultFieldNames, _b = _a.text, text = _b === void 0 ? 'text' : _b, _c = _a.value, value = _c === void 0 ? 'value' : _c, _d = _a.children, children = _d === void 0 ? 'children' : _d; this.setData({ textKey: text, valueKey: value, childrenKey: children, }); }, getSelectedOptionsByValue: function (options, value) { for (var i = 0; i < options.length; i++) { var option = options[i]; if (option[this.data.valueKey] === value) { return [option]; } if (option[this.data.childrenKey]) { var selectedOptions = this.getSelectedOptionsByValue(option[this.data.childrenKey], value); if (selectedOptions) { return __spreadArray([option], selectedOptions, true); } } } }, updateTabs: function () { var _this = this; var options = this.data.options; var innerValue = this.innerValue; if (!options.length) { return; } if (innerValue !== undefined) { var selectedOptions = this.getSelectedOptionsByValue(options, innerValue); if (selectedOptions) { var optionsCursor_1 = options; var tabs_1 = selectedOptions.map(function (option) { var tab = { options: optionsCursor_1, selected: option, }; var next = optionsCursor_1.find(function (item) { return item[_this.data.valueKey] === option[_this.data.valueKey]; }); if (next) { optionsCursor_1 = next[_this.data.childrenKey]; } return tab; }); if (optionsCursor_1) { tabs_1.push({ options: optionsCursor_1, selected: null, }); } this.setData({ tabs: tabs_1, }); wx.nextTick(function () { _this.setData({ activeTab: tabs_1.length - 1, }); }); return; } } this.setData({ tabs: [ { options: options, selected: null, }, ], activeTab: 0, }); }, onClose: function () { this.$emit('close'); }, onClickTab: function (e) { var _a = e.detail, tabIndex = _a.index, title = _a.title; this.$emit('click-tab', { title: title, tabIndex: tabIndex }); this.setData({ activeTab: tabIndex, }); }, // 选中 onSelect: function (e) { var _this = this; var _a = e.currentTarget.dataset, option = _a.option, tabIndex = _a.tabIndex; if (option && option.disabled) { return; } var _b = this.data, valueKey = _b.valueKey, childrenKey = _b.childrenKey; var tabs = this.data.tabs; tabs[tabIndex].selected = option; if (tabs.length > tabIndex + 1) { tabs = tabs.slice(0, tabIndex + 1); } if (option[childrenKey]) { var nextTab = { options: option[childrenKey], selected: null, }; if (tabs[tabIndex + 1]) { tabs[tabIndex + 1] = nextTab; } else { tabs.push(nextTab); } wx.nextTick(function () { _this.setData({ activeTab: tabIndex + 1, }); }); } this.setData({ tabs: tabs, }); var selectedOptions = tabs.map(function (tab) { return tab.selected; }).filter(Boolean); var value = option[valueKey]; var params = { value: value, tabIndex: tabIndex, selectedOptions: selectedOptions, }; this.innerValue = value; this.$emit('change', params); if (!option[childrenKey]) { this.$emit('finish', params); } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/cascader/index.json ================================================ { "component": true, "usingComponents": { "van-icon": "../icon/index", "van-tab": "../tab/index", "van-tabs": "../tabs/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/cascader/index.wxml ================================================ {{ title }} {{ option[textKey] }} ================================================ FILE: miniprogram_npm/@vant/weapp/cascader/index.wxs ================================================ var utils = require('../wxs/utils.wxs'); var style = require('../wxs/style.wxs'); function isSelected(tab, valueKey, option) { return tab.selected && tab.selected[valueKey] === option[valueKey] } function optionClass(tab, valueKey, option) { return utils.bem('cascader__option', { selected: isSelected(tab, valueKey, option), disabled: option.disabled }) } function optionStyle(data) { var color = data.option.color || (isSelected(data.tab, data.valueKey, data.option) ? data.activeColor : undefined); return style({ color }); } module.exports = { isSelected: isSelected, optionClass: optionClass, optionStyle: optionStyle, }; ================================================ FILE: miniprogram_npm/@vant/weapp/cascader/index.wxss ================================================ @import '../common/index.wxss';.van-cascader__header{align-items:center;display:flex;height:48px;justify-content:space-between;padding:0 16px}.van-cascader__title{font-size:16px;font-weight:600;line-height:20px}.van-cascader__close-icon{color:#c8c9cc;font-size:22px;height:22px}.van-cascader__tabs-wrap{height:48px!important;padding:0 8px}.van-cascader__tab{color:#323233!important;flex:none!important;font-weight:600!important;padding:0 8px!important}.van-cascader__tab--unselected{color:#969799!important;font-weight:400!important}.van-cascader__option{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;line-height:20px;padding:10px 16px}.van-cascader__option:active{background-color:#f2f3f5}.van-cascader__option--selected{color:#1989fa;font-weight:600}.van-cascader__option--disabled{color:#c8c9cc;cursor:not-allowed}.van-cascader__option--disabled:active{background-color:initial}.van-cascader__options{-webkit-overflow-scrolling:touch;box-sizing:border-box;height:384px;overflow-y:auto;padding-top:6px} ================================================ FILE: miniprogram_npm/@vant/weapp/cell/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/cell/index.js ================================================ "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(); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/cell/index.json ================================================ { "component": true, "usingComponents": { "van-icon": "../icon/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/cell/index.wxml ================================================ {{ title }} {{ label }} {{ value }} ================================================ FILE: miniprogram_npm/@vant/weapp/cell/index.wxs ================================================ /* 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, }; ================================================ FILE: miniprogram_npm/@vant/weapp/cell/index.wxss ================================================ @import '../common/index.wxss';.van-cell{background-color:var(--cell-background-color,#fff);box-sizing:border-box;color:var(--cell-text-color,#323233);display:flex;font-size:var(--cell-font-size,14px);line-height:var(--cell-line-height,24px);padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);position:relative;width:100%}.van-cell:after{border-bottom:1px solid #ebedf0;bottom:0;box-sizing:border-box;content:" ";left:16px;pointer-events:none;position:absolute;right:16px;transform:scaleY(.5);transform-origin:center}.van-cell--borderless:after{display:none}.van-cell-group{background-color:var(--cell-background-color,#fff)}.van-cell__label{color:var(--cell-label-color,#969799);font-size:var(--cell-label-font-size,12px);line-height:var(--cell-label-line-height,18px);margin-top:var(--cell-label-margin-top,3px)}.van-cell__value{color:var(--cell-value-color,#969799);overflow:hidden;text-align:right;vertical-align:middle}.van-cell__title,.van-cell__value{flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{align-items:center;display:flex;font-size:var(--cell-icon-size,16px);height:var(--cell-line-height,24px)}.van-cell__left-icon-wrap{margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{color:var(--cell-right-icon-color,#969799);margin-left:var(--padding-base,4px)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{color:var(--cell-required-color,#ee0a24);content:"*";font-size:var(--cell-font-size,14px);left:var(--padding-xs,8px);position:absolute}.van-cell--center{align-items:center}.van-cell--large{padding-bottom:var(--cell-large-vertical-padding,12px);padding-top:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:var(--cell-large-label-font-size,14px)} ================================================ FILE: miniprogram_npm/@vant/weapp/cell-group/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/cell-group/index.js ================================================ "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, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/cell-group/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/cell-group/index.wxml ================================================ {{ title }} ================================================ FILE: miniprogram_npm/@vant/weapp/cell-group/index.wxss ================================================ @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)} ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox/index.js ================================================ "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); } } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox/index.json ================================================ { "component": true, "usingComponents": { "van-icon": "../icon/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox/index.wxs ================================================ /* 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, }; ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox/index.wxss ================================================ @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} ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox-group/index.js ================================================ "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, }); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox-group/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox-group/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/checkbox-group/index.wxss ================================================ @import '../common/index.wxss';.van-checkbox-group--horizontal{display:flex;flex-wrap:wrap} ================================================ FILE: miniprogram_npm/@vant/weapp/circle/canvas.d.ts ================================================ /// type CanvasContext = WechatMiniprogram.CanvasContext; export declare function adaptor(ctx: CanvasContext & Record): CanvasContext; export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/circle/canvas.js ================================================ "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; ================================================ FILE: miniprogram_npm/@vant/weapp/circle/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/circle/index.js ================================================ "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) { if (!context) return; 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) { if (!context) return; 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(); }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/circle/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/circle/index.wxml ================================================ {{ text }} ================================================ FILE: miniprogram_npm/@vant/weapp/circle/index.wxss ================================================ @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%} ================================================ FILE: miniprogram_npm/@vant/weapp/col/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/col/index.js ================================================ "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, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/col/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/col/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/col/index.wxs ================================================ /* eslint-disable */ var style = require('../wxs/style.wxs'); var addUnit = require('../wxs/add-unit.wxs'); function rootStyle(data) { if (!data.gutter) { return ''; } return style({ 'padding-right': addUnit(data.gutter / 2), 'padding-left': addUnit(data.gutter / 2), }); } module.exports = { rootStyle: rootStyle, }; ================================================ FILE: miniprogram_npm/@vant/weapp/col/index.wxss ================================================ @import '../common/index.wxss';.van-col{box-sizing:border-box;float:left}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%} ================================================ FILE: miniprogram_npm/@vant/weapp/collapse/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/collapse/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); var relation_1 = require("../common/relation"); (0, component_1.VantComponent)({ relation: (0, relation_1.useChildren)('collapse-item'), props: { value: { type: null, observer: 'updateExpanded', }, accordion: { type: Boolean, observer: 'updateExpanded', }, border: { type: Boolean, value: true, }, }, methods: { updateExpanded: function () { this.children.forEach(function (child) { child.updateExpanded(); }); }, switch: function (name, expanded) { var _a = this.data, accordion = _a.accordion, value = _a.value; var changeItem = name; if (!accordion) { name = expanded ? (value || []).concat(name) : (value || []).filter(function (activeName) { return activeName !== name; }); } else { name = expanded ? name : ''; } if (expanded) { this.$emit('open', changeItem); } else { this.$emit('close', changeItem); } this.$emit('change', name); this.$emit('input', name); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/collapse/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/collapse/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/collapse/index.wxss ================================================ @import '../common/index.wxss'; ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/animate.d.ts ================================================ /// export declare function setContentAnimate(context: WechatMiniprogram.Component.TrivialInstance, expanded: boolean, mounted: boolean): void; ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/animate.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setContentAnimate = void 0; var utils_1 = require("../common/utils"); function useAnimation(context, expanded, mounted, height) { var animation = wx.createAnimation({ duration: 0, timingFunction: 'ease-in-out', }); if (expanded) { if (height === 0) { animation.height('auto').top(1).step(); } else { animation .height(height) .top(1) .step({ duration: mounted ? 300 : 1, }) .height('auto') .step(); } context.setData({ animation: animation.export(), }); return; } animation.height(height).top(0).step({ duration: 1 }).height(0).step({ duration: 300, }); context.setData({ animation: animation.export(), }); } function setContentAnimate(context, expanded, mounted) { (0, utils_1.getRect)(context, '.van-collapse-item__content') .then(function (rect) { return rect.height; }) .then(function (height) { useAnimation(context, expanded, mounted, height); }); } exports.setContentAnimate = setContentAnimate; ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); var relation_1 = require("../common/relation"); var animate_1 = require("./animate"); (0, component_1.VantComponent)({ classes: ['title-class', 'content-class'], relation: (0, relation_1.useParent)('collapse'), props: { size: String, name: null, title: null, value: null, icon: String, label: String, disabled: Boolean, clickable: Boolean, border: { type: Boolean, value: true, }, isLink: { type: Boolean, value: true, }, }, data: { expanded: false, parentBorder: true, }, mounted: function () { this.updateExpanded(); this.mounted = true; }, methods: { updateExpanded: function () { if (!this.parent) { return; } var _a = this.parent.data, value = _a.value, accordion = _a.accordion, border = _a.border; var _b = this.parent.children, children = _b === void 0 ? [] : _b; var name = this.data.name; var index = children.indexOf(this); var currentName = name == null ? index : name; var expanded = accordion ? value === currentName : (value || []).some(function (name) { return name === currentName; }); if (expanded !== this.data.expanded) { (0, animate_1.setContentAnimate)(this, expanded, this.mounted); } this.setData({ index: index, expanded: expanded, parentBorder: border }); }, onClick: function () { if (this.data.disabled) { return; } var _a = this.data, name = _a.name, expanded = _a.expanded; var index = this.parent.children.indexOf(this); var currentName = name == null ? index : name; this.parent.switch(currentName, !expanded); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/index.json ================================================ { "component": true, "usingComponents": { "van-cell": "../cell/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/collapse-item/index.wxss ================================================ @import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{transform:rotate(90deg);transition:transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{background-color:var(--collapse-item-content-background-color,#fff);color:var(--collapse-item-content-text-color,#969799);font-size:var(--collapse-item-content-font-size,13px);line-height:var(--collapse-item-content-line-height,1.5);padding:var(--collapse-item-content-padding,15px)} ================================================ FILE: miniprogram_npm/@vant/weapp/common/color.d.ts ================================================ export declare const RED = "#ee0a24"; export declare const BLUE = "#1989fa"; export declare const WHITE = "#fff"; export declare const GREEN = "#07c160"; export declare const ORANGE = "#ff976a"; export declare const GRAY = "#323233"; export declare const GRAY_DARK = "#969799"; ================================================ FILE: miniprogram_npm/@vant/weapp/common/color.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GRAY_DARK = exports.GRAY = exports.ORANGE = exports.GREEN = exports.WHITE = exports.BLUE = exports.RED = void 0; exports.RED = '#ee0a24'; exports.BLUE = '#1989fa'; exports.WHITE = '#fff'; exports.GREEN = '#07c160'; exports.ORANGE = '#ff976a'; exports.GRAY = '#323233'; exports.GRAY_DARK = '#969799'; ================================================ FILE: miniprogram_npm/@vant/weapp/common/component.d.ts ================================================ /// import { VantComponentOptions } from 'definitions/index'; declare function VantComponent(vantOptions: VantComponentOptions): void; export { VantComponent }; ================================================ FILE: miniprogram_npm/@vant/weapp/common/component.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VantComponent = void 0; var basic_1 = require("../mixins/basic"); function mapKeys(source, target, map) { Object.keys(map).forEach(function (key) { if (source[key]) { target[map[key]] = source[key]; } }); } function VantComponent(vantOptions) { var options = {}; mapKeys(vantOptions, options, { data: 'data', props: 'properties', watch: 'observers', mixins: 'behaviors', methods: 'methods', beforeCreate: 'created', created: 'attached', mounted: 'ready', destroyed: 'detached', classes: 'externalClasses', }); // add default externalClasses options.externalClasses = options.externalClasses || []; options.externalClasses.push('custom-class'); // add default behaviors options.behaviors = options.behaviors || []; options.behaviors.push(basic_1.basic); // add relations var relation = vantOptions.relation; if (relation) { options.relations = relation.relations; options.behaviors.push(relation.mixin); } // map field to form-field behavior if (vantOptions.field) { options.behaviors.push('wx://form-field'); } // add default options options.options = { multipleSlots: true, addGlobalClass: true, }; Component(options); } exports.VantComponent = VantComponent; ================================================ FILE: miniprogram_npm/@vant/weapp/common/index.wxss ================================================ .van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{clear:both;content:"";display:table}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{border:0 solid #ebedf0;bottom:-50%;box-sizing:border-box;content:" ";left:-50%;pointer-events:none;position:absolute;right:-50%;top:-50%;transform:scale(.5);transform-origin:center}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} ================================================ FILE: miniprogram_npm/@vant/weapp/common/relation.d.ts ================================================ /// type TrivialInstance = WechatMiniprogram.Component.TrivialInstance; export declare function useParent(name: string, onEffect?: (this: TrivialInstance) => void): { relations: { [x: string]: WechatMiniprogram.Component.RelationOption; }; mixin: string; }; export declare function useChildren(name: string, onEffect?: (this: TrivialInstance, target: TrivialInstance) => void): { relations: { [x: string]: WechatMiniprogram.Component.RelationOption; }; mixin: string; }; export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/common/relation.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useChildren = exports.useParent = void 0; function useParent(name, onEffect) { var _a; var path = "../".concat(name, "/index"); return { relations: (_a = {}, _a[path] = { type: 'ancestor', linked: function () { onEffect && onEffect.call(this); }, linkChanged: function () { onEffect && onEffect.call(this); }, unlinked: function () { onEffect && onEffect.call(this); }, }, _a), mixin: Behavior({ created: function () { var _this = this; Object.defineProperty(this, 'parent', { get: function () { return _this.getRelationNodes(path)[0]; }, }); Object.defineProperty(this, 'index', { // @ts-ignore get: function () { var _a, _b; return (_b = (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.indexOf(_this); }, }); }, }), }; } exports.useParent = useParent; function useChildren(name, onEffect) { var _a; var path = "../".concat(name, "/index"); return { relations: (_a = {}, _a[path] = { type: 'descendant', linked: function (target) { onEffect && onEffect.call(this, target); }, linkChanged: function (target) { onEffect && onEffect.call(this, target); }, unlinked: function (target) { onEffect && onEffect.call(this, target); }, }, _a), mixin: Behavior({ created: function () { var _this = this; Object.defineProperty(this, 'children', { get: function () { return _this.getRelationNodes(path) || []; }, }); }, }), }; } exports.useChildren = useChildren; ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/clearfix.wxss ================================================ .van-clearfix:after{clear:both;content:"";display:table} ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss ================================================ .van-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis}.van-multi-ellipsis--l3{-webkit-line-clamp:3} ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/hairline.wxss ================================================ .van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{border:0 solid #ebedf0;bottom:-50%;box-sizing:border-box;content:" ";left:-50%;pointer-events:none;position:absolute;right:-50%;top:-50%;transform:scale(.5);transform-origin:center}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px} ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/common/style/var.wxss ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/common/utils.d.ts ================================================ /// /// /// /// /// export { isDef } from './validator'; export { getSystemInfoSync } from './version'; export declare function range(num: number, min: number, max: number): number; export declare function nextTick(cb: (...args: any[]) => void): void; export declare function addUnit(value?: string | number): string | undefined; export declare function requestAnimationFrame(cb: () => void): NodeJS.Timeout; export declare function pickExclude(obj: unknown, keys: string[]): {}; export declare function getRect(context: WechatMiniprogram.Component.TrivialInstance, selector: string): Promise; export declare function getAllRect(context: WechatMiniprogram.Component.TrivialInstance, selector: string): Promise; export declare function groupSetData(context: WechatMiniprogram.Component.TrivialInstance, cb: () => void): void; export declare function toPromise(promiseLike: Promise | unknown): Promise; export declare function addNumber(num1: any, num2: any): number; export declare const clamp: (num: any, min: any, max: any) => number; export declare function getCurrentPage(): T & WechatMiniprogram.OptionalInterface & WechatMiniprogram.Page.InstanceProperties & WechatMiniprogram.Page.InstanceMethods & WechatMiniprogram.Page.Data & WechatMiniprogram.IAnyObject; export declare const isPC: boolean; export declare const isWxWork: boolean; ================================================ FILE: miniprogram_npm/@vant/weapp/common/utils.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isWxWork = exports.isPC = exports.getCurrentPage = exports.clamp = exports.addNumber = exports.toPromise = exports.groupSetData = exports.getAllRect = exports.getRect = exports.pickExclude = exports.requestAnimationFrame = exports.addUnit = exports.nextTick = exports.range = exports.getSystemInfoSync = exports.isDef = void 0; var validator_1 = require("./validator"); var version_1 = require("./version"); var validator_2 = require("./validator"); Object.defineProperty(exports, "isDef", { enumerable: true, get: function () { return validator_2.isDef; } }); var version_2 = require("./version"); Object.defineProperty(exports, "getSystemInfoSync", { enumerable: true, get: function () { return version_2.getSystemInfoSync; } }); function range(num, min, max) { return Math.min(Math.max(num, min), max); } exports.range = range; function nextTick(cb) { if ((0, version_1.canIUseNextTick)()) { wx.nextTick(cb); } else { setTimeout(function () { cb(); }, 1000 / 30); } } exports.nextTick = nextTick; function addUnit(value) { if (!(0, validator_1.isDef)(value)) { return undefined; } value = String(value); return (0, validator_1.isNumber)(value) ? "".concat(value, "px") : value; } exports.addUnit = addUnit; function requestAnimationFrame(cb) { return setTimeout(function () { cb(); }, 1000 / 30); } exports.requestAnimationFrame = requestAnimationFrame; function pickExclude(obj, keys) { if (!(0, validator_1.isPlainObject)(obj)) { return {}; } return Object.keys(obj).reduce(function (prev, key) { if (!keys.includes(key)) { prev[key] = obj[key]; } return prev; }, {}); } exports.pickExclude = pickExclude; function getRect(context, selector) { return new Promise(function (resolve) { wx.createSelectorQuery() .in(context) .select(selector) .boundingClientRect() .exec(function (rect) { if (rect === void 0) { rect = []; } return resolve(rect[0]); }); }); } exports.getRect = getRect; function getAllRect(context, selector) { return new Promise(function (resolve) { wx.createSelectorQuery() .in(context) .selectAll(selector) .boundingClientRect() .exec(function (rect) { if (rect === void 0) { rect = []; } return resolve(rect[0]); }); }); } exports.getAllRect = getAllRect; function groupSetData(context, cb) { if ((0, version_1.canIUseGroupSetData)()) { context.groupSetData(cb); } else { cb(); } } exports.groupSetData = groupSetData; function toPromise(promiseLike) { if ((0, validator_1.isPromise)(promiseLike)) { return promiseLike; } return Promise.resolve(promiseLike); } exports.toPromise = toPromise; // 浮点数精度处理 function addNumber(num1, num2) { var cardinal = Math.pow(10, 10); return Math.round((num1 + num2) * cardinal) / cardinal; } exports.addNumber = addNumber; // 限制value在[min, max]之间 var clamp = function (num, min, max) { return Math.min(Math.max(num, min), max); }; exports.clamp = clamp; function getCurrentPage() { var pages = getCurrentPages(); return pages[pages.length - 1]; } exports.getCurrentPage = getCurrentPage; exports.isPC = ['mac', 'windows'].includes((0, version_1.getSystemInfoSync)().platform); // 是否企业微信 exports.isWxWork = (0, version_1.getSystemInfoSync)().environment === 'wxwork'; ================================================ FILE: miniprogram_npm/@vant/weapp/common/validator.d.ts ================================================ export declare function isFunction(val: unknown): val is Function; export declare function isPlainObject(val: unknown): val is Record; export declare function isPromise(val: unknown): val is Promise; export declare function isDef(value: unknown): boolean; export declare function isObj(x: unknown): x is Record; export declare function isNumber(value: string): boolean; export declare function isBoolean(value: unknown): value is boolean; export declare function isImageUrl(url: string): boolean; export declare function isVideoUrl(url: string): boolean; ================================================ FILE: miniprogram_npm/@vant/weapp/common/validator.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isVideoUrl = exports.isImageUrl = exports.isBoolean = exports.isNumber = exports.isObj = exports.isDef = exports.isPromise = exports.isPlainObject = exports.isFunction = void 0; // eslint-disable-next-line @typescript-eslint/ban-types function isFunction(val) { return typeof val === 'function'; } exports.isFunction = isFunction; function isPlainObject(val) { return val !== null && typeof val === 'object' && !Array.isArray(val); } exports.isPlainObject = isPlainObject; function isPromise(val) { return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch); } exports.isPromise = isPromise; function isDef(value) { return value !== undefined && value !== null; } exports.isDef = isDef; function isObj(x) { var type = typeof x; return x !== null && (type === 'object' || type === 'function'); } exports.isObj = isObj; function isNumber(value) { return /^\d+(\.\d+)?$/.test(value); } exports.isNumber = isNumber; function isBoolean(value) { return typeof value === 'boolean'; } exports.isBoolean = isBoolean; var IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; var VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i; function isImageUrl(url) { return IMAGE_REGEXP.test(url); } exports.isImageUrl = isImageUrl; function isVideoUrl(url) { return VIDEO_REGEXP.test(url); } exports.isVideoUrl = isVideoUrl; ================================================ FILE: miniprogram_npm/@vant/weapp/common/version.d.ts ================================================ /// interface WxWorkSystemInfo extends WechatMiniprogram.SystemInfo { environment?: 'wxwork'; } interface SystemInfo extends WxWorkSystemInfo, WechatMiniprogram.SystemInfo { } export declare function getSystemInfoSync(): SystemInfo; export declare function canIUseModel(): boolean; export declare function canIUseFormFieldButton(): boolean; export declare function canIUseAnimate(): boolean; export declare function canIUseGroupSetData(): boolean; export declare function canIUseNextTick(): boolean; export declare function canIUseCanvas2d(): boolean; export declare function canIUseGetUserProfile(): boolean; export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/common/version.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.canIUseGetUserProfile = exports.canIUseCanvas2d = exports.canIUseNextTick = exports.canIUseGroupSetData = exports.canIUseAnimate = exports.canIUseFormFieldButton = exports.canIUseModel = exports.getSystemInfoSync = void 0; var systemInfo; function getSystemInfoSync() { if (systemInfo == null) { systemInfo = wx.getSystemInfoSync(); } return systemInfo; } exports.getSystemInfoSync = getSystemInfoSync; function compareVersion(v1, v2) { v1 = v1.split('.'); v2 = v2.split('.'); var len = Math.max(v1.length, v2.length); while (v1.length < len) { v1.push('0'); } while (v2.length < len) { v2.push('0'); } for (var i = 0; i < len; i++) { var num1 = parseInt(v1[i], 10); var num2 = parseInt(v2[i], 10); if (num1 > num2) { return 1; } if (num1 < num2) { return -1; } } return 0; } function gte(version) { var system = getSystemInfoSync(); return compareVersion(system.SDKVersion, version) >= 0; } function canIUseModel() { return gte('2.9.3'); } exports.canIUseModel = canIUseModel; function canIUseFormFieldButton() { return gte('2.10.3'); } exports.canIUseFormFieldButton = canIUseFormFieldButton; function canIUseAnimate() { return gte('2.9.0'); } exports.canIUseAnimate = canIUseAnimate; function canIUseGroupSetData() { return gte('2.4.0'); } exports.canIUseGroupSetData = canIUseGroupSetData; function canIUseNextTick() { try { return wx.canIUse('nextTick'); } catch (e) { return gte('2.7.1'); } } exports.canIUseNextTick = canIUseNextTick; function canIUseCanvas2d() { return gte('2.9.0'); } exports.canIUseCanvas2d = canIUseCanvas2d; function canIUseGetUserProfile() { return !!wx.getUserProfile; } exports.canIUseGetUserProfile = canIUseGetUserProfile; ================================================ FILE: miniprogram_npm/@vant/weapp/config-provider/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/config-provider/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); (0, component_1.VantComponent)({ props: { themeVars: { type: Object, value: {}, }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/config-provider/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/config-provider/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/config-provider/index.wxs ================================================ /* eslint-disable */ var object = require('../wxs/object.wxs'); var style = require('../wxs/style.wxs'); function kebabCase(word) { var newWord = word .replace(getRegExp("[A-Z]", 'g'), function (i) { return '-' + i; }) .toLowerCase() .replace(getRegExp("^-"), ''); return newWord; } function mapThemeVarsToCSSVars(themeVars) { var cssVars = {}; object.keys(themeVars).forEach(function (key) { var cssVarsKey = '--' + kebabCase(key); cssVars[cssVarsKey] = themeVars[key]; }); return style(cssVars); } module.exports = { kebabCase: kebabCase, mapThemeVarsToCSSVars: mapThemeVarsToCSSVars, }; ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); var utils_1 = require("./utils"); function simpleTick(fn) { return setTimeout(fn, 30); } (0, component_1.VantComponent)({ props: { useSlot: Boolean, millisecond: Boolean, time: { type: Number, observer: 'reset', }, format: { type: String, value: 'HH:mm:ss', }, autoStart: { type: Boolean, value: true, }, }, data: { timeData: (0, utils_1.parseTimeData)(0), formattedTime: '0', }, destroyed: function () { clearTimeout(this.tid); this.tid = null; }, methods: { // 开始 start: function () { if (this.counting) { return; } this.counting = true; this.endTime = Date.now() + this.remain; this.tick(); }, // 暂停 pause: function () { this.counting = false; clearTimeout(this.tid); }, // 重置 reset: function () { this.pause(); this.remain = this.data.time; this.setRemain(this.remain); if (this.data.autoStart) { this.start(); } }, tick: function () { if (this.data.millisecond) { this.microTick(); } else { this.macroTick(); } }, microTick: function () { var _this = this; this.tid = simpleTick(function () { _this.setRemain(_this.getRemain()); if (_this.remain !== 0) { _this.microTick(); } }); }, macroTick: function () { var _this = this; this.tid = simpleTick(function () { var remain = _this.getRemain(); if (!(0, utils_1.isSameSecond)(remain, _this.remain) || remain === 0) { _this.setRemain(remain); } if (_this.remain !== 0) { _this.macroTick(); } }); }, getRemain: function () { return Math.max(this.endTime - Date.now(), 0); }, setRemain: function (remain) { this.remain = remain; var timeData = (0, utils_1.parseTimeData)(remain); if (this.data.useSlot) { this.$emit('change', timeData); } this.setData({ formattedTime: (0, utils_1.parseFormat)(this.data.format, timeData), }); if (remain === 0) { this.pause(); this.$emit('finish'); } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/index.wxml ================================================ {{ formattedTime }} ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/index.wxss ================================================ @import '../common/index.wxss';.van-count-down{color:var(--count-down-text-color,#323233);font-size:var(--count-down-font-size,14px);line-height:var(--count-down-line-height,20px)} ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/utils.d.ts ================================================ export type TimeData = { days: number; hours: number; minutes: number; seconds: number; milliseconds: number; }; export declare function parseTimeData(time: number): TimeData; export declare function parseFormat(format: string, timeData: TimeData): string; export declare function isSameSecond(time1: number, time2: number): boolean; ================================================ FILE: miniprogram_npm/@vant/weapp/count-down/utils.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSameSecond = exports.parseFormat = exports.parseTimeData = void 0; function padZero(num, targetLength) { if (targetLength === void 0) { targetLength = 2; } var str = num + ''; while (str.length < targetLength) { str = '0' + str; } return str; } var SECOND = 1000; var MINUTE = 60 * SECOND; var HOUR = 60 * MINUTE; var DAY = 24 * HOUR; function parseTimeData(time) { var days = Math.floor(time / DAY); var hours = Math.floor((time % DAY) / HOUR); var minutes = Math.floor((time % HOUR) / MINUTE); var seconds = Math.floor((time % MINUTE) / SECOND); var milliseconds = Math.floor(time % SECOND); return { days: days, hours: hours, minutes: minutes, seconds: seconds, milliseconds: milliseconds, }; } exports.parseTimeData = parseTimeData; function parseFormat(format, timeData) { var days = timeData.days; var hours = timeData.hours, minutes = timeData.minutes, seconds = timeData.seconds, milliseconds = timeData.milliseconds; if (format.indexOf('DD') === -1) { hours += days * 24; } else { format = format.replace('DD', padZero(days)); } if (format.indexOf('HH') === -1) { minutes += hours * 60; } else { format = format.replace('HH', padZero(hours)); } if (format.indexOf('mm') === -1) { seconds += minutes * 60; } else { format = format.replace('mm', padZero(minutes)); } if (format.indexOf('ss') === -1) { milliseconds += seconds * 1000; } else { format = format.replace('ss', padZero(seconds)); } return format.replace('SSS', padZero(milliseconds, 3)); } exports.parseFormat = parseFormat; function isSameSecond(time1, time2) { return Math.floor(time1 / 1000) === Math.floor(time2 / 1000); } exports.isSameSecond = isSameSecond; ================================================ FILE: miniprogram_npm/@vant/weapp/datetime-picker/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/datetime-picker/index.js ================================================ "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); }; 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"); var validator_1 = require("../common/validator"); var shared_1 = require("../picker/shared"); var currentYear = new Date().getFullYear(); function isValidDate(date) { return (0, validator_1.isDef)(date) && !isNaN(new Date(date).getTime()); } function range(num, min, max) { return Math.min(Math.max(num, min), max); } function padZero(val) { return "00".concat(val).slice(-2); } function times(n, iteratee) { var index = -1; var result = Array(n < 0 ? 0 : n); while (++index < n) { result[index] = iteratee(index); } return result; } function getTrueValue(formattedValue) { if (formattedValue === undefined) { formattedValue = '1'; } while (isNaN(parseInt(formattedValue, 10))) { formattedValue = formattedValue.slice(1); } return parseInt(formattedValue, 10); } function getMonthEndDay(year, month) { return 32 - new Date(year, month - 1, 32).getDate(); } var defaultFormatter = function (type, value) { return value; }; (0, component_1.VantComponent)({ classes: ['active-class', 'toolbar-class', 'column-class'], props: __assign(__assign({}, shared_1.pickerProps), { value: { type: null, observer: 'updateValue', }, filter: null, type: { type: String, value: 'datetime', observer: 'updateValue', }, showToolbar: { type: Boolean, value: true, }, formatter: { type: null, value: defaultFormatter, }, minDate: { type: Number, value: new Date(currentYear - 10, 0, 1).getTime(), observer: 'updateValue', }, maxDate: { type: Number, value: new Date(currentYear + 10, 11, 31).getTime(), observer: 'updateValue', }, minHour: { type: Number, value: 0, observer: 'updateValue', }, maxHour: { type: Number, value: 23, observer: 'updateValue', }, minMinute: { type: Number, value: 0, observer: 'updateValue', }, maxMinute: { type: Number, value: 59, observer: 'updateValue', } }), data: { innerValue: Date.now(), columns: [], }, methods: { updateValue: function () { var _this = this; var data = this.data; var val = this.correctValue(data.value); var isEqual = val === data.innerValue; this.updateColumnValue(val).then(function () { if (!isEqual) { _this.$emit('input', val); } }); }, getPicker: function () { if (this.picker == null) { this.picker = this.selectComponent('.van-datetime-picker'); var picker_1 = this.picker; var setColumnValues_1 = picker_1.setColumnValues; picker_1.setColumnValues = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return setColumnValues_1.apply(picker_1, __spreadArray(__spreadArray([], args, true), [false], false)); }; } return this.picker; }, updateColumns: function () { var _a = this.data.formatter, formatter = _a === void 0 ? defaultFormatter : _a; var results = this.getOriginColumns().map(function (column) { return ({ values: column.values.map(function (value) { return formatter(column.type, value); }), }); }); return this.set({ columns: results }); }, getOriginColumns: function () { var filter = this.data.filter; var results = this.getRanges().map(function (_a) { var type = _a.type, range = _a.range; var values = times(range[1] - range[0] + 1, function (index) { var value = range[0] + index; return type === 'year' ? "".concat(value) : padZero(value); }); if (filter) { values = filter(type, values); } return { type: type, values: values }; }); return results; }, getRanges: function () { var data = this.data; if (data.type === 'time') { return [ { type: 'hour', range: [data.minHour, data.maxHour], }, { type: 'minute', range: [data.minMinute, data.maxMinute], }, ]; } var _a = this.getBoundary('max', data.innerValue), maxYear = _a.maxYear, maxDate = _a.maxDate, maxMonth = _a.maxMonth, maxHour = _a.maxHour, maxMinute = _a.maxMinute; var _b = this.getBoundary('min', data.innerValue), minYear = _b.minYear, minDate = _b.minDate, minMonth = _b.minMonth, minHour = _b.minHour, minMinute = _b.minMinute; var result = [ { type: 'year', range: [minYear, maxYear], }, { type: 'month', range: [minMonth, maxMonth], }, { type: 'day', range: [minDate, maxDate], }, { type: 'hour', range: [minHour, maxHour], }, { type: 'minute', range: [minMinute, maxMinute], }, ]; if (data.type === 'date') result.splice(3, 2); if (data.type === 'year-month') result.splice(2, 3); return result; }, correctValue: function (value) { var data = this.data; // validate value var isDateType = data.type !== 'time'; if (isDateType && !isValidDate(value)) { value = data.minDate; } else if (!isDateType && !value) { var minHour = data.minHour; value = "".concat(padZero(minHour), ":00"); } // time type if (!isDateType) { var _a = value.split(':'), hour = _a[0], minute = _a[1]; hour = padZero(range(hour, data.minHour, data.maxHour)); minute = padZero(range(minute, data.minMinute, data.maxMinute)); return "".concat(hour, ":").concat(minute); } // date type value = Math.max(value, data.minDate); value = Math.min(value, data.maxDate); return value; }, getBoundary: function (type, innerValue) { var _a; var value = new Date(innerValue); var boundary = new Date(this.data["".concat(type, "Date")]); var year = boundary.getFullYear(); var month = 1; var date = 1; var hour = 0; var minute = 0; if (type === 'max') { month = 12; date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1); hour = 23; minute = 59; } if (value.getFullYear() === year) { month = boundary.getMonth() + 1; if (value.getMonth() + 1 === month) { date = boundary.getDate(); if (value.getDate() === date) { hour = boundary.getHours(); if (value.getHours() === hour) { minute = boundary.getMinutes(); } } } } return _a = {}, _a["".concat(type, "Year")] = year, _a["".concat(type, "Month")] = month, _a["".concat(type, "Date")] = date, _a["".concat(type, "Hour")] = hour, _a["".concat(type, "Minute")] = minute, _a; }, onCancel: function () { this.$emit('cancel'); }, onConfirm: function () { this.$emit('confirm', this.data.innerValue); }, onChange: function () { var _this = this; var data = this.data; var value; var picker = this.getPicker(); var originColumns = this.getOriginColumns(); if (data.type === 'time') { var indexes = picker.getIndexes(); value = "".concat(+originColumns[0].values[indexes[0]], ":").concat(+originColumns[1] .values[indexes[1]]); } else { var indexes = picker.getIndexes(); var values = indexes.map(function (value, index) { return originColumns[index].values[value]; }); var year = getTrueValue(values[0]); var month = getTrueValue(values[1]); var maxDate = getMonthEndDay(year, month); var date = getTrueValue(values[2]); if (data.type === 'year-month') { date = 1; } date = date > maxDate ? maxDate : date; var hour = 0; var minute = 0; if (data.type === 'datetime') { hour = getTrueValue(values[3]); minute = getTrueValue(values[4]); } value = new Date(year, month - 1, date, hour, minute); } value = this.correctValue(value); this.updateColumnValue(value).then(function () { _this.$emit('input', value); _this.$emit('change', picker); }); }, updateColumnValue: function (value) { var _this = this; var values = []; var type = this.data.type; var formatter = this.data.formatter || defaultFormatter; var picker = this.getPicker(); if (type === 'time') { var pair = value.split(':'); values = [formatter('hour', pair[0]), formatter('minute', pair[1])]; } else { var date = new Date(value); values = [ formatter('year', "".concat(date.getFullYear())), formatter('month', padZero(date.getMonth() + 1)), ]; if (type === 'date') { values.push(formatter('day', padZero(date.getDate()))); } if (type === 'datetime') { values.push(formatter('day', padZero(date.getDate())), formatter('hour', padZero(date.getHours())), formatter('minute', padZero(date.getMinutes()))); } } return this.set({ innerValue: value }) .then(function () { return _this.updateColumns(); }) .then(function () { return picker.setValues(values); }); }, }, created: function () { var _this = this; var innerValue = this.correctValue(this.data.value); this.updateColumnValue(innerValue).then(function () { _this.$emit('input', innerValue); }); }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/datetime-picker/index.json ================================================ { "component": true, "usingComponents": { "van-picker": "../picker/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/datetime-picker/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/datetime-picker/index.wxss ================================================ @import '../common/index.wxss'; ================================================ FILE: miniprogram_npm/@vant/weapp/definitions/index.d.ts ================================================ /// interface VantComponentInstance { parent: WechatMiniprogram.Component.TrivialInstance; children: WechatMiniprogram.Component.TrivialInstance[]; index: number; $emit: (name: string, detail?: unknown, options?: WechatMiniprogram.Component.TriggerEventOption) => void; setView: (value: Record, callback?: () => void) => void; } export type VantComponentOptions = { data?: Data; field?: boolean; classes?: string[]; mixins?: string[]; props?: Props; relation?: { relations: Record; mixin: string; }; watch?: Record any>; methods?: Methods; beforeCreate?: () => void; created?: () => void; mounted?: () => void; destroyed?: () => void; } & ThisType, Props, Methods> & Record>; export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/definitions/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/dialog.d.ts ================================================ /// /// export type Action = 'confirm' | 'cancel' | 'overlay'; type DialogContext = WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance; interface DialogOptions { lang?: string; show?: boolean; title?: string; width?: string | number | null; zIndex?: number; theme?: string; context?: (() => DialogContext) | DialogContext; message?: string; overlay?: boolean; selector?: string; ariaLabel?: string; /** * @deprecated use custom-class instead */ className?: string; customStyle?: string; transition?: string; /** * @deprecated use beforeClose instead */ asyncClose?: boolean; beforeClose?: null | ((action: Action) => Promise | void); businessId?: number; sessionFrom?: string; overlayStyle?: string; appParameter?: string; messageAlign?: string; sendMessageImg?: string; showMessageCard?: boolean; sendMessagePath?: string; sendMessageTitle?: string; confirmButtonText?: string; cancelButtonText?: string; showConfirmButton?: boolean; showCancelButton?: boolean; closeOnClickOverlay?: boolean; confirmButtonOpenType?: string; } declare const Dialog: { (options: DialogOptions): Promise; alert(options: DialogOptions): Promise; confirm(options: DialogOptions): Promise; close(): void; stopLoading(): void; currentOptions: DialogOptions; defaultOptions: DialogOptions; setDefaultOptions(options: DialogOptions): void; resetDefaultOptions(): void; }; export default Dialog; ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/dialog.js ================================================ "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 queue = []; var defaultOptions = { show: false, title: '', width: null, theme: 'default', message: '', zIndex: 100, overlay: true, selector: '#van-dialog', className: '', asyncClose: false, beforeClose: null, transition: 'scale', customStyle: '', messageAlign: '', overlayStyle: '', confirmButtonText: '确认', cancelButtonText: '取消', showConfirmButton: true, showCancelButton: false, closeOnClickOverlay: false, confirmButtonOpenType: '', }; var currentOptions = __assign({}, defaultOptions); function getContext() { var pages = getCurrentPages(); return pages[pages.length - 1]; } var Dialog = function (options) { options = __assign(__assign({}, currentOptions), options); return new Promise(function (resolve, reject) { var context = (typeof options.context === 'function' ? options.context() : options.context) || getContext(); var dialog = context.selectComponent(options.selector); delete options.context; delete options.selector; if (dialog) { dialog.setData(__assign({ callback: function (action, instance) { action === 'confirm' ? resolve(instance) : reject(instance); } }, options)); wx.nextTick(function () { dialog.setData({ show: true }); }); queue.push(dialog); } else { console.warn('未找到 van-dialog 节点,请确认 selector 及 context 是否正确'); } }); }; Dialog.alert = function (options) { return Dialog(options); }; Dialog.confirm = function (options) { return Dialog(__assign({ showCancelButton: true }, options)); }; Dialog.close = function () { queue.forEach(function (dialog) { dialog.close(); }); queue = []; }; Dialog.stopLoading = function () { queue.forEach(function (dialog) { dialog.stopLoading(); }); }; Dialog.currentOptions = currentOptions; Dialog.defaultOptions = defaultOptions; Dialog.setDefaultOptions = function (options) { currentOptions = __assign(__assign({}, currentOptions), options); Dialog.currentOptions = currentOptions; }; Dialog.resetDefaultOptions = function () { currentOptions = __assign({}, defaultOptions); Dialog.currentOptions = currentOptions; }; Dialog.resetDefaultOptions(); exports.default = Dialog; ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); var button_1 = require("../mixins/button"); var color_1 = require("../common/color"); var utils_1 = require("../common/utils"); (0, component_1.VantComponent)({ mixins: [button_1.button], classes: ['cancle-button-class', 'confirm-button-class'], props: { show: { type: Boolean, observer: function (show) { !show && this.stopLoading(); }, }, title: String, message: String, theme: { type: String, value: 'default', }, confirmButtonId: String, className: String, customStyle: String, asyncClose: Boolean, messageAlign: String, beforeClose: null, overlayStyle: String, useSlot: Boolean, useTitleSlot: Boolean, useConfirmButtonSlot: Boolean, useCancelButtonSlot: Boolean, showCancelButton: Boolean, closeOnClickOverlay: Boolean, confirmButtonOpenType: String, width: null, zIndex: { type: Number, value: 2000, }, confirmButtonText: { type: String, value: '确认', }, cancelButtonText: { type: String, value: '取消', }, confirmButtonColor: { type: String, value: color_1.RED, }, cancelButtonColor: { type: String, value: color_1.GRAY, }, showConfirmButton: { type: Boolean, value: true, }, overlay: { type: Boolean, value: true, }, transition: { type: String, value: 'scale', }, rootPortal: { type: Boolean, value: false, }, }, data: { loading: { confirm: false, cancel: false, }, callback: (function () { }), }, methods: { onConfirm: function () { this.handleAction('confirm'); }, onCancel: function () { this.handleAction('cancel'); }, onClickOverlay: function () { this.close('overlay'); }, close: function (action) { this.setData({ show: false }); this.closeAction = action; }, onAfterLeave: function () { var action = this.closeAction; this.$emit('close', action); var callback = this.data.callback; if (callback) { callback(action, this); } }, stopLoading: function () { this.setData({ loading: { confirm: false, cancel: false, }, }); }, handleAction: function (action) { var _a; var _this = this; this.$emit(action, { dialog: this }); var _b = this.data, asyncClose = _b.asyncClose, beforeClose = _b.beforeClose; if (!asyncClose && !beforeClose) { this.close(action); return; } this.setData((_a = {}, _a["loading.".concat(action)] = true, _a)); if (beforeClose) { (0, utils_1.toPromise)(beforeClose(action)).then(function (value) { if (value) { _this.close(action); } else { _this.stopLoading(); } }); } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/index.json ================================================ { "component": true, "usingComponents": { "van-popup": "../popup/index", "van-button": "../button/index", "van-goods-action": "../goods-action/index", "van-goods-action-button": "../goods-action-button/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/index.wxml ================================================ {{ title }} {{ message }} {{ cancelButtonText }} {{ confirmButtonText }} {{ cancelButtonText }} {{ confirmButtonText }} ================================================ FILE: miniprogram_npm/@vant/weapp/dialog/index.wxss ================================================ @import '../common/index.wxss';.van-dialog{background-color:var(--dialog-background-color,#fff);border-radius:var(--dialog-border-radius,16px);font-size:var(--dialog-font-size,16px);overflow:hidden;top:45%!important;width:var(--dialog-width,320px)}@media (max-width:321px){.van-dialog{width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{font-weight:var(--dialog-header-font-weight,500);line-height:var(--dialog-header-line-height,24px);padding-top:var(--dialog-header-padding-top,24px);text-align:center}.van-dialog__header--isolated{padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{-webkit-overflow-scrolling:touch;font-size:var(--dialog-message-font-size,14px);line-height:var(--dialog-message-line-height,20px);max-height:var(--dialog-message-max-height,60vh);overflow-y:auto;padding:var(--dialog-message-padding,24px);text-align:center}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--hasTitle{color:var(--dialog-has-title-message-text-color,#646566);padding-top:var(--dialog-has-title-message-padding-top,8px)}.van-dialog__message--round-button{color:#323233;padding-bottom:16px}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__message--justify{text-align:justify}.van-dialog__footer{display:flex}.van-dialog__footer--round-button{padding:8px 24px 16px!important;position:relative!important}.van-dialog__button{flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{opacity:0;transform:translate3d(-50%,-50%,0) scale(.7)}.van-dialog-bounce-leave-active{opacity:0;transform:translate3d(-50%,-50%,0) scale(.9)} ================================================ FILE: miniprogram_npm/@vant/weapp/divider/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/divider/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); (0, component_1.VantComponent)({ props: { dashed: Boolean, hairline: Boolean, contentPosition: String, fontSize: String, borderColor: String, textColor: String, customStyle: String, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/divider/index.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram_npm/@vant/weapp/divider/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/divider/index.wxs ================================================ /* eslint-disable */ var style = require('../wxs/style.wxs'); var addUnit = require('../wxs/add-unit.wxs'); function rootStyle(data) { return style([ { 'border-color': data.borderColor, color: data.textColor, 'font-size': addUnit(data.fontSize), }, data.customStyle, ]); } module.exports = { rootStyle: rootStyle, }; ================================================ FILE: miniprogram_npm/@vant/weapp/divider/index.wxss ================================================ @import '../common/index.wxss';.van-divider{align-items:center;border:0 solid var(--divider-border-color,#ebedf0);color:var(--divider-text-color,#969799);display:flex;font-size:var(--divider-font-size,14px);line-height:var(--divider-line-height,24px);margin:var(--divider-margin,16px 0)}.van-divider:after,.van-divider:before{border-color:inherit;border-style:inherit;border-width:1px 0 0;box-sizing:border-box;display:block;flex:1;height:1px}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:"";margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:var(--divider-content-right-width,10%)} ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var relation_1 = require("../common/relation"); var component_1 = require("../common/component"); (0, component_1.VantComponent)({ classes: ['item-title-class'], field: true, relation: (0, relation_1.useParent)('dropdown-menu', function () { this.updateDataFromParent(); }), props: { value: { type: null, observer: 'rerender', }, title: { type: String, observer: 'rerender', }, disabled: Boolean, titleClass: { type: String, observer: 'rerender', }, options: { type: Array, value: [], observer: 'rerender', }, popupStyle: String, useBeforeToggle: { type: Boolean, value: false, }, rootPortal: { type: Boolean, value: false, }, }, data: { transition: true, showPopup: false, showWrapper: false, displayTitle: '', safeAreaTabBar: false, }, methods: { rerender: function () { var _this = this; wx.nextTick(function () { var _a; (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.updateItemListData(); }); }, updateDataFromParent: function () { if (this.parent) { var _a = this.parent.data, overlay = _a.overlay, duration = _a.duration, activeColor = _a.activeColor, closeOnClickOverlay = _a.closeOnClickOverlay, direction = _a.direction, safeAreaTabBar = _a.safeAreaTabBar; this.setData({ overlay: overlay, duration: duration, activeColor: activeColor, closeOnClickOverlay: closeOnClickOverlay, direction: direction, safeAreaTabBar: safeAreaTabBar, }); } }, onOpen: function () { this.$emit('open'); }, onOpened: function () { this.$emit('opened'); }, onClose: function () { this.$emit('close'); }, onClosed: function () { this.$emit('closed'); this.setData({ showWrapper: false }); }, onOptionTap: function (event) { var option = event.currentTarget.dataset.option; var value = option.value; var shouldEmitChange = this.data.value !== value; this.setData({ showPopup: false, value: value }); this.$emit('close'); this.rerender(); if (shouldEmitChange) { this.$emit('change', value); } }, toggle: function (show, options) { var _this = this; if (options === void 0) { options = {}; } var showPopup = this.data.showPopup; if (typeof show !== 'boolean') { show = !showPopup; } if (show === showPopup) { return; } this.onBeforeToggle(show).then(function (status) { var _a; if (!status) { return; } _this.setData({ transition: !options.immediate, showPopup: show, }); if (show) { (_a = _this.parent) === null || _a === void 0 ? void 0 : _a.getChildWrapperStyle().then(function (wrapperStyle) { _this.setData({ wrapperStyle: wrapperStyle, showWrapper: true }); _this.rerender(); }); } else { _this.rerender(); } }); }, onBeforeToggle: function (status) { var _this = this; var useBeforeToggle = this.data.useBeforeToggle; if (!useBeforeToggle) { return Promise.resolve(true); } return new Promise(function (resolve) { _this.$emit('before-toggle', { status: status, callback: function (value) { return resolve(value); }, }); }); }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/index.json ================================================ { "component": true, "usingComponents": { "van-popup": "../popup/index", "van-cell": "../cell/index", "van-icon": "../icon/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/index.wxml ================================================ {{ item.text }} ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/index.wxss ================================================ @import '../common/index.wxss';.van-dropdown-item{left:0;overflow:hidden;position:fixed;right:0}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/shared.d.ts ================================================ export interface Option { text: string; value: string | number; icon: string; } ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-item/shared.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-menu/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-menu/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); var relation_1 = require("../common/relation"); var utils_1 = require("../common/utils"); var ARRAY = []; (0, component_1.VantComponent)({ field: true, classes: ['title-class'], relation: (0, relation_1.useChildren)('dropdown-item', function () { this.updateItemListData(); }), props: { activeColor: { type: String, observer: 'updateChildrenData', }, overlay: { type: Boolean, value: true, observer: 'updateChildrenData', }, zIndex: { type: Number, value: 10, }, duration: { type: Number, value: 200, observer: 'updateChildrenData', }, direction: { type: String, value: 'down', observer: 'updateChildrenData', }, safeAreaTabBar: { type: Boolean, value: false, }, closeOnClickOverlay: { type: Boolean, value: true, observer: 'updateChildrenData', }, closeOnClickOutside: { type: Boolean, value: true, }, }, data: { itemListData: [], }, beforeCreate: function () { var windowHeight = (0, utils_1.getSystemInfoSync)().windowHeight; this.windowHeight = windowHeight; ARRAY.push(this); }, destroyed: function () { var _this = this; ARRAY = ARRAY.filter(function (item) { return item !== _this; }); }, methods: { updateItemListData: function () { this.setData({ itemListData: this.children.map(function (child) { return child.data; }), }); }, updateChildrenData: function () { this.children.forEach(function (child) { child.updateDataFromParent(); }); }, toggleItem: function (active) { this.children.forEach(function (item, index) { var showPopup = item.data.showPopup; if (index === active) { item.toggle(); } else if (showPopup) { item.toggle(false, { immediate: true }); } }); }, close: function () { this.children.forEach(function (child) { child.toggle(false, { immediate: true }); }); }, getChildWrapperStyle: function () { var _this = this; var _a = this.data, zIndex = _a.zIndex, direction = _a.direction; return (0, utils_1.getRect)(this, '.van-dropdown-menu').then(function (rect) { var _a = rect.top, top = _a === void 0 ? 0 : _a, _b = rect.bottom, bottom = _b === void 0 ? 0 : _b; var offset = direction === 'down' ? bottom : _this.windowHeight - top; var wrapperStyle = "z-index: ".concat(zIndex, ";"); if (direction === 'down') { wrapperStyle += "top: ".concat((0, utils_1.addUnit)(offset), ";"); } else { wrapperStyle += "bottom: ".concat((0, utils_1.addUnit)(offset), ";"); } return wrapperStyle; }); }, onTitleTap: function (event) { var _this = this; var index = event.currentTarget.dataset.index; var child = this.children[index]; if (!child.data.disabled) { ARRAY.forEach(function (menuItem) { if (menuItem && menuItem.data.closeOnClickOutside && menuItem !== _this) { menuItem.close(); } }); this.toggleItem(index); } }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-menu/index.json ================================================ { "component": true } ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml ================================================ {{ computed.displayTitle(item) }} ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs ================================================ /* eslint-disable */ function displayTitle(item) { if (item.title) { return item.title; } var match = item.options.filter(function(option) { return option.value === item.value; }); var displayTitle = match.length ? match[0].text : ''; return displayTitle; } module.exports = { displayTitle: displayTitle }; ================================================ FILE: miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss ================================================ @import '../common/index.wxss';.van-dropdown-menu{background-color:var(--dropdown-menu-background-color,#fff);box-shadow:var(--dropdown-menu-box-shadow,0 2px 12px hsla(210,1%,40%,.12));display:flex;height:var(--dropdown-menu-height,50px);-webkit-user-select:none;user-select:none}.van-dropdown-menu__item{align-items:center;display:flex;flex:1;justify-content:center;min-width:0}.van-dropdown-menu__item:active{opacity:.7}.van-dropdown-menu__item--disabled:active{opacity:1}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:var(--dropdown-menu-title-disabled-text-color,#969799)}.van-dropdown-menu__title{box-sizing:border-box;color:var(--dropdown-menu-title-text-color,#323233);font-size:var(--dropdown-menu-title-font-size,15px);line-height:var(--dropdown-menu-title-line-height,18px);max-width:100%;padding:var(--dropdown-menu-title-padding,0 24px 0 8px);position:relative}.van-dropdown-menu__title:after{border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:3px;content:"";margin-top:-5px;opacity:.8;position:absolute;right:11px;top:50%;transform:rotate(-45deg)}.van-dropdown-menu__title--active{color:var(--dropdown-menu-title-active-text-color,#ee0a24)}.van-dropdown-menu__title--down:after{margin-top:-1px;transform:rotate(135deg)} ================================================ FILE: miniprogram_npm/@vant/weapp/empty/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/empty/index.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require("../common/component"); (0, component_1.VantComponent)({ props: { description: String, image: { type: String, value: 'default', }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/empty/index.json ================================================ { "component": true, "usingComponents": {} } ================================================ FILE: miniprogram_npm/@vant/weapp/empty/index.wxml ================================================ {{ description }} ================================================ FILE: miniprogram_npm/@vant/weapp/empty/index.wxs ================================================ /* eslint-disable */ var PRESETS = ['error', 'search', 'default', 'network']; function imageUrl(image) { if (PRESETS.indexOf(image) !== -1) { return 'https://img.yzcdn.cn/vant/empty-image-' + image + '.png'; } return image; } module.exports = { imageUrl: imageUrl, }; ================================================ FILE: miniprogram_npm/@vant/weapp/empty/index.wxss ================================================ @import '../common/index.wxss';.van-empty{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:32px 0}.van-empty__image{height:160px;width:160px}.van-empty__image:empty{display:none}.van-empty__image__img{height:100%;width:100%}.van-empty__image:not(:empty)+.van-empty__image{display:none}.van-empty__description{color:#969799;font-size:14px;line-height:20px;margin-top:16px;padding:0 60px}.van-empty__description:empty,.van-empty__description:not(:empty)+.van-empty__description{display:none}.van-empty__bottom{margin-top:24px} ================================================ FILE: miniprogram_npm/@vant/weapp/field/index.d.ts ================================================ export {}; ================================================ FILE: miniprogram_npm/@vant/weapp/field/index.js ================================================ "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 utils_1 = require("../common/utils"); var component_1 = require("../common/component"); var props_1 = require("./props"); (0, component_1.VantComponent)({ field: true, classes: ['input-class', 'right-icon-class', 'label-class'], props: __assign(__assign(__assign(__assign({}, props_1.commonProps), props_1.inputProps), props_1.textareaProps), { size: String, icon: String, label: String, error: Boolean, center: Boolean, isLink: Boolean, leftIcon: String, rightIcon: String, autosize: null, required: Boolean, iconClass: String, clickable: Boolean, inputAlign: String, customStyle: String, errorMessage: String, arrowDirection: String, showWordLimit: Boolean, errorMessageAlign: String, readonly: { type: Boolean, observer: 'setShowClear', }, clearable: { type: Boolean, observer: 'setShowClear', }, clearTrigger: { type: String, value: 'focus', }, border: { type: Boolean, value: true, }, titleWidth: { type: String, value: '6.2em', }, clearIcon: { type: String, value: 'clear', }, extraEventParams: { type: Boolean, value: false, } }), data: { focused: false, innerValue: '', showClear: false, }, watch: { value: function (value) { if (value !== this.value) { this.setData({ innerValue: value }); this.value = value; this.setShowClear(); } }, clearTrigger: function () { this.setShowClear(); }, }, created: function () { this.value = this.data.value; this.setData({ innerValue: this.value }); }, methods: { formatValue: function (value) { var maxlength = this.data.maxlength; if (maxlength !== -1 && value.length > maxlength) { return value.slice(0, maxlength); } return value; }, onInput: function (event) { var _a = (event.detail || {}).value, value = _a === void 0 ? '' : _a; var formatValue = this.formatValue(value); this.value = formatValue; this.setShowClear(); return this.emitChange(__assign(__assign({}, event.detail), { value: formatValue })); }, onFocus: function (event) { this.focused = true; this.setShowClear(); this.$emit('focus', event.detail); }, onBlur: function (event) { this.focused = false; this.setShowClear(); this.$emit('blur', event.detail); }, onClickIcon: function () { this.$emit('click-icon'); }, onClickInput: function (event) { this.$emit('click-input', event.detail); }, onClear: function () { var _this = this; this.setData({ innerValue: '' }); this.value = ''; this.setShowClear(); (0, utils_1.nextTick)(function () { _this.emitChange({ value: '' }); _this.$emit('clear', ''); }); }, onConfirm: function (event) { var _a = (event.detail || {}).value, value = _a === void 0 ? '' : _a; this.value = value; this.setShowClear(); this.$emit('confirm', value); }, setValue: function (value) { this.value = value; this.setShowClear(); if (value === '') { this.setData({ innerValue: '' }); } this.emitChange({ value: value }); }, onLineChange: function (event) { this.$emit('linechange', event.detail); }, onKeyboardHeightChange: function (event) { this.$emit('keyboardheightchange', event.detail); }, onBindNicknameReview: function (event) { this.$emit('nicknamereview', event.detail); }, emitChange: function (detail) { var extraEventParams = this.data.extraEventParams; this.setData({ value: detail.value }); var result; var data = extraEventParams ? __assign(__assign({}, detail), { callback: function (data) { result = data; } }) : detail.value; this.$emit('input', data); this.$emit('change', data); return result; }, setShowClear: function () { var _a = this.data, clearable = _a.clearable, readonly = _a.readonly, clearTrigger = _a.clearTrigger; var _b = this, focused = _b.focused, value = _b.value; var showClear = false; if (clearable && !readonly) { var hasValue = !!value; var trigger = clearTrigger === 'always' || (clearTrigger === 'focus' && focused); showClear = hasValue && trigger; } this.setView({ showClear: showClear }); }, noop: function () { }, }, }); ================================================ FILE: miniprogram_npm/@vant/weapp/field/index.json ================================================ { "component": true, "usingComponents": { "van-cell": "../cell/index", "van-icon": "../icon/index" } } ================================================ FILE: miniprogram_npm/@vant/weapp/field/index.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/field/index.wxs ================================================ /* eslint-disable */ var style = require('../wxs/style.wxs'); var addUnit = require('../wxs/add-unit.wxs'); function inputStyle(autosize) { if (autosize && autosize.constructor === 'Object') { return style({ 'min-height': addUnit(autosize.minHeight), 'max-height': addUnit(autosize.maxHeight), }); } return ''; } module.exports = { inputStyle: inputStyle, }; ================================================ FILE: miniprogram_npm/@vant/weapp/field/index.wxss ================================================ @import '../common/index.wxss';.van-field{--cell-icon-size:var(--field-icon-size,16px)}.van-field__label{color:var(--field-label-color,#646566)}.van-field__label--disabled{color:var(--field-disabled-text-color,#c8c9cc)}.van-field__body{align-items:center;display:flex}.van-field__body--textarea{box-sizing:border-box;line-height:1.2em;min-height:var(--cell-line-height,24px);padding:3.6px 0}.van-field__control:empty+.van-field__control{display:block}.van-field__control{background-color:initial;border:0;box-sizing:border-box;color:var(--field-input-text-color,#323233);display:none;height:var(--cell-line-height,24px);line-height:inherit;margin:0;min-height:var(--cell-line-height,24px);padding:0;position:relative;resize:none;text-align:left;width:100%}.van-field__control:empty{display:none}.van-field__control--textarea{height:var(--field-text-area-min-height,18px);min-height:var(--field-text-area-min-height,18px)}.van-field__control--error{color:var(--field-input-error-text-color,#ee0a24)}.van-field__control--disabled{background-color:initial;color:var(--field-input-disabled-text-color,#c8c9cc);opacity:1}.van-field__control--center{text-align:center}.van-field__control--right{text-align:right}.van-field__control--custom{align-items:center;display:flex;min-height:var(--cell-line-height,24px)}.van-field__placeholder{color:var(--field-placeholder-text-color,#c8c9cc);left:0;pointer-events:none;position:absolute;right:0;top:0}.van-field__placeholder--error{color:var(--field-error-message-color,#ee0a24)}.van-field__icon-root{align-items:center;display:flex;min-height:var(--cell-line-height,24px)}.van-field__clear-root,.van-field__icon-container{line-height:inherit;margin-right:calc(var(--padding-xs, 8px)*-1);padding:0 var(--padding-xs,8px);vertical-align:middle}.van-field__button,.van-field__clear-root,.van-field__icon-container{flex-shrink:0}.van-field__clear-root{color:var(--field-clear-icon-color,#c8c9cc);font-size:var(--field-clear-icon-size,16px)}.van-field__icon-container{color:var(--field-icon-container-color,#969799);font-size:var(--field-icon-size,16px)}.van-field__icon-container:empty{display:none}.van-field__button{padding-left:var(--padding-xs,8px)}.van-field__button:empty{display:none}.van-field__error-message{color:var(--field-error-message-color,#ee0a24);display:block;font-size:var(--field-error-message-text-font-size,12px);text-align:left}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{color:var(--field-word-limit-color,#646566);font-size:var(--field-word-limit-font-size,12px);line-height:var(--field-word-limit-line-height,16px);margin-top:var(--padding-base,4px);text-align:right}.van-field__word-num{display:inline}.van-field__word-num--full{color:var(--field-word-num-full-color,#ee0a24)} ================================================ FILE: miniprogram_npm/@vant/weapp/field/input.wxml ================================================ ================================================ FILE: miniprogram_npm/@vant/weapp/field/props.d.ts ================================================ /// export declare const commonProps: WechatMiniprogram.Component.PropertyOption; export declare const inputProps: WechatMiniprogram.Component.PropertyOption; export declare const textareaProps: WechatMiniprogram.Component.PropertyOption; ================================================ FILE: miniprogram_npm/@vant/weapp/field/props.js ================================================ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.textareaProps = exports.inputProps = exports.commonProps = void 0; exports.commonProps = { value: String, placeholder: String, placeholderStyle: String, placeholderClass: String, disabled: Boolean, maxlength: { type: Number, value: -1, }, cursorSpacing: { type: Number, value: 50, }, autoFocus: Boolean, focus: Boolean, cursor: { type: Number, value: -1, }, selectionStart: { type: Number, value: -1, }, selectionEnd: { type: Number, value: -1, }, adjustPosition: { type: Boolean, value: true, }, holdKeyboard: Boolean, }; exports.inputProps = { type: { type: String, value: 'text', }, password: Boolean, confirmType: String, confirmHold: Boolean, alwaysEmbed: Boolean, }; exports.textareaProps = { autoHeight: Boolean, fixed: Boolean, showConfirmBar: { type: Boolean, value: true, }, disableDefaultPadding: { type: Boolean, value: true, }, }; ================================================ FILE: miniprogram_npm/@vant/weapp/field/textarea.wxml ================================================