From 966e6449d1765929fa2dcecd028981c71fe1c4e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BD=90=E6=96=8C?= <1134087124@qq.com> Date: Wed, 25 Oct 2023 10:02:04 +0800 Subject: [PATCH] firstcommit --- .gitignore | 2 + .hbuilderx/launch.json | 27 + App.vue | 28 + common/index.js | 125 ++ common/index.scss | 1248 +++++++++++++++ components/inputSelect/inputSelect.vue | 416 +++++ components/navBar/navBar.vue | 113 ++ components/page-animation/index.css | 25 + components/page-animation/index.vue | 37 + components/pyh-rdtpicker/pyh-rdtpicker.vue | 383 +++++ components/pyh-rdtpicker/readme.md | 81 + components/tabBar/tabBar.vue | 97 ++ .../timeRang-picker/timeRang-picker.vue | 131 ++ components/w-picker/date-picker.vue | 1171 ++++++++++++++ components/w-picker/half-picker.vue | 526 +++++++ components/w-picker/range-picker.vue | 344 +++++ components/w-picker/w-picker.css | 32 + components/w-picker/w-picker.vue | 285 ++++ http/api.js | 7 + http/index.js | 13 + http/interface.js | 175 +++ index.html | 25 + main.js | 24 + manifest.json | 139 ++ package-lock.json | 63 + package.json | 25 + pages.json | 29 + pages/index/index.vue | 656 ++++++++ project.config.json | 29 + project.private.config.json | 7 + static/image/3.5.png | Bin 0 -> 6432 bytes static/image/4.0.png | Bin 0 -> 5678 bytes static/image/avator.png | Bin 0 -> 3450 bytes static/image/head.jpg | Bin 0 -> 3576 bytes static/image/shop-car.png | Bin 0 -> 8855 bytes static/image/success.png | Bin 0 -> 44445 bytes store/index.js | 16 + uni.promisify.adaptor.js | 10 + uni.scss | 77 + uni_modules/superwei-combox/changelog.md | 22 + .../superwei-combox/superwei-combox.vue | 381 +++++ uni_modules/superwei-combox/package.json | 89 ++ uni_modules/superwei-combox/readme.md | 104 ++ uni_modules/uni-combox/changelog.md | 15 + .../components/uni-combox/uni-combox.vue | 275 ++++ uni_modules/uni-combox/package.json | 90 ++ uni_modules/uni-combox/readme.md | 11 + uni_modules/uni-datetime-picker/changelog.md | 103 ++ .../uni-datetime-picker/calendar-item.vue | 187 +++ .../uni-datetime-picker/calendar.vue | 924 ++++++++++++ .../uni-datetime-picker/i18n/en.json | 22 + .../uni-datetime-picker/i18n/index.js | 8 + .../uni-datetime-picker/i18n/zh-Hans.json | 22 + .../uni-datetime-picker/i18n/zh-Hant.json | 22 + .../uni-datetime-picker/keypress.js | 45 + .../uni-datetime-picker/time-picker.vue | 930 ++++++++++++ .../uni-datetime-picker.vue | 1015 +++++++++++++ .../components/uni-datetime-picker/util.js | 410 +++++ uni_modules/uni-datetime-picker/package.json | 87 ++ uni_modules/uni-datetime-picker/readme.md | 21 + uni_modules/uni-icons/changelog.md | 22 + .../uni-icons/components/uni-icons/icons.js | 1169 ++++++++++++++ .../components/uni-icons/uni-icons.vue | 96 ++ .../components/uni-icons/uniicons.css | 663 ++++++++ .../components/uni-icons/uniicons.ttf | Bin 0 -> 35760 bytes uni_modules/uni-icons/package.json | 86 ++ uni_modules/uni-icons/readme.md | 8 + 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-scss/styles/setting/_border.scss | 3 + .../uni-scss/styles/setting/_color.scss | 66 + .../uni-scss/styles/setting/_radius.scss | 55 + .../uni-scss/styles/setting/_space.scss | 56 + .../uni-scss/styles/setting/_styles.scss | 167 ++ .../uni-scss/styles/setting/_text.scss | 24 + .../uni-scss/styles/setting/_variables.scss | 146 ++ .../uni-scss/styles/tools/functions.scss | 19 + uni_modules/uni-scss/theme.scss | 31 + uni_modules/uni-scss/variables.scss | 62 + uni_modules/uni-table/changelog.md | 23 + .../components/uni-table/uni-table.vue | 455 ++++++ .../components/uni-tbody/uni-tbody.vue | 29 + .../uni-table/components/uni-td/uni-td.vue | 90 ++ .../components/uni-th/filter-dropdown.vue | 503 ++++++ .../uni-table/components/uni-th/uni-th.vue | 278 ++++ .../components/uni-thead/uni-thead.vue | 129 ++ .../components/uni-tr/table-checkbox.vue | 179 +++ .../uni-table/components/uni-tr/uni-tr.vue | 171 +++ uni_modules/uni-table/i18n/en.json | 9 + uni_modules/uni-table/i18n/es.json | 9 + uni_modules/uni-table/i18n/fr.json | 9 + uni_modules/uni-table/i18n/index.js | 12 + uni_modules/uni-table/i18n/zh-Hans.json | 9 + uni_modules/uni-table/i18n/zh-Hant.json | 9 + uni_modules/uni-table/package.json | 86 ++ uni_modules/uni-table/readme.md | 13 + utils/openAiConfig.js | 14 + utils/openMap.js | 109 ++ utils/transformCoordinate.js | 126 ++ uview-ui/LICENSE | 21 + uview-ui/README.md | 66 + uview-ui/changelog.md | 357 +++++ 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 + .../u-action-sheet/u-action-sheet.vue | 278 ++++ uview-ui/components/u-album/props.js | 59 + uview-ui/components/u-album/u-album.vue | 259 ++++ uview-ui/components/u-alert/props.js | 44 + uview-ui/components/u-alert/u-alert.vue | 243 +++ uview-ui/components/u-avatar-group/props.js | 52 + .../u-avatar-group/u-avatar-group.vue | 103 ++ uview-ui/components/u-avatar/props.js | 78 + uview-ui/components/u-avatar/u-avatar.vue | 172 +++ uview-ui/components/u-back-top/props.js | 54 + uview-ui/components/u-back-top/u-back-top.vue | 129 ++ uview-ui/components/u-badge/props.js | 72 + uview-ui/components/u-badge/u-badge.vue | 171 +++ uview-ui/components/u-button/nvue.scss | 46 + uview-ui/components/u-button/props.js | 161 ++ uview-ui/components/u-button/u-button.vue | 490 ++++++ uview-ui/components/u-button/vue.scss | 80 + uview-ui/components/u-calendar/header.vue | 99 ++ uview-ui/components/u-calendar/month.vue | 579 +++++++ uview-ui/components/u-calendar/props.js | 144 ++ uview-ui/components/u-calendar/u-calendar.vue | 384 +++++ uview-ui/components/u-calendar/util.js | 85 ++ uview-ui/components/u-car-keyboard/props.js | 14 + .../u-car-keyboard/u-car-keyboard.vue | 311 ++++ uview-ui/components/u-cell-group/props.js | 14 + .../components/u-cell-group/u-cell-group.vue | 61 + uview-ui/components/u-cell/props.js | 110 ++ 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 +++++ .../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 ++++ uview-ui/components/u-code/props.js | 34 + uview-ui/components/u-code/u-code.vue | 129 ++ uview-ui/components/u-col/props.js | 29 + uview-ui/components/u-col/u-col.vue | 162 ++ uview-ui/components/u-collapse-item/props.js | 59 + .../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 + .../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/props.js | 116 ++ .../u-datetime-picker/u-datetime-picker.vue | 360 +++++ 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 + .../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 ++ 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 +++ uview-ui/components/u-form/props.js | 45 + uview-ui/components/u-form/u-form.vue | 214 +++ uview-ui/components/u-gap/props.js | 24 + uview-ui/components/u-gap/u-gap.vue | 38 + uview-ui/components/u-grid-item/props.js | 14 + .../components/u-grid-item/u-grid-item.vue | 209 +++ uview-ui/components/u-grid/props.js | 19 + uview-ui/components/u-grid/u-grid.vue | 97 ++ uview-ui/components/u-icon/icons.js | 214 +++ uview-ui/components/u-icon/props.js | 89 ++ uview-ui/components/u-icon/u-icon.vue | 234 +++ uview-ui/components/u-image/props.js | 84 ++ uview-ui/components/u-image/u-image.vue | 232 +++ uview-ui/components/u-index-anchor/props.js | 29 + .../u-index-anchor/u-index-anchor.vue | 91 ++ uview-ui/components/u-index-item/props.js | 5 + .../components/u-index-item/u-index-item.vue | 87 ++ uview-ui/components/u-index-list/props.js | 29 + .../components/u-index-list/u-index-list.vue | 440 ++++++ 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 + .../u-line-progress/u-line-progress.vue | 144 ++ uview-ui/components/u-line/props.js | 33 + uview-ui/components/u-line/u-line.vue | 62 + uview-ui/components/u-link/props.js | 39 + uview-ui/components/u-link/u-link.vue | 83 + uview-ui/components/u-list-item/props.js | 9 + .../components/u-list-item/u-list-item.vue | 116 ++ uview-ui/components/u-list/props.js | 76 + uview-ui/components/u-list/u-list.vue | 157 ++ uview-ui/components/u-loading-icon/props.js | 59 + .../u-loading-icon/u-loading-icon.vue | 343 +++++ uview-ui/components/u-loading-page/props.js | 49 + .../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 ++ uview-ui/components/u-modal/props.js | 84 ++ uview-ui/components/u-modal/u-modal.vue | 227 +++ 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 ++ 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 +++++ .../components/u-number-keyboard/props.js | 19 + .../u-number-keyboard/u-number-keyboard.vue | 196 +++ 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 ++++++ uview-ui/components/u-parse/parser.js | 1075 +++++++++++++ uview-ui/components/u-parse/props.js | 45 + uview-ui/components/u-parse/u-parse.vue | 366 +++++ uview-ui/components/u-picker-column/props.js | 5 + .../u-picker-column/u-picker-column.vue | 27 + uview-ui/components/u-picker/props.js | 79 + uview-ui/components/u-picker/u-picker.vue | 283 ++++ 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 ++ .../u-radio-group/u-radio-group.vue | 108 ++ uview-ui/components/u-radio/props.js | 64 + uview-ui/components/u-radio/u-radio.vue | 339 +++++ uview-ui/components/u-rate/props.js | 69 + 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 ++++ uview-ui/components/u-row/props.js | 19 + uview-ui/components/u-row/u-row.vue | 93 ++ uview-ui/components/u-safe-bottom/props.js | 5 + .../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 + .../u-scroll-list/u-scroll-list.vue | 224 +++ 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 ++ uview-ui/components/u-slider/mpwxs.js | 42 + uview-ui/components/u-slider/mpwxs.wxs | 121 ++ .../components/u-slider/nvue - 鍓湰.js | 180 +++ uview-ui/components/u-slider/nvue.js | 193 +++ uview-ui/components/u-slider/props.js | 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 ++++ uview-ui/components/u-steps/props.js | 39 + uview-ui/components/u-steps/u-steps.vue | 80 + uview-ui/components/u-sticky/props.js | 40 + uview-ui/components/u-sticky/u-sticky.vue | 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.vue | 190 +++ .../components/u-swipe-action-item/wxs.js | 15 + uview-ui/components/u-swipe-action/props.js | 9 + .../u-swipe-action/u-swipe-action.vue | 67 + .../components/u-swiper-indicator/props.js | 29 + .../u-swiper-indicator/u-swiper-indicator.vue | 110 ++ uview-ui/components/u-swiper/props.js | 125 ++ uview-ui/components/u-swiper/u-swiper.vue | 255 ++++ 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 + .../u-tabbar-item/u-tabbar-item.vue | 142 ++ uview-ui/components/u-tabbar/props.js | 44 + uview-ui/components/u-tabbar/u-tabbar.vue | 141 ++ uview-ui/components/u-table/props.js | 5 + uview-ui/components/u-table/u-table.vue | 29 + uview-ui/components/u-tabs-item/props.js | 5 + .../components/u-tabs-item/u-tabs-item.vue | 29 + uview-ui/components/u-tabs/props.js | 64 + uview-ui/components/u-tabs/u-tabs.vue | 354 +++++ uview-ui/components/u-tag/props.js | 84 ++ uview-ui/components/u-tag/u-tag.vue | 358 +++++ uview-ui/components/u-td/props.js | 5 + uview-ui/components/u-td/u-td.vue | 31 + uview-ui/components/u-text/props.js | 110 ++ uview-ui/components/u-text/u-text.vue | 223 +++ 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 ++++ uview-ui/components/u-toolbar/props.js | 34 + uview-ui/components/u-toolbar/u-toolbar.vue | 102 ++ .../components/u-tooltip/clipboard.min.js | 58 + uview-ui/components/u-tooltip/props.js | 59 + uview-ui/components/u-tooltip/u-tooltip.vue | 365 +++++ uview-ui/components/u-tr/props.js | 5 + uview-ui/components/u-tr/u-tr.vue | 31 + .../components/u-transition/nvue.ani-map.js | 68 + uview-ui/components/u-transition/props.js | 24 + .../components/u-transition/transition.js | 157 ++ .../components/u-transition/u-transition.vue | 92 ++ .../u-transition/vue.ani-style.scss | 113 ++ uview-ui/components/u-upload/mixin.js | 21 + uview-ui/components/u-upload/props.js | 124 ++ uview-ui/components/u-upload/u-upload.vue | 558 +++++++ uview-ui/components/u-upload/utils.js | 151 ++ uview-ui/components/uview-ui/uview-ui.vue | 15 + uview-ui/index.js | 79 + uview-ui/index.scss | 23 + uview-ui/libs/config/color.js | 17 + uview-ui/libs/config/config.js | 34 + uview-ui/libs/config/props.js | 190 +++ uview-ui/libs/config/props/actionSheet.js | 25 + uview-ui/libs/config/props/album.js | 25 + uview-ui/libs/config/props/alert.js | 22 + uview-ui/libs/config/props/avatar.js | 28 + uview-ui/libs/config/props/avatarGroup.js | 23 + uview-ui/libs/config/props/backtop.js | 27 + uview-ui/libs/config/props/badge.js | 27 + uview-ui/libs/config/props/button.js | 42 + uview-ui/libs/config/props/calendar.js | 42 + uview-ui/libs/config/props/carKeyboard.js | 15 + uview-ui/libs/config/props/cell.js | 35 + uview-ui/libs/config/props/cellGroup.js | 17 + uview-ui/libs/config/props/checkbox.js | 27 + uview-ui/libs/config/props/checkboxGroup.js | 29 + uview-ui/libs/config/props/circleProgress.js | 15 + uview-ui/libs/config/props/code.js | 21 + uview-ui/libs/config/props/codeInput.js | 29 + uview-ui/libs/config/props/col.js | 19 + 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 + uview-ui/libs/config/props/countTo.js | 25 + uview-ui/libs/config/props/datetimePicker.js | 36 + uview-ui/libs/config/props/divider.js | 23 + uview-ui/libs/config/props/empty.js | 26 + uview-ui/libs/config/props/form.js | 22 + uview-ui/libs/config/props/formItem.js | 23 + uview-ui/libs/config/props/gap.js | 19 + uview-ui/libs/config/props/grid.js | 17 + uview-ui/libs/config/props/gridItem.js | 16 + uview-ui/libs/config/props/icon.js | 36 + uview-ui/libs/config/props/image.js | 30 + uview-ui/libs/config/props/indexAnchor.js | 19 + uview-ui/libs/config/props/indexList.js | 19 + uview-ui/libs/config/props/input.js | 48 + uview-ui/libs/config/props/keyboard.js | 30 + uview-ui/libs/config/props/line.js | 20 + uview-ui/libs/config/props/lineProgress.js | 19 + uview-ui/libs/config/props/link.js | 26 + uview-ui/libs/config/props/list.js | 28 + uview-ui/libs/config/props/listItem.js | 15 + uview-ui/libs/config/props/loadingIcon.js | 30 + uview-ui/libs/config/props/loadingPage.js | 23 + uview-ui/libs/config/props/loadmore.js | 32 + uview-ui/libs/config/props/modal.js | 30 + uview-ui/libs/config/props/navbar.js | 32 + uview-ui/libs/config/props/noNetwork.js | 18 + uview-ui/libs/config/props/noticeBar.js | 27 + uview-ui/libs/config/props/notify.js | 22 + uview-ui/libs/config/props/numberBox.js | 35 + uview-ui/libs/config/props/numberKeyboard.js | 17 + uview-ui/libs/config/props/overlay.js | 18 + uview-ui/libs/config/props/parse.js | 22 + uview-ui/libs/config/props/picker.js | 29 + uview-ui/libs/config/props/popup.js | 29 + uview-ui/libs/config/props/radio.js | 27 + uview-ui/libs/config/props/radioGroup.js | 30 + uview-ui/libs/config/props/rate.js | 26 + uview-ui/libs/config/props/readMore.js | 22 + uview-ui/libs/config/props/row.js | 17 + uview-ui/libs/config/props/rowNotice.js | 21 + uview-ui/libs/config/props/scrollList.js | 20 + uview-ui/libs/config/props/search.js | 37 + uview-ui/libs/config/props/section.js | 24 + uview-ui/libs/config/props/skeleton.js | 25 + uview-ui/libs/config/props/slider.js | 25 + uview-ui/libs/config/props/statusBar.js | 15 + uview-ui/libs/config/props/steps.js | 21 + uview-ui/libs/config/props/stepsItem.js | 18 + uview-ui/libs/config/props/sticky.js | 20 + uview-ui/libs/config/props/subsection.js | 23 + uview-ui/libs/config/props/swipeAction.js | 15 + uview-ui/libs/config/props/swipeActionItem.js | 21 + uview-ui/libs/config/props/swiper.js | 39 + .../libs/config/props/swipterIndicator.js | 19 + uview-ui/libs/config/props/switch.js | 24 + uview-ui/libs/config/props/tabbar.js | 22 + uview-ui/libs/config/props/tabbarItem.js | 20 + uview-ui/libs/config/props/tabs.js | 32 + uview-ui/libs/config/props/tag.js | 29 + uview-ui/libs/config/props/text.js | 38 + uview-ui/libs/config/props/textarea.js | 36 + uview-ui/libs/config/props/toast.js | 30 + uview-ui/libs/config/props/toolbar.js | 21 + uview-ui/libs/config/props/tooltip.js | 25 + uview-ui/libs/config/props/transition.js | 18 + uview-ui/libs/config/props/upload.js | 36 + uview-ui/libs/config/zIndex.js | 20 + uview-ui/libs/css/color.scss | 155 ++ uview-ui/libs/css/common.scss | 97 ++ uview-ui/libs/css/components.scss | 15 + uview-ui/libs/css/flex.scss | 257 ++++ uview-ui/libs/css/h5.scss | 0 uview-ui/libs/css/mixin.scss | 8 + uview-ui/libs/css/mp.scss | 0 uview-ui/libs/css/nvue.scss | 0 uview-ui/libs/css/vue.scss | 27 + uview-ui/libs/function/colorGradient.js | 134 ++ uview-ui/libs/function/debounce.js | 29 + uview-ui/libs/function/digit.js | 167 ++ uview-ui/libs/function/index.js | 705 +++++++++ uview-ui/libs/function/platform.js | 75 + uview-ui/libs/function/test.js | 288 ++++ uview-ui/libs/function/throttle.js | 30 + uview-ui/libs/luch-request/adapters/index.js | 97 ++ .../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 + .../libs/luch-request/core/mergeConfig.js | 103 ++ uview-ui/libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + uview-ui/libs/luch-request/index.d.ts | 116 ++ uview-ui/libs/luch-request/index.js | 3 + uview-ui/libs/luch-request/utils.js | 131 ++ uview-ui/libs/luch-request/utils/clone.js | 264 ++++ uview-ui/libs/mixin/button.js | 13 + uview-ui/libs/mixin/mixin.js | 160 ++ uview-ui/libs/mixin/mpMixin.js | 8 + uview-ui/libs/mixin/mpShare.js | 13 + uview-ui/libs/mixin/openType.js | 25 + uview-ui/libs/mixin/style.js | 228 +++ uview-ui/libs/mixin/touch.js | 59 + uview-ui/libs/util/async-validator.js | 1343 +++++++++++++++++ uview-ui/libs/util/calendar.js | 546 +++++++ uview-ui/libs/util/dayjs.js | 308 ++++ uview-ui/libs/util/emitter.js | 51 + uview-ui/libs/util/route.js | 124 ++ uview-ui/package.json | 84 ++ uview-ui/theme.scss | 44 + 470 files changed, 54651 insertions(+) create mode 100644 .gitignore create mode 100644 .hbuilderx/launch.json create mode 100644 App.vue create mode 100644 common/index.js create mode 100644 common/index.scss create mode 100644 components/inputSelect/inputSelect.vue create mode 100644 components/navBar/navBar.vue create mode 100644 components/page-animation/index.css create mode 100644 components/page-animation/index.vue create mode 100644 components/pyh-rdtpicker/pyh-rdtpicker.vue create mode 100644 components/pyh-rdtpicker/readme.md create mode 100644 components/tabBar/tabBar.vue create mode 100644 components/timeRang-picker/timeRang-picker.vue create mode 100644 components/w-picker/date-picker.vue create mode 100644 components/w-picker/half-picker.vue create mode 100644 components/w-picker/range-picker.vue create mode 100644 components/w-picker/w-picker.css create mode 100644 components/w-picker/w-picker.vue create mode 100644 http/api.js create mode 100644 http/index.js create mode 100644 http/interface.js create mode 100644 index.html create mode 100644 main.js create mode 100644 manifest.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/index/index.vue create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 static/image/3.5.png create mode 100644 static/image/4.0.png create mode 100644 static/image/avator.png create mode 100644 static/image/head.jpg create mode 100644 static/image/shop-car.png create mode 100644 static/image/success.png create mode 100644 store/index.js create mode 100644 uni.promisify.adaptor.js create mode 100644 uni.scss create mode 100644 uni_modules/superwei-combox/changelog.md create mode 100644 uni_modules/superwei-combox/components/superwei-combox/superwei-combox.vue create mode 100644 uni_modules/superwei-combox/package.json create mode 100644 uni_modules/superwei-combox/readme.md create mode 100644 uni_modules/uni-combox/changelog.md create mode 100644 uni_modules/uni-combox/components/uni-combox/uni-combox.vue create mode 100644 uni_modules/uni-combox/package.json create mode 100644 uni_modules/uni-combox/readme.md create mode 100644 uni_modules/uni-datetime-picker/changelog.md create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js create mode 100644 uni_modules/uni-datetime-picker/package.json create mode 100644 uni_modules/uni-datetime-picker/readme.md create mode 100644 uni_modules/uni-icons/changelog.md create mode 100644 uni_modules/uni-icons/components/uni-icons/icons.js create mode 100644 uni_modules/uni-icons/components/uni-icons/uni-icons.vue create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.css create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.ttf create mode 100644 uni_modules/uni-icons/package.json create mode 100644 uni_modules/uni-icons/readme.md 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-table/changelog.md create mode 100644 uni_modules/uni-table/components/uni-table/uni-table.vue create mode 100644 uni_modules/uni-table/components/uni-tbody/uni-tbody.vue create mode 100644 uni_modules/uni-table/components/uni-td/uni-td.vue create mode 100644 uni_modules/uni-table/components/uni-th/filter-dropdown.vue create mode 100644 uni_modules/uni-table/components/uni-th/uni-th.vue create mode 100644 uni_modules/uni-table/components/uni-thead/uni-thead.vue create mode 100644 uni_modules/uni-table/components/uni-tr/table-checkbox.vue create mode 100644 uni_modules/uni-table/components/uni-tr/uni-tr.vue create mode 100644 uni_modules/uni-table/i18n/en.json create mode 100644 uni_modules/uni-table/i18n/es.json create mode 100644 uni_modules/uni-table/i18n/fr.json create mode 100644 uni_modules/uni-table/i18n/index.js create mode 100644 uni_modules/uni-table/i18n/zh-Hans.json create mode 100644 uni_modules/uni-table/i18n/zh-Hant.json create mode 100644 uni_modules/uni-table/package.json create mode 100644 uni_modules/uni-table/readme.md create mode 100644 utils/openAiConfig.js create mode 100644 utils/openMap.js create mode 100644 utils/transformCoordinate.js create mode 100644 uview-ui/LICENSE create mode 100644 uview-ui/README.md create mode 100644 uview-ui/changelog.md create mode 100644 uview-ui/components/u--form/u--form.vue create mode 100644 uview-ui/components/u--image/u--image.vue create mode 100644 uview-ui/components/u--input/u--input.vue create mode 100644 uview-ui/components/u--text/u--text.vue create mode 100644 uview-ui/components/u--textarea/u--textarea.vue create mode 100644 uview-ui/components/u-action-sheet/props.js create mode 100644 uview-ui/components/u-action-sheet/u-action-sheet.vue create mode 100644 uview-ui/components/u-album/props.js create mode 100644 uview-ui/components/u-album/u-album.vue create mode 100644 uview-ui/components/u-alert/props.js create mode 100644 uview-ui/components/u-alert/u-alert.vue create mode 100644 uview-ui/components/u-avatar-group/props.js create mode 100644 uview-ui/components/u-avatar-group/u-avatar-group.vue create mode 100644 uview-ui/components/u-avatar/props.js create mode 100644 uview-ui/components/u-avatar/u-avatar.vue create mode 100644 uview-ui/components/u-back-top/props.js create mode 100644 uview-ui/components/u-back-top/u-back-top.vue create mode 100644 uview-ui/components/u-badge/props.js create mode 100644 uview-ui/components/u-badge/u-badge.vue create mode 100644 uview-ui/components/u-button/nvue.scss create mode 100644 uview-ui/components/u-button/props.js create mode 100644 uview-ui/components/u-button/u-button.vue create mode 100644 uview-ui/components/u-button/vue.scss create mode 100644 uview-ui/components/u-calendar/header.vue create mode 100644 uview-ui/components/u-calendar/month.vue create mode 100644 uview-ui/components/u-calendar/props.js create mode 100644 uview-ui/components/u-calendar/u-calendar.vue create mode 100644 uview-ui/components/u-calendar/util.js create mode 100644 uview-ui/components/u-car-keyboard/props.js create mode 100644 uview-ui/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 uview-ui/components/u-cell-group/props.js create mode 100644 uview-ui/components/u-cell-group/u-cell-group.vue create mode 100644 uview-ui/components/u-cell/props.js create mode 100644 uview-ui/components/u-cell/u-cell.vue create mode 100644 uview-ui/components/u-checkbox-group/props.js create mode 100644 uview-ui/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 uview-ui/components/u-checkbox/props.js create mode 100644 uview-ui/components/u-checkbox/u-checkbox.vue create mode 100644 uview-ui/components/u-circle-progress/props.js create mode 100644 uview-ui/components/u-circle-progress/u-circle-progress.vue create mode 100644 uview-ui/components/u-code-input/props.js create mode 100644 uview-ui/components/u-code-input/u-code-input.vue create mode 100644 uview-ui/components/u-code/props.js create mode 100644 uview-ui/components/u-code/u-code.vue create mode 100644 uview-ui/components/u-col/props.js create mode 100644 uview-ui/components/u-col/u-col.vue create mode 100644 uview-ui/components/u-collapse-item/props.js create mode 100644 uview-ui/components/u-collapse-item/u-collapse-item.vue create mode 100644 uview-ui/components/u-collapse/props.js create mode 100644 uview-ui/components/u-collapse/u-collapse.vue create mode 100644 uview-ui/components/u-column-notice/props.js create mode 100644 uview-ui/components/u-column-notice/u-column-notice.vue create mode 100644 uview-ui/components/u-count-down/props.js create mode 100644 uview-ui/components/u-count-down/u-count-down.vue create mode 100644 uview-ui/components/u-count-down/utils.js create mode 100644 uview-ui/components/u-count-to/props.js create mode 100644 uview-ui/components/u-count-to/u-count-to.vue create mode 100644 uview-ui/components/u-datetime-picker/props.js create mode 100644 uview-ui/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 uview-ui/components/u-divider/props.js create mode 100644 uview-ui/components/u-divider/u-divider.vue create mode 100644 uview-ui/components/u-dropdown-item/props.js create mode 100644 uview-ui/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 uview-ui/components/u-dropdown/props.js create mode 100644 uview-ui/components/u-dropdown/u-dropdown.vue create mode 100644 uview-ui/components/u-empty/props.js create mode 100644 uview-ui/components/u-empty/u-empty.vue create mode 100644 uview-ui/components/u-form-item/props.js create mode 100644 uview-ui/components/u-form-item/u-form-item.vue create mode 100644 uview-ui/components/u-form/props.js create mode 100644 uview-ui/components/u-form/u-form.vue create mode 100644 uview-ui/components/u-gap/props.js create mode 100644 uview-ui/components/u-gap/u-gap.vue create mode 100644 uview-ui/components/u-grid-item/props.js create mode 100644 uview-ui/components/u-grid-item/u-grid-item.vue create mode 100644 uview-ui/components/u-grid/props.js create mode 100644 uview-ui/components/u-grid/u-grid.vue create mode 100644 uview-ui/components/u-icon/icons.js create mode 100644 uview-ui/components/u-icon/props.js create mode 100644 uview-ui/components/u-icon/u-icon.vue create mode 100644 uview-ui/components/u-image/props.js create mode 100644 uview-ui/components/u-image/u-image.vue create mode 100644 uview-ui/components/u-index-anchor/props.js create mode 100644 uview-ui/components/u-index-anchor/u-index-anchor.vue create mode 100644 uview-ui/components/u-index-item/props.js create mode 100644 uview-ui/components/u-index-item/u-index-item.vue create mode 100644 uview-ui/components/u-index-list/props.js create mode 100644 uview-ui/components/u-index-list/u-index-list.vue create mode 100644 uview-ui/components/u-input/props.js create mode 100644 uview-ui/components/u-input/u-input.vue create mode 100644 uview-ui/components/u-keyboard/props.js create mode 100644 uview-ui/components/u-keyboard/u-keyboard.vue create mode 100644 uview-ui/components/u-line-progress/props.js create mode 100644 uview-ui/components/u-line-progress/u-line-progress.vue create mode 100644 uview-ui/components/u-line/props.js create mode 100644 uview-ui/components/u-line/u-line.vue create mode 100644 uview-ui/components/u-link/props.js create mode 100644 uview-ui/components/u-link/u-link.vue create mode 100644 uview-ui/components/u-list-item/props.js create mode 100644 uview-ui/components/u-list-item/u-list-item.vue create mode 100644 uview-ui/components/u-list/props.js create mode 100644 uview-ui/components/u-list/u-list.vue create mode 100644 uview-ui/components/u-loading-icon/props.js create mode 100644 uview-ui/components/u-loading-icon/u-loading-icon.vue create mode 100644 uview-ui/components/u-loading-page/props.js create mode 100644 uview-ui/components/u-loading-page/u-loading-page.vue create mode 100644 uview-ui/components/u-loadmore/props.js create mode 100644 uview-ui/components/u-loadmore/u-loadmore.vue create mode 100644 uview-ui/components/u-modal/props.js create mode 100644 uview-ui/components/u-modal/u-modal.vue create mode 100644 uview-ui/components/u-navbar/props.js create mode 100644 uview-ui/components/u-navbar/u-navbar.vue create mode 100644 uview-ui/components/u-no-network/props.js create mode 100644 uview-ui/components/u-no-network/u-no-network.vue create mode 100644 uview-ui/components/u-notice-bar/props.js create mode 100644 uview-ui/components/u-notice-bar/u-notice-bar.vue create mode 100644 uview-ui/components/u-notify/props.js create mode 100644 uview-ui/components/u-notify/u-notify.vue create mode 100644 uview-ui/components/u-number-box/props.js create mode 100644 uview-ui/components/u-number-box/u-number-box.vue create mode 100644 uview-ui/components/u-number-keyboard/props.js create mode 100644 uview-ui/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 uview-ui/components/u-overlay/props.js create mode 100644 uview-ui/components/u-overlay/u-overlay.vue create mode 100644 uview-ui/components/u-parse/node/node.vue create mode 100644 uview-ui/components/u-parse/parser.js create mode 100644 uview-ui/components/u-parse/props.js create mode 100644 uview-ui/components/u-parse/u-parse.vue create mode 100644 uview-ui/components/u-picker-column/props.js create mode 100644 uview-ui/components/u-picker-column/u-picker-column.vue create mode 100644 uview-ui/components/u-picker/props.js create mode 100644 uview-ui/components/u-picker/u-picker.vue create mode 100644 uview-ui/components/u-popup/props.js create mode 100644 uview-ui/components/u-popup/u-popup.vue create mode 100644 uview-ui/components/u-radio-group/props.js create mode 100644 uview-ui/components/u-radio-group/u-radio-group.vue create mode 100644 uview-ui/components/u-radio/props.js create mode 100644 uview-ui/components/u-radio/u-radio.vue create mode 100644 uview-ui/components/u-rate/props.js create mode 100644 uview-ui/components/u-rate/u-rate.vue create mode 100644 uview-ui/components/u-read-more/props.js create mode 100644 uview-ui/components/u-read-more/u-read-more.vue create mode 100644 uview-ui/components/u-row-notice/props.js create mode 100644 uview-ui/components/u-row-notice/u-row-notice.vue create mode 100644 uview-ui/components/u-row/props.js create mode 100644 uview-ui/components/u-row/u-row.vue create mode 100644 uview-ui/components/u-safe-bottom/props.js create mode 100644 uview-ui/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 uview-ui/components/u-scroll-list/nvue.js create mode 100644 uview-ui/components/u-scroll-list/other.js create mode 100644 uview-ui/components/u-scroll-list/props.js create mode 100644 uview-ui/components/u-scroll-list/scrollWxs.wxs create mode 100644 uview-ui/components/u-scroll-list/u-scroll-list.vue create mode 100644 uview-ui/components/u-search/props.js create mode 100644 uview-ui/components/u-search/u-search.vue create mode 100644 uview-ui/components/u-skeleton/props.js create mode 100644 uview-ui/components/u-skeleton/u-skeleton.vue create mode 100644 uview-ui/components/u-slider/mpother.js create mode 100644 uview-ui/components/u-slider/mpwxs.js create mode 100644 uview-ui/components/u-slider/mpwxs.wxs create mode 100644 uview-ui/components/u-slider/nvue - 鍓湰.js create mode 100644 uview-ui/components/u-slider/nvue.js create mode 100644 uview-ui/components/u-slider/props.js create mode 100644 uview-ui/components/u-slider/u-slider.vue create mode 100644 uview-ui/components/u-status-bar/props.js create mode 100644 uview-ui/components/u-status-bar/u-status-bar.vue create mode 100644 uview-ui/components/u-steps-item/props.js create mode 100644 uview-ui/components/u-steps-item/u-steps-item.vue create mode 100644 uview-ui/components/u-steps/props.js create mode 100644 uview-ui/components/u-steps/u-steps.vue create mode 100644 uview-ui/components/u-sticky/props.js create mode 100644 uview-ui/components/u-sticky/u-sticky.vue create mode 100644 uview-ui/components/u-subsection/props.js create mode 100644 uview-ui/components/u-subsection/u-subsection.vue create mode 100644 uview-ui/components/u-swipe-action-item/index - backup.wxs create mode 100644 uview-ui/components/u-swipe-action-item/index.wxs create mode 100644 uview-ui/components/u-swipe-action-item/nvue - backup.js create mode 100644 uview-ui/components/u-swipe-action-item/nvue.js create mode 100644 uview-ui/components/u-swipe-action-item/props.js create mode 100644 uview-ui/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 uview-ui/components/u-swipe-action-item/wxs.js create mode 100644 uview-ui/components/u-swipe-action/props.js create mode 100644 uview-ui/components/u-swipe-action/u-swipe-action.vue create mode 100644 uview-ui/components/u-swiper-indicator/props.js create mode 100644 uview-ui/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 uview-ui/components/u-swiper/props.js create mode 100644 uview-ui/components/u-swiper/u-swiper.vue create mode 100644 uview-ui/components/u-switch/props.js create mode 100644 uview-ui/components/u-switch/u-switch.vue create mode 100644 uview-ui/components/u-tabbar-item/props.js create mode 100644 uview-ui/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 uview-ui/components/u-tabbar/props.js create mode 100644 uview-ui/components/u-tabbar/u-tabbar.vue create mode 100644 uview-ui/components/u-table/props.js create mode 100644 uview-ui/components/u-table/u-table.vue create mode 100644 uview-ui/components/u-tabs-item/props.js create mode 100644 uview-ui/components/u-tabs-item/u-tabs-item.vue create mode 100644 uview-ui/components/u-tabs/props.js create mode 100644 uview-ui/components/u-tabs/u-tabs.vue create mode 100644 uview-ui/components/u-tag/props.js create mode 100644 uview-ui/components/u-tag/u-tag.vue create mode 100644 uview-ui/components/u-td/props.js create mode 100644 uview-ui/components/u-td/u-td.vue create mode 100644 uview-ui/components/u-text/props.js create mode 100644 uview-ui/components/u-text/u-text.vue create mode 100644 uview-ui/components/u-text/value.js create mode 100644 uview-ui/components/u-textarea/props.js create mode 100644 uview-ui/components/u-textarea/u-textarea.vue create mode 100644 uview-ui/components/u-toast/u-toast.vue create mode 100644 uview-ui/components/u-toolbar/props.js create mode 100644 uview-ui/components/u-toolbar/u-toolbar.vue create mode 100644 uview-ui/components/u-tooltip/clipboard.min.js create mode 100644 uview-ui/components/u-tooltip/props.js create mode 100644 uview-ui/components/u-tooltip/u-tooltip.vue create mode 100644 uview-ui/components/u-tr/props.js create mode 100644 uview-ui/components/u-tr/u-tr.vue create mode 100644 uview-ui/components/u-transition/nvue.ani-map.js create mode 100644 uview-ui/components/u-transition/props.js create mode 100644 uview-ui/components/u-transition/transition.js create mode 100644 uview-ui/components/u-transition/u-transition.vue create mode 100644 uview-ui/components/u-transition/vue.ani-style.scss create mode 100644 uview-ui/components/u-upload/mixin.js create mode 100644 uview-ui/components/u-upload/props.js create mode 100644 uview-ui/components/u-upload/u-upload.vue create mode 100644 uview-ui/components/u-upload/utils.js create mode 100644 uview-ui/components/uview-ui/uview-ui.vue create mode 100644 uview-ui/index.js create mode 100644 uview-ui/index.scss create mode 100644 uview-ui/libs/config/color.js create mode 100644 uview-ui/libs/config/config.js create mode 100644 uview-ui/libs/config/props.js create mode 100644 uview-ui/libs/config/props/actionSheet.js create mode 100644 uview-ui/libs/config/props/album.js create mode 100644 uview-ui/libs/config/props/alert.js create mode 100644 uview-ui/libs/config/props/avatar.js create mode 100644 uview-ui/libs/config/props/avatarGroup.js create mode 100644 uview-ui/libs/config/props/backtop.js create mode 100644 uview-ui/libs/config/props/badge.js create mode 100644 uview-ui/libs/config/props/button.js create mode 100644 uview-ui/libs/config/props/calendar.js create mode 100644 uview-ui/libs/config/props/carKeyboard.js create mode 100644 uview-ui/libs/config/props/cell.js create mode 100644 uview-ui/libs/config/props/cellGroup.js create mode 100644 uview-ui/libs/config/props/checkbox.js create mode 100644 uview-ui/libs/config/props/checkboxGroup.js create mode 100644 uview-ui/libs/config/props/circleProgress.js create mode 100644 uview-ui/libs/config/props/code.js create mode 100644 uview-ui/libs/config/props/codeInput.js create mode 100644 uview-ui/libs/config/props/col.js create mode 100644 uview-ui/libs/config/props/collapse.js create mode 100644 uview-ui/libs/config/props/collapseItem.js create mode 100644 uview-ui/libs/config/props/columnNotice.js create mode 100644 uview-ui/libs/config/props/countDown.js create mode 100644 uview-ui/libs/config/props/countTo.js create mode 100644 uview-ui/libs/config/props/datetimePicker.js create mode 100644 uview-ui/libs/config/props/divider.js create mode 100644 uview-ui/libs/config/props/empty.js create mode 100644 uview-ui/libs/config/props/form.js create mode 100644 uview-ui/libs/config/props/formItem.js create mode 100644 uview-ui/libs/config/props/gap.js create mode 100644 uview-ui/libs/config/props/grid.js create mode 100644 uview-ui/libs/config/props/gridItem.js create mode 100644 uview-ui/libs/config/props/icon.js create mode 100644 uview-ui/libs/config/props/image.js create mode 100644 uview-ui/libs/config/props/indexAnchor.js create mode 100644 uview-ui/libs/config/props/indexList.js create mode 100644 uview-ui/libs/config/props/input.js create mode 100644 uview-ui/libs/config/props/keyboard.js create mode 100644 uview-ui/libs/config/props/line.js create mode 100644 uview-ui/libs/config/props/lineProgress.js create mode 100644 uview-ui/libs/config/props/link.js create mode 100644 uview-ui/libs/config/props/list.js create mode 100644 uview-ui/libs/config/props/listItem.js create mode 100644 uview-ui/libs/config/props/loadingIcon.js create mode 100644 uview-ui/libs/config/props/loadingPage.js create mode 100644 uview-ui/libs/config/props/loadmore.js create mode 100644 uview-ui/libs/config/props/modal.js create mode 100644 uview-ui/libs/config/props/navbar.js create mode 100644 uview-ui/libs/config/props/noNetwork.js create mode 100644 uview-ui/libs/config/props/noticeBar.js create mode 100644 uview-ui/libs/config/props/notify.js create mode 100644 uview-ui/libs/config/props/numberBox.js create mode 100644 uview-ui/libs/config/props/numberKeyboard.js create mode 100644 uview-ui/libs/config/props/overlay.js create mode 100644 uview-ui/libs/config/props/parse.js create mode 100644 uview-ui/libs/config/props/picker.js create mode 100644 uview-ui/libs/config/props/popup.js create mode 100644 uview-ui/libs/config/props/radio.js create mode 100644 uview-ui/libs/config/props/radioGroup.js create mode 100644 uview-ui/libs/config/props/rate.js create mode 100644 uview-ui/libs/config/props/readMore.js create mode 100644 uview-ui/libs/config/props/row.js create mode 100644 uview-ui/libs/config/props/rowNotice.js create mode 100644 uview-ui/libs/config/props/scrollList.js create mode 100644 uview-ui/libs/config/props/search.js create mode 100644 uview-ui/libs/config/props/section.js create mode 100644 uview-ui/libs/config/props/skeleton.js create mode 100644 uview-ui/libs/config/props/slider.js create mode 100644 uview-ui/libs/config/props/statusBar.js create mode 100644 uview-ui/libs/config/props/steps.js create mode 100644 uview-ui/libs/config/props/stepsItem.js create mode 100644 uview-ui/libs/config/props/sticky.js create mode 100644 uview-ui/libs/config/props/subsection.js create mode 100644 uview-ui/libs/config/props/swipeAction.js create mode 100644 uview-ui/libs/config/props/swipeActionItem.js create mode 100644 uview-ui/libs/config/props/swiper.js create mode 100644 uview-ui/libs/config/props/swipterIndicator.js create mode 100644 uview-ui/libs/config/props/switch.js create mode 100644 uview-ui/libs/config/props/tabbar.js create mode 100644 uview-ui/libs/config/props/tabbarItem.js create mode 100644 uview-ui/libs/config/props/tabs.js create mode 100644 uview-ui/libs/config/props/tag.js create mode 100644 uview-ui/libs/config/props/text.js create mode 100644 uview-ui/libs/config/props/textarea.js create mode 100644 uview-ui/libs/config/props/toast.js create mode 100644 uview-ui/libs/config/props/toolbar.js create mode 100644 uview-ui/libs/config/props/tooltip.js create mode 100644 uview-ui/libs/config/props/transition.js create mode 100644 uview-ui/libs/config/props/upload.js create mode 100644 uview-ui/libs/config/zIndex.js create mode 100644 uview-ui/libs/css/color.scss create mode 100644 uview-ui/libs/css/common.scss create mode 100644 uview-ui/libs/css/components.scss create mode 100644 uview-ui/libs/css/flex.scss create mode 100644 uview-ui/libs/css/h5.scss create mode 100644 uview-ui/libs/css/mixin.scss create mode 100644 uview-ui/libs/css/mp.scss create mode 100644 uview-ui/libs/css/nvue.scss create mode 100644 uview-ui/libs/css/vue.scss create mode 100644 uview-ui/libs/function/colorGradient.js create mode 100644 uview-ui/libs/function/debounce.js create mode 100644 uview-ui/libs/function/digit.js create mode 100644 uview-ui/libs/function/index.js create mode 100644 uview-ui/libs/function/platform.js create mode 100644 uview-ui/libs/function/test.js create mode 100644 uview-ui/libs/function/throttle.js create mode 100644 uview-ui/libs/luch-request/adapters/index.js create mode 100644 uview-ui/libs/luch-request/core/InterceptorManager.js create mode 100644 uview-ui/libs/luch-request/core/Request.js create mode 100644 uview-ui/libs/luch-request/core/buildFullPath.js create mode 100644 uview-ui/libs/luch-request/core/defaults.js create mode 100644 uview-ui/libs/luch-request/core/dispatchRequest.js create mode 100644 uview-ui/libs/luch-request/core/mergeConfig.js create mode 100644 uview-ui/libs/luch-request/core/settle.js create mode 100644 uview-ui/libs/luch-request/helpers/buildURL.js create mode 100644 uview-ui/libs/luch-request/helpers/combineURLs.js create mode 100644 uview-ui/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 uview-ui/libs/luch-request/index.d.ts create mode 100644 uview-ui/libs/luch-request/index.js create mode 100644 uview-ui/libs/luch-request/utils.js create mode 100644 uview-ui/libs/luch-request/utils/clone.js create mode 100644 uview-ui/libs/mixin/button.js create mode 100644 uview-ui/libs/mixin/mixin.js create mode 100644 uview-ui/libs/mixin/mpMixin.js create mode 100644 uview-ui/libs/mixin/mpShare.js create mode 100644 uview-ui/libs/mixin/openType.js create mode 100644 uview-ui/libs/mixin/style.js create mode 100644 uview-ui/libs/mixin/touch.js create mode 100644 uview-ui/libs/util/async-validator.js create mode 100644 uview-ui/libs/util/calendar.js create mode 100644 uview-ui/libs/util/dayjs.js create mode 100644 uview-ui/libs/util/emitter.js create mode 100644 uview-ui/libs/util/route.js create mode 100644 uview-ui/package.json create mode 100644 uview-ui/theme.scss diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..81f7c92 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/node_modules +/unpackage \ No newline at end of file diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..a1c56ae --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,27 @@ +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version" : "0.0", + "configurations" : [ + { + "app-plus" : { + "launchtype" : "local" + }, + "default" : { + "launchtype" : "local" + }, + "mp-weixin" : { + "launchtype" : "local" + }, + "type" : "uniCloud" + }, + { + "playground" : "custom", + "type" : "uni-app:app-android" + }, + { + "playground" : "custom", + "type" : "uni-app:app-ios" + } + ] +} diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..8ba8025 --- /dev/null +++ b/App.vue @@ -0,0 +1,28 @@ + + + diff --git a/common/index.js b/common/index.js new file mode 100644 index 0000000..d61a54f --- /dev/null +++ b/common/index.js @@ -0,0 +1,125 @@ +/** + * 通用消息框 + * @param content string 消息内容 + * @param fn function 回调 + * + */ +import api from "@/http/"; +import apiUrl from "../http/api.js"; +const msgToast = (content, fn, type = "none") => { + uni.showToast({ + title: content, + duration: 2000, + icon: type, + success: fn + ? () => { + setTimeout(() => { + fn(); + }, 1500); + } + : function () {}, + }); +}; + +/* 手机号验证 */ +const vefTel = (key) => { + let reg_tel = + /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/; + ///^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[3-8]{1})|(18[0-9]{1})|(19[0-9]{1})|(14[5-7]{1}))+\d{8})$/; // 11位手机号 + if (key === "" || key === undefined || key === null) { + uni.showToast({ + title: "请输入手机号", + duration: 2000, + icon: "none", + }); + return false; + } else if (!reg_tel.test(key)) { + uni.showToast({ + title: "手机号码格式不正确", + duration: 2000, + icon: "none", + }); + return false; + } else { + return true; + } +}; + +/* 非空验证 */ +const vefEmpty = (key, msg) => { + if (key === "" || key === undefined || key === null) { + uni.showToast({ + title: msg, + duration: 2000, + icon: "none", + }); + return false; + } else { + return true; + } +}; + +const logout = () => { + msgToast("登录已过期,请重新登录", () => { + uni.removeStorageSync("userInfo"); + uni.redirectTo({ + url: "../login/login", + }); + }); +}; +/** + * @description: H5 App通用方案 解决H5刷新返回失败问题 + * @param {*} params + */ +const navigateBack = (params) => { + const pages = getCurrentPages(); + if (pages.length === 1) { + if (typeof params === "number") { + history.go(-params); + } else { + history.back(); + } + } else { + uni.navigateBack(); + } +}; +/** + * @description: 获取url参数 + * @param {*} params + */ +const getLocationParams = (name) => { + const pages = getCurrentPages(); + const curPage = pages[pages.length - 1]; + return name ? curPage.options[name] : curPage.options; +}; +const getOpenId = async () => { + const res = await api.request("/api/appointment/wx/info", null, "GET"); + console.log(res); + if (res.status === 0) { + uni.setStorageSync("open_id", res.data.wxUser.openID); + } else { + console.log("没有open_id"); + if (!document.cookie) { + console.log("没有cookie"); + // 设置cookie + + setTimeout(() => { + window.location.href = `${ + apiUrl.backUrl + }/api/appointment/wx?notifyUrl=${encodeURIComponent( + window.location.href + )}`; + }, 2000); + } + } +}; + +export default { + msgToast, + vefTel, + vefEmpty, + logout, + navigateBack, + getLocationParams, + getOpenId, +}; diff --git a/common/index.scss b/common/index.scss new file mode 100644 index 0000000..1ffe5f8 --- /dev/null +++ b/common/index.scss @@ -0,0 +1,1248 @@ +.info { + width: 650upx; + // height: 218upx; + background: rgba(255, 255, 255, 0.3); + margin: 65rpx 0 0 0; + + padding: 0 40upx 16upx 40upx; + border-radius: 15upx; + .item { + font-size: 30upx; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 40upx; + margin-bottom: 10upx; + .rz { + margin-left: 10upx; + font-size: 28rpx; + background-color: #558bf2; + width: 60upx; + + border-radius: 40upx; + padding: 0upx 20upx 4upx 20upx; + } + } + .gray { + color: #fff; + } + /deep/ .u-input__content__field-wrapper__field { + color: #fff !important; + } + .resend { + color: #558bf2; + font-size: 14px; + } +} + +.fl-card { + box-shadow: 0 1px 5px #bba7a7, 0 2px 2px #7c6969, 0 3px 1px -2px #645050; + background: #fff; + border-radius: 6upx; + padding: 8upx; +} + +.u-badge--success { + background-color: #829f8c !important; +} +.u-badge--not-dot { + padding: 2px 4px !important; +} +.row { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; /* 将子元素左对齐 */ +} +.justify-center { + justify-content: center; +} +.items-center { + align-items: center; +} +.relative { + position: relative; +} +.absolute { + position: absolute; +} +.justify-between { + justify-content: space-between; +} +.justify-around { + justify-content: space-around; +} +.font-12 { + font-size: 12px; +} +.font-16 { + font-size: 16px; +} +.font-18 { + font-size: 18px; +} +.font-600 { + font-weight: 600; +} +.fl-my-sm { + margin: 8px 0; +} +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} +.flex, +.row { + display: flex; + flex-wrap: wrap; +} + +@media (min-width: 0) { + .flex > .col, + .flex > .col-0, + .flex > .col-1, + .flex > .col-2, + .flex > .col-3, + .flex > .col-4, + .flex > .col-5, + .flex > .col-6, + .flex > .col-7, + .flex > .col-8, + .flex > .col-9, + .flex > .col-10, + .flex > .col-11, + .flex > .col-12, + .flex > .col-auto, + .flex > .col-grow, + .flex > .col-shrink, + .flex > .col-xs, + .flex > .col-xs-0, + .flex > .col-xs-1, + .flex > .col-xs-2, + .flex > .col-xs-3, + .flex > .col-xs-4, + .flex > .col-xs-5, + .flex > .col-xs-6, + .flex > .col-xs-7, + .flex > .col-xs-8, + .flex > .col-xs-9, + .flex > .col-xs-10, + .flex > .col-xs-11, + .flex > .col-xs-12, + .flex > .col-xs-auto, + .flex > .col-xs-grow, + .flex > .col-xs-shrink, + .row > .col, + .row > .col-0, + .row > .col-1, + .row > .col-2, + .row > .col-3, + .row > .col-4, + .row > .col-5, + .row > .col-6, + .row > .col-7, + .row > .col-8, + .row > .col-9, + .row > .col-10, + .row > .col-11, + .row > .col-12, + .row > .col-auto, + .row > .col-grow, + .row > .col-shrink, + .row > .col-xs, + .row > .col-xs-0, + .row > .col-xs-1, + .row > .col-xs-2, + .row > .col-xs-3, + .row > .col-xs-4, + .row > .col-xs-5, + .row > .col-xs-6, + .row > .col-xs-7, + .row > .col-xs-8, + .row > .col-xs-9, + .row > .col-xs-10, + .row > .col-xs-11, + .row > .col-xs-12, + .row > .col-xs-auto, + .row > .col-xs-grow, + .row > .col-xs-shrink { + width: auto; + min-width: 0; + max-width: 100%; + } + + .flex > .col, + .flex > .col-0, + .flex > .col-1, + .flex > .col-2, + .flex > .col-3, + .flex > .col-4, + .flex > .col-5, + .flex > .col-6, + .flex > .col-7, + .flex > .col-8, + .flex > .col-9, + .flex > .col-10, + .flex > .col-11, + .flex > .col-12, + .flex > .col-auto, + .flex > .col-grow, + .flex > .col-shrink, + .flex > .col-xs, + .flex > .col-xs-0, + .flex > .col-xs-1, + .flex > .col-xs-2, + .flex > .col-xs-3, + .flex > .col-xs-4, + .flex > .col-xs-5, + .flex > .col-xs-6, + .flex > .col-xs-7, + .flex > .col-xs-8, + .flex > .col-xs-9, + .flex > .col-xs-10, + .flex > .col-xs-11, + .flex > .col-xs-12, + .flex > .col-xs-auto, + .flex > .col-xs-grow, + .flex > .col-xs-shrink { + height: auto; + min-height: 0; + max-height: 100%; + } + + .col, + .col-xs { + flex: 10000 1 0%; + } + + .col-0, + .col-1, + .col-2, + .col-3, + .col-4, + .col-5, + .col-6, + .col-7, + .col-8, + .col-9, + .col-10, + .col-11, + .col-12, + .col-auto, + .col-xs-0, + .col-xs-1, + .col-xs-2, + .col-xs-3, + .col-xs-4, + .col-xs-5, + .col-xs-6, + .col-xs-7, + .col-xs-8, + .col-xs-9, + .col-xs-10, + .col-xs-11, + .col-xs-12, + .col-xs-auto { + flex: 0 0 auto; + } + + .col-grow, + .col-xs-grow { + flex: 1 0 auto; + } + + .col-shrink, + .col-xs-shrink { + flex: 0 1 auto; + } + + .row > .col-0, + .row > .col-xs-0 { + height: auto; + width: 0%; + } + + .row > .offset-0, + .row > .offset-xs-0 { + margin-left: 0%; + } + + .row > .col-1, + .row > .col-xs-1 { + height: auto; + width: 8.3333%; + } + + .row > .offset-1, + .row > .offset-xs-1 { + margin-left: 8.3333%; + } + + .row > .col-2, + .row > .col-xs-2 { + height: auto; + width: 16.6667%; + } + + .row > .offset-2, + .row > .offset-xs-2 { + margin-left: 16.6667%; + } + + .row > .col-3, + .row > .col-xs-3 { + height: auto; + width: 25%; + } + + .row > .offset-3, + .row > .offset-xs-3 { + margin-left: 25%; + } + + .row > .col-4, + .row > .col-xs-4 { + height: auto; + width: 33.3333%; + } + + .row > .offset-4, + .row > .offset-xs-4 { + margin-left: 33.3333%; + } + + .row > .col-5, + .row > .col-xs-5 { + height: auto; + width: 41.6667%; + } + + .row > .offset-5, + .row > .offset-xs-5 { + margin-left: 41.6667%; + } + + .row > .col-6, + .row > .col-xs-6 { + height: auto; + width: 50%; + } + + .row > .offset-6, + .row > .offset-xs-6 { + margin-left: 50%; + } + + .row > .col-7, + .row > .col-xs-7 { + height: auto; + width: 58.3333%; + } + + .row > .offset-7, + .row > .offset-xs-7 { + margin-left: 58.3333%; + } + + .row > .col-8, + .row > .col-xs-8 { + height: auto; + width: 66.6667%; + } + + .row > .offset-8, + .row > .offset-xs-8 { + margin-left: 66.6667%; + } + + .row > .col-9, + .row > .col-xs-9 { + height: auto; + width: 75%; + } + + .row > .offset-9, + .row > .offset-xs-9 { + margin-left: 75%; + } + + .row > .col-10, + .row > .col-xs-10 { + height: auto; + width: 83.3333%; + } + + .row > .offset-10, + .row > .offset-xs-10 { + margin-left: 83.3333%; + } + + .row > .col-11, + .row > .col-xs-11 { + height: auto; + width: 91.6667%; + } + + .row > .offset-11, + .row > .offset-xs-11 { + margin-left: 91.6667%; + } + + .row > .col-12, + .row > .col-xs-12 { + height: auto; + width: 100%; + } + + .row > .offset-12, + .row > .offset-xs-12 { + margin-left: 100%; + } + + .row > .col-all { + height: auto; + flex: 0 0 100%; + } +} + +@media (min-width: 600px) { + .flex > .col-sm, + .flex > .col-sm-0, + .flex > .col-sm-1, + .flex > .col-sm-2, + .flex > .col-sm-3, + .flex > .col-sm-4, + .flex > .col-sm-5, + .flex > .col-sm-6, + .flex > .col-sm-7, + .flex > .col-sm-8, + .flex > .col-sm-9, + .flex > .col-sm-10, + .flex > .col-sm-11, + .flex > .col-sm-12, + .flex > .col-sm-auto, + .flex > .col-sm-grow, + .flex > .col-sm-shrink, + .row > .col-sm, + .row > .col-sm-0, + .row > .col-sm-1, + .row > .col-sm-2, + .row > .col-sm-3, + .row > .col-sm-4, + .row > .col-sm-5, + .row > .col-sm-6, + .row > .col-sm-7, + .row > .col-sm-8, + .row > .col-sm-9, + .row > .col-sm-10, + .row > .col-sm-11, + .row > .col-sm-12, + .row > .col-sm-auto, + .row > .col-sm-grow, + .row > .col-sm-shrink { + width: auto; + min-width: 0; + max-width: 100%; + } + + .flex > .col-sm, + .flex > .col-sm-0, + .flex > .col-sm-1, + .flex > .col-sm-2, + .flex > .col-sm-3, + .flex > .col-sm-4, + .flex > .col-sm-5, + .flex > .col-sm-6, + .flex > .col-sm-7, + .flex > .col-sm-8, + .flex > .col-sm-9, + .flex > .col-sm-10, + .flex > .col-sm-11, + .flex > .col-sm-12, + .flex > .col-sm-auto, + .flex > .col-sm-grow, + .flex > .col-sm-shrink { + height: auto; + min-height: 0; + max-height: 100%; + } + + .col-sm { + flex: 10000 1 0%; + } + + .col-sm-0, + .col-sm-1, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9, + .col-sm-10, + .col-sm-11, + .col-sm-12, + .col-sm-auto { + flex: 0 0 auto; + } + + .col-sm-grow { + flex: 1 0 auto; + } + + .col-sm-shrink { + flex: 0 1 auto; + } + + .row > .col-sm-0 { + height: auto; + width: 0%; + } + + .row > .offset-sm-0 { + margin-left: 0%; + } + + .row > .col-sm-1 { + height: auto; + width: 8.3333%; + } + + .row > .offset-sm-1 { + margin-left: 8.3333%; + } + + .row > .col-sm-2 { + height: auto; + width: 16.6667%; + } + + .row > .offset-sm-2 { + margin-left: 16.6667%; + } + + .row > .col-sm-3 { + height: auto; + width: 25%; + } + + .row > .offset-sm-3 { + margin-left: 25%; + } + + .row > .col-sm-4 { + height: auto; + width: 33.3333%; + } + + .row > .offset-sm-4 { + margin-left: 33.3333%; + } + + .row > .col-sm-5 { + height: auto; + width: 41.6667%; + } + + .row > .offset-sm-5 { + margin-left: 41.6667%; + } + + .row > .col-sm-6 { + height: auto; + width: 50%; + } + + .row > .offset-sm-6 { + margin-left: 50%; + } + + .row > .col-sm-7 { + height: auto; + width: 58.3333%; + } + + .row > .offset-sm-7 { + margin-left: 58.3333%; + } + + .row > .col-sm-8 { + height: auto; + width: 66.6667% !important; + } + + .row > .offset-sm-8 { + margin-left: 66.6667%; + } + + .row > .col-sm-9 { + height: auto; + width: 75%; + } + + .row > .offset-sm-9 { + margin-left: 75%; + } + + .row > .col-sm-10 { + height: auto; + width: 83.3333%; + } + + .row > .offset-sm-10 { + margin-left: 83.3333%; + } + + .row > .col-sm-11 { + height: auto; + width: 91.6667%; + } + + .row > .offset-sm-11 { + margin-left: 91.6667%; + } + + .row > .col-sm-12 { + height: auto; + width: 100%; + } + + .row > .offset-sm-12 { + margin-left: 100%; + } +} + +@media (min-width: 1024px) { + .flex > .col-md, + .flex > .col-md-0, + .flex > .col-md-1, + .flex > .col-md-2, + .flex > .col-md-3, + .flex > .col-md-4, + .flex > .col-md-5, + .flex > .col-md-6, + .flex > .col-md-7, + .flex > .col-md-8, + .flex > .col-md-9, + .flex > .col-md-10, + .flex > .col-md-11, + .flex > .col-md-12, + .flex > .col-md-auto, + .flex > .col-md-grow, + .flex > .col-md-shrink, + .row > .col-md, + .row > .col-md-0, + .row > .col-md-1, + .row > .col-md-2, + .row > .col-md-3, + .row > .col-md-4, + .row > .col-md-5, + .row > .col-md-6, + .row > .col-md-7, + .row > .col-md-8, + .row > .col-md-9, + .row > .col-md-10, + .row > .col-md-11, + .row > .col-md-12, + .row > .col-md-auto, + .row > .col-md-grow, + .row > .col-md-shrink { + width: auto; + min-width: 0; + max-width: 100%; + } + + .flex > .col-md, + .flex > .col-md-0, + .flex > .col-md-1, + .flex > .col-md-2, + .flex > .col-md-3, + .flex > .col-md-4, + .flex > .col-md-5, + .flex > .col-md-6, + .flex > .col-md-7, + .flex > .col-md-8, + .flex > .col-md-9, + .flex > .col-md-10, + .flex > .col-md-11, + .flex > .col-md-12, + .flex > .col-md-auto, + .flex > .col-md-grow, + .flex > .col-md-shrink { + height: auto; + min-height: 0; + max-height: 100%; + } + + .col-md { + flex: 10000 1 0%; + } + + .col-md-0, + .col-md-1, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9, + .col-md-10, + .col-md-11, + .col-md-12, + .col-md-auto { + flex: 0 0 auto; + } + + .col-md-grow { + flex: 1 0 auto; + } + + .col-md-shrink { + flex: 0 1 auto; + } + + .row > .col-md-0 { + height: auto; + width: 0%; + } + + .row > .offset-md-0 { + margin-left: 0%; + } + + .row > .col-md-1 { + height: auto; + width: 8.3333%; + } + + .row > .offset-md-1 { + margin-left: 8.3333%; + } + + .row > .col-md-2 { + height: auto; + width: 16.6667%; + } + + .row > .offset-md-2 { + margin-left: 16.6667%; + } + + .row > .col-md-3 { + height: auto; + width: 25%; + } + + .row > .offset-md-3 { + margin-left: 25%; + } + + .row > .col-md-4 { + height: auto; + width: 33.3333%; + } + + .row > .offset-md-4 { + margin-left: 33.3333%; + } + + .row > .col-md-5 { + height: auto; + width: 41.6667%; + } + + .row > .offset-md-5 { + margin-left: 41.6667%; + } + + .row > .col-md-6 { + height: auto; + width: 50%; + } + + .row > .offset-md-6 { + margin-left: 50%; + } + + .row > .col-md-7 { + height: auto; + width: 58.3333%; + } + + .row > .offset-md-7 { + margin-left: 58.3333%; + } + + .row > .col-md-8 { + height: auto; + width: 66.6667%; + } + + .row > .offset-md-8 { + margin-left: 66.6667%; + } + + .row > .col-md-9 { + height: auto; + width: 75%; + } + + .row > .offset-md-9 { + margin-left: 75%; + } + + .row > .col-md-10 { + height: auto; + width: 83.3333%; + } + + .row > .offset-md-10 { + margin-left: 83.3333%; + } + + .row > .col-md-11 { + height: auto; + width: 91.6667%; + } + + .row > .offset-md-11 { + margin-left: 91.6667%; + } + + .row > .col-md-12 { + height: auto; + width: 100%; + } + + .row > .offset-md-12 { + margin-left: 100%; + } +} + +@media (min-width: 1440px) { + .flex > .col-lg, + .flex > .col-lg-0, + .flex > .col-lg-1, + .flex > .col-lg-2, + .flex > .col-lg-3, + .flex > .col-lg-4, + .flex > .col-lg-5, + .flex > .col-lg-6, + .flex > .col-lg-7, + .flex > .col-lg-8, + .flex > .col-lg-9, + .flex > .col-lg-10, + .flex > .col-lg-11, + .flex > .col-lg-12, + .flex > .col-lg-auto, + .flex > .col-lg-grow, + .flex > .col-lg-shrink, + .row > .col-lg, + .row > .col-lg-0, + .row > .col-lg-1, + .row > .col-lg-2, + .row > .col-lg-3, + .row > .col-lg-4, + .row > .col-lg-5, + .row > .col-lg-6, + .row > .col-lg-7, + .row > .col-lg-8, + .row > .col-lg-9, + .row > .col-lg-10, + .row > .col-lg-11, + .row > .col-lg-12, + .row > .col-lg-auto, + .row > .col-lg-grow, + .row > .col-lg-shrink { + width: auto; + min-width: 0; + max-width: 100%; + } + + .flex > .col-lg, + .flex > .col-lg-0, + .flex > .col-lg-1, + .flex > .col-lg-2, + .flex > .col-lg-3, + .flex > .col-lg-4, + .flex > .col-lg-5, + .flex > .col-lg-6, + .flex > .col-lg-7, + .flex > .col-lg-8, + .flex > .col-lg-9, + .flex > .col-lg-10, + .flex > .col-lg-11, + .flex > .col-lg-12, + .flex > .col-lg-auto, + .flex > .col-lg-grow, + .flex > .col-lg-shrink { + height: auto; + min-height: 0; + max-height: 100%; + } + + .col-lg { + flex: 10000 1 0%; + } + + .col-lg-0, + .col-lg-1, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9, + .col-lg-10, + .col-lg-11, + .col-lg-12, + .col-lg-auto { + flex: 0 0 auto; + } + + .col-lg-grow { + flex: 1 0 auto; + } + + .col-lg-shrink { + flex: 0 1 auto; + } + + .row > .col-lg-0 { + height: auto; + width: 0%; + } + + .row > .offset-lg-0 { + margin-left: 0%; + } + + .row > .col-lg-1 { + height: auto; + width: 8.3333%; + } + + .row > .offset-lg-1 { + margin-left: 8.3333%; + } + + .row > .col-lg-2 { + height: auto; + width: 16.6667%; + } + + .row > .offset-lg-2 { + margin-left: 16.6667%; + } + + .row > .col-lg-3 { + height: auto; + width: 25%; + } + + .row > .offset-lg-3 { + margin-left: 25%; + } + + .row > .col-lg-4 { + height: auto; + width: 33.3333%; + } + + .row > .offset-lg-4 { + margin-left: 33.3333%; + } + + .row > .col-lg-5 { + height: auto; + width: 41.6667%; + } + + .row > .offset-lg-5 { + margin-left: 41.6667%; + } + + .row > .col-lg-6 { + height: auto; + width: 50%; + } + + .row > .offset-lg-6 { + margin-left: 50%; + } + + .row > .col-lg-7 { + height: auto; + width: 58.3333%; + } + + .row > .offset-lg-7 { + margin-left: 58.3333%; + } + + .row > .col-lg-8 { + height: auto; + width: 66.6667%; + } + + .row > .offset-lg-8 { + margin-left: 66.6667%; + } + + .row > .col-lg-9 { + height: auto; + width: 75%; + } + + .row > .offset-lg-9 { + margin-left: 75%; + } + + .row > .col-lg-10 { + height: auto; + width: 83.3333%; + } + + .row > .offset-lg-10 { + margin-left: 83.3333%; + } + + .row > .col-lg-11 { + height: auto; + width: 91.6667%; + } + + .row > .offset-lg-11 { + margin-left: 91.6667%; + } + + .row > .col-lg-12 { + height: auto; + width: 100%; + } + + .row > .offset-lg-12 { + margin-left: 100%; + } +} + +@media (min-width: 1920px) { + .flex > .col-xl, + .flex > .col-xl-0, + .flex > .col-xl-1, + .flex > .col-xl-2, + .flex > .col-xl-3, + .flex > .col-xl-4, + .flex > .col-xl-5, + .flex > .col-xl-6, + .flex > .col-xl-7, + .flex > .col-xl-8, + .flex > .col-xl-9, + .flex > .col-xl-10, + .flex > .col-xl-11, + .flex > .col-xl-12, + .flex > .col-xl-auto, + .flex > .col-xl-grow, + .flex > .col-xl-shrink, + .row > .col-xl, + .row > .col-xl-0, + .row > .col-xl-1, + .row > .col-xl-2, + .row > .col-xl-3, + .row > .col-xl-4, + .row > .col-xl-5, + .row > .col-xl-6, + .row > .col-xl-7, + .row > .col-xl-8, + .row > .col-xl-9, + .row > .col-xl-10, + .row > .col-xl-11, + .row > .col-xl-12, + .row > .col-xl-auto, + .row > .col-xl-grow, + .row > .col-xl-shrink { + width: auto; + min-width: 0; + max-width: 100%; + } + + .flex > .col-xl, + .flex > .col-xl-0, + .flex > .col-xl-1, + .flex > .col-xl-2, + .flex > .col-xl-3, + .flex > .col-xl-4, + .flex > .col-xl-5, + .flex > .col-xl-6, + .flex > .col-xl-7, + .flex > .col-xl-8, + .flex > .col-xl-9, + .flex > .col-xl-10, + .flex > .col-xl-11, + .flex > .col-xl-12, + .flex > .col-xl-auto, + .flex > .col-xl-grow, + .flex > .col-xl-shrink { + height: auto; + min-height: 0; + max-height: 100%; + } + + .col-xl { + flex: 10000 1 0%; + } + + .col-xl-0, + .col-xl-1, + .col-xl-2, + .col-xl-3, + .col-xl-4, + .col-xl-5, + .col-xl-6, + .col-xl-7, + .col-xl-8, + .col-xl-9, + .col-xl-10, + .col-xl-11, + .col-xl-12, + .col-xl-auto { + flex: 0 0 auto; + } + + .col-xl-grow { + flex: 1 0 auto; + } + + .col-xl-shrink { + flex: 0 1 auto; + } + + .row > .col-xl-0 { + height: auto; + width: 0%; + } + + .row > .offset-xl-0 { + margin-left: 0%; + } + + .row > .col-xl-1 { + height: auto; + width: 8.3333%; + } + + .row > .offset-xl-1 { + margin-left: 8.3333%; + } + + .row > .col-xl-2 { + height: auto; + width: 16.6667%; + } + + .row > .offset-xl-2 { + margin-left: 16.6667%; + } + + .row > .col-xl-3 { + height: auto; + width: 25%; + } + + .row > .offset-xl-3 { + margin-left: 25%; + } + + .row > .col-xl-4 { + height: auto; + width: 33.3333%; + } + + .row > .offset-xl-4 { + margin-left: 33.3333%; + } + + .row > .col-xl-5 { + height: auto; + width: 41.6667%; + } + + .row > .offset-xl-5 { + margin-left: 41.6667%; + } + + .row > .col-xl-6 { + height: auto; + width: 50%; + } + + .row > .offset-xl-6 { + margin-left: 50%; + } + + .row > .col-xl-7 { + height: auto; + width: 58.3333%; + } + + .row > .offset-xl-7 { + margin-left: 58.3333%; + } + + .row > .col-xl-8 { + height: auto; + width: 66.6667%; + } + + .row > .offset-xl-8 { + margin-left: 66.6667%; + } + + .row > .col-xl-9 { + height: auto; + width: 75%; + } + + .row > .offset-xl-9 { + margin-left: 75%; + } + + .row > .col-xl-10 { + height: auto; + width: 83.3333%; + } + + .row > .offset-xl-10 { + margin-left: 83.3333%; + } + + .row > .col-xl-11 { + height: auto; + width: 91.6667%; + } + + .row > .offset-xl-11 { + margin-left: 91.6667%; + } + + .row > .col-xl-12 { + height: auto; + width: 100%; + } + + .row > .offset-xl-12 { + margin-left: 100%; + } +} diff --git a/components/inputSelect/inputSelect.vue b/components/inputSelect/inputSelect.vue new file mode 100644 index 0000000..f02ca3c --- /dev/null +++ b/components/inputSelect/inputSelect.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/components/navBar/navBar.vue b/components/navBar/navBar.vue new file mode 100644 index 0000000..4d46d0a --- /dev/null +++ b/components/navBar/navBar.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/components/page-animation/index.css b/components/page-animation/index.css new file mode 100644 index 0000000..d754349 --- /dev/null +++ b/components/page-animation/index.css @@ -0,0 +1,25 @@ + +uni-page { + opacity: 0; +} + +uni-page.animation-before { + transform: translateY(20px); +} + +uni-page.animation-leave { + transition: all .3s ease; +} + +uni-page.animation-enter { + transition: all .3s ease; +} + +uni-page.animation-show { + opacity: 1; +} + +uni-page.animation-after { + transform: translateY(0); +} + diff --git a/components/page-animation/index.vue b/components/page-animation/index.vue new file mode 100644 index 0000000..97807ab --- /dev/null +++ b/components/page-animation/index.vue @@ -0,0 +1,37 @@ + diff --git a/components/pyh-rdtpicker/pyh-rdtpicker.vue b/components/pyh-rdtpicker/pyh-rdtpicker.vue new file mode 100644 index 0000000..bc77b0a --- /dev/null +++ b/components/pyh-rdtpicker/pyh-rdtpicker.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/components/pyh-rdtpicker/readme.md b/components/pyh-rdtpicker/readme.md new file mode 100644 index 0000000..652c1b2 --- /dev/null +++ b/components/pyh-rdtpicker/readme.md @@ -0,0 +1,81 @@ +### pyh-rdtPicker 日期区间选择器 + +可进行多粒度的时间选择器,组件名:``pyh-rdtpicker``,代码块: rangeDatePick。 + +**使用方式:** + +在 ``script`` 中引用组件 + +```javascript +import rangeDatePick from '@/components/pyh-rdtpicker/pyh-rdtpicker.vue'; +export default { + components: {rangeDatePick} +} +``` + +在 ``template`` 中使用组件 + +```html + +``` + +**pdtPicker 属性说明:** + +|属性名 |类型 |默认值 |说明 | +|--- |---- |--- |--- | +|themeColor |String |'#4C83D6' |主题色 | +|start |String |'1900-01-01' |限制选择器选择的最小时间 (只支持年限制),粒度格式和value格式要相符,否则会有错误提示| +|end |String |'2200-12-01' |限制选择器选择的最大时间(只支持年限制),粒度格式和value格式要相符,否则会有错误提示| +|value |Array |'' |当前日期选择器显示的时间 ,粒度格式和value格式要相符,否则会又错误提示| +|fields |String |'day' |当前日期选择器粒度:year/month/day| + + +**value 值说明:** + +|值 |类型 |说明 | +|--- |---- |--- | +|[] |Array |当前日期选择器为开始时间的默认值 | +|['1900-01-01'] |Array |当前日期选择器开始时间为1900-01-01 | +|['1900-01-01','2010-12-01'] |Array |当前日期选择器开始时间为1900-01-01,结束时间为2010-12-01| + +**事件说明:** + +|事件名称 |说明 | +|---|---| +|showchange |必传,用于控制显示隐藏| +|change |时间选择器点击【确定】按钮时时触发的事件,参数为选择器的当前的 value| +|cancel |时间选择器点击【取消】按钮时时触发的事件| + +**showchange事件说明:** + +showchange(){ + this.isShow=!this.isShow; +} + +**更新记录:** + +1.0.6:添加动态修改start和end,示例项目由新增注释
+ +1.0.5:修复月份切换时,day存在显示undefined的问题;修复小程序value设置后滚动位置不对的问题
+ +1.0.4:修复滚动穿透;修改默认fields为day,添加了同年限制月份(start和end同年,有月份限制),改正作者名与组件名字
+ +1.0.3:修复动态的value不能赋值问题;修复end值的可选值与实际填入的end值小一年问题
+ +1.0.2:优化了开始日期和结束日期的切换,当前版本切换时会显示更合适的日期;添加了粒度选择,现支持year/month/day;修复了demo的getDate -60年的获取问题
+ +1.0.1:新增组件——日期区间选择器 + +**感谢:** + +> 有更多优化建议和需求,请联系作者panyh。谢谢! \ No newline at end of file diff --git a/components/tabBar/tabBar.vue b/components/tabBar/tabBar.vue new file mode 100644 index 0000000..28ac1ae --- /dev/null +++ b/components/tabBar/tabBar.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/components/timeRang-picker/timeRang-picker.vue b/components/timeRang-picker/timeRang-picker.vue new file mode 100644 index 0000000..23888db --- /dev/null +++ b/components/timeRang-picker/timeRang-picker.vue @@ -0,0 +1,131 @@ + + + + + + + diff --git a/components/w-picker/date-picker.vue b/components/w-picker/date-picker.vue new file mode 100644 index 0000000..7f9a798 --- /dev/null +++ b/components/w-picker/date-picker.vue @@ -0,0 +1,1171 @@ + + + + + diff --git a/components/w-picker/half-picker.vue b/components/w-picker/half-picker.vue new file mode 100644 index 0000000..58fd556 --- /dev/null +++ b/components/w-picker/half-picker.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/components/w-picker/range-picker.vue b/components/w-picker/range-picker.vue new file mode 100644 index 0000000..7dd8b5b --- /dev/null +++ b/components/w-picker/range-picker.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/components/w-picker/w-picker.css b/components/w-picker/w-picker.css new file mode 100644 index 0000000..fc325f4 --- /dev/null +++ b/components/w-picker/w-picker.css @@ -0,0 +1,32 @@ +.w-picker-flex2 { + flex: 2; +} + +.w-picker-flex1 { + flex: 1; +} + +.w-picker-view { + width: 100%; + height: 540upx; + overflow: hidden; + background-color: rgba(255, 255, 255, 1); + z-index: 666; +} + +.d-picker-view { + height: 75%; +} + +.w-picker-item { + display: flex; + align-items: center; + justify-content: center; + text-align: center; + width: 100%; + /* height: 88upx; */ + /* line-height: 88upx; */ + text-overflow: ellipsis; + white-space: nowrap; + font-size: 30upx; +} \ No newline at end of file diff --git a/components/w-picker/w-picker.vue b/components/w-picker/w-picker.vue new file mode 100644 index 0000000..a26a584 --- /dev/null +++ b/components/w-picker/w-picker.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/http/api.js b/http/api.js new file mode 100644 index 0000000..56ec869 --- /dev/null +++ b/http/api.js @@ -0,0 +1,7 @@ +export default { + // backUrl: 'http://172.16.100.93:9023', + // backUrl: 'https://appointtest.szjixun.cn', + // backUrl: 'https://appoint.szjixun.cn', + // backUrl: "https://appointtest2.szjixun.cn", + backUrl: "http://114.218.158.24:9020", +}; diff --git a/http/index.js b/http/index.js new file mode 100644 index 0000000..ab5e364 --- /dev/null +++ b/http/index.js @@ -0,0 +1,13 @@ +import http from './interface' + +export const request = (url, data, type) => { + return http.request({ + url: url, + method: type || 'POST', + data + }) +} + +export default { + request, +} \ No newline at end of file diff --git a/http/interface.js b/http/interface.js new file mode 100644 index 0000000..68484b5 --- /dev/null +++ b/http/interface.js @@ -0,0 +1,175 @@ +/** + * 通用uni-app网络请求 + * 基于 Promise 对象实现更简单的 request 使用方式,支持请求和响应拦截 + */ +import apiUrl from "./api"; +export default { + config: { + baseUrl: "http://114.218.158.24:9020", + //"https://appointtest2.szjixun.cn", + // "https://appointteam.szjixun.cn", + header: { + "Content-Type": "application/json", + // 'Content-Type':'application/x-www-form-urlencoded' + }, + data: {}, + method: "GET", + dataType: "json" /* 如设为json,会对返回的数据做一次 JSON.parse */, + responseType: "text", + success() {}, + fail() {}, + complete() {}, + }, + interceptor: { + request: null, + response: null, + }, + request(options) { + if (!options) { + options = {}; + } + + options.baseUrl = options.baseUrl || this.config.baseUrl; + options.dataType = options.dataType || this.config.dataType; + options.url = options.baseUrl + options.url; + options.data = options.data || {}; + options.method = options.method || this.config.method; + //TODO 加密数据 + options.header = options.header || this.config.header; + //TODO 数据签名 + let _token = { + Authorization: uni.getStorageSync("pay-token") || "46d71a72d8d845ad7ed23eba9bdde260e635407190c2ce1bf7fd22088e41682ea07773ec65cae8946d2003f264d55961f96e0fc5da10eb96d3a348c1664e9644e756eda7154e1af9e70d1c9d2f100823a26885ea6df3249fe619995cb79dc5dbd5ead32d43b955d6b3ce83129097bb21bb8169898f48692de4f966db140c71b85a2065acfc948561c465279fc05194a79a1115f3b00170944b6c4bd6c52ada909a075c55d18d76c2ed2175602421b34b27362a05c350733ed73382471df0a08950f7f1e812a610c17bdac82d82d54be38969f6b41201af79b8d36ef177c5b94b180c1e16c357f434e29e022c62394499059c937382faf6e496d68b48d5f0c8770bff6906979526141dacb14bb2edae6f0325160574152e3f7a0944600210214ba274ed1e49813121ce451c0016e420ea0634a8e6936726c5d09024d22202c8d0", + tokenC: uni.getStorageSync("pay-token") || "undefined", + }; + options.header = Object.assign({}, options.header, _token); + /* + _sign = {'sign': sign(JSON.stringify(options.data))} + options.header = Object.assign({}, options.header, _token,_sign) + */ + + return new Promise((resolve, reject) => { + let _config = null; + + options.complete = (response) => { + let statusCode = response.statusCode; + response.config = _config; + if (process.env.NODE_ENV === "development") { + if (statusCode === 200) { + // console.log("【" + _config.requestId + "】 结果:" + JSON.stringify(response.data)) + } + } + if (this.interceptor.response) { + let newResponse = this.interceptor.response(response); + if (newResponse) { + response = newResponse; + } + } + if (document.cookie?.split("=")[1] && response.data.status === 401) { + uni.navigateTo({ + url: + "/pages/verify/login?id=" + + uni.getStorageSync("verifyDataId") + + "&type=" + + uni.getStorageSync("type"), + }); + return; + } + // 统一的响应日志记录 + _reslog(response); + if (statusCode === 200) { + //成功 + resolve(response.data); + } else { + reject(response); + } + }; + + _config = Object.assign({}, this.config, options); + _config.requestId = new Date().getTime(); + + if (this.interceptor.request) { + this.interceptor.request(_config); + } + + // 统一的请求日志记录 + _reqlog(_config); + + uni.request(_config); + }); + }, + get(url, data, options) { + if (!options) { + options = {}; + } + options.url = url; + options.data = data; + options.method = "GET"; + return this.request(options); + }, + post(url, data, options, header) { + if (!options) { + options = {}; + } + options.url = url; + options.data = data; + options.header = header; + options.method = "POST"; + return this.request(options); + }, + put(url, data, options) { + if (!options) { + options = {}; + } + options.url = url; + options.data = data; + options.method = "PUT"; + return this.request(options); + }, + delete(url, data, options) { + if (!options) { + options = {}; + } + options.url = url; + options.data = data; + options.method = "DELETE"; + return this.request(options); + }, +}; + +/** + * 请求接口日志记录 + */ +function _reqlog(req) { + if (process.env.NODE_ENV === "development") { + // console.log("【" + req.requestId + "】 地址:" + req.url) + if (req.data) { + // console.log("【" + req.requestId + "】 请求参数:" + JSON.stringify(req.data)) + } + } + //TODO 调接口异步写入日志数据库 +} + +/** + * 响应接口日志记录 + */ +function _reslog(res) { + let _statusCode = res.statusCode; + if (process.env.NODE_ENV === "development") { + // console.log("【" + res.config.requestId + "】 地址:" + res.config.url) + if (res.config.data) { + // console.log("【" + res.config.requestId + "】 请求参数:" + JSON.stringify(res.config.data)) + } + // console.log("【" + res.config.requestId + "】 响应结果:" + JSON.stringify(res)) + } + //TODO 除了接口服务错误外,其他日志调接口异步写入日志数据库 + switch (_statusCode) { + case 200: + break; + case 401: + break; + case 404: + break; + default: + break; + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..b300473 --- /dev/null +++ b/index.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + +
+ +
+ + + + \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..84e03ee --- /dev/null +++ b/main.js @@ -0,0 +1,24 @@ +import App from "./App"; + +import Vue from "vue"; +import uView from "uview-ui"; +import store from "./store/index.js"; +import common from "./common/index.js"; +import api from "@/http/"; +import moment from "moment"; +import ww from "chinese-workday"; + +Vue.use(uView); +Vue.prototype.$api = api; +Vue.prototype.$common = common; +Vue.prototype.$moment = moment; +Vue.prototype.$isWorkday = ww.isWorkday; +Vue.config.productionTip = false; + +// Vue.config.ignoredElements.push("wx-open-launch-weapp"); +App.mpType = "app"; +const app = new Vue({ + ...App, + store, +}); +app.$mount(); diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..4fcba3a --- /dev/null +++ b/manifest.json @@ -0,0 +1,139 @@ +{ + "name" : "FONCHAT", + "appid" : "__UNI__84B5B31", + "description" : "", + "versionName" : "1.0.1", + "versionCode" : 101, + "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" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ] + }, + /* ios打包配置 */ + "ios" : { + "dSYMs" : false + }, + /* SDK配置 */ + "sdkConfigs" : { + "ad" : {} + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + } + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true, + "unipush" : { + "enable" : false + }, + "permission" : { + "scope.userLocation" : { + "desc" : "" + }, + "permission" : { + "jsApiDomain" : "https://appointteam.szjixun.cn" + } + } + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2", + "h5" : { + "template" : "", + "sdkConfigs" : { + "maps" : { + "amap" : { + "key" : "e152c1daf64d0f1d1b2370d4e58ebed7", + "securityJsCode" : "23a195cc14b23f62e7203f3ad91fd43c", + "serviceHost" : "" + } + } + }, + "publicPath" : "./", + "router" : { + "base" : "" + }, + "devServer" : { + "https" : false + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e5eef2f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,63 @@ +{ + "name": "日期区间picker", + "version": "1.0.7", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "日期区间picker", + "version": "1.0.7", + "dependencies": { + "chinese-workday": "^1.9.0", + "jweixin-module": "^1.6.0", + "moment": "^2.29.4", + "weixin-js-sdk": "^1.6.0" + } + }, + "node_modules/chinese-workday": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/chinese-workday/-/chinese-workday-1.9.0.tgz", + "integrity": "sha512-qXxFBFpMQzCaHOBs4VnVEVnTySWkCfxE/1fSbibtrJIB+qnjioDrjgQtXAzCvaqKndhYKS6PVl4BPtv/gMCO+w==" + }, + "node_modules/jweixin-module": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz", + "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==" + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "engines": { + "node": "*" + } + }, + "node_modules/weixin-js-sdk": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz", + "integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ==" + } + }, + "dependencies": { + "chinese-workday": { + "version": "1.9.0", + "resolved": "https://registry.npmmirror.com/chinese-workday/-/chinese-workday-1.9.0.tgz", + "integrity": "sha512-qXxFBFpMQzCaHOBs4VnVEVnTySWkCfxE/1fSbibtrJIB+qnjioDrjgQtXAzCvaqKndhYKS6PVl4BPtv/gMCO+w==" + }, + "jweixin-module": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/jweixin-module/-/jweixin-module-1.6.0.tgz", + "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==" + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "weixin-js-sdk": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz", + "integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..85d18b1 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "id": "pyh-rdtpicker", + "name": "日期区间picker", + "version": "1.0.7", + "description": "日期区间选择组件,可选粒度,可自定义主题", + "keywords": [ + "日期", + "区间", + "时间", + "组件", + "选择" + ], + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + }, + "dependencies": { + "chinese-workday": "^1.9.0", + "jweixin-module": "^1.6.0", + "moment": "^2.29.4", + "weixin-js-sdk": "^1.6.0" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..9ee4fae --- /dev/null +++ b/pages.json @@ -0,0 +1,29 @@ +{ + "easycom": { + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [ + { + // 首页 + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "FONCHAT", + "enablePullDownRefresh": false, + "app-plus": { + "titleNView": false // 禁用原生导航 + } + } + } + + + ], + + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + }, + + "uniIdRouter": {} +} diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..819db96 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,656 @@ + + + + + diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..41e5169 --- /dev/null +++ b/project.config.json @@ -0,0 +1,29 @@ +{ + "appid": "wx1e155fd041eda3be", + "compileType": "miniprogram", + "libVersion": "2.31.1", + "packOptions": { + "ignore": [], + "include": [] + }, + "setting": { + "coverView": true, + "es6": true, + "postcss": true, + "minified": true, + "enhance": true, + "showShadowRootInWxmlPanel": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "condition": false + }, + "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..c7bd152 --- /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": "FuchuanMountainHall", + "setting": { + "compileHotReLoad": true + } +} \ No newline at end of file diff --git a/static/image/3.5.png b/static/image/3.5.png new file mode 100644 index 0000000000000000000000000000000000000000..528ac9154dba0ecec8d12fd300ae12622ffa1098 GIT binary patch literal 6432 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�ycu4FI%^9SwjI(ZFyc@teGrf-_YACoOQj~2V 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 UwT*I{CIA2c07*qoM6N<$g1VH}{{R30 literal 0 HcmV?d00001 diff --git a/static/image/avator.png b/static/image/avator.png new file mode 100644 index 0000000000000000000000000000000000000000..3d1d41042db6974ba9188d98636272e5cff07ef5 GIT binary patch literal 3450 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 literal 0 HcmV?d00001 diff --git a/static/image/head.jpg b/static/image/head.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4654c2b7878cd8f03dfddeef62b5117766274d69 GIT binary patch literal 3576 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 Lo>cp>+me3*yEK|x literal 0 HcmV?d00001 diff --git a/static/image/shop-car.png b/static/image/shop-car.png new file mode 100644 index 0000000000000000000000000000000000000000..5f555fc0ac741371b334d3261e8a783f006e9960 GIT binary patch literal 8855 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 vzS76-UL*icbir886uRg9bxGh*MR${A2q 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 literal 0 HcmV?d00001 diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..3ef3b55 --- /dev/null +++ b/store/index.js @@ -0,0 +1,16 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +const store = new Vuex.Store({ + state: { + }, + getters: { + }, + mutations: { + } + +}) + +export default store 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..3a9eeda --- /dev/null +++ b/uni.scss @@ -0,0 +1,77 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +@import '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; diff --git a/uni_modules/superwei-combox/changelog.md b/uni_modules/superwei-combox/changelog.md new file mode 100644 index 0000000..5ba0d60 --- /dev/null +++ b/uni_modules/superwei-combox/changelog.md @@ -0,0 +1,22 @@ +## 1.0.10(2022-10-19) +- 修改文档,更改为不兼容小程序(存在下拉框滑动会自动关闭的问题,后期改进后再兼容,若各位有好的解决方法的话欢迎评论) +## 1.0.9(2022-07-28) +- 完善是否创建新条目功能,并将默认值改为允许 +## 1.0.8(2022-07-26) +- 新增禁用选项和是否创建新条目功能,新增disabledColor和isAllowCreate属性 +## 1.0.7(2022-05-05) +- 解决传入JSON数组后,在模糊匹配项中进行选择,@select事件返回值为undefined且报错的问题 +## 1.0.6(2022-03-24) +- 新增@select事件 +## 1.0.5(2022-03-22) +- 修改文档 +## 1.0.4(2022-03-18) +- 新增isJSON和keyName属性,candidates支持JSON数组格式 +## 1.0.3(2022-03-01) +- 调整为uni_modules目录规范 +## 1.0.2(2022-03-01) +- 基于官方uni-combox组件,解决选择后再次选择不展示全部选项的问题,同时新增选中项默认的文字和背景颜色,也可自定义进行样式覆盖 +## 1.0.1(2022-03-01) +- 无 +## 1.0.0(2022-03-01) +- 无 \ No newline at end of file diff --git a/uni_modules/superwei-combox/components/superwei-combox/superwei-combox.vue b/uni_modules/superwei-combox/components/superwei-combox/superwei-combox.vue new file mode 100644 index 0000000..cf722bd --- /dev/null +++ b/uni_modules/superwei-combox/components/superwei-combox/superwei-combox.vue @@ -0,0 +1,381 @@ + + + + + diff --git a/uni_modules/superwei-combox/package.json b/uni_modules/superwei-combox/package.json new file mode 100644 index 0000000..6dde65e --- /dev/null +++ b/uni_modules/superwei-combox/package.json @@ -0,0 +1,89 @@ +{ + "id": "superwei-combox", + "displayName": "superwei-combox 组合框", + "version": "1.0.10", + "description": "下拉搜索选择组合框,基于官方uni-combox组件,解决选择后再次选择不展示全部选项的问题,支持模糊搜索和JSON数组格式,可设置选中项文字和背景颜色(若使用请一定下载uni_modules版本)", + "keywords": [ + "combox", + "组合框", + "select", + "下拉选择", + "搜索选择" +], + "repository": "", +"engines": { + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "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" + }, + "小程序": { + "微信": "u", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/superwei-combox/readme.md b/uni_modules/superwei-combox/readme.md new file mode 100644 index 0000000..c0ad179 --- /dev/null +++ b/uni_modules/superwei-combox/readme.md @@ -0,0 +1,104 @@ +## 基本用法 +在 ``template`` 中使用组件 +```html + + + + + +``` + +## API + +### Combox Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|label |String |- |标签文字 | +|value |String |- |combox的值 | +|labelWidth |String |auto |标签宽度,有单位字符串,如:'100px' | +|placeholder|String |- |输入框占位符 | +|candidates |Array/String |[] |候选字段 | +|emptyTips |String |无匹配项 |无匹配项时的提示语 | +|selectedBackground |String |#f5f7fa |选中项背景颜色 | +|selectedColor |String |#409eff |选中项文字颜色 | +|isJSON |Boolean |false |候选字段是否是json数组 | +|keyName |String |- |json数组显示的字段值 | +|disabledColor |String |#ababac |禁用项文字颜色 | +|isAllowCreate |Boolean |true |是否允许用户创建新条目 | + +### Combox Events + +|事件称名 |说明 |返回值 | +|:-: |:-: |:-: | +|@input |combox输入事件 |返回combox输入值| +|@select|combox选择事件 |返回combox选项值| diff --git a/uni_modules/uni-combox/changelog.md b/uni_modules/uni-combox/changelog.md new file mode 100644 index 0000000..23c2748 --- /dev/null +++ b/uni_modules/uni-combox/changelog.md @@ -0,0 +1,15 @@ +## 1.0.1(2021-11-23) +- 优化 label、label-width 属性 +## 1.0.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-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) +## 0.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.6(2021-05-12) +- 新增 组件示例地址 +## 0.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 0.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..d4cb79d --- /dev/null +++ b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/uni_modules/uni-combox/package.json b/uni_modules/uni-combox/package.json new file mode 100644 index 0000000..4a05c3f --- /dev/null +++ b/uni_modules/uni-combox/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-combox", + "displayName": "uni-combox 组合框", + "version": "1.0.1", + "description": "可以选择也可以输入的表单项 ", + "keywords": [ + "uni-ui", + "uniui", + "combox", + "组合框", + "select" +], + "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", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "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-combox/readme.md b/uni_modules/uni-combox/readme.md new file mode 100644 index 0000000..ffa2cc8 --- /dev/null +++ b/uni_modules/uni-combox/readme.md @@ -0,0 +1,11 @@ + + +## Combox 组合框 +> **组件名:uni-combox** +> 代码块: `uCombox` + + +组合框组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..9f09862 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,103 @@ +## 2.2.11(2022-09-19) +- 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的 bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化 bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的 bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的 bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的 bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +## 2.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-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的 bug +- 修复 单选赋默认值时,赋值日期未高亮的 bug +- 修复 赋默认值时,移动端未正确显示时间的 bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的 bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的 bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的 bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的 bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的 bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的 bug +- 修复 start 和 end 不能动态赋值的 bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的 bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的 bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的 bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的 bug +- 修复 chang事件触发2次的 bug +- 修复 分、秒 end 范围错误的 bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..a2201d3 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..b376470 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,924 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..9acf1ab --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select datetime", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js new file mode 100644 index 0000000..9601aba --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..36ba21c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,930 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..b9297ed --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1015 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..efa5773 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,410 @@ +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range, + // multipleStatus + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + // this.multipleStatus = multipleStatus + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let isinfo = false + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after), + month: full.month, + disable: !(disableBefore && disableAfter), + isDay, + userChecked: false + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDay, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = this.dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDay) + } + + isLogicAfter(currentDay, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = this.dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDay) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + if (!this.range) return + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this._getWeek(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (this.lastHover) return + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this._getWeek(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (this.dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this._getWeek(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this._getWeek(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + fullDate, + year, + month, + date, + day + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..f7a2e6a --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.11", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "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" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.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-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..835f33bc9411461b8b9046b3fec742e921d6ce3a GIT binary patch literal 35760 zcmeFacbp?vl{Q?rN>WLsSXIigCAC7gI!S6tox^m`be^1}CwPJ>yxZ{uSzi{WC_=LI+*Wx!<-H!v})21fuKMZQ#fB2Fs zuEGwU_ZyDmuR3&e_s&PS@Be}0T=(JF$l;w=9Als0-iQ4lE^0cm^YDeWhnK#G<4!$@ z>-QZydhsP6Kl0Pv9Cw|EbP-?YO$@C;`+ zuKnR1zxV)MXnddfv56Dn_-W<%#_jZ^d%1f!hyI(6O8C!lXY}93nl=3f9^gzbYS03Jm0vJ;T)Z1IKntfUtypB#zx`e6wG3 zC5AhB&Me^QdH${3yL1otSUp#NN^cKN_yKnkm%XqxczWUgrT^Oo|6lL`SPy&+DZ_DX z1{?B^82rf|!cpSXHhg1*;kZecHy+MI*MqCu>g9T0eYieaf9edzAC9!tJL|pm0UQ~l zBQN;JaG!_sb8)VT%i=%By_I_#_ZIFh?(N(=xVtf?-^|^~y@`7RcMEqbcN=#*_eSmx z?)BVjxU0EqFm9T;Q`~9pTJAdTdhWH{>+qBtxEr~fxSP3Gb60T(xkKDx?g)33JH{R7 zPH-1465x0fg%5CGeb33>TxSiZCZa24wyO7(&Q z>$wfwMs5?gnVaOMxM^;NYvpFSIc_<(f-7(s&u0CxL#u8VbF$klItIryQ@x|5W z48lm`>dOtnnB(dz48rK+>MISxIOOW948n-y>Z=XH*yQSK48kbo>T3axcUVKK~8Y>od!W-aP?gVL3VKU-3CF5aP>U~L7s5+3k`x~;p%%0f{fwn z`wW7#;p+Phg52Ti2MmG);_4R}1X;w@scs-hC9Y0&13^AJNK#+l4o$3aH zH00`3HxT3^SEssxAR)Or)eQt$$+z7tkWDxWPSHIIBXb!IaW`m$ZxcXZRf;QpmZ#4*d zg{!~KAZQq_ewRVeHC+Ae20`m^^>-Kq{lnGoHVB%CtKVY~bP`v;*C1#ou700E&{JIf zeuJQ~xcWN{g6`t#?=lEljH|!fAm}r${tpI0vvKtY41$j1>hCcK+K#I~Xb|)sSAVZT z(12Y1eFi}na`pEc1g*%`|Ir}mN3Q+>gPp}tAE%avLosrF^GJG z`bQ0dZsqD9GYDFitAE@e=v%J-34@?{x%wv!f)3{DpE3yAn5#cz5cD!v|Fl8S&|Lj9 z20>SI_0JjvtVjlpxwFpV+N5QQ~$g{(D+>a3kE^= zbM-G81S^26f5{-&16=*f2Ej7m>R&MkHUd}wszKz<)E_qpb^}-cnn7g6)t@j3wggxI zxp1QBm2=klxXa|a&TVx+;Qp=WwVt{>D}O~9QXW)O>O0h5db_-@^8Ud$^pPT-1=NS-v_4k2r|_kM*0!vaW9xyNll~`AaKH zuPQxR4wv6t{%QC2?wh**v$DGKU?rS_5?F|crGafkiL7dNk-%Y_E4VmkSn6>Hb;SUukEx3l0# zej=BS$yT%Av8Uc*J`xpdRw>aQ5n{34Scli{%@0hjo|#!%t;CXMOO1~vM@By$$wu(0 z7+*JsbCF0c%-{dHFL+pQI~s3&zjaOf89{d%!`6o3fsCO(`6

PqiNa$~E4XJ#a8s%?nsx`&SiQ7Wz{CE9c z{`8HZR6KCoNiFA%;R<(H6}bLFzf?(SM+?JrKi`4-zoGT1F~-8`nx^V-CCOIcNwzPg zI#WEmoNbKdqI?lY^r{&3;lBduQzQ+^Q0Ovsdx3SZltt7_Sx&}T*-Yi_XK}hBNmrzk z`W5H7!&mhB=^p;ZXqR-ILzW%aNuB+jl6J_cC{Fe!sVl1a9E#$&!PeE+C9zxSuy$PP z>g$x)o>=F3@9E@S$%qmyN){klLz;R<&aXN8`s%G@phxt!K zT81!Qp!-;9h;^gnF6KqAb=R^vG3R0;DpNC#m4^5Z7H~65s*`2Ahgr3hz*s8zz3jfW znL^w2rs=k}>2KLH`CU6VU!(9>49tGDeYUM_cJpi-YoG1fXg9e`qb3tGIZf3~W`~Vk z+_(of9#1Aiu46~z_w4uX`$hZgrrCCVb8^4kY#uW^ag({{fJuTlH#}=jxPkvJG+QrO z5v;42>+VFqh{>$Q&3qOg)d0O!i!%&kY|BMI2ELfKh`wYcoAXgOl&XUaoR{scV&Ctz z2$wT{#MU0s`oe9tW!BtSi#avu3(u}dNLK$qDwpcY&#-uC{?Ex+MCJ2pZ*H zRW3zg|H(|IcZL%@9}m5s4~AMMT39UH6mdmtws4dwk^K+4%pduf#r-d8AfSHtKa`My z4*^|Nq3ifBz4`eV~tpG8L+^7iTDPsamOK1#B@gjO)-ZI3CcqWx=BQGQ$~% zsygBw9dTlv)~SLTP)*}^IDETS<~zDKU9`Eoqh-}juY(=-RbwsVd0)s|T2fRJa_906 zhtKC&dWrT&uVd}aO|i9|m5t@{#!BbfSkujG9WZ>1vR=pb`++20D+s%TWry87A=aAN`_naX(i{)_z54|Iq`U0D$tip6 z|3n-9QPK7pft4Mepx3XxE#2OpX8R&-7L(M?gwOaSr`92dWTpgVM$LzEojC*9!@)X( zEtM>h?CvJHog%UAC0SofWe3r$R1`=YFl~(K?OQ+tT6k{X<_+aarMzMDHy3vHy5*~6 zpI5m`PJp~#`6{Km`<(MnZQ9V?{Ux90GC3hLTPOF?EmvA_YTqb$3jT`{l>|O~NdJClgBS=^9WYeU-_ujXEB_^&f{hR%dzo~UKKRo~7mser=`7OEhIlY9BnTL|z>G5u zNioE;_w{dfFt1BhUD|JKeQOHErP5xf*X!IXc8q@y=PsmE7vfA?*D{;-YdXbzILD@@ zp+CKa(Wp&Y+U1R?nSm7h#NsjAvc@suX~<{r^lNl|nt@jU--jh%#6nfDkej&}NxmVb z%i=iGwJxz$4(x=g1#}+ERkBt7aqUELO%We1SV=d%d|p^sUJTB(*TrB6bkfkQkV>fyvTho_Wi?Iw#L**4 ztzO#7vk&{5oCP1>(z0}7%>|G3tn3lEd~R&%s_Ub^Hg~(n#kVeN&5h-)iGb>9^+v@j z*Gw*LX`R0--vhU3L4T0EP{9Q`g9~14sTeXi!Tz>6!tZ!xhKF`IO-2TL>RcP6VKebR zLCf^Q#@K+8q;>J1bg>xItx_}>RGBXgr3{q?1r7V7LMAN!Ll2lC>g#&@S%^S$cmCfh-# zKq|{2<)Cf-uxB*iYDpJA>W&10Caa6RJzSJbHm_=87LVI4NH(kYRivwyC^FLAY zHm17${cU{(*5#0W{=ky^!6Wi`&QM*lT@m?O*Wy{*MX*`^YVxpr^}Ua=Jw+ z6K?AYf-D1FVE9 z4-^IjflvhWp%2_jIH8|Rv3>9Wftx%Ew3x7_&>8+{3C{mN|gzhPLsB3nJv?^Ip= zlG7>myHsaC*y0t~>YwYkxm-57VW6>tacvlA@8c66H#qzuUe%kE|r~htL(@+TTHe8#U8c)MN(q6 zbw?Sj@fSTG(l(t;)049)dJB{mSgDhT$xsz`LH#Q)eF6I|y}+f?^A$;dzFo!hk1#-N z3(pTj=A-->*z$6&@l=$(Q4^lLWHwKQTyKk_kW%byA)|_$>b35idP!?vy;4)$=afH+ zcEt1Hr}|`Hqg7CLs!0cP^EDacfpe>e*PmNP>w1)t|Ec2Et0k#u8MK=eRT#a1{Z@a0 z-k)gy8lk8ee~sD(wykJ`4PuEgZ-DvP8QIPT>^={3+qEBRPumj!I|dvNG6x%%5`GCn zvqfTlH*-6*M}XBe`u@xO&*+(~JGbyC8+B|yE8!*lmmS*Y^atg&@7p0U-3~V9V5dCv zrpB|LUVPQUGf~c>{>+rP@F*K(DrwFfaJDlZyY?kKjCb2vilyywKf?hBUvy{>Q$bma z_AiZs;$<%`C#u?blx?9An1xkQF5^L{Wupx~rxz5jqJpBtDVB1?{q(8@Km0!aQ;;7j z*F>0XCM9IMYf6&}3yBv}qQ9y3BAG_=jN}^6{{7=t>&MxbY5UVh?z@j&b??28 zD8l9*y*wmoA#wC_H0fmuEC2xn6bR?aBA)vx6+#>Mm<>fKuPc?-?WIjQ)tgNAj?;$! zq*iyv9oo;0;)Jg%t-El2skHvWbtUbI#x=Nb!4`Nc{~S==4tP*YDKf$U-ihSuLI;Ze za+6x^7U1BySvK7y6iM^L)1#q8ESc+KSsmxAWyvh^21N3h%cX!oH`AGJeA6l6jpd2X z!S=rQ9G~njuinEP*IP#OyoEo!`aUOUf z?4bJwUT3r6$b{^2b(+*d)XLs^a7ky+_A4$8mh&uV53|u6&mYcfzYGQsF4@kDJbv7CSG1B9&E^hOEaj8a$(8y|+80@;B6YVU#uJ^se{pX=mGXTPl8R)oy0J*5T;Op-cx??be>V)^0B?+s5-b0TsTL z*8=XsbXz6~MEatU)A1DUavsYuZ!o}0sKcSW_Ul0KqS395D&5M9+9gdHT%~6-fRC<* zzV;$UO18{dU;M0pE|7ag9x&N=CBH964mvqqJlnTveW|;zju5|Hs7~z#OFHVa2$5~ zR-A6mc6F>=#nWc{x|!*s)#M9U^8>?^E60{B$8Z~4Iez(ScS*5HbE4liCrL_|XZOVP z8vWrq@1OaJa11&!OSHE1lfhrA5cjI5bC1)1l3v&U{MD{TjDGv zvFw#6P~b#nY!HH|1eARq~q+pf6DZwntGcp^Y_@~u#Lalri5+tQ)*CAg6ak_-@j^m80cy*o%rx@b3aD7E@#fn3kL-r9#}I)4xtNc0OSl@3rt}k zTWER|Sx8|tmoQ${66{{1@6tZqm4tUIT2k=bb)&dit~AU-bSuxS9=?g^SC70XnD#arKpVQIr^`-M& zg&BWP$ETj>Z-zM?q!=~9-_ZLnK=5R$C#t!?{V2J)qc1Z&Gm`0Vx0vK6H5$!Eqo#aw zzRXtJXSy=O+3awpYsRj9u#AKJ<Ys=EfHB(1cz^vvU7&|duoE@6#Ef#yHhGvU+l6HHuVTVr+H9u7tDBxr837F+t z{(oaXOA*(M3b=qLfZffzc$og8&eX$jNXk%1oeUg8phyA^AK}z#v8tkN6HwOt7e8%@ zDW6$oO=gqURi9B}4y)^igy2g06!$yd=~BE&w<&Rh%R2l9tCdfhO#Fj(hah^#%&PtK zCf>`QkOM;G-Gl|cJ0b*9Y1j3iR#JZJx^-56O8NBl&SuL^R-gSbUSJz7Y%4qUI?2VN z%-rx1s16y5qh|n`iuza`W?@Vx2scGbL=x3RVM;1^6he~VS* zlgvyN_A%@F^{9{f&}*IPwEx`tHao9>NKN_QZr;QM{xQ4XdJ{9FelGj_1k?L`<_I(M zH(CAmM|l(5gzzWC7H#ytYeucn8GpOhudpf$?TzxKUeF&XAN7YJLl>~KJjTE>%0OW7 z2YoU%ZW1gG{1xiZOo$qcZHP(&WnmTr0Tipa@?2O=I18ekgQ#^vXYr34I9l;6u%?|L z2sYlGU~g>fTuQi__0(CQ?KQ6mVjE6$C$u}78V@^yhw)DXXR}>@7I$M0y$Ej8e=cBd z28KYE(|-d+5DgTCoK}(6n4KQ7995F#tOfs{D1)j>vebD8xF~`!5{L9kerbDb=|TUp)|kMz zr>i|JEUNud4s@;AwYnH6NH$Xgca!)A?)HuGLKv8w-8TRIF2U*m2Ir0QKLP%hE2b^2 z`BBgCdfUMU^u`X_HjS#i`POtd&vGq&{9w@Yovt-q_|nGwHR$?oc%xoM2g&-IL6bA0)D@A1xbF45L^*&TQALG4pN zvWJ7tAKjV0{n`HUf$|~Qv%T|(C7p<*hdMJzf!AdT#h1H)+Yce%X*F`W_ELWm{DZ-Z zUi5k06xAWf+s$N{#^_XZrwpR5Eb9oBnuLMZ&sb8X03kEF7j{%8>4PmrU7Slp((19^ zq#l0j2S>2${5f~2-Ievbb3JBZUA&D~+~!y@u61It^Bymsk8knBn%(kIO-ltIX9Jq{ zxIf8jU)FwYwcD-C$5v>+W)$F4qk!$UCyOb=zAH!Y9jk37U&+aorNv1Hr~GF-ccKXyOd(KS=@4 zli86>W+ZFu*S6Ja+t|*Nwe8jFww@QCf1Gi2#~Ir4<7!yVjKHK(BT9AK5xVinwyJ_S zh<-4vz90KIr+2l!S%@3x$d_)YyyD0K88@QN2o!#Uv<3wC%7O_ymK+=B6*%6V9mjPr_bjc+&_p9?e!mA<7cJJ@Z@kt-z?VIh!qb}7UJKH z7L$brV+Zb-peyNYPRQ2C4k8mMpb{5~5HznWmYh8a?0vt$vq{0{($=~B{3MJOw#V1$ zx{fzp_{t;Al}~#e_A*QwUV9tD{4Tc7gb`v9HS$EZpSg*bAuTIgpthD0BM;tcow2b?_h*&8lGKumTmVV6wJzc2sknS3*-Bu zi-M_CkPp#T`$kYMcy4k~Y?#Sw1>m(Rl4qc5!TTN&gmC~*`Hq;Y(0A#>4Xbo^?Lq!^x}x_d+Q?(!6XttF5UX+ zKu3`Sg?`cx!1aXwfkA*Tgf$J@5sYf2$B-)vi3{@qB8dI2yuO@Gt{w3zR>2pty5+WG zgX^XyT3dNJtnw_?bm>e>#*qlGU=LZX-?j#<2VwMC*FJ0uYFDNDQmMYBwBesGuP+tm zBH=-AKng>Nt8!~Q0xeVPoDo%!oo;#c)Z~FsV(adFI;Z(jOgv}}$+k5QTiHJ} z9)o95oq0Xhd<|maY095yNGB8<6@)%VMaz0j*6J-&upSiJ3AEH)!TnzKR&&?V!=aGvuifZ&J;R2 z3Ny2t*33>FD&R^=8N%fYHpp%KL&&UD^tccBuLhSc2|O2RWbLp{Wv>~&G|)VTv=0;& zV~P38Jn#3jes6XDGaU*W2>7)t8K<4G3Vy5gjJAbe+M#Iw6>Oes4r(|1}g}L z5t;_pBO=)(z>QN40Ew;HzU!j*)Y6fwV}57Y9TRP$q$Fa)!LVeq#N00LCU3^uD)$Z4 zw*SkHp22~9OIqFRb>Tv@6b=r@5{gx^#NA=1KlYlaqSV%`JFs(m!?%1jKacp_ENrwA zNlX3BR3xJ`I7E(dHV3l?oob2mHH%(QBWgx6mQKV?bT58@gDw0+<%zg0RX!f+3&fq# zn!n;V@s@aiS68G9nVgi2u?s)@g|(Ag*4Z`-RV5IKWDs_iWfcIhGRyx97N5 zPOBZQ{q40Th6lN3?9H;Zjd-;YCk9VAkuMxUUNKOD8Volu0r-L#0&qM~u>jK4%yK|v za<0Zwxf*&47=b1IGk$5Qa(w zngidrd!~A8?ABwwHSPE@mSIk_S^J~^UUtWm-(YuYhn{>wtD3(@-0?k{KZJkCWPeHIsvp1CxEiBfYt5T;t_4DCjQklSkX3CM@Fh;H_x2zCfe1$ z*)ud;+kMRLF4*jA9kM_D&54zcuAae~_O05I&2G7%xHd1TJzN_c=y|xdWUn2m*1Aka zF3f2(u@^}403m3^xfJZ}z>sfbc&Q|l7jVEuY>-?zv}*%E4L}eBS~haLHg3{$xG3vu z->R{JM7B^UOiq7jdaAXpHJ2C|Th-j3O7~Cnr&$V3VC05%cjHlwEHK7}1DUoX0~_g% zw$`cXje|!D&B5?UW;74;7)Ek_6rRh1+&G1p9CA(6v!av|U`T2dv$RA1vs5nj zJJFPt1$+D8NP{=Yck&t%{=6A-s;=l4o(I(9u<#MMf7mmlnjq=^W ze;(1VB{W+{mtw?Gkg>3W7I_V+F9ySr{iNGTH9h)>{EqHwAX!Bo2u2%4Aw@G-gB%!Q zU`PX;(cK-3kG0xW=Z<*)&h0MICb>Lz@MWcaq*puIvt&t6#vO4;wQNgEmc2gP@~PU8 zc^~`eW}C~twKpmlO4EdUn4RE%HbiY%FIQ6_sqk|}F0mV}iPFAz?pUPG$*_CSCB zjCJ;Dcim`bKKF>~X|c)ZMhqdm@!Xur)?t68RGD}K4QY*|hAce4v_K=AcOx8Lu+ z(I0c%U~jbZNyv@>%>jaTCKOfA7XS~D+JIuHcGvV+3J?U@zgTYF{w9+g+=d_oA%v(7 zL?QpJ2jrsi50W<`UE_^-uaP2Z%!MSscq=Q!G+(^6HBK3T8S;`d?AHcV&rd!e%MT!& zFI}VEMW@-`YY<~UfCse3wQJ}mb}HVApV{H8c1`2vQvmrJd7F14$0VlbzAVG6tIeoO zDbT@#-y8OY2o=;-LtF*)FjSeE-b zLNVEY9-J~u+D`@t*hhx7+ha|*@H6qm@Ri!gl_&!2=jVk9@EB%+Wh{{1X_{Dq z-q6LnZWuz4Vq{lH$dhy@xjM}BFI`oM)OU2fFkp`%w}By*JFZ5p)}3oAmDRgMmEH$>E8&oUUv9HW;9tk`UT-$n)?_2A!D4Z^WxK7ZEtmBL zT|UO#N<7=ux*@)G*=$RDTg%MEwx;zhUD>#TDNu`JShr#R&KNes#>Kz}sz#%m@Kik{ zk+~|wj zZ^Zm6ns0?z;c1l1iarlRhZQiE=a3b!9qpa6Bw*gwk~tqq&|KC6Lm=RX(#V<#yslNV z=^7z{rD_g%5X@VY7~%$s0c-;a1aaWYfNlE8ZU(gKA4aq#2QVT4=UimZ3W$XF?MiE( zxNG_PT=v(z>D?LHF4yL=)?Xu#@9E!_W^>s27{65zPMi3x{MnuOuW;gt%==9IExy_A z`Nw>7-Ddv1X8u;+TzTo&Ggdn7(YH@zf3SQ*E`uk3MZf6ni%+^%FdoU+ytHI`vvkcPrbdA$N zkTnoMFsI*4Xap`q`=Fu7BPf?JbZTd>g?3uFm^~-^{jx){y5BCCcct-fmsxnb)5r3X zPfRv9Cq@*dKP0b+6Lkjr)mpqomPQt zt0X^lPzpZ;{RgHr)kwUOdc!#;`FUhX6q6a=-(q*W?Y9@wr_+Vo?34oad9UYEkN0!m zmYi-E1~7B{PI4lb+2wYga;q+v>gK2BpQpCsO>V!Z)LbYumpp#=ez&T+%kxhlU+6B$ zgG{Qu4m_B>-R^Qr+FrXSV)q!QJTycaHq^EJd!T>2Xa?|Q$?>$LU#gz zcZtFlq=B9B1SIG6LZn>Rx5_2HsO|pLh!5Im=!24hAkexW{SjC=o`#j}LTU(~=LBg=R;K2tUd% zfTc{bEt?}LUDgM@E(D-`_EIb^(txv&DMArrOQ612!*z zr$xoLS<<(iZs|%&slHNj&vW>)yIgi0;Ge|ZxJA;p^M}k{{T6Jk7GA--@D@dXqjsb5 z5=DRG*Qhkeo#$NkD;kd~H||w!7g;T4y(C_<{&epR=iX{FYJjKW*`LDAJ`@X&!`Ii1 z>L_|`=(@$X-)TOlF2++EW$ry&F?8|5yxYey!@39?Xf3xBk=BdRyVR-_bkk#|S->!4 z10jk5wF6tHRxOfq2{A*q55x@)bs(uD&JXbzuzn-iAE)sI*sjRw7hHS?PR98hx|KL3 zO9_7Z4*wq(S5r!{dNLzXhdJugez%i{f-lm8-p1I&0&@SuxT*GSn))(VbGQ@w949SsbF^ zaEd1OVS`PJ8Ma$!j*b?V|al&0-PwyIAvZ#+0#}+@jNM(f)TRWzF-YWhRyx%Cb1# zzy?@bQu|r56HhX;ARcu=@16aZ&6v%S#d4?J#Z1!{uZbSiWBHRTIFAp^B2>PHJQ%jr|=h{fKEEZud z?9A+d-Q{a?%IQ?8Ga0uE9-n9yMYTDcaM+>&yE8_qmVw|)A)S!|Ag>S2V2TGlhG4V8 zAKVU;JK%y7jalqLRf*cIcDGrOtjVxnaY?Gjt%l6;af{`n{65K^@3foyvA%bzs7<>BYm_1q3Ju1 z+7UtDjnMnuR*TJ!%Wzc#*S`dPvyhXIAwob?!zuv6N%o>_L7RGlEbR#fW$o!8VrWl$ zLM-TEX=M2ZJgk62tl$X*Jlb~yIQ!3@0P*f(9g+KY-a4x1g1+ag+CF6eG*yPGiA43K zRbuu;b%eDuBw8yK1Sh@ZN=y$cQDYH#0>cYj|s}Y+>1Yhn~QCg0^p;Mgr^D;00ABpbQ+IUZkv}61B0FqgYH^^OLE)g7BzN9(T;GtpuQP|&H%>bBmWC;n0 zG$7rCJW+!BHyy!d=QGbZnnTV%{mB_>c0BWpvpMK^=4KpmJo~IeKjO&X$TN;$#_`Nq z`3F17XJGRr2wpV5xr~8QDI)Gfjya4yeO^9g6QYlcPzDg|Y_EZP6MWqmGy7iWRHb9b zY)Zs>{Ddu}+KwNSRM?@%kJ%VzJ8xQ?4UNIm-Ti(2)NyM>k&Ydg)G%EgR;A;|;enuV zix_V!r_qiw)?PJ z3qFhQw+k_3h(%~6D71VdPaPu}aA}TwWYS!CyI`2qC`lE33X{Duq>pO?8Zd;GyyL)PPH} z&1wIYM3U%LbAl**)~ed=&7S#xwLbqmmTbs)HAMvANaGEdSi_!}{O^vpb3_xIr$ym} zVe03x7{W#<0))AqS_qWwZ^XDTcEF5!uP2N*S@W z%?KD_XY*5=@HBk@ez*}R(~X6;`{@qI+k=Ospd!(IVLZ_qRvLAqIr?72gJxc)ZYn`k zBninV%7Tkv7a;x*|AG!-uFttvk!2AEXJ-)pL&?sq-p(c$Vrw=hmQjh@ELO8M;1R4% z>0%|FRh=onO_H5*D3l6?1ga2(V&i_Q8S6}#BVLc}wY$_nRP|UTfU^#pJ*Ij?(avO0 z4!G?OkJ;fl9!LcPX_!4aUOX>chrUbeb$cOik+X_9Owi6Ed|doO_-(E^@Ozz~ZU{Sx zpT4U29qbMh;9~6tNig@pmE-&PONoj8Ai2OqPDvWDKonjHZZv6!9Del+;3#9vF4`k4 zgcH4T`KDW;0L&<`_LA84dCis$WE2|m4uhBM#f@(HG6Zl`ESnMcTq>)CjlI;QfoTb` zXWTqB4f)qvc!TOWD#zr@=$6Z{bJU~iw$+aX8TN-;Ups}Ifdx1O(nkjcNZyT z1`0fZ1RP8HTm1GTN9Nyogo(}N@?N@A=XQ$ zC(7EHSlGAS=O1`eAaG|j6w}Ak^TG`HErhHl%z;AEZU>K+(!-_D6^prOjrmv=Bs0No zBfr8TcGr^RvQu>u4y5paSFSr$3jwNv|Z^T6a_Gkf${ z?*+a19Lq+uMx=Y?V9G_QS^-97(D z-uX{XTfydVI9;i(6mvOD>}NAQxO{uh4BU_#=`MD8FgcT7iX}7hGuldax%N97@JZ{G z7;@8TcgV_u5D$$Q!fW{_5Nm7&Vh0HUt0E^?p(Y4T%MsW{IHH~{jEZE=bzT6M6WgE* zEFwlA6g?oyq7ifaC12go*#0?;kg(I`37rmkoUSki%*;M^y12TlYxOSLeAZ~t`Sd_~ z;j>{c+ql>2jJrh9YH`J#*1g(;dk-LAp3>T}VJ0|UaKk*oe@gc^>vt_1Smdcwd|jV+ z)k<+`J+lBZOovBdsZmepi3C9Ojj{(`vcpzF{$Ks;xz(%Zw2|ejS1S=>iyvK1WyOu zE+_TF^xl2JNF=!4A8~|TKK})NAG#;v->92?|IxL&vvbu>Y*u&u3Jx$D{9n`ksZ{?m z+N8JaVe9tT9C4RL6wyTv+aB%xd%D9RwjvakoH36id16ip=Ho{~;qK1W`g3-!?qZlq zulHQwTl6G|0%Vi)q3aefAAxdyFemzzYpDgpyWzcbcXzMfyl8lnEv@4pGcRvz8$N=5 zAQldJub)BhA0tjXj)k zJmp9^5LCb3LB|*SpLo-d$)l7bO>`80AfG=om;c6Rj^Z*XLf+rFRK_U+UDyx$`IPQm5TD8QX_z83Tw<$q9r{kQxk z%FkNlTirY}V2DNMbFupj7moa<4Wq}##*STkY{`;i6?E|8rTWfUuZb?zdvbQkvFqq! zY!-NHg#RICNKRqY5xQoWjKCj&AnGQi9zQXrmM$W05EfWU5;9OfBER4s8OG<2>>j5Q zPqlYNFN(Ie=73qX_&gS+YgI?&qF7fu4g^|c_HVgDxYQHJDvM1fe>mH!pKPn;@gweb zeAR3cB}>vQnM{(>&JMa{vmL)J`tP>+57<4wv{~G;C^^|G$tp>fCQ))|AHi;eS4Z`F zy?m{55Z^Rm_S{-M?PwG{c2T6GCEqBx+PS(tsuw(nns}m~g~C}RvtGDE2xp#Cy7u`G zILI$GFfXk31{?s`bdu7@DDHx9J%Ce1rV0gM@QoD|hGF5-98UdP57vOQf$Aq<&ZC$X zv9`z`ajd;HP~lmyEz*|oVC^WEH{*(x!)-yv7kg52u}ewxmIXSWPhfFNr%MgHQ^^RO zuM7p0t}bOjUy%^Y3$nIZXChChgi>EZ=_)G8o|1lRDdx)1qtostyoYWb2q}1UV6dvc zI+=2Z>CvBWpV>@_m)I=u)G7YIfYGFovS6f$W0an&>xIRfP}#L&7O<(*Dh3)=qd-)x&Nv%i0z9wf6M1-p?*%Hto+18ToGH zswZfMy$vouxeTNdWPK?l$O?m(sR^^@t|IwHlCM_5gPyR-;tF*z4{!6hKa8bq+)k6_ zqYL>5kO38}^?jPwWX~Y&Wr&rldUkv^hlJ!BmS04m54HrdG+bD4O#~Cbp1^zo3KRJQ z6dL*;a*T@V>IN%ZxbX*Xxgx`$*eHGZAF(ADLbK1 z8W}cNucw`NI1_8vegHhjhYIKNTq#lr@!+{6cuH>SEfQmdiRUPyA9g2GI!{&y12XX( zCNMCXp@3NkkvuKTv2r}0A75e?+olUnSJT?H38#Z^U(qQbg@@j55v^S-+IZRAv~fd| z09?Cmd8gTw4Eir1mMwrKOTA#(E;&`xSvFjbx-#_Uv?tM~zq!&MB5n^1(P$||43>3z z8Q&-d%2I3;W92xqQgxs7ufUQt$nW!GcZ3TpIKB%2fmwI(UvL=Dg3`w36#q*^2E8=n zJ%a#E4vBUd#BF5q(`itcG4dC~)cmebS{wH_yMy=lMKd?UcXtH94)ydnAC>fqZDGt9{k`AjG4M7;`!V~r_7WOr#c!3t)>g0v(?C0VhEyn6w zc#BqbiklELHRPm$)sMZ5jU&K4D3{6&RM$wdBI5&q$HKG{!&7tdV068Y4D4o6C60H@ z6wKy`#p$<9TbMX)^*Y6jNopc@cchl^AVH&jIo6+QSVTIsLFf&jjpOah+ajXRCC-R` zaawfwEE(2>JibIzwFzkv60K+j*w5(is~fr>&Mw(8FF~l!kC_@kp$;d|S|-L|g@_^~ zN{{kUE&$=?Ir8k8wh;Hx<2sbix@q4A#I$sj;e)i^7(oYG+uWA9cDK)+z$(AACZ;4b zi%zdNWwA_(KBpxjwNAGK%Xx8hNDpb@DY^+btpgCOqhon{`&|+1bnbO`V)=uD13aIKI1J=%ZY)SSk9@GrwO5l53Nj#ygABwrGOr4+D(WR z{A;+gF;=7_G{q0rgqZe~hj>^8t2>(#2bXvcEx~NQ ziTu#eh}UPbC2Ymkd}n*ErD(H-0yFv4(m=?(OdQ^Q@ooV5=hln-S62Y}T;PPeVsF>pem98Zg)?`2{{40(!>$ z27GfF5VgHkd zFMgd8MtZ*X7o|nfo^>FgWuXBqoMO*HCaJn^?9kV}g*3%Wftv>wu*bBXKS9S9vGTJ= zEIO`3D@j~(dte*uGIkHECGYhW zHLoteAA_T}rRAyeRxtn8E*b}0y8;1L4g`aN_O0Ll9_|kOd7q+O)+Nhhr&{`2@X>9| zzX+QIE3Gz<#r?2|29J>lEDOnBn5@VXtYys4pd3d0=s*%GT?e+(xfa}?u=KBN((ZHezNqtAtIutFHaZmwV^y17P0OeIeEy_%XQ9@8U}fCp zqWb|dqU{@FO8?sc86CabOMm|exEvOtKwG}#F9hgPh;TYc8#8h8dHz~Jz=HUFmIN(b zb)IJ}{Otfd45AoqhRgoO-w|MHIHWQq99CcUFAA(z!YqvCo^cIxz1$xch~snykK$kS zM+Q1^6rX!u__qdT@V6C|NH`nTe)*z5I?zdP3bAk|(in@cfi#a2wnsXt5s##adW5c! z2wcb*&{wE{l>rljeWtiI|EMb$az2ts7Fw1~Jvh0n75|n^t{o+GN5_Nih({lFMRLwZ z@)vZkom$pXSiEqoaRn}Wi7fv6T9I!ijfZ9XwYm(Arv&Yv-L}yOjb}})s+K10fh~4q z|3dIG5lStryzb(|Px`}9YQ0O`&Kne<>jvMvj{iqk%p&4IZb)RHikW0Z|Bp4CDy&>d zR~p1N^KJ9rHRyTml>Tqs`uDG6Z2kKA_hRS$>vcQn%wLgX>p`3WbGP;U55%N(^+u{1 zDImI&1zBb^E7pmImjfke6}8P)F1 zOem}kc@^K08~yz%_?9X9`$jY`k7j(qv4L3fVJ4KA&g!NyY3Upc%X9{5_B0YuQVXum zvgI9ELoX_}iQ_Hot#T046J=i^*W6wyw)Zlt#mjzx2y`AH5Niu^uzlIF>~k$W0a?2p z`C2R#n9XD6&WaJWFEq&Bf~#!W0c|?&B4l#3DE~{)i;{mQawKFD>9X0bVzw@1v z$0FLCeqNA7r`3-2^B9YU1HDbD(C$EzvF7j%!M2n#T(G9fVNux|EhS9$qhgl*b=wvu zaQIsuKxfW4!hWYi^_p$N%`J(5)x;u7Au}EhM0vJ4oW_z6AB<$wRC}nkeVEU$JY0x& z^@SPd3lC`@W-A-@raAvfea^pLQ;O<9K5ruWN2 zf1Jd+fO>yql4PFLl28X~wS(6=$FNj&5LVQ~eR>Bqir0vc=(!~*XO+4SJ_`Qujf-W< za$4X&uW9HH2LP{^?~k*+@p65kS+;HAQ?yb()=dK}K%L=LE!Kt32&;N$LGog&ozc?h45T+ihS*B&BgBW$D~QX#6FxNl!j-BgOBvW5MbJnb>IS=u?b^TV zQ}~k}pWMBF=+IbiXL~H(-q|~L2no}tuY1jF;*@U{5=V09g0o3bt5 z?--)uJKmP8_MSs*E|v0s^Xm=)iNlU3zwvdp+xF$huz21c?QXa2(Ju+w&fod{zaySq zY@?CC*-8N&HG#24so`YolbdQJ$pU?9{57cT%eCcL+g!2Ik_cIyNaTpdS}I+0ZN;`# zQ`>m6U}4*)R<@O1rn#qTYdhoq943TVoq1opb8T&U&CKkwA*_Biv}|@}jUlg}7d`|V zsDu9gUB;82rx`hJ)b3w zi;P(fBwzWDwX}7%Z=A)<@R&&m2OUC22stlyI4ogDhgY&!Dx0<(ynHw23EHB+68(-$ zvD&?9>%mJ7IQ~y(*BTqgRfTJRu+QGW1)9|%yZR4O9Bf&@bSSzbaF ziVferb7$?O{ZZld&YpYjxp(fId(WBsIQJf$`kz;)KYe`fQ)3&3DXzBn4W^U{r9bUt zQfIMzJH`%m-@Pr5tOhfVs!F5r!NGJ~T|csZgURNO9!2_GdY6iK$|rS>c?=j;PCm4L z^ob{r9(p_$8_J|IeX5g5D&q<>iwR{Q_HXDUyeWrr#V&kev46gH`8B$a{<6G=(J-6S zzsFxhdk*~;ZDymHVWxU5G z53b8!x>Vdznq1N*OOKSUTtUA!f8`3m$=HcYm-6eTN;{Tz#|Q7cyO1B91mQLOm39;- zM`Ih;u*lK{N=~g?bKwHO-Ni9g(rEyZ>=)qGeP9fofz?1NhN zv)wU;ULPJ+^4Q+B^m}Zj8hkdDy)!g1ROrXhn|2PBhw%U2F6;2z4`aVfcP?KT8SUuH z<~oPRMqW=!ne2w%TsFP*(|(pCzbB1`nXk|9s4ADbNb2G=-oaV8acTODNyaf|tGv+gg_fM3|6Z;Rp zap(X84jeMym(uccvbSHo5p;-eq^s%ybH!mh?%Ye zi=lT|rwpTz$rv9^!a;@7k5vnFV1;ijW`2WH`0?&$eY}t4TdUdA8}BJ)%4J0!fbeHF zmNTUuxwJ{9U2>XkDyjGsr3SFP^?!Td+MnvqZrj!_^>*Q>vun#Rb#_RvW)kf`kcTF% zmU}K5SmmE9l;?A?zw&<4$Jr>G&4h7#sBlt%85#*mYUjpBIQWV!D335{0!iNx5A*eV z9{zq$^2pU+T|Ep->+Htzt8;^MKc3i_T_|FEsR8;H`+lQ*Z&@7Z&H z`ew32ee>kLy-z>Aci+i3)sB~og&X%5bGcif@4l7G74N@MD7NbPGR`3@VVCq)<{Nc5 zQZyeT{UdxZn!`*JDis>z@tV*p*GYit61`BXOT>140DaY5O5s$-w0R&{6_)H=wH1nUoi;q*bnL>%CN@T>J%(*~Q8xZU zZBr0b3sui)6m}y&!?K)$>p63V9!%7Oz};Rhv->dogzhx3iOPd>VhzqQjkZc#0nUsU zaW&g?xO%o>h{UeU)w>N`g!OU!n*rCw%{B`uy${6ROFa#0<}%*oxfL+Tn83#5d#Uz- z%I1{!md3{>(Hg2Rz^97Ru_+b@YO4T~w6J^zN@4*npaNOk9P-gYJpl*NER~CCrZPU! z^F;I${5hcjxsFDy^9|Ijf!*_W17`)r308fCbu&ufked|2-kdV%V!@FEVJiq>8yJ?Q z`Uvkb!t4e*DtUA@*m=_h8X{OT5u_TvCLScrB@+$^A^1Whb|57jaM31oN-&>FTX1&8 zR@z3}u{QJwIx&x8csvCofX8SjJx;r5HzSkx%YPN4Er!~tmf~;=@foa$L@v4b%C9O4sdIbA*#}%;Z z2U@i%0;vTv!lzxU8Kv#2I#$K-#=5nMIBC|lJts-EH3jfNX6W-aIL{9H(EEBDSYv{F`SR@3L( ztB!YC^S}nrb54(YX00BiLfA5@K_Ud3uE15C)3!3}1cB3#Ic+>}T!~S}jYT7cuP9`a zfxe~r_0AR)mEVN65wPMJmZMcN4Je)#x3dk+9d}K89E!qpeWP836VdY}P&Zy(v#JsU z((EGgOGIpz7?WhqLW$`di7`;JOnY8k&3T#Eavas0TB%Ek)tkiHg%a{iH5!^3RfX!- zomREVJRtM5NHa~BF)3nM z7*b9f<{8sQ&JEY`jo7JESynl#2;=VJDcN_Lc0~<5RD?*ca+CFh;Ad*4a?2i+JafbD?lVoGV$Q8G3_@XaJuOs3$xMqx(7btGc8L*Y!YDy6RV}TS zW|t_l8Xhl-tUC=n04@=NMRu=ZmcXZ2s}FTl9AJl#bb)FYK@|*XR>s3N(HjP$3KFCp zcVly_QwS2tGb&Do^C@bwX|$V2N~MP58EJNj=vkx^(kFQZ=#bPzq*@gpkEGYrEY~Q7 zW%@xU7bC|tB8}Hs*X+tTE3Y6+wh$d0YDO$*7eTd-tfPuaw(^rXTCyC+O}I_VVp&SQ luGvs>o}boN(j<8GK{&G!5S5TA{}l46aGCZcmWaKH{|6re5*Yvh literal 0 HcmV?d00001 diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "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-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 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-table/changelog.md b/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..8233b20 --- /dev/null +++ b/uni_modules/uni-table/changelog.md @@ -0,0 +1,23 @@ +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 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-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-table/components/uni-table/uni-table.vue b/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..91b74fa --- /dev/null +++ b/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-td/uni-td.vue b/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..bc9a0e3 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,503 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/uni-th.vue b/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..883e3f2 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..0dd18cd --- /dev/null +++ b/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..158f3ff --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..f9b9671 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-table/i18n/en.json b/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/es.json b/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/uni_modules/uni-table/i18n/fr.json b/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/index.js b/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-table/i18n/zh-Hans.json b/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/uni_modules/uni-table/i18n/zh-Hant.json b/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/uni_modules/uni-table/package.json b/uni_modules/uni-table/package.json new file mode 100644 index 0000000..f224ab7 --- /dev/null +++ b/uni_modules/uni-table/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.1", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "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","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "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", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-table/readme.md b/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/utils/openAiConfig.js b/utils/openAiConfig.js new file mode 100644 index 0000000..f6289b3 --- /dev/null +++ b/utils/openAiConfig.js @@ -0,0 +1,14 @@ +// OpenAI API Key +export const OPENAI_API_KEY = "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"; +// 对话模型 目前只有高于3.5以上才支持上下文对话 +export const GPT_MODEL = "gpt-3.5-turbo"; +// 指定降低重复单词出现概率的程度,范围是0到1,越高表示越避免重复。 +export const FREQUENCY_PENALTY = 0; +// 指定要生成的最大单词数,不能超过2048 +export const MAX_TOKENS = 1000; +// 指定降低重复话题出现概率的程度,范围是0到1,越高表示越避免重复。 +export const PRESENCE_PENALTY = 0; +// 指定生成文本的随机性,范围是0到2,越高表示越多样化和创造性,越低表示越保守和确定性。 +export const TEMPERATURE = 1; +// 指定在每个步骤中保留概率最高的单词的比例,范围是0到1,与temperature类似,但更加灵活和稳健。 +export const TOP_P = 1; diff --git a/utils/openMap.js b/utils/openMap.js new file mode 100644 index 0000000..cf1e1a9 --- /dev/null +++ b/utils/openMap.js @@ -0,0 +1,109 @@ +import TransformCoordinate from "./transformCoordinate.js"; +function openMapByDefault(latitude, longitude, name) { + uni.openLocation({ + type: "gcj02", + latitude: latitude, + longitude: longitude, + name: name, + success: function (res) { + console.log("**定位信息", res); + // that.latitude = res.latitude; + // that.longitude = res.longitude; + // that.area = res.address.city; + }, + fail: () => { + uni.showModal({ + content: "打开地图失败,请重", + }); + }, + }); +} +function openMapByAndroid(latitude, longitude, name) { + let url = ""; // 回调地址 + let identity = ""; // 程序名称 + if (plus.runtime.isApplicationExist({ pname: "com.baidu.BaiduMap" })) { + // baidumap + url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&coord_type=gcj02&src=andr.baidu.openAPIdemo`; + identity = "com.baidu.BaiduMap"; + openURL(url, identity); + } else if ( + plus.runtime.isApplicationExist({ pname: "com.autonavi.minimap" }) + ) { + // 高德 + url = `androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`; + identity = "com.autonavi.minimap"; + openURL(url, identity); + } else { + openMapByDefault(latitude, longitude, name); + } +} +function openMapByIos(latitude, longitude, name) { + let url = ""; // 回调地址 + let errorCB = ""; // url失败的回调地址 + let identity = ""; // 程序名称 + + if (plus.runtime.isApplicationExist({ action: "baidumap://" })) { + // baidumap + url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=ios.baidu.openAPIdemo&coord_type=gcj02`; + openURL(url, identity); + } else if (plus.runtime.isApplicationExist({ action: "iosamap://" })) { + // 高德 + url = `iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`; + openURL(url, identity); + } else { + openMapByDefault(latitude, longitude, name); + } +} +function openURL(url, identity) { + let newurl = encodeURI(url); + plus.runtime.openURL( + newurl, + function (res) { + uni.showModal({ + content: res.message, + }); + }, + identity + ); +} +function getCoordByType(longitude, latitude, coord_type) { + switch (coord_type) { + case "gcj02": + return [longitude, latitude]; + break; + case "bd09": + return TransformCoordinate.bd09togcj02(longitude, latitude); + break; + case "wgs84": + return TransformCoordinate.wgs84togcj02(longitude, latitude); + break; + default: + return [longitude, latitude]; + break; + } +} +export default { + /* 打开地图 */ + openMap(latitude, longitude, name, coord_type = "gcj02") { + let arr = getCoordByType(longitude, latitude, coord_type); + // #ifdef APP-PLUS + switch (uni.getSystemInfoSync().platform) { + case "android": + console.log("运行Android上"); + openMapByAndroid(arr[1], arr[0], name); + break; + case "ios": + console.log("运行iOS上"); + openMapByIos(arr[1], arr[0], name); + break; + default: + openMapByDefault(arr[1], arr[0], name); + console.log("运行在开发者工具上"); + break; + } + // #endif + // #ifndef APP-PLUS + openMapByDefault(arr[1], arr[0], name); + // #endif + }, +}; diff --git a/utils/transformCoordinate.js b/utils/transformCoordinate.js new file mode 100644 index 0000000..425c296 --- /dev/null +++ b/utils/transformCoordinate.js @@ -0,0 +1,126 @@ +/** + * Created by Wandergis on 2015/7/8. + * 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换 + */ + +//定义一些常量 +var x_PI = 3.14159265358979324 * 3000.0 / 180.0; +var PI = 3.1415926535897932384626; +var a = 6378245.0; +var ee = 0.00669342162296594323; + +/** + * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 + * 即 百度 转 谷歌、高德 + * @param bd_lon + * @param bd_lat + * @returns {*[]} + */ +function bd09togcj02(bd_lon, bd_lat) { + var x_pi = 3.14159265358979324 * 3000.0 / 180.0; + var x = bd_lon - 0.0065; + var y = bd_lat - 0.006; + var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); + var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); + var gg_lng = z * Math.cos(theta); + var gg_lat = z * Math.sin(theta); + return [gg_lng, gg_lat] +} + +/** + * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 + * 即谷歌、高德 转 百度 + * @param lng + * @param lat + * @returns {*[]} + */ +function gcj02tobd09(lng, lat) { + var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI); + var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI); + var bd_lng = z * Math.cos(theta) + 0.0065; + var bd_lat = z * Math.sin(theta) + 0.006; + return [bd_lng, bd_lat] +} + +/** + * WGS84转GCj02 + * @param lng + * @param lat + * @returns {*[]} + */ +function wgs84togcj02(lng, lat) { + if (out_of_china(lng, lat)) { + return [lng, lat] + } + else { + var dlat = transformlat(lng - 105.0, lat - 35.0); + var dlng = transformlng(lng - 105.0, lat - 35.0); + var radlat = lat / 180.0 * PI; + var magic = Math.sin(radlat); + magic = 1 - ee * magic * magic; + var sqrtmagic = Math.sqrt(magic); + dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI); + dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI); + var mglat = lat + dlat; + var mglng = lng + dlng; + return [mglng, mglat] + } +} + +/** + * GCJ02 转换为 WGS84 + * @param lng + * @param lat + * @returns {*[]} + */ +function gcj02towgs84(lng, lat) { + if (out_of_china(lng, lat)) { + return [lng, lat] + } + else { + var dlat = transformlat(lng - 105.0, lat - 35.0); + var dlng = transformlng(lng - 105.0, lat - 35.0); + var radlat = lat / 180.0 * PI; + var magic = Math.sin(radlat); + magic = 1 - ee * magic * magic; + var sqrtmagic = Math.sqrt(magic); + dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI); + dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI); + mglat = lat + dlat; + mglng = lng + dlng; + return [lng * 2 - mglng, lat * 2 - mglat] + } +} + +function transformlat(lng, lat) { + var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng)); + ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0; + ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0; + return ret +} + +function transformlng(lng, lat) { + var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng)); + ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0; + ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0; + return ret +} + +/** + * 判断是否在国内,不在国内则不做偏移 + * @param lng + * @param lat + * @returns {boolean} + */ +function out_of_china(lng, lat) { + return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false); +} + +export default { + bd09togcj02: bd09togcj02, // 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换 + gcj02tobd09: gcj02tobd09, // 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换 + wgs84togcj02: wgs84togcj02, // + gcj02towgs84: gcj02towgs84, +} \ No newline at end of file diff --git a/uview-ui/LICENSE b/uview-ui/LICENSE new file mode 100644 index 0000000..8e39ead --- /dev/null +++ b/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 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. \ No newline at end of file diff --git a/uview-ui/README.md b/uview-ui/README.md new file mode 100644 index 0000000..c78ff47 --- /dev/null +++ b/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/uview-ui/changelog.md b/uview-ui/changelog.md new file mode 100644 index 0000000..ca50251 --- /dev/null +++ b/uview-ui/changelog.md @@ -0,0 +1,357 @@ +## 2.0.34(2022-09-25) +# 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/uview-ui/components/u--form/u--form.vue b/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..fdfc212 --- /dev/null +++ b/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uview-ui/components/u--image/u--image.vue b/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..21b7ab1 --- /dev/null +++ b/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/uview-ui/components/u--input/u--input.vue b/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..1e58b01 --- /dev/null +++ b/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/uview-ui/components/u--text/u--text.vue b/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..44ee52a --- /dev/null +++ b/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/uview-ui/components/u--textarea/u--textarea.vue b/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..f4df0b9 --- /dev/null +++ b/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,48 @@ + + + diff --git a/uview-ui/components/u-action-sheet/props.js b/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/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/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..26d5d8d --- /dev/null +++ b/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/uview-ui/components/u-album/props.js b/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/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/uview-ui/components/u-album/u-album.vue b/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..687e2d5 --- /dev/null +++ b/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uview-ui/components/u-alert/props.js b/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/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/uview-ui/components/u-alert/u-alert.vue b/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uview-ui/components/u-avatar-group/props.js b/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/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/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uview-ui/components/u-avatar/props.js b/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/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/uview-ui/components/u-avatar/u-avatar.vue b/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..3319be5 --- /dev/null +++ b/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/uview-ui/components/u-back-top/props.js b/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/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/uview-ui/components/u-back-top/u-back-top.vue b/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..2d07566 --- /dev/null +++ b/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uview-ui/components/u-badge/props.js b/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/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/uview-ui/components/u-badge/u-badge.vue b/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uview-ui/components/u-button/nvue.scss b/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/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/uview-ui/components/u-button/props.js b/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/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/uview-ui/components/u-button/u-button.vue b/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..5494351 --- /dev/null +++ b/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,490 @@ + + + + + diff --git a/uview-ui/components/u-button/vue.scss b/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/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/uview-ui/components/u-calendar/header.vue b/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uview-ui/components/u-calendar/month.vue b/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..c20937f --- /dev/null +++ b/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/uview-ui/components/u-calendar/props.js b/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..2ad7bc7 --- /dev/null +++ b/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/uview-ui/components/u-calendar/u-calendar.vue b/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..511f993 --- /dev/null +++ b/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/uview-ui/components/u-calendar/util.js b/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/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/uview-ui/components/u-car-keyboard/props.js b/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/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/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..51175b5 --- /dev/null +++ b/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uview-ui/components/u-cell-group/props.js b/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/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/uview-ui/components/u-cell-group/u-cell-group.vue b/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uview-ui/components/u-cell/props.js b/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..da03330 --- /dev/null +++ b/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/uview-ui/components/u-cell/u-cell.vue b/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b099c90 --- /dev/null +++ b/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uview-ui/components/u-checkbox-group/props.js b/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/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/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uview-ui/components/u-checkbox/props.js b/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/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/uview-ui/components/u-checkbox/u-checkbox.vue b/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uview-ui/components/u-circle-progress/props.js b/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/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/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uview-ui/components/u-code-input/props.js b/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..0f016ee --- /dev/null +++ b/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/uview-ui/components/u-code-input/u-code-input.vue b/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..96241cf --- /dev/null +++ b/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uview-ui/components/u-code/props.js b/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/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/uview-ui/components/u-code/u-code.vue b/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..f79a09a --- /dev/null +++ b/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uview-ui/components/u-col/props.js b/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/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/uview-ui/components/u-col/u-col.vue b/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..8be1517 --- /dev/null +++ b/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uview-ui/components/u-collapse-item/props.js b/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/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/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..0e1b703 --- /dev/null +++ b/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/uview-ui/components/u-collapse/props.js b/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/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/uview-ui/components/u-collapse/u-collapse.vue b/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uview-ui/components/u-column-notice/props.js b/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/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/uview-ui/components/u-column-notice/u-column-notice.vue b/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..fc39532 --- /dev/null +++ b/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/uview-ui/components/u-count-down/props.js b/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/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/uview-ui/components/u-count-down/u-count-down.vue b/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..b5e85a6 --- /dev/null +++ b/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uview-ui/components/u-count-down/utils.js b/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/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/uview-ui/components/u-count-to/props.js b/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/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/uview-ui/components/u-count-to/u-count-to.vue b/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uview-ui/components/u-datetime-picker/props.js b/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/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/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..18d8dcc --- /dev/null +++ b/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/uview-ui/components/u-divider/props.js b/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/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/uview-ui/components/u-divider/u-divider.vue b/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..b629da6 --- /dev/null +++ b/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uview-ui/components/u-dropdown-item/props.js b/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/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/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uview-ui/components/u-dropdown/props.js b/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/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/uview-ui/components/u-dropdown/u-dropdown.vue b/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uview-ui/components/u-empty/props.js b/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/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/uview-ui/components/u-empty/u-empty.vue b/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uview-ui/components/u-form-item/props.js b/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..7b16655 --- /dev/null +++ b/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/uview-ui/components/u-form-item/u-form-item.vue b/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..6aa8d69 --- /dev/null +++ b/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/uview-ui/components/u-form/props.js b/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/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/uview-ui/components/u-form/u-form.vue b/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..fe2dde2 --- /dev/null +++ b/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/uview-ui/components/u-gap/props.js b/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/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/uview-ui/components/u-gap/u-gap.vue b/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uview-ui/components/u-grid-item/props.js b/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/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/uview-ui/components/u-grid-item/u-grid-item.vue b/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..fc0c7cf --- /dev/null +++ b/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/uview-ui/components/u-grid/props.js b/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/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/uview-ui/components/u-grid/u-grid.vue b/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..b43cc27 --- /dev/null +++ b/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/uview-ui/components/u-icon/icons.js b/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/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/uview-ui/components/u-icon/props.js b/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/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/uview-ui/components/u-icon/u-icon.vue b/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..9340328 --- /dev/null +++ b/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uview-ui/components/u-image/props.js b/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/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/uview-ui/components/u-image/u-image.vue b/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..473e35b --- /dev/null +++ b/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/uview-ui/components/u-index-anchor/props.js b/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/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/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uview-ui/components/u-index-item/props.js b/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uview-ui/components/u-index-item/u-index-item.vue b/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uview-ui/components/u-index-list/props.js b/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/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/uview-ui/components/u-index-list/u-index-list.vue b/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..d712618 --- /dev/null +++ b/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/uview-ui/components/u-input/props.js b/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..2c50870 --- /dev/null +++ b/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/uview-ui/components/u-input/u-input.vue b/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..30073eb --- /dev/null +++ b/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uview-ui/components/u-keyboard/props.js b/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/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/uview-ui/components/u-keyboard/u-keyboard.vue b/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uview-ui/components/u-line-progress/props.js b/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/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/uview-ui/components/u-line-progress/u-line-progress.vue b/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uview-ui/components/u-line/props.js b/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..2308cc3 --- /dev/null +++ b/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/uview-ui/components/u-line/u-line.vue b/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..e0a6d92 --- /dev/null +++ b/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uview-ui/components/u-link/props.js b/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/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/uview-ui/components/u-link/u-link.vue b/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uview-ui/components/u-list-item/props.js b/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/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/uview-ui/components/u-list-item/u-list-item.vue b/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uview-ui/components/u-list/props.js b/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/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/uview-ui/components/u-list/u-list.vue b/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..4447cab --- /dev/null +++ b/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uview-ui/components/u-loading-icon/props.js b/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/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/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uview-ui/components/u-loading-page/props.js b/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..e239b61 --- /dev/null +++ b/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/uview-ui/components/u-loading-page/u-loading-page.vue b/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..03a78ad --- /dev/null +++ b/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uview-ui/components/u-loadmore/props.js b/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..1e67d89 --- /dev/null +++ b/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/uview-ui/components/u-loadmore/u-loadmore.vue b/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..73c79fe --- /dev/null +++ b/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/uview-ui/components/u-modal/props.js b/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..f76672c --- /dev/null +++ b/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/uview-ui/components/u-modal/u-modal.vue b/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..4c37ae2 --- /dev/null +++ b/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/uview-ui/components/u-navbar/props.js b/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..5398de2 --- /dev/null +++ b/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/uview-ui/components/u-navbar/u-navbar.vue b/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..2b206b7 --- /dev/null +++ b/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/uview-ui/components/u-no-network/props.js b/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/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/uview-ui/components/u-no-network/u-no-network.vue b/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9710729 --- /dev/null +++ b/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uview-ui/components/u-notice-bar/props.js b/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/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/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uview-ui/components/u-notify/props.js b/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/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/uview-ui/components/u-notify/u-notify.vue b/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..30adb72 --- /dev/null +++ b/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uview-ui/components/u-number-box/props.js b/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/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/uview-ui/components/u-number-box/u-number-box.vue b/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..69211c5 --- /dev/null +++ b/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/uview-ui/components/u-number-keyboard/props.js b/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/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/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..4f505c6 --- /dev/null +++ b/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uview-ui/components/u-overlay/props.js b/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/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/uview-ui/components/u-overlay/u-overlay.vue b/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uview-ui/components/u-parse/node/node.vue b/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..73e30fd --- /dev/null +++ b/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +