From 9709f200c2145593a497ec0b4efa71131368847a Mon Sep 17 00:00:00 2001 From: sfmind Date: Wed, 6 Apr 2022 16:08:26 +0800 Subject: [PATCH] =?UTF-8?q?uni-app=E5=BC=95=E5=85=A5=E4=BD=BF=E7=94=A8uVie?= =?UTF-8?q?w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-ui-app/App.vue | 25 + yudao-ui-app/index.html | 20 + yudao-ui-app/main.js | 26 + yudao-ui-app/manifest.json | 72 + yudao-ui-app/pages.json | 64 + yudao-ui-app/pages/cart/cart.nvue | 24 + yudao-ui-app/pages/category/category.nvue | 24 + yudao-ui-app/pages/index/index.nvue | 25 + yudao-ui-app/pages/user/user.nvue | 25 + .../static/images/tabbar/cart-active.png | Bin 0 -> 6304 bytes yudao-ui-app/static/images/tabbar/cart.png | Bin 0 -> 6169 bytes .../static/images/tabbar/category-active.png | Bin 0 -> 8172 bytes .../static/images/tabbar/category.png | Bin 0 -> 7893 bytes .../static/images/tabbar/index-active.png | Bin 0 -> 6891 bytes yudao-ui-app/static/images/tabbar/index.png | Bin 0 -> 6766 bytes .../static/images/tabbar/user-active.png | Bin 0 -> 8298 bytes yudao-ui-app/static/images/tabbar/user.png | Bin 0 -> 8070 bytes yudao-ui-app/uni.scss | 79 + yudao-ui-app/uni_modules/uview-ui/LICENSE | 21 + yudao-ui-app/uni_modules/uview-ui/README.md | 104 ++ .../uni_modules/uview-ui/changelog.md | 318 ++++ .../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 | 72 + .../uview-ui/components/u--text/u--text.vue | 44 + .../components/u--textarea/u--textarea.vue | 47 + .../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 +++ .../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 + .../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 ++ .../components/u-calendar/u-calendar.vue | 383 +++++ .../uview-ui/components/u-calendar/util.js | 85 ++ .../components/u-car-keyboard/props.js | 14 + .../u-car-keyboard/u-car-keyboard.vue | 311 ++++ .../uview-ui/components/u-cell-group/props.js | 14 + .../components/u-cell-group/u-cell-group.vue | 61 + .../uview-ui/components/u-cell/props.js | 110 ++ .../uview-ui/components/u-cell/u-cell.vue | 229 +++ .../components/u-checkbox-group/props.js | 82 + .../u-checkbox-group/u-checkbox-group.vue | 103 ++ .../uview-ui/components/u-checkbox/props.js | 69 + .../components/u-checkbox/u-checkbox.vue | 344 +++++ .../components/u-circle-progress/props.js | 8 + .../u-circle-progress/u-circle-progress.vue | 198 +++ .../uview-ui/components/u-code-input/props.js | 74 + .../components/u-code-input/u-code-input.vue | 240 +++ .../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 ++ .../components/u-collapse-item/props.js | 59 + .../u-collapse-item/u-collapse-item.vue | 225 +++ .../uview-ui/components/u-collapse/props.js | 19 + .../components/u-collapse/u-collapse.vue | 90 ++ .../components/u-column-notice/props.js | 55 + .../u-column-notice/u-column-notice.vue | 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 + .../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 + .../components/u-divider/u-divider.vue | 116 ++ .../components/u-dropdown-item/props.js | 36 + .../u-dropdown-item/u-dropdown-item.vue | 146 ++ .../uview-ui/components/u-dropdown/props.js | 65 + .../components/u-dropdown/u-dropdown.vue | 127 ++ .../uview-ui/components/u-empty/props.js | 59 + .../uview-ui/components/u-empty/u-empty.vue | 128 ++ .../uview-ui/components/u-form-item/props.js | 43 + .../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 +++ .../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 | 182 +++ .../uview-ui/components/u-input/u-input.vue | 353 +++++ .../uview-ui/components/u-keyboard/props.js | 84 ++ .../components/u-keyboard/u-keyboard.vue | 164 ++ .../components/u-line-progress/props.js | 28 + .../u-line-progress/u-line-progress.vue | 144 ++ .../uview-ui/components/u-line/props.js | 33 + .../uview-ui/components/u-line/u-line.vue | 62 + .../uview-ui/components/u-link/props.js | 39 + .../uview-ui/components/u-link/u-link.vue | 83 + .../uview-ui/components/u-list-item/props.js | 9 + .../components/u-list-item/u-list-item.vue | 116 ++ .../uview-ui/components/u-list/props.js | 76 + .../uview-ui/components/u-list/u-list.vue | 159 ++ .../components/u-loading-icon/props.js | 59 + .../u-loading-icon/u-loading-icon.vue | 343 +++++ .../components/u-loading-page/props.js | 44 + .../u-loading-page/u-loading-page.vue | 110 ++ .../uview-ui/components/u-loadmore/props.js | 80 + .../components/u-loadmore/u-loadmore.vue | 145 ++ .../uview-ui/components/u-modal/props.js | 84 ++ .../uview-ui/components/u-modal/u-modal.vue | 227 +++ .../uview-ui/components/u-navbar/props.js | 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 | 219 +++ .../uview-ui/components/u-notice-bar/props.js | 70 + .../components/u-notice-bar/u-notice-bar.vue | 101 ++ .../uview-ui/components/u-notify/props.js | 49 + .../uview-ui/components/u-notify/u-notify.vue | 211 +++ .../uview-ui/components/u-number-box/props.js | 109 ++ .../components/u-number-box/u-number-box.vue | 416 +++++ .../components/u-number-keyboard/props.js | 19 + .../u-number-keyboard/u-number-keyboard.vue | 196 +++ .../uview-ui/components/u-overlay/props.js | 24 + .../components/u-overlay/u-overlay.vue | 68 + .../uview-ui/components/u-parse/node/node.vue | 499 ++++++ .../uview-ui/components/u-parse/parser.js | 1075 +++++++++++++ .../uview-ui/components/u-parse/props.js | 45 + .../uview-ui/components/u-parse/u-parse.vue | 366 +++++ .../components/u-picker-column/props.js | 5 + .../u-picker-column/u-picker-column.vue | 27 + .../uview-ui/components/u-picker/props.js | 84 ++ .../uview-ui/components/u-picker/u-picker.vue | 284 ++++ .../uview-ui/components/u-popup/props.js | 79 + .../uview-ui/components/u-popup/u-popup.vue | 304 ++++ .../components/u-radio-group/props.js | 85 ++ .../u-radio-group/u-radio-group.vue | 108 ++ .../uview-ui/components/u-radio/props.js | 64 + .../uview-ui/components/u-radio/u-radio.vue | 337 +++++ .../uview-ui/components/u-rate/props.js | 69 + .../uview-ui/components/u-rate/u-rate.vue | 304 ++++ .../uview-ui/components/u-read-more/props.js | 61 + .../components/u-read-more/u-read-more.vue | 157 ++ .../uview-ui/components/u-row-notice/props.js | 39 + .../components/u-row-notice/u-row-notice.vue | 306 ++++ .../uview-ui/components/u-row/props.js | 19 + .../uview-ui/components/u-row/u-row.vue | 93 ++ .../components/u-safe-bottom/props.js | 5 + .../u-safe-bottom/u-safe-bottom.vue | 56 + .../uview-ui/components/u-scroll-list/nvue.js | 28 + .../components/u-scroll-list/other.js} | 0 .../components/u-scroll-list/props.js | 34 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../u-scroll-list/u-scroll-list.vue | 226 +++ .../uview-ui/components/u-search/props.js | 118 ++ .../uview-ui/components/u-search/u-search.vue | 303 ++++ .../uview-ui/components/u-skeleton/props.js | 59 + .../components/u-skeleton/u-skeleton.vue | 244 +++ .../uview-ui/components/u-slider/mpother.js | 113 ++ .../uview-ui/components/u-slider/mpwxs.js | 42 + .../uview-ui/components/u-slider/mpwxs.wxs | 121 ++ .../components/u-slider/nvue - 副本.js | 180 +++ .../uview-ui/components/u-slider/nvue.js | 193 +++ .../uview-ui/components/u-slider/props.js | 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 + .../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 +++ .../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 | 114 ++ .../components/u-textarea/u-textarea.vue | 237 +++ .../uview-ui/components/u-toast/u-toast.vue | 291 ++++ .../uview-ui/components/u-toolbar/props.js | 34 + .../components/u-toolbar/u-toolbar.vue | 102 ++ .../components/u-tooltip/clipboard.min.js | 58 + .../uview-ui/components/u-tooltip/props.js | 59 + .../components/u-tooltip/u-tooltip.vue | 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 | 556 +++++++ .../uview-ui/components/u-upload/utils.js | 151 ++ .../uview-ui/components/uview-ui/uview-ui.vue | 15 + yudao-ui-app/uni_modules/uview-ui/index.js | 79 + yudao-ui-app/uni_modules/uview-ui/index.scss | 23 + .../uni_modules/uview-ui/libs/config/color.js | 17 + .../uview-ui/libs/config/config.js | 34 + .../uni_modules/uview-ui/libs/config/props.js | 190 +++ .../uview-ui/libs/config/props/actionSheet.js | 25 + .../uview-ui/libs/config/props/album.js | 25 + .../uview-ui/libs/config/props/alert.js | 22 + .../uview-ui/libs/config/props/avatar.js | 28 + .../uview-ui/libs/config/props/avatarGroup.js | 23 + .../uview-ui/libs/config/props/backtop.js | 27 + .../uview-ui/libs/config/props/badge.js | 27 + .../uview-ui/libs/config/props/button.js | 42 + .../uview-ui/libs/config/props/calendar.js | 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 + .../libs/config/props/checkboxGroup.js | 29 + .../libs/config/props/circleProgress.js | 15 + .../uview-ui/libs/config/props/code.js | 21 + .../uview-ui/libs/config/props/codeInput.js | 28 + .../uview-ui/libs/config/props/col.js | 19 + .../uview-ui/libs/config/props/collapse.js | 17 + .../libs/config/props/collapseItem.js | 25 + .../libs/config/props/columnNotice.js | 24 + .../uview-ui/libs/config/props/countDown.js | 18 + .../uview-ui/libs/config/props/countTo.js | 25 + .../libs/config/props/datetimePicker.js | 36 + .../uview-ui/libs/config/props/divider.js | 23 + .../uview-ui/libs/config/props/empty.js | 26 + .../uview-ui/libs/config/props/form.js | 22 + .../uview-ui/libs/config/props/formItem.js | 22 + .../uview-ui/libs/config/props/gap.js | 19 + .../uview-ui/libs/config/props/grid.js | 17 + .../uview-ui/libs/config/props/gridItem.js | 16 + .../uview-ui/libs/config/props/icon.js | 36 + .../uview-ui/libs/config/props/image.js | 30 + .../uview-ui/libs/config/props/indexAnchor.js | 19 + .../uview-ui/libs/config/props/indexList.js | 19 + .../uview-ui/libs/config/props/input.js | 48 + .../uview-ui/libs/config/props/keyboard.js | 30 + .../uview-ui/libs/config/props/line.js | 20 + .../libs/config/props/lineProgress.js | 19 + .../uview-ui/libs/config/props/link.js | 26 + .../uview-ui/libs/config/props/list.js | 28 + .../uview-ui/libs/config/props/listItem.js | 15 + .../uview-ui/libs/config/props/loadingIcon.js | 30 + .../uview-ui/libs/config/props/loadingPage.js | 22 + .../uview-ui/libs/config/props/loadmore.js | 29 + .../uview-ui/libs/config/props/modal.js | 30 + .../uview-ui/libs/config/props/navbar.js | 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 + .../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 | 30 + .../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 + .../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 + .../uni_modules/uview-ui/libs/css/color.scss | 155 ++ .../uni_modules/uview-ui/libs/css/common.scss | 97 ++ .../uview-ui/libs/css/components.scss | 15 + .../uni_modules/uview-ui/libs/css/flex.scss | 257 ++++ .../uni_modules/uview-ui/libs/css/h5.scss | 0 .../uni_modules/uview-ui/libs/css/mixin.scss | 8 + .../uni_modules/uview-ui/libs/css/mp.scss | 0 .../uni_modules/uview-ui/libs/css/nvue.scss | 0 .../uni_modules/uview-ui/libs/css/vue.scss | 27 + .../uview-ui/libs/function/colorGradient.js | 134 ++ .../uview-ui/libs/function/debounce.js | 29 + .../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 + .../libs/luch-request/adapters/index.js | 97 ++ .../luch-request/core/InterceptorManager.js | 50 + .../libs/luch-request/core/Request.js | 198 +++ .../libs/luch-request/core/buildFullPath.js | 20 + .../libs/luch-request/core/defaults.js | 29 + .../libs/luch-request/core/dispatchRequest.js | 3 + .../libs/luch-request/core/mergeConfig.js | 103 ++ .../uview-ui/libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + .../uview-ui/libs/luch-request/index.d.ts | 116 ++ .../uview-ui/libs/luch-request/index.js | 3 + .../uview-ui/libs/luch-request/utils.js | 131 ++ .../uview-ui/libs/luch-request/utils/clone.js | 264 ++++ .../uni_modules/uview-ui/libs/mixin/button.js | 13 + .../uni_modules/uview-ui/libs/mixin/mixin.js | 160 ++ .../uview-ui/libs/mixin/mpMixin.js | 8 + .../uview-ui/libs/mixin/mpShare.js | 13 + .../uview-ui/libs/mixin/openType.js | 25 + .../uni_modules/uview-ui/libs/mixin/style.js | 228 +++ .../uni_modules/uview-ui/libs/mixin/touch.js | 59 + .../uview-ui/libs/util/async-validator.js | 1343 +++++++++++++++++ .../uview-ui/libs/util/calendar.js | 546 +++++++ .../uni_modules/uview-ui/libs/util/dayjs.js | 308 ++++ .../uni_modules/uview-ui/libs/util/emitter.js | 51 + .../uni_modules/uview-ui/libs/util/route.js | 124 ++ .../uni_modules/uview-ui/package.json | 87 ++ yudao-ui-app/uni_modules/uview-ui/theme.scss | 44 + 386 files changed, 38777 insertions(+) create mode 100644 yudao-ui-app/App.vue create mode 100644 yudao-ui-app/index.html create mode 100644 yudao-ui-app/main.js create mode 100644 yudao-ui-app/manifest.json create mode 100644 yudao-ui-app/pages.json create mode 100644 yudao-ui-app/pages/cart/cart.nvue create mode 100644 yudao-ui-app/pages/category/category.nvue create mode 100644 yudao-ui-app/pages/index/index.nvue create mode 100644 yudao-ui-app/pages/user/user.nvue create mode 100644 yudao-ui-app/static/images/tabbar/cart-active.png create mode 100644 yudao-ui-app/static/images/tabbar/cart.png create mode 100644 yudao-ui-app/static/images/tabbar/category-active.png create mode 100644 yudao-ui-app/static/images/tabbar/category.png create mode 100644 yudao-ui-app/static/images/tabbar/index-active.png create mode 100644 yudao-ui-app/static/images/tabbar/index.png create mode 100644 yudao-ui-app/static/images/tabbar/user-active.png create mode 100644 yudao-ui-app/static/images/tabbar/user.png create mode 100644 yudao-ui-app/uni.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/LICENSE create mode 100644 yudao-ui-app/uni_modules/uview-ui/README.md create mode 100644 yudao-ui-app/uni_modules/uview-ui/changelog.md create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-album/u-album.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-alert/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-alert/u-alert.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-avatar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-avatar/u-avatar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-back-top/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-back-top/u-back-top.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-badge/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-badge/u-badge.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-button/nvue.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-button/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-button/u-button.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-button/vue.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-calendar/header.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-calendar/month.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-calendar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-calendar/u-calendar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-calendar/util.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-cell/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-cell/u-cell.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-code-input/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-code-input/u-code-input.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-code/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-code/u-code.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-col/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-col/u-col.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-collapse/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-collapse/u-collapse.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-count-down/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-count-down/u-count-down.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-count-down/utils.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-count-to/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-count-to/u-count-to.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-divider/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-divider/u-divider.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-empty/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-empty/u-empty.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-form-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-form-item/u-form-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-form/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-form/u-form.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-gap/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-gap/u-gap.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-grid/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-grid/u-grid.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-icon/icons.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-icon/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-icon/u-icon.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-image/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-image/u-image.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-index-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-index-item/u-index-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-index-list/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-index-list/u-index-list.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-input/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-input/u-input.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-line/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-line/u-line.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-link/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-link/u-link.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-list-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-list-item/u-list-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-list/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-list/u-list.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-modal/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-modal/u-modal.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-navbar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-navbar/u-navbar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-no-network/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-no-network/u-no-network.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-notify/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-notify/u-notify.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-number-box/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-number-box/u-number-box.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-overlay/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-overlay/u-overlay.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-parse/node/node.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-parse/parser.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-parse/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-parse/u-parse.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-picker-column/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-picker-column/u-picker-column.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-picker/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-picker/u-picker.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-popup/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-popup/u-popup.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-radio-group/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-radio-group/u-radio-group.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-radio/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-radio/u-radio.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-rate/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-rate/u-rate.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-read-more/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-read-more/u-read-more.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-row-notice/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-row-notice/u-row-notice.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-row/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-row/u-row.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-safe-bottom/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-scroll-list/nvue.js rename yudao-ui-app/{.keep => uni_modules/uview-ui/components/u-scroll-list/other.js} (100%) create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-scroll-list/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-scroll-list/scrollWxs.wxs create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-scroll-list/u-scroll-list.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-search/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-search/u-search.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-skeleton/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/mpother.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/mpwxs.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/mpwxs.wxs create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/nvue - 副本.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/nvue.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-slider/u-slider.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-status-bar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-status-bar/u-status-bar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-steps-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-steps-item/u-steps-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-steps/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-steps/u-steps.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-sticky/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-sticky/u-sticky.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-subsection/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-subsection/u-subsection.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/index - backup.wxs create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/index.wxs create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/nvue - backup.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/nvue.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action-item/wxs.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swipe-action/u-swipe-action.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swiper-indicator/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swiper/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-swiper/u-swiper.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-switch/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-switch/u-switch.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabbar-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabbar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabbar/u-tabbar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-table/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-table/u-table.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabs-item/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabs-item/u-tabs-item.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabs/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tabs/u-tabs.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tag/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tag/u-tag.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-td/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-td/u-td.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-text/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-text/u-text.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-text/value.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-textarea/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-textarea/u-textarea.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-toast/u-toast.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-toolbar/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-toolbar/u-toolbar.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tooltip/clipboard.min.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tooltip/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tooltip/u-tooltip.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tr/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-tr/u-tr.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-transition/nvue.ani-map.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-transition/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-transition/transition.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-transition/u-transition.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-transition/vue.ani-style.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-upload/mixin.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-upload/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-upload/u-upload.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/u-upload/utils.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/components/uview-ui/uview-ui.vue create mode 100644 yudao-ui-app/uni_modules/uview-ui/index.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/index.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/color.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/config.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/actionSheet.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/album.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/alert.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/avatar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/avatarGroup.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/backtop.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/badge.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/button.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/calendar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/carKeyboard.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/cell.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/cellGroup.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/checkbox.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/checkboxGroup.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/circleProgress.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/code.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/codeInput.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/col.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/collapse.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/collapseItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/columnNotice.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/countDown.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/countTo.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/datetimePicker.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/divider.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/empty.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/form.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/formItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/gap.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/grid.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/gridItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/icon.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/image.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/indexAnchor.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/indexList.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/input.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/keyboard.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/line.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/lineProgress.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/link.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/list.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/listItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/loadingIcon.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/loadingPage.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/loadmore.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/modal.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/navbar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/noNetwork.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/noticeBar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/notify.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/numberBox.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/numberKeyboard.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/overlay.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/parse.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/picker.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/popup.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/radio.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/radioGroup.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/rate.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/readMore.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/row.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/rowNotice.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/scrollList.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/search.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/section.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/skeleton.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/slider.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/statusBar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/steps.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/stepsItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/sticky.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/subsection.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/swipeAction.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/swipeActionItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/swiper.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/swipterIndicator.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/switch.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/tabbar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/tabbarItem.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/tabs.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/tag.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/text.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/textarea.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/toast.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/toolbar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/tooltip.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/transition.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/props/upload.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/config/zIndex.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/color.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/common.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/components.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/flex.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/h5.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/mixin.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/mp.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/nvue.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/css/vue.scss create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/colorGradient.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/debounce.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/digit.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/index.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/platform.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/test.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/function/throttle.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/adapters/index.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/InterceptorManager.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/Request.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/buildFullPath.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/defaults.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/dispatchRequest.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/mergeConfig.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/core/settle.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/helpers/buildURL.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/helpers/combineURLs.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/index.d.ts create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/index.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/utils.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/luch-request/utils/clone.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/button.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/mixin.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/mpMixin.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/mpShare.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/openType.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/style.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/mixin/touch.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/util/async-validator.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/util/calendar.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/util/dayjs.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/util/emitter.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/libs/util/route.js create mode 100644 yudao-ui-app/uni_modules/uview-ui/package.json create mode 100644 yudao-ui-app/uni_modules/uview-ui/theme.scss diff --git a/yudao-ui-app/App.vue b/yudao-ui-app/App.vue new file mode 100644 index 000000000..cb4ef8126 --- /dev/null +++ b/yudao-ui-app/App.vue @@ -0,0 +1,25 @@ + + + diff --git a/yudao-ui-app/index.html b/yudao-ui-app/index.html new file mode 100644 index 000000000..c3ff205f6 --- /dev/null +++ b/yudao-ui-app/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/yudao-ui-app/main.js b/yudao-ui-app/main.js new file mode 100644 index 000000000..6b80b6348 --- /dev/null +++ b/yudao-ui-app/main.js @@ -0,0 +1,26 @@ +import App from './App' + +// #ifndef VUE3 +import Vue from 'vue' +Vue.config.productionTip = false + +//引入并使用uView的JS库 +import uView from '@/uni_modules/uview-ui' +Vue.use(uView) + +App.mpType = 'app' +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { createSSRApp } from 'vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/yudao-ui-app/manifest.json b/yudao-ui-app/manifest.json new file mode 100644 index 000000000..7cce06e5f --- /dev/null +++ b/yudao-ui-app/manifest.json @@ -0,0 +1,72 @@ +{ + "name" : "yudao-ui-app", + "appid" : "__UNI__CA099E3", + "description" : "yudao-ui-app for ruoyi-vue-pro", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2" +} diff --git a/yudao-ui-app/pages.json b/yudao-ui-app/pages.json new file mode 100644 index 000000000..02112f68e --- /dev/null +++ b/yudao-ui-app/pages.json @@ -0,0 +1,64 @@ +{ + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "首页" + } + }, + { + "path": "pages/category/category", + "style": { + "navigationBarTitleText": "分类" + } + }, + { + "path": "pages/cart/cart", + "style": { + "navigationBarTitleText": "购物车" + } + }, + { + "path": "pages/user/user", + "style": { + "navigationBarTitleText": "我的" + } + } + ], + "tabBar": { + "selectedColor": "#333333", + "color": "#bfbfbf", + "list": [ + { + "pagePath": "pages/index/index", + "text": "首页", + "iconPath": "/static/images/tabbar/index.png", + "selectedIconPath": "/static/images/tabbar/index-active.png" + }, + { + "pagePath": "pages/category/category", + "text": "分类", + "iconPath": "/static/images/tabbar/category.png", + "selectedIconPath": "/static/images/tabbar/category-active.png" + }, + { + "pagePath": "pages/cart/cart", + "text": "购物车", + "iconPath": "/static/images/tabbar/cart.png", + "selectedIconPath": "/static/images/tabbar/cart-active.png" + }, + { + "pagePath": "pages/user/user.png", + "text": "我的", + "iconPath": "/static/images/tabbar/user.png", + "selectedIconPath": "/static/images/tabbar/user-active.png" + } + ] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "yudao-ui-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#FFFFFF" + } +} diff --git a/yudao-ui-app/pages/cart/cart.nvue b/yudao-ui-app/pages/cart/cart.nvue new file mode 100644 index 000000000..793da35cc --- /dev/null +++ b/yudao-ui-app/pages/cart/cart.nvue @@ -0,0 +1,24 @@ + + + + + diff --git a/yudao-ui-app/pages/category/category.nvue b/yudao-ui-app/pages/category/category.nvue new file mode 100644 index 000000000..793da35cc --- /dev/null +++ b/yudao-ui-app/pages/category/category.nvue @@ -0,0 +1,24 @@ + + + + + diff --git a/yudao-ui-app/pages/index/index.nvue b/yudao-ui-app/pages/index/index.nvue new file mode 100644 index 000000000..d14e16907 --- /dev/null +++ b/yudao-ui-app/pages/index/index.nvue @@ -0,0 +1,25 @@ + + + + + diff --git a/yudao-ui-app/pages/user/user.nvue b/yudao-ui-app/pages/user/user.nvue new file mode 100644 index 000000000..d14e16907 --- /dev/null +++ b/yudao-ui-app/pages/user/user.nvue @@ -0,0 +1,25 @@ + + + + + diff --git a/yudao-ui-app/static/images/tabbar/cart-active.png b/yudao-ui-app/static/images/tabbar/cart-active.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9aac700ad5efad0e5b9929873cf82470aa03d9 GIT binary patch literal 6304 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 WJdu%}T_1;M{eYg9AylJb8~H!=pJ)L9 literal 0 HcmV?d00001 diff --git a/yudao-ui-app/static/images/tabbar/category-active.png b/yudao-ui-app/static/images/tabbar/category-active.png new file mode 100644 index 0000000000000000000000000000000000000000..d9bce99f595a0f2f5aedb89af88c2ddade95e29a GIT binary patch literal 8172 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 TSzie6sR1oDeX!!r{fPeq{EyYP literal 0 HcmV?d00001 diff --git a/yudao-ui-app/static/images/tabbar/index-active.png b/yudao-ui-app/static/images/tabbar/index-active.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c8352c44ef1ad1a9f323f95778159d5bd8559a GIT binary patch literal 6891 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 literal 0 HcmV?d00001 diff --git a/yudao-ui-app/static/images/tabbar/user.png b/yudao-ui-app/static/images/tabbar/user.png new file mode 100644 index 0000000000000000000000000000000000000000..b5367d4cd2f835025ce4e3561832343264036b9b GIT binary patch literal 8070 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 OI-stigDO?Fi1;67LscaJ literal 0 HcmV?d00001 diff --git a/yudao-ui-app/uni.scss b/yudao-ui-app/uni.scss new file mode 100644 index 000000000..b54d6b3b2 --- /dev/null +++ b/yudao-ui-app/uni.scss @@ -0,0 +1,79 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 引入uView主题样式 */ +@import '@/uni_modules/uview-ui/theme.scss'; + +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px; diff --git a/yudao-ui-app/uni_modules/uview-ui/LICENSE b/yudao-ui-app/uni_modules/uview-ui/LICENSE new file mode 100644 index 000000000..8e39eada8 --- /dev/null +++ b/yudao-ui-app/uni_modules/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/yudao-ui-app/uni_modules/uview-ui/README.md b/yudao-ui-app/uni_modules/uview-ui/README.md new file mode 100644 index 000000000..31bd594da --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/README.md @@ -0,0 +1,104 @@ +

+ logo +

+

uView

+

多平台快速开发的UI框架

+ +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## 特性 + +- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序 +- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用 +- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨 +- 众多的常用页面和布局,让您专注逻辑,事半功倍 +- 详尽的文档支持,现代化的演示效果 +- 按需引入,精简打包体积 + + +## 安装 + +```bash +# npm方式安装,插件市场导入无需执行此命令 +npm i uview-ui +``` + +## 快速上手 + +1. `main.js`引入uView库 +```js +// main.js +import uView from 'uview-ui'; +Vue.use(uView); +``` + +2. `App.vue`引入基础样式(注意style标签需声明scss属性支持) +```css +/* App.vue */ + +``` + +3. `uni.scss`引入全局scss变量文件 +```css +/* uni.scss */ +@import "uview-ui/theme.scss"; +``` + +4. `pages.json`配置easycom规则(按需引入) + +```js +// pages.json +{ + "easycom": { + // npm安装的方式不需要前面的"@/",下载安装的方式需要"@/" + // npm安装方式 + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + // 下载安装方式 + // "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" + }, + // 此为本身已有的内容 + "pages": [ + // ...... + ] +} +``` + +请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容 + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changelog.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + +## 捐赠uView的研发 + +uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。 + + + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 diff --git a/yudao-ui-app/uni_modules/uview-ui/changelog.md b/yudao-ui-app/uni_modules/uview-ui/changelog.md new file mode 100644 index 000000000..7a54275a2 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/changelog.md @@ -0,0 +1,318 @@ +## 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/yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 000000000..fdfc212ae --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 000000000..21b7ab196 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 000000000..2887e4cf9 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,72 @@ + + + \ No newline at end of file diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 000000000..44ee52a37 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 000000000..9dbcfbb32 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,47 @@ + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 000000000..e96e04fd4 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 000000000..98a73d876 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 000000000..75cdb37d5 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-album/u-album.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 000000000..687e2d52c --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-alert/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 000000000..4297e2c3d --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-alert/u-alert.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 000000000..81f7d43e1 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 000000000..58b42ac95 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 000000000..7e996d770 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-avatar/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 000000000..34ca0f282 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 000000000..3319be581 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-back-top/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 000000000..6c702c286 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 000000000..2d075667f --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-badge/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 000000000..74c032c39 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-badge/u-badge.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 000000000..53cfc8115 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-button/nvue.scss b/yudao-ui-app/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 000000000..490db7d99 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-button/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 000000000..07fd84467 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-button/u-button.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 000000000..29001b097 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,490 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-button/vue.scss b/yudao-ui-app/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 000000000..32019b278 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/header.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 000000000..dc4f7d054 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/month.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 000000000..c20937fee --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 000000000..2ad7bc769 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,144 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 000000000..ad892ffa5 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/util.js b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 000000000..ca4736bb2 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 000000000..3553647a9 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 000000000..51175b54c --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 000000000..350ef403e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 000000000..a9508c0c7 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-cell/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 000000000..da0333032 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,110 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-cell/u-cell.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 000000000..b099c9070 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 000000000..2f818a10c --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 000000000..7a6b4fa3c --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 000000000..93f4fd9f2 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 000000000..6429cca94 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 000000000..d776cfb61 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 000000000..d1ee2867b --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-code-input/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 000000000..eeb58a029 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,74 @@ +export default { + props: { + // 最大输入长度 + 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/yudao-ui-app/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 000000000..14b2a4bf4 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-code/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 000000000..eaf80d02f --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-code/u-code.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 000000000..cdf9f825a --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-col/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 000000000..06222517e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-col/u-col.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 000000000..8be151742 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 000000000..bd5749b62 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 000000000..0e1b7039e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-collapse/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 000000000..7ee6d3198 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 000000000..fc188a2ea --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 000000000..48091549f --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 000000000..fc395321e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 000000000..d62f02551 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 000000000..b5e85a635 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/utils.js b/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 000000000..8c7500501 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-count-to/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 000000000..86873c184 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 000000000..417b7327b --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 000000000..f44c0f99a --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 000000000..18d8dcc67 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-divider/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 000000000..1fa8359fc --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-divider/u-divider.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 000000000..b629da64a --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 000000000..501a1f058 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 000000000..07de583d6 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 000000000..5f8465efe --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 000000000..9c50bfe71 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-empty/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 000000000..78662f8fd --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-empty/u-empty.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 000000000..03d6a2736 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-form-item/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 000000000..53a019155 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,43 @@ +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的宽度,单位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/yudao-ui-app/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 000000000..701d7cc0b --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-form/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 000000000..f2a629c0e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-form/u-form.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 000000000..fe2dde2d3 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-gap/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 000000000..89953e32a --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-gap/u-gap.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 000000000..e4429f0e4 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 000000000..06c3c6637 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 000000000..fc0c7cf1d --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-grid/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 000000000..87b0f6a74 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-grid/u-grid.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 000000000..b43cc270a --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-icon/icons.js b/yudao-ui-app/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 000000000..f4d0fe293 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-icon/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 000000000..71845b7ca --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-icon/u-icon.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 000000000..9340328ee --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-image/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 000000000..2eabb746b --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-image/u-image.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 000000000..d7105c2fc --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 000000000..6d8b59a72 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 000000000..b95ddef9e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-index-item/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 000000000..7c1133117 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 000000000..0bc7fb3cd --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-index-list/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 000000000..354d45914 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 000000000..d71261853 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-input/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 000000000..88917c353 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,182 @@ +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 + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-input/u-input.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 000000000..c755390aa --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,353 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 000000000..cfdb00aca --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 000000000..14228cbf5 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 000000000..a4210bdfa --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 000000000..4e2793101 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-line/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 000000000..866bade95 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-实线,false-虚线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-line/u-line.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 000000000..e0a6d9255 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-link/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 000000000..d39353f18 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-link/u-link.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 000000000..c6802a560 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-list-item/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 000000000..58ddc493c --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 000000000..1a25db65e --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-list/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 000000000..25406f4e0 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-list/u-list.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 000000000..513decc78 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 000000000..c35524e2a --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 000000000..2ede5c3a3 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 000000000..438ab6437 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,44 @@ +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 + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 000000000..c6b51b973 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 000000000..125ad3eb7 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,80 @@ +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 + }, + // 字体颜色 + 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 + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 000000000..24fb4b6a0 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-modal/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 000000000..f76672c81 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-modal/u-modal.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 000000000..4c37ae2ed --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-navbar/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 000000000..5398de287 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: uni.$u.props.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: uni.$u.props.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: uni.$u.props.navbar.titleStyle + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 000000000..2b206b7db --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-no-network/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 000000000..9f3af62ca --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 000000000..53db90588 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 000000000..7040c29a5 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 000000000..a06eb39ad --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-notify/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 000000000..57a9d71e9 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-notify/u-notify.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 000000000..30adb72fa --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-number-box/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 000000000..fb0fa947f --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 000000000..69211c540 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 000000000..5e3bf556b --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 000000000..4f505c6e4 --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-overlay/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 000000000..e6974df9b --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 000000000..92de4e9fd --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-parse/node/node.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 000000000..e2a9f7bef --- /dev/null +++ b/yudao-ui-app/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +