From c7ccd6a193602b57dbfb05bf5cf4ef8c4b097d39 Mon Sep 17 00:00:00 2001 From: unknown <331404948@qq.com> Date: Fri, 25 Aug 2023 11:20:05 +0800 Subject: [PATCH] first commit --- .gitignore | 7 + App.vue | 20 + README.md | 0 common/css/app.scss | 139 ++ common/js/uniExport.js | 8 + common/js/utils.js | 96 ++ common/sdk/qqmap-wx-jssdk.js | 741 +++++++++++ common/sdk/qqmap-wx-jssdk.min.js | 3 + components/UserTab/UserTab - 副本.vue | 130 ++ components/UserTab/UserTab.vue | 117 ++ components/cancelReservation/cancelReservation.vue | 65 + components/commentItem/commentItem.vue | 59 + components/moreRight/moreRight.vue | 24 + components/pozCard/pozCard.vue | 59 + components/privacyPopup/privacyPopup.vue | 78 ++ components/privacyRadion/privacyRadion.vue | 35 + components/searchRow/searchRow.vue | 51 + components/topNavbar/topNavbar.vue | 27 + config/api.js | 10 + config/request.js | 52 + index.html | 20 + main.js | 35 + manifest.json | 100 ++ package.json | 15 + pages.json | 153 +++ pages/indexEntry/settlement/detail/detail.vue | 120 ++ pages/indexEntry/settlement/settlement.vue | 264 ++++ pages/other/webView/webView.vue | 27 + pages/tabbar/examSimulation/index.vue | 30 + pages/tabbar/mine/index.vue | 31 + pages/tabbar/operateTrain/index.vue | 31 + pages/tabbar/statistics/comp/stage.vue | 51 + pages/tabbar/statistics/index.vue | 205 +++ pages/userCenter/login/login.vue | 71 ++ pages/userCenter/login/loginByPhone.vue | 187 +++ project.config.json | 28 + project.private.config.json | 7 + site.config.js | 12 + static/images/bigImg/indexTopBanner.png | Bin 0 -> 403631 bytes static/images/bigImg/topPageBg.png | Bin 0 -> 5069 bytes static/images/index/ic_jiaxiao.png | Bin 0 -> 706 bytes static/images/index/ic_shuaxin.png | Bin 0 -> 754 bytes static/images/index/radio_cli.png | Bin 0 -> 1092 bytes static/images/index/radio_nor.png | Bin 0 -> 919 bytes static/images/index/searchIcon.png | Bin 0 -> 737 bytes static/images/index/searchIconHui.png | Bin 0 -> 1364 bytes static/images/logo.png | Bin 0 -> 10347 bytes static/images/tabbar/btn_xueche_cli.png | Bin 0 -> 1638 bytes static/images/tabbar/btn_xueche_nor.png | Bin 0 -> 1961 bytes static/images/tabbar/kc.png | Bin 0 -> 943 bytes static/images/tabbar/kcActive.png | Bin 0 -> 767 bytes static/images/tabbar/sc.png | Bin 0 -> 2786 bytes static/images/tabbar/scActive.png | Bin 0 -> 1736 bytes static/images/tabbar/sy.png | Bin 0 -> 1057 bytes static/images/tabbar/syActive.png | Bin 0 -> 861 bytes static/images/tabbar/tj.png | Bin 0 -> 1066 bytes static/images/tabbar/tjActive.png | Bin 0 -> 955 bytes static/images/tabbar/tk.png | Bin 0 -> 929 bytes static/images/tabbar/tkActive.png | Bin 0 -> 826 bytes static/images/tabbar/wd.png | Bin 0 -> 2106 bytes static/images/tabbar/wdActive.png | Bin 0 -> 1369 bytes static/images/tabbar/xy.png | Bin 0 -> 2234 bytes static/images/tabbar/xyActive.png | Bin 0 -> 1784 bytes static/images/tabbar/zx.png | Bin 0 -> 587 bytes static/images/tabbar/zxActive.png | Bin 0 -> 547 bytes static/images/userCenter/loginTopBg.png | Bin 0 -> 36319 bytes static/images/userCenter/title_1.png | Bin 0 -> 8982 bytes .../__MACOSX/登录流程切图/._.DS_Store | Bin 0 -> 120 bytes .../__MACOSX/登录流程切图/._btn_1.png | Bin 0 -> 233 bytes .../登录流程切图/.DS_Store | Bin 0 -> 6148 bytes .../登录流程切图/登录流程切图/bg_1.png | Bin 0 -> 36319 bytes .../登录流程切图/btn_1.png | Bin 0 -> 461 bytes .../登录流程切图/btn_2.png | Bin 0 -> 567 bytes .../登录流程切图/title_1.png | Bin 0 -> 8982 bytes static/logo.png | Bin 0 -> 4023 bytes store/getters.js | 21 + store/index.js | 90 ++ store/modules/add.js | 91 ++ store/modules/user.js | 31 + uni.promisify.adaptor.js | 10 + uni.scss | 80 ++ uni_modules/uni-config-center/changelog.md | 6 + uni_modules/uni-config-center/package.json | 81 ++ uni_modules/uni-config-center/readme.md | 93 ++ .../common/uni-config-center/index.js | 1 + .../common/uni-config-center/package.json | 9 + uni_modules/uni-open-bridge-common/changelog.md | 25 + uni_modules/uni-open-bridge-common/package.json | 84 ++ uni_modules/uni-open-bridge-common/readme.md | 5 + .../common/uni-open-bridge-common/bridge-error.js | 26 + .../common/uni-open-bridge-common/config.js | 124 ++ .../common/uni-open-bridge-common/consts.js | 30 + .../common/uni-open-bridge-common/index.js | 317 +++++ .../common/uni-open-bridge-common/package.json | 15 + .../common/uni-open-bridge-common/storage.js | 111 ++ .../uni-open-bridge-common/uni-cloud-cache.js | 324 +++++ .../common/uni-open-bridge-common/validator.js | 31 + .../common/uni-open-bridge-common/weixin-server.js | 203 +++ .../uniCloud/database/opendb-open-data.schema.json | 19 + uni_modules/uni-scss/changelog.md | 8 + uni_modules/uni-scss/index.scss | 1 + uni_modules/uni-scss/package.json | 82 ++ uni_modules/uni-scss/readme.md | 4 + uni_modules/uni-scss/styles/index.scss | 7 + uni_modules/uni-scss/styles/setting/_border.scss | 3 + uni_modules/uni-scss/styles/setting/_color.scss | 66 + uni_modules/uni-scss/styles/setting/_radius.scss | 55 + uni_modules/uni-scss/styles/setting/_space.scss | 56 + uni_modules/uni-scss/styles/setting/_styles.scss | 167 +++ uni_modules/uni-scss/styles/setting/_text.scss | 24 + .../uni-scss/styles/setting/_variables.scss | 146 +++ uni_modules/uni-scss/styles/tools/functions.scss | 19 + uni_modules/uni-scss/theme.scss | 31 + uni_modules/uni-scss/variables.scss | 62 + uni_modules/uni-swiper-dot/changelog.md | 12 + .../components/uni-swiper-dot/uni-swiper-dot.vue | 218 ++++ uni_modules/uni-swiper-dot/package.json | 87 ++ uni_modules/uni-swiper-dot/readme.md | 11 + uni_modules/uview-ui/LICENSE | 21 + uni_modules/uview-ui/README.md | 66 + uni_modules/uview-ui/changelog.md | 362 ++++++ .../uview-ui/components/u--form/u--form.vue | 78 ++ .../uview-ui/components/u--image/u--image.vue | 47 + .../uview-ui/components/u--input/u--input.vue | 73 ++ .../uview-ui/components/u--text/u--text.vue | 44 + .../components/u--textarea/u--textarea.vue | 48 + .../uview-ui/components/u-action-sheet/props.js | 54 + .../components/u-action-sheet/u-action-sheet.vue | 278 ++++ uni_modules/uview-ui/components/u-album/props.js | 59 + .../uview-ui/components/u-album/u-album.vue | 259 ++++ uni_modules/uview-ui/components/u-alert/props.js | 44 + .../uview-ui/components/u-alert/u-alert.vue | 243 ++++ .../uview-ui/components/u-avatar-group/props.js | 52 + .../components/u-avatar-group/u-avatar-group.vue | 103 ++ uni_modules/uview-ui/components/u-avatar/props.js | 78 ++ .../uview-ui/components/u-avatar/u-avatar.vue | 172 +++ .../uview-ui/components/u-back-top/props.js | 54 + .../uview-ui/components/u-back-top/u-back-top.vue | 129 ++ uni_modules/uview-ui/components/u-badge/props.js | 72 ++ .../uview-ui/components/u-badge/u-badge.vue | 171 +++ uni_modules/uview-ui/components/u-button/nvue.scss | 46 + uni_modules/uview-ui/components/u-button/props.js | 161 +++ .../uview-ui/components/u-button/u-button.vue | 490 +++++++ uni_modules/uview-ui/components/u-button/vue.scss | 80 ++ .../uview-ui/components/u-calendar/header.vue | 99 ++ .../uview-ui/components/u-calendar/month.vue | 579 +++++++++ .../uview-ui/components/u-calendar/props.js | 144 +++ .../uview-ui/components/u-calendar/u-calendar.vue | 384 ++++++ uni_modules/uview-ui/components/u-calendar/util.js | 85 ++ .../uview-ui/components/u-car-keyboard/props.js | 14 + .../components/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 + uni_modules/uview-ui/components/u-cell/props.js | 110 ++ uni_modules/uview-ui/components/u-cell/u-cell.vue | 229 ++++ .../uview-ui/components/u-checkbox-group/props.js | 82 ++ .../u-checkbox-group/u-checkbox-group.vue | 103 ++ .../uview-ui/components/u-checkbox/props.js | 69 + .../uview-ui/components/u-checkbox/u-checkbox.vue | 344 +++++ .../uview-ui/components/u-circle-progress/props.js | 8 + .../u-circle-progress/u-circle-progress.vue | 198 +++ .../uview-ui/components/u-code-input/props.js | 79 ++ .../components/u-code-input/u-code-input.vue | 252 ++++ uni_modules/uview-ui/components/u-code/props.js | 34 + uni_modules/uview-ui/components/u-code/u-code.vue | 129 ++ uni_modules/uview-ui/components/u-col/props.js | 29 + uni_modules/uview-ui/components/u-col/u-col.vue | 162 +++ .../uview-ui/components/u-collapse-item/props.js | 59 + .../components/u-collapse-item/u-collapse-item.vue | 225 ++++ .../uview-ui/components/u-collapse/props.js | 19 + .../uview-ui/components/u-collapse/u-collapse.vue | 90 ++ .../uview-ui/components/u-column-notice/props.js | 55 + .../components/u-column-notice/u-column-notice.vue | 160 +++ .../uview-ui/components/u-count-down/props.js | 24 + .../components/u-count-down/u-count-down.vue | 163 +++ .../uview-ui/components/u-count-down/utils.js | 62 + .../uview-ui/components/u-count-to/props.js | 59 + .../uview-ui/components/u-count-to/u-count-to.vue | 184 +++ .../components/u-datetime-picker-my/props.js | 116 ++ .../u-datetime-picker-my/u-datetime-picker-my.vue | 365 ++++++ .../uview-ui/components/u-datetime-picker/props.js | 116 ++ .../u-datetime-picker/u-datetime-picker.vue | 360 ++++++ uni_modules/uview-ui/components/u-divider/props.js | 44 + .../uview-ui/components/u-divider/u-divider.vue | 116 ++ .../uview-ui/components/u-dropdown-item/props.js | 36 + .../components/u-dropdown-item/u-dropdown-item.vue | 127 ++ .../uview-ui/components/u-dropdown/props.js | 65 + .../uview-ui/components/u-dropdown/u-dropdown.vue | 127 ++ uni_modules/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 | 48 + .../components/u-form-item/u-form-item.vue | 235 ++++ uni_modules/uview-ui/components/u-form/props.js | 45 + uni_modules/uview-ui/components/u-form/u-form.vue | 214 ++++ uni_modules/uview-ui/components/u-gap/props.js | 24 + uni_modules/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 | 209 +++ uni_modules/uview-ui/components/u-grid/props.js | 19 + uni_modules/uview-ui/components/u-grid/u-grid.vue | 97 ++ uni_modules/uview-ui/components/u-icon/icons.js | 214 ++++ uni_modules/uview-ui/components/u-icon/props.js | 89 ++ uni_modules/uview-ui/components/u-icon/u-icon.vue | 234 ++++ uni_modules/uview-ui/components/u-image/props.js | 84 ++ .../uview-ui/components/u-image/u-image.vue | 232 ++++ .../uview-ui/components/u-index-anchor/props.js | 29 + .../components/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 | 440 +++++++ uni_modules/uview-ui/components/u-input/props.js | 187 +++ .../uview-ui/components/u-input/u-input.vue | 354 ++++++ .../uview-ui/components/u-keyboard/props.js | 84 ++ .../uview-ui/components/u-keyboard/u-keyboard.vue | 164 +++ .../uview-ui/components/u-line-progress/props.js | 28 + .../components/u-line-progress/u-line-progress.vue | 144 +++ uni_modules/uview-ui/components/u-line/props.js | 33 + uni_modules/uview-ui/components/u-line/u-line.vue | 62 + uni_modules/uview-ui/components/u-link/props.js | 39 + uni_modules/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 ++ uni_modules/uview-ui/components/u-list/props.js | 76 ++ uni_modules/uview-ui/components/u-list/u-list.vue | 157 +++ .../uview-ui/components/u-loading-icon/props.js | 59 + .../components/u-loading-icon/u-loading-icon.vue | 343 +++++ .../uview-ui/components/u-loading-page/props.js | 49 + .../components/u-loading-page/u-loading-page.vue | 115 ++ .../uview-ui/components/u-loadmore/props.js | 94 ++ .../uview-ui/components/u-loadmore/u-loadmore.vue | 150 +++ uni_modules/uview-ui/components/u-modal/props.js | 84 ++ .../uview-ui/components/u-modal/u-modal.vue | 227 ++++ uni_modules/uview-ui/components/u-navbar/props.js | 84 ++ .../uview-ui/components/u-navbar/u-navbar.vue | 186 +++ .../uview-ui/components/u-no-network/props.js | 19 + .../components/u-no-network/u-no-network.vue | 220 ++++ .../uview-ui/components/u-notice-bar/props.js | 70 + .../components/u-notice-bar/u-notice-bar.vue | 101 ++ uni_modules/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 | 416 ++++++ .../uview-ui/components/u-number-keyboard/props.js | 19 + .../u-number-keyboard/u-number-keyboard.vue | 196 +++ uni_modules/uview-ui/components/u-overlay/props.js | 24 + .../uview-ui/components/u-overlay/u-overlay.vue | 68 + .../uview-ui/components/u-parse/node/node.vue | 499 ++++++++ uni_modules/uview-ui/components/u-parse/parser.js | 1075 ++++++++++++++++ uni_modules/uview-ui/components/u-parse/props.js | 45 + .../uview-ui/components/u-parse/u-parse.vue | 366 ++++++ .../uview-ui/components/u-picker-column/props.js | 5 + .../components/u-picker-column/u-picker-column.vue | 27 + .../uview-ui/components/u-picker-my/props.js | 79 ++ .../components/u-picker-my/u-picker-my.vue | 283 +++++ uni_modules/uview-ui/components/u-picker/props.js | 79 ++ .../uview-ui/components/u-picker/u-picker.vue | 283 +++++ uni_modules/uview-ui/components/u-popup/props.js | 79 ++ .../uview-ui/components/u-popup/u-popup.vue | 304 +++++ .../uview-ui/components/u-radio-group/props.js | 85 ++ .../components/u-radio-group/u-radio-group.vue | 108 ++ uni_modules/uview-ui/components/u-radio/props.js | 64 + .../uview-ui/components/u-radio/u-radio.vue | 339 +++++ uni_modules/uview-ui/components/u-rate/props.js | 69 + uni_modules/uview-ui/components/u-rate/u-rate.vue | 306 +++++ .../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 | 330 +++++ uni_modules/uview-ui/components/u-row/props.js | 19 + uni_modules/uview-ui/components/u-row/u-row.vue | 93 ++ .../uview-ui/components/u-safe-bottom/props.js | 5 + .../components/u-safe-bottom/u-safe-bottom.vue | 56 + .../uview-ui/components/u-scroll-list/nvue.js | 28 + .../uview-ui/components/u-scroll-list/other.js | 0 .../uview-ui/components/u-scroll-list/props.js | 34 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../components/u-scroll-list/u-scroll-list.vue | 224 ++++ uni_modules/uview-ui/components/u-search/props.js | 118 ++ .../uview-ui/components/u-search/u-search.vue | 303 +++++ .../uview-ui/components/u-skeleton/props.js | 59 + .../uview-ui/components/u-skeleton/u-skeleton.vue | 244 ++++ .../uview-ui/components/u-slider/mpother.js | 113 ++ uni_modules/uview-ui/components/u-slider/mpwxs.js | 42 + uni_modules/uview-ui/components/u-slider/mpwxs.wxs | 121 ++ .../uview-ui/components/u-slider/nvue - 副本.js | 180 +++ uni_modules/uview-ui/components/u-slider/nvue.js | 193 +++ uni_modules/uview-ui/components/u-slider/props.js | 54 + .../uview-ui/components/u-slider/u-slider.vue | 55 + .../uview-ui/components/u-status-bar/props.js | 8 + .../components/u-status-bar/u-status-bar.vue | 46 + .../uview-ui/components/u-steps-item/props.js | 24 + .../components/u-steps-item/u-steps-item.vue | 316 +++++ uni_modules/uview-ui/components/u-steps/props.js | 39 + .../uview-ui/components/u-steps/u-steps.vue | 80 ++ uni_modules/uview-ui/components/u-sticky/props.js | 40 + .../uview-ui/components/u-sticky/u-sticky.vue | 212 +++ .../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 | 174 +++ .../components/u-swipe-action-item/props.js | 41 + .../u-swipe-action-item/u-swipe-action-item.vue | 190 +++ .../uview-ui/components/u-swipe-action-item/wxs.js | 15 + .../uview-ui/components/u-swipe-action/props.js | 9 + .../components/u-swipe-action/u-swipe-action.vue | 67 + .../components/u-swiper-indicator/props.js | 29 + .../u-swiper-indicator/u-swiper-indicator.vue | 110 ++ uni_modules/uview-ui/components/u-swiper/props.js | 125 ++ .../uview-ui/components/u-swiper/u-swiper.vue | 255 ++++ uni_modules/uview-ui/components/u-switch/props.js | 54 + .../uview-ui/components/u-switch/u-switch.vue | 177 +++ .../uview-ui/components/u-tabbar-item/props.js | 35 + .../components/u-tabbar-item/u-tabbar-item.vue | 142 +++ uni_modules/uview-ui/components/u-tabbar/props.js | 44 + .../uview-ui/components/u-tabbar/u-tabbar.vue | 141 ++ uni_modules/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 + uni_modules/uview-ui/components/u-tabs/props.js | 64 + uni_modules/uview-ui/components/u-tabs/u-tabs.vue | 354 ++++++ uni_modules/uview-ui/components/u-tag/props.js | 84 ++ uni_modules/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 + uni_modules/uview-ui/components/u-text/props.js | 110 ++ uni_modules/uview-ui/components/u-text/u-text.vue | 223 ++++ uni_modules/uview-ui/components/u-text/value.js | 85 ++ .../uview-ui/components/u-textarea/props.js | 119 ++ .../uview-ui/components/u-textarea/u-textarea.vue | 239 ++++ .../uview-ui/components/u-toast/u-toast.vue | 291 +++++ uni_modules/uview-ui/components/u-toolbar/props.js | 34 + .../uview-ui/components/u-toolbar/u-toolbar.vue | 102 ++ .../uview-ui/components/u-tooltip/clipboard.min.js | 58 + uni_modules/uview-ui/components/u-tooltip/props.js | 59 + .../uview-ui/components/u-tooltip/u-tooltip.vue | 365 ++++++ 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 + .../uview-ui/components/u-transition/transition.js | 157 +++ .../components/u-transition/u-transition.vue | 92 ++ .../components/u-transition/vue.ani-style.scss | 113 ++ uni_modules/uview-ui/components/u-upload/mixin.js | 21 + uni_modules/uview-ui/components/u-upload/props.js | 124 ++ .../uview-ui/components/u-upload/u-upload.vue | 558 ++++++++ uni_modules/uview-ui/components/u-upload/utils.js | 151 +++ .../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 | 34 + uni_modules/uview-ui/libs/config/props.js | 190 +++ .../uview-ui/libs/config/props/actionSheet.js | 25 + uni_modules/uview-ui/libs/config/props/album.js | 25 + uni_modules/uview-ui/libs/config/props/alert.js | 22 + uni_modules/uview-ui/libs/config/props/avatar.js | 28 + .../uview-ui/libs/config/props/avatarGroup.js | 23 + uni_modules/uview-ui/libs/config/props/backtop.js | 27 + uni_modules/uview-ui/libs/config/props/badge.js | 27 + uni_modules/uview-ui/libs/config/props/button.js | 42 + uni_modules/uview-ui/libs/config/props/calendar.js | 42 + .../uview-ui/libs/config/props/carKeyboard.js | 15 + uni_modules/uview-ui/libs/config/props/cell.js | 35 + .../uview-ui/libs/config/props/cellGroup.js | 17 + uni_modules/uview-ui/libs/config/props/checkbox.js | 27 + .../uview-ui/libs/config/props/checkboxGroup.js | 29 + .../uview-ui/libs/config/props/circleProgress.js | 15 + uni_modules/uview-ui/libs/config/props/code.js | 21 + .../uview-ui/libs/config/props/codeInput.js | 29 + uni_modules/uview-ui/libs/config/props/col.js | 19 + uni_modules/uview-ui/libs/config/props/collapse.js | 17 + .../uview-ui/libs/config/props/collapseItem.js | 25 + .../uview-ui/libs/config/props/columnNotice.js | 24 + .../uview-ui/libs/config/props/countDown.js | 18 + uni_modules/uview-ui/libs/config/props/countTo.js | 25 + .../uview-ui/libs/config/props/datetimePicker.js | 36 + uni_modules/uview-ui/libs/config/props/divider.js | 23 + uni_modules/uview-ui/libs/config/props/empty.js | 26 + uni_modules/uview-ui/libs/config/props/form.js | 22 + uni_modules/uview-ui/libs/config/props/formItem.js | 23 + uni_modules/uview-ui/libs/config/props/gap.js | 19 + uni_modules/uview-ui/libs/config/props/grid.js | 17 + uni_modules/uview-ui/libs/config/props/gridItem.js | 16 + uni_modules/uview-ui/libs/config/props/icon.js | 36 + uni_modules/uview-ui/libs/config/props/image.js | 30 + .../uview-ui/libs/config/props/indexAnchor.js | 19 + .../uview-ui/libs/config/props/indexList.js | 19 + uni_modules/uview-ui/libs/config/props/input.js | 48 + uni_modules/uview-ui/libs/config/props/keyboard.js | 30 + uni_modules/uview-ui/libs/config/props/line.js | 20 + .../uview-ui/libs/config/props/lineProgress.js | 19 + uni_modules/uview-ui/libs/config/props/link.js | 26 + uni_modules/uview-ui/libs/config/props/list.js | 28 + uni_modules/uview-ui/libs/config/props/listItem.js | 15 + .../uview-ui/libs/config/props/loadingIcon.js | 30 + .../uview-ui/libs/config/props/loadingPage.js | 23 + uni_modules/uview-ui/libs/config/props/loadmore.js | 32 + uni_modules/uview-ui/libs/config/props/modal.js | 30 + uni_modules/uview-ui/libs/config/props/navbar.js | 32 + .../uview-ui/libs/config/props/noNetwork.js | 18 + .../uview-ui/libs/config/props/noticeBar.js | 27 + uni_modules/uview-ui/libs/config/props/notify.js | 22 + .../uview-ui/libs/config/props/numberBox.js | 35 + .../uview-ui/libs/config/props/numberKeyboard.js | 17 + uni_modules/uview-ui/libs/config/props/overlay.js | 18 + uni_modules/uview-ui/libs/config/props/parse.js | 22 + uni_modules/uview-ui/libs/config/props/picker.js | 29 + uni_modules/uview-ui/libs/config/props/popup.js | 29 + uni_modules/uview-ui/libs/config/props/radio.js | 27 + .../uview-ui/libs/config/props/radioGroup.js | 30 + uni_modules/uview-ui/libs/config/props/rate.js | 26 + uni_modules/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 + uni_modules/uview-ui/libs/config/props/search.js | 37 + uni_modules/uview-ui/libs/config/props/section.js | 24 + uni_modules/uview-ui/libs/config/props/skeleton.js | 25 + uni_modules/uview-ui/libs/config/props/slider.js | 25 + .../uview-ui/libs/config/props/statusBar.js | 15 + uni_modules/uview-ui/libs/config/props/steps.js | 21 + .../uview-ui/libs/config/props/stepsItem.js | 18 + uni_modules/uview-ui/libs/config/props/sticky.js | 20 + .../uview-ui/libs/config/props/subsection.js | 23 + .../uview-ui/libs/config/props/swipeAction.js | 15 + .../uview-ui/libs/config/props/swipeActionItem.js | 21 + uni_modules/uview-ui/libs/config/props/swiper.js | 39 + .../uview-ui/libs/config/props/swipterIndicator.js | 19 + uni_modules/uview-ui/libs/config/props/switch.js | 24 + uni_modules/uview-ui/libs/config/props/tabbar.js | 22 + .../uview-ui/libs/config/props/tabbarItem.js | 20 + uni_modules/uview-ui/libs/config/props/tabs.js | 32 + uni_modules/uview-ui/libs/config/props/tag.js | 29 + uni_modules/uview-ui/libs/config/props/text.js | 38 + uni_modules/uview-ui/libs/config/props/textarea.js | 36 + uni_modules/uview-ui/libs/config/props/toast.js | 30 + uni_modules/uview-ui/libs/config/props/toolbar.js | 21 + uni_modules/uview-ui/libs/config/props/tooltip.js | 25 + .../uview-ui/libs/config/props/transition.js | 18 + uni_modules/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 | 97 ++ 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 ++ uni_modules/uview-ui/libs/function/debounce.js | 29 + uni_modules/uview-ui/libs/function/digit.js | 167 +++ uni_modules/uview-ui/libs/function/index.js | 731 +++++++++++ uni_modules/uview-ui/libs/function/platform.js | 75 ++ uni_modules/uview-ui/libs/function/test.js | 288 +++++ uni_modules/uview-ui/libs/function/throttle.js | 30 + .../uview-ui/libs/luch-request/adapters/index.js | 97 ++ .../libs/luch-request/core/InterceptorManager.js | 50 + .../uview-ui/libs/luch-request/core/Request.js | 198 +++ .../libs/luch-request/core/buildFullPath.js | 20 + .../uview-ui/libs/luch-request/core/defaults.js | 29 + .../libs/luch-request/core/dispatchRequest.js | 3 + .../uview-ui/libs/luch-request/core/mergeConfig.js | 103 ++ .../uview-ui/libs/luch-request/core/settle.js | 16 + .../uview-ui/libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../libs/luch-request/helpers/isAbsoluteURL.js | 14 + uni_modules/uview-ui/libs/luch-request/index.d.ts | 116 ++ uni_modules/uview-ui/libs/luch-request/index.js | 3 + uni_modules/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 | 160 +++ 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 + uni_modules/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 | 84 ++ uni_modules/uview-ui/theme.scss | 44 + 490 files changed, 45333 insertions(+) create mode 100644 .gitignore create mode 100644 App.vue create mode 100644 README.md create mode 100644 common/css/app.scss create mode 100644 common/js/uniExport.js create mode 100644 common/js/utils.js create mode 100644 common/sdk/qqmap-wx-jssdk.js create mode 100644 common/sdk/qqmap-wx-jssdk.min.js create mode 100644 components/UserTab/UserTab - 副本.vue create mode 100644 components/UserTab/UserTab.vue create mode 100644 components/cancelReservation/cancelReservation.vue create mode 100644 components/commentItem/commentItem.vue create mode 100644 components/moreRight/moreRight.vue create mode 100644 components/pozCard/pozCard.vue create mode 100644 components/privacyPopup/privacyPopup.vue create mode 100644 components/privacyRadion/privacyRadion.vue create mode 100644 components/searchRow/searchRow.vue create mode 100644 components/topNavbar/topNavbar.vue create mode 100644 config/api.js create mode 100644 config/request.js create mode 100644 index.html create mode 100644 main.js create mode 100644 manifest.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/indexEntry/settlement/detail/detail.vue create mode 100644 pages/indexEntry/settlement/settlement.vue create mode 100644 pages/other/webView/webView.vue create mode 100644 pages/tabbar/examSimulation/index.vue create mode 100644 pages/tabbar/mine/index.vue create mode 100644 pages/tabbar/operateTrain/index.vue create mode 100644 pages/tabbar/statistics/comp/stage.vue create mode 100644 pages/tabbar/statistics/index.vue create mode 100644 pages/userCenter/login/login.vue create mode 100644 pages/userCenter/login/loginByPhone.vue create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 site.config.js create mode 100644 static/images/bigImg/indexTopBanner.png create mode 100644 static/images/bigImg/topPageBg.png create mode 100644 static/images/index/ic_jiaxiao.png create mode 100644 static/images/index/ic_shuaxin.png create mode 100644 static/images/index/radio_cli.png create mode 100644 static/images/index/radio_nor.png create mode 100644 static/images/index/searchIcon.png create mode 100644 static/images/index/searchIconHui.png create mode 100644 static/images/logo.png create mode 100644 static/images/tabbar/btn_xueche_cli.png create mode 100644 static/images/tabbar/btn_xueche_nor.png create mode 100644 static/images/tabbar/kc.png create mode 100644 static/images/tabbar/kcActive.png create mode 100644 static/images/tabbar/sc.png create mode 100644 static/images/tabbar/scActive.png create mode 100644 static/images/tabbar/sy.png create mode 100644 static/images/tabbar/syActive.png create mode 100644 static/images/tabbar/tj.png create mode 100644 static/images/tabbar/tjActive.png create mode 100644 static/images/tabbar/tk.png create mode 100644 static/images/tabbar/tkActive.png create mode 100644 static/images/tabbar/wd.png create mode 100644 static/images/tabbar/wdActive.png create mode 100644 static/images/tabbar/xy.png create mode 100644 static/images/tabbar/xyActive.png create mode 100644 static/images/tabbar/zx.png create mode 100644 static/images/tabbar/zxActive.png create mode 100644 static/images/userCenter/loginTopBg.png create mode 100644 static/images/userCenter/title_1.png create mode 100644 static/images/登录流程切图/__MACOSX/登录流程切图/._.DS_Store create mode 100644 static/images/登录流程切图/__MACOSX/登录流程切图/._btn_1.png create mode 100644 static/images/登录流程切图/登录流程切图/.DS_Store create mode 100644 static/images/登录流程切图/登录流程切图/bg_1.png create mode 100644 static/images/登录流程切图/登录流程切图/btn_1.png create mode 100644 static/images/登录流程切图/登录流程切图/btn_2.png create mode 100644 static/images/登录流程切图/登录流程切图/title_1.png create mode 100644 static/logo.png create mode 100644 store/getters.js create mode 100644 store/index.js create mode 100644 store/modules/add.js create mode 100644 store/modules/user.js create mode 100644 uni.promisify.adaptor.js create mode 100644 uni.scss create mode 100644 uni_modules/uni-config-center/changelog.md create mode 100644 uni_modules/uni-config-center/package.json create mode 100644 uni_modules/uni-config-center/readme.md create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json create mode 100644 uni_modules/uni-open-bridge-common/changelog.md create mode 100644 uni_modules/uni-open-bridge-common/package.json create mode 100644 uni_modules/uni-open-bridge-common/readme.md create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/bridge-error.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/config.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/consts.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/index.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/package.json create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/storage.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/uni-cloud-cache.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/validator.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/weixin-server.js create mode 100644 uni_modules/uni-open-bridge-common/uniCloud/database/opendb-open-data.schema.json create mode 100644 uni_modules/uni-scss/changelog.md create mode 100644 uni_modules/uni-scss/index.scss create mode 100644 uni_modules/uni-scss/package.json create mode 100644 uni_modules/uni-scss/readme.md create mode 100644 uni_modules/uni-scss/styles/index.scss create mode 100644 uni_modules/uni-scss/styles/setting/_border.scss create mode 100644 uni_modules/uni-scss/styles/setting/_color.scss create mode 100644 uni_modules/uni-scss/styles/setting/_radius.scss create mode 100644 uni_modules/uni-scss/styles/setting/_space.scss create mode 100644 uni_modules/uni-scss/styles/setting/_styles.scss create mode 100644 uni_modules/uni-scss/styles/setting/_text.scss create mode 100644 uni_modules/uni-scss/styles/setting/_variables.scss create mode 100644 uni_modules/uni-scss/styles/tools/functions.scss create mode 100644 uni_modules/uni-scss/theme.scss create mode 100644 uni_modules/uni-scss/variables.scss create mode 100644 uni_modules/uni-swiper-dot/changelog.md create mode 100644 uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue create mode 100644 uni_modules/uni-swiper-dot/package.json create mode 100644 uni_modules/uni-swiper-dot/readme.md 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-my/props.js create mode 100644 uni_modules/uview-ui/components/u-datetime-picker-my/u-datetime-picker-my.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-my/props.js create mode 100644 uni_modules/uview-ui/components/u-picker-my/u-picker-my.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/digit.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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c3d8c3c --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules +package-lock.json +unpackage/dist +unpackage/cache +.hbuilderx +unpackage + diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..2211627 --- /dev/null +++ b/App.vue @@ -0,0 +1,20 @@ + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/common/css/app.scss b/common/css/app.scss new file mode 100644 index 0000000..fa31dcc --- /dev/null +++ b/common/css/app.scss @@ -0,0 +1,139 @@ +page { + background-color: #fff; + font-size: 32rpx; + font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif; +} +view { + box-sizing: border-box; +} + +.oneRowText { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.towRowText { + display: -webkit-box; + overflow: hidden; + white-space: normal; + text-overflow: ellipsis; + word-wrap: break-word; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical +} +.bgLinear { + background: linear-gradient(180deg, #3593FB 0%, #53D3E5 100%); +} +.flex-b { + justify-content: space-between; + display: flex; + align-items: center; +} +.flex { + display: flex; + align-items: center; +} +.pageBg { + background: #F6F6F6; + color: #333; + font-size: 28rpx; + min-height: 100vh; +} +.pageBgImg { + font-size: 28rpx;; + color: #333; + background: url('http://192.168.1.20:81/zhili/image/20230824/afabc8b8a39544dc9ee4aea739b716cc.png') #F6F6F6 no-repeat; + background-size: 100% 324rpx; + min-height: 100vh; +} +.pad { + padding: 0 28rpx; +} +.card { + width: 100%; + background: #fff; + border-radius: 16rpx; +} +.status_bar { + height: var(--status-bar-height); + width: 100%; + } +image { + display: block; + width: 100%; + height: 100%; +} +.placeholderClassFFF { + color: #fff !important; +} +.starBox { + display: flex; + .num { + color: $themC; + font-size: 24rpx; + } + } + +.my .u-input { + height: 100%; + } + + .h1 { + font-size: 32rpx; + color: #333; + font-weight: 500; + position: relative; + padding: 0 0 0 32rpx; + &::before { + position: absolute; + content: ''; + width: 8rpx; + height: 32rpx; + background: #1F6EFA; + border-radius: 4rpx; + top: 50%; + transform: translateY(-50%); + left: 0; + } + } + + .btnBg { + height: 72rpx; + background: #1989FA; + border-radius: 8rpx; + line-height: 72rpx; + text-align: center; + font-size: 28rpx; + color: #fff; + } + + .btnBorder { + height: 72rpx; + background: #DFEAF5; + border-radius: 8rpx; + line-height: 72rpx; + text-align: center; + font-size: 28rpx; + color:$themC; + border: 2rpx solid #1989FA; + } + + /* 通用 */ + ::-webkit-input-placeholder { color:#ADADAD; } + ::-moz-placeholder { color:#ADADAD; } /* firefox 19+ */ + :-ms-input-placeholder { color:#ADADAD; } /* ie */ + input:-moz-placeholder { color:#ADADAD; } + + input::-webkit-input-placeholder { color: #CDCDCD !important; } + input::-moz-input-placeholder { color: #CDCDCD !important; } + input::-ms-input-placeholder { color: #CDCDCD !important; } + + // /* webkit专用 */ + .input1::-webkit-input-placeholder { color:#00f; } + // #input2::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; } + // #input3::-webkit-input-placeholder { font-style:italic; text-decoration:overline; color:#999; } + + // /* mozilla专用 */ + // #input1::-moz-placeholder { color:#00f; } + // #input2::-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; } + // #input3::-moz-placeholder { font-style:italic; text-decoration:overline; color:#999; } diff --git a/common/js/uniExport.js b/common/js/uniExport.js new file mode 100644 index 0000000..9f30b6a --- /dev/null +++ b/common/js/uniExport.js @@ -0,0 +1,8 @@ + +export let goPage = (url, params={}, type='navigateTo')=> { + uni.$u.route({ + url, + params, + type + }) + } \ No newline at end of file diff --git a/common/js/utils.js b/common/js/utils.js new file mode 100644 index 0000000..17ea3fd --- /dev/null +++ b/common/js/utils.js @@ -0,0 +1,96 @@ +import store from '@/store'; + +const install = (Vue, vm) => { + + // 打开地图 + const openMap = (lat, lng) => { + uni.openLocation({ + latitude: lat, + longitude: lng + }) + } + + // 距离换算 + const distanceFn = (val) => { + if (val * 1 < 1000) { + return val + '米' + } else { + return (val / 1000).toFixed(2) + '公里' + } + } + // 价格计算 + const priceTo = (price = 0) => { + // return (price / 100).toFixed(2) + return (parseInt(price * 100) / 100 / 100).toFixed(2) + + } + + const distanceLatLng = (lat1, lng1) => { + var that = this; + let lat2 = store.state.latLng.lat; + let lng2 = store.state.latLng.lng; + let rad1 = lat1 * Math.PI / 180.0; + let rad2 = lat2 * Math.PI / 180.0; + let a = rad1 - rad2; + let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0; + let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * + Math.cos( + rad2) * Math.pow( + Math.sin(b / 2), 2))); + s = s * 6378.137; + s = Math.round(s * 10000) / 10000; + s = s.toString(); + s = s.substring(0, s.indexOf('.') + 2); + return s + + } + + const getLocation = () => { + return new Promise((resolve, reject) => { + uni.getLocation({ + type: 'wgs84', + success: function(res) { + console.log('当前位置的经度:' + res.longitude); + console.log('当前位置的纬度:' + res.latitude); + let obj = { + lat: res.latitude, + lng: res.longitude + } + store.commit('updateLatLng', obj) + resolve(obj) + } + }); + }).catch((e) => {}) + } + + + + + function addZeroPrefix(number) { + return number < 10 ? `0${number}` : number + } + + let getDate = (date, splitor = '-') => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${year}${splitor}${addZeroPrefix(month)}${splitor}${addZeroPrefix(day)}` + } + + + + + + vm.$u.utils = { + openMap, + getLocation, + priceTo, + distanceLatLng, + distanceFn, + getDate, + } +} + +export default { + install +} \ No newline at end of file diff --git a/common/sdk/qqmap-wx-jssdk.js b/common/sdk/qqmap-wx-jssdk.js new file mode 100644 index 0000000..b114e29 --- /dev/null +++ b/common/sdk/qqmap-wx-jssdk.js @@ -0,0 +1,741 @@ +/** + * 微信小程序JavaScriptSDK + * + * @version 1.1 + * @date 2019-01-20 + */ + +var ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 +}; +var BASE_URL = 'https://apis.map.qq.com/ws/'; +var URL_SEARCH = BASE_URL + 'place/v1/search'; +var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; +var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; +var URL_CITY_LIST = BASE_URL + 'district/v1/list'; +var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; +var URL_DISTANCE = BASE_URL + 'distance/v1/'; +var EARTH_RADIUS = 6378136.49; +var Utils = { + /** + * 得到终点query字符串 + * @param {Array|String} 检索数据 + */ + location2query(data) { + if (typeof data == 'string') { + return data; + } + var query = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + if (!!query) { + query += ';'; + } + if (d.location) { + query = query + d.location.lat + ',' + d.location.lng; + } + if (d.latitude && d.longitude) { + query = query + d.latitude + ',' + d.longitude; + } + } + return query; + }, + + /** + * 计算角度 + */ + rad(d) { + return d * Math.PI / 180.0; + }, + /** + * 处理终点location数组 + * @return 返回终点数组 + */ + getEndLocation(location){ + var to = location.split(';'); + var endLocation = []; + for (var i = 0; i < to.length; i++) { + endLocation.push({ + lat: parseFloat(to[i].split(',')[0]), + lng: parseFloat(to[i].split(',')[1]) + }) + } + return endLocation; + }, + + /** + * 计算两点间直线距离 + * @param a 表示纬度差 + * @param b 表示经度差 + * @return 返回的是距离,单位m + */ + getDistance(latFrom, lngFrom, latTo, lngTo) { + var radLatFrom = this.rad(latFrom); + var radLatTo = this.rad(latTo); + var a = radLatFrom - radLatTo; + var b = this.rad(lngFrom) - this.rad(lngTo); + var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); + distance = distance * EARTH_RADIUS; + distance = Math.round(distance * 10000) / 10000; + return parseFloat(distance.toFixed(0)); + }, + /** + * 使用微信接口进行定位 + */ + getWXLocation(success, fail, complete) { + wx.getLocation({ + type: 'gcj02', + success: success, + fail: fail, + complete: complete + }); + }, + + /** + * 获取location参数 + */ + getLocationParam(location) { + if (typeof location == 'string') { + var locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + /** + * 回调函数默认处理 + */ + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + /** + * 验证param对应的key值是否为空 + * + * @param {Object} param 接口参数 + * @param {String} key 对应参数的key + */ + checkParamKeyEmpty(param, key) { + if (!param[key]) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return true; + } + return false; + }, + + /** + * 验证参数中是否存在检索词keyword + * + * @param {Object} param 接口参数 + */ + checkKeyword(param){ + return !this.checkParamKeyEmpty(param, 'keyword'); + }, + + /** + * 验证location值 + * + * @param {Object} param 接口参数 + */ + checkLocation(param) { + var location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + /** + * 构造错误数据结构 + * @param {Number} errCode 错误码 + * @param {Number} errMsg 错误描述 + */ + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + /** + * + * 数据处理函数 + * 根据传入参数不同处理不同数据 + * @param {String} feature 功能名称 + * search 地点搜索 + * suggest关键词提示 + * reverseGeocoder逆地址解析 + * geocoder地址解析 + * getCityList获取城市列表:父集 + * getDistrictByCityId获取区县列表:子集 + * calculateDistance距离计算 + * @param {Object} param 接口参数 + * @param {Object} data 数据 + */ + handleData(param,data,feature){ + if (feature === 'search') { + var searchResult = data.data; + var searchSimplify = []; + for (var i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }) + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }) + } else if (feature === 'suggest') { + var suggestResult = data.data; + var suggestSimplify = []; + for (var i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }) + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }) + } else if (feature === 'reverseGeocoder') { + var reverseGeocoderResult = data.result; + var reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + if (reverseGeocoderResult.pois) {//判断是否返回周边poi + var pois = reverseGeocoderResult.pois; + var poisSimplify = []; + for (var i = 0;i < pois.length;i++) { + poisSimplify.push({ + id: pois[i].id || null, + title: pois[i].title || null, + latitude: pois[i].location && pois[i].location.lat || null, + longitude: pois[i].location && pois[i].location.lng || null, + address: pois[i].address || null, + category: pois[i].category || null, + adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, + city: pois[i].ad_info && pois[i].ad_info.city || null, + district: pois[i].ad_info && pois[i].ad_info.district || null, + province: pois[i].ad_info && pois[i].ad_info.province || null + }) + } + param.success(data,{ + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify, + pois: pois, + poisSimplify: poisSimplify + }) + } else { + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }) + } + } else if (feature === 'geocoder') { + var geocoderResult = data.result; + var geocoderSimplify = { + title: geocoderResult.title || null, + latitude: geocoderResult.location && geocoderResult.location.lat || null, + longitude: geocoderResult.location && geocoderResult.location.lng || null, + adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, + province: geocoderResult.address_components && geocoderResult.address_components.province || null, + city: geocoderResult.address_components && geocoderResult.address_components.city || null, + district: geocoderResult.address_components && geocoderResult.address_components.district || null, + street: geocoderResult.address_components && geocoderResult.address_components.street || null, + street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, + level: geocoderResult.level || null + }; + param.success(data,{ + geocoderResult: geocoderResult, + geocoderSimplify: geocoderSimplify + }); + } else if (feature === 'getCityList') { + var provinceResult = data.result[0]; + var cityResult = data.result[1]; + var districtResult = data.result[2]; + param.success(data,{ + provinceResult: provinceResult, + cityResult: cityResult, + districtResult: districtResult + }); + } else if (feature === 'getDistrictByCityId') { + var districtByCity = data.result[0]; + param.success(data, districtByCity); + } else if (feature === 'calculateDistance') { + var calculateDistanceResult = data.result.elements; + var distance = []; + for (var i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else { + param.success(data); + } + }, + + /** + * 构造微信请求参数,公共属性处理 + * + * @param {Object} param 接口参数 + * @param {Object} param 配置项 + * @param {String} feature 方法名 + */ + buildWxRequestConfig(param, options, feature) { + var that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + var data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + var statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + var data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + + } + }; + return options; + }, + + /** + * 处理用户参数是否传入坐标进行不同的处理 + */ + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + var that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + that.getWXLocation(locationsuccess, locationfail, locationcomplete); + } else if (that.checkLocation(param)) { + var location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + } +}; + + +class QQMapWX { + + /** + * 构造函数 + * + * @param {Object} options 接口参数,key 为必选参数 + */ + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + }; + + /** + * POI周边检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * @see http://lbs.qq.com/webservice_v1/guide-search.html + */ + search(options) { + var that = this; + options = options || {}; + + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + var distance = options.distance || "1000"; + var auto_extend = options.auto_extend || 1; + var region = null; + var rectangle = null; + + //判断城市限定参数 + if (options.region) { + region = options.region; + } + + //矩形限定坐标(暂时只支持字符串格式) + if (options.rectangle) { + rectangle = options.rectangle; + } + + var locationsuccess = function (result) { + if (region && !rectangle) { + //城市限定参数拼接 + requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; + } else if (rectangle && !region) { + //矩形搜索 + requestParam.boundary = "rectangle(" + rectangle + ")"; + } else { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * sug模糊检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-suggestion.html + */ + getSuggestion(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10,//控制显示条数 + page_index: options.page_index || 1,//控制页数 + get_subpois : options.get_subpois || 0,//返回子地点 + output: 'json', + key: that.key + }; + //长地址 + if (options.address_format) { + requestParam.address_format = options.address_format; + } + //过滤 + if (options.filter) { + requestParam.filter = options.filter; + } + //排序 + if (options.location) { + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + }; + + /** + * 逆地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-gcoder.html + */ + reverseGeocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options + } + + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * 地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-geocoder.html + */ + geocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'address')) { + return; + } + + var requestParam = { + address: options.address, + output: 'json', + key: that.key + }; + + //城市限定 + if (options.region) { + requestParam.region = options.region; + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + },'geocoder')); + }; + + + /** + * 获取城市列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getCityList(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + output: 'json', + key: that.key + }; + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_CITY_LIST, + data: requestParam + },'getCityList')); + }; + + /** + * 获取对应城市ID的区县列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getDistrictByCityId(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'id')) { + return; + } + + var requestParam = { + id: options.id || '', + output: 'json', + key: that.key + }; + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_AREA_LIST, + data: requestParam + },'getDistrictByCityId')); + }; + + /** + * 用于单起点到多终点的路线距离(非直线距离)计算: + * 支持两种距离计算方式:步行和驾车。 + * 起点到终点最大限制直线距离10公里。 + * + * 新增直线距离计算。 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-distance.html + */ + calculateDistance(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + mode: options.mode || 'walking', + to: Utils.location2query(options.to), + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + //计算直线距离 + if(requestParam.mode == 'straight'){ + var locationsuccess = function (result) { + var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 + var data = { + message:"query ok", + result:{ + elements:[] + }, + status:0 + }; + for (var i = 0; i < locationTo.length; i++) { + data.result.elements.push({//将坐标存入 + distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), + duration:0, + from:{ + lat: result.latitude, + lng:result.longitude + }, + to:{ + lat: locationTo[i].lat, + lng: locationTo[i].lng + } + }); + } + var calculateResult = data.result.elements; + var distanceResult = []; + for (var i = 0; i < calculateResult.length; i++) { + distanceResult.push(calculateResult[i].distance); + } + return options.success(data,{ + calculateResult: calculateResult, + distanceResult: distanceResult + }); + }; + + Utils.locationProcess(options, locationsuccess); + } else { + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + },'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + } +}; + +module.exports = QQMapWX; \ No newline at end of file diff --git a/common/sdk/qqmap-wx-jssdk.min.js b/common/sdk/qqmap-wx-jssdk.min.js new file mode 100644 index 0000000..b8fbad4 --- /dev/null +++ b/common/sdk/qqmap-wx-jssdk.min.js @@ -0,0 +1,3 @@ +var ERROR_CONF={KEY_ERR:311,KEY_ERR_MSG:'key格式错误',PARAM_ERR:310,PARAM_ERR_MSG:'请求参数信息有误',SYSTEM_ERR:600,SYSTEM_ERR_MSG:'系统错误',WX_ERR_CODE:1000,WX_OK_CODE:200};var BASE_URL='https://apis.map.qq.com/ws/';var URL_SEARCH=BASE_URL+'place/v1/search';var URL_SUGGESTION=BASE_URL+'place/v1/suggestion';var URL_GET_GEOCODER=BASE_URL+'geocoder/v1/';var URL_CITY_LIST=BASE_URL+'district/v1/list';var URL_AREA_LIST=BASE_URL+'district/v1/getchildren';var URL_DISTANCE=BASE_URL+'distance/v1/';var EARTH_RADIUS=6378136.49;var Utils={location2query(data){if(typeof data=='string'){return data}var query='';for(var i=0;i + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/UserTab/UserTab.vue b/components/UserTab/UserTab.vue new file mode 100644 index 0000000..5de086a --- /dev/null +++ b/components/UserTab/UserTab.vue @@ -0,0 +1,117 @@ + + + + + \ No newline at end of file diff --git a/components/cancelReservation/cancelReservation.vue b/components/cancelReservation/cancelReservation.vue new file mode 100644 index 0000000..c769b6e --- /dev/null +++ b/components/cancelReservation/cancelReservation.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/components/commentItem/commentItem.vue b/components/commentItem/commentItem.vue new file mode 100644 index 0000000..23f7f6c --- /dev/null +++ b/components/commentItem/commentItem.vue @@ -0,0 +1,59 @@ + + + + + \ No newline at end of file diff --git a/components/moreRight/moreRight.vue b/components/moreRight/moreRight.vue new file mode 100644 index 0000000..f3c0d3a --- /dev/null +++ b/components/moreRight/moreRight.vue @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/components/pozCard/pozCard.vue b/components/pozCard/pozCard.vue new file mode 100644 index 0000000..834cb0f --- /dev/null +++ b/components/pozCard/pozCard.vue @@ -0,0 +1,59 @@ + + + + + \ No newline at end of file diff --git a/components/privacyPopup/privacyPopup.vue b/components/privacyPopup/privacyPopup.vue new file mode 100644 index 0000000..fefd57e --- /dev/null +++ b/components/privacyPopup/privacyPopup.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/components/privacyRadion/privacyRadion.vue b/components/privacyRadion/privacyRadion.vue new file mode 100644 index 0000000..dd065f0 --- /dev/null +++ b/components/privacyRadion/privacyRadion.vue @@ -0,0 +1,35 @@ + + + + + \ No newline at end of file diff --git a/components/searchRow/searchRow.vue b/components/searchRow/searchRow.vue new file mode 100644 index 0000000..782ae74 --- /dev/null +++ b/components/searchRow/searchRow.vue @@ -0,0 +1,51 @@ + + + + + \ No newline at end of file diff --git a/components/topNavbar/topNavbar.vue b/components/topNavbar/topNavbar.vue new file mode 100644 index 0000000..ca3dcef --- /dev/null +++ b/components/topNavbar/topNavbar.vue @@ -0,0 +1,27 @@ + + + + + \ No newline at end of file diff --git a/config/api.js b/config/api.js new file mode 100644 index 0000000..e1cc984 --- /dev/null +++ b/config/api.js @@ -0,0 +1,10 @@ + + +const http = uni.$u.http + +// 隐私政策 +export const getAgreement = (params, config = {}) => http.post('/util/manage/getAgreement.do', params, config) +// 验证码登录 +export const loginSMS = (data) => http.post('/account/manage/login.do', data) +// 登录发验证码 +export const getLoginCode = (data) => http.post('/util/manage/getLoginRegistCode.do', data) diff --git a/config/request.js b/config/request.js new file mode 100644 index 0000000..9e7c0a2 --- /dev/null +++ b/config/request.js @@ -0,0 +1,52 @@ + +// 此vm参数为页面的实例,可以通过它引用vuex中的变量 +module.exports = (vm) => { + // 初始化请求配置 + uni.$u.http.setConfig((config) => { + /* config 为默认全局配置*/ + config.baseURL = 'http://121.41.97.244:8090'; /* 根域名 */ + config.header['content-type'] = 'application/x-www-form-urlencoded; charset=UTF-8' + return config + }) + + // 请求拦截 + uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作 + // 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{} + config.data = config.data || {} + // 根据custom参数中配置的是否需要token,添加对应的请求头 + if(config?.custom?.auth) { + // 可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中 + config.header.token = vm.$store.state.userInfo.token + } + return config + }, config => { // 可使用async await 做异步操作 + return Promise.reject(config) + }) + + // 响应拦截 + uni.$u.http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/ + const data = response.data + console.log('response') + console.log(data) + // 自定义参数 + const custom = response.config?.custom + if (data.code !== 0) { + // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示 + if (custom.toast !== false) { + uni.$u.toast(data.message) + } + + // 如果需要catch返回,则进行reject + if (custom?.catch) { + return Promise.reject(data) + } else { + // 否则返回一个pending中的promise,请求不会进入catch中 + return new Promise(() => { }) + } + } + return data === undefined ? {} : data + }, (response) => { + // 对响应错误做点什么 (statusCode !== 200) + return Promise.reject(response) + }) +} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..6a6f945 --- /dev/null +++ b/main.js @@ -0,0 +1,35 @@ +import App from './App' +import Vue from 'vue' +import store from './store'; + +import { goPage } from './common/js/uniExport.js' +Vue.prototype.$goPage = goPage; + +import './uni.promisify.adaptor' +Vue.config.productionTip = false +App.mpType = 'app' + +// main.js,注意要在use方法之后执行 +import uView from '@/uni_modules/uview-ui' +Vue.use(uView) + +import tabBar from "components/UserTab/UserTab.vue" +Vue.component('tabBar',tabBar) + +const app = new Vue({ + ...App, + store +}) + +require('./config/request.js')(app) + + +import utils from "@/common/js/utils.js" +console.log(utils) +// 自定义工具 + +Vue.use(utils,app) + +app.$mount() + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..72ac63f --- /dev/null +++ b/manifest.json @@ -0,0 +1,100 @@ +{ + "name" : "recruitStudent", + "appid" : "__UNI__BD23957", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx2d71605af3b620e6", + "setting" : { + "urlCheck" : false, + "es6" : true + }, + "usingComponents" : true, + "permission" : { + "scope.userLocation" : { + "desc" : "查询用户地理位置,推荐本地驾校,提高用户服务" + } + } + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2", + "h5" : { + "devServer" : { + "port" : 8000, + "disableHostCheck" : true, + "proxy" : { + "/api" : { + "target" : "http://121.41.97.244:8090", + "changeOrigin" : true, + "secure" : true, + "pathRewrite" : { + //使用代理; 告诉他你这个连接要用代理 + "^/api" : "" + } + } + }, + "https" : false + }, + "router" : { + "mode" : "hash", + "base" : "/h5" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6b8150f --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "recruitStudent", + "version": "1.0.0", + "description": "", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "uview-ui": "^2.0.36" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..f50713e --- /dev/null +++ b/pages.json @@ -0,0 +1,153 @@ +{ + "pages": [ + { + "path": "pages/tabbar/statistics/index", + "style": { + "navigationBarTitleText": "首页", + "navigationStyle": "custom", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark" + } + }, + { + "path": "pages/tabbar/examSimulation/index", + "style": { + "navigationBarTitleText": "考场模拟", + "navigationStyle": "custom", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark" + } + }, + { + "path": "pages/tabbar/operateTrain/index", + "style": { + "navigationBarTitleText": "实操训练", + "navigationStyle": "custom", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark" + } + }, + + { + "path": "pages/tabbar/mine/index", + "style": { + "navigationBarTitleText": "我的", + "navigationStyle": "custom", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark" + } + } + ], + "subPackages": [ + { + "root": "pages/userCenter", + "pages": [ + { + "path": "login/login", + "style": { + "navigationBarTitleText": "登录", + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "backgroundTextStyle": "dark" + } + }, + { + "path": "login/loginByPhone", + "style": { + "navigationBarTitleText": "手机号登录", + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "backgroundTextStyle": "dark" + } + } + ] + }, + { + "root": "pages/indexEntry", + "pages": [ + { + "path": "settlement/settlement", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "backgroundTextStyle": "dark" + } + }, + { + "path": "settlement/detail/detail", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "backgroundTextStyle": "dark" + } + } + ] + }, + { + "root": "pages/other", + "pages": [ + { + "path": "webView/webView", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": false, + "backgroundTextStyle": "dark" + } + } + ] + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "学车小程序", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + "uniIdRouter": {}, + "tabBar": { + "color": "#999999", + "selectedColor": "#218DFF", + "backgroundColor": "#FFFFFF", + "list": [{ + "pagePath": "pages/tabbar/statistics/index", + "text": "首页", + "iconPath": "static/images/tabbar/tj.png", + "selectedIconPath": "static/images/tabbar/tjActive.png" + }, + { + "pagePath": "pages/tabbar/examSimulation/index", + "text": "考场模拟", + "iconPath": "static/images/tabbar/kc.png", + "selectedIconPath": "static/images/tabbar/kcActive.png" + }, + { + "pagePath": "pages/tabbar/operateTrain/index", + "text": "实操训练", + "iconPath": "static/images/tabbar/sc.png", + "selectedIconPath": "static/images/tabbar/scActive.png" + }, + { + "pagePath": "pages/tabbar/mine/index", + "text": "我的", + "iconPath": "static/images/tabbar/wd.png", + "selectedIconPath": "static/images/tabbar/wdActive.png" + } + ] + }, + "easycom": { + "^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue" + }, + "condition" : { //模式配置,仅开发期间生效 + "current": 0, //当前激活的模式(list 的索引项) + "list": [ + { + "name": "", //模式名称 + "path": "", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + } + ] + } +} diff --git a/pages/indexEntry/settlement/detail/detail.vue b/pages/indexEntry/settlement/detail/detail.vue new file mode 100644 index 0000000..4b3303f --- /dev/null +++ b/pages/indexEntry/settlement/detail/detail.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/pages/indexEntry/settlement/settlement.vue b/pages/indexEntry/settlement/settlement.vue new file mode 100644 index 0000000..492abb4 --- /dev/null +++ b/pages/indexEntry/settlement/settlement.vue @@ -0,0 +1,264 @@ + + + + + \ No newline at end of file diff --git a/pages/other/webView/webView.vue b/pages/other/webView/webView.vue new file mode 100644 index 0000000..61d9919 --- /dev/null +++ b/pages/other/webView/webView.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/pages/tabbar/examSimulation/index.vue b/pages/tabbar/examSimulation/index.vue new file mode 100644 index 0000000..c7a7b86 --- /dev/null +++ b/pages/tabbar/examSimulation/index.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/pages/tabbar/mine/index.vue b/pages/tabbar/mine/index.vue new file mode 100644 index 0000000..05d501f --- /dev/null +++ b/pages/tabbar/mine/index.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/pages/tabbar/operateTrain/index.vue b/pages/tabbar/operateTrain/index.vue new file mode 100644 index 0000000..67ba00f --- /dev/null +++ b/pages/tabbar/operateTrain/index.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/pages/tabbar/statistics/comp/stage.vue b/pages/tabbar/statistics/comp/stage.vue new file mode 100644 index 0000000..e778894 --- /dev/null +++ b/pages/tabbar/statistics/comp/stage.vue @@ -0,0 +1,51 @@ + + + + + \ No newline at end of file diff --git a/pages/tabbar/statistics/index.vue b/pages/tabbar/statistics/index.vue new file mode 100644 index 0000000..dfb13df --- /dev/null +++ b/pages/tabbar/statistics/index.vue @@ -0,0 +1,205 @@ + + + + + diff --git a/pages/userCenter/login/login.vue b/pages/userCenter/login/login.vue new file mode 100644 index 0000000..ea765d1 --- /dev/null +++ b/pages/userCenter/login/login.vue @@ -0,0 +1,71 @@ + + + + + \ No newline at end of file diff --git a/pages/userCenter/login/loginByPhone.vue b/pages/userCenter/login/loginByPhone.vue new file mode 100644 index 0000000..b700bce --- /dev/null +++ b/pages/userCenter/login/loginByPhone.vue @@ -0,0 +1,187 @@ + + + + + \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..fa74469 --- /dev/null +++ b/project.config.json @@ -0,0 +1,28 @@ +{ + "appid": "wx0820ae1a0b635ae2", + "compileType": "miniprogram", + "libVersion": "2.32.2", + "packOptions": { + "ignore": [], + "include": [] + }, + "setting": { + "coverView": true, + "es6": true, + "postcss": true, + "minified": true, + "enhance": true, + "showShadowRootInWxmlPanel": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + } + }, + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + } +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..c4be9c3 --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,7 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "recruitStudent", + "setting": { + "compileHotReLoad": true + } +} \ No newline at end of file diff --git a/site.config.js b/site.config.js new file mode 100644 index 0000000..e2bc6da --- /dev/null +++ b/site.config.js @@ -0,0 +1,12 @@ +const VUE_APP_PLATFORM = process.env.VUE_APP_PLATFORM; +module.exports = { + APP_API: VUE_APP_PLATFORM === 'h5' ? 'http://121.41.97.244:8090' : '', + APP_HOST: VUE_APP_PLATFORM === 'h5' ? '' : 'https://www.jaxc.cn/api', + TEMP_HOST: VUE_APP_PLATFORM === 'h5' ? '' : 'http://121.41.97.244:8090 https://www.jaxc.cn/api', + ADD_API: VUE_APP_PLATFORM === 'h5' ? '/addApi': 'http://121.41.97.244:48084', //http://121.41.97.244:48084 + APP_NAME: '', + VERSION: '1.0.0', + gaodeMapUrl: 'https://webapi.amap.com/maps?v=1.4.15&key=4545202996c625152b7f2c1aa0ffb8ea&plugin=AMap.DistrictSearch,AMap.CustomLayer,AMap.MarkerClusterer', + locationIcon: 'http://3dtest.hzhuishi.cn/images/location.png', + AThreeFace : true, //是否启用人脸识别 +}; diff --git a/static/images/bigImg/indexTopBanner.png b/static/images/bigImg/indexTopBanner.png new file mode 100644 index 0000000000000000000000000000000000000000..fa29ac7ee9d112870cf0f304cd7c81bdb20399d0 GIT binary patch literal 403631 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�nQrr8uqU*gRgDeq2{!xX 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 {}5m??IMB{!sRp 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
Fz0!`DB~jrzV+*3 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

6)2pGpE)i6-9( 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 literal 0 HcmV?d00001 diff --git a/static/images/index/ic_jiaxiao.png b/static/images/index/ic_jiaxiao.png new file mode 100644 index 0000000000000000000000000000000000000000..51fa9e040b85633a4f2532627eb045b3339f7aa0 GIT binary patch literal 706 zcmV;z0zLhSP)Px%d`Uz>R7gwJm(7dKQ5eTRUnylFGMFN4ylhZbHY~i2_q?TuA!Q{sCjJ2y7G6eJ zkp+W|EGRF7h?P+aE5*{nOe7Y=EO_+2onM_UbLZasyBlYB&pE&6bIxk~nCD;pKQUd`3=#+G=fp02P4ZHq?CF@@c6bk*nfVEP(4|ve(ls0nq#oSUU{Rr&OL~|uGgQI}eXwe+E zSQ4=m@T{c6nK*6$J6+(C+Oqz2z};2=PfI$I1?~lQ1A~%^^04oAr1Si%EFxkCFb5c$ zozHjsZ{bLJ9lixtNg9lZnZWZ@kFL`W7kETCrRRYI`3@suB5)blVl(-N7;J-G_TC)W zv}hvYF|cBk0ABcp(m>#6%0@j4?$3e001KtCw(VJZUZ$W zC3R+^dFV3*hJZFnKRgx@dw{DMa1n5_PGIFeEX@0qB-dM|MTCPo_<*GLtlx|9Vk#;H zng-sKv?B}r3|N-Vs9lopO)ta>z1Rw%cWSkLO66c!(cS~TXnlt3f$?@I~Cx`3YIcdLO7!iwsS2?iMBMMlWl|`SV zHC4a`fNitVN}8(%5iu3G o??rT_o{07*qoM6N<$g1;^|&Hw-a literal 0 HcmV?d00001 diff --git a/static/images/index/ic_shuaxin.png b/static/images/index/ic_shuaxin.png new file mode 100644 index 0000000000000000000000000000000000000000..2f8d3a48703ff416d78980b28fbb8df24eb7c135 GIT binary patch literal 754 zcmVPx%tVu*cR7gwBlubxfQ5c5bbMDAYKRUXQl(dCLq5Wzl6@q4?Q4~=lwMYn)h@e(Q zE;9O|z{H?civkfLhOk8uMaJL+l`XPGKNwgjSbb55MOddHc$Gxvf9ed}}1 zbH4X`-;WHAbAf+Yd)5|jWNvk4BZ zC8%0SK@5&21hjwTXnet8)x;$^1lOx5(jC#5q(go;s7dr~%+frOm!Y{U)gFPEx@a;4 zG{0ha@F|i;kTFUOu$)RNfJ zS#|?^3IUw!VCeM=JUpTu&;f3bihGA`kRG2;jRXX$Jq+I37{Kl}71e7f>Nd@j0N_qH z$MMbDJ9-DQwa$KlrYZ#$dGV2{f5uQ84iyD4O4OXTho=NG7R3y?vybD{!32`*JoWG*qG%mDQcy4_O=Y-qi&4r4&o&BscbET+n)d37me+Ff?fmlAQ`PRw`JZ zWh|Ltk|#nU>;$D_$I<4B8BfU~6(2MQ9;!tyRE zZ&5KCh%h!}0ate_$Z;ljlV!lHO=Z$gY@w(vqEO6D6bYJ{(ymrDY}acp1qGSbG7yzy kGk{#l%hQPAl1p~?FEIs38nlJ+^#A|>07*qoM6N<$f^qLmH2?qr literal 0 HcmV?d00001 diff --git a/static/images/index/radio_cli.png b/static/images/index/radio_cli.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc81189afdf1630000d0c1e6345fd1d4f651d2a GIT binary patch literal 1092 zcmV-K1iSl*P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$?u1Q2eR9FecS4(IVK@hF#8CPOd zBqD?uVw8xYA}EM@(MZsMiW2-CqNqnd1P$oL;6YI^q6ZHK5ig1aM2!R$FMd!2Q4#SM zLD492{RBKjlbFrSlvO=D>+J5#W@0v^VYg?htKX}t?yjyuh}dRdqS(*R)-ohqLqxNX zsDuDZWI6)H2{Dd{ZwRTisLZ_kdLt&HK;uA4<&9LF0Q(>T)dJD@f%Nq_Viy8ljDc~e zeLsH7H7C@7ic>VYr`I|_2=z={m!lfx^!!P_$vr|bf+MlO z9|`3R%9ptOg$+v;>|AJQ;g-u5-2Oo6 z3i8Ius;JzYq$IuOlYG-0Op#}^`XroHg|D642T)-y1)8Puc|oA-}NR)Y`3Y9jLouL&8o6Rm^#2tpU>~y5xT>A-5s^ zD_t+>O}JBuC`iFCTQgHZ^9BRNTYo!TrJ!=E3&SCWJvVK5{w>%c|2+N7g#x9N07Etaw`Xw&_HyV4+k{(54Hso%OB=!F%QpP(OAqmvE`seXHuMdiAB0;; z0V!!QiV+V!5!5tWAjeEvcYIY<1@DHj+iySfEKurfV&6SS5OoN8&^ZYMn&zOa%J7^{V0000< KMNUMnLSTX_|K8#N literal 0 HcmV?d00001 diff --git a/static/images/index/radio_nor.png b/static/images/index/radio_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..e935b17944674cfe319bd825dbe823176c14f7b5 GIT binary patch literal 919 zcmV;I18Dq-P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$?0ZBwbR9Fecm%mRFVI0Qk6?Kqw z>7wY;#KwdsCM5mkK!}42CI$kN{V!ZK3`AG{3z#4p5+?^k7`W0l45m#CCMPISQmLP`^*bW{I_&K1+>!XA`V~~h`t_$>CXQ9Cs9efsv)}(V=28QD zdwaL)_4+G`ycGDh5#Ck&Uh$Ud4|S*9^@uVFMbkjbAY1U1`kq%EliCDwWEkR;%?v zgYRq5zRDN*eBSK^>R0EwZeALz(nzR0h(@C`>2&(Df803(=FUq7zNwD$xm>R9AMmen zu~>|2%(^tEF`+Z#&xB(InR9g_?cDjM+&&!?jy4)-p@}vOSeDy0zyqg7Qns(gd8O)? z?KEg|SX&xG2xW#mNX1E#{ufWV8uRk;=v98+k+ zfCZB}hZRm`!Mo6_Mj7P6>umH3upP6!#^h}Gs_*$A24TQb24b)s1+48ODp}z|IV=k{ z&%lJCZiPZWgILytqjcCW+F@7*#PnFOnF7y%{jh{#!m?m@7b2}z=a%Iljrdp{roj88 zHX4n)K|=l7mL>K#roc0xlJ9vahh@QL3TlQr6$LwC zYFIVfC@zO~pounuuNwqQw?7Ue6KJ4?CfYFk{|H?JI3g{hqodEP300K_c_z$QcG(_WOYn?Mz0E++_5WIb tOsunO{WY^DC`~rP|2g%WAP(yH{5RE*@K?v%L~H;6002ovPDHLkV1hQXp}PP8 literal 0 HcmV?d00001 diff --git a/static/images/index/searchIcon.png b/static/images/index/searchIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..9337fb1c3da70e3c80418767936c3508d330c888 GIT binary patch literal 737 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU3?z3ec*FxK#^NA%Cx&(BWL^R}X99deT!Hle z;R38CJ>&rT$GIfPFPMRmiJ6s+i-(tAKu}ClT2bBI!_&t%Bs4rJIVH8Ax}mY9wSB_G zNt5R+UcO@ehK-w#9y@X2`i;8}A3c8Z;^nK?KYsoBr{Vr^J}}5iJY5_^EKVPtk{#US zAkrq@XyWDlc~aCvUJc*N>zX=_eg6MHSYC>In(xfCS?9KI{`}^R<@R3P0R=WMGGkcxK(N!ytY^me<5w|vJ*3?_F6Samt-;2MSddS?=*zPsDDV2bV@k%qaKESuJOb?Lcy zK7IY*wN}9Qh4W6xez-FKLE~hP=K;aZrZdzp320?)U`kZF+pv<&_r@Q#Gk;6orQNCh zv?KH2^sIx^GY|H1SZQrgu3fl6Q6p{VA{&uIT#2)0rsZ-iOxYO5quhDL?dCzzBnF@0 z_2SD9C}gkW6e!tu_9|yX=c%@4iHhRYsfRVf@2U#$n<%>c{`k#hm9dY0!v@tBf$0Y> zuT0q(SG4qt-S55371P`g=2UclE!!Pe(R4;gpQ;bI-$ntAWwU;OXk;vd$@?2>@$}y+;55 literal 0 HcmV?d00001 diff --git a/static/images/index/searchIconHui.png b/static/images/index/searchIconHui.png new file mode 100644 index 0000000000000000000000000000000000000000..159a4c772a1aec0f9979824720ff094644875394 GIT binary patch literal 1364 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 JPDHLkV1hR~bBF){ literal 0 HcmV?d00001 diff --git a/static/images/tabbar/btn_xueche_cli.png b/static/images/tabbar/btn_xueche_cli.png new file mode 100644 index 0000000000000000000000000000000000000000..566ec2d16c36d6e49d05fed2a1867fbe0a9eb039 GIT binary patch literal 1638 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 IbxsLQ0HZmJ*Z=?k literal 0 HcmV?d00001 diff --git a/static/images/tabbar/kcActive.png b/static/images/tabbar/kcActive.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0cf25fad399dd51918a164443d95f1f934437c GIT binary patch literal 767 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1ISip>6gB0?HX9P1aFlBnWIEG}f zzKz=J$K)t*Zzr>sw3n&k7d0~%YiVxb_ya!}OtzTVF!RbTe8^eBD9kNw&D+blS256A zI`_xTuWg&HimW#$zAsbUEqaG<^ZoO8-)@jpJjB7p!WyH+u&mph?N!d+n60WSq!%tw zY_T#rn<&O_&veBm=z~PK_Tx(NG`0Qd!Zx#4-1`2zYQdCODod0myS_Qv#L^JBSF$|4 ze8Yn$se(Qy*UAYMU7xeW^|*@4{8wjB>9(t!?yP^lN1^@E!V4Xp$|^4v?21o6eRcM3 z?o4;)l&w*g%jbDsa;#bS!#(eD@|2|0!U}u+gzoIo{c1VqY|(~^ESJ|FkYxXRXm+lb zypym_&HT&ESI%FmHfUZ@$9X@U+3~*Yq7Slrnnk@B-_^X=5}JG3<4V$|vKve0)Oi)! zM|Q`Dxt?_0D4TxvU|F|6U*Z-&rNY8f!pYKR|GP|^9Zcp<$t(i9Bh5E94JucQy zt5kHmzSc4$>g1D!M}qi^Z%SP=ni*zP$#TK*Olo$vA6{eIyie;14SVfK4kaVAf`tz5|PWMOdF o(%S6hXCCq2Z)S3AEE4^}y!h|w_#dmdKI;Vst0NlJWSO5S3 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/sc.png b/static/images/tabbar/sc.png new file mode 100644 index 0000000000000000000000000000000000000000..9c48191eda2ae28e375c38227c0f293dc7066b01 GIT binary patch literal 2786 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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tj.png b/static/images/tabbar/tj.png new file mode 100644 index 0000000000000000000000000000000000000000..036469e343acee1803d5db2a6d471e2385c08483 GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q1|(OsS<3+_#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1ISip>6gB0?HX9NS4Pw{kd49Q@9 z8)e-g>?mQIWDSg>zy8I4lkH_t)!hK65UQ?|s?#JiRlAQvO{(^Z!TN%-SQ*gQu@* zSaqN*?7;rH=l&lr*AeqR_|Ec{=avm;XV};6kLPYbTz>j#QSg;^mqwo&t*KUb-j>-b zEc^TV$kuWLi90V!tf~`=UAJ&|FwOiCx4vBN!WwCLX+(Y zCbuO1*I$1bAKNVFIn{AKQ`f-&jS_~E*)La2mvXebaQ2ec!Lwn0(+ZRO7c8Icqc@#f zgsU}T|NZ%5f=8DbIz*pH+su38tLxtAJ?WfjMl(5mFTdcKy_H*R_q=|ooP7trIchPvmCDNiB(N|bn_pxy}c<^s%&BYOrkTvXlBpiP2v~7-L!a> zaME-G^S;kT>{~wWPMnzA)amj_EU)Cb;cbtWi97V?pU-}we|g&e#PiW62PQEveOqiB zt8XbL{YH=RWpU5+joTF@`j7W31nkmY{#yMO^V~;u4L4*a?e zIgck;ulg76eK=R>ER(vG0LPyN z_ns+PR^R`5$nAXhzRx_1GxPQsUWoj$ggxi4;_R0{nCr9o&=BhOD_=0I~OPX>dxB0WoJa_5Nlf!=MCw_?-&wBcFx@BzM z6zTQ6mtTHaShl-Xwy!@a>!P@Wq>jtti`SP1y%c|b%Z1PWK}>5d57+7W0tVmnw|v)d zyK53)xQYn`qXQX}(+}S)XS2SVyX9{5!yDT2Hv+>iJ}XqKQ09pL)9bxvXPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91IG_Un1ONa40RR91H~;_u01a1YQvd)1B}qge5T0LkKK@@&(_f}(2 z{6SGnLQb$tAsE3zQLqpcMGG6jLI_rZiWk%}mEt9VC|DRtV`F0%(9S|E4Jeq-!jK4} z5EO#pa(nyyhImJAb~fxSx84|Lo4tAOoA3#aC6}{FY5k+Zm?;5U_$m*D&cD(*_p%(zU?G*B?`lBz+BXE zo^G&dyi%#1UQgUwu0nKf|5NE+Yg3=C7DycJ)(Iz$MSQN%F5PdpK%H%du@jh~XjVj!M`icsCXkqprKZ&iHg(WdU~U3gs4Fd( zR#(Wlw#15S#eu7k)dFI-%|1!@NP|urXY!uj24zGqH zQ-o#S6cnQ25}F*9Y1}VBtTI`7#RPyb*vdF0#C*B}V9)oK!&AE5rg2O}af0@NcdAjxNgJti>p$!~=i+T9YqmDugT#ssz_s7*1PK%2Ueg^TN8ma5q_$92%AZe-!& zI+&$uHqCJzw5c0exVR2xshUl5TnBCHMiwry4i;*JE!p&!Z~{KbZVH`%O^j`d0h@_? zOyHMW^bLC~v7_LGm^i}YS(6Xj9!9$v%b!g4q}WC*I4kbDFD6iJAmQA*M4+yN^)ay1 z3wH`{bh{dNdBJ^R{%-O$*?{Tt{0B|8zXKIpS2s7P~FEXU#DI7U$)H$5Zpe!CRH4argpp&+(V2egJYz z|8GJ=%SmJ^s%(uHJv#SM88*TNEg$MS8jq+l^o+|P9R2;*k0`ziEPpL+oMzP<+t1=kE8$q002ovPDHLkV1hM?q3i$v literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tk.png b/static/images/tabbar/tk.png new file mode 100644 index 0000000000000000000000000000000000000000..5d35ee78d6bbb69889fea2887753aaff0437fb35 GIT binary patch literal 929 zcmV;S177@zP)Px&TS-JgRA@u(noVmIK@f(k#+VQgO^)6d1tEcSx6z=2qW%GMQ$f6_2f>41L_wp6 z#Df7ZA|CYM=SlMe3<{#6p{tKMh-dYrn24Bl*^-X4GA=u_y**=QH<>vtOjXVM)LYZ@ zv4gNmHe4l~P=Ky9rwd05M?16wiK9C_JiMt|txhuYJ^)zn%gD@CMEr<|kC}O#h<^Ci z^396{wUCucmth`3X0{o3mYf06PR3n z&o3@6zMGqy`<|4)?4TnfBfaHv`2_%M^8t&=SwO_ITI<_!HGM%*2yqYqN)BQ_7-Jp* zz~6JeR4VoK_4Q3L^DzKe>rlfbgqeBN7&F}{*b7t$aR?C~xE$TaF!Nz!%)|P4Ddk20 zunikT#C6QNHE4ZzVh+1pCwe3J%8H-QE2qj42aQPiCODd1*#B3&3a% zDP_}3q1WhUEi`St0yNUW!cmuTNIP;_<-2Gt9ChhZR*s~t^q`i&2XpE^nxc|f3v5q!?95=>Xi944&60}uF3!fXP zQfj{yptZIS)y|s_WNx5R$~^$^JbXM$9Jy!*d?9lK6+-Mn#FsS)`@%Zu{IYRrAaer^ z4?GrmwP{z(SlG0Xxq^lVx2xo(BxkdL%pEioa18+Li|eH=>TFh!Z2=mJxB&pCqOkUN zk+!w{gSU&tg`m^Y7z zGeHoH#X&CJTRRr(_^<-B<1MTMC>$*u?a&Uan$i6Y9e`L@V{va|00000NkvXXu0mjf DhHa_k literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tkActive.png b/static/images/tabbar/tkActive.png new file mode 100644 index 0000000000000000000000000000000000000000..8a93d5b44160e4f138471d6f55a3b9a8555a9a7f GIT binary patch literal 826 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 bxEc5gwkj5+z`pC^00000NkvXXu0mjfX3ui8 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/xy.png b/static/images/tabbar/xy.png new file mode 100644 index 0000000000000000000000000000000000000000..1a0b9d9fb92c734e1c33a5b5626c5d82a3738600 GIT binary patch literal 2234 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 Z{Q@NTS002ovPDHLkV1lFB3#kAA literal 0 HcmV?d00001 diff --git a/static/images/tabbar/zxActive.png b/static/images/tabbar/zxActive.png new file mode 100644 index 0000000000000000000000000000000000000000..b266dd6a0e1c2a5671cd67a79b26e4e3fa4e34a2 GIT binary patch literal 547 zcmV+;0^I$HP)Px$-AP12RA@u(njudEF%-w&8y#|Fjtw<~m_}epNH7@2mq6eMTlfTIBRB+Kf?+Tu zBv=G`0yD*iTbSeyN-k^*VYJ8YwU?H@)7Renz5l=OwU;6U@?apGz@Yz4X;w5iMc2;d z`bQj}N`!5cvgA?%B;pt)+!cg4c|O7?U2IzGP9PruWZ5Oa`B-pN5MomYs|BsJqbmT} za2s+O9d?JU;=U?YE$C_|dUegNDv-p+FU{ggCeTXzP5PncSCqrnvQoGd>jngx^wU z9CXkuF0^#3ooM!cqmFQ~D;666^X0>v7`nZAR0ajmpI%f|m!fDe)+Kp1Ww2A$Wl#ed zU`4qYO>Cs9x|9urSACSS1@sD(Qa8NnqZCk^V~tl`o551%X3(tdg_3ofW1Ujet6~&P zdkJR4z~@m#rTP9V#j9dOQItUqWWacPVMYJ2M!o8z6h*x{rUe5^*)VuzUCI{FKyg)0 zVZ7?v43;uCgYtPa<##8=UN*;Owr)U|H3GSQ6U>FGWIY9OMb2j7$b0T=S3~lS(!lo^ l)IbuQnt~N|N)7|Td;(s+vPkx<0%rgK002ovPDHLkV1nGJ@{j-k literal 0 HcmV?d00001 diff --git a/static/images/userCenter/loginTopBg.png b/static/images/userCenter/loginTopBg.png new file mode 100644 index 0000000000000000000000000000000000000000..1086c92a4dc271a1676d2ce68ca280116f4a0322 GIT binary patch literal 36319 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 literal 0 HcmV?d00001 diff --git a/static/images/userCenter/title_1.png b/static/images/userCenter/title_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4e43a564c77372cb509e678188f3dd35e8aeba93 GIT binary patch literal 8982 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 Iur73U08|YJ=l}o! literal 0 HcmV?d00001 diff --git a/static/images/登录流程切图/__MACOSX/登录流程切图/._btn_1.png b/static/images/登录流程切图/__MACOSX/登录流程切图/._btn_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d0ad85bbe84f7eb9fd66817616217dcd1dbebad GIT binary patch literal 233 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}@pd2v@m~Tl5x_AdBnYYuq~ib(YeM-j z3S`;=AQoU?kV?+a)k`cW$Vt`9Nh~fYEly2INi0cK4hV)Sz5t{p85l$n>IzE}ixTrn tGV@XyK5?E(0jU!y`6U9P3-t{QER3wpOp+4~EYpmw1Bz11GE>W~832RDCXE09 literal 0 HcmV?d00001 diff --git a/static/images/登录流程切图/登录流程切图/.DS_Store b/static/images/登录流程切图/登录流程切图/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..49f0b45ae1fe26e25db25160b66de0831db051c9 GIT binary patch literal 6148 zcmeHKyH3ME5S%3`ETu_F6Y0JnQvTo+B?UDfkjQ`{B#Tf$?=GLiC&KIl6l2m-z^=4A zcY8ZNdkXIz09n7@uYfs#hOUT{hOz0o`pB*#qbT-_C7$tw!%cU*8&&_DP;P@32kfxI z8Ncn0E!XtL-ssDBGmd~6Uhqio@Nk(Wi*GEWW=I86fm9$BNCp1A0_@pp&CD@lDv%1K z0$&Q~|Dn(oYhdqazYYdHzU%r_QH^7}OAt%UYhdrl6`DAe=v0X-hB%%15_L7OcXT?$ zcIIFjQdT)4BHlE&am%e@Mz%Dv%2NDFtM@x!tV!Nzq$J vAE&*x(D(FDW381l3=RRDXe+)xt1CKYT@CCVjn2H$iFpuEUD8s4-%#KKFOn!& literal 0 HcmV?d00001 diff --git a/static/images/登录流程切图/登录流程切图/bg_1.png b/static/images/登录流程切图/登录流程切图/bg_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1086c92a4dc271a1676d2ce68ca280116f4a0322 GIT binary patch literal 36319 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 literal 0 HcmV?d00001 diff --git a/static/images/登录流程切图/登录流程切图/btn_1.png b/static/images/登录流程切图/登录流程切图/btn_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbfd5d08d646cae869d06b32545304bd2d2eee7 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uuz(rC1}QWNE&K#jX71_Y7-Au~ zbh2Syvx9)^-tHAUn(r?07UWcv`aW&-9EGV?ot$Z2;^eZ8^mty8ww4T<7QUR&-SEBw=XerDlp zoAZB{WzJ)@&B$G|^|u1YzRu~Xm5Xoeb-5O0eRSR;ja40`Ob1G1{PD z3-goOCdsAjq{p-7YMSF=jvm7qeOJ$4DXs2d;L!=+acYfJ;UnAr(8fkrg+z~ITyxm9 zA96)^uBkM2c0JMBxb@67xiX&_vy3t(O!>{meA{&5&1JjVUj5xaSwPu+<=SLD(e=M( ita#UR@mk%7=YP20N1V3FQvBuw3QA8`KbLh*2~7a<7qy50 literal 0 HcmV?d00001 diff --git a/static/images/登录流程切图/登录流程切图/btn_2.png b/static/images/登录流程切图/登录流程切图/btn_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c36eacc6fa9a606254dab776683ff838711be5 GIT binary patch literal 567 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 s95OUafkYqmlSEl)+V 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 SYs}WS&%*SCNx89m_ state.user.userInfo, +// pushMessage: state => state.push.pushMessage, +// currentAdd: state=>{ +// }; + +export default { + pushMessage: state => state.push.pushMessage, + getCurrentAdd: function (state) { + //返回一个函数用于接收 + return function (id) { + let add = state.add.addList.find(item => item.id == id) + if(add) { + return add + }else { + return {} + } + } + } +}; + diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..061f5dc --- /dev/null +++ b/store/index.js @@ -0,0 +1,90 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import add from './modules/add'; +import user from './modules/user'; +import getters from './getters'; + +Vue.use(Vuex); + +const store = new Vuex.Store({ + state: { + currentSchool: '', + userInfo: {}, + latLng: {}, + + classChooseItem: {}, + pdfUrl: '', + webViewUrl: '', + havePay: 0, //tabbar 页面是否显示报错小图标 + currentMyMsg: {}, + billPrice: 0, //开发票的id + TrainingOrderId: '', //退款流程里的驾校id + bankInfo: { + realName: uni.getStorageSync('userInfo').realName, + phoneCode: '' + }, + chooseCoachItem: { + coachId: '' + }, //报名时选择的教练 + realAuthsuccee: false, + + }, + getters, + mutations: { + // 选择学校 + upDateTrainingSchoolId(state, currentSchool) { + state.currentSchool = currentSchool + }, + // webViewUrl + updateWebVeiwUrl(state, url) { + state.webViewUrl = url + }, + // 更新用户信息 + upDateUserInfo(state, userInfo) { + state.userInfo = userInfo + }, + updatePushMyMsg(state, item) { + state.currentMyMsg = item + }, + upDateBillPrice(state, billPrice) { + state.billPrice = billPrice + }, + upDateTrainingOrderId(state, trainingOrderId) { + state.trainingOrderId = trainingOrderId + }, + // tabbar 页面是否显示报错小图标 + updateHavePay(state, havePay) { + state.havePay = havePay + }, + // 报名时选择教练 + upDateCoachItem(state, item) { + state.chooseCoachItem = item + }, + // 申请退款时的银行卡信息 + upDateBankInfo(state, obj) { + for (let k in obj) { + if (state.bankInfo[k]) { + state.bankInfo[k] = obj[k] + } else { + uni.$set(state.bankInfo, k, obj[k]) + } + } + }, + // 更新经纬度 + updateLatLng(state, item) { + state.latLng = item + }, + + + }, + actions: { + + + }, + modules: { + add, + user, + }, +}); + +export default store; \ No newline at end of file diff --git a/store/modules/add.js b/store/modules/add.js new file mode 100644 index 0000000..d5e9a65 --- /dev/null +++ b/store/modules/add.js @@ -0,0 +1,91 @@ + +// import addApi from '@/api/add.js'; // 引入 + +const add = { + state: { + addList: [] + }, + mutations: { + // 更新广告列表 + upDateAddList(state, list) { + state.addList = list + }, + + // 更新当前广告点击量 + upDateViews(state, id) { + let add = state.addList.find(item=>item.id==id) + add.clicks ++ + }, + + + + + }, + actions: { + // 点击广告 + async addClick({commit, dispatch}, curAdd) { + // await dispatch('updateStatistics') + curAdd.clicks ++ + if(!curAdd.adBannerDO.jumpUrl) { + return false + } + + commit('updateWebVeiwUrl', curAdd.adBannerDO.jumpUrl) + uni.navigateTo({ + url:'/pages/commeWebView/addWebView' + }) + }, + // 获取当前广告 + getCurrentAdd({state},id) { + console.log(id) + console.log(state.addList) + let curAdd = state.addList.find(item=>item.id==id) + if(curAdd) { + curAdd.views ++ + return curAdd + }else { + return {} + } + }, + // // 广告 + // async addPageFn({commit,state, dispatch}) { + // await dispatch('updateStatistics') + // let obj = { + // pageNo: 1, + // pageSize: 30, + // adClient: 1 + // } + // const [err, res] = await addApi.addPage(obj) + // let list = res.data.records.map(item=>{ + // item.views = 0 + // item.clicks = 0 + // return item + // }) + // commit('upDateAddList', list) + // console.log('广告列表') + // console.log(list) + + // }, + // 更新广告点击量 + async updateStatistics({ dispatch,state, commit }) { + let statistics = state.addList.filter(item=>item.views) + console.log('调用更新广告接口') + if(statistics.length) { + let stcsList = statistics.map(add=>{ + let obj = { + "adPositionId": add.id, + "adId": add.adId, + "views": add.views, + "clicks": add.clicks + } + return obj + }) + const [err, res] = await addApi.batchUpdate(stcsList) + console.log('更新广告点击量请求结果') + console.log(res) + } + } + } +} + + export default add \ No newline at end of file diff --git a/store/modules/user.js b/store/modules/user.js new file mode 100644 index 0000000..5af0505 --- /dev/null +++ b/store/modules/user.js @@ -0,0 +1,31 @@ + +import addApi from '../../common/sdk/qqmap-wx-jssdk.min.js'; // 引入 + +const user = { + state: { + addList: [] + }, + mutations: { + // 更新广告列表 + upDateAddList(state, list) { + state.addList = list + }, + }, + actions: { + // 点击广告 + async addClick({commit, dispatch}, curAdd) { + // await dispatch('updateStatistics') + curAdd.clicks ++ + if(!curAdd.adBannerDO.jumpUrl) { + return false + } + + commit('updateWebVeiwUrl', curAdd.adBannerDO.jumpUrl) + uni.navigateTo({ + url:'/pages/commeWebView/addWebView' + }) + }, + } +} + + export default user \ No newline at end of file diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js new file mode 100644 index 0000000..47fbce1 --- /dev/null +++ b/uni.promisify.adaptor.js @@ -0,0 +1,10 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res) => res[0] ? reject(res[0]) : resolve(res[1])); + }); + }, +}); \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..8738726 --- /dev/null +++ b/uni.scss @@ -0,0 +1,80 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ +@import '@/uni_modules/uview-ui/theme.scss'; + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; + +// 自已定义的 +$themC: #1989FA, diff --git a/uni_modules/uni-config-center/changelog.md b/uni_modules/uni-config-center/changelog.md new file mode 100644 index 0000000..57dbcb5 --- /dev/null +++ b/uni_modules/uni-config-center/changelog.md @@ -0,0 +1,6 @@ +## 0.0.3(2022-11-11) +- 修复 config 方法获取根节点为数组格式配置时错误的转化为了对象的Bug +## 0.0.2(2021-04-16) +- 修改插件package信息 +## 0.0.1(2021-03-15) +- 初始化项目 diff --git a/uni_modules/uni-config-center/package.json b/uni_modules/uni-config-center/package.json new file mode 100644 index 0000000..bace866 --- /dev/null +++ b/uni_modules/uni-config-center/package.json @@ -0,0 +1,81 @@ +{ + "id": "uni-config-center", + "displayName": "uni-config-center", + "version": "0.0.3", + "description": "uniCloud 配置中心", + "keywords": [ + "配置", + "配置中心" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "", + "type": "unicloud-template-function" + }, + "directories": { + "example": "../../../scripts/dist" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "u", + "Android Browser": "u", + "微信浏览器(Android)": "u", + "QQ浏览器(Android)": "u" + }, + "H5-pc": { + "Chrome": "u", + "IE": "u", + "Edge": "u", + "Firefox": "u", + "Safari": "u" + }, + "小程序": { + "微信": "u", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} diff --git a/uni_modules/uni-config-center/readme.md b/uni_modules/uni-config-center/readme.md new file mode 100644 index 0000000..03f7fc2 --- /dev/null +++ b/uni_modules/uni-config-center/readme.md @@ -0,0 +1,93 @@ +# 为什么使用uni-config-center + +实际开发中很多插件需要配置文件才可以正常运行,如果每个插件都单独进行配置的话就会产生下面这样的目录结构 + +```bash +cloudfunctions +└─────common 公共模块 + ├─plugin-a // 插件A对应的目录 + │ ├─index.js + │ ├─config.json // plugin-a对应的配置文件 + │ └─other-file.cert // plugin-a依赖的其他文件 + └─plugin-b // plugin-b对应的目录 + ├─index.js + └─config.json // plugin-b对应的配置文件 +``` + +假设插件作者要发布一个项目模板,里面使用了很多需要配置的插件,无论是作者发布还是用户使用都是一个大麻烦。 + +uni-config-center就是用了统一管理这些配置文件的,使用uni-config-center后的目录结构如下 + +```bash +cloudfunctions +└─────common 公共模块 + ├─plugin-a // 插件A对应的目录 + │ └─index.js + ├─plugin-b // plugin-b对应的目录 + │ └─index.js + └─uni-config-center + ├─index.js // config-center入口文件 + ├─plugin-a + │ ├─config.json // plugin-a对应的配置文件 + │ └─other-file.cert // plugin-a依赖的其他文件 + └─plugin-b + └─config.json // plugin-b对应的配置文件 +``` + +使用uni-config-center后的优势 + +- 配置文件统一管理,分离插件主体和配置信息,更新插件更方便 +- 支持对config.json设置schema,插件使用者在HBuilderX内编写config.json文件时会有更好的提示(后续HBuilderX会提供支持) + +# 用法 + +在要使用uni-config-center的公共模块或云函数内引入uni-config-center依赖,请参考:[使用公共模块](https://uniapp.dcloud.net.cn/uniCloud/cf-common) + +```js +const createConfig = require('uni-config-center') + +const uniIdConfig = createConfig({ + pluginId: 'uni-id', // 插件id + defaultConfig: { // 默认配置 + tokenExpiresIn: 7200, + tokenExpiresThreshold: 600, + }, + customMerge: function(defaultConfig, userConfig) { // 自定义默认配置和用户配置的合并规则,不设置的情况侠会对默认配置和用户配置进行深度合并 + // defaudltConfig 默认配置 + // userConfig 用户配置 + return Object.assign(defaultConfig, userConfig) + } +}) + + +// 以如下配置为例 +// { +// "tokenExpiresIn": 7200, +// "passwordErrorLimit": 6, +// "bindTokenToDevice": false, +// "passwordErrorRetryTime": 3600, +// "app-plus": { +// "tokenExpiresIn": 2592000 +// }, +// "service": { +// "sms": { +// "codeExpiresIn": 300 +// } +// } +// } + +// 获取配置 +uniIdConfig.config() // 获取全部配置,注意:uni-config-center内不存在对应插件目录时会返回空对象 +uniIdConfig.config('tokenExpiresIn') // 指定键值获取配置,返回:7200 +uniIdConfig.config('service.sms.codeExpiresIn') // 指定键值获取配置,返回:300 +uniIdConfig.config('tokenExpiresThreshold', 600) // 指定键值获取配置,如果不存在则取传入的默认值,返回:600 + +// 获取文件绝对路径 +uniIdConfig.resolve('custom-token.js') // 获取uni-config-center/uni-id/custom-token.js文件的路径 + +// 引用文件(require) +uniIDConfig.requireFile('custom-token.js') // 使用require方式引用uni-config-center/uni-id/custom-token.js文件。文件不存在时返回undefined,文件内有其他错误导致require失败时会抛出错误。 + +// 判断是否包含某文件 +uniIDConfig.hasFile('custom-token.js') // 配置目录是否包含某文件,true: 文件存在,false: 文件不存在 +``` \ No newline at end of file diff --git a/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js b/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js new file mode 100644 index 0000000..00ba62f --- /dev/null +++ b/uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js @@ -0,0 +1 @@ +"use strict";var t=require("fs"),r=require("path");function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var n=e(t),o=e(r),i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var u=function(t){var r={exports:{}};return t(r,r.exports),r.exports}((function(t,r){var e="__lodash_hash_undefined__",n=9007199254740991,o="[object Arguments]",u="[object Function]",c="[object Object]",a=/^\[object .+?Constructor\]$/,f=/^(?:0|[1-9]\d*)$/,s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s[o]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s[u]=s["[object Map]"]=s["[object Number]"]=s[c]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;var l="object"==typeof i&&i&&i.Object===Object&&i,h="object"==typeof self&&self&&self.Object===Object&&self,p=l||h||Function("return this")(),_=r&&!r.nodeType&&r,v=_&&t&&!t.nodeType&&t,d=v&&v.exports===_,y=d&&l.process,g=function(){try{var t=v&&v.require&&v.require("util").types;return t||y&&y.binding&&y.binding("util")}catch(t){}}(),b=g&&g.isTypedArray;function j(t,r,e){switch(e.length){case 0:return t.call(r);case 1:return t.call(r,e[0]);case 2:return t.call(r,e[0],e[1]);case 3:return t.call(r,e[0],e[1],e[2])}return t.apply(r,e)}var w,O,m,A=Array.prototype,z=Function.prototype,M=Object.prototype,x=p["__core-js_shared__"],C=z.toString,F=M.hasOwnProperty,U=(w=/[^.]+$/.exec(x&&x.keys&&x.keys.IE_PROTO||""))?"Symbol(src)_1."+w:"",S=M.toString,I=C.call(Object),P=RegExp("^"+C.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),T=d?p.Buffer:void 0,q=p.Symbol,E=p.Uint8Array,$=T?T.allocUnsafe:void 0,D=(O=Object.getPrototypeOf,m=Object,function(t){return O(m(t))}),k=Object.create,B=M.propertyIsEnumerable,N=A.splice,L=q?q.toStringTag:void 0,R=function(){try{var t=vt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),G=T?T.isBuffer:void 0,V=Math.max,W=Date.now,H=vt(p,"Map"),J=vt(Object,"create"),K=function(){function t(){}return function(r){if(!xt(r))return{};if(k)return k(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function Q(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r-1},X.prototype.set=function(t,r){var e=this.__data__,n=nt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this},Y.prototype.clear=function(){this.size=0,this.__data__={hash:new Q,map:new(H||X),string:new Q}},Y.prototype.delete=function(t){var r=_t(this,t).delete(t);return this.size-=r?1:0,r},Y.prototype.get=function(t){return _t(this,t).get(t)},Y.prototype.has=function(t){return _t(this,t).has(t)},Y.prototype.set=function(t,r){var e=_t(this,t),n=e.size;return e.set(t,r),this.size+=e.size==n?0:1,this},Z.prototype.clear=function(){this.__data__=new X,this.size=0},Z.prototype.delete=function(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e},Z.prototype.get=function(t){return this.__data__.get(t)},Z.prototype.has=function(t){return this.__data__.has(t)},Z.prototype.set=function(t,r){var e=this.__data__;if(e instanceof X){var n=e.__data__;if(!H||n.length<199)return n.push([t,r]),this.size=++e.size,this;e=this.__data__=new Y(n)}return e.set(t,r),this.size=e.size,this};var it,ut=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),u=i.length;u--;){var c=i[it?u:++n];if(!1===r(o[c],c,o))break}return t};function ct(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":L&&L in Object(t)?function(t){var r=F.call(t,L),e=t[L];try{t[L]=void 0;var n=!0}catch(t){}var o=S.call(t);n&&(r?t[L]=e:delete t[L]);return o}(t):function(t){return S.call(t)}(t)}function at(t){return Ct(t)&&ct(t)==o}function ft(t){return!(!xt(t)||function(t){return!!U&&U in t}(t))&&(zt(t)?P:a).test(function(t){if(null!=t){try{return C.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function st(t){if(!xt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=yt(t),e=[];for(var n in t)("constructor"!=n||!r&&F.call(t,n))&&e.push(n);return e}function lt(t,r,e,n,o){t!==r&&ut(r,(function(i,u){if(o||(o=new Z),xt(i))!function(t,r,e,n,o,i,u){var a=gt(t,e),f=gt(r,e),s=u.get(f);if(s)return void rt(t,e,s);var l=i?i(a,f,e+"",t,r,u):void 0,h=void 0===l;if(h){var p=Ot(f),_=!p&&At(f),v=!p&&!_&&Ft(f);l=f,p||_||v?Ot(a)?l=a:Ct(j=a)&&mt(j)?l=function(t,r){var e=-1,n=t.length;r||(r=Array(n));for(;++e-1&&t%1==0&&t0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(pt);function jt(t,r){return t===r||t!=t&&r!=r}var wt=at(function(){return arguments}())?at:function(t){return Ct(t)&&F.call(t,"callee")&&!B.call(t,"callee")},Ot=Array.isArray;function mt(t){return null!=t&&Mt(t.length)&&!zt(t)}var At=G||function(){return!1};function zt(t){if(!xt(t))return!1;var r=ct(t);return r==u||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}function Mt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}function xt(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function Ct(t){return null!=t&&"object"==typeof t}var Ft=b?function(t){return function(r){return t(r)}}(b):function(t){return Ct(t)&&Mt(t.length)&&!!s[ct(t)]};function Ut(t){return mt(t)?tt(t,!0):st(t)}var St,It=(St=function(t,r,e){lt(t,r,e)},ht((function(t,r){var e=-1,n=r.length,o=n>1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=St.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!xt(e))return!1;var n=typeof r;return!!("number"==n?mt(e)&&dt(r,e.length):"string"==n&&r in e)&&jt(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++ec.call(t,r);class f{constructor({pluginId:t,defaultConfig:r={},customMerge:e,root:n}){this.pluginId=t,this.defaultConfig=r,this.pluginConfigPath=o.default.resolve(n||__dirname,t),this.customMerge=e,this._config=void 0}resolve(t){return o.default.resolve(this.pluginConfigPath,t)}hasFile(t){return n.default.existsSync(this.resolve(t))}requireFile(t){try{return require(this.resolve(t))}catch(t){if("MODULE_NOT_FOUND"===t.code)return;throw t}}_getUserConfig(){return this.requireFile("config.json")}config(t,r){if(!this._config){const t=this._getUserConfig();this._config=Array.isArray(t)?t:(this.customMerge||u)(this.defaultConfig,t)}let e=this._config;return t?function(t,r,e){if("number"==typeof r)return t[r];if("symbol"==typeof r)return a(t,r)?t[r]:e;const n="string"!=typeof(o=r)?o:o.split(".").reduce(((t,r)=>(r.split(/\[([^}]+)\]/g).forEach((r=>r&&t.push(r))),t)),[]);var o;let i=t;for(let t=0;t { + return (item.dcloudAppid === appid) + }) + } + return this._uniIdConfig + } +} + +class AppConfig extends ConfigBase { + + constructor() { + super() + } + + get(appid, platform) { + if (!this.isSupport(platform)) { + return null + } + + let appConfig = this.getAppConfig(appid) + if (!appConfig) { + return null + } + + return this.getOauthConfig(appConfig, platform) + } + + isSupport(platformName) { + return (Support_Platforms.indexOf(platformName) >= 0) + } + + getOauthConfig(appConfig, platformName) { + let treePath = OauthConfig[platformName] + let node = this.findNode(appConfig, treePath) + if (node && node.appid && node.appsecret) { + return { + appid: node.appid, + secret: node.appsecret + } + } + return null + } + + findNode(treeNode, arrayPath) { + let node = treeNode + for (let treePath of arrayPath) { + for (let name of treePath) { + const currentNode = node[name] + if (currentNode) { + node = currentNode + } else { + node = null + break + } + } + if (node === null) { + node = treeNode + } else { + break + } + } + return node + } +} + + +module.exports = { + AppConfig +}; \ No newline at end of file diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/consts.js b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/consts.js new file mode 100644 index 0000000..4c666e9 --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/consts.js @@ -0,0 +1,30 @@ +'use strict'; + +const TAG = "UNI_OPEN_BRIDGE" + +const HTTP_STATUS = { + SUCCESS: 200 +} + +const ProviderType = { + WEIXIN_MP: 'weixin-mp', + WEIXIN_H5: 'weixin-h5', + WEIXIN_APP: 'weixin-app', + WEIXIN_WEB: 'weixin-web', + QQ_MP: 'qq-mp', + QQ_APP: 'qq-app' +} + +// old +const PlatformType = ProviderType + +const ErrorCodeType = { + SYSTEM_ERROR: TAG + "_SYSTEM_ERROR" +} + +module.exports = { + HTTP_STATUS, + ProviderType, + PlatformType, + ErrorCodeType +} diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/index.js b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/index.js new file mode 100644 index 0000000..fc23cd9 --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/index.js @@ -0,0 +1,317 @@ +'use strict'; + +const { + PlatformType, + ProviderType, + ErrorCodeType +} = require('./consts.js') + +const { + AppConfig +} = require('./config.js') + +const { + Storage +} = require('./storage.js') + +const { + BridgeError +} = require('./bridge-error.js') + +const { + WeixinServer +} = require('./weixin-server.js') + +const appConfig = new AppConfig() + +class AccessToken extends Storage { + + constructor() { + super('access-token', ['provider', 'appid']) + } + + async update(key) { + super.update(key) + + const result = await this.getByWeixinServer(key) + + return this.set(key, result.value, result.duration) + } + + async fallback(key) { + return this.getByWeixinServer(key) + } + + async getByWeixinServer(key) { + const oauthConfig = appConfig.get(key.dcloudAppid, key.provider) + let methodName + if (key.provider === ProviderType.WEIXIN_MP) { + methodName = 'GetMPAccessTokenData' + } else if (key.provider === ProviderType.WEIXIN_H5) { + methodName = 'GetH5AccessTokenData' + } else { + throw new BridgeError(ErrorCodeType.SYSTEM_ERROR, "provider invalid") + } + + const responseData = await WeixinServer[methodName](oauthConfig) + + const duration = responseData.expires_in || (60 * 60 * 2) + delete responseData.expires_in + + return { + value: responseData, + duration + } + } +} + +class UserAccessToken extends Storage { + + constructor() { + super('user-access-token', ['provider', 'appid', 'openid']) + } +} + +class SessionKey extends Storage { + + constructor() { + super('session-key', ['provider', 'appid', 'openid']) + } +} + +class Encryptkey extends Storage { + + constructor() { + super('encrypt-key', ['provider', 'appid', 'openid']) + } + + async update(key) { + super.update(key) + + const result = await this.getByWeixinServer(key) + + return this.set(key, result.value, result.duration) + } + + getKeyString(key) { + return `${super.getKeyString(key)}-${key.version}` + } + + getExpiresIn(value) { + if (value <= 0) { + return 60 + } + return value + } + + async fallback(key) { + return this.getByWeixinServer(key) + } + + async getByWeixinServer(key) { + const accessToken = await Factory.Get(AccessToken, key) + const userSession = await Factory.Get(SessionKey, key) + + const responseData = await WeixinServer.GetUserEncryptKeyData({ + openid: key.openid, + access_token: accessToken.access_token, + session_key: userSession.session_key + }) + + const keyInfo = responseData.key_info_list.find((item) => { + return item.version === key.version + }) + + if (!keyInfo) { + throw new BridgeError(ErrorCodeType.SYSTEM_ERROR, 'key version invalid') + } + + const value = { + encrypt_key: keyInfo.encrypt_key, + iv: keyInfo.iv + } + + return { + value, + duration: keyInfo.expire_in + } + } +} + +class Ticket extends Storage { + + constructor() { + super('ticket', ['provider', 'appid']) + } + + async update(key) { + super.update(key) + + const result = await this.getByWeixinServer(key) + + return this.set(key, result.value, result.duration) + } + + async fallback(key) { + return this.getByWeixinServer(key) + } + + async getByWeixinServer(key) { + const accessToken = await Factory.Get(AccessToken, { + dcloudAppid: key.dcloudAppid, + provider: ProviderType.WEIXIN_H5 + }) + + const responseData = await WeixinServer.GetH5TicketData(accessToken) + + const duration = responseData.expires_in || (60 * 60 * 2) + delete responseData.expires_in + delete responseData.errcode + delete responseData.errmsg + + return { + value: responseData, + duration + } + } +} + + +const Factory = { + + async Get(T, key, fallback) { + Factory.FixOldKey(key) + return Factory.MakeUnique(T).get(key, fallback) + }, + + async Set(T, key, value, expiresIn) { + Factory.FixOldKey(key) + return Factory.MakeUnique(T).set(key, value, expiresIn) + }, + + async Remove(T, key) { + Factory.FixOldKey(key) + return Factory.MakeUnique(T).remove(key) + }, + + async Update(T, key) { + Factory.FixOldKey(key) + return Factory.MakeUnique(T).update(key) + }, + + FixOldKey(key) { + if (!key.provider) { + key.provider = key.platform + } + + const configData = appConfig.get(key.dcloudAppid, key.provider) + if (!configData) { + throw new BridgeError(ErrorCodeType.SYSTEM_ERROR, 'appid or provider invalid') + } + key.appid = configData.appid + }, + + MakeUnique(T) { + return new T() + } +} + + +// exports + +async function getAccessToken(key, fallback) { + return Factory.Get(AccessToken, key, fallback) +} + +async function setAccessToken(key, value, expiresIn) { + return Factory.Set(AccessToken, key, value, expiresIn) +} + +async function removeAccessToken(key) { + return Factory.Remove(AccessToken, key) +} + +async function updateAccessToken(key) { + return Factory.Update(AccessToken, key) +} + +async function getUserAccessToken(key, fallback) { + return Factory.Get(UserAccessToken, key, fallback) +} + +async function setUserAccessToken(key, value, expiresIn) { + return Factory.Set(UserAccessToken, key, value, expiresIn) +} + +async function removeUserAccessToken(key) { + return Factory.Remove(UserAccessToken, key) +} + +async function getSessionKey(key, fallback) { + return Factory.Get(SessionKey, key, fallback) +} + +async function setSessionKey(key, value, expiresIn) { + return Factory.Set(SessionKey, key, value, expiresIn) +} + +async function removeSessionKey(key) { + return Factory.Remove(SessionKey, key) +} + +async function getEncryptKey(key, fallback) { + return Factory.Get(Encryptkey, key, fallback) +} + +async function setEncryptKey(key, value, expiresIn) { + return Factory.Set(Encryptkey, key, value, expiresIn) +} + +async function removeEncryptKey(key) { + return Factory.Remove(Encryptkey, key) +} + +async function updateEncryptKey(key) { + return Factory.Update(Encryptkey, key) +} + +async function getTicket(key, fallback) { + return Factory.Get(Ticket, key, fallback) +} + +async function setTicket(key, value, expiresIn) { + return Factory.Set(Ticket, key, value, expiresIn) +} + +async function removeTicket(key) { + return Factory.Remove(Ticket, key) +} + +async function updateTicket(key) { + return Factory.Update(Ticket, key) +} + +module.exports = { + getAccessToken, + setAccessToken, + removeAccessToken, + updateAccessToken, + getUserAccessToken, + setUserAccessToken, + removeUserAccessToken, + getSessionKey, + setSessionKey, + removeSessionKey, + getEncryptKey, + setEncryptKey, + removeEncryptKey, + updateEncryptKey, + getTicket, + setTicket, + removeTicket, + updateTicket, + ProviderType, + PlatformType, + WeixinServer, + ErrorCodeType +} diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/package.json b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/package.json new file mode 100644 index 0000000..a017b49 --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/package.json @@ -0,0 +1,15 @@ +{ + "name": "uni-open-bridge-common", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" + } +} \ No newline at end of file diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/storage.js b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/storage.js new file mode 100644 index 0000000..bfb13a1 --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/storage.js @@ -0,0 +1,111 @@ +'use strict'; + +const { + Validator +} = require('./validator.js') + +const { + CacheKeyCascade +} = require('./uni-cloud-cache.js') + +const { + BridgeError +} = require('./bridge-error.js') + +class Storage { + + constructor(type, keys) { + this._type = type || null + this._keys = keys || [] + } + + async get(key, fallback) { + this.validateKey(key) + const result = await this.create(key, fallback).get() + return result.value + } + + async set(key, value, expiresIn) { + this.validateKey(key) + this.validateValue(value) + const expires_in = this.getExpiresIn(expiresIn) + if (expires_in !== 0) { + await this.create(key).set(this.getValue(value), expires_in) + } + } + + async remove(key) { + this.validateKey(key) + await this.create(key).remove() + } + + // virtual + async update(key) { + this.validateKey(key) + } + + async ttl(key) { + this.validateKey(key) + // 后续考虑支持 + } + + async fallback(key) {} + + getKeyString(key) { + const keyArray = [Storage.Prefix] + this._keys.forEach((name) => { + keyArray.push(key[name]) + }) + keyArray.push(this._type) + return keyArray.join(':') + } + + getValue(value) { + return value + } + + getExpiresIn(value) { + if (value !== undefined) { + return value + } + return -1 + } + + validateKey(key) { + Validator.Key(this._keys, key) + } + + validateValue(value) { + Validator.Value(value) + } + + create(key, fallback) { + const keyString = this.getKeyString(key) + const options = { + layers: [{ + type: 'database', + key: keyString + }, { + type: 'redis', + key: keyString + }] + } + + const _this = this + return new CacheKeyCascade({ + ...options, + fallback: async function() { + if (fallback) { + return fallback(key) + } else if (_this.fallback) { + return _this.fallback(key) + } + } + }) + } +} +Storage.Prefix = "uni-id" + +module.exports = { + Storage +}; diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/uni-cloud-cache.js b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/uni-cloud-cache.js new file mode 100644 index 0000000..2e4286b --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/uni-cloud-cache.js @@ -0,0 +1,324 @@ +const db = uniCloud.database() + +function getType(value) { + return Object.prototype.toString.call(value).slice(8, -1).toLowerCase() +} + +const validator = { + key: function(value) { + const err = new Error('Invalid key') + if (typeof value !== 'string') { + throw err + } + const valueTrim = value.trim() + if (!valueTrim || valueTrim !== value) { + throw err + } + }, + value: function(value) { + // 仅作简单校验 + const type = getType(value) + const validValueType = ['null', 'number', 'string', 'array', 'object'] + if (validValueType.indexOf(type) === -1) { + throw new Error('Invalid value type') + } + }, + duration: function(value) { + const err = new Error('Invalid duration') + if (value === undefined) { + return + } + if (typeof value !== 'number' || value === 0) { + throw err + } + } +} + +/** + * 入库时 expired 为过期时间对应的时间戳,永不过期用-1表示 + * 返回结果时 与redis对齐,-1表示永不过期,-2表示已过期或不存在 + */ +class DatabaseCache { + constructor({ + collection = 'opendb-open-data' + } = {}) { + this.type = 'db' + this.collection = db.collection(collection) + } + + _serializeValue(value) { + return value === undefined ? null : JSON.stringify(value) + } + + _deserializeValue(value) { + return value ? JSON.parse(value) : value + } + + async set(key, value, duration) { + validator.key(key) + validator.value(value) + validator.duration(duration) + value = this._serializeValue(value) + await this.collection.doc(key).set({ + value, + expired: duration && duration !== -1 ? Date.now() + (duration * 1000) : -1 + }) + } + + async _getWithDuration(key) { + const getKeyRes = await this.collection.doc(key).get() + const record = getKeyRes.data[0] + if (!record) { + return { + value: null, + duration: -2 + } + } + const value = this._deserializeValue(record.value) + const expired = record.expired + if (expired === -1) { + return { + value, + duration: -1 + } + } + const duration = expired - Date.now() + if (duration <= 0) { + await this.remove(key) + return { + value: null, + duration: -2 + } + } + return { + value, + duration: Math.floor(duration / 1000) + } + } + + async get(key, { + withDuration = true + } = {}) { + const result = await this._getWithDuration(key) + if (!withDuration) { + delete result.duration + } + return result + } + + async remove(key) { + await this.collection.doc(key).remove() + } +} + +class RedisCache { + constructor() { + this.type = 'redis' + this.redis = uniCloud.redis() + } + + _serializeValue(value) { + return value === undefined ? null : JSON.stringify(value) + } + + _deserializeValue(value) { + return value ? JSON.parse(value) : value + } + + async set(key, value, duration) { + validator.key(key) + validator.value(value) + validator.duration(duration) + value = this._serializeValue(value) + if (!duration || duration === -1) { + await this.redis.set(key, value) + } else { + await this.redis.set(key, value, 'EX', duration) + } + } + + async get(key, { + withDuration = false + } = {}) { + let value = await this.redis.get(key) + value = this._deserializeValue(value) + if (!withDuration) { + return { + value + } + } + const durationSecond = await this.redis.ttl(key) + let duration + switch (durationSecond) { + case -1: + duration = -1 + break + case -2: + duration = -2 + break + default: + duration = durationSecond + break + } + return { + value, + duration + } + } + + async remove(key) { + await this.redis.del(key) + } +} + +class Cache { + constructor({ + type, + collection + } = {}) { + if (type === 'database') { + return new DatabaseCache({ + collection + }) + } else if (type === 'redis') { + return new RedisCache() + } else { + throw new Error('Invalid cache type') + } + } +} + +class CacheKey { + constructor({ + type, + collection, + cache, + key, + fallback + } = {}) { + this.cache = cache || new Cache({ + type, + collection + }) + this.key = key + this.fallback = fallback + } + + async set(value, duration) { + await this.cache.set(this.key, value, duration) + } + + async setWithSync(value, duration, syncMethod) { + await Promise.all([ + this.set(this.key, value, duration), + syncMethod(value, duration) + ]) + } + + async get() { + let { + value, + duration + } = await this.cache.get(this.key) + if (value !== null && value !== undefined) { + return { + value, + duration + } + } + if (!this.fallback) { + return { + value: null, + duration: -2 + } + } + const fallbackResult = await this.fallback() + value = fallbackResult.value + duration = fallbackResult.duration + if (value !== null && duration !== undefined) { + await this.cache.set(this.key, value, duration) + } + return { + value, + duration + } + } + + async remove() { + await this.cache.remove(this.key) + } +} + +class CacheKeyCascade { + constructor({ + layers, // [{cache, type, collection, key}] 从低级到高级排序,[DbCacheKey, RedisCacheKey] + fallback + } = {}) { + this.layers = layers + this.cacheLayers = [] + let lastCacheKey + for (let i = 0; i < layers.length; i++) { + const { + type, + cache, + collection, + key + } = layers[i] + const lastCacheKeyTemp = lastCacheKey + try { + const currentCacheKey = new CacheKey({ + type, + collection, + cache, + key, + fallback: i === 0 ? fallback : function() { + return lastCacheKeyTemp.get() + } + }) + this.cacheLayers.push(currentCacheKey) + lastCacheKey = currentCacheKey + } catch (e) {} + } + this.highLevelCache = lastCacheKey + } + + async set(value, duration) { + return Promise.all( + this.cacheLayers.map(item => { + return item.set(value, duration) + }) + ) + } + + async setWithSync(value, duration, syncMethod) { + const setPromise = this.cacheLayers.map(item => { + return item.set(value, duration) + }) + return Promise.all( + [ + ...setPromise, + syncMethod(value, duration) + ] + ) + } + + async get() { + return this.highLevelCache.get() + } + + async remove() { + await Promise.all( + this.cacheLayers.map(cacheKeyItem => { + return cacheKeyItem.remove() + }) + ) + } +} + +module.exports = { + Cache, + DatabaseCache, + RedisCache, + CacheKey, + CacheKeyCascade +} diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/validator.js b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/validator.js new file mode 100644 index 0000000..47a455b --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/validator.js @@ -0,0 +1,31 @@ +const Validator = { + + Key(keyArray, parameters) { + for (let i = 0; i < keyArray.length; i++) { + const keyName = keyArray[i] + if (typeof parameters[keyName] !== 'string') { + Validator.ThrowNewError(`Invalid ${keyName}`) + } + if (parameters[keyName].length < 1) { + Validator.ThrowNewError(`Invalid ${keyName}`) + } + } + }, + + Value(value) { + if (value === undefined) { + Validator.ThrowNewError('Invalid Value') + } + if (typeof value !== 'object') { + Validator.ThrowNewError('Invalid Value Type') + } + }, + + ThrowNewError(message) { + throw new Error(message) + } +} + +module.exports = { + Validator +} diff --git a/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/weixin-server.js b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/weixin-server.js new file mode 100644 index 0000000..ef476f1 --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/cloudfunctions/common/uni-open-bridge-common/weixin-server.js @@ -0,0 +1,203 @@ +'use strict'; + +const crypto = require('crypto') + +const { + HTTP_STATUS +} = require('./consts.js') + +const { + BridgeError +} = require('./bridge-error.js') + +class WeixinServer { + + constructor(options = {}) { + this._appid = options.appid + this._secret = options.secret + } + + getAccessToken() { + return uniCloud.httpclient.request(WeixinServer.AccessToken_Url, { + dataType: 'json', + method: 'POST', + contentType: 'json', + data: { + appid: this._appid, + secret: this._secret, + grant_type: "client_credential" + } + }) + } + + // 使用客户端获取的 code 从微信服务器换取 openid,code 仅可使用一次 + codeToSession(code) { + return uniCloud.httpclient.request(WeixinServer.Code2Session_Url, { + dataType: 'json', + data: { + appid: this._appid, + secret: this._secret, + js_code: code, + grant_type: 'authorization_code' + } + }) + } + + getUserEncryptKey({ + access_token, + openid, + session_key + }) { + console.log(access_token, openid, session_key); + const signature = crypto.createHmac('sha256', session_key).update('').digest('hex') + return uniCloud.httpclient.request(WeixinServer.User_Encrypt_Key_Url, { + dataType: 'json', + method: 'POST', + dataAsQueryString: true, + data: { + access_token, + openid: openid, + signature: signature, + sig_method: 'hmac_sha256' + } + }) + } + + getH5AccessToken() { + return uniCloud.httpclient.request(WeixinServer.AccessToken_H5_Url, { + dataType: 'json', + method: 'GET', + data: { + appid: this._appid, + secret: this._secret, + grant_type: "client_credential" + } + }) + } + + getH5Ticket(access_token) { + return uniCloud.httpclient.request(WeixinServer.Ticket_Url, { + dataType: 'json', + dataAsQueryString: true, + method: 'POST', + data: { + access_token + } + }) + } + + getH5AccessTokenForEip() { + return uniCloud.httpProxyForEip.postForm(WeixinServer.AccessToken_H5_Url, { + appid: this._appid, + secret: this._secret, + grant_type: "client_credential" + }, { + dataType: 'json' + }) + } + + getH5TicketForEip(access_token) { + return uniCloud.httpProxyForEip.postForm(WeixinServer.Ticket_Url, { + access_token + }, { + dataType: 'json', + dataAsQueryString: true + }) + } +} + +WeixinServer.AccessToken_Url = 'https://api.weixin.qq.com/cgi-bin/stable_token' +WeixinServer.Code2Session_Url = 'https://api.weixin.qq.com/sns/jscode2session' +WeixinServer.User_Encrypt_Key_Url = 'https://api.weixin.qq.com/wxa/business/getuserencryptkey' +WeixinServer.AccessToken_H5_Url = 'https://api.weixin.qq.com/cgi-bin/token' +WeixinServer.Ticket_Url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi' + +WeixinServer.GetMPAccessToken = function(options) { + return new WeixinServer(options).getAccessToken() +} + +WeixinServer.GetCodeToSession = function(options) { + return new WeixinServer(options).codeToSession(options.code) +} + +WeixinServer.GetUserEncryptKey = function(options) { + return new WeixinServer(options).getUserEncryptKey(options) +} + +WeixinServer.GetH5AccessToken = function(options) { + return new WeixinServer(options).getH5AccessToken() +} + +WeixinServer.GetH5Ticket = function(options) { + return new WeixinServer(options).getH5Ticket(options.access_token) +} + +//////////////////////////////////////////////////////////////// + +function isAliyun() { + return (uniCloud.getCloudInfos()[0].provider === 'aliyun') +} + +WeixinServer.GetResponseData = function(response) { + console.log("WeixinServer::response", response) + + if (!(response.status === HTTP_STATUS.SUCCESS || response.statusCodeValue === HTTP_STATUS.SUCCESS)) { + throw new BridgeError(response.status || response.statusCodeValue, response.status || response.statusCodeValue) + } + + const responseData = response.data || response.body + + if (responseData.errcode !== undefined && responseData.errcode !== 0) { + throw new BridgeError(responseData.errcode, responseData.errmsg) + } + + return responseData +} + +WeixinServer.GetMPAccessTokenData = async function(options) { + const response = await new WeixinServer(options).getAccessToken() + return WeixinServer.GetResponseData(response) +} + +WeixinServer.GetCodeToSessionData = async function(options) { + const response = await new WeixinServer(options).codeToSession(options.code) + return WeixinServer.GetResponseData(response) +} + +WeixinServer.GetUserEncryptKeyData = async function(options) { + const response = await new WeixinServer(options).getUserEncryptKey(options) + return WeixinServer.GetResponseData(response) +} + +WeixinServer.GetH5AccessTokenData = async function(options) { + const ws = new WeixinServer(options) + let response + if (isAliyun()) { + response = await ws.getH5AccessTokenForEip() + if (typeof response === 'string') { + response = JSON.parse(response) + } + } else { + response = await ws.getH5AccessToken() + } + return WeixinServer.GetResponseData(response) +} + +WeixinServer.GetH5TicketData = async function(options) { + const ws = new WeixinServer(options) + let response + if (isAliyun()) { + response = await ws.getH5TicketForEip(options.access_token) + if (typeof response === 'string') { + response = JSON.parse(response) + } + } else { + response = await ws.getH5Ticket(options.access_token) + } + return WeixinServer.GetResponseData(response) +} + + +module.exports = { + WeixinServer +} diff --git a/uni_modules/uni-open-bridge-common/uniCloud/database/opendb-open-data.schema.json b/uni_modules/uni-open-bridge-common/uniCloud/database/opendb-open-data.schema.json new file mode 100644 index 0000000..bc25098 --- /dev/null +++ b/uni_modules/uni-open-bridge-common/uniCloud/database/opendb-open-data.schema.json @@ -0,0 +1,19 @@ +// 文档教程: https://uniapp.dcloud.net.cn/uniCloud/schema +{ + "bsonType": "object", + "required": ["_id", "value"], + "properties": { + "_id": { + "bsonType": "string", + "description": "key,格式:uni-id:[provider]:[appid]:[openid]:[access-token|user-access-token|session-key|encrypt-key-version|ticket]" + }, + "value": { + "bsonType": "object", + "description": "字段_id对应的值" + }, + "expired": { + "bsonType": "date", + "description": "过期时间" + } + } +} diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-swiper-dot/changelog.md b/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..b222c0f --- /dev/null +++ b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uni-swiper-dot/package.json b/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/readme.md b/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE new file mode 100644 index 0000000..4db40ef --- /dev/null +++ b/uni_modules/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 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/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md new file mode 100644 index 0000000..c78ff47 --- /dev/null +++ b/uni_modules/uview-ui/README.md @@ -0,0 +1,66 @@ +

+ logo +

+

uView 2.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![forks](https://img.shields.io/github/forks/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![issues](https://img.shields.io/github/issues/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0/issues) +[![Website](https://img.shields.io/badge/uView-up-blue?style=flat-square)](https://uviewui.com) +[![release](https://img.shields.io/github/v/release/umicro/uView2.0?style=flat-square)](https://gitee.com/umicro/uView2.0/releases) +[![license](https://img.shields.io/github/license/umicro/uView2.0?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## [官方文档:https://uviewui.com](https://uviewui.com) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + + +## 链接 + +- [官方文档](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并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) + +请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 + diff --git a/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md new file mode 100644 index 0000000..f2bae72 --- /dev/null +++ b/uni_modules/uview-ui/changelog.md @@ -0,0 +1,362 @@ +## 2.0.36(2023-03-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 重构`deepClone` & `deepMerge`方法 +2. 其他优化 +## 2.0.34(2022-09-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-input`、`u-textarea`增加`ignoreCompositionEvent`属性 +2. 修复`route`方法调用可能报错的问题 +3. 修复`u-no-network`组件`z-index`无效的问题 +4. 修复`textarea`组件在h5上confirmType=""报错的问题 +5. `u-rate`适配`nvue` +6. 优化验证手机号码的正则表达式(根据工信部发布的《电信网编号计划(2017年版)》进行修改。) +7. `form-item`添加`labelPosition`属性 +8. `u-calendar`修复`maxDate`设置为当前日期,并且当前时间大于08:00时无法显示日期列表的问题 (#724) +9. `u-radio`增加一个默认插槽用于自定义修改label内容 (#680) +10. 修复`timeFormat`函数在safari重的兼容性问题 (#664) +## 2.0.33(2022-06-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`loadmore`组件`lineColor`类型错误问题 +2. 修复`u-parse`组件`imgtap`、`linktap`不生效问题 +## 2.0.32(2022-06-16) +# uView2.0重磅发布,利剑出鞘,一统江湖 +1. `u-loadmore`新增自定义颜色、虚/实线 +2. 修复`u-swiper-action`组件部分平台不能上下滑动的问题 +3. 修复`u-list`回弹问题 +4. 修复`notice-bar`组件动画在低端安卓机可能会抖动的问题 +5. `u-loading-page`添加控制图标大小的属性`iconSize` +6. 修复`u-tooltip`组件`color`参数不生效的问题 +7. 修复`u--input`组件使用`blur`事件输出为`undefined`的bug +8. `u-code-input`组件新增键盘弹起时,是否自动上推页面参数`adjustPosition` +9. 修复`image`组件`load`事件无回调对象问题 +10. 修复`button`组件`loadingSize`设置无效问题 +10. 其他修复 +## 2.0.31(2022-04-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`upload`在`vue`页面上传成功后没有成功标志的问题 +2. 解决演示项目中微信小程序模拟上传图片一直出于上传中问题 +3. 修复`u-code-input`组件在`nvue`页面编译到`app`平台上光标异常问题(`app`去除此功能) +4. 修复`actionSheet`组件标题关闭按钮点击事件名称错误的问题 +5. 其他修复 +## 2.0.30(2022-04-04) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-rate`增加`readonly`属性 +2. `tabs`滑块支持设置背景图片 +3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题 +4. `u-code-input`添加光标效果动画 +5. 修复`popup`的`open`事件不触发 +6. 修复`u-flex-column`无效的问题 +7. 修复`u-datetime-picker`索引在特定场合异常问题 +8. 修复`u-datetime-picker`最小时间字符串模板错误问题 +9. `u-swiper`添加`m3u8`验证 +10. `u-swiper`修改判断image和video逻辑 +11. 修复`swiper`无法使用本地图片问题,增加`type`参数 +12. 修复`u-row-notice`格式错误问题 +13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题 +14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题 +15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题 +16. 修复`u-checkbox-group`设置`shape`属性无效的问题 +17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题 +18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题 +19. 修复`u-list`触顶事件的触发错误的问题 +20. 修复`u-text`只有手机号可拨打的问题 +21. 修复`u-textarea`不能换行的问题 +22. 其他修复 +## 2.0.29(2022-03-13) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`u--text`组件设置`decoration`属性未生效的问题 +2. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +3. 修复`u-datetime-picker` `intercept` 可能为undefined +4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度 +5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效 +6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug +7. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +8. 修复`u-image`组件`loading`无效果的问题 +9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题 +10. 修复`u-datetime-picker`组件`itemHeight`无效问题 +11. 其他修复 +## 2.0.28(2022-02-22) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. search组件新增searchIconSize属性 +2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56 +3. 修复text value.js 判断日期出format错误问题 +4. priceFormat格式化金额出现精度错误 +5. priceFormat在部分情况下出现精度损失问题 +6. 优化表单rules提示 +7. 修复avatar组件src为空时,展示状态不对 +8. 其他修复 +## 2.0.27(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.26(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.25(2022-01-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复text组件mode=price时,可能会导致精度错误的问题 +2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题 +4. 修复$u.addUnit()对配置默认单位可能无效的问题 +## 2.0.24(2022-01-25) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复swiper在current指定非0时缩放有误 +2. 修复u-icon添加stop属性的时候报错 +3. 优化遗留的通过正则判断rpx单位的问题 +4. 优化Layout布局 vue使用gutter时,会超出固定区域 +5. 优化search组件高度单位问题(rpx -> px) +6. 修复u-image slot 加载和错误的图片失去了高度 +7. 修复u-index-list中footer插槽与header插槽存在性判断错误 +8. 修复部分机型下u-popup关闭时会闪烁 +9. 修复u-image在nvue-app下失去宽高 +10. 修复u-popup运行报错 +11. 修复u-tooltip报错 +12. 修复box-sizing在app下的警告 +13. 修复u-navbar在小程序中报运行时错误 +14. 其他修复 +## 2.0.23(2022-01-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题 +2. 修复col组件gutter参数带rpx单位处理不正确的问题 +3. 修复text组件单行时无法显示省略号的问题 +4. navbar添加titleStyle参数 +5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题 +## 2.0.22(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. $u.page()方法优化,避免在特殊场景可能报错的问题 +2. picker组件添加immediateChange参数 +3. 新增$u.pages()方法 +## 2.0.21(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化:form组件在用户设置rules的时候提示用户model必传 +2. 优化遗留的通过正则判断rpx单位的问题 +3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确 +4. 修复swiper在current指定非0时缩放有误 +5. 修复u-icon添加stop属性的时候报错 +6. 修复upload组件在accept=all的时候没有作用 +7. 修复在text组件mode为phone时call属性无效的问题 +8. 处理u-form clearValidate方法 +9. 其他修复 +## 2.0.20(2022-01-14) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题 +2. 修复Slider缺少disabled props 还有注释 +3. 修复u-notice-bar点击事件无法拿到index索引值的问题 +4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题 +5. 优化头像为空时显示默认头像 +6. 修复图片地址赋值后判断加载状态为完成问题 +7. 修复日历滚动到默认日期月份区域 +8. search组件暴露点击左边icon事件 +9. 修复u-form clearValidate方法不生效 +10. upload h5端增加返回文件参数(文件的name参数) +11. 处理upload选择文件后url为blob类型无法预览的问题 +12. u-code-input 修复输入框没有往左移出一半屏幕 +13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误 +14. 临时处理ios app下grid点击坍塌问题 +15. 其他修复 +## 2.0.19(2021-12-29) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码” +2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题 +3. navbar添加autoBack参数 +4. 允许avatar组件的事件冒泡 +5. 修复cell组件报错问题 +6. 其他修复 +## 2.0.18(2021-12-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复app端编译报错问题 +2. 重新处理微信小程序端setData过大的性能问题 +3. 修复边框问题 +4. 修复最大最小月份不大于0则没有数据出现的问题 +5. 修复SwipeAction微信小程序端无法上下滑动问题 +6. 修复input的placeholder在小程序端默认显示为true问题 +7. 修复divider组件click事件无效问题 +8. 修复u-code-input maxlength 属性值为 String 类型时显示异常 +9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题 +10. 处理form-item的label为top时,取消错误提示的左边距 +11. 其他修复 +## 2.0.17(2021-12-26) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决HBuilderX3.3.3.20211225版本导致的样式问题 +2. calendar日历添加monthNum参数 +3. navbar添加center slot +## 2.0.16(2021-12-25) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决微信小程序setData性能问题 +2. 修复count-down组件change事件不触发问题 +## 2.0.15(2021-12-21) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复Cell单元格titleWidth无效 +2. 修复cheakbox组件ischecked不更新 +3. 修复keyboard是否显示"."按键默认值问题 +4. 修复number-keyboard是否显示键盘的"."符号问题 +5. 修复Input输入框 readonly无效 +6. 修复u-avatar 导致打包app、H5时候报错问题 +7. 修复Upload上传deletable无效 +8. 修复upload当设置maxSize时无效的问题 +9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题 +10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星 +## 2.0.13(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题 +## 2.0.12(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复tabs组件在vue环境下划线消失的问题 +2. 修复upload组件在安卓小程序无法选择视频的问题 +3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +4. 修复textarea组件在没绑定v-model时,字符统计不生效问题 +5. 修复nvue下控制是否出现滚动条失效问题 +## 2.0.11(2021-12-13) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. text组件align参数无效的问题 +2. subsection组件添加keyName参数 +3. upload组件无法判断[Object file]类型的问题 +4. 处理notify层级过低问题 +5. codeInput组件添加disabledDot参数 +6. 处理actionSheet组件round参数无效的问题 +7. calendar组件添加round参数用于控制圆角值 +8. 处理swipeAction组件在vue环境下默认被打开的问题 +9. button组件的throttleTime节流参数无效的问题 +10. 解决u-notify手动关闭方法close()无效的问题 +11. input组件readonly不生效问题 +12. tag组件type参数为info不生效问题 +## 2.0.10(2021-12-08) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复button sendMessagePath属性不生效 +2. 修复DatetimePicker选择器title无效 +3. 修复u-toast设置loading=true不生效 +4. 修复u-text金额模式传0报错 +5. 修复u-toast组件的icon属性配置不生效 +6. button的icon在特殊场景下的颜色优化 +7. IndexList优化,增加# +## 2.0.9(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题 +2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题 +3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效 +4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题 +## 2.0.8(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复toast的position参数无效问题 +2. 处理input在ios nvue上无法获得焦点的问题 +3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制 +4. tabs组件添加keyName参数用于配置从对象中读取的键名 +5. 处理text组件名字脱敏默认配置无效的问题 +6. 处理picker组件item文本太长换行问题 +## 2.0.7(2021-11-30) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复radio和checkbox动态改变v-model无效的问题。 +2. 优化form规则validator在微信小程序用法 +3. 修复backtop组件mode参数在微信小程序无效的问题 +4. 处理Album的previewFullImage属性无效的问题 +5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题 +## 2.0.6(2021-11-27) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 处理tag组件在vue下边框无效的问题。 +2. 处理popup组件圆角参数可能无效的问题。 +3. 处理tabs组件lineColor参数可能无效的问题。 +4. propgress组件在值很小时,显示异常的问题。 +## 2.0.5(2021-11-25) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. calendar在vue下显示异常问题。 +2. form组件labelPosition和errorType参数无效的问题 +3. input组件inputAlign无效的问题 +4. 其他一些修复 +## 2.0.4(2021-11-23) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +0. input组件缺失@confirm事件,以及subfix和prefix无效问题 +1. component.scss文件样式在vue下干扰全局布局问题 +2. 修复subsection在vue环境下表现异常的问题 +3. tag组件的bgColor等参数无效的问题 +4. upload组件不换行的问题 +5. 其他的一些修复处理 +## 2.0.3(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 处理modal的confirm回调事件拼写错误问题 +6. 处理input组件@input事件参数错误问题 +7. 其他一些修复 +## 2.0.2(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 +6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss +## 2.0.0(2020-11-15) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 + + diff --git a/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..fdfc212 --- /dev/null +++ b/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..21b7ab1 --- /dev/null +++ b/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..1e58b01 --- /dev/null +++ b/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..44ee52a --- /dev/null +++ b/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..f4df0b9 --- /dev/null +++ b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,48 @@ + + + diff --git a/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..26d5d8d --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..687e2d5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..3319be5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..2d07566 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/uni_modules/uview-ui/components/u-button/u-button.vue b/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..5494351 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,490 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/vue.scss b/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/header.vue b/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/month.vue b/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..c20937f --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/props.js b/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..2ad7bc7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,144 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..511f993 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/util.js b/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/props.js b/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..51175b5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-cell-group/props.js b/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-cell/props.js b/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..da03330 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,110 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell/u-cell.vue b/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b099c90 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox-group/props.js b/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox/props.js b/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-circle-progress/props.js b/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code-input/props.js b/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..0f016ee --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,79 @@ +export default { + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: uni.$u.props.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: uni.$u.props.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: uni.$u.props.codeInput.space + }, + // 预置值 + value: { + type: [String, Number], + default: uni.$u.props.codeInput.value + }, + // 是否自动获取焦点 + focus: { + type: Boolean, + default: uni.$u.props.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: uni.$u.props.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: uni.$u.props.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: uni.$u.props.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: uni.$u.props.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: uni.$u.props.codeInput.disabledDot + } + } +} diff --git a/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..96241cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code/props.js b/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/uni_modules/uview-ui/components/u-code/u-code.vue b/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..f79a09a --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-col/props.js b/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/uni_modules/uview-ui/components/u-col/u-col.vue b/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..8be1517 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse-item/props.js b/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..0e1b703 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse/props.js b/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-column-notice/props.js b/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..fc39532 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/props.js b/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..b5e85a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/utils.js b/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-ui/components/u-count-to/props.js b/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker-my/props.js b/uni_modules/uview-ui/components/u-datetime-picker-my/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker-my/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker-my/u-datetime-picker-my.vue b/uni_modules/uview-ui/components/u-datetime-picker-my/u-datetime-picker-my.vue new file mode 100644 index 0000000..e719264 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker-my/u-datetime-picker-my.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker/props.js b/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..18d8dcc --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-divider/props.js b/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-divider/u-divider.vue b/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..b629da6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown-item/props.js b/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown/props.js b/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-empty/props.js b/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-empty/u-empty.vue b/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form-item/props.js b/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..7b16655 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,48 @@ +export default { + props: { + // input的label提示语 + label: { + type: String, + default: uni.$u.props.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: uni.$u.props.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: uni.$u.props.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: uni.$u.props.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: uni.$u.props.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: uni.$u.props.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: uni.$u.props.formItem.leftIconStyle, + } + } +} diff --git a/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..6aa8d69 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form/props.js b/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-form/u-form.vue b/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..fe2dde2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-gap/props.js b/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/uni_modules/uview-ui/components/u-gap/u-gap.vue b/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid-item/props.js b/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..fc0c7cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid/props.js b/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid/u-grid.vue b/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..b43cc27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-icon/icons.js b/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-ui/components/u-icon/props.js b/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/uni_modules/uview-ui/components/u-icon/u-icon.vue b/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..9340328 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-image/props.js b/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-image/u-image.vue b/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..473e35b --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-anchor/props.js b/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-item/props.js b/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-list/props.js b/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..d712618 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-input/props.js b/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..2c50870 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,187 @@ +export default { + props: { + // 输入的值 + value: { + type: [String, Number], + default: uni.$u.props.input.value + }, + // 输入框类型 + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: uni.$u.props.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: uni.$u.props.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: uni.$u.props.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: uni.$u.props.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: uni.$u.props.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: uni.$u.props.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: uni.$u.props.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: uni.$u.props.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: uni.$u.props.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: uni.$u.props.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: uni.$u.props.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: uni.$u.props.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: uni.$u.props.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: uni.$u.props.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: uni.$u.props.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: uni.$u.props.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: uni.$u.props.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: uni.$u.props.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: uni.$u.props.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: uni.$u.props.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: uni.$u.props.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: uni.$u.props.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: uni.$u.props.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: uni.$u.props.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: uni.$u.props.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: uni.$u.props.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-input/u-input.vue b/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..30073eb --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-keyboard/props.js b/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line-progress/props.js b/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line/props.js b/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..2308cc3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-line/u-line.vue b/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..e0a6d92 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-link/props.js b/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/uni_modules/uview-ui/components/u-link/u-link.vue b/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list-item/props.js b/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list/props.js b/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/uni_modules/uview-ui/components/u-list/u-list.vue b/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..4447cab --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-icon/props.js b/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-page/props.js b/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..e239b61 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: uni.$u.props.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: uni.$u.props.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: uni.$u.props.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..03a78ad --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loadmore/props.js b/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..1e67d89 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,94 @@ +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: uni.$u.props.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: uni.$u.props.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: uni.$u.props.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: uni.$u.props.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: uni.$u.props.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: uni.$u.props.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: uni.$u.props.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: uni.$u.props.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: uni.$u.props.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: uni.$u.props.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: uni.$u.props.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.loadmore.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..73c79fe --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-modal/props.js b/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..f76672c --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + } + } +} diff --git a/uni_modules/uview-ui/components/u-modal/u-modal.vue b/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..2cbc737 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-navbar/props.js b/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..5398de2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: uni.$u.props.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: uni.$u.props.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: uni.$u.props.navbar.titleStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..2b206b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-no-network/props.js b/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9710729 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-notice-bar/props.js b/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uni_modules/uview-ui/components/u-notify/props.js b/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-notify/u-notify.vue b/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..30adb72 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-box/props.js b/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..69211c5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-keyboard/props.js b/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..4f505c6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-overlay/props.js b/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-parse/node/node.vue b/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..73e30fd --- /dev/null +++ b/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +