From b6df4bb62f5350459432e34477e08bd2a765bdbd Mon Sep 17 00:00:00 2001
From: renguanyu111 <80379958+renguanyu111@users.noreply.github.com>
Date: Mon, 14 Feb 2022 13:21:29 +0800
Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E7=89=88=E6=9F=A5=E7=9C=8B?=
=?UTF-8?q?=E8=AF=A6=E6=83=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.hbuilderx/launch.json | 16 +
App.vue | 19 +
LICENSE | 21 +
README.md | 101 ++
common/api.js | 3 +
common/config.js | 3 +
common/demo.scss | 45 +
common/mixin.js | 7 +
common/props.js | 2 +
components/page-nav/page-nav.vue | 113 ++
main.js | 35 +
manifest.json | 153 ++
package.json | 11 +
pages.json | 432 ++++++
pages/componentsA/backtop/backtop.nvue | 132 ++
pages/componentsA/button/button.nvue | 330 ++++
pages/componentsA/cell/cell.nvue | 201 +++
pages/componentsA/checkbox/checkbox.nvue | 329 ++++
pages/componentsA/divider/divider.nvue | 82 +
pages/componentsA/empty/empty.nvue | 143 ++
pages/componentsA/gap/gap.nvue | 42 +
pages/componentsA/grid/grid.nvue | 193 +++
pages/componentsA/icon/icon.nvue | 664 ++++++++
pages/componentsA/image/image.nvue | 76 +
pages/componentsA/line/line.nvue | 74 +
pages/componentsA/link/link.nvue | 75 +
.../loading-icon/loading-icon.nvue | 79 +
.../loading-page/loading-page.nvue | 130 ++
pages/componentsA/overlay/overlay.nvue | 103 ++
pages/componentsA/popup/popup.nvue | 182 +++
pages/componentsA/radio/radio.nvue | 330 ++++
pages/componentsA/rate/rate.nvue | 138 ++
pages/componentsA/sticky/sticky.nvue | 57 +
.../componentsA/swipeAction/swipeAction.nvue | 228 +++
pages/componentsA/test/test.vue | 5 +
pages/componentsA/transition/transition.nvue | 164 ++
.../componentsB/actionSheet/actionSheet.nvue | 188 +++
pages/componentsB/alert/alert.nvue | 146 ++
pages/componentsB/badge/badge.nvue | 163 ++
pages/componentsB/code/code.nvue | 157 ++
pages/componentsB/collapse/collapse.nvue | 180 +++
pages/componentsB/color/color.nvue | 291 ++++
pages/componentsB/countDown/countDown.nvue | 240 +++
pages/componentsB/countTo/countTo.nvue | 176 +++
pages/componentsB/dropdown/dropdown.nvue | 31 +
pages/componentsB/keyboard/keyboard.nvue | 131 ++
pages/componentsB/noticeBar/noticeBar.nvue | 102 ++
pages/componentsB/notify/notify.nvue | 146 ++
pages/componentsB/numberBox/numberBox.nvue | 250 +++
pages/componentsB/parse/content.js | 203 +++
pages/componentsB/parse/jump.vue | 12 +
pages/componentsB/parse/parse.nvue | 51 +
pages/componentsB/progress/progress.nvue | 155 ++
pages/componentsB/search/search.nvue | 202 +++
pages/componentsB/slider/slider.nvue | 81 +
pages/componentsB/switch/switch.nvue | 177 +++
pages/componentsB/tabbar/tabbar.nvue | 274 ++++
pages/componentsB/tag/tag.nvue | 335 ++++
pages/componentsB/toast/toast.nvue | 113 ++
pages/componentsB/upload/upload.nvue | 180 +++
pages/componentsC/album/album.nvue | 218 +++
pages/componentsC/avatar/avatar.nvue | 182 +++
pages/componentsC/calendar/calendar.nvue | 169 +++
pages/componentsC/codeInput/codeInput.nvue | 153 ++
.../datetimePicker/datetimePicker.nvue | 233 +++
pages/componentsC/form/form.nvue | 425 ++++++
pages/componentsC/indexList/indexList.nvue | 126 ++
pages/componentsC/input/input.nvue | 180 +++
pages/componentsC/layout/layout.nvue | 156 ++
pages/componentsC/list/list.nvue | 67 +
pages/componentsC/loadmore/loadmore.nvue | 82 +
pages/componentsC/modal/modal.nvue | 195 +++
pages/componentsC/navbar/navbar.nvue | 121 ++
pages/componentsC/noNetwork/noNetwork.nvue | 68 +
pages/componentsC/picker/picker.nvue | 203 +++
pages/componentsC/readMore/readMore.nvue | 49 +
pages/componentsC/scrollList/scrollList.nvue | 249 +++
pages/componentsC/skeleton/skeleton.nvue | 157 ++
pages/componentsC/steps/steps.vue | 216 +++
pages/componentsC/subsection/subsection.nvue | 99 ++
pages/componentsC/swiper/swiper.nvue | 213 +++
pages/componentsC/table/table.nvue | 26 +
pages/componentsC/tabs/tabs.nvue | 209 +++
pages/componentsC/text/text.nvue | 173 +++
pages/componentsC/textarea/textarea.nvue | 77 +
pages/componentsC/tooltip/tooltip.vue | 86 ++
pages/example/components.config.js | 418 +++++
pages/example/components.nvue | 71 +
pages/index/detail/detail.vue | 22 +
pages/index/index - 副本.vue | 256 ++++
pages/index/index.vue | 294 ++++
pages/index/news-item.nvue | 211 +++
pages/index/tabControl-tag.vue | 224 +++
static/app-plus/mp-html/js/handler.js | 224 +++
static/app-plus/mp-html/js/uni.webview.min.js | 19 +
static/app-plus/mp-html/local.html | 1 +
static/common/js/touch-emulator.js | 363 +++++
static/uview/common/favicon.ico | Bin 0 -> 4286 bytes
static/uview/common/gray-logo.png | Bin 0 -> 10255 bytes
static/uview/common/logo.png | Bin 0 -> 15558 bytes
static/uview/example/component.png | Bin 0 -> 1026 bytes
static/uview/example/component_select.png | Bin 0 -> 1005 bytes
static/uview/example/js.png | Bin 0 -> 1966 bytes
static/uview/example/js_bak.png | Bin 0 -> 3212 bytes
static/uview/example/js_select.png | Bin 0 -> 2097 bytes
static/uview/example/template.png | Bin 0 -> 1148 bytes
static/uview/example/template_select.png | Bin 0 -> 1164 bytes
store/index.js | 17 +
template.h5.html | 42 +
uni.scss | 6 +
uni_modules/uview-ui/LICENSE | 21 +
uni_modules/uview-ui/README.md | 110 ++
uni_modules/uview-ui/changelog.md | 154 ++
.../uview-ui/components/u--form/u--form.vue | 78 +
.../uview-ui/components/u--image/u--image.vue | 40 +
.../uview-ui/components/u--input/u--input.vue | 72 +
.../uview-ui/components/u--text/u--text.vue | 43 +
.../components/u--textarea/u--textarea.vue | 47 +
.../components/u-action-sheet/props.js | 54 +
.../u-action-sheet/u-action-sheet.vue | 275 ++++
.../uview-ui/components/u-album/props.js | 59 +
.../uview-ui/components/u-album/u-album.vue | 259 ++++
.../uview-ui/components/u-alert/props.js | 44 +
.../uview-ui/components/u-alert/u-alert.vue | 243 +++
.../components/u-avatar-group/props.js | 52 +
.../u-avatar-group/u-avatar-group.vue | 103 ++
.../uview-ui/components/u-avatar/props.js | 78 +
.../uview-ui/components/u-avatar/u-avatar.vue | 168 +++
.../uview-ui/components/u-back-top/props.js | 54 +
.../components/u-back-top/u-back-top.vue | 137 ++
.../uview-ui/components/u-badge/props.js | 72 +
.../uview-ui/components/u-badge/u-badge.vue | 171 +++
.../uview-ui/components/u-button/nvue.scss | 46 +
.../uview-ui/components/u-button/props.js | 161 ++
.../uview-ui/components/u-button/u-button.vue | 490 ++++++
.../uview-ui/components/u-button/vue.scss | 80 +
.../uview-ui/components/u-calendar/header.vue | 99 ++
.../uview-ui/components/u-calendar/month.vue | 577 +++++++
.../uview-ui/components/u-calendar/props.js | 139 ++
.../components/u-calendar/u-calendar.vue | 289 ++++
.../uview-ui/components/u-calendar/util.js | 85 ++
.../components/u-car-keyboard/props.js | 14 +
.../u-car-keyboard/u-car-keyboard.vue | 311 ++++
.../uview-ui/components/u-cell-group/props.js | 14 +
.../components/u-cell-group/u-cell-group.vue | 61 +
.../uview-ui/components/u-cell/props.js | 109 ++
.../uview-ui/components/u-cell/u-cell.vue | 224 +++
.../components/u-checkbox-group/props.js | 82 +
.../u-checkbox-group/u-checkbox-group.vue | 103 ++
.../uview-ui/components/u-checkbox/props.js | 69 +
.../components/u-checkbox/u-checkbox.vue | 344 +++++
.../components/u-circle-progress/props.js | 8 +
.../u-circle-progress/u-circle-progress.vue | 198 +++
.../uview-ui/components/u-code-input/props.js | 74 +
.../components/u-code-input/u-code-input.vue | 213 +++
.../uview-ui/components/u-code/props.js | 34 +
.../uview-ui/components/u-code/u-code.vue | 129 ++
.../uview-ui/components/u-col/props.js | 29 +
.../uview-ui/components/u-col/u-col.vue | 159 ++
.../components/u-collapse-item/props.js | 59 +
.../u-collapse-item/u-collapse-item.vue | 229 +++
.../uview-ui/components/u-collapse/props.js | 19 +
.../components/u-collapse/u-collapse.vue | 90 ++
.../components/u-column-notice/props.js | 55 +
.../u-column-notice/u-column-notice.vue | 156 ++
.../uview-ui/components/u-count-down/props.js | 24 +
.../components/u-count-down/u-count-down.vue | 162 ++
.../uview-ui/components/u-count-down/utils.js | 62 +
.../uview-ui/components/u-count-to/props.js | 59 +
.../components/u-count-to/u-count-to.vue | 184 +++
.../components/u-datetime-picker/props.js | 116 ++
.../u-datetime-picker/u-datetime-picker.vue | 341 +++++
.../uview-ui/components/u-divider/props.js | 44 +
.../components/u-divider/u-divider.vue | 115 ++
.../components/u-dropdown-item/props.js | 36 +
.../u-dropdown-item/u-dropdown-item.vue | 146 ++
.../uview-ui/components/u-dropdown/props.js | 65 +
.../components/u-dropdown/u-dropdown.vue | 127 ++
.../uview-ui/components/u-empty/props.js | 59 +
.../uview-ui/components/u-empty/u-empty.vue | 128 ++
.../uview-ui/components/u-form-item/props.js | 39 +
.../components/u-form-item/u-form-item.vue | 228 +++
.../uview-ui/components/u-form/props.js | 45 +
.../uview-ui/components/u-form/u-form.vue | 205 +++
.../uview-ui/components/u-gap/props.js | 24 +
.../uview-ui/components/u-gap/u-gap.vue | 38 +
.../uview-ui/components/u-grid-item/props.js | 14 +
.../components/u-grid-item/u-grid-item.vue | 196 +++
.../uview-ui/components/u-grid/props.js | 19 +
.../uview-ui/components/u-grid/u-grid.vue | 99 ++
.../uview-ui/components/u-icon/icons.js | 214 +++
.../uview-ui/components/u-icon/props.js | 89 ++
.../uview-ui/components/u-icon/u-icon.vue | 234 +++
.../uview-ui/components/u-image/props.js | 84 ++
.../uview-ui/components/u-image/u-image.vue | 219 +++
.../components/u-index-anchor/props.js | 29 +
.../u-index-anchor/u-index-anchor.vue | 91 ++
.../uview-ui/components/u-index-item/props.js | 5 +
.../components/u-index-item/u-index-item.vue | 87 ++
.../uview-ui/components/u-index-list/props.js | 29 +
.../components/u-index-list/u-index-list.vue | 438 ++++++
.../uview-ui/components/u-input/props.js | 182 +++
.../uview-ui/components/u-input/u-input.vue | 350 +++++
.../uview-ui/components/u-keyboard/props.js | 84 ++
.../components/u-keyboard/u-keyboard.vue | 164 ++
.../components/u-line-progress/props.js | 28 +
.../u-line-progress/u-line-progress.vue | 144 ++
.../uview-ui/components/u-line/props.js | 33 +
.../uview-ui/components/u-line/u-line.vue | 62 +
.../uview-ui/components/u-link/props.js | 39 +
.../uview-ui/components/u-link/u-link.vue | 83 +
.../uview-ui/components/u-list-item/props.js | 9 +
.../components/u-list-item/u-list-item.vue | 116 ++
.../uview-ui/components/u-list/props.js | 76 +
.../uview-ui/components/u-list/u-list.vue | 159 ++
.../components/u-loading-icon/props.js | 59 +
.../u-loading-icon/u-loading-icon.vue | 343 +++++
.../components/u-loading-page/props.js | 44 +
.../u-loading-page/u-loading-page.vue | 110 ++
.../uview-ui/components/u-loadmore/props.js | 80 +
.../components/u-loadmore/u-loadmore.vue | 145 ++
.../uview-ui/components/u-modal/props.js | 84 ++
.../uview-ui/components/u-modal/u-modal.vue | 227 +++
.../uview-ui/components/u-navbar/props.js | 69 +
.../uview-ui/components/u-navbar/u-navbar.vue | 173 +++
.../uview-ui/components/u-no-network/props.js | 19 +
.../components/u-no-network/u-no-network.vue | 219 +++
.../uview-ui/components/u-notice-bar/props.js | 70 +
.../components/u-notice-bar/u-notice-bar.vue | 101 ++
.../uview-ui/components/u-notify/props.js | 49 +
.../uview-ui/components/u-notify/u-notify.vue | 211 +++
.../uview-ui/components/u-number-box/props.js | 109 ++
.../components/u-number-box/u-number-box.vue | 417 +++++
.../components/u-number-keyboard/props.js | 19 +
.../u-number-keyboard/u-number-keyboard.vue | 196 +++
.../uview-ui/components/u-overlay/props.js | 24 +
.../components/u-overlay/u-overlay.vue | 68 +
.../uview-ui/components/u-parse/node/node.vue | 499 ++++++
.../uview-ui/components/u-parse/parser.js | 1075 +++++++++++++
.../uview-ui/components/u-parse/props.js | 45 +
.../uview-ui/components/u-parse/u-parse.vue | 366 +++++
.../components/u-picker-column/props.js | 5 +
.../u-picker-column/u-picker-column.vue | 27 +
.../uview-ui/components/u-picker/props.js | 79 +
.../uview-ui/components/u-picker/u-picker.vue | 281 ++++
.../uview-ui/components/u-popup/props.js | 79 +
.../uview-ui/components/u-popup/u-popup.vue | 301 ++++
.../components/u-radio-group/props.js | 85 ++
.../u-radio-group/u-radio-group.vue | 108 ++
.../uview-ui/components/u-radio/props.js | 64 +
.../uview-ui/components/u-radio/u-radio.vue | 337 +++++
.../uview-ui/components/u-rate/props.js | 64 +
.../uview-ui/components/u-rate/u-rate.vue | 303 ++++
.../uview-ui/components/u-read-more/props.js | 61 +
.../components/u-read-more/u-read-more.vue | 157 ++
.../uview-ui/components/u-row-notice/props.js | 39 +
.../components/u-row-notice/u-row-notice.vue | 306 ++++
.../uview-ui/components/u-row/props.js | 19 +
.../uview-ui/components/u-row/u-row.vue | 93 ++
.../components/u-safe-bottom/props.js | 5 +
.../u-safe-bottom/u-safe-bottom.vue | 56 +
.../uview-ui/components/u-scroll-list/nvue.js | 28 +
.../components/u-scroll-list/other.js | 0
.../components/u-scroll-list/props.js | 34 +
.../components/u-scroll-list/scrollWxs.wxs | 50 +
.../u-scroll-list/u-scroll-list.vue | 226 +++
.../uview-ui/components/u-search/props.js | 114 ++
.../uview-ui/components/u-search/u-search.vue | 296 ++++
.../uview-ui/components/u-skeleton/props.js | 59 +
.../components/u-skeleton/u-skeleton.vue | 244 +++
.../uview-ui/components/u-slider/mpother.js | 113 ++
.../uview-ui/components/u-slider/mpwxs.js | 42 +
.../uview-ui/components/u-slider/mpwxs.wxs | 121 ++
.../components/u-slider/nvue - 副本.js | 180 +++
.../uview-ui/components/u-slider/nvue.js | 193 +++
.../uview-ui/components/u-slider/props.js | 49 +
.../uview-ui/components/u-slider/u-slider.vue | 54 +
.../uview-ui/components/u-status-bar/props.js | 8 +
.../components/u-status-bar/u-status-bar.vue | 43 +
.../uview-ui/components/u-steps-item/props.js | 24 +
.../components/u-steps-item/u-steps-item.vue | 316 ++++
.../uview-ui/components/u-steps/props.js | 39 +
.../uview-ui/components/u-steps/u-steps.vue | 80 +
.../uview-ui/components/u-sticky/props.js | 40 +
.../uview-ui/components/u-sticky/u-sticky.vue | 218 +++
.../uview-ui/components/u-subsection/props.js | 49 +
.../components/u-subsection/u-subsection.vue | 299 ++++
.../u-swipe-action-item/index - backup.wxs | 256 ++++
.../components/u-swipe-action-item/index.wxs | 225 +++
.../u-swipe-action-item/nvue - backup.js | 270 ++++
.../components/u-swipe-action-item/nvue.js | 173 +++
.../components/u-swipe-action-item/props.js | 41 +
.../u-swipe-action-item.vue | 190 +++
.../components/u-swipe-action-item/wxs.js | 15 +
.../components/u-swipe-action/props.js | 9 +
.../u-swipe-action/u-swipe-action.vue | 67 +
.../components/u-swiper-indicator/props.js | 29 +
.../u-swiper-indicator/u-swiper-indicator.vue | 110 ++
.../uview-ui/components/u-swiper/props.js | 125 ++
.../uview-ui/components/u-swiper/u-swiper.vue | 240 +++
.../uview-ui/components/u-switch/props.js | 54 +
.../uview-ui/components/u-switch/u-switch.vue | 173 +++
.../components/u-tabbar-item/props.js | 35 +
.../u-tabbar-item/u-tabbar-item.vue | 142 ++
.../uview-ui/components/u-tabbar/props.js | 44 +
.../uview-ui/components/u-tabbar/u-tabbar.vue | 140 ++
.../uview-ui/components/u-table/props.js | 5 +
.../uview-ui/components/u-table/u-table.vue | 29 +
.../uview-ui/components/u-tabs-item/props.js | 5 +
.../components/u-tabs-item/u-tabs-item.vue | 29 +
.../uview-ui/components/u-tabs/props.js | 59 +
.../uview-ui/components/u-tabs/u-tabs.vue | 361 +++++
.../uview-ui/components/u-tag/props.js | 84 ++
.../uview-ui/components/u-tag/u-tag.vue | 358 +++++
uni_modules/uview-ui/components/u-td/props.js | 5 +
uni_modules/uview-ui/components/u-td/u-td.vue | 31 +
.../uview-ui/components/u-text/props.js | 110 ++
.../uview-ui/components/u-text/u-text.vue | 220 +++
.../uview-ui/components/u-text/value.js | 85 ++
.../uview-ui/components/u-textarea/props.js | 114 ++
.../components/u-textarea/u-textarea.vue | 237 +++
.../uview-ui/components/u-toast/u-toast.vue | 291 ++++
.../uview-ui/components/u-toolbar/props.js | 34 +
.../components/u-toolbar/u-toolbar.vue | 102 ++
.../components/u-tooltip/clipboard.min.js | 58 +
.../uview-ui/components/u-tooltip/props.js | 59 +
.../components/u-tooltip/u-tooltip.vue | 367 +++++
uni_modules/uview-ui/components/u-tr/props.js | 5 +
uni_modules/uview-ui/components/u-tr/u-tr.vue | 31 +
.../components/u-transition/nvue.ani-map.js | 68 +
.../uview-ui/components/u-transition/props.js | 24 +
.../components/u-transition/transition.js | 155 ++
.../components/u-transition/u-transition.vue | 92 ++
.../u-transition/vue.ani-style.scss | 113 ++
.../uview-ui/components/u-upload/mixin.js | 21 +
.../uview-ui/components/u-upload/props.js | 124 ++
.../uview-ui/components/u-upload/u-upload.vue | 547 +++++++
.../uview-ui/components/u-upload/utils.js | 118 ++
.../uview-ui/components/uview-ui/uview-ui.vue | 15 +
uni_modules/uview-ui/index.js | 79 +
uni_modules/uview-ui/index.scss | 23 +
uni_modules/uview-ui/libs/config/color.js | 17 +
uni_modules/uview-ui/libs/config/config.js | 29 +
uni_modules/uview-ui/libs/config/props.js | 190 +++
.../uview-ui/libs/config/props/actionSheet.js | 25 +
.../uview-ui/libs/config/props/album.js | 25 +
.../uview-ui/libs/config/props/alert.js | 22 +
.../uview-ui/libs/config/props/avatar.js | 28 +
.../uview-ui/libs/config/props/avatarGroup.js | 23 +
.../uview-ui/libs/config/props/backtop.js | 27 +
.../uview-ui/libs/config/props/badge.js | 27 +
.../uview-ui/libs/config/props/button.js | 42 +
.../uview-ui/libs/config/props/calendar.js | 41 +
.../uview-ui/libs/config/props/carKeyboard.js | 15 +
.../uview-ui/libs/config/props/cell.js | 35 +
.../uview-ui/libs/config/props/cellGroup.js | 17 +
.../uview-ui/libs/config/props/checkbox.js | 27 +
.../libs/config/props/checkboxGroup.js | 29 +
.../libs/config/props/circleProgress.js | 15 +
.../uview-ui/libs/config/props/code.js | 21 +
.../uview-ui/libs/config/props/codeInput.js | 28 +
uni_modules/uview-ui/libs/config/props/col.js | 19 +
.../uview-ui/libs/config/props/collapse.js | 17 +
.../libs/config/props/collapseItem.js | 25 +
.../libs/config/props/columnNotice.js | 24 +
.../uview-ui/libs/config/props/countDown.js | 18 +
.../uview-ui/libs/config/props/countTo.js | 25 +
.../libs/config/props/datetimePicker.js | 36 +
.../uview-ui/libs/config/props/divider.js | 23 +
.../uview-ui/libs/config/props/empty.js | 26 +
.../uview-ui/libs/config/props/form.js | 22 +
.../uview-ui/libs/config/props/formItem.js | 21 +
uni_modules/uview-ui/libs/config/props/gap.js | 19 +
.../uview-ui/libs/config/props/grid.js | 17 +
.../uview-ui/libs/config/props/gridItem.js | 16 +
.../uview-ui/libs/config/props/icon.js | 36 +
.../uview-ui/libs/config/props/image.js | 30 +
.../uview-ui/libs/config/props/indexAnchor.js | 19 +
.../uview-ui/libs/config/props/indexList.js | 19 +
.../uview-ui/libs/config/props/input.js | 48 +
.../uview-ui/libs/config/props/keyboard.js | 30 +
.../uview-ui/libs/config/props/line.js | 20 +
.../libs/config/props/lineProgress.js | 19 +
.../uview-ui/libs/config/props/link.js | 26 +
.../uview-ui/libs/config/props/list.js | 28 +
.../uview-ui/libs/config/props/listItem.js | 15 +
.../uview-ui/libs/config/props/loadingIcon.js | 30 +
.../uview-ui/libs/config/props/loadingPage.js | 22 +
.../uview-ui/libs/config/props/loadmore.js | 29 +
.../uview-ui/libs/config/props/modal.js | 30 +
.../uview-ui/libs/config/props/navbar.js | 28 +
.../uview-ui/libs/config/props/noNetwork.js | 18 +
.../uview-ui/libs/config/props/noticeBar.js | 27 +
.../uview-ui/libs/config/props/notify.js | 22 +
.../uview-ui/libs/config/props/numberBox.js | 35 +
.../libs/config/props/numberKeyboard.js | 17 +
.../uview-ui/libs/config/props/overlay.js | 18 +
.../uview-ui/libs/config/props/parse.js | 22 +
.../uview-ui/libs/config/props/picker.js | 29 +
.../uview-ui/libs/config/props/popup.js | 29 +
.../uview-ui/libs/config/props/radio.js | 27 +
.../uview-ui/libs/config/props/radioGroup.js | 30 +
.../uview-ui/libs/config/props/rate.js | 26 +
.../uview-ui/libs/config/props/readMore.js | 22 +
uni_modules/uview-ui/libs/config/props/row.js | 17 +
.../uview-ui/libs/config/props/rowNotice.js | 21 +
.../uview-ui/libs/config/props/scrollList.js | 20 +
.../uview-ui/libs/config/props/search.js | 36 +
.../uview-ui/libs/config/props/section.js | 24 +
.../uview-ui/libs/config/props/skeleton.js | 25 +
.../uview-ui/libs/config/props/slider.js | 24 +
.../uview-ui/libs/config/props/statusBar.js | 15 +
.../uview-ui/libs/config/props/steps.js | 21 +
.../uview-ui/libs/config/props/stepsItem.js | 18 +
.../uview-ui/libs/config/props/sticky.js | 20 +
.../uview-ui/libs/config/props/subsection.js | 23 +
.../uview-ui/libs/config/props/swipeAction.js | 15 +
.../libs/config/props/swipeActionItem.js | 21 +
.../uview-ui/libs/config/props/swiper.js | 39 +
.../libs/config/props/swipterIndicator.js | 19 +
.../uview-ui/libs/config/props/switch.js | 24 +
.../uview-ui/libs/config/props/tabbar.js | 22 +
.../uview-ui/libs/config/props/tabbarItem.js | 20 +
.../uview-ui/libs/config/props/tabs.js | 31 +
uni_modules/uview-ui/libs/config/props/tag.js | 29 +
.../uview-ui/libs/config/props/text.js | 38 +
.../uview-ui/libs/config/props/textarea.js | 36 +
.../uview-ui/libs/config/props/toast.js | 30 +
.../uview-ui/libs/config/props/toolbar.js | 21 +
.../uview-ui/libs/config/props/tooltip.js | 25 +
.../uview-ui/libs/config/props/transition.js | 18 +
.../uview-ui/libs/config/props/upload.js | 36 +
uni_modules/uview-ui/libs/config/zIndex.js | 20 +
uni_modules/uview-ui/libs/css/color.scss | 155 ++
uni_modules/uview-ui/libs/css/common.scss | 98 ++
uni_modules/uview-ui/libs/css/components.scss | 15 +
uni_modules/uview-ui/libs/css/flex.scss | 257 ++++
uni_modules/uview-ui/libs/css/h5.scss | 0
uni_modules/uview-ui/libs/css/mixin.scss | 8 +
uni_modules/uview-ui/libs/css/mp.scss | 0
uni_modules/uview-ui/libs/css/nvue.scss | 0
uni_modules/uview-ui/libs/css/vue.scss | 27 +
.../uview-ui/libs/function/colorGradient.js | 134 ++
.../uview-ui/libs/function/debounce.js | 29 +
uni_modules/uview-ui/libs/function/index.js | 656 ++++++++
.../uview-ui/libs/function/platform.js | 75 +
uni_modules/uview-ui/libs/function/test.js | 287 ++++
.../uview-ui/libs/function/throttle.js | 30 +
.../libs/luch-request/adapters/index.js | 97 ++
.../luch-request/core/InterceptorManager.js | 50 +
.../libs/luch-request/core/Request.js | 198 +++
.../libs/luch-request/core/buildFullPath.js | 20 +
.../libs/luch-request/core/defaults.js | 29 +
.../libs/luch-request/core/dispatchRequest.js | 3 +
.../libs/luch-request/core/mergeConfig.js | 103 ++
.../uview-ui/libs/luch-request/core/settle.js | 16 +
.../libs/luch-request/helpers/buildURL.js | 69 +
.../libs/luch-request/helpers/combineURLs.js | 14 +
.../luch-request/helpers/isAbsoluteURL.js | 14 +
.../uview-ui/libs/luch-request/index.d.ts | 116 ++
.../uview-ui/libs/luch-request/index.js | 3 +
.../uview-ui/libs/luch-request/utils.js | 131 ++
.../uview-ui/libs/luch-request/utils/clone.js | 264 ++++
uni_modules/uview-ui/libs/mixin/button.js | 13 +
uni_modules/uview-ui/libs/mixin/mixin.js | 145 ++
uni_modules/uview-ui/libs/mixin/mpMixin.js | 8 +
uni_modules/uview-ui/libs/mixin/mpShare.js | 13 +
uni_modules/uview-ui/libs/mixin/openType.js | 25 +
uni_modules/uview-ui/libs/mixin/style.js | 228 +++
uni_modules/uview-ui/libs/mixin/touch.js | 59 +
.../uview-ui/libs/util/async-validator.js | 1343 +++++++++++++++++
uni_modules/uview-ui/libs/util/calendar.js | 546 +++++++
uni_modules/uview-ui/libs/util/dayjs.js | 308 ++++
uni_modules/uview-ui/libs/util/emitter.js | 51 +
uni_modules/uview-ui/libs/util/route.js | 124 ++
uni_modules/uview-ui/package.json | 87 ++
uni_modules/uview-ui/theme.scss | 44 +
util/request/index.js | 13 +
util/request/requestInterceptors.js | 14 +
util/request/responseInterceptors.js | 27 +
vue.config.js | 10 +
481 files changed, 52719 insertions(+)
create mode 100644 .hbuilderx/launch.json
create mode 100644 App.vue
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 common/api.js
create mode 100644 common/config.js
create mode 100644 common/demo.scss
create mode 100644 common/mixin.js
create mode 100644 common/props.js
create mode 100644 components/page-nav/page-nav.vue
create mode 100644 main.js
create mode 100644 manifest.json
create mode 100644 package.json
create mode 100644 pages.json
create mode 100644 pages/componentsA/backtop/backtop.nvue
create mode 100644 pages/componentsA/button/button.nvue
create mode 100644 pages/componentsA/cell/cell.nvue
create mode 100644 pages/componentsA/checkbox/checkbox.nvue
create mode 100644 pages/componentsA/divider/divider.nvue
create mode 100644 pages/componentsA/empty/empty.nvue
create mode 100644 pages/componentsA/gap/gap.nvue
create mode 100644 pages/componentsA/grid/grid.nvue
create mode 100644 pages/componentsA/icon/icon.nvue
create mode 100644 pages/componentsA/image/image.nvue
create mode 100644 pages/componentsA/line/line.nvue
create mode 100644 pages/componentsA/link/link.nvue
create mode 100644 pages/componentsA/loading-icon/loading-icon.nvue
create mode 100644 pages/componentsA/loading-page/loading-page.nvue
create mode 100644 pages/componentsA/overlay/overlay.nvue
create mode 100644 pages/componentsA/popup/popup.nvue
create mode 100644 pages/componentsA/radio/radio.nvue
create mode 100644 pages/componentsA/rate/rate.nvue
create mode 100644 pages/componentsA/sticky/sticky.nvue
create mode 100644 pages/componentsA/swipeAction/swipeAction.nvue
create mode 100644 pages/componentsA/test/test.vue
create mode 100644 pages/componentsA/transition/transition.nvue
create mode 100644 pages/componentsB/actionSheet/actionSheet.nvue
create mode 100644 pages/componentsB/alert/alert.nvue
create mode 100644 pages/componentsB/badge/badge.nvue
create mode 100644 pages/componentsB/code/code.nvue
create mode 100644 pages/componentsB/collapse/collapse.nvue
create mode 100644 pages/componentsB/color/color.nvue
create mode 100644 pages/componentsB/countDown/countDown.nvue
create mode 100644 pages/componentsB/countTo/countTo.nvue
create mode 100644 pages/componentsB/dropdown/dropdown.nvue
create mode 100644 pages/componentsB/keyboard/keyboard.nvue
create mode 100644 pages/componentsB/noticeBar/noticeBar.nvue
create mode 100644 pages/componentsB/notify/notify.nvue
create mode 100644 pages/componentsB/numberBox/numberBox.nvue
create mode 100644 pages/componentsB/parse/content.js
create mode 100644 pages/componentsB/parse/jump.vue
create mode 100644 pages/componentsB/parse/parse.nvue
create mode 100644 pages/componentsB/progress/progress.nvue
create mode 100644 pages/componentsB/search/search.nvue
create mode 100644 pages/componentsB/slider/slider.nvue
create mode 100644 pages/componentsB/switch/switch.nvue
create mode 100644 pages/componentsB/tabbar/tabbar.nvue
create mode 100644 pages/componentsB/tag/tag.nvue
create mode 100644 pages/componentsB/toast/toast.nvue
create mode 100644 pages/componentsB/upload/upload.nvue
create mode 100644 pages/componentsC/album/album.nvue
create mode 100644 pages/componentsC/avatar/avatar.nvue
create mode 100644 pages/componentsC/calendar/calendar.nvue
create mode 100644 pages/componentsC/codeInput/codeInput.nvue
create mode 100644 pages/componentsC/datetimePicker/datetimePicker.nvue
create mode 100644 pages/componentsC/form/form.nvue
create mode 100644 pages/componentsC/indexList/indexList.nvue
create mode 100644 pages/componentsC/input/input.nvue
create mode 100644 pages/componentsC/layout/layout.nvue
create mode 100644 pages/componentsC/list/list.nvue
create mode 100644 pages/componentsC/loadmore/loadmore.nvue
create mode 100644 pages/componentsC/modal/modal.nvue
create mode 100644 pages/componentsC/navbar/navbar.nvue
create mode 100644 pages/componentsC/noNetwork/noNetwork.nvue
create mode 100644 pages/componentsC/picker/picker.nvue
create mode 100644 pages/componentsC/readMore/readMore.nvue
create mode 100644 pages/componentsC/scrollList/scrollList.nvue
create mode 100644 pages/componentsC/skeleton/skeleton.nvue
create mode 100644 pages/componentsC/steps/steps.vue
create mode 100644 pages/componentsC/subsection/subsection.nvue
create mode 100644 pages/componentsC/swiper/swiper.nvue
create mode 100644 pages/componentsC/table/table.nvue
create mode 100644 pages/componentsC/tabs/tabs.nvue
create mode 100644 pages/componentsC/text/text.nvue
create mode 100644 pages/componentsC/textarea/textarea.nvue
create mode 100644 pages/componentsC/tooltip/tooltip.vue
create mode 100644 pages/example/components.config.js
create mode 100644 pages/example/components.nvue
create mode 100644 pages/index/detail/detail.vue
create mode 100644 pages/index/index - 副本.vue
create mode 100644 pages/index/index.vue
create mode 100644 pages/index/news-item.nvue
create mode 100644 pages/index/tabControl-tag.vue
create mode 100644 static/app-plus/mp-html/js/handler.js
create mode 100644 static/app-plus/mp-html/js/uni.webview.min.js
create mode 100644 static/app-plus/mp-html/local.html
create mode 100644 static/common/js/touch-emulator.js
create mode 100644 static/uview/common/favicon.ico
create mode 100644 static/uview/common/gray-logo.png
create mode 100644 static/uview/common/logo.png
create mode 100644 static/uview/example/component.png
create mode 100644 static/uview/example/component_select.png
create mode 100644 static/uview/example/js.png
create mode 100644 static/uview/example/js_bak.png
create mode 100644 static/uview/example/js_select.png
create mode 100644 static/uview/example/template.png
create mode 100644 static/uview/example/template_select.png
create mode 100644 store/index.js
create mode 100644 template.h5.html
create mode 100644 uni.scss
create mode 100644 uni_modules/uview-ui/LICENSE
create mode 100644 uni_modules/uview-ui/README.md
create mode 100644 uni_modules/uview-ui/changelog.md
create mode 100644 uni_modules/uview-ui/components/u--form/u--form.vue
create mode 100644 uni_modules/uview-ui/components/u--image/u--image.vue
create mode 100644 uni_modules/uview-ui/components/u--input/u--input.vue
create mode 100644 uni_modules/uview-ui/components/u--text/u--text.vue
create mode 100644 uni_modules/uview-ui/components/u--textarea/u--textarea.vue
create mode 100644 uni_modules/uview-ui/components/u-action-sheet/props.js
create mode 100644 uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
create mode 100644 uni_modules/uview-ui/components/u-album/props.js
create mode 100644 uni_modules/uview-ui/components/u-album/u-album.vue
create mode 100644 uni_modules/uview-ui/components/u-alert/props.js
create mode 100644 uni_modules/uview-ui/components/u-alert/u-alert.vue
create mode 100644 uni_modules/uview-ui/components/u-avatar-group/props.js
create mode 100644 uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue
create mode 100644 uni_modules/uview-ui/components/u-avatar/props.js
create mode 100644 uni_modules/uview-ui/components/u-avatar/u-avatar.vue
create mode 100644 uni_modules/uview-ui/components/u-back-top/props.js
create mode 100644 uni_modules/uview-ui/components/u-back-top/u-back-top.vue
create mode 100644 uni_modules/uview-ui/components/u-badge/props.js
create mode 100644 uni_modules/uview-ui/components/u-badge/u-badge.vue
create mode 100644 uni_modules/uview-ui/components/u-button/nvue.scss
create mode 100644 uni_modules/uview-ui/components/u-button/props.js
create mode 100644 uni_modules/uview-ui/components/u-button/u-button.vue
create mode 100644 uni_modules/uview-ui/components/u-button/vue.scss
create mode 100644 uni_modules/uview-ui/components/u-calendar/header.vue
create mode 100644 uni_modules/uview-ui/components/u-calendar/month.vue
create mode 100644 uni_modules/uview-ui/components/u-calendar/props.js
create mode 100644 uni_modules/uview-ui/components/u-calendar/u-calendar.vue
create mode 100644 uni_modules/uview-ui/components/u-calendar/util.js
create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/props.js
create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
create mode 100644 uni_modules/uview-ui/components/u-cell-group/props.js
create mode 100644 uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue
create mode 100644 uni_modules/uview-ui/components/u-cell/props.js
create mode 100644 uni_modules/uview-ui/components/u-cell/u-cell.vue
create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/props.js
create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
create mode 100644 uni_modules/uview-ui/components/u-checkbox/props.js
create mode 100644 uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue
create mode 100644 uni_modules/uview-ui/components/u-circle-progress/props.js
create mode 100644 uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue
create mode 100644 uni_modules/uview-ui/components/u-code-input/props.js
create mode 100644 uni_modules/uview-ui/components/u-code-input/u-code-input.vue
create mode 100644 uni_modules/uview-ui/components/u-code/props.js
create mode 100644 uni_modules/uview-ui/components/u-code/u-code.vue
create mode 100644 uni_modules/uview-ui/components/u-col/props.js
create mode 100644 uni_modules/uview-ui/components/u-col/u-col.vue
create mode 100644 uni_modules/uview-ui/components/u-collapse-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue
create mode 100644 uni_modules/uview-ui/components/u-collapse/props.js
create mode 100644 uni_modules/uview-ui/components/u-collapse/u-collapse.vue
create mode 100644 uni_modules/uview-ui/components/u-column-notice/props.js
create mode 100644 uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue
create mode 100644 uni_modules/uview-ui/components/u-count-down/props.js
create mode 100644 uni_modules/uview-ui/components/u-count-down/u-count-down.vue
create mode 100644 uni_modules/uview-ui/components/u-count-down/utils.js
create mode 100644 uni_modules/uview-ui/components/u-count-to/props.js
create mode 100644 uni_modules/uview-ui/components/u-count-to/u-count-to.vue
create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/props.js
create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue
create mode 100644 uni_modules/uview-ui/components/u-divider/props.js
create mode 100644 uni_modules/uview-ui/components/u-divider/u-divider.vue
create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
create mode 100644 uni_modules/uview-ui/components/u-dropdown/props.js
create mode 100644 uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue
create mode 100644 uni_modules/uview-ui/components/u-empty/props.js
create mode 100644 uni_modules/uview-ui/components/u-empty/u-empty.vue
create mode 100644 uni_modules/uview-ui/components/u-form-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-form-item/u-form-item.vue
create mode 100644 uni_modules/uview-ui/components/u-form/props.js
create mode 100644 uni_modules/uview-ui/components/u-form/u-form.vue
create mode 100644 uni_modules/uview-ui/components/u-gap/props.js
create mode 100644 uni_modules/uview-ui/components/u-gap/u-gap.vue
create mode 100644 uni_modules/uview-ui/components/u-grid-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue
create mode 100644 uni_modules/uview-ui/components/u-grid/props.js
create mode 100644 uni_modules/uview-ui/components/u-grid/u-grid.vue
create mode 100644 uni_modules/uview-ui/components/u-icon/icons.js
create mode 100644 uni_modules/uview-ui/components/u-icon/props.js
create mode 100644 uni_modules/uview-ui/components/u-icon/u-icon.vue
create mode 100644 uni_modules/uview-ui/components/u-image/props.js
create mode 100644 uni_modules/uview-ui/components/u-image/u-image.vue
create mode 100644 uni_modules/uview-ui/components/u-index-anchor/props.js
create mode 100644 uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue
create mode 100644 uni_modules/uview-ui/components/u-index-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-index-item/u-index-item.vue
create mode 100644 uni_modules/uview-ui/components/u-index-list/props.js
create mode 100644 uni_modules/uview-ui/components/u-index-list/u-index-list.vue
create mode 100644 uni_modules/uview-ui/components/u-input/props.js
create mode 100644 uni_modules/uview-ui/components/u-input/u-input.vue
create mode 100644 uni_modules/uview-ui/components/u-keyboard/props.js
create mode 100644 uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue
create mode 100644 uni_modules/uview-ui/components/u-line-progress/props.js
create mode 100644 uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue
create mode 100644 uni_modules/uview-ui/components/u-line/props.js
create mode 100644 uni_modules/uview-ui/components/u-line/u-line.vue
create mode 100644 uni_modules/uview-ui/components/u-link/props.js
create mode 100644 uni_modules/uview-ui/components/u-link/u-link.vue
create mode 100644 uni_modules/uview-ui/components/u-list-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-list-item/u-list-item.vue
create mode 100644 uni_modules/uview-ui/components/u-list/props.js
create mode 100644 uni_modules/uview-ui/components/u-list/u-list.vue
create mode 100644 uni_modules/uview-ui/components/u-loading-icon/props.js
create mode 100644 uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue
create mode 100644 uni_modules/uview-ui/components/u-loading-page/props.js
create mode 100644 uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue
create mode 100644 uni_modules/uview-ui/components/u-loadmore/props.js
create mode 100644 uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue
create mode 100644 uni_modules/uview-ui/components/u-modal/props.js
create mode 100644 uni_modules/uview-ui/components/u-modal/u-modal.vue
create mode 100644 uni_modules/uview-ui/components/u-navbar/props.js
create mode 100644 uni_modules/uview-ui/components/u-navbar/u-navbar.vue
create mode 100644 uni_modules/uview-ui/components/u-no-network/props.js
create mode 100644 uni_modules/uview-ui/components/u-no-network/u-no-network.vue
create mode 100644 uni_modules/uview-ui/components/u-notice-bar/props.js
create mode 100644 uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue
create mode 100644 uni_modules/uview-ui/components/u-notify/props.js
create mode 100644 uni_modules/uview-ui/components/u-notify/u-notify.vue
create mode 100644 uni_modules/uview-ui/components/u-number-box/props.js
create mode 100644 uni_modules/uview-ui/components/u-number-box/u-number-box.vue
create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/props.js
create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
create mode 100644 uni_modules/uview-ui/components/u-overlay/props.js
create mode 100644 uni_modules/uview-ui/components/u-overlay/u-overlay.vue
create mode 100644 uni_modules/uview-ui/components/u-parse/node/node.vue
create mode 100644 uni_modules/uview-ui/components/u-parse/parser.js
create mode 100644 uni_modules/uview-ui/components/u-parse/props.js
create mode 100644 uni_modules/uview-ui/components/u-parse/u-parse.vue
create mode 100644 uni_modules/uview-ui/components/u-picker-column/props.js
create mode 100644 uni_modules/uview-ui/components/u-picker-column/u-picker-column.vue
create mode 100644 uni_modules/uview-ui/components/u-picker/props.js
create mode 100644 uni_modules/uview-ui/components/u-picker/u-picker.vue
create mode 100644 uni_modules/uview-ui/components/u-popup/props.js
create mode 100644 uni_modules/uview-ui/components/u-popup/u-popup.vue
create mode 100644 uni_modules/uview-ui/components/u-radio-group/props.js
create mode 100644 uni_modules/uview-ui/components/u-radio-group/u-radio-group.vue
create mode 100644 uni_modules/uview-ui/components/u-radio/props.js
create mode 100644 uni_modules/uview-ui/components/u-radio/u-radio.vue
create mode 100644 uni_modules/uview-ui/components/u-rate/props.js
create mode 100644 uni_modules/uview-ui/components/u-rate/u-rate.vue
create mode 100644 uni_modules/uview-ui/components/u-read-more/props.js
create mode 100644 uni_modules/uview-ui/components/u-read-more/u-read-more.vue
create mode 100644 uni_modules/uview-ui/components/u-row-notice/props.js
create mode 100644 uni_modules/uview-ui/components/u-row-notice/u-row-notice.vue
create mode 100644 uni_modules/uview-ui/components/u-row/props.js
create mode 100644 uni_modules/uview-ui/components/u-row/u-row.vue
create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/props.js
create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.vue
create mode 100644 uni_modules/uview-ui/components/u-scroll-list/nvue.js
create mode 100644 uni_modules/uview-ui/components/u-scroll-list/other.js
create mode 100644 uni_modules/uview-ui/components/u-scroll-list/props.js
create mode 100644 uni_modules/uview-ui/components/u-scroll-list/scrollWxs.wxs
create mode 100644 uni_modules/uview-ui/components/u-scroll-list/u-scroll-list.vue
create mode 100644 uni_modules/uview-ui/components/u-search/props.js
create mode 100644 uni_modules/uview-ui/components/u-search/u-search.vue
create mode 100644 uni_modules/uview-ui/components/u-skeleton/props.js
create mode 100644 uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue
create mode 100644 uni_modules/uview-ui/components/u-slider/mpother.js
create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.js
create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.wxs
create mode 100644 uni_modules/uview-ui/components/u-slider/nvue - 副本.js
create mode 100644 uni_modules/uview-ui/components/u-slider/nvue.js
create mode 100644 uni_modules/uview-ui/components/u-slider/props.js
create mode 100644 uni_modules/uview-ui/components/u-slider/u-slider.vue
create mode 100644 uni_modules/uview-ui/components/u-status-bar/props.js
create mode 100644 uni_modules/uview-ui/components/u-status-bar/u-status-bar.vue
create mode 100644 uni_modules/uview-ui/components/u-steps-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-steps-item/u-steps-item.vue
create mode 100644 uni_modules/uview-ui/components/u-steps/props.js
create mode 100644 uni_modules/uview-ui/components/u-steps/u-steps.vue
create mode 100644 uni_modules/uview-ui/components/u-sticky/props.js
create mode 100644 uni_modules/uview-ui/components/u-sticky/u-sticky.vue
create mode 100644 uni_modules/uview-ui/components/u-subsection/props.js
create mode 100644 uni_modules/uview-ui/components/u-subsection/u-subsection.vue
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index - backup.wxs
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index.wxs
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue - backup.js
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue.js
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.vue
create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/wxs.js
create mode 100644 uni_modules/uview-ui/components/u-swipe-action/props.js
create mode 100644 uni_modules/uview-ui/components/u-swipe-action/u-swipe-action.vue
create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/props.js
create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.vue
create mode 100644 uni_modules/uview-ui/components/u-swiper/props.js
create mode 100644 uni_modules/uview-ui/components/u-swiper/u-swiper.vue
create mode 100644 uni_modules/uview-ui/components/u-switch/props.js
create mode 100644 uni_modules/uview-ui/components/u-switch/u-switch.vue
create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/u-tabbar-item.vue
create mode 100644 uni_modules/uview-ui/components/u-tabbar/props.js
create mode 100644 uni_modules/uview-ui/components/u-tabbar/u-tabbar.vue
create mode 100644 uni_modules/uview-ui/components/u-table/props.js
create mode 100644 uni_modules/uview-ui/components/u-table/u-table.vue
create mode 100644 uni_modules/uview-ui/components/u-tabs-item/props.js
create mode 100644 uni_modules/uview-ui/components/u-tabs-item/u-tabs-item.vue
create mode 100644 uni_modules/uview-ui/components/u-tabs/props.js
create mode 100644 uni_modules/uview-ui/components/u-tabs/u-tabs.vue
create mode 100644 uni_modules/uview-ui/components/u-tag/props.js
create mode 100644 uni_modules/uview-ui/components/u-tag/u-tag.vue
create mode 100644 uni_modules/uview-ui/components/u-td/props.js
create mode 100644 uni_modules/uview-ui/components/u-td/u-td.vue
create mode 100644 uni_modules/uview-ui/components/u-text/props.js
create mode 100644 uni_modules/uview-ui/components/u-text/u-text.vue
create mode 100644 uni_modules/uview-ui/components/u-text/value.js
create mode 100644 uni_modules/uview-ui/components/u-textarea/props.js
create mode 100644 uni_modules/uview-ui/components/u-textarea/u-textarea.vue
create mode 100644 uni_modules/uview-ui/components/u-toast/u-toast.vue
create mode 100644 uni_modules/uview-ui/components/u-toolbar/props.js
create mode 100644 uni_modules/uview-ui/components/u-toolbar/u-toolbar.vue
create mode 100644 uni_modules/uview-ui/components/u-tooltip/clipboard.min.js
create mode 100644 uni_modules/uview-ui/components/u-tooltip/props.js
create mode 100644 uni_modules/uview-ui/components/u-tooltip/u-tooltip.vue
create mode 100644 uni_modules/uview-ui/components/u-tr/props.js
create mode 100644 uni_modules/uview-ui/components/u-tr/u-tr.vue
create mode 100644 uni_modules/uview-ui/components/u-transition/nvue.ani-map.js
create mode 100644 uni_modules/uview-ui/components/u-transition/props.js
create mode 100644 uni_modules/uview-ui/components/u-transition/transition.js
create mode 100644 uni_modules/uview-ui/components/u-transition/u-transition.vue
create mode 100644 uni_modules/uview-ui/components/u-transition/vue.ani-style.scss
create mode 100644 uni_modules/uview-ui/components/u-upload/mixin.js
create mode 100644 uni_modules/uview-ui/components/u-upload/props.js
create mode 100644 uni_modules/uview-ui/components/u-upload/u-upload.vue
create mode 100644 uni_modules/uview-ui/components/u-upload/utils.js
create mode 100644 uni_modules/uview-ui/components/uview-ui/uview-ui.vue
create mode 100644 uni_modules/uview-ui/index.js
create mode 100644 uni_modules/uview-ui/index.scss
create mode 100644 uni_modules/uview-ui/libs/config/color.js
create mode 100644 uni_modules/uview-ui/libs/config/config.js
create mode 100644 uni_modules/uview-ui/libs/config/props.js
create mode 100644 uni_modules/uview-ui/libs/config/props/actionSheet.js
create mode 100644 uni_modules/uview-ui/libs/config/props/album.js
create mode 100644 uni_modules/uview-ui/libs/config/props/alert.js
create mode 100644 uni_modules/uview-ui/libs/config/props/avatar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/avatarGroup.js
create mode 100644 uni_modules/uview-ui/libs/config/props/backtop.js
create mode 100644 uni_modules/uview-ui/libs/config/props/badge.js
create mode 100644 uni_modules/uview-ui/libs/config/props/button.js
create mode 100644 uni_modules/uview-ui/libs/config/props/calendar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/carKeyboard.js
create mode 100644 uni_modules/uview-ui/libs/config/props/cell.js
create mode 100644 uni_modules/uview-ui/libs/config/props/cellGroup.js
create mode 100644 uni_modules/uview-ui/libs/config/props/checkbox.js
create mode 100644 uni_modules/uview-ui/libs/config/props/checkboxGroup.js
create mode 100644 uni_modules/uview-ui/libs/config/props/circleProgress.js
create mode 100644 uni_modules/uview-ui/libs/config/props/code.js
create mode 100644 uni_modules/uview-ui/libs/config/props/codeInput.js
create mode 100644 uni_modules/uview-ui/libs/config/props/col.js
create mode 100644 uni_modules/uview-ui/libs/config/props/collapse.js
create mode 100644 uni_modules/uview-ui/libs/config/props/collapseItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/columnNotice.js
create mode 100644 uni_modules/uview-ui/libs/config/props/countDown.js
create mode 100644 uni_modules/uview-ui/libs/config/props/countTo.js
create mode 100644 uni_modules/uview-ui/libs/config/props/datetimePicker.js
create mode 100644 uni_modules/uview-ui/libs/config/props/divider.js
create mode 100644 uni_modules/uview-ui/libs/config/props/empty.js
create mode 100644 uni_modules/uview-ui/libs/config/props/form.js
create mode 100644 uni_modules/uview-ui/libs/config/props/formItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/gap.js
create mode 100644 uni_modules/uview-ui/libs/config/props/grid.js
create mode 100644 uni_modules/uview-ui/libs/config/props/gridItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/icon.js
create mode 100644 uni_modules/uview-ui/libs/config/props/image.js
create mode 100644 uni_modules/uview-ui/libs/config/props/indexAnchor.js
create mode 100644 uni_modules/uview-ui/libs/config/props/indexList.js
create mode 100644 uni_modules/uview-ui/libs/config/props/input.js
create mode 100644 uni_modules/uview-ui/libs/config/props/keyboard.js
create mode 100644 uni_modules/uview-ui/libs/config/props/line.js
create mode 100644 uni_modules/uview-ui/libs/config/props/lineProgress.js
create mode 100644 uni_modules/uview-ui/libs/config/props/link.js
create mode 100644 uni_modules/uview-ui/libs/config/props/list.js
create mode 100644 uni_modules/uview-ui/libs/config/props/listItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/loadingIcon.js
create mode 100644 uni_modules/uview-ui/libs/config/props/loadingPage.js
create mode 100644 uni_modules/uview-ui/libs/config/props/loadmore.js
create mode 100644 uni_modules/uview-ui/libs/config/props/modal.js
create mode 100644 uni_modules/uview-ui/libs/config/props/navbar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/noNetwork.js
create mode 100644 uni_modules/uview-ui/libs/config/props/noticeBar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/notify.js
create mode 100644 uni_modules/uview-ui/libs/config/props/numberBox.js
create mode 100644 uni_modules/uview-ui/libs/config/props/numberKeyboard.js
create mode 100644 uni_modules/uview-ui/libs/config/props/overlay.js
create mode 100644 uni_modules/uview-ui/libs/config/props/parse.js
create mode 100644 uni_modules/uview-ui/libs/config/props/picker.js
create mode 100644 uni_modules/uview-ui/libs/config/props/popup.js
create mode 100644 uni_modules/uview-ui/libs/config/props/radio.js
create mode 100644 uni_modules/uview-ui/libs/config/props/radioGroup.js
create mode 100644 uni_modules/uview-ui/libs/config/props/rate.js
create mode 100644 uni_modules/uview-ui/libs/config/props/readMore.js
create mode 100644 uni_modules/uview-ui/libs/config/props/row.js
create mode 100644 uni_modules/uview-ui/libs/config/props/rowNotice.js
create mode 100644 uni_modules/uview-ui/libs/config/props/scrollList.js
create mode 100644 uni_modules/uview-ui/libs/config/props/search.js
create mode 100644 uni_modules/uview-ui/libs/config/props/section.js
create mode 100644 uni_modules/uview-ui/libs/config/props/skeleton.js
create mode 100644 uni_modules/uview-ui/libs/config/props/slider.js
create mode 100644 uni_modules/uview-ui/libs/config/props/statusBar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/steps.js
create mode 100644 uni_modules/uview-ui/libs/config/props/stepsItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/sticky.js
create mode 100644 uni_modules/uview-ui/libs/config/props/subsection.js
create mode 100644 uni_modules/uview-ui/libs/config/props/swipeAction.js
create mode 100644 uni_modules/uview-ui/libs/config/props/swipeActionItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/swiper.js
create mode 100644 uni_modules/uview-ui/libs/config/props/swipterIndicator.js
create mode 100644 uni_modules/uview-ui/libs/config/props/switch.js
create mode 100644 uni_modules/uview-ui/libs/config/props/tabbar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/tabbarItem.js
create mode 100644 uni_modules/uview-ui/libs/config/props/tabs.js
create mode 100644 uni_modules/uview-ui/libs/config/props/tag.js
create mode 100644 uni_modules/uview-ui/libs/config/props/text.js
create mode 100644 uni_modules/uview-ui/libs/config/props/textarea.js
create mode 100644 uni_modules/uview-ui/libs/config/props/toast.js
create mode 100644 uni_modules/uview-ui/libs/config/props/toolbar.js
create mode 100644 uni_modules/uview-ui/libs/config/props/tooltip.js
create mode 100644 uni_modules/uview-ui/libs/config/props/transition.js
create mode 100644 uni_modules/uview-ui/libs/config/props/upload.js
create mode 100644 uni_modules/uview-ui/libs/config/zIndex.js
create mode 100644 uni_modules/uview-ui/libs/css/color.scss
create mode 100644 uni_modules/uview-ui/libs/css/common.scss
create mode 100644 uni_modules/uview-ui/libs/css/components.scss
create mode 100644 uni_modules/uview-ui/libs/css/flex.scss
create mode 100644 uni_modules/uview-ui/libs/css/h5.scss
create mode 100644 uni_modules/uview-ui/libs/css/mixin.scss
create mode 100644 uni_modules/uview-ui/libs/css/mp.scss
create mode 100644 uni_modules/uview-ui/libs/css/nvue.scss
create mode 100644 uni_modules/uview-ui/libs/css/vue.scss
create mode 100644 uni_modules/uview-ui/libs/function/colorGradient.js
create mode 100644 uni_modules/uview-ui/libs/function/debounce.js
create mode 100644 uni_modules/uview-ui/libs/function/index.js
create mode 100644 uni_modules/uview-ui/libs/function/platform.js
create mode 100644 uni_modules/uview-ui/libs/function/test.js
create mode 100644 uni_modules/uview-ui/libs/function/throttle.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/adapters/index.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/InterceptorManager.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/Request.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/buildFullPath.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/defaults.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/dispatchRequest.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/mergeConfig.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/core/settle.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/buildURL.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/combineURLs.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/index.d.ts
create mode 100644 uni_modules/uview-ui/libs/luch-request/index.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/utils.js
create mode 100644 uni_modules/uview-ui/libs/luch-request/utils/clone.js
create mode 100644 uni_modules/uview-ui/libs/mixin/button.js
create mode 100644 uni_modules/uview-ui/libs/mixin/mixin.js
create mode 100644 uni_modules/uview-ui/libs/mixin/mpMixin.js
create mode 100644 uni_modules/uview-ui/libs/mixin/mpShare.js
create mode 100644 uni_modules/uview-ui/libs/mixin/openType.js
create mode 100644 uni_modules/uview-ui/libs/mixin/style.js
create mode 100644 uni_modules/uview-ui/libs/mixin/touch.js
create mode 100644 uni_modules/uview-ui/libs/util/async-validator.js
create mode 100644 uni_modules/uview-ui/libs/util/calendar.js
create mode 100644 uni_modules/uview-ui/libs/util/dayjs.js
create mode 100644 uni_modules/uview-ui/libs/util/emitter.js
create mode 100644 uni_modules/uview-ui/libs/util/route.js
create mode 100644 uni_modules/uview-ui/package.json
create mode 100644 uni_modules/uview-ui/theme.scss
create mode 100644 util/request/index.js
create mode 100644 util/request/requestInterceptors.js
create mode 100644 util/request/responseInterceptors.js
create mode 100644 vue.config.js
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..07c1d5f
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "h5" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..cdbdd5b
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,19 @@
+
+
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..1b98f13
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 www.uviewui.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f451fce
--- /dev/null
+++ b/README.md
@@ -0,0 +1,101 @@
+
+
+
+uView 2.0
+多平台快速开发的UI框架
+
+[](https://github.com/umicro/uView2.0)
+[](https://github.com/umicro/uView2.0)
+[](https://github.com/umicro/uView2.0/issues)
+[](https://uviewui.com)
+[](https://gitee.com/umicro/uView2.0/releases)
+[](https://en.wikipedia.org/wiki/MIT_License)
+
+## 一起推动uView发展
+
+uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票),
+我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+## 说明
+
+uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
+
+## [官方文档:https://uviewui.com](https://uviewui.com)
+
+### 官方1群:1042987248(已满)
+### 官方2群:249718512(已满)
+### 官方3群:1129077272(已满)
+### 官方4群:1084514613(已满)
+### 官方5群:863820668(已满)
+### 官方6群:745721078(已满)
+### 官方7群:627867855(已满)
+### 官方8群:496409492(已满)
+### 官方9群:828504448(已满)
+### 官方10群:232041042(已满)
+### [点击加11群交流反馈:364463526](https://jq.qq.com/?_wv=1027&k=mCxS3TGY)
+
+## 特性
+
+- 全面兼容nvue,原生渲染,高性能
+- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
+- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
+- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨
+- 众多的常用页面和布局,让您专注逻辑,事半功倍
+- 详尽的文档支持,现代化的演示效果
+- 按需引入,精简打包体积
+
+
+## 预览
+
+您可以通过**微信**扫码,查看最佳的演示效果。
+
+
+
+
+
+## 链接
+
+- [官方文档](https://www.uviewui.com/)
+- [更新日志](https://www.uviewui.com/components/changelog.html)
+- [升级指南](https://www.uviewui.com/components/changeGuide.html)
+- [关于我们](https://www.uviewui.com/cooperation/about.html)
+
+## 交流反馈
+
+欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html)
+
+## 关于PR
+
+> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。
+> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢!
+
+## 安装
+
+#### **下载地址** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593)
+
+## 快速上手
+
+请通过[官网安装文档](https://v2.uviewui.com/components/install.html)了解更详细的内容
+
+## 使用方法
+配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
+
+```html
+
+
+
+```
+
+请通过[快速上手](https://v2.uviewui.com/components/quickstart.html)了解更详细的内容
+
+
+## 捐赠uView的研发
+
+uView文档内容和框架源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
+
+
+
+
+## 版权信息
+uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。
+
diff --git a/common/api.js b/common/api.js
new file mode 100644
index 0000000..92fd182
--- /dev/null
+++ b/common/api.js
@@ -0,0 +1,3 @@
+const { http } = uni.$u
+// 获取菜单
+export const fetchMenu = (params, config = {}) => http.post('/ebapi/public_api/index', params, config)
diff --git a/common/config.js b/common/config.js
new file mode 100644
index 0000000..b17c3c9
--- /dev/null
+++ b/common/config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ baseUrl: 'https://api.youzixy.com'
+}
diff --git a/common/demo.scss b/common/demo.scss
new file mode 100644
index 0000000..a885219
--- /dev/null
+++ b/common/demo.scss
@@ -0,0 +1,45 @@
+.u-block{
+ padding: 14px;
+ &__section{
+ margin-bottom:10px;
+ }
+ &__title {
+ margin-top:10px;
+ font-size: 15px;
+ color: $u-content-color;
+ margin-bottom:10px;
+ }
+ &__flex{
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ }
+}
+
+// 使用了cell组件的icon图片样式
+.u-cell-icon {
+ width: 36rpx;
+ height: 36rpx;
+ margin-right: 8rpx;
+}
+
+.u-page {
+ padding: 15px 15px 40px 15px;
+}
+
+.u-demo-block {
+ flex: 1;
+ margin-bottom: 23px;
+
+ &__content {
+ @include flex(column);
+ }
+
+ &__title {
+ font-size: 14px;
+ color: rgb(143, 156, 162);
+ margin-bottom: 8px;
+ @include flex;
+ }
+}
+
diff --git a/common/mixin.js b/common/mixin.js
new file mode 100644
index 0000000..b6a4eee
--- /dev/null
+++ b/common/mixin.js
@@ -0,0 +1,7 @@
+export default {
+ data() {
+ return {
+
+ }
+ }
+}
diff --git a/common/props.js b/common/props.js
new file mode 100644
index 0000000..9c1ef07
--- /dev/null
+++ b/common/props.js
@@ -0,0 +1,2 @@
+uni.$u.props.gap.bgColor = '#f3f4f6'
+uni.$u.props.gap.height = '10'
diff --git a/components/page-nav/page-nav.vue b/components/page-nav/page-nav.vue
new file mode 100644
index 0000000..70ee75c
--- /dev/null
+++ b/components/page-nav/page-nav.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ uView {{version}}
+
+
+ 查看1.x演示
+
+
+ 多平台快速开发的UI框架
+
+
+ {{desc}}
+
+
+
+
+
+
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..2f0640c
--- /dev/null
+++ b/main.js
@@ -0,0 +1,35 @@
+import Vue from 'vue'
+import App from './App'
+
+// vuex
+import store from './store'
+
+// 引入全局uView
+import uView from '@/uni_modules/uview-ui'
+
+import mixin from './common/mixin'
+
+Vue.prototype.$store = store
+
+Vue.config.productionTip = false
+
+App.mpType = 'app'
+Vue.use(uView)
+
+// #ifdef MP
+// 引入uView对小程序分享的mixin封装
+const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js')
+Vue.mixin(mpShare)
+// #endif
+
+Vue.mixin(mixin)
+
+const app = new Vue({
+ store,
+ ...App
+})
+
+// 引入请求封装
+require('./util/request/index')(app)
+
+app.$mount()
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..f24953c
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,153 @@
+{
+ "name" : "auditDetails",
+ "appid" : "",
+ "description": "多平台快速开发的UI框架",
+ "versionName": "1.0.0",
+ "versionCode": 1,
+ "transformPx": false,
+ "app-plus": {
+ "optimization": {
+ "subPackages": true
+ },
+ "safearea": {
+ "bottom": {
+ "offset": "none"
+ }
+ },
+ "splashscreen": {
+ "alwaysShowBeforeRender": true,
+ "waiting": true,
+ "autoclose": true,
+ "delay": 0
+ },
+ "usingComponents": true,
+ "nvueCompiler": "uni-app",
+ "compilerVersion": 3,
+ "modules": {
+ "Webview-x5": {}
+ },
+ "distribute": {
+ "android": {
+ "permissions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "abiFilters": [
+ "armeabi-v7a",
+ "arm64-v8a"
+ ]
+ },
+ "ios": {
+ "idfa": false
+ },
+ "sdkConfigs": {
+ "ad": {}
+ },
+ "icons": {
+ "android": {
+ "hdpi": "unpackage/res/icons/72x72.png",
+ "xhdpi": "unpackage/res/icons/96x96.png",
+ "xxhdpi": "unpackage/res/icons/144x144.png",
+ "xxxhdpi": "unpackage/res/icons/192x192.png"
+ },
+ "ios": {
+ "appstore": "unpackage/res/icons/1024x1024.png",
+ "ipad": {
+ "app": "unpackage/res/icons/76x76.png",
+ "app@2x": "unpackage/res/icons/152x152.png",
+ "notification": "unpackage/res/icons/20x20.png",
+ "notification@2x": "unpackage/res/icons/40x40.png",
+ "proapp@2x": "unpackage/res/icons/167x167.png",
+ "settings": "unpackage/res/icons/29x29.png",
+ "settings@2x": "unpackage/res/icons/58x58.png",
+ "spotlight": "unpackage/res/icons/40x40.png",
+ "spotlight@2x": "unpackage/res/icons/80x80.png"
+ },
+ "iphone": {
+ "app@2x": "unpackage/res/icons/120x120.png",
+ "app@3x": "unpackage/res/icons/180x180.png",
+ "notification@2x": "unpackage/res/icons/40x40.png",
+ "notification@3x": "unpackage/res/icons/60x60.png",
+ "settings@2x": "unpackage/res/icons/58x58.png",
+ "settings@3x": "unpackage/res/icons/87x87.png",
+ "spotlight@2x": "unpackage/res/icons/80x80.png",
+ "spotlight@3x": "unpackage/res/icons/120x120.png"
+ }
+ }
+ }
+ }
+ },
+ "quickapp": {},
+ "mp-weixin": {
+ "appid": "",
+ "setting": {
+ "urlCheck": false,
+ "es6": false,
+ "minified": false,
+ "postcss": false
+ },
+ "optimization": {
+ "subPackages": true
+ },
+ "usingComponents": true
+ },
+ "mp-alipay": {
+ "usingComponents": true,
+ "component2": true
+ },
+ "mp-qq": {
+ "optimization": {
+ "subPackages": true
+ },
+ "appid": "15646153"
+ },
+ "mp-baidu": {
+ "usingComponents": true,
+ "appid": ""
+ },
+ "mp-toutiao": {
+ "usingComponents": true,
+ "appid": ""
+ },
+ "h5": {
+ "template": "template.h5.html",
+ "router": {
+ "mode": "history",
+ "base": ""
+ },
+ "optimization": {
+ "treeShaking": {
+ "enable": false
+ }
+ },
+ "title": "uView UI",
+ "sdkConfigs": {
+ "maps": {
+ "qqmap": {
+ "key": ""
+ }
+ }
+ },
+ "domain": ""
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..a590a42
--- /dev/null
+++ b/package.json
@@ -0,0 +1,11 @@
+{
+ "id": "uview-ui",
+ "scripts": {
+ "test": "eslint . --fix"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "eslint": "^8.2.0",
+ "eslint-config-airbnb": "^19.0.0"
+ }
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..af6e76a
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,432 @@
+{
+ // "condition": { //模式配置,仅开发期间生效
+ // "current": 0, //当前激活的模式(list 的索引项)
+ // "list": [{
+ // "name": "test", //模式名称
+ // "path": "pages/componentsA/test/test", //启动页面,必选
+ // "query": "" //启动参数,在页面的onLoad函数里面得到
+ // }]
+ // },
+ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/index/index"
+ },
+ {
+ "path": "pages/index/tabControl-tag"
+ }
+
+ ],
+ "subPackages": [{
+ "root": "pages/componentsA",
+ "pages": [
+ // 过渡动画
+ {
+ "path": "transition/transition",
+ "style": {
+ "navigationBarTitleText": "过渡动画"
+ }
+ },
+ {
+ "path": "test/test",
+ "style": {
+ "navigationBarTitleText": "测试"
+ }
+ },
+ {
+ "path": "icon/icon",
+ "style": {
+ "navigationBarTitleText": "图标"
+ }
+ },
+ {
+ "path": "cell/cell",
+ "style": {
+ "navigationBarTitleText": "单元格"
+ }
+ },
+ {
+ "path": "line/line",
+ "style": {
+ "navigationBarTitleText": "线条"
+ }
+ },
+ {
+ "path": "image/image",
+ "style": {
+ "navigationBarTitleText": "图片"
+ }
+ },
+ {
+ "path": "link/link",
+ "style": {
+ "navigationBarTitleText": "超链接"
+ }
+ },
+ {
+ "path": "button/button",
+ "style": {
+ "navigationBarTitleText": "按钮"
+ }
+ },
+ {
+ "path": "loading-icon/loading-icon",
+ "style": {
+ "navigationBarTitleText": "加载中图标"
+ }
+ },
+ {
+ "path": "overlay/overlay",
+ "style": {
+ "navigationBarTitleText": "遮罩层",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "loading-page/loading-page",
+ "style": {
+ "navigationBarTitleText": "加载页",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "popup/popup",
+ "style": {
+ "navigationBarTitleText": "弹窗",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "swipeAction/swipeAction",
+ "style": {
+ "navigationBarTitleText": "滑动单元格"
+ }
+ },
+ {
+ "path": "sticky/sticky",
+ "style": {
+ "navigationBarTitleText": "吸顶"
+ }
+ },
+ {
+ "path": "radio/radio",
+ "style": {
+ "navigationBarTitleText": "单选框"
+ }
+ },
+ {
+ "path": "checkbox/checkbox",
+ "style": {
+ "navigationBarTitleText": "复选框"
+ }
+ },
+ {
+ "path": "empty/empty",
+ "style": {
+ "navigationBarTitleText": "内容为空"
+ }
+ },
+ {
+ "path": "backtop/backtop",
+ "style": {
+ "navigationBarTitleText": "返回顶部"
+ }
+ },
+ {
+ "path": "divider/divider",
+ "style": {
+ "navigationBarTitleText": "分割线"
+ }
+ },
+ {
+ "path": "rate/rate",
+ "style": {
+ "navigationBarTitleText": "评分"
+ }
+ },
+ {
+ "path": "gap/gap",
+ "style": {
+ "navigationBarTitleText": "间隔槽"
+ }
+ },
+ {
+ "path": "grid/grid",
+ "style": {
+ "navigationBarTitleText": "宫格"
+ }
+ }
+ ]
+ }, {
+ "root": "pages/componentsB",
+ "pages": [{
+ "path": "dropdown/dropdown",
+ "style": {
+ "navigationBarTitleText": "下拉菜单"
+ }
+ }, {
+ "path": "actionSheet/actionSheet",
+ "style": {
+ "navigationBarTitleText": "上拉菜单",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "parse/parse",
+ "style": {
+ "navigationBarTitleText": "富文本解析器"
+ }
+ }, {
+ "path": "parse/jump",
+ "style": {
+ "navigationBarTitleText": "内部链接"
+ }
+ }, {
+ "path": "toast/toast",
+ "style": {
+ "navigationBarTitleText": "提示消息"
+ }
+ }, {
+ "path": "keyboard/keyboard",
+ "style": {
+ "navigationBarTitleText": "键盘",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "slider/slider",
+ "style": {
+ "navigationBarTitleText": "滑动选择器"
+ }
+ }, {
+ "path": "upload/upload",
+ "style": {
+ "navigationBarTitleText": "上传"
+ }
+ }, {
+ "path": "notify/notify",
+ "style": {
+ "navigationBarTitleText": "消息提示"
+ }
+ }, {
+ "path": "countDown/countDown",
+ "style": {
+ "navigationBarTitleText": "倒计时"
+ }
+ }, {
+ "path": "color/color",
+ "style": {
+ "navigationBarTitleText": "色彩"
+ }
+ }, {
+ "path": "numberBox/numberBox",
+ "style": {
+ "navigationBarTitleText": "步进器"
+ }
+ }, {
+ "path": "countTo/countTo",
+ "style": {
+ "navigationBarTitleText": "数字滚动"
+ }
+ }, {
+ "path": "search/search",
+ "style": {
+ "navigationBarTitleText": "搜索"
+ }
+ }, {
+ "path": "badge/badge",
+ "style": {
+ "navigationBarTitleText": "徽标数"
+ }
+ }, {
+ "path": "tag/tag",
+ "style": {
+ "navigationBarTitleText": "标签"
+ }
+ }, {
+ "path": "alert/alert",
+ "style": {
+ "navigationBarTitleText": "警告"
+ }
+ }, {
+ "path": "switch/switch",
+ "style": {
+ "navigationBarTitleText": "开关"
+ }
+ }, {
+ "path": "collapse/collapse",
+ "style": {
+ "navigationBarTitleText": "折叠面板"
+ }
+ }, {
+ "path": "code/code",
+ "style": {
+ "navigationBarTitleText": "验证码"
+ }
+ }, {
+ "path": "noticeBar/noticeBar",
+ "style": {
+ "navigationBarTitleText": "滚动通知"
+ }
+ }, {
+ "path": "progress/progress",
+ "style": {
+ "navigationBarTitleText": "进度条"
+ }
+ }, {
+ "path": "tabbar/tabbar",
+ "style": {
+ "navigationBarTitleText": "Tabbar"
+ }
+ }]
+ }, {
+ "root": "pages/componentsC",
+ "pages": [{
+ "path": "table/table",
+ "style": {
+ "navigationBarTitleText": "表格"
+ }
+ }, {
+ "path": "form/form",
+ "style": {
+ "navigationBarTitleText": "表单",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "textarea/textarea",
+ "style": {
+ "navigationBarTitleText": "文本域"
+ }
+ }, {
+ "path": "noNetwork/noNetwork",
+ "style": {
+ "navigationBarTitleText": "无网络提示"
+ }
+ }, {
+ "path": "loadmore/loadmore",
+ "style": {
+ "navigationBarTitleText": "加载更多"
+ }
+ }, {
+ "path": "text/text",
+ "style": {
+ "navigationBarTitleText": "文本"
+ }
+ }, {
+ "path": "steps/steps",
+ "style": {
+ "navigationBarTitleText": "步骤条"
+ }
+ }, {
+ "path": "navbar/navbar",
+ "style": {
+ "navigationBarTitleText": "导航栏",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "skeleton/skeleton",
+ "style": {
+ "navigationBarTitleText": "骨架屏"
+ }
+ }, {
+ "path": "input/input",
+ "style": {
+ "navigationBarTitleText": "输入框"
+ }
+ }, {
+ "path": "album/album",
+ "style": {
+ "navigationBarTitleText": "相册"
+ }
+ }, {
+ "path": "avatar/avatar",
+ "style": {
+ "navigationBarTitleText": "头像"
+ }
+ }, {
+ "path": "readMore/readMore",
+ "style": {
+ "navigationBarTitleText": "阅读更多"
+ }
+ }, {
+ "path": "layout/layout",
+ "style": {
+ "navigationBarTitleText": "布局"
+ }
+ }, {
+ "path": "indexList/indexList",
+ "style": {
+ "navigationBarTitleText": "索引列表"
+ }
+ }, {
+ "path": "tooltip/tooltip",
+ "style": {
+ "navigationBarTitleText": "长按提示"
+ }
+ }, {
+ "path": "tabs/tabs",
+ "style": {
+ "navigationBarTitleText": "标签"
+ }
+ }, {
+ "path": "list/list",
+ "style": {
+ "navigationBarTitleText": "列表"
+ }
+ }, {
+ "path": "swiper/swiper",
+ "style": {
+ "navigationBarTitleText": "轮播"
+ }
+ }, {
+ "path": "scrollList/scrollList",
+ "style": {
+ "navigationBarTitleText": "横向滚动列表"
+ }
+ }, {
+ "path": "codeInput/codeInput",
+ "style": {
+ "navigationBarTitleText": "验证码输入"
+ }
+ }, {
+ "path": "modal/modal",
+ "style": {
+ "navigationBarTitleText": "模态框",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "picker/picker",
+ "style": {
+ "navigationBarTitleText": "选择器",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "calendar/calendar",
+ "style": {
+ "navigationBarTitleText": "日历",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "datetimePicker/datetimePicker",
+ "style": {
+ "navigationBarTitleText": "时间选择",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "subsection/subsection",
+ "style": {
+ "navigationBarTitleText": "分段器"
+ }
+ }]
+ }],
+ "preloadRule": {
+ "pages/example/components": {
+ "network": "all",
+ "packages": ["pages/componentsA", "pages/componentsB"]
+ }
+ },
+ "globalStyle": {
+ "navigationStyle": "custom",
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "考核详情",
+ "navigationBarBackgroundColor": "#FFFFFF",
+ "backgroundColor": "#FFFFFF"
+ }
+}
diff --git a/pages/componentsA/backtop/backtop.nvue b/pages/componentsA/backtop/backtop.nvue
new file mode 100644
index 0000000..6410194
--- /dev/null
+++ b/pages/componentsA/backtop/backtop.nvue
@@ -0,0 +1,132 @@
+
+
+
+ 自定义backTop(滚动页面即可在右下角看到图标)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/button/button.nvue b/pages/componentsA/button/button.nvue
new file mode 100644
index 0000000..6916152
--- /dev/null
+++ b/pages/componentsA/button/button.nvue
@@ -0,0 +1,330 @@
+
+
+
+ 按钮类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 镂空按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 细边按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 禁用按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中
+
+
+
+
+
+
+
+
+
+
+ 按钮图标&按钮形状
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义大小
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/cell/cell.nvue b/pages/componentsA/cell/cell.nvue
new file mode 100644
index 0000000..a1f2bb2
--- /dev/null
+++ b/pages/componentsA/cell/cell.nvue
@@ -0,0 +1,201 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+ 自定义图标/图片
+
+
+
+
+
+
+ 自定义大小
+
+
+
+
+
+
+ 显示右箭头
+
+
+
+
+
+
+
+ 跳转页面
+
+
+
+
+
+
+ 右侧内容垂直居中
+
+
+
+
+
+ 自定义插槽
+
+
+
+ 单元格
+
+
+
+
+
+ 99
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/checkbox/checkbox.nvue b/pages/componentsA/checkbox/checkbox.nvue
new file mode 100644
index 0000000..916d3d7
--- /dev/null
+++ b/pages/componentsA/checkbox/checkbox.nvue
@@ -0,0 +1,329 @@
+
+
+
+ 基本案例
+ 苹果、香蕉和橙子哪个最甜?
+
+
+
+
+
+
+
+
+
+
+ 自定义形状
+ 中国四大名著是?
+
+
+
+
+
+
+
+
+
+
+ 是否禁用
+ 下面什么东西不能吃?
+
+
+
+
+
+
+
+
+
+
+ 是否禁止点击提示语选中复选框
+ 北宋四大家是谁?
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色
+ 哪个颜色最好看?
+
+
+
+
+
+
+
+
+
+
+ 横向排列形式
+ 什么东西不能飞?
+
+
+
+
+
+
+
+
+
+
+ 横向两端排列形式
+ 什么东西不能吃?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/divider/divider.nvue b/pages/componentsA/divider/divider.nvue
new file mode 100644
index 0000000..7a23112
--- /dev/null
+++ b/pages/componentsA/divider/divider.nvue
@@ -0,0 +1,82 @@
+
+
+
+ 基本案例
+
+
+
+
+
+ 是否虚线
+
+
+
+
+
+ 是否细线
+
+
+
+
+
+ 是否以点代替文字
+
+
+
+
+
+ 文本内容靠左
+
+
+
+
+
+ 文本内容靠右
+
+
+
+
+
+ 自定义文本颜色
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/empty/empty.nvue b/pages/componentsA/empty/empty.nvue
new file mode 100644
index 0000000..9871033
--- /dev/null
+++ b/pages/componentsA/empty/empty.nvue
@@ -0,0 +1,143 @@
+
+
+
+ 演示效果
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/gap/gap.nvue b/pages/componentsA/gap/gap.nvue
new file mode 100644
index 0000000..9c28ba1
--- /dev/null
+++ b/pages/componentsA/gap/gap.nvue
@@ -0,0 +1,42 @@
+
+
+
+ 基本案列
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+ 自定义高度
+
+
+
+
+
+ 自定义上下边距
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/grid/grid.nvue b/pages/componentsA/grid/grid.nvue
new file mode 100644
index 0000000..2b9aaea
--- /dev/null
+++ b/pages/componentsA/grid/grid.nvue
@@ -0,0 +1,193 @@
+
+
+
+ 基本案例
+
+
+
+
+ {{baseListItem.title}}
+
+
+
+
+
+ 显示边框
+
+
+
+
+ {{listItem.title}}
+
+
+
+
+
+ 绑定点击事件&自定义列数
+
+
+
+
+ {{listItem.title}}
+
+
+
+
+
+ 可滑动
+
+
+
+
+
+
+ {{ '宫格' + (index + 1) }}
+
+
+
+
+
+
+
+ {{ '宫格' + (index + 1) }}
+
+
+
+
+
+
+
+ {{ "宫格" + (index + 1) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/icon/icon.nvue b/pages/componentsA/icon/icon.nvue
new file mode 100644
index 0000000..77f52b0
--- /dev/null
+++ b/pages/componentsA/icon/icon.nvue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/image/image.nvue b/pages/componentsA/image/image.nvue
new file mode 100644
index 0000000..a6a9dae
--- /dev/null
+++ b/pages/componentsA/image/image.nvue
@@ -0,0 +1,76 @@
+
+
+
+ 基本案例
+
+
+
+
+
+
+
+ 自定义形状
+
+
+
+
+
+
+
+ 自定义圆角
+
+
+
+
+
+
+
+ 图片模式(widthFit)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/line/line.nvue b/pages/componentsA/line/line.nvue
new file mode 100644
index 0000000..a6da0d1
--- /dev/null
+++ b/pages/componentsA/line/line.nvue
@@ -0,0 +1,74 @@
+
+
+
+ 基本案例
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+ 自定义长度
+
+
+
+
+
+ 自定义方向
+
+
+
+
+
+ 是否显示1px粗线条
+
+
+
+
+
+ 线条与上下左右元素的间距
+
+
+
+
+
+ 是否虚线
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/link/link.nvue b/pages/componentsA/link/link.nvue
new file mode 100644
index 0000000..5079c5a
--- /dev/null
+++ b/pages/componentsA/link/link.nvue
@@ -0,0 +1,75 @@
+
+
+
+ 基本案例
+
+
+
+
+
+
+
+ 显示下划线
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+ 自定义链接内容
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/loading-icon/loading-icon.nvue b/pages/componentsA/loading-icon/loading-icon.nvue
new file mode 100644
index 0000000..46a147c
--- /dev/null
+++ b/pages/componentsA/loading-icon/loading-icon.nvue
@@ -0,0 +1,79 @@
+
+
+
+ 基本案列
+
+
+
+
+
+
+
+ 半圆loading
+
+
+
+
+
+
+
+ 圆形loading
+
+
+
+
+
+
+
+ 自定义动画
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+ 自定义文字
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/loading-page/loading-page.nvue b/pages/componentsA/loading-page/loading-page.nvue
new file mode 100644
index 0000000..0f45a19
--- /dev/null
+++ b/pages/componentsA/loading-page/loading-page.nvue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/overlay/overlay.nvue b/pages/componentsA/overlay/overlay.nvue
new file mode 100644
index 0000000..c0198b5
--- /dev/null
+++ b/pages/componentsA/overlay/overlay.nvue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/popup/popup.nvue b/pages/componentsA/popup/popup.nvue
new file mode 100644
index 0000000..939c2bb
--- /dev/null
+++ b/pages/componentsA/popup/popup.nvue
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/radio/radio.nvue b/pages/componentsA/radio/radio.nvue
new file mode 100644
index 0000000..12d4107
--- /dev/null
+++ b/pages/componentsA/radio/radio.nvue
@@ -0,0 +1,330 @@
+
+
+
+ 基本案例
+ 苹果、香蕉和橙子哪个最甜?
+
+
+
+
+
+
+
+
+
+
+ 自定义形状
+ 王者荣耀谁最帅?
+
+
+
+
+
+
+
+
+
+
+ 是否禁用
+ 苹果、香蕉和菠萝哪个最甜?
+
+
+
+
+
+
+
+
+
+
+ 纵向排列
+ 狙击枪用哪个倍镜最好?
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色?
+ 你比较喜欢下面哪个颜色?
+
+
+
+
+
+
+
+
+
+
+ 横向排列形式?
+ 王者荣耀哪个英雄最美?
+
+
+
+
+
+
+
+
+
+
+ 横向两端排列形式?
+ 你觉得阿木木可爱吗?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/rate/rate.nvue b/pages/componentsA/rate/rate.nvue
new file mode 100644
index 0000000..bf009dc
--- /dev/null
+++ b/pages/componentsA/rate/rate.nvue
@@ -0,0 +1,138 @@
+
+
+
+ 基本案例
+
+
+
+
+
+
+
+ 自定义选中星星数量
+
+
+
+
+
+
+
+ 自定义星星大小
+
+
+
+
+
+
+
+ 是否禁用评分
+
+
+
+
+
+
+
+ 自定义选中星星颜色
+
+
+
+
+
+
+
+ 自定义未选中星星颜色
+
+
+
+
+
+
+
+ 禁止触摸选择
+
+
+
+
+
+
+
+ 允许触摸选择
+
+
+
+
+
+
+
+ 是否允许半星
+
+
+
+
+
+
+
+ 自定义选中的图标
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/sticky/sticky.nvue b/pages/componentsA/sticky/sticky.nvue
new file mode 100644
index 0000000..7ea368e
--- /dev/null
+++ b/pages/componentsA/sticky/sticky.nvue
@@ -0,0 +1,57 @@
+
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/swipeAction/swipeAction.nvue b/pages/componentsA/swipeAction/swipeAction.nvue
new file mode 100644
index 0000000..d5a797a
--- /dev/null
+++ b/pages/componentsA/swipeAction/swipeAction.nvue
@@ -0,0 +1,228 @@
+
+
+
+ 演示案例
+
+
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+ 按钮组
+
+
+
+
+
+ 两个按钮并列
+
+
+
+
+
+
+
+ 带图标
+
+
+
+
+
+ 自定义图标
+
+
+
+
+
+
+
+ 组合使用
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+ 自定义按钮形状
+
+
+
+
+
+ 圆形按钮
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/test/test.vue b/pages/componentsA/test/test.vue
new file mode 100644
index 0000000..0a389cd
--- /dev/null
+++ b/pages/componentsA/test/test.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/componentsA/transition/transition.nvue b/pages/componentsA/transition/transition.nvue
new file mode 100644
index 0000000..47e6207
--- /dev/null
+++ b/pages/componentsA/transition/transition.nvue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/actionSheet/actionSheet.nvue b/pages/componentsB/actionSheet/actionSheet.nvue
new file mode 100644
index 0000000..8be730c
--- /dev/null
+++ b/pages/componentsB/actionSheet/actionSheet.nvue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 这是一段通过slot传入的内容,您可以在此自定义操作面板
+
+
+
+
+
+
+
diff --git a/pages/componentsB/alert/alert.nvue b/pages/componentsB/alert/alert.nvue
new file mode 100644
index 0000000..20a08d6
--- /dev/null
+++ b/pages/componentsB/alert/alert.nvue
@@ -0,0 +1,146 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 深浅色
+
+
+
+
+
+
+
+
+
+
+ 显示图标
+
+
+
+
+
+
+
+
+
+
+ 可关闭
+
+
+
+
+
+
+
+
+
+
+ 带标题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/badge/badge.nvue b/pages/componentsB/badge/badge.nvue
new file mode 100644
index 0000000..4e895e6
--- /dev/null
+++ b/pages/componentsB/badge/badge.nvue
@@ -0,0 +1,163 @@
+
+
+
+ 直角边形状
+
+
+
+
+
+
+
+ 徽标数显示方式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 显示圆点
+
+
+
+
+
+
+
+
+ 自定义主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 反转色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/code/code.nvue b/pages/componentsB/code/code.nvue
new file mode 100644
index 0000000..2800959
--- /dev/null
+++ b/pages/componentsB/code/code.nvue
@@ -0,0 +1,157 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+ 保持倒计时(开始后,左上角返退出此页面再进入,会发现倒计时还在继续)
+
+
+
+
+
+
+ 文本样式
+
+
+ {{tips2}}
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/collapse/collapse.nvue b/pages/componentsB/collapse/collapse.nvue
new file mode 100644
index 0000000..a8701d2
--- /dev/null
+++ b/pages/componentsB/collapse/collapse.nvue
@@ -0,0 +1,180 @@
+
+
+
+ 基础功能
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+ 展开和禁用
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+ 手风琴模式
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+ 移除下划线
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+
+
+ 自定义标题和内容
+
+
+ 文档指南
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 自定义内容
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/color/color.nvue b/pages/componentsB/color/color.nvue
new file mode 100644
index 0000000..d32811a
--- /dev/null
+++ b/pages/componentsB/color/color.nvue
@@ -0,0 +1,291 @@
+
+
+
+ 主色调
+
+
+ Primary
+ #3c9cff
+
+
+ Dark
+ #398ade
+
+
+ Disabled
+ #9acafc
+
+
+ Light
+ #ecf5ff
+
+
+
+
+ Error
+
+
+ Error
+ #f56c6c
+
+
+ Dark
+ #e45656
+
+
+ Disabled
+ #f7b2b2
+
+
+ Light
+ #fef0f0
+
+
+
+
+ Warning
+
+
+ Warning
+ #f9ae3d
+
+
+ Dark
+ #f1a532
+
+
+ Disabled
+ #f9d39b
+
+
+ Light
+ #fdf6ec
+
+
+
+
+ Info
+
+
+ Info
+ #909399
+
+
+ Dark
+ #767a82
+
+
+ Disabled
+ #c4c6c9
+
+
+ Light
+ #f4f4f5
+
+
+
+
+ Success
+
+
+ Success
+ #5ac725
+
+
+ Dark
+ #53c21d
+
+
+ Disabled
+ #a9e08f
+
+
+ Light
+ #f5fff0
+
+
+
+
+ 文字颜色
+
+
+ 主要文字
+ #303133
+
+
+ 常规文字
+ #606266
+
+
+ 次要文字
+ #909399
+
+
+ 占位文字
+ #c0c4cc
+
+
+
+
+ 边框颜色
+
+
+ 一级边框
+ #9a9998
+
+
+ 二级边框
+ #b4b3b1
+
+
+ 三级边框
+ #ceccca
+
+
+ 四级边框
+ #e7e6e4
+
+
+
+
+ 背景颜色
+
+
+ 背景颜色
+ #f3f4f6
+
+
+
+
+
+
+
diff --git a/pages/componentsB/countDown/countDown.nvue b/pages/componentsB/countDown/countDown.nvue
new file mode 100644
index 0000000..3bbf6c2
--- /dev/null
+++ b/pages/componentsB/countDown/countDown.nvue
@@ -0,0 +1,240 @@
+
+
+
+ 基础用法
+
+
+
+
+
+
+ 自定义格式
+
+
+
+ {{ timeData.days }} 天
+ {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}} 时
+ {{ timeData.minutes }} 分
+ {{ timeData.seconds }} 秒
+
+
+
+
+
+ 毫秒级渲染
+
+
+
+
+
+
+ 自定义样式
+
+
+
+
+ {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}}
+
+ :
+
+ {{ timeData.minutes }}
+
+ :
+
+ {{ timeData.seconds }}
+
+
+
+
+
+
+ 手动控制
+
+
+
+
+
+
+
+
+ 重置
+
+
+
+
+
+
+
+ 开始
+
+
+
+
+
+ 暂停
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/countTo/countTo.nvue b/pages/componentsB/countTo/countTo.nvue
new file mode 100644
index 0000000..e289bc9
--- /dev/null
+++ b/pages/componentsB/countTo/countTo.nvue
@@ -0,0 +1,176 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+ 倒计数
+
+
+
+
+
+
+
+ 显示小数位
+
+
+
+
+
+
+
+ 千分位分隔符
+
+
+
+
+
+
+
+ 自定义控制
+
+
+
+
+
+
+
+
+
+
+
+ 开始
+
+
+
+
+
+
+ 暂停
+
+
+
+
+
+
+ 继续
+
+
+
+
+
+
+
+
+ 自定义
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/dropdown/dropdown.nvue b/pages/componentsB/dropdown/dropdown.nvue
new file mode 100644
index 0000000..d0fbecf
--- /dev/null
+++ b/pages/componentsB/dropdown/dropdown.nvue
@@ -0,0 +1,31 @@
+
+
+
+ 基础功能
+
+
+
+
+ 123
+
+
+
+ 456
+
+
+ 789
+
+
+ abc
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/keyboard/keyboard.nvue b/pages/componentsB/keyboard/keyboard.nvue
new file mode 100644
index 0000000..7e3bb3f
--- /dev/null
+++ b/pages/componentsB/keyboard/keyboard.nvue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/noticeBar/noticeBar.nvue b/pages/componentsB/noticeBar/noticeBar.nvue
new file mode 100644
index 0000000..be9503c
--- /dev/null
+++ b/pages/componentsB/noticeBar/noticeBar.nvue
@@ -0,0 +1,102 @@
+
+
+
+ 基础功能
+
+
+
+
+
+ 可关闭
+
+
+
+
+
+ 自定义横向滚动速度
+
+
+
+
+
+ 可跳转(点击右箭头)
+
+
+
+
+
+ 横向步进滚动
+
+
+
+
+
+ 纵向滚动
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/notify/notify.nvue b/pages/componentsB/notify/notify.nvue
new file mode 100644
index 0000000..2dd7318
--- /dev/null
+++ b/pages/componentsB/notify/notify.nvue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/numberBox/numberBox.nvue b/pages/componentsB/numberBox/numberBox.nvue
new file mode 100644
index 0000000..aed2cf5
--- /dev/null
+++ b/pages/componentsB/numberBox/numberBox.nvue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{value11}}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/parse/content.js b/pages/componentsB/parse/content.js
new file mode 100644
index 0000000..e3898cf
--- /dev/null
+++ b/pages/componentsB/parse/content.js
@@ -0,0 +1,203 @@
+/**
+ * @fileoverview 用于测试的 html 内容
+ */
+module.exports = `富文本示例
+
+
+
+
+
+
+ | 标题 1 |
+ 标题 2 |
+
+
+
+
+ | 内容 1 |
+ 内容 2 |
+
+
+ | 内容 3 |
+ 链接 |
+
+
+ | 内容 5 |
+ 内容 6 |
+
+
+
+ 普通表格
+
+
+
+
+
+ | 标题 1 |
+ 标题 2 |
+ 标题 3 |
+ 标题 4 |
+ 标题 5 |
+
+
+
+
+ | 内容 1 |
+ 内容 2 |
+ 内容 3 |
+ 内容 4 |
+ 内容 5 |
+
+
+ | 链接 |
+ 内容 7 |
+ 内容 8 |
+ 内容 9 |
+ 内容 10 |
+
+
+ | 内容 11 |
+ 内容 12 |
+ 内容 13 |
+ 内容 14 |
+ 内容 15 |
+
+
+
+ 长表格,可以单独横向滚动
+
+
+
+
+
+ | 标题 1 |
+ 标题 2 |
+ 标题 3 |
+
+
+
+
+ | 内容 1 |
+ 内容 2 |
+
+
+ | 内容 3 |
+ 内容 4 |
+
+
+ | 内容 5 |
+
+
+ | 内容 6 |
+ 内容 7 |
+ 链接 |
+
+
+
+ 含有合并单元格的表格
+
+
+
+
+ - 这是第一条列表项
+ - 这是第二条列表项
+ - 这是第三条 链接
+
+
+ - 这是第一条列表项
+ - 这是第二条列表项
+ - 这是第三条 链接
+
+
+ - 这是第一条列表项
+ - 这是第二条列表项
+ - 这是第三条 链接
+
+
+ - 第一级无序列表
+ - 第一级无序列表
+
+ - 第二级无序列表
+ - 第二级无序列表
+
+
+
+
+
+
+
+
+
+
+ 拼
+ 音
+
+ 斜体
+ 粗体
+ 上标1
+ 下标2
+
+
+ 上划线
+ 中划线
+ 下划线
+
+
+ 大一号
+ 正常
+ 小一号
+
+ 大标题
+ 中标题
+ 小标题
+
+
+
+
+
+
+
+
+ 点击预览高清图
+
+
+
`
diff --git a/pages/componentsB/parse/jump.vue b/pages/componentsB/parse/jump.vue
new file mode 100644
index 0000000..4ff3e29
--- /dev/null
+++ b/pages/componentsB/parse/jump.vue
@@ -0,0 +1,12 @@
+
+
+ 跳转测试页面
+
+
+
+
+
+
diff --git a/pages/componentsB/parse/parse.nvue b/pages/componentsB/parse/parse.nvue
new file mode 100644
index 0000000..b7fd3f3
--- /dev/null
+++ b/pages/componentsB/parse/parse.nvue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/progress/progress.nvue b/pages/componentsB/progress/progress.nvue
new file mode 100644
index 0000000..b0c90db
--- /dev/null
+++ b/pages/componentsB/progress/progress.nvue
@@ -0,0 +1,155 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+ 不显示百分比
+
+
+
+
+
+
+ 自定义高度
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+ 自定义样式(不支持安卓环境的nvue)
+
+
+ {{percentage4}}%
+
+
+
+
+ 手动加减
+
+
+
+
+
+ 减少
+
+
+ 增加
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/search/search.nvue b/pages/componentsB/search/search.nvue
new file mode 100644
index 0000000..754a266
--- /dev/null
+++ b/pages/componentsB/search/search.nvue
@@ -0,0 +1,202 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+ 设置初始值
+
+
+
+
+
+
+
+ 搜索框形状
+
+
+
+
+
+
+
+
+
+
+
+
+ 右侧控件
+
+
+
+
+
+
+
+ 禁用输入框
+
+
+
+
+
+
+
+ 搜索框内容水平对齐
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/slider/slider.nvue b/pages/componentsB/slider/slider.nvue
new file mode 100644
index 0000000..65461d7
--- /dev/null
+++ b/pages/componentsB/slider/slider.nvue
@@ -0,0 +1,81 @@
+
+
+
+ 基本案例
+
+
+
+
+
+ 自定义范围(0—50)
+
+
+
+
+
+ 指定步长(每次步进5)
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/switch/switch.nvue b/pages/componentsB/switch/switch.nvue
new file mode 100644
index 0000000..7feb9b9
--- /dev/null
+++ b/pages/componentsB/switch/switch.nvue
@@ -0,0 +1,177 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+
+
+ 加载中
+
+
+
+
+
+
+
+
+
+
+ 禁用状态
+
+
+
+
+
+
+
+
+
+
+ 自定义尺寸
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+
+
+
+
+ 异步控制
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/tabbar/tabbar.nvue b/pages/componentsB/tabbar/tabbar.nvue
new file mode 100644
index 0000000..5c8e536
--- /dev/null
+++ b/pages/componentsB/tabbar/tabbar.nvue
@@ -0,0 +1,274 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+ 显示徽标
+ value2 = name"
+ :fixed="false"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+ 匹配标签的名称
+ value3 = name"
+ :fixed="false"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+ 自定义图标/颜色
+ value4 = name"
+ :fixed="false"
+ :placeholder="false"
+ activeColor="#d81e06"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+
+
+
+ 拦截切换事件(点击第二个标签)
+
+
+
+
+
+
+
+
+
+ 去除上边框
+ value7 = name"
+ :fixed="false"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+ 固定在底部(固定在屏幕最下方)
+
+ value6 = name"
+ :fixed="true"
+ :placeholder="true"
+ :safeAreaInsetBottom="true"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/tag/tag.nvue b/pages/componentsB/tag/tag.nvue
new file mode 100644
index 0000000..a56cfb7
--- /dev/null
+++ b/pages/componentsB/tag/tag.nvue
@@ -0,0 +1,335 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+ 自定义主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 圆形标签
+
+
+
+
+
+
+
+
+
+
+
+
+ 镂空标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 镂空带背景色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义尺寸
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 可关闭标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 带图片和图标
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 单选标签
+
+
+
+
+
+
+
+
+ 多选标签
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/toast/toast.nvue b/pages/componentsB/toast/toast.nvue
new file mode 100644
index 0000000..409a02a
--- /dev/null
+++ b/pages/componentsB/toast/toast.nvue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/upload/upload.nvue b/pages/componentsB/upload/upload.nvue
new file mode 100644
index 0000000..0c50d1c
--- /dev/null
+++ b/pages/componentsB/upload/upload.nvue
@@ -0,0 +1,180 @@
+
+
+
+ 基础用法
+
+
+
+
+
+
+
+ 上传视频
+
+
+
+
+
+
+
+ 文件预览
+
+
+
+
+
+
+
+ 隐藏上传按钮
+
+
+
+
+
+
+
+ 限制上传数量
+
+
+
+
+
+
+
+ 自定义上传样式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/album/album.nvue b/pages/componentsC/album/album.nvue
new file mode 100644
index 0000000..3cc858b
--- /dev/null
+++ b/pages/componentsC/album/album.nvue
@@ -0,0 +1,218 @@
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 多图模式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图文对齐
+
+
+
+
+
+
+
+
+
+
+ albumWidth = width"
+ multipleSize="68"
+ >
+
+
+
+
+
+ 更改裁剪模式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 更改图片大小
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/avatar/avatar.nvue b/pages/componentsC/avatar/avatar.nvue
new file mode 100644
index 0000000..67edc8b
--- /dev/null
+++ b/pages/componentsC/avatar/avatar.nvue
@@ -0,0 +1,182 @@
+
+
+
+ 基础演示
+
+
+
+
+
+ 头像形状
+
+
+
+
+
+
+
+
+
+
+ 头像尺寸
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图标头像
+
+
+
+
+
+
+
+
+
+
+ 文字头像(自动背景色)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图片加载失败(显示默认头像)
+
+
+
+
+
+
+ 小程序开放能力
+
+
+
+
+
+
+
+
+ 头像组
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/calendar/calendar.nvue b/pages/componentsC/calendar/calendar.nvue
new file mode 100644
index 0000000..d82682d
--- /dev/null
+++ b/pages/componentsC/calendar/calendar.nvue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/codeInput/codeInput.nvue b/pages/componentsC/codeInput/codeInput.nvue
new file mode 100644
index 0000000..cdb0b8f
--- /dev/null
+++ b/pages/componentsC/codeInput/codeInput.nvue
@@ -0,0 +1,153 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 横线模式
+
+
+
+
+
+ 设置长度
+
+
+
+
+
+ 设置间距
+
+
+
+
+
+ 细边框
+
+
+
+
+
+
+
+
+ 调整颜色
+
+
+
+
+
+
+
+
+
+ 点模式
+
+
+
+
+
+ 预置内容
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/datetimePicker/datetimePicker.nvue b/pages/componentsC/datetimePicker/datetimePicker.nvue
new file mode 100644
index 0000000..54c69b6
--- /dev/null
+++ b/pages/componentsC/datetimePicker/datetimePicker.nvue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/form/form.nvue b/pages/componentsC/form/form.nvue
new file mode 100644
index 0000000..4145af7
--- /dev/null
+++ b/pages/componentsC/form/form.nvue
@@ -0,0 +1,425 @@
+
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/indexList/indexList.nvue b/pages/componentsC/indexList/indexList.nvue
new file mode 100644
index 0000000..c29f2bc
--- /dev/null
+++ b/pages/componentsC/indexList/indexList.nvue
@@ -0,0 +1,126 @@
+
+
+
+
+
+ 新的朋友
+
+
+
+
+ 标签
+
+
+
+
+ 朋友圈
+
+
+
+
+ QQ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item1.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/input/input.nvue b/pages/componentsC/input/input.nvue
new file mode 100644
index 0000000..47578cf
--- /dev/null
+++ b/pages/componentsC/input/input.nvue
@@ -0,0 +1,180 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 可清空内容
+
+
+
+
+
+ 显示下划线
+
+
+
+
+
+ 禁用状态
+
+
+
+
+
+ 圆形
+
+
+
+
+
+ 前后图标
+
+
+
+
+
+
+
+
+ 前后插槽
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/layout/layout.nvue b/pages/componentsC/layout/layout.nvue
new file mode 100644
index 0000000..665b760
--- /dev/null
+++ b/pages/componentsC/layout/layout.nvue
@@ -0,0 +1,156 @@
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分栏间隔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 混合布局
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分栏偏移
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 对齐方式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/list/list.nvue b/pages/componentsC/list/list.nvue
new file mode 100644
index 0000000..c2791a5
--- /dev/null
+++ b/pages/componentsC/list/list.nvue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/loadmore/loadmore.nvue b/pages/componentsC/loadmore/loadmore.nvue
new file mode 100644
index 0000000..0956d41
--- /dev/null
+++ b/pages/componentsC/loadmore/loadmore.nvue
@@ -0,0 +1,82 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 无更多数据
+
+
+
+
+
+ 加载更多(点击触发事件)
+
+
+
+
+
+ 自定义图标
+
+
+
+
+
+ 显示点
+
+
+
+
+
+ 自定义提示语
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/modal/modal.nvue b/pages/componentsC/modal/modal.nvue
new file mode 100644
index 0000000..967cc12
--- /dev/null
+++ b/pages/componentsC/modal/modal.nvue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+ show1 = false"
+ >
+ show2 = false"
+ >
+
+ show4 = false"
+ >
+ show5 = false"
+ @cancel="() => show5 = false"
+ >
+ show6 = false"
+ @close="() => show6 = false"
+ >
+ show7 = false"
+ >
+
+
+
+
+
+ show9 = false"
+ >
+
+
+
+
+
+
diff --git a/pages/componentsC/navbar/navbar.nvue b/pages/componentsC/navbar/navbar.nvue
new file mode 100644
index 0000000..cf282b5
--- /dev/null
+++ b/pages/componentsC/navbar/navbar.nvue
@@ -0,0 +1,121 @@
+
+
+
+
+
+ 基础功能
+
+
+
+
+ 自定义文本
+
+
+
+
+ 自定义插槽
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/noNetwork/noNetwork.nvue b/pages/componentsC/noNetwork/noNetwork.nvue
new file mode 100644
index 0000000..c32536f
--- /dev/null
+++ b/pages/componentsC/noNetwork/noNetwork.nvue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+ 网络正常
+ 请您断开设备的WiFi和数据连接(或开启飞行模式),即可看到效果
+
+
+
+
+
+
+
diff --git a/pages/componentsC/picker/picker.nvue b/pages/componentsC/picker/picker.nvue
new file mode 100644
index 0000000..d814c39
--- /dev/null
+++ b/pages/componentsC/picker/picker.nvue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/readMore/readMore.nvue b/pages/componentsC/readMore/readMore.nvue
new file mode 100644
index 0000000..e9a53c8
--- /dev/null
+++ b/pages/componentsC/readMore/readMore.nvue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/scrollList/scrollList.nvue b/pages/componentsC/scrollList/scrollList.nvue
new file mode 100644
index 0000000..1146080
--- /dev/null
+++ b/pages/componentsC/scrollList/scrollList.nvue
@@ -0,0 +1,249 @@
+
+
+
+ 基础使用
+
+
+
+
+ ¥{{ item.price }}
+
+
+ 查看更多
+
+
+
+
+
+
+ 多菜单扩展
+
+
+
+
+
+ {{ item1.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/skeleton/skeleton.nvue b/pages/componentsC/skeleton/skeleton.nvue
new file mode 100644
index 0000000..6e01809
--- /dev/null
+++ b/pages/componentsC/skeleton/skeleton.nvue
@@ -0,0 +1,157 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 自定义段落行数
+
+
+
+
+
+ 设置段落宽度
+
+
+
+
+
+ 设置段落高度
+
+
+
+
+
+ 是否开启动画
+
+
+
+
+
+
+
+ 展示头像
+
+
+
+
+
+
+ 切换状态
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/steps/steps.vue b/pages/componentsC/steps/steps.vue
new file mode 100644
index 0000000..35452ee
--- /dev/null
+++ b/pages/componentsC/steps/steps.vue
@@ -0,0 +1,216 @@
+
+
+
+ 基础演示
+
+
+
+
+
+
+
+
+
+
+
+
+ 显示点类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 错误状态
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义图标
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义插槽
+
+
+
+
+
+
+
+ 运
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+
+
+
+
+
+ 竖向展示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/subsection/subsection.nvue b/pages/componentsC/subsection/subsection.nvue
new file mode 100644
index 0000000..4204cd5
--- /dev/null
+++ b/pages/componentsC/subsection/subsection.nvue
@@ -0,0 +1,99 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 按钮模式
+
+
+
+
+
+ 更换主题
+
+
+
+
+
+ 默认位置
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/swiper/swiper.nvue b/pages/componentsC/swiper/swiper.nvue
new file mode 100644
index 0000000..8bb931d
--- /dev/null
+++ b/pages/componentsC/swiper/swiper.nvue
@@ -0,0 +1,213 @@
+
+
+
+ 基础功能
+
+
+
+ 带标题
+
+
+
+ 带指示器
+
+
+
+ 加载中
+
+
+
+ 嵌入视频
+
+
+
+ 自定义指示器
+ current = e.current"
+ :autoplay="false"
+ >
+
+
+
+
+
+
+ currentNum = e.current"
+ :autoplay="false"
+ indicatorStyle="right: 20px"
+ >
+
+ {{ currentNum + 1 }}/{{ list6.length }}
+
+
+
+
+
+ 卡片式
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/table/table.nvue b/pages/componentsC/table/table.nvue
new file mode 100644
index 0000000..84754d0
--- /dev/null
+++ b/pages/componentsC/table/table.nvue
@@ -0,0 +1,26 @@
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/tabs/tabs.nvue b/pages/componentsC/tabs/tabs.nvue
new file mode 100644
index 0000000..fbabcec
--- /dev/null
+++ b/pages/componentsC/tabs/tabs.nvue
@@ -0,0 +1,209 @@
+
+
+
+ 基础演示
+
+
+
+
+
+
+ 粘性布局
+
+
+
+
+
+
+
+ 显示徽标
+
+
+
+
+
+
+ 禁止滚动
+
+
+
+
+
+
+ 禁用菜单
+
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+ 右侧自定义插槽
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/text/text.nvue b/pages/componentsC/text/text.nvue
new file mode 100644
index 0000000..e5b41da
--- /dev/null
+++ b/pages/componentsC/text/text.nvue
@@ -0,0 +1,173 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+ 设置主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 拨打电话
+
+
+
+
+
+
+
+ 日期格式化
+
+
+
+
+
+
+
+ 姓名脱敏
+
+
+
+
+
+
+
+ 超链接
+
+
+
+
+
+
+
+ 显示金额
+
+
+
+
+
+
+
+ 前后图标
+
+
+
+
+
+
+
+
+
+
+ 超出隐藏
+
+
+
+
+
+ 小程序开放能力
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/textarea/textarea.nvue b/pages/componentsC/textarea/textarea.nvue
new file mode 100644
index 0000000..f158864
--- /dev/null
+++ b/pages/componentsC/textarea/textarea.nvue
@@ -0,0 +1,77 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 字数统计
+
+
+
+
+
+ 自动增高
+
+
+
+
+
+ 禁用状态
+
+
+
+
+
+ 下划线模式
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/tooltip/tooltip.vue b/pages/componentsC/tooltip/tooltip.vue
new file mode 100644
index 0000000..8487851
--- /dev/null
+++ b/pages/componentsC/tooltip/tooltip.vue
@@ -0,0 +1,86 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 下方显示
+
+
+
+
+
+ 扩展按钮
+
+
+
+
+
+ 自动调整位置
+
+
+
+
+
+ 高亮选中文本背景色
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/example/components.config.js b/pages/example/components.config.js
new file mode 100644
index 0000000..6a08bc8
--- /dev/null
+++ b/pages/example/components.config.js
@@ -0,0 +1,418 @@
+export default [{
+ groupName: '基础组件',
+ groupName_en: 'Basic components',
+ list: [{
+ path: '/pages/componentsB/color/color',
+ icon: 'color',
+ title: 'Color 色彩',
+ title_en: 'Color'
+ }, {
+ path: '/pages/componentsA/icon/icon',
+ icon: 'icon',
+ title: 'Icon 图标',
+ title_en: 'Icon'
+ }, {
+ path: '/pages/componentsA/image/image',
+ icon: 'image',
+ title: 'Image 图片',
+ title_en: 'Image'
+ }, {
+ path: '/pages/componentsA/button/button',
+ icon: 'button',
+ title: 'Button 按钮',
+ title_en: 'Button'
+ }, {
+ path: '/pages/componentsC/text/text',
+ icon: 'text',
+ title: 'Text 文本',
+ title_en: 'Text'
+ }, {
+ path: '/pages/componentsC/layout/layout',
+ icon: 'layout',
+ title: 'Layout 布局',
+ title_en: 'Layout'
+ }, {
+ path: '/pages/componentsA/cell/cell',
+ icon: 'cell',
+ title: 'Cell 单元格',
+ title_en: 'Cell'
+ }, {
+ path: '/pages/componentsB/badge/badge',
+ icon: 'badge',
+ title: 'Badge 徽标数',
+ title_en: 'Badge'
+ }, {
+ path: '/pages/componentsB/tag/tag',
+ icon: 'tag',
+ title: 'Tag 标签',
+ title_en: 'Tag'
+ }, {
+ path: '/pages/componentsA/loading-icon/loading-icon',
+ icon: 'loading',
+ title: 'Loading 加载动画',
+ title_en: 'loading Icon'
+ }, {
+ path: '/pages/componentsA/loading-page/loading-page',
+ icon: 'loading-page',
+ title: 'Loading page 加载页',
+ title_en: 'Loading Page'
+ }]
+},
+{
+ groupName: '表单组件',
+ groupName_en: 'Form components',
+ list: [{
+ path: '/pages/componentsC/form/form',
+ icon: 'form',
+ title: 'Form 表单',
+ title_en: 'Form'
+ }, {
+ path: '/pages/componentsC/calendar/calendar',
+ icon: 'calendar',
+ title: 'Calendar 日历',
+ title_en: 'Calendar'
+ }, {
+ path: '/pages/componentsB/keyboard/keyboard',
+ icon: 'keyboard',
+ title: 'Keyboard 键盘',
+ title_en: 'Keyboard'
+ }, {
+ path: '/pages/componentsC/picker/picker',
+ icon: 'picker',
+ title: 'Picker 选择器',
+ title_en: 'Picker'
+ }, {
+ path: '/pages/componentsC/datetimePicker/datetimePicker',
+ icon: 'datetimePicker',
+ title: 'DatetimePicker 时间选择器',
+ title_en: 'Picker'
+ }, {
+ path: '/pages/componentsA/rate/rate',
+ icon: 'rate',
+ title: 'Rate 评分',
+ title_en: 'Rate'
+ }, {
+ path: '/pages/componentsB/search/search',
+ icon: 'search',
+ title: 'Search 搜索',
+ title_en: 'Search'
+ }, {
+ path: '/pages/componentsB/numberBox/numberBox',
+ icon: 'numberBox',
+ title: 'NumberBox 步进器',
+ title_en: 'NumberBox'
+ }, {
+ path: '/pages/componentsB/upload/upload',
+ icon: 'upload',
+ title: 'Upload 上传',
+ title_en: 'Upload'
+ }, {
+ path: '/pages/componentsB/code/code',
+ icon: 'code',
+ title: 'Code 验证码倒计时',
+ title_en: 'VerificationCode'
+ }, {
+ path: '/pages/componentsC/input/input',
+ icon: 'field',
+ title: 'Input 输入框',
+ title_en: 'Input'
+ }, {
+ path: '/pages/componentsC/textarea/textarea',
+ icon: 'textarea',
+ title: 'Textarea 文本域',
+ title_en: 'Textarea'
+ }, {
+ path: '/pages/componentsA/checkbox/checkbox',
+ icon: 'checkbox',
+ title: 'Checkbox 复选框',
+ title_en: 'Checkbox'
+ }, {
+ path: '/pages/componentsA/radio/radio',
+ icon: 'radio',
+ title: 'Radio 单选框',
+ title_en: 'Radio'
+ }, {
+ path: '/pages/componentsB/switch/switch',
+ icon: 'switch',
+ title: 'Switch 开关选择器',
+ title_en: 'Switch'
+ }, {
+ path: '/pages/componentsB/slider/slider',
+ icon: 'slider',
+ title: 'Slider 滑动选择器',
+ title_en: 'Slider'
+ }, {
+ path: '/pages/componentsC/album/album',
+ icon: 'album',
+ title: 'Album 相册',
+ title_en: 'Album'
+ }]
+}, {
+ groupName: '数据组件',
+ groupName_en: 'Data components',
+ list: [{
+ path: '/pages/componentsC/list/list',
+ icon: 'list',
+ title: 'List 列表',
+ title_en: 'List'
+ }, {
+ path: '/pages/componentsB/progress/progress',
+ icon: 'progress',
+ title: 'Progress 进度条',
+ title_en: 'Progress'
+ },
+ // {
+ // path: '/pages/componentsC/table/table',
+ // icon: 'table',
+ // title: 'Table 表格(暂无)',
+ // title_en: 'Table',
+ // },
+ {
+ path: '/pages/componentsB/countDown/countDown',
+ icon: 'countDown',
+ title: 'CountDown 倒计时',
+ title_en: 'CountDown'
+ }, {
+ path: '/pages/componentsB/countTo/countTo',
+ icon: 'countTo',
+ title: 'CountTo 数字滚动',
+ title_en: 'CountTo'
+ }]
+}, {
+ groupName: '反馈组件',
+ groupName_en: 'Feedback components',
+ list: [{
+ path: '/pages/componentsC/tooltip/tooltip',
+ icon: 'tooltip',
+ title: 'Tooltip 长按提示',
+ title_en: 'ActionSheet'
+ }, {
+ path: '/pages/componentsB/actionSheet/actionSheet',
+ icon: 'actionSheet',
+ title: 'ActionSheet 上拉菜单',
+ title_en: 'ActionSheet'
+ }, {
+ path: '/pages/componentsB/alert/alert',
+ icon: 'alert',
+ title: 'Alert 警告提示',
+ title_en: 'Alert'
+ }, {
+ path: '/pages/componentsB/toast/toast',
+ icon: 'toast',
+ title: 'Toast 消息提示',
+ title_en: 'Toast'
+ }, {
+ path: '/pages/componentsB/noticeBar/noticeBar',
+ icon: 'noticeBar',
+ title: 'NoticeBar 滚动通知',
+ title_en: 'NoticeBar'
+ }, {
+ path: '/pages/componentsB/notify/notify',
+ icon: 'notify',
+ title: 'Notify 消息提示',
+ title_en: 'Notify'
+ }, {
+ path: '/pages/componentsA/swipeAction/swipeAction',
+ icon: 'swipeAction',
+ title: 'SwipeAction 滑动单元格',
+ title_en: 'SwipeAction'
+ }, {
+ path: '/pages/componentsB/collapse/collapse',
+ icon: 'collapse',
+ title: 'Collapse 折叠面板',
+ title_en: 'Collapse'
+ }, {
+ path: '/pages/componentsA/popup/popup',
+ icon: 'popup',
+ title: 'Popup 弹出层',
+ title_en: 'Popup'
+ }, {
+ path: '/pages/componentsC/modal/modal',
+ icon: 'modal',
+ title: 'Modal 模态框',
+ title_en: 'Modal'
+ }
+ // {
+ // path: '/pages/componentsA/fullScreen/fullScreen',
+ // icon: 'pressingScreen',
+ // title: 'fullScreen 压窗屏(暂无)',
+ // title_en: 'fullScreen',
+ // },
+ ]
+}, {
+ groupName: '布局组件',
+ groupName_en: 'Layout components',
+ list: [{
+ path: '/pages/componentsC/scrollList/scrollList',
+ icon: 'scrollList',
+ title: 'ScrollList 横向滚动列表',
+ title_en: 'ScrollList'
+ }, {
+ path: '/pages/componentsA/line/line',
+ icon: 'line',
+ title: 'Line 线条',
+ title_en: 'Line'
+ }, {
+ path: '/pages/componentsA/overlay/overlay',
+ icon: 'mask',
+ title: 'Overlay 遮罩层',
+ title_en: 'Overlay'
+ },
+ // #ifndef MP-TOUTIAO
+ {
+ path: '/pages/componentsC/noNetwork/noNetwork',
+ icon: 'noNetwork',
+ title: 'NoNetwork 无网络提示',
+ title_en: 'NoNetwork'
+ },
+ // #endif
+ {
+ path: '/pages/componentsA/grid/grid',
+ icon: 'grid',
+ title: 'Grid 宫格布局',
+ title_en: 'Grid'
+ }, {
+ path: '/pages/componentsC/swiper/swiper',
+ icon: 'swiper',
+ title: 'Swiper 轮播图',
+ title_en: 'Swiper'
+ }, {
+ path: '/pages/componentsC/skeleton/skeleton',
+ icon: 'skeleton',
+ title: 'Skeleton 骨架屏',
+ title_en: 'Skeleton'
+ }, {
+ path: '/pages/componentsA/sticky/sticky',
+ icon: 'sticky',
+ title: 'Sticky 吸顶',
+ title_en: 'Sticky'
+ },
+ {
+ path: '/pages/componentsA/divider/divider',
+ icon: 'divider',
+ title: 'Divider 分割线',
+ title_en: 'Divider'
+ }
+ ]
+},
+{
+ groupName: '导航组件',
+ groupName_en: 'Navigation components',
+ list: [
+ // {
+ // path: '/pages/componentsB/dropdown/dropdown',
+ // icon: 'dropdown',
+ // title: 'Dropdown 下拉菜单',
+ // title_en: 'Dropdown',
+ // },
+ {
+ path: '/pages/componentsB/tabbar/tabbar',
+ icon: 'tabbar',
+ title: 'Tabbar 底部导航栏',
+ title_en: 'Tabbar'
+ }, {
+ path: '/pages/componentsA/backtop/backtop',
+ icon: 'backTop',
+ title: 'BackTop 返回顶部',
+ title_en: 'BackTop'
+ }, {
+ path: '/pages/componentsC/navbar/navbar',
+ icon: 'navbar',
+ title: 'Navbar 导航栏',
+ title_en: 'Navbar'
+ }, {
+ path: '/pages/componentsC/tabs/tabs',
+ icon: 'tabs',
+ title: 'Tabs 标签',
+ title_en: 'Tabs'
+ },
+ // // #ifndef MP-ALIPAY
+ // {
+ // path: '/pages/template/order/order',
+ // icon: 'tabsSwiper',
+ // title: 'TabsSwiper 全屏选项卡(暂无)',
+ // title_en: 'TabsSwiper',
+ // },
+ // // #endif
+ {
+ path: '/pages/componentsC/subsection/subsection',
+ icon: 'subsection',
+ title: 'Subsection 分段器',
+ title_en: 'Subsection'
+ }, {
+ path: '/pages/componentsC/indexList/indexList',
+ icon: 'indexList',
+ title: 'IndexList 索引列表',
+ title_en: 'IndexList'
+ }, {
+ path: '/pages/componentsC/steps/steps',
+ icon: 'steps',
+ title: 'Steps 步骤条',
+ title_en: 'Steps'
+ }, {
+ path: '/pages/componentsA/empty/empty',
+ icon: 'empty',
+ title: 'Empty 内容为空',
+ title_en: 'Empty'
+ }
+ ]
+}, {
+ groupName: '其他组件',
+ groupName_en: 'Other components',
+ list: [{
+ path: '/pages/componentsB/parse/parse',
+ icon: 'parse',
+ title: 'Parse 富文本解析器',
+ title_en: 'Parse'
+ }, {
+ path: '/pages/componentsC/codeInput/codeInput',
+ icon: 'messageInput',
+ title: 'CodeInput 验证码输入',
+ title_en: 'CodeInput'
+ },
+ // {
+ // path: '/pages/componentsC/avatarCropper/avatarCropper',
+ // icon: 'avatarCropper',
+ // title: 'AvatarCropper 头像裁剪(暂无)',
+ // title_en: 'AvatarCropper',
+ // },
+ {
+ path: '/pages/componentsC/loadmore/loadmore',
+ icon: 'loadmore',
+ title: 'Loadmore 加载更多',
+ title_en: 'Loadmore'
+ }, {
+ path: '/pages/componentsC/readMore/readMore',
+ icon: 'readMore',
+ title: 'ReadMore 展开阅读更多',
+ title_en: 'ReadMore'
+ },
+ // {
+ // path: '/pages/componentsA/lazyLoad/lazyLoad',
+ // icon: 'lazyLoad',
+ // title: 'LazyLoad 懒加载(暂无)',
+ // title_en: 'LazyLoad',
+ // },
+ {
+ path: '/pages/componentsA/gap/gap',
+ icon: 'gap',
+ title: 'Gap 间隔槽',
+ title_en: 'Gap'
+ }, {
+ path: '/pages/componentsC/avatar/avatar',
+ icon: 'avatar',
+ title: 'Avatar 头像',
+ title_en: 'Avatar'
+ }, {
+ path: '/pages/componentsA/link/link',
+ icon: 'link',
+ title: 'Link 超链接',
+ title_en: 'Link'
+ }, {
+ path: '/pages/componentsA/transition/transition',
+ icon: 'transition',
+ title: 'transition 动画',
+ title_en: '动画'
+ }]
+}
+]
diff --git a/pages/example/components.nvue b/pages/example/components.nvue
new file mode 100644
index 0000000..92243bc
--- /dev/null
+++ b/pages/example/components.nvue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/detail/detail.vue b/pages/index/detail/detail.vue
new file mode 100644
index 0000000..7025348
--- /dev/null
+++ b/pages/index/detail/detail.vue
@@ -0,0 +1,22 @@
+
+
+
+ 这是选项卡页面跳转详情页面的演示,下面是页面跳转时传递过来的标题:
+ {{title}}
+
+
+
+
+
diff --git a/pages/index/index - 副本.vue b/pages/index/index - 副本.vue
new file mode 100644
index 0000000..78855b4
--- /dev/null
+++ b/pages/index/index - 副本.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+ {{tab.name}}
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..e157a3c
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/news-item.nvue b/pages/index/news-item.nvue
new file mode 100644
index 0000000..5102b51
--- /dev/null
+++ b/pages/index/news-item.nvue
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+ {{options.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/tabControl-tag.vue b/pages/index/tabControl-tag.vue
new file mode 100644
index 0000000..01dc57c
--- /dev/null
+++ b/pages/index/tabControl-tag.vue
@@ -0,0 +1,224 @@
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
diff --git a/static/app-plus/mp-html/js/handler.js b/static/app-plus/mp-html/js/handler.js
new file mode 100644
index 0000000..9283832
--- /dev/null
+++ b/static/app-plus/mp-html/js/handler.js
@@ -0,0 +1,224 @@
+'use strict'
+
+// 等待初始化完毕
+document.addEventListener('UniAppJSBridgeReady', () => {
+ document.body.onclick = function () {
+ return uni.postMessage({
+ data: {
+ action: 'onClick'
+ }
+ })
+ }
+
+ uni.postMessage({
+ data: {
+ action: 'onJSBridgeReady'
+ }
+ })
+})
+let options
+let medias = []
+/**
+ * @description 获取标签的所有属性
+ * @param {Element} ele
+ */
+
+function getAttrs(ele) {
+ const attrs = Object.create(null)
+
+ for (let i = ele.attributes.length; i--;) {
+ attrs[ele.attributes[i].name] = ele.attributes[i].value
+ }
+
+ return attrs
+}
+/**
+ * @description 图片加载出错
+ */
+
+function onImgError() {
+ if (options[1]) {
+ this.src = options[1]
+ this.onerror = null
+ } // 取消监听点击
+
+ this.onclick = null
+ this.ontouchstart = null
+ uni.postMessage({
+ data: {
+ action: 'onError',
+ source: 'img',
+ attrs: getAttrs(this)
+ }
+ })
+}
+/**
+ * @description 创建 dom 结构
+ * @param {object[]} nodes 节点数组
+ * @param {Element} parent 父节点
+ * @param {string} namespace 命名空间
+ */
+
+function createDom(nodes, parent, namespace) {
+ const _loop = function _loop(i) {
+ const node = nodes[i]
+ let ele = void 0
+
+ if (!node.type || node.type == 'node') {
+ let { name } = node // svg 需要设置 namespace
+
+ if (name == 'svg') namespace = 'http://www.w3.org/2000/svg'
+ if (name == 'html' || name == 'body') name = 'div' // 创建标签
+
+ if (!namespace) ele = document.createElement(name); else ele = document.createElementNS(namespace, name) // 设置属性
+
+ for (const item in node.attrs) {
+ ele.setAttribute(item, node.attrs[item])
+ } // 递归创建子节点
+
+ if (node.children) createDom(node.children, ele, namespace) // 处理图片
+
+ if (name == 'img') {
+ if (!ele.src && ele.getAttribute('data-src')) ele.src = ele.getAttribute('data-src')
+
+ if (!node.attrs.ignore) {
+ // 监听图片点击事件
+ ele.onclick = function (e) {
+ e.stopPropagation()
+ uni.postMessage({
+ data: {
+ action: 'onImgTap',
+ attrs: getAttrs(this)
+ }
+ })
+ }
+ }
+
+ if (options[2]) {
+ image = new Image()
+ image.src = ele.src
+ ele.src = options[2]
+
+ image.onload = function () {
+ ele.src = this.src
+ }
+
+ image.onerror = function () {
+ ele.onerror()
+ }
+ }
+
+ ele.onerror = onImgError
+ } // 处理链接
+ else if (name == 'a') {
+ ele.addEventListener('click', function (e) {
+ e.stopPropagation()
+ e.preventDefault() // 阻止默认跳转
+
+ const href = this.getAttribute('href')
+ let offset
+ if (href && href[0] == '#') offset = (document.getElementById(href.substr(1)) || {}).offsetTop
+ uni.postMessage({
+ data: {
+ action: 'onLinkTap',
+ attrs: getAttrs(this),
+ offset
+ }
+ })
+ }, true)
+ } // 处理音视频
+ else if (name == 'video' || name == 'audio') {
+ medias.push(ele)
+
+ if (!node.attrs.autoplay) {
+ if (!node.attrs.controls) ele.setAttribute('controls', 'true') // 空白图占位
+
+ if (!node.attrs.poster) ele.setAttribute('poster', "data:image/svg+xml;utf8,")
+ }
+
+ if (options[3]) {
+ ele.onplay = function () {
+ for (let _i = 0; _i < medias.length; _i++) {
+ if (medias[_i] != this) medias[_i].pause()
+ }
+ }
+ }
+
+ ele.onerror = function () {
+ uni.postMessage({
+ data: {
+ action: 'onError',
+ source: name,
+ attrs: getAttrs(this)
+ }
+ })
+ }
+ } // 处理表格
+ else if (name == 'table' && options[4] && !ele.style.cssText.includes('inline')) {
+ const div = document.createElement('div')
+ div.style.overflow = 'auto'
+ div.appendChild(ele)
+ ele = div
+ } else if (name == 'svg') namespace = void 0
+ } else ele = document.createTextNode(node.text.replace(/&/g, '&'))
+
+ parent.appendChild(ele)
+ }
+
+ for (let i = 0; i < nodes.length; i++) {
+ var image
+
+ _loop(i)
+ }
+} // 设置 html 内容
+
+window.setContent = function (nodes, opts, append) {
+ const ele = document.getElementById('content') // 背景颜色
+
+ if (opts[0]) document.body.bgColor = opts[0] // 长按复制
+
+ if (!opts[5]) ele.style.userSelect = 'none'
+
+ if (!append) {
+ ele.innerHTML = '' // 不追加则先清空
+
+ medias = []
+ }
+
+ options = opts
+ const fragment = document.createDocumentFragment()
+ createDom(nodes, fragment)
+ ele.appendChild(fragment) // 触发事件
+
+ let height = ele.scrollHeight
+ uni.postMessage({
+ data: {
+ action: 'onLoad',
+ height
+ }
+ })
+ clearInterval(window.timer)
+ let ready = false
+ window.timer = setInterval(() => {
+ if (ele.scrollHeight != height) {
+ height = ele.scrollHeight
+ uni.postMessage({
+ data: {
+ action: 'onHeightChange',
+ height
+ }
+ })
+ } else if (!ready) {
+ ready = true
+ uni.postMessage({
+ data: {
+ action: 'onReady'
+ }
+ })
+ }
+ }, 350)
+} // 回收计时器
+
+window.onunload = function () {
+ clearInterval(window.timer)
+}
diff --git a/static/app-plus/mp-html/js/uni.webview.min.js b/static/app-plus/mp-html/js/uni.webview.min.js
new file mode 100644
index 0000000..518332d
--- /dev/null
+++ b/static/app-plus/mp-html/js/uni.webview.min.js
@@ -0,0 +1,19 @@
+!(function (e, n) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = n() : typeof define === 'function' && define.amd ? define(n) : (e = e || self).uni = n() }(this, (() => {
+ 'use strict'
+
+ try { const e = {}; Object.defineProperty(e, 'passive', { get() { !0 } }), window.addEventListener('test-passive', null, e) } catch (e) {} const n = Object.prototype.hasOwnProperty; function t(e, t) { return n.call(e, t) } const i = []; const a = function (e, n) { const t = { options: { timestamp: +new Date() }, name: e, arg: n }; if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) { if (e === 'postMessage') { const a = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(a) : window.__dcloud_weex_.postMessage(JSON.stringify(a)) } const o = { type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window.__dcloud_weex_.postMessageToService(JSON.stringify(o)) } if (!window.plus) return window.parent.postMessage({ type: 'WEB_INVOKE_APPSERVICE', data: t, pageId: '' }, '*'); if (i.length === 0) { const r = plus.webview.currentWebview(); if (!r) throw new Error('plus.webview.currentWebview() is undefined'); const d = r.parent(); let s = ''; s = d ? d.id : r.id, i.push(s) } if (plus.webview.getWebviewById('__uniapp__service'))plus.webview.postMessageToUniNView({ type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }, '__uniapp__service'); else { const w = JSON.stringify(t); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat('WEB_INVOKE_APPSERVICE', '",').concat(w, ',').concat(JSON.stringify(i), ');')) } }; const o = {
+ navigateTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('navigateTo', { url: encodeURI(n) }) }, navigateBack() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.delta; a('navigateBack', { delta: parseInt(n) || 1 }) }, switchTab() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('switchTab', { url: encodeURI(n) }) }, reLaunch() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('reLaunch', { url: encodeURI(n) }) }, redirectTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('redirectTo', { url: encodeURI(n) }) }, getEnv(e) { window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; a('postMessage', e.data || {}) }
+ }; const r = /uni-app/i.test(navigator.userAgent); const d = /Html5Plus/i.test(navigator.userAgent); const s = /complete|loaded|interactive/; const w = window.my && navigator.userAgent.indexOf('AlipayClient') > -1; const u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); const c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); const v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const p = window.qa && /quickapp/i.test(navigator.userAgent); for (var l, _ = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 })) }, f = [function (e) { if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener('DOMContentLoaded', e) : window.plus && s.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener('plusready', e), o }, function (e) { if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('WeixinJSBridgeReady', e), window.wx.miniProgram }, function (e) { if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QQJSBridgeReady', e), window.qq.miniProgram }, function (e) {
+ if (w) {
+ document.addEventListener('DOMContentLoaded', e); const n = window.my; return {
+ navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv
+ }
+ }
+ }, function (e) { if (u) return document.addEventListener('DOMContentLoaded', e), window.swan.webView }, function (e) { if (g) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram }, function (e) {
+ if (p) {
+ window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QaJSBridgeReady', e); const n = window.qa; return {
+ navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv
+ }
+ }
+ }, function (e) { return document.addEventListener('DOMContentLoaded', e), o }], m = 0; m < f.length && !(l = f[m](_)); m++);l || (l = {}); const E = typeof uni !== 'undefined' ? uni : {}; if (!E.navigateTo) for (const b in l)t(l, b) && (E[b] = l[b]); return E.webView = l, E
+})))
diff --git a/static/app-plus/mp-html/local.html b/static/app-plus/mp-html/local.html
new file mode 100644
index 0000000..f78d703
--- /dev/null
+++ b/static/app-plus/mp-html/local.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/common/js/touch-emulator.js b/static/common/js/touch-emulator.js
new file mode 100644
index 0000000..b90c8ac
--- /dev/null
+++ b/static/common/js/touch-emulator.js
@@ -0,0 +1,363 @@
+(function (window, document, exportName, undefined) {
+ "use strict";
+
+ var isMultiTouch = false;
+ var multiTouchStartPos;
+ var eventTarget;
+ var touchElements = {};
+
+ // polyfills
+ if (!document.createTouch) {
+ document.createTouch = function (view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
+ // auto set
+ if (clientX == undefined || clientY == undefined) {
+ clientX = pageX - window.pageXOffset;
+ clientY = pageY - window.pageYOffset;
+ }
+
+ return new Touch(target, identifier, {
+ pageX: pageX,
+ pageY: pageY,
+ screenX: screenX,
+ screenY: screenY,
+ clientX: clientX,
+ clientY: clientY
+ });
+ };
+ }
+
+ if (!document.createTouchList) {
+ document.createTouchList = function () {
+ var touchList = new TouchList();
+ for (var i = 0; i < arguments.length; i++) {
+ touchList[i] = arguments[i];
+ }
+ touchList.length = arguments.length;
+ return touchList;
+ };
+ }
+
+ /**
+ * create an touch point
+ * @constructor
+ * @param target
+ * @param identifier
+ * @param pos
+ * @param deltaX
+ * @param deltaY
+ * @returns {Object} touchPoint
+ */
+ function Touch(target, identifier, pos, deltaX, deltaY) {
+ deltaX = deltaX || 0;
+ deltaY = deltaY || 0;
+
+ this.identifier = identifier;
+ this.target = target;
+ this.clientX = pos.clientX + deltaX;
+ this.clientY = pos.clientY + deltaY;
+ this.screenX = pos.screenX + deltaX;
+ this.screenY = pos.screenY + deltaY;
+ this.pageX = pos.pageX + deltaX;
+ this.pageY = pos.pageY + deltaY;
+ }
+
+ /**
+ * create empty touchlist with the methods
+ * @constructor
+ * @returns touchList
+ */
+ function TouchList() {
+ var touchList = [];
+
+ touchList.item = function (index) {
+ return this[index] || null;
+ };
+
+ // specified by Mozilla
+ touchList.identifiedTouch = function (id) {
+ return this[id + 1] || null;
+ };
+
+ return touchList;
+ }
+
+
+ /**
+ * Simple trick to fake touch event support
+ * this is enough for most libraries like Modernizr and Hammer
+ */
+ function fakeTouchSupport() {
+ var objs = [window, document.documentElement];
+ var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
+
+ for (var o = 0; o < objs.length; o++) {
+ for (var p = 0; p < props.length; p++) {
+ if (objs[o] && objs[o][props[p]] == undefined) {
+ objs[o][props[p]] = null;
+ }
+ }
+ }
+ }
+
+ /**
+ * we don't have to emulate on a touch device
+ * @returns {boolean}
+ */
+ function hasTouchSupport() {
+ return ("ontouchstart" in window) || // touch events
+ (window.Modernizr && window.Modernizr.touch) || // modernizr
+ (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
+ }
+
+ /**
+ * disable mouseevents on the page
+ * @param ev
+ */
+ function preventMouseEvents(ev) {
+ // 注释启用默认事件
+ // ev.preventDefault();
+ // ev.stopPropagation();
+ }
+
+ /**
+ * only trigger touches when the left mousebutton has been pressed
+ * @param touchType
+ * @returns {Function}
+ */
+ function onMouse(touchType) {
+ return function (ev) {
+ // prevent mouse events
+ preventMouseEvents(ev);
+
+ if (ev.which !== 1) {
+ return;
+ }
+
+ // The EventTarget on which the touch point started when it was first placed on the surface,
+ // even if the touch point has since moved outside the interactive area of that element.
+ // also, when the target doesnt exist anymore, we update it
+ if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
+ eventTarget = ev.target;
+ }
+
+ // shiftKey has been lost, so trigger a touchend
+ if (isMultiTouch && !ev.shiftKey) {
+ triggerTouch('touchend', ev);
+ isMultiTouch = false;
+ }
+
+ triggerTouch(touchType, ev);
+
+ // we're entering the multi-touch mode!
+ if (!isMultiTouch && ev.shiftKey) {
+ isMultiTouch = true;
+ multiTouchStartPos = {
+ pageX: ev.pageX,
+ pageY: ev.pageY,
+ clientX: ev.clientX,
+ clientY: ev.clientY,
+ screenX: ev.screenX,
+ screenY: ev.screenY
+ };
+ triggerTouch('touchstart', ev);
+ }
+
+ // reset
+ if (ev.type == 'mouseup') {
+ multiTouchStartPos = null;
+ isMultiTouch = false;
+ eventTarget = null;
+ }
+ }
+ }
+
+ /**
+ * trigger a touch event
+ * @param eventName
+ * @param mouseEv
+ */
+ function triggerTouch(eventName, mouseEv) {
+ var touchEvent = document.createEvent('Event');
+ touchEvent.initEvent(eventName, true, true);
+
+ touchEvent.altKey = mouseEv.altKey;
+ touchEvent.ctrlKey = mouseEv.ctrlKey;
+ touchEvent.metaKey = mouseEv.metaKey;
+ touchEvent.shiftKey = mouseEv.shiftKey;
+
+ touchEvent.touches = getActiveTouches(mouseEv, eventName);
+ touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
+ touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
+
+ eventTarget.dispatchEvent(touchEvent);
+ }
+
+ /**
+ * create a touchList based on the mouse event
+ * @param mouseEv
+ * @returns {TouchList}
+ */
+ function createTouchList(mouseEv) {
+ var touchList = new TouchList();
+
+ if (isMultiTouch) {
+ var f = TouchEmulator.multiTouchOffset;
+ var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
+ var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
+
+ touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX * -1) - f, (deltaY * -1) + f));
+ touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX + f, deltaY - f));
+ } else {
+ touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
+ }
+
+ return touchList;
+ }
+
+ /**
+ * receive all active touches
+ * @param mouseEv
+ * @returns {TouchList}
+ */
+ function getActiveTouches(mouseEv, eventName) {
+ // empty list
+ if (mouseEv.type == 'mouseup') {
+ return new TouchList();
+ }
+
+ var touchList = createTouchList(mouseEv);
+ if (isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
+ touchList.splice(1, 1);
+ }
+ return touchList;
+ }
+
+ /**
+ * receive a filtered set of touches with only the changed pointers
+ * @param mouseEv
+ * @param eventName
+ * @returns {TouchList}
+ */
+ function getChangedTouches(mouseEv, eventName) {
+ var touchList = createTouchList(mouseEv);
+
+ // we only want to return the added/removed item on multitouch
+ // which is the second pointer, so remove the first pointer from the touchList
+ //
+ // but when the mouseEv.type is mouseup, we want to send all touches because then
+ // no new input will be possible
+ if (isMultiTouch && mouseEv.type != 'mouseup' &&
+ (eventName == 'touchstart' || eventName == 'touchend')) {
+ touchList.splice(0, 1);
+ }
+
+ return touchList;
+ }
+
+ /**
+ * show the touchpoints on the screen
+ */
+ function showTouches(ev) {
+ var touch, i, el, styles;
+
+ // first all visible touches
+ for (i = 0; i < ev.touches.length; i++) {
+ touch = ev.touches[i];
+ el = touchElements[touch.identifier];
+ if (!el) {
+ el = touchElements[touch.identifier] = document.createElement("div");
+ document.body.appendChild(el);
+ }
+
+ styles = TouchEmulator.template(touch);
+ for (var prop in styles) {
+ el.style[prop] = styles[prop];
+ }
+ }
+
+ // remove all ended touches
+ if (ev.type == 'touchend' || ev.type == 'touchcancel') {
+ for (i = 0; i < ev.changedTouches.length; i++) {
+ touch = ev.changedTouches[i];
+ el = touchElements[touch.identifier];
+ if (el) {
+ el.parentNode.removeChild(el);
+ delete touchElements[touch.identifier];
+ }
+ }
+ }
+ }
+
+ /**
+ * TouchEmulator initializer
+ */
+ function TouchEmulator() {
+ if (hasTouchSupport()) {
+ return;
+ }
+
+ fakeTouchSupport();
+
+ window.addEventListener("mousedown", onMouse('touchstart'), true);
+ window.addEventListener("mousemove", onMouse('touchmove'), true);
+ window.addEventListener("mouseup", onMouse('touchend'), true);
+
+ window.addEventListener("mouseenter", preventMouseEvents, true);
+ window.addEventListener("mouseleave", preventMouseEvents, true);
+ window.addEventListener("mouseout", preventMouseEvents, true);
+ window.addEventListener("mouseover", preventMouseEvents, true);
+
+ // it uses itself!
+ window.addEventListener("touchstart", showTouches, true);
+ window.addEventListener("touchmove", showTouches, true);
+ window.addEventListener("touchend", showTouches, true);
+ window.addEventListener("touchcancel", showTouches, true);
+ }
+
+ // start distance when entering the multitouch mode
+ TouchEmulator.multiTouchOffset = 75;
+
+ /**
+ * css template for the touch rendering
+ * @param touch
+ * @returns object
+ */
+ TouchEmulator.template = function (touch) {
+ var size = 0;
+ var transform = 'translate(' + (touch.clientX - (size / 2)) + 'px, ' + (touch.clientY - (size / 2)) + 'px)';
+ return {
+ position: 'fixed',
+ left: 0,
+ top: 0,
+ background: '#fff',
+ border: 'solid 1px #999',
+ opacity: .6,
+ borderRadius: '100%',
+ height: size + 'px',
+ width: size + 'px',
+ padding: 0,
+ margin: 0,
+ display: 'block',
+ overflow: 'hidden',
+ pointerEvents: 'none',
+ webkitUserSelect: 'none',
+ mozUserSelect: 'none',
+ userSelect: 'none',
+ webkitTransform: transform,
+ mozTransform: transform,
+ transform: transform,
+ zIndex: 100
+ }
+ };
+
+ // export
+ if (typeof define == "function" && define.amd) {
+ define(function () {
+ return TouchEmulator;
+ });
+ } else if (typeof module != "undefined" && module.exports) {
+ module.exports = TouchEmulator;
+ } else {
+ window[exportName] = TouchEmulator;
+ }
+})(window, document, "TouchEmulator");
\ No newline at end of file
diff --git a/static/uview/common/favicon.ico b/static/uview/common/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..e0af36815787f184eea5e88e44602b9e47ab9994
GIT binary patch
literal 4286
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
CUq5XC
literal 0
HcmV?d00001
diff --git a/static/uview/common/gray-logo.png b/static/uview/common/gray-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..21a69949dcce4c4f89fa494083f0d00988487cb3
GIT binary patch
literal 10255
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
literal 0
HcmV?d00001
diff --git a/static/uview/example/component_select.png b/static/uview/example/component_select.png
new file mode 100644
index 0000000000000000000000000000000000000000..79efb5b52182da5a98d8677db5f646d4146ffdc7
GIT binary patch
literal 1005
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Tv8)E(|mmy
zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(<^uz(rC1}St4blLz^9`5Pl7*fIb
zHrl^i*ihuWcevm-b^C?|;jH|142}T-Hr0Y<-O()n=lo&$`rzv9FPm29^;d_9iTq)S
zV=3?Fs$=*b6qsUt{=1R&+mcykWjS%TW;EVa)A#&bw||dk+NAizI?Ofg;HvZ<(wtGx0&fQw^z-p1zauKuVng6$!9+YQP7I$!5W>R*3{cH8P)*q@v
zjAp)i^YG<*`%TZan%P$b_+N`ybF`ZMjUMwsAKPD-j@PnT@G?y=lwGIIIPb53VgiT6
z$61nh7be;yo?3Bk$JKnlX$;4l7M}fHE;?;vVC2{+qTR
zgY^O9>Z^jY*G3(8x8q?o`K9+;C_a<$e5DpI-B>aTAHvedY68g=s;4z4h#CDtl~CZ`z)!
zZxO%d`+mFBr%LWpzh-S;C%bi#ZrU3Wn;&{nEqVzpb2%>DPP>0E)N)f%^UMve?~2KM
zSm>Ja<4ysGak9C8Q%%xh2D=^6u0hQkq|UG$7dUV{RD4!}@RlmU&u9H+`0Vu?xjS-O3l2YDxFkmBY5SJ6P3$-B<-TOzxi8qiv+>A*O~wW_3pHe>2Bm%3
zCY4&(&M9$;&-2>@CmB
zm2DNAohI7Bt!8R2NUN=VUI36yagNypUfvYMx>pUXO@geCwx
CX`$Bu
literal 0
HcmV?d00001
diff --git a/static/uview/example/js.png b/static/uview/example/js.png
new file mode 100644
index 0000000000000000000000000000000000000000..beb0dc7b2cf53a3029c06844144a47f02b62d390
GIT binary patch
literal 1966
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
bp(XwU>{f7MvQ-`Q00000NkvXXu0mjf;X1>}
literal 0
HcmV?d00001
diff --git a/static/uview/example/template.png b/static/uview/example/template.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff895b86cea5bdba1003c988cbbc601f87bfe6eb
GIT binary patch
literal 1148
zcmV-?1cUpDP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@
z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAu9=1D|BRCodHTTN&aK@`rWiRmF8
z5^2RlF_@-FDfQ?@K`0(QR0KiLQ>r&Tc@t3tZ=Nb%N_$c770*)jEP_xf`5_@8g+jm-
z=^j$CiQg-!hTS*o#7wi<$qo#=`}Vyz@B7}%c4wy(2#k0$j_|kJZKF^qEa5tf^En)&
zNB1;2nucL)0n6IV%*-mz+l1?ofJ&uuW`BSG4S+9b0@e`*z;8q%kz0vGVkbzMA0_a_
z3?;gQ*)a0?{2d5Z94XWECMw}>2-vbBd{9^m27|B1$HzCPrluMqy~+
zTDOs45yq^M%jNa}!1llc_-pBO`t2}+>oq1+`65VIXY9McS$1%6aFL6jB>?5}
zbbEXI6ldT?8DSwzT)F@K^XZ8aC``Y
z+F$5j(dirEcXY>wCoiouorThQ^pvCWklYj!05G3Jp-?uNO#asgQv7+n0UygC6p;!tVndpIQBg-UD{R;qWZL|F9bLa$PJIFXOfP0|x%H3T?HI
z$Kxj_Cnrs-T=jLmUXL~!jXkSh(KFytzu;-0R4Vlehj-RNyRUb5ckfe%x@D@*$v=(5
z`DH6$Y;0@}!GGfndX?c-^a%oZ+^gN7^w|oSo}MnK3IM-0*16HbOCY?Y|EJsEQSClHIpmXC8L
zNLeEPG!BQ@0L(77Ejt;aZ6+|F
zZ~A?;YPA{znOB{h48vr|wkm_HW$_BT=oI+B?!iYG;9uhCxHLAX$q-hcUNAA6L1ch7
z6WSUAUk3@Rw7ezzOn?n-zC4G19kyR^ebeUHA{f+U2+LykEJM>Qackta%^97ny~lCE
z%8<_2$o>XarLWLWpiSFINuV>}Zfu0LgZb~Wb*B=Rpg2;Sr@M(6$@AalwV)Rjckm+s
O0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@
z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAu9_DMuRRCodHTRmu0K@gr<5)pDK
zj0CX?5hMnQV55bCD3*fSTxEXF(|`(Ab|MBLomE7O;N=pcO&Y~o{Hav52m}Q!0#>OM
zSFxE^zne<=x-QyZ7!bgyYTb?9TViyuI6*EI^w#Ea4|2OwGbIOOytJqX3jB
z^+n?o^MLTxAZD^-@DveAa1{v{pQnTC|L7SIor?xo4-|-R_IBcx>0w+k;`z1$FWj)B
z1+!qsu`FG;)=qnH7Rhd7%y>ufop*tU1~P`syh*@PCW*gYhP9+Py+A!S4?`C1Fj+`z
zMhbQu$=IB>;W0axXH)o6Qw*Doqx=#_`3tArm^T`D@qARk3uwV2n4APqf(dXo345nB
z+!8lTIsyF7ha0ZbdfCUEQUH~Jux)r6uu7R5CY69n47nUV*$
z=4ijB5Js6`5louxZUpq^HtF5S9G%dV!Xy(6f`tj_)$HbkNTHY=RXYJKcYfyt>Jn#)
zLzNNYbZ-x*{DwH|J3v6HqXlz^2D~KOQXC|L!ICUApGCJa0uO^-neotzOm|E`WL#M%
zkhYJ29XCO)oNY3(i^XpNfL~rD^JZxfu#b1(WBj#q*lT<%^t%$k#lz41m*$kRnoRUE
zel$Z#PPtF51-&Cr