From 849647d3c9affc7d91ccd05452ed1ec20aec5b9d Mon Sep 17 00:00:00 2001 From: admin Date: Sat, 17 Jan 2026 16:55:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=95=E5=85=A5uView=20Plus=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=BA=93=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=9D=99=E6=80=81=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 1 + App.vue | 1 + main.js | 4 +- manifest.json | 29 +- package.json | 3 +- pages.json | 66 +- pages/index/index.vue | 93 +- pages/index/user.vue | 37 +- pages/order/detail.vue | 619 +++++++ pages/order/handoverRecord.vue | 155 ++ pages/registered/accountInfo.vue | 223 +++ pages/registered/audit.vue | 69 + pages/registered/registerRiders.vue | 691 ++++++++ pages/user/orderRecord.vue | 214 +++ pages/user/recordList.vue | 200 +++ sheep/api/member/auth.js | 13 + .../s-auth-modal/components/account-login.vue | 27 +- .../components/reset-password.vue | 2 +- .../s-auth-modal/components/sms-login.vue | 9 +- sheep/components/s-auth-modal/index.scss | 4 + .../components/s-auth-modal/s-auth-modal.vue | 17 +- .../ui/su-region-picker/su-region-picker.vue | 80 +- uni.scss | 1 + uni_modules/uview-plus/LICENSE | 21 + uni_modules/uview-plus/README.md | 71 + uni_modules/uview-plus/changelog.md | 1491 +++++++++++++++++ .../u-action-sheet-data.vue | 109 ++ .../components/u-action-sheet/actionSheet.js | 26 + .../components/u-action-sheet/props.js | 70 + .../u-action-sheet/u-action-sheet.vue | 302 ++++ .../components/u-agreement/u-agreement.vue | 76 + .../uview-plus/components/u-album/album.js | 28 + .../uview-plus/components/u-album/props.js | 95 ++ .../uview-plus/components/u-album/u-album.vue | 344 ++++ .../uview-plus/components/u-alert/alert.js | 26 + .../uview-plus/components/u-alert/props.js | 75 + .../uview-plus/components/u-alert/u-alert.vue | 293 ++++ .../components/u-avatar-group/avatarGroup.js | 23 + .../components/u-avatar-group/props.js | 54 + .../u-avatar-group/u-avatar-group.vue | 109 ++ .../uview-plus/components/u-avatar/avatar.js | 28 + .../uview-plus/components/u-avatar/props.js | 81 + .../components/u-avatar/u-avatar.vue | 179 ++ .../components/u-back-top/backtop.js | 27 + .../uview-plus/components/u-back-top/props.js | 56 + .../components/u-back-top/u-back-top.vue | 132 ++ .../uview-plus/components/u-badge/badge.js | 27 + .../uview-plus/components/u-badge/props.js | 79 + .../uview-plus/components/u-badge/u-badge.vue | 176 ++ .../components/u-barcode/u-barcode.vue | 1000 +++++++++++ .../uview-plus/components/u-box/props.js | 27 + .../uview-plus/components/u-box/u-box.vue | 91 + .../uview-plus/components/u-button/button.js | 43 + .../uview-plus/components/u-button/nvue.scss | 46 + .../uview-plus/components/u-button/props.js | 159 ++ .../components/u-button/u-button.vue | 503 ++++++ .../uview-plus/components/u-button/vue.scss | 81 + .../components/u-calendar/calendar.js | 48 + .../components/u-calendar/header.vue | 109 ++ .../components/u-calendar/month.vue | 616 +++++++ .../uview-plus/components/u-calendar/props.js | 169 ++ .../components/u-calendar/u-calendar.vue | 421 +++++ .../uview-plus/components/u-calendar/util.js | 86 + .../components/u-car-keyboard/carKeyboard.js | 15 + .../components/u-car-keyboard/props.js | 17 + .../u-car-keyboard/u-car-keyboard.vue | 314 ++++ .../uview-plus/components/u-card/card.js | 40 + .../uview-plus/components/u-card/props.js | 134 ++ .../uview-plus/components/u-card/u-card.vue | 184 ++ .../components/u-cascader/u-cascader.vue | 335 ++++ .../components/u-cate-tab/u-cate-tab.vue | 381 +++++ .../components/u-cell-group/cellGroup.js | 17 + .../components/u-cell-group/props.js | 16 + .../components/u-cell-group/u-cell-group.vue | 66 + .../uview-plus/components/u-cell/cell.js | 35 + .../uview-plus/components/u-cell/props.js | 112 ++ .../uview-plus/components/u-cell/u-cell.vue | 267 +++ .../u-checkbox-group/checkboxGroup.js | 29 + .../components/u-checkbox-group/props.js | 93 + .../u-checkbox-group/u-checkbox-group.vue | 133 ++ .../components/u-checkbox/checkbox.js | 27 + .../uview-plus/components/u-checkbox/props.js | 76 + .../components/u-checkbox/u-checkbox.vue | 389 +++++ .../components/u-choose/u-choose.vue | 109 ++ .../u-circle-progress/circleProgress.js | 15 + .../components/u-circle-progress/props.js | 10 + .../u-circle-progress/u-circle-progress.vue | 200 +++ .../u-city-locate/u-city-locate.vue | 163 ++ .../components/u-code-input/codeInput.js | 29 + .../components/u-code-input/props.js | 90 + .../components/u-code-input/u-code-input.vue | 299 ++++ .../uview-plus/components/u-code/code.js | 21 + .../uview-plus/components/u-code/props.js | 36 + .../uview-plus/components/u-code/u-code.vue | 131 ++ .../uview-plus/components/u-col/col.js | 19 + .../uview-plus/components/u-col/props.js | 31 + .../uview-plus/components/u-col/u-col.vue | 169 ++ .../u-collapse-item/collapseItem.js | 31 + .../components/u-collapse-item/props.js | 97 ++ .../u-collapse-item/u-collapse-item.vue | 243 +++ .../components/u-collapse/collapse.js | 17 + .../uview-plus/components/u-collapse/props.js | 21 + .../components/u-collapse/u-collapse.vue | 90 + .../u-color-picker/u-color-picker.vue | 1095 ++++++++++++ .../u-column-notice/columnNotice.js | 25 + .../components/u-column-notice/props.js | 61 + .../u-column-notice/u-column-notice.vue | 165 ++ .../uview-plus/components/u-copy/u-copy.vue | 72 + .../components/u-count-down/countDown.js | 18 + .../components/u-count-down/props.js | 26 + .../components/u-count-down/u-count-down.vue | 167 ++ .../components/u-count-down/utils.js | 62 + .../components/u-count-to/countTo.js | 25 + .../uview-plus/components/u-count-to/props.js | 61 + .../components/u-count-to/u-count-to.vue | 187 +++ .../components/u-coupon/u-coupon.vue | 406 +++++ .../components/u-cropper/u-cropper.vue | 1228 ++++++++++++++ .../u-datetime-picker/datetimePicker.js | 44 + .../u-datetime-picker/dayjs.esm.min.js | 7 + .../components/u-datetime-picker/props.js | 183 ++ .../u-datetime-picker/u-datetime-picker.vue | 526 ++++++ .../components/u-divider/divider.js | 23 + .../uview-plus/components/u-divider/props.js | 46 + .../components/u-divider/u-divider.vue | 122 ++ .../components/u-dragsort/u-dragsort.vue | 389 +++++ .../components/u-dropdown-item/props.js | 47 + .../u-dropdown-item/u-dropdown-item.vue | 120 ++ .../uview-plus/components/u-dropdown/props.js | 61 + .../components/u-dropdown/u-dropdown.vue | 259 +++ .../uview-plus/components/u-empty/empty.js | 26 + .../uview-plus/components/u-empty/props.js | 61 + .../uview-plus/components/u-empty/u-empty.vue | 133 ++ .../u-float-button/u-float-button.vue | 167 ++ .../components/u-form-item/formItem.js | 24 + .../components/u-form-item/props.js | 55 + .../components/u-form-item/u-form-item.vue | 263 +++ .../uview-plus/components/u-form/form.js | 22 + .../uview-plus/components/u-form/props.js | 47 + .../uview-plus/components/u-form/u-form.vue | 258 +++ .../uview-plus/components/u-gap/gap.js | 19 + .../uview-plus/components/u-gap/props.js | 26 + .../uview-plus/components/u-gap/u-gap.vue | 40 + .../components/u-goods-sku/u-goods-sku.vue | 434 +++++ .../components/u-grid-item/gridItem.js | 16 + .../components/u-grid-item/props.js | 16 + .../components/u-grid-item/u-grid-item.vue | 218 +++ .../uview-plus/components/u-grid/grid.js | 17 + .../uview-plus/components/u-grid/props.js | 26 + .../uview-plus/components/u-grid/u-grid.vue | 113 ++ .../uview-plus/components/u-icon/icon.js | 36 + .../uview-plus/components/u-icon/icons.js | 215 +++ .../uview-plus/components/u-icon/props.js | 91 + .../uview-plus/components/u-icon/u-icon.vue | 238 +++ .../uview-plus/components/u-icon/util.js | 68 + .../uview-plus/components/u-image/image.js | 30 + .../uview-plus/components/u-image/props.js | 86 + .../uview-plus/components/u-image/u-image.vue | 267 +++ .../components/u-index-anchor/indexAnchor.js | 19 + .../components/u-index-anchor/props.js | 31 + .../u-index-anchor/u-index-anchor.vue | 110 ++ .../components/u-index-item/props.js | 8 + .../components/u-index-item/u-index-item.vue | 89 + .../components/u-index-list/indexList.js | 21 + .../components/u-index-list/props.js | 41 + .../components/u-index-list/u-index-list.vue | 597 +++++++ .../uview-plus/components/u-input/input.js | 50 + .../uview-plus/components/u-input/props.js | 213 +++ .../uview-plus/components/u-input/u-input.vue | 433 +++++ .../components/u-keyboard/keyboard.js | 31 + .../uview-plus/components/u-keyboard/props.js | 86 + .../components/u-keyboard/u-keyboard.vue | 166 ++ .../components/u-lazy-load/u-lazy-load.vue | 261 +++ .../u-line-progress/lineProgress.js | 20 + .../components/u-line-progress/props.js | 35 + .../u-line-progress/u-line-progress.vue | 152 ++ .../uview-plus/components/u-line/line.js | 20 + .../uview-plus/components/u-line/props.js | 35 + .../uview-plus/components/u-line/u-line.vue | 64 + .../uview-plus/components/u-link/link.js | 27 + .../uview-plus/components/u-link/props.js | 41 + .../uview-plus/components/u-link/u-link.vue | 86 + .../components/u-list-item/listItem.js | 15 + .../components/u-list-item/props.js | 11 + .../components/u-list-item/u-list-item.vue | 118 ++ .../uview-plus/components/u-list/list.js | 28 + .../uview-plus/components/u-list/props.js | 101 ++ .../uview-plus/components/u-list/u-list.vue | 182 ++ .../components/u-loading-icon/loadingIcon.js | 30 + .../components/u-loading-icon/props.js | 61 + .../u-loading-icon/u-loading-icon.vue | 348 ++++ .../components/u-loading-page/loadingPage.js | 25 + .../components/u-loading-page/props.js | 57 + .../u-loading-page/u-loading-page.vue | 121 ++ .../components/u-loadmore/loadmore.js | 33 + .../uview-plus/components/u-loadmore/props.js | 96 ++ .../components/u-loadmore/u-loadmore.vue | 154 ++ .../components/u-markdown/marked.esm.js | 7 + .../components/u-markdown/u-markdown.vue | 300 ++++ .../u-message-input/u-message-input.vue | 318 ++++ .../uview-plus/components/u-modal/modal.js | 36 + .../uview-plus/components/u-modal/props.js | 111 ++ .../uview-plus/components/u-modal/u-modal.vue | 265 +++ .../components/u-navbar-mini/props.js | 51 + .../u-navbar-mini/u-navbar-mini.vue | 137 ++ .../uview-plus/components/u-navbar/navbar.js | 33 + .../uview-plus/components/u-navbar/props.js | 97 ++ .../components/u-navbar/u-navbar.vue | 200 +++ .../components/u-no-network/noNetwork.js | 18 + .../components/u-no-network/props.js | 21 + .../components/u-no-network/u-no-network.vue | 228 +++ .../components/u-notice-bar/noticeBar.js | 28 + .../components/u-notice-bar/props.js | 76 + .../components/u-notice-bar/u-notice-bar.vue | 105 ++ .../uview-plus/components/u-notify/notify.js | 22 + .../uview-plus/components/u-notify/props.js | 51 + .../components/u-notify/u-notify.vue | 216 +++ .../components/u-number-box/numberBox.js | 40 + .../components/u-number-box/props.js | 145 ++ .../components/u-number-box/u-number-box.vue | 478 ++++++ .../u-number-keyboard/numberKeyboard.js | 17 + .../components/u-number-keyboard/props.js | 21 + .../u-number-keyboard/u-number-keyboard.vue | 198 +++ .../components/u-overlay/overlay.js | 18 + .../uview-plus/components/u-overlay/props.js | 26 + .../components/u-overlay/u-overlay.vue | 71 + .../components/u-pagination/u-pagination.vue | 285 ++++ .../components/u-parse/node/node.vue | 600 +++++++ .../uview-plus/components/u-parse/parse.js | 22 + .../uview-plus/components/u-parse/parser.js | 1400 ++++++++++++++++ .../uview-plus/components/u-parse/props.js | 54 + .../uview-plus/components/u-parse/u-parse.vue | 504 ++++++ .../components/u-pdf-reader/props.js | 19 + .../components/u-pdf-reader/u-pdf-reader.vue | 52 + .../components/u-picker-column/props.js | 7 + .../u-picker-column/u-picker-column.vue | 28 + .../u-picker-data/u-picker-data.vue | 147 ++ .../uview-plus/components/u-picker/picker.js | 42 + .../uview-plus/components/u-picker/props.js | 162 ++ .../components/u-picker/u-picker.vue | 478 ++++++ .../uview-plus/components/u-popover/props.js | 59 + .../components/u-popover/u-popover.vue | 95 ++ .../uview-plus/components/u-popup/popup.js | 33 + .../uview-plus/components/u-popup/props.js | 101 ++ .../uview-plus/components/u-popup/u-popup.vue | 452 +++++ .../components/u-poster/u-poster.vue | 629 +++++++ .../u-pull-refresh/u-pull-refresh.vue | 334 ++++ .../uview-plus/components/u-qrcode/qrcode.js | 1281 ++++++++++++++ .../components/u-qrcode/u-qrcode.vue | 536 ++++++ .../components/u-radio-group/props.js | 100 ++ .../components/u-radio-group/radioGroup.js | 31 + .../u-radio-group/u-radio-group.vue | 136 ++ .../uview-plus/components/u-radio/props.js | 71 + .../uview-plus/components/u-radio/radio.js | 27 + .../uview-plus/components/u-radio/u-radio.vue | 350 ++++ .../uview-plus/components/u-rate/props.js | 80 + .../uview-plus/components/u-rate/rate.js | 26 + .../uview-plus/components/u-rate/u-rate.vue | 327 ++++ .../components/u-read-more/props.js | 63 + .../components/u-read-more/readMore.js | 23 + .../components/u-read-more/u-read-more.vue | 165 ++ .../u-refresh-virtual-list.vue | 85 + .../components/u-row-notice/props.js | 41 + .../components/u-row-notice/rowNotice.js | 21 + .../components/u-row-notice/u-row-notice.vue | 336 ++++ .../uview-plus/components/u-row/props.js | 21 + .../uview-plus/components/u-row/row.js | 17 + .../uview-plus/components/u-row/u-row.vue | 96 ++ .../components/u-safe-bottom/props.js | 7 + .../u-safe-bottom/u-safe-bottom.vue | 59 + .../components/u-scroll-list/nvue.js | 31 + .../components/u-scroll-list/props.js | 36 + .../components/u-scroll-list/scrollList.js | 20 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../u-scroll-list/u-scroll-list.vue | 233 +++ .../uview-plus/components/u-search/props.js | 156 ++ .../uview-plus/components/u-search/search.js | 41 + .../components/u-search/u-search.vue | 354 ++++ .../components/u-section/section.js | 25 + .../components/u-select/u-select.vue | 221 +++ .../u-short-video/u-short-video.vue | 463 +++++ .../components/u-signature/u-signature.vue | 486 ++++++ .../uview-plus/components/u-skeleton/props.js | 61 + .../components/u-skeleton/skeleton.js | 25 + .../components/u-skeleton/u-skeleton.vue | 248 +++ .../uview-plus/components/u-slider/mpother.js | 113 ++ .../uview-plus/components/u-slider/mpwxs.js | 43 + .../uview-plus/components/u-slider/mpwxs.wxs | 121 ++ .../uview-plus/components/u-slider/nvue.js | 193 +++ .../uview-plus/components/u-slider/props.js | 95 ++ .../uview-plus/components/u-slider/slider.js | 28 + .../components/u-slider/u-slider.vue | 511 ++++++ .../components/u-status-bar/props.js | 15 + .../components/u-status-bar/statusBar.js | 16 + .../components/u-status-bar/u-status-bar.vue | 63 + .../components/u-steps-item/props.js | 31 + .../components/u-steps-item/stepsItem.js | 18 + .../components/u-steps-item/u-steps-item.vue | 349 ++++ .../uview-plus/components/u-steps/props.js | 41 + .../uview-plus/components/u-steps/steps.js | 21 + .../uview-plus/components/u-steps/u-steps.vue | 94 ++ .../uview-plus/components/u-sticky/props.js | 42 + .../uview-plus/components/u-sticky/sticky.js | 20 + .../components/u-sticky/u-sticky.vue | 221 +++ .../components/u-subsection/props.js | 67 + .../components/u-subsection/subsection.js | 26 + .../components/u-subsection/u-subsection.vue | 405 +++++ .../components/u-swipe-action-item/alipay.sjs | 229 +++ .../u-swipe-action-item/index - backup.wxs | 256 +++ .../components/u-swipe-action-item/index.wxs | 234 +++ .../u-swipe-action-item/nvue - backup.js | 270 +++ .../components/u-swipe-action-item/nvue.js | 174 ++ .../components/u-swipe-action-item/other.js | 178 ++ .../components/u-swipe-action-item/props.js | 47 + .../u-swipe-action-item/swipeActionItem.js | 22 + .../u-swipe-action-item.vue | 249 +++ .../components/u-swipe-action-item/wxs.js | 15 + .../components/u-swipe-action/props.js | 16 + .../components/u-swipe-action/swipeAction.js | 15 + .../u-swipe-action/u-swipe-action.vue | 84 + .../components/u-swiper-indicator/props.js | 31 + .../u-swiper-indicator/swipterIndicator.js | 19 + .../u-swiper-indicator/u-swiper-indicator.vue | 114 ++ .../uview-plus/components/u-swiper/props.js | 127 ++ .../uview-plus/components/u-swiper/swiper.js | 39 + .../components/u-swiper/u-swiper.vue | 269 +++ .../uview-plus/components/u-switch/props.js | 64 + .../uview-plus/components/u-switch/switch.js | 24 + .../components/u-switch/u-switch.vue | 215 +++ .../components/u-tabbar-item/props.js | 41 + .../components/u-tabbar-item/tabbarItem.js | 21 + .../u-tabbar-item/u-tabbar-item.vue | 197 +++ .../uview-plus/components/u-tabbar/props.js | 57 + .../uview-plus/components/u-tabbar/tabbar.js | 24 + .../components/u-tabbar/u-tabbar.vue | 151 ++ .../uview-plus/components/u-table/props.js | 7 + .../uview-plus/components/u-table/u-table.vue | 104 ++ .../components/u-table2/tableRow.vue | 328 ++++ .../components/u-table2/u-table2.vue | 756 +++++++++ .../components/u-tabs-item/props.js | 7 + .../components/u-tabs-item/u-tabs-item.vue | 31 + .../uview-plus/components/u-tabs/props.js | 71 + .../uview-plus/components/u-tabs/tabs.js | 33 + .../uview-plus/components/u-tabs/u-tabs.vue | 413 +++++ .../uview-plus/components/u-tag/props.js | 116 ++ .../uview-plus/components/u-tag/tag.js | 35 + .../uview-plus/components/u-tag/u-tag.vue | 402 +++++ .../uview-plus/components/u-td/props.js | 7 + .../uview-plus/components/u-td/u-td.vue | 98 ++ .../uview-plus/components/u-text/props.js | 117 ++ .../uview-plus/components/u-text/text.js | 39 + .../uview-plus/components/u-text/u-text.vue | 234 +++ .../uview-plus/components/u-text/value.js | 87 + .../uview-plus/components/u-textarea/props.js | 127 ++ .../components/u-textarea/textarea.js | 36 + .../components/u-textarea/u-textarea.vue | 285 ++++ .../uview-plus/components/u-th/props.js | 7 + .../uview-plus/components/u-th/u-th.vue | 66 + .../uview-plus/components/u-title/u-title.vue | 36 + .../uview-plus/components/u-toast/toast.js | 30 + .../uview-plus/components/u-toast/u-toast.vue | 304 ++++ .../uview-plus/components/u-toolbar/props.js | 41 + .../components/u-toolbar/toolbar.js | 22 + .../components/u-toolbar/u-toolbar.vue | 125 ++ .../uview-plus/components/u-tooltip/props.js | 76 + .../components/u-tooltip/tooltip.js | 28 + .../components/u-tooltip/u-tooltip.vue | 394 +++++ .../uview-plus/components/u-tr/props.js | 7 + .../uview-plus/components/u-tr/u-tr.vue | 34 + .../components/u-transition/nvue-ani-map.js | 68 + .../components/u-transition/props.js | 26 + .../components/u-transition/transition.js | 18 + .../u-transition/transitionMixin.js | 163 ++ .../components/u-transition/u-transition.vue | 207 +++ .../u-transition/vue.ani-style.scss | 113 ++ .../components/u-tree/tree-node.vue | 128 ++ .../uview-plus/components/u-tree/u-tree.vue | 117 ++ .../uview-plus/components/u-upload/mixin.js | 23 + .../uview-plus/components/u-upload/props.js | 176 ++ .../components/u-upload/u-upload.vue | 927 ++++++++++ .../uview-plus/components/u-upload/upload.js | 46 + .../uview-plus/components/u-upload/utils.js | 180 ++ .../uview-plus/components/u-view/u-view.vue | 71 + .../u-virtual-list/u-virtual-list.vue | 253 +++ .../components/u-waterfall/u-waterfall.vue | 416 +++++ .../components/uview-plus/uview-plus.vue | 15 + uni_modules/uview-plus/index.js | 157 ++ uni_modules/uview-plus/index.scss | 25 + uni_modules/uview-plus/libs/config/color.js | 17 + uni_modules/uview-plus/libs/config/config.js | 56 + uni_modules/uview-plus/libs/config/props.js | 216 +++ uni_modules/uview-plus/libs/config/zIndex.js | 20 + uni_modules/uview-plus/libs/css/color.scss | 311 ++++ uni_modules/uview-plus/libs/css/common.scss | 112 ++ .../uview-plus/libs/css/components.scss | 36 + uni_modules/uview-plus/libs/css/flex.scss | 368 ++++ uni_modules/uview-plus/libs/css/h5.scss | 0 uni_modules/uview-plus/libs/css/mixin.scss | 8 + uni_modules/uview-plus/libs/css/mp.scss | 0 uni_modules/uview-plus/libs/css/nvue.scss | 0 uni_modules/uview-plus/libs/css/vue.scss | 28 + uni_modules/uview-plus/libs/function/calc.js | 64 + .../uview-plus/libs/function/colorGradient.js | 134 ++ .../uview-plus/libs/function/debounce.js | 29 + uni_modules/uview-plus/libs/function/digit.js | 167 ++ uni_modules/uview-plus/libs/function/http.js | 4 + uni_modules/uview-plus/libs/function/index.js | 878 ++++++++++ .../uview-plus/libs/function/platform.js | 75 + uni_modules/uview-plus/libs/function/test.js | 327 ++++ .../uview-plus/libs/function/throttle.js | 30 + uni_modules/uview-plus/libs/i18n/index.js | 54 + .../uview-plus/libs/i18n/locales/de.json | 85 + .../uview-plus/libs/i18n/locales/en.json | 85 + .../uview-plus/libs/i18n/locales/es.json | 85 + .../uview-plus/libs/i18n/locales/fr.json | 85 + .../uview-plus/libs/i18n/locales/ja.json | 85 + .../uview-plus/libs/i18n/locales/ko.json | 85 + .../uview-plus/libs/i18n/locales/ru.json | 85 + .../uview-plus/libs/i18n/locales/th.json | 85 + .../uview-plus/libs/i18n/locales/zh-Hans.json | 85 + .../uview-plus/libs/i18n/locales/zh-Hant.json | 85 + .../libs/luch-request/adapters/index.js | 97 ++ .../luch-request/core/InterceptorManager.js | 50 + .../libs/luch-request/core/Request.js | 199 +++ .../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 ++ .../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-plus/libs/luch-request/index.d.ts | 116 ++ .../uview-plus/libs/luch-request/index.js | 3 + .../uview-plus/libs/luch-request/utils.js | 131 ++ .../libs/luch-request/utils/clone.js | 264 +++ uni_modules/uview-plus/libs/mixin/button.js | 18 + uni_modules/uview-plus/libs/mixin/mixin.js | 201 +++ uni_modules/uview-plus/libs/mixin/mpMixin.js | 13 + uni_modules/uview-plus/libs/mixin/mpShare.js | 26 + uni_modules/uview-plus/libs/mixin/openType.js | 27 + uni_modules/uview-plus/libs/mixin/style.js | 249 +++ uni_modules/uview-plus/libs/mixin/touch.js | 61 + .../uview-plus/libs/util/async-validator.js | 1343 +++++++++++++++ uni_modules/uview-plus/libs/util/calendar.js | 546 ++++++ uni_modules/uview-plus/libs/util/emitter.js | 51 + .../libs/util/gcanvas/bridge/bridge-weex.js | 242 +++ .../context-2d/FillStyleLinearGradient.js | 18 + .../gcanvas/context-2d/FillStylePattern.js | 8 + .../context-2d/FillStyleRadialGradient.js | 17 + .../gcanvas/context-2d/RenderingContext.js | 666 ++++++++ .../util/gcanvas/context-webgl/ActiveInfo.js | 11 + .../libs/util/gcanvas/context-webgl/Buffer.js | 21 + .../util/gcanvas/context-webgl/Framebuffer.js | 21 + .../libs/util/gcanvas/context-webgl/GLenum.js | 298 ++++ .../util/gcanvas/context-webgl/GLmethod.js | 142 ++ .../libs/util/gcanvas/context-webgl/GLtype.js | 23 + .../util/gcanvas/context-webgl/Program.js | 21 + .../gcanvas/context-webgl/Renderbuffer.js | 21 + .../gcanvas/context-webgl/RenderingContext.js | 1191 +++++++++++++ .../libs/util/gcanvas/context-webgl/Shader.js | 22 + .../context-webgl/ShaderPrecisionFormat.js | 11 + .../util/gcanvas/context-webgl/Texture.js | 22 + .../gcanvas/context-webgl/UniformLocation.js | 22 + .../util/gcanvas/context-webgl/classUtils.js | 3 + .../libs/util/gcanvas/env/canvas.js | 74 + .../uview-plus/libs/util/gcanvas/env/image.js | 104 ++ .../uview-plus/libs/util/gcanvas/env/tool.js | 24 + .../uview-plus/libs/util/gcanvas/index.js | 39 + uni_modules/uview-plus/libs/util/route.js | 124 ++ uni_modules/uview-plus/libs/vue.js | 3 + uni_modules/uview-plus/package.json | 111 ++ uni_modules/uview-plus/theme.scss | 44 + uni_modules/uview-plus/types/comps.d.ts | 102 ++ .../uview-plus/types/comps/_common.d.ts | 9 + .../uview-plus/types/comps/actionSheet.d.ts | 121 ++ uni_modules/uview-plus/types/comps/album.d.ts | 82 + uni_modules/uview-plus/types/comps/alert.d.ts | 55 + .../uview-plus/types/comps/avatar.d.ts | 85 + .../uview-plus/types/comps/avatarGroup.d.ts | 62 + .../uview-plus/types/comps/backTop.d.ts | 74 + uni_modules/uview-plus/types/comps/badge.d.ts | 76 + .../uview-plus/types/comps/button.d.ts | 169 ++ .../uview-plus/types/comps/calendar.d.ts | 164 ++ uni_modules/uview-plus/types/comps/cell.d.ts | 133 ++ .../uview-plus/types/comps/cellGroup.d.ts | 27 + .../uview-plus/types/comps/checkbox.d.ts | 69 + .../uview-plus/types/comps/checkboxGroup.d.ts | 93 + uni_modules/uview-plus/types/comps/code.d.ts | 69 + .../uview-plus/types/comps/codeInput.d.ts | 98 ++ uni_modules/uview-plus/types/comps/col.d.ts | 43 + .../uview-plus/types/comps/collapse.d.ts | 52 + .../uview-plus/types/comps/collapseItem.d.ts | 83 + .../uview-plus/types/comps/countDown.d.ts | 60 + .../uview-plus/types/comps/countTo.d.ts | 88 + .../types/comps/datetimePicker.d.ts | 146 ++ .../uview-plus/types/comps/divider.d.ts | 58 + uni_modules/uview-plus/types/comps/empty.d.ts | 72 + uni_modules/uview-plus/types/comps/form.d.ts | 76 + .../uview-plus/types/comps/formItem.d.ts | 68 + uni_modules/uview-plus/types/comps/gap.d.ts | 35 + uni_modules/uview-plus/types/comps/grid.d.ts | 34 + .../uview-plus/types/comps/gridItem.d.ts | 28 + uni_modules/uview-plus/types/comps/icon.d.ts | 93 + uni_modules/uview-plus/types/comps/image.d.ts | 119 ++ .../uview-plus/types/comps/indexAnchor.d.ts | 38 + .../uview-plus/types/comps/indexItem.d.ts | 18 + .../uview-plus/types/comps/indexList.d.ts | 39 + uni_modules/uview-plus/types/comps/input.d.ts | 234 +++ .../uview-plus/types/comps/keyboard.d.ts | 125 ++ uni_modules/uview-plus/types/comps/line.d.ts | 44 + .../uview-plus/types/comps/lineProgress.d.ts | 51 + uni_modules/uview-plus/types/comps/link.d.ts | 51 + uni_modules/uview-plus/types/comps/list.d.ts | 92 + .../uview-plus/types/comps/listItem.d.ts | 18 + .../uview-plus/types/comps/loadMore.d.ts | 108 ++ .../uview-plus/types/comps/loadingIcon.d.ts | 68 + .../uview-plus/types/comps/loadingPage.d.ts | 58 + uni_modules/uview-plus/types/comps/modal.d.ts | 115 ++ .../uview-plus/types/comps/navbar.d.ts | 118 ++ .../uview-plus/types/comps/noNetwork.d.ts | 40 + .../uview-plus/types/comps/noticeBar.d.ts | 85 + .../uview-plus/types/comps/notify.d.ts | 73 + .../uview-plus/types/comps/numberBox.d.ts | 155 ++ .../uview-plus/types/comps/overlay.d.ts | 46 + uni_modules/uview-plus/types/comps/parse.d.ts | 101 ++ .../uview-plus/types/comps/picker.d.ts | 115 ++ uni_modules/uview-plus/types/comps/popup.d.ts | 103 ++ .../uview-plus/types/comps/qrcode.d.ts | 77 + uni_modules/uview-plus/types/comps/radio.d.ts | 77 + .../uview-plus/types/comps/radioGroup.d.ts | 97 ++ uni_modules/uview-plus/types/comps/rate.d.ts | 85 + .../uview-plus/types/comps/readMore.d.ts | 80 + uni_modules/uview-plus/types/comps/row.d.ts | 34 + .../uview-plus/types/comps/safeBottom.d.ts | 16 + .../uview-plus/types/comps/scrollList.d.ts | 51 + .../uview-plus/types/comps/search.d.ts | 180 ++ .../uview-plus/types/comps/skeleton.d.ts | 70 + .../uview-plus/types/comps/slider.d.ts | 79 + .../uview-plus/types/comps/statusBar.d.ts | 22 + uni_modules/uview-plus/types/comps/steps.d.ts | 48 + .../uview-plus/types/comps/stepsItem.d.ts | 41 + .../uview-plus/types/comps/sticky.d.ts | 48 + .../uview-plus/types/comps/subsection.d.ts | 80 + .../uview-plus/types/comps/swipeAction.d.ts | 24 + .../types/comps/swipeActionItem.d.ts | 58 + .../uview-plus/types/comps/swiper.d.ts | 142 ++ .../types/comps/swiperIndicator.d.ts | 37 + .../uview-plus/types/comps/switch.d.ts | 73 + .../uview-plus/types/comps/tabbar.d.ts | 54 + .../uview-plus/types/comps/tabbarItem.d.ts | 52 + uni_modules/uview-plus/types/comps/tabs.d.ts | 85 + uni_modules/uview-plus/types/comps/tag.d.ts | 93 + uni_modules/uview-plus/types/comps/text.d.ts | 110 ++ .../uview-plus/types/comps/textarea.d.ts | 158 ++ uni_modules/uview-plus/types/comps/toast.d.ts | 63 + .../uview-plus/types/comps/tooltip.d.ts | 71 + .../uview-plus/types/comps/transition.d.ts | 61 + .../uview-plus/types/comps/upload.d.ts | 204 +++ uni_modules/uview-plus/types/func.d.ts | 317 ++++ uni_modules/uview-plus/types/index.d.ts | 140 ++ uni_modules/uview-plus/types/package.json | 26 + vite.config.js | 8 + 562 files changed, 73370 insertions(+), 121 deletions(-) create mode 100644 pages/order/detail.vue create mode 100644 pages/order/handoverRecord.vue create mode 100644 pages/registered/accountInfo.vue create mode 100644 pages/registered/audit.vue create mode 100644 pages/registered/registerRiders.vue create mode 100644 pages/user/orderRecord.vue create mode 100644 pages/user/recordList.vue create mode 100644 uni_modules/uview-plus/LICENSE create mode 100644 uni_modules/uview-plus/README.md create mode 100644 uni_modules/uview-plus/changelog.md create mode 100644 uni_modules/uview-plus/components/u-action-sheet-data/u-action-sheet-data.vue create mode 100644 uni_modules/uview-plus/components/u-action-sheet/actionSheet.js create mode 100644 uni_modules/uview-plus/components/u-action-sheet/props.js create mode 100644 uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue create mode 100644 uni_modules/uview-plus/components/u-agreement/u-agreement.vue create mode 100644 uni_modules/uview-plus/components/u-album/album.js create mode 100644 uni_modules/uview-plus/components/u-album/props.js create mode 100644 uni_modules/uview-plus/components/u-album/u-album.vue create mode 100644 uni_modules/uview-plus/components/u-alert/alert.js create mode 100644 uni_modules/uview-plus/components/u-alert/props.js create mode 100644 uni_modules/uview-plus/components/u-alert/u-alert.vue create mode 100644 uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js create mode 100644 uni_modules/uview-plus/components/u-avatar-group/props.js create mode 100644 uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue create mode 100644 uni_modules/uview-plus/components/u-avatar/avatar.js create mode 100644 uni_modules/uview-plus/components/u-avatar/props.js create mode 100644 uni_modules/uview-plus/components/u-avatar/u-avatar.vue create mode 100644 uni_modules/uview-plus/components/u-back-top/backtop.js create mode 100644 uni_modules/uview-plus/components/u-back-top/props.js create mode 100644 uni_modules/uview-plus/components/u-back-top/u-back-top.vue create mode 100644 uni_modules/uview-plus/components/u-badge/badge.js create mode 100644 uni_modules/uview-plus/components/u-badge/props.js create mode 100644 uni_modules/uview-plus/components/u-badge/u-badge.vue create mode 100644 uni_modules/uview-plus/components/u-barcode/u-barcode.vue create mode 100644 uni_modules/uview-plus/components/u-box/props.js create mode 100644 uni_modules/uview-plus/components/u-box/u-box.vue create mode 100644 uni_modules/uview-plus/components/u-button/button.js create mode 100644 uni_modules/uview-plus/components/u-button/nvue.scss create mode 100644 uni_modules/uview-plus/components/u-button/props.js create mode 100644 uni_modules/uview-plus/components/u-button/u-button.vue create mode 100644 uni_modules/uview-plus/components/u-button/vue.scss create mode 100644 uni_modules/uview-plus/components/u-calendar/calendar.js create mode 100644 uni_modules/uview-plus/components/u-calendar/header.vue create mode 100644 uni_modules/uview-plus/components/u-calendar/month.vue create mode 100644 uni_modules/uview-plus/components/u-calendar/props.js create mode 100644 uni_modules/uview-plus/components/u-calendar/u-calendar.vue create mode 100644 uni_modules/uview-plus/components/u-calendar/util.js create mode 100644 uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js create mode 100644 uni_modules/uview-plus/components/u-car-keyboard/props.js create mode 100644 uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 uni_modules/uview-plus/components/u-card/card.js create mode 100644 uni_modules/uview-plus/components/u-card/props.js create mode 100644 uni_modules/uview-plus/components/u-card/u-card.vue create mode 100644 uni_modules/uview-plus/components/u-cascader/u-cascader.vue create mode 100644 uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue create mode 100644 uni_modules/uview-plus/components/u-cell-group/cellGroup.js create mode 100644 uni_modules/uview-plus/components/u-cell-group/props.js create mode 100644 uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue create mode 100644 uni_modules/uview-plus/components/u-cell/cell.js create mode 100644 uni_modules/uview-plus/components/u-cell/props.js create mode 100644 uni_modules/uview-plus/components/u-cell/u-cell.vue create mode 100644 uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js create mode 100644 uni_modules/uview-plus/components/u-checkbox-group/props.js create mode 100644 uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 uni_modules/uview-plus/components/u-checkbox/checkbox.js create mode 100644 uni_modules/uview-plus/components/u-checkbox/props.js create mode 100644 uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue create mode 100644 uni_modules/uview-plus/components/u-choose/u-choose.vue create mode 100644 uni_modules/uview-plus/components/u-circle-progress/circleProgress.js create mode 100644 uni_modules/uview-plus/components/u-circle-progress/props.js create mode 100644 uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue create mode 100644 uni_modules/uview-plus/components/u-city-locate/u-city-locate.vue create mode 100644 uni_modules/uview-plus/components/u-code-input/codeInput.js create mode 100644 uni_modules/uview-plus/components/u-code-input/props.js create mode 100644 uni_modules/uview-plus/components/u-code-input/u-code-input.vue create mode 100644 uni_modules/uview-plus/components/u-code/code.js create mode 100644 uni_modules/uview-plus/components/u-code/props.js create mode 100644 uni_modules/uview-plus/components/u-code/u-code.vue create mode 100644 uni_modules/uview-plus/components/u-col/col.js create mode 100644 uni_modules/uview-plus/components/u-col/props.js create mode 100644 uni_modules/uview-plus/components/u-col/u-col.vue create mode 100644 uni_modules/uview-plus/components/u-collapse-item/collapseItem.js create mode 100644 uni_modules/uview-plus/components/u-collapse-item/props.js create mode 100644 uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue create mode 100644 uni_modules/uview-plus/components/u-collapse/collapse.js create mode 100644 uni_modules/uview-plus/components/u-collapse/props.js create mode 100644 uni_modules/uview-plus/components/u-collapse/u-collapse.vue create mode 100644 uni_modules/uview-plus/components/u-color-picker/u-color-picker.vue create mode 100644 uni_modules/uview-plus/components/u-column-notice/columnNotice.js create mode 100644 uni_modules/uview-plus/components/u-column-notice/props.js create mode 100644 uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue create mode 100644 uni_modules/uview-plus/components/u-copy/u-copy.vue create mode 100644 uni_modules/uview-plus/components/u-count-down/countDown.js create mode 100644 uni_modules/uview-plus/components/u-count-down/props.js create mode 100644 uni_modules/uview-plus/components/u-count-down/u-count-down.vue create mode 100644 uni_modules/uview-plus/components/u-count-down/utils.js create mode 100644 uni_modules/uview-plus/components/u-count-to/countTo.js create mode 100644 uni_modules/uview-plus/components/u-count-to/props.js create mode 100644 uni_modules/uview-plus/components/u-count-to/u-count-to.vue create mode 100644 uni_modules/uview-plus/components/u-coupon/u-coupon.vue create mode 100644 uni_modules/uview-plus/components/u-cropper/u-cropper.vue create mode 100644 uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js create mode 100644 uni_modules/uview-plus/components/u-datetime-picker/dayjs.esm.min.js create mode 100644 uni_modules/uview-plus/components/u-datetime-picker/props.js create mode 100644 uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 uni_modules/uview-plus/components/u-divider/divider.js create mode 100644 uni_modules/uview-plus/components/u-divider/props.js create mode 100644 uni_modules/uview-plus/components/u-divider/u-divider.vue create mode 100644 uni_modules/uview-plus/components/u-dragsort/u-dragsort.vue create mode 100644 uni_modules/uview-plus/components/u-dropdown-item/props.js create mode 100644 uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 uni_modules/uview-plus/components/u-dropdown/props.js create mode 100644 uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue create mode 100644 uni_modules/uview-plus/components/u-empty/empty.js create mode 100644 uni_modules/uview-plus/components/u-empty/props.js create mode 100644 uni_modules/uview-plus/components/u-empty/u-empty.vue create mode 100644 uni_modules/uview-plus/components/u-float-button/u-float-button.vue create mode 100644 uni_modules/uview-plus/components/u-form-item/formItem.js create mode 100644 uni_modules/uview-plus/components/u-form-item/props.js create mode 100644 uni_modules/uview-plus/components/u-form-item/u-form-item.vue create mode 100644 uni_modules/uview-plus/components/u-form/form.js create mode 100644 uni_modules/uview-plus/components/u-form/props.js create mode 100644 uni_modules/uview-plus/components/u-form/u-form.vue create mode 100644 uni_modules/uview-plus/components/u-gap/gap.js create mode 100644 uni_modules/uview-plus/components/u-gap/props.js create mode 100644 uni_modules/uview-plus/components/u-gap/u-gap.vue create mode 100644 uni_modules/uview-plus/components/u-goods-sku/u-goods-sku.vue create mode 100644 uni_modules/uview-plus/components/u-grid-item/gridItem.js create mode 100644 uni_modules/uview-plus/components/u-grid-item/props.js create mode 100644 uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue create mode 100644 uni_modules/uview-plus/components/u-grid/grid.js create mode 100644 uni_modules/uview-plus/components/u-grid/props.js create mode 100644 uni_modules/uview-plus/components/u-grid/u-grid.vue create mode 100644 uni_modules/uview-plus/components/u-icon/icon.js create mode 100644 uni_modules/uview-plus/components/u-icon/icons.js create mode 100644 uni_modules/uview-plus/components/u-icon/props.js create mode 100644 uni_modules/uview-plus/components/u-icon/u-icon.vue create mode 100644 uni_modules/uview-plus/components/u-icon/util.js create mode 100644 uni_modules/uview-plus/components/u-image/image.js create mode 100644 uni_modules/uview-plus/components/u-image/props.js create mode 100644 uni_modules/uview-plus/components/u-image/u-image.vue create mode 100644 uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js create mode 100644 uni_modules/uview-plus/components/u-index-anchor/props.js create mode 100644 uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue create mode 100644 uni_modules/uview-plus/components/u-index-item/props.js create mode 100644 uni_modules/uview-plus/components/u-index-item/u-index-item.vue create mode 100644 uni_modules/uview-plus/components/u-index-list/indexList.js create mode 100644 uni_modules/uview-plus/components/u-index-list/props.js create mode 100644 uni_modules/uview-plus/components/u-index-list/u-index-list.vue create mode 100644 uni_modules/uview-plus/components/u-input/input.js create mode 100644 uni_modules/uview-plus/components/u-input/props.js create mode 100644 uni_modules/uview-plus/components/u-input/u-input.vue create mode 100644 uni_modules/uview-plus/components/u-keyboard/keyboard.js create mode 100644 uni_modules/uview-plus/components/u-keyboard/props.js create mode 100644 uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue create mode 100644 uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue create mode 100644 uni_modules/uview-plus/components/u-line-progress/lineProgress.js create mode 100644 uni_modules/uview-plus/components/u-line-progress/props.js create mode 100644 uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue create mode 100644 uni_modules/uview-plus/components/u-line/line.js create mode 100644 uni_modules/uview-plus/components/u-line/props.js create mode 100644 uni_modules/uview-plus/components/u-line/u-line.vue create mode 100644 uni_modules/uview-plus/components/u-link/link.js create mode 100644 uni_modules/uview-plus/components/u-link/props.js create mode 100644 uni_modules/uview-plus/components/u-link/u-link.vue create mode 100644 uni_modules/uview-plus/components/u-list-item/listItem.js create mode 100644 uni_modules/uview-plus/components/u-list-item/props.js create mode 100644 uni_modules/uview-plus/components/u-list-item/u-list-item.vue create mode 100644 uni_modules/uview-plus/components/u-list/list.js create mode 100644 uni_modules/uview-plus/components/u-list/props.js create mode 100644 uni_modules/uview-plus/components/u-list/u-list.vue create mode 100644 uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js create mode 100644 uni_modules/uview-plus/components/u-loading-icon/props.js create mode 100644 uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue create mode 100644 uni_modules/uview-plus/components/u-loading-page/loadingPage.js create mode 100644 uni_modules/uview-plus/components/u-loading-page/props.js create mode 100644 uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue create mode 100644 uni_modules/uview-plus/components/u-loadmore/loadmore.js create mode 100644 uni_modules/uview-plus/components/u-loadmore/props.js create mode 100644 uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue create mode 100644 uni_modules/uview-plus/components/u-markdown/marked.esm.js create mode 100644 uni_modules/uview-plus/components/u-markdown/u-markdown.vue create mode 100644 uni_modules/uview-plus/components/u-message-input/u-message-input.vue create mode 100644 uni_modules/uview-plus/components/u-modal/modal.js create mode 100644 uni_modules/uview-plus/components/u-modal/props.js create mode 100644 uni_modules/uview-plus/components/u-modal/u-modal.vue create mode 100644 uni_modules/uview-plus/components/u-navbar-mini/props.js create mode 100644 uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue create mode 100644 uni_modules/uview-plus/components/u-navbar/navbar.js create mode 100644 uni_modules/uview-plus/components/u-navbar/props.js create mode 100644 uni_modules/uview-plus/components/u-navbar/u-navbar.vue create mode 100644 uni_modules/uview-plus/components/u-no-network/noNetwork.js create mode 100644 uni_modules/uview-plus/components/u-no-network/props.js create mode 100644 uni_modules/uview-plus/components/u-no-network/u-no-network.vue create mode 100644 uni_modules/uview-plus/components/u-notice-bar/noticeBar.js create mode 100644 uni_modules/uview-plus/components/u-notice-bar/props.js create mode 100644 uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue create mode 100644 uni_modules/uview-plus/components/u-notify/notify.js create mode 100644 uni_modules/uview-plus/components/u-notify/props.js create mode 100644 uni_modules/uview-plus/components/u-notify/u-notify.vue create mode 100644 uni_modules/uview-plus/components/u-number-box/numberBox.js create mode 100644 uni_modules/uview-plus/components/u-number-box/props.js create mode 100644 uni_modules/uview-plus/components/u-number-box/u-number-box.vue create mode 100644 uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js create mode 100644 uni_modules/uview-plus/components/u-number-keyboard/props.js create mode 100644 uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 uni_modules/uview-plus/components/u-overlay/overlay.js create mode 100644 uni_modules/uview-plus/components/u-overlay/props.js create mode 100644 uni_modules/uview-plus/components/u-overlay/u-overlay.vue create mode 100644 uni_modules/uview-plus/components/u-pagination/u-pagination.vue create mode 100644 uni_modules/uview-plus/components/u-parse/node/node.vue create mode 100644 uni_modules/uview-plus/components/u-parse/parse.js create mode 100644 uni_modules/uview-plus/components/u-parse/parser.js create mode 100644 uni_modules/uview-plus/components/u-parse/props.js create mode 100644 uni_modules/uview-plus/components/u-parse/u-parse.vue create mode 100644 uni_modules/uview-plus/components/u-pdf-reader/props.js create mode 100644 uni_modules/uview-plus/components/u-pdf-reader/u-pdf-reader.vue create mode 100644 uni_modules/uview-plus/components/u-picker-column/props.js create mode 100644 uni_modules/uview-plus/components/u-picker-column/u-picker-column.vue create mode 100644 uni_modules/uview-plus/components/u-picker-data/u-picker-data.vue create mode 100644 uni_modules/uview-plus/components/u-picker/picker.js create mode 100644 uni_modules/uview-plus/components/u-picker/props.js create mode 100644 uni_modules/uview-plus/components/u-picker/u-picker.vue create mode 100644 uni_modules/uview-plus/components/u-popover/props.js create mode 100644 uni_modules/uview-plus/components/u-popover/u-popover.vue create mode 100644 uni_modules/uview-plus/components/u-popup/popup.js create mode 100644 uni_modules/uview-plus/components/u-popup/props.js create mode 100644 uni_modules/uview-plus/components/u-popup/u-popup.vue create mode 100644 uni_modules/uview-plus/components/u-poster/u-poster.vue create mode 100644 uni_modules/uview-plus/components/u-pull-refresh/u-pull-refresh.vue create mode 100644 uni_modules/uview-plus/components/u-qrcode/qrcode.js create mode 100644 uni_modules/uview-plus/components/u-qrcode/u-qrcode.vue create mode 100644 uni_modules/uview-plus/components/u-radio-group/props.js create mode 100644 uni_modules/uview-plus/components/u-radio-group/radioGroup.js create mode 100644 uni_modules/uview-plus/components/u-radio-group/u-radio-group.vue create mode 100644 uni_modules/uview-plus/components/u-radio/props.js create mode 100644 uni_modules/uview-plus/components/u-radio/radio.js create mode 100644 uni_modules/uview-plus/components/u-radio/u-radio.vue create mode 100644 uni_modules/uview-plus/components/u-rate/props.js create mode 100644 uni_modules/uview-plus/components/u-rate/rate.js create mode 100644 uni_modules/uview-plus/components/u-rate/u-rate.vue create mode 100644 uni_modules/uview-plus/components/u-read-more/props.js create mode 100644 uni_modules/uview-plus/components/u-read-more/readMore.js create mode 100644 uni_modules/uview-plus/components/u-read-more/u-read-more.vue create mode 100644 uni_modules/uview-plus/components/u-refresh-virtual-list/u-refresh-virtual-list.vue create mode 100644 uni_modules/uview-plus/components/u-row-notice/props.js create mode 100644 uni_modules/uview-plus/components/u-row-notice/rowNotice.js create mode 100644 uni_modules/uview-plus/components/u-row-notice/u-row-notice.vue create mode 100644 uni_modules/uview-plus/components/u-row/props.js create mode 100644 uni_modules/uview-plus/components/u-row/row.js create mode 100644 uni_modules/uview-plus/components/u-row/u-row.vue create mode 100644 uni_modules/uview-plus/components/u-safe-bottom/props.js create mode 100644 uni_modules/uview-plus/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 uni_modules/uview-plus/components/u-scroll-list/nvue.js create mode 100644 uni_modules/uview-plus/components/u-scroll-list/props.js create mode 100644 uni_modules/uview-plus/components/u-scroll-list/scrollList.js create mode 100644 uni_modules/uview-plus/components/u-scroll-list/scrollWxs.wxs create mode 100644 uni_modules/uview-plus/components/u-scroll-list/u-scroll-list.vue create mode 100644 uni_modules/uview-plus/components/u-search/props.js create mode 100644 uni_modules/uview-plus/components/u-search/search.js create mode 100644 uni_modules/uview-plus/components/u-search/u-search.vue create mode 100644 uni_modules/uview-plus/components/u-section/section.js create mode 100644 uni_modules/uview-plus/components/u-select/u-select.vue create mode 100644 uni_modules/uview-plus/components/u-short-video/u-short-video.vue create mode 100644 uni_modules/uview-plus/components/u-signature/u-signature.vue create mode 100644 uni_modules/uview-plus/components/u-skeleton/props.js create mode 100644 uni_modules/uview-plus/components/u-skeleton/skeleton.js create mode 100644 uni_modules/uview-plus/components/u-skeleton/u-skeleton.vue create mode 100644 uni_modules/uview-plus/components/u-slider/mpother.js create mode 100644 uni_modules/uview-plus/components/u-slider/mpwxs.js create mode 100644 uni_modules/uview-plus/components/u-slider/mpwxs.wxs create mode 100644 uni_modules/uview-plus/components/u-slider/nvue.js create mode 100644 uni_modules/uview-plus/components/u-slider/props.js create mode 100644 uni_modules/uview-plus/components/u-slider/slider.js create mode 100644 uni_modules/uview-plus/components/u-slider/u-slider.vue create mode 100644 uni_modules/uview-plus/components/u-status-bar/props.js create mode 100644 uni_modules/uview-plus/components/u-status-bar/statusBar.js create mode 100644 uni_modules/uview-plus/components/u-status-bar/u-status-bar.vue create mode 100644 uni_modules/uview-plus/components/u-steps-item/props.js create mode 100644 uni_modules/uview-plus/components/u-steps-item/stepsItem.js create mode 100644 uni_modules/uview-plus/components/u-steps-item/u-steps-item.vue create mode 100644 uni_modules/uview-plus/components/u-steps/props.js create mode 100644 uni_modules/uview-plus/components/u-steps/steps.js create mode 100644 uni_modules/uview-plus/components/u-steps/u-steps.vue create mode 100644 uni_modules/uview-plus/components/u-sticky/props.js create mode 100644 uni_modules/uview-plus/components/u-sticky/sticky.js create mode 100644 uni_modules/uview-plus/components/u-sticky/u-sticky.vue create mode 100644 uni_modules/uview-plus/components/u-subsection/props.js create mode 100644 uni_modules/uview-plus/components/u-subsection/subsection.js create mode 100644 uni_modules/uview-plus/components/u-subsection/u-subsection.vue create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/alipay.sjs create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/index - backup.wxs create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/index.wxs create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/nvue - backup.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/nvue.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/other.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/props.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/swipeActionItem.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 uni_modules/uview-plus/components/u-swipe-action-item/wxs.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action/props.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action/swipeAction.js create mode 100644 uni_modules/uview-plus/components/u-swipe-action/u-swipe-action.vue create mode 100644 uni_modules/uview-plus/components/u-swiper-indicator/props.js create mode 100644 uni_modules/uview-plus/components/u-swiper-indicator/swipterIndicator.js create mode 100644 uni_modules/uview-plus/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 uni_modules/uview-plus/components/u-swiper/props.js create mode 100644 uni_modules/uview-plus/components/u-swiper/swiper.js create mode 100644 uni_modules/uview-plus/components/u-swiper/u-swiper.vue create mode 100644 uni_modules/uview-plus/components/u-switch/props.js create mode 100644 uni_modules/uview-plus/components/u-switch/switch.js create mode 100644 uni_modules/uview-plus/components/u-switch/u-switch.vue create mode 100644 uni_modules/uview-plus/components/u-tabbar-item/props.js create mode 100644 uni_modules/uview-plus/components/u-tabbar-item/tabbarItem.js create mode 100644 uni_modules/uview-plus/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 uni_modules/uview-plus/components/u-tabbar/props.js create mode 100644 uni_modules/uview-plus/components/u-tabbar/tabbar.js create mode 100644 uni_modules/uview-plus/components/u-tabbar/u-tabbar.vue create mode 100644 uni_modules/uview-plus/components/u-table/props.js create mode 100644 uni_modules/uview-plus/components/u-table/u-table.vue create mode 100644 uni_modules/uview-plus/components/u-table2/tableRow.vue create mode 100644 uni_modules/uview-plus/components/u-table2/u-table2.vue create mode 100644 uni_modules/uview-plus/components/u-tabs-item/props.js create mode 100644 uni_modules/uview-plus/components/u-tabs-item/u-tabs-item.vue create mode 100644 uni_modules/uview-plus/components/u-tabs/props.js create mode 100644 uni_modules/uview-plus/components/u-tabs/tabs.js create mode 100644 uni_modules/uview-plus/components/u-tabs/u-tabs.vue create mode 100644 uni_modules/uview-plus/components/u-tag/props.js create mode 100644 uni_modules/uview-plus/components/u-tag/tag.js create mode 100644 uni_modules/uview-plus/components/u-tag/u-tag.vue create mode 100644 uni_modules/uview-plus/components/u-td/props.js create mode 100644 uni_modules/uview-plus/components/u-td/u-td.vue create mode 100644 uni_modules/uview-plus/components/u-text/props.js create mode 100644 uni_modules/uview-plus/components/u-text/text.js create mode 100644 uni_modules/uview-plus/components/u-text/u-text.vue create mode 100644 uni_modules/uview-plus/components/u-text/value.js create mode 100644 uni_modules/uview-plus/components/u-textarea/props.js create mode 100644 uni_modules/uview-plus/components/u-textarea/textarea.js create mode 100644 uni_modules/uview-plus/components/u-textarea/u-textarea.vue create mode 100644 uni_modules/uview-plus/components/u-th/props.js create mode 100644 uni_modules/uview-plus/components/u-th/u-th.vue create mode 100644 uni_modules/uview-plus/components/u-title/u-title.vue create mode 100644 uni_modules/uview-plus/components/u-toast/toast.js create mode 100644 uni_modules/uview-plus/components/u-toast/u-toast.vue create mode 100644 uni_modules/uview-plus/components/u-toolbar/props.js create mode 100644 uni_modules/uview-plus/components/u-toolbar/toolbar.js create mode 100644 uni_modules/uview-plus/components/u-toolbar/u-toolbar.vue create mode 100644 uni_modules/uview-plus/components/u-tooltip/props.js create mode 100644 uni_modules/uview-plus/components/u-tooltip/tooltip.js create mode 100644 uni_modules/uview-plus/components/u-tooltip/u-tooltip.vue create mode 100644 uni_modules/uview-plus/components/u-tr/props.js create mode 100644 uni_modules/uview-plus/components/u-tr/u-tr.vue create mode 100644 uni_modules/uview-plus/components/u-transition/nvue-ani-map.js create mode 100644 uni_modules/uview-plus/components/u-transition/props.js create mode 100644 uni_modules/uview-plus/components/u-transition/transition.js create mode 100644 uni_modules/uview-plus/components/u-transition/transitionMixin.js create mode 100644 uni_modules/uview-plus/components/u-transition/u-transition.vue create mode 100644 uni_modules/uview-plus/components/u-transition/vue.ani-style.scss create mode 100644 uni_modules/uview-plus/components/u-tree/tree-node.vue create mode 100644 uni_modules/uview-plus/components/u-tree/u-tree.vue create mode 100644 uni_modules/uview-plus/components/u-upload/mixin.js create mode 100644 uni_modules/uview-plus/components/u-upload/props.js create mode 100644 uni_modules/uview-plus/components/u-upload/u-upload.vue create mode 100644 uni_modules/uview-plus/components/u-upload/upload.js create mode 100644 uni_modules/uview-plus/components/u-upload/utils.js create mode 100644 uni_modules/uview-plus/components/u-view/u-view.vue create mode 100644 uni_modules/uview-plus/components/u-virtual-list/u-virtual-list.vue create mode 100644 uni_modules/uview-plus/components/u-waterfall/u-waterfall.vue create mode 100644 uni_modules/uview-plus/components/uview-plus/uview-plus.vue create mode 100644 uni_modules/uview-plus/index.js create mode 100644 uni_modules/uview-plus/index.scss create mode 100644 uni_modules/uview-plus/libs/config/color.js create mode 100644 uni_modules/uview-plus/libs/config/config.js create mode 100644 uni_modules/uview-plus/libs/config/props.js create mode 100644 uni_modules/uview-plus/libs/config/zIndex.js create mode 100644 uni_modules/uview-plus/libs/css/color.scss create mode 100644 uni_modules/uview-plus/libs/css/common.scss create mode 100644 uni_modules/uview-plus/libs/css/components.scss create mode 100644 uni_modules/uview-plus/libs/css/flex.scss create mode 100644 uni_modules/uview-plus/libs/css/h5.scss create mode 100644 uni_modules/uview-plus/libs/css/mixin.scss create mode 100644 uni_modules/uview-plus/libs/css/mp.scss create mode 100644 uni_modules/uview-plus/libs/css/nvue.scss create mode 100644 uni_modules/uview-plus/libs/css/vue.scss create mode 100644 uni_modules/uview-plus/libs/function/calc.js create mode 100644 uni_modules/uview-plus/libs/function/colorGradient.js create mode 100644 uni_modules/uview-plus/libs/function/debounce.js create mode 100644 uni_modules/uview-plus/libs/function/digit.js create mode 100644 uni_modules/uview-plus/libs/function/http.js create mode 100644 uni_modules/uview-plus/libs/function/index.js create mode 100644 uni_modules/uview-plus/libs/function/platform.js create mode 100644 uni_modules/uview-plus/libs/function/test.js create mode 100644 uni_modules/uview-plus/libs/function/throttle.js create mode 100644 uni_modules/uview-plus/libs/i18n/index.js create mode 100644 uni_modules/uview-plus/libs/i18n/locales/de.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/en.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/es.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/fr.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/ja.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/ko.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/ru.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/th.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/zh-Hans.json create mode 100644 uni_modules/uview-plus/libs/i18n/locales/zh-Hant.json create mode 100644 uni_modules/uview-plus/libs/luch-request/adapters/index.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/InterceptorManager.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/Request.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/buildFullPath.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/defaults.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/dispatchRequest.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/mergeConfig.js create mode 100644 uni_modules/uview-plus/libs/luch-request/core/settle.js create mode 100644 uni_modules/uview-plus/libs/luch-request/helpers/buildURL.js create mode 100644 uni_modules/uview-plus/libs/luch-request/helpers/combineURLs.js create mode 100644 uni_modules/uview-plus/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 uni_modules/uview-plus/libs/luch-request/index.d.ts create mode 100644 uni_modules/uview-plus/libs/luch-request/index.js create mode 100644 uni_modules/uview-plus/libs/luch-request/utils.js create mode 100644 uni_modules/uview-plus/libs/luch-request/utils/clone.js create mode 100644 uni_modules/uview-plus/libs/mixin/button.js create mode 100644 uni_modules/uview-plus/libs/mixin/mixin.js create mode 100644 uni_modules/uview-plus/libs/mixin/mpMixin.js create mode 100644 uni_modules/uview-plus/libs/mixin/mpShare.js create mode 100644 uni_modules/uview-plus/libs/mixin/openType.js create mode 100644 uni_modules/uview-plus/libs/mixin/style.js create mode 100644 uni_modules/uview-plus/libs/mixin/touch.js create mode 100644 uni_modules/uview-plus/libs/util/async-validator.js create mode 100644 uni_modules/uview-plus/libs/util/calendar.js create mode 100644 uni_modules/uview-plus/libs/util/emitter.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/bridge/bridge-weex.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-2d/FillStyleLinearGradient.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-2d/FillStylePattern.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-2d/FillStyleRadialGradient.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-2d/RenderingContext.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/ActiveInfo.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Buffer.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Framebuffer.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/GLenum.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/GLmethod.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/GLtype.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Program.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Renderbuffer.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/RenderingContext.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Shader.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/ShaderPrecisionFormat.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/Texture.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/UniformLocation.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/context-webgl/classUtils.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/env/canvas.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/env/image.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/env/tool.js create mode 100644 uni_modules/uview-plus/libs/util/gcanvas/index.js create mode 100644 uni_modules/uview-plus/libs/util/route.js create mode 100644 uni_modules/uview-plus/libs/vue.js create mode 100644 uni_modules/uview-plus/package.json create mode 100644 uni_modules/uview-plus/theme.scss create mode 100644 uni_modules/uview-plus/types/comps.d.ts create mode 100644 uni_modules/uview-plus/types/comps/_common.d.ts create mode 100644 uni_modules/uview-plus/types/comps/actionSheet.d.ts create mode 100644 uni_modules/uview-plus/types/comps/album.d.ts create mode 100644 uni_modules/uview-plus/types/comps/alert.d.ts create mode 100644 uni_modules/uview-plus/types/comps/avatar.d.ts create mode 100644 uni_modules/uview-plus/types/comps/avatarGroup.d.ts create mode 100644 uni_modules/uview-plus/types/comps/backTop.d.ts create mode 100644 uni_modules/uview-plus/types/comps/badge.d.ts create mode 100644 uni_modules/uview-plus/types/comps/button.d.ts create mode 100644 uni_modules/uview-plus/types/comps/calendar.d.ts create mode 100644 uni_modules/uview-plus/types/comps/cell.d.ts create mode 100644 uni_modules/uview-plus/types/comps/cellGroup.d.ts create mode 100644 uni_modules/uview-plus/types/comps/checkbox.d.ts create mode 100644 uni_modules/uview-plus/types/comps/checkboxGroup.d.ts create mode 100644 uni_modules/uview-plus/types/comps/code.d.ts create mode 100644 uni_modules/uview-plus/types/comps/codeInput.d.ts create mode 100644 uni_modules/uview-plus/types/comps/col.d.ts create mode 100644 uni_modules/uview-plus/types/comps/collapse.d.ts create mode 100644 uni_modules/uview-plus/types/comps/collapseItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/countDown.d.ts create mode 100644 uni_modules/uview-plus/types/comps/countTo.d.ts create mode 100644 uni_modules/uview-plus/types/comps/datetimePicker.d.ts create mode 100644 uni_modules/uview-plus/types/comps/divider.d.ts create mode 100644 uni_modules/uview-plus/types/comps/empty.d.ts create mode 100644 uni_modules/uview-plus/types/comps/form.d.ts create mode 100644 uni_modules/uview-plus/types/comps/formItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/gap.d.ts create mode 100644 uni_modules/uview-plus/types/comps/grid.d.ts create mode 100644 uni_modules/uview-plus/types/comps/gridItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/icon.d.ts create mode 100644 uni_modules/uview-plus/types/comps/image.d.ts create mode 100644 uni_modules/uview-plus/types/comps/indexAnchor.d.ts create mode 100644 uni_modules/uview-plus/types/comps/indexItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/indexList.d.ts create mode 100644 uni_modules/uview-plus/types/comps/input.d.ts create mode 100644 uni_modules/uview-plus/types/comps/keyboard.d.ts create mode 100644 uni_modules/uview-plus/types/comps/line.d.ts create mode 100644 uni_modules/uview-plus/types/comps/lineProgress.d.ts create mode 100644 uni_modules/uview-plus/types/comps/link.d.ts create mode 100644 uni_modules/uview-plus/types/comps/list.d.ts create mode 100644 uni_modules/uview-plus/types/comps/listItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/loadMore.d.ts create mode 100644 uni_modules/uview-plus/types/comps/loadingIcon.d.ts create mode 100644 uni_modules/uview-plus/types/comps/loadingPage.d.ts create mode 100644 uni_modules/uview-plus/types/comps/modal.d.ts create mode 100644 uni_modules/uview-plus/types/comps/navbar.d.ts create mode 100644 uni_modules/uview-plus/types/comps/noNetwork.d.ts create mode 100644 uni_modules/uview-plus/types/comps/noticeBar.d.ts create mode 100644 uni_modules/uview-plus/types/comps/notify.d.ts create mode 100644 uni_modules/uview-plus/types/comps/numberBox.d.ts create mode 100644 uni_modules/uview-plus/types/comps/overlay.d.ts create mode 100644 uni_modules/uview-plus/types/comps/parse.d.ts create mode 100644 uni_modules/uview-plus/types/comps/picker.d.ts create mode 100644 uni_modules/uview-plus/types/comps/popup.d.ts create mode 100644 uni_modules/uview-plus/types/comps/qrcode.d.ts create mode 100644 uni_modules/uview-plus/types/comps/radio.d.ts create mode 100644 uni_modules/uview-plus/types/comps/radioGroup.d.ts create mode 100644 uni_modules/uview-plus/types/comps/rate.d.ts create mode 100644 uni_modules/uview-plus/types/comps/readMore.d.ts create mode 100644 uni_modules/uview-plus/types/comps/row.d.ts create mode 100644 uni_modules/uview-plus/types/comps/safeBottom.d.ts create mode 100644 uni_modules/uview-plus/types/comps/scrollList.d.ts create mode 100644 uni_modules/uview-plus/types/comps/search.d.ts create mode 100644 uni_modules/uview-plus/types/comps/skeleton.d.ts create mode 100644 uni_modules/uview-plus/types/comps/slider.d.ts create mode 100644 uni_modules/uview-plus/types/comps/statusBar.d.ts create mode 100644 uni_modules/uview-plus/types/comps/steps.d.ts create mode 100644 uni_modules/uview-plus/types/comps/stepsItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/sticky.d.ts create mode 100644 uni_modules/uview-plus/types/comps/subsection.d.ts create mode 100644 uni_modules/uview-plus/types/comps/swipeAction.d.ts create mode 100644 uni_modules/uview-plus/types/comps/swipeActionItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/swiper.d.ts create mode 100644 uni_modules/uview-plus/types/comps/swiperIndicator.d.ts create mode 100644 uni_modules/uview-plus/types/comps/switch.d.ts create mode 100644 uni_modules/uview-plus/types/comps/tabbar.d.ts create mode 100644 uni_modules/uview-plus/types/comps/tabbarItem.d.ts create mode 100644 uni_modules/uview-plus/types/comps/tabs.d.ts create mode 100644 uni_modules/uview-plus/types/comps/tag.d.ts create mode 100644 uni_modules/uview-plus/types/comps/text.d.ts create mode 100644 uni_modules/uview-plus/types/comps/textarea.d.ts create mode 100644 uni_modules/uview-plus/types/comps/toast.d.ts create mode 100644 uni_modules/uview-plus/types/comps/tooltip.d.ts create mode 100644 uni_modules/uview-plus/types/comps/transition.d.ts create mode 100644 uni_modules/uview-plus/types/comps/upload.d.ts create mode 100644 uni_modules/uview-plus/types/func.d.ts create mode 100644 uni_modules/uview-plus/types/index.d.ts create mode 100644 uni_modules/uview-plus/types/package.json diff --git a/.env b/.env index 9f41ca3..63909f7 100644 --- a/.env +++ b/.env @@ -6,6 +6,7 @@ SHOPRO_BASE_URL = http://api.jnmall.zq-hightech.com # 后端接口 - 测试环境(通过 process.env.NODE_ENV = development) SHOPRO_DEV_BASE_URL = https://icepacker.52cfzy.com +# SHOPRO_DEV_BASE_URL = http://delivery-test.huichibao.com # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务 SHOPRO_UPLOAD_TYPE=server diff --git a/App.vue b/App.vue index aaeef3f..f922ac6 100644 --- a/App.vue +++ b/App.vue @@ -35,5 +35,6 @@ diff --git a/main.js b/main.js index 2680ac6..682f4ba 100644 --- a/main.js +++ b/main.js @@ -1,12 +1,12 @@ import App from './App'; import { createSSRApp } from 'vue'; import { setupPinia } from './sheep/store'; - +import uviewPlus from '@/uni_modules/uview-plus' export function createApp() { const app = createSSRApp(App); - + app.use(uviewPlus); setupPinia(app); return { diff --git a/manifest.json b/manifest.json index 36086b0..5395225 100644 --- a/manifest.json +++ b/manifest.json @@ -26,7 +26,11 @@ "Payment": {}, "Share": {}, "VideoPlayer": {}, - "OAuth": {} + "OAuth": {}, + "Maps": {}, + "Barcode": {}, + "Camera": {}, + "Geolocation": {} }, "distribute": { "android": { @@ -122,6 +126,21 @@ "appid": "wxae7a0c156da9383b", "UniversalLinks": "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/" } + }, + "maps": { + "amap": { + "name": "amapAvsftDYzi", + "appkey_ios": "2ead091d2fc2cdfec417d49aecf00c8b", + "appkey_android": "5a660b94974d7f3c62b257e8368893fa" + } + }, + "geolocation": { + "system": { + "__platform__": [ + "ios", + "android" + ] + } } }, "orientation": [ @@ -189,7 +208,8 @@ "urlCheck": false, "minified": true, "postcss": false, - "es6": false + "es6": false, + "mergeVirtualHostAttributes": true }, "optimization": { "subPackages": true @@ -209,7 +229,8 @@ "usingComponents": true }, "mp-toutiao": { - "usingComponents": true + "usingComponents": true, + "mergeVirtualHostAttributes": true }, "mp-jd": { "usingComponents": true @@ -226,7 +247,7 @@ "async": { "timeout": 20000 }, - "title": "云南江楠商城", + "title": "惠吃宝骑手端", "optimization": { "treeShaking": { "enable": true diff --git a/package.json b/package.json index 647aeea..2e79163 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,8 @@ } }, "dependencies": { - "dayjs": "^1.11.7", + "clipboard": "^2.0.11", + "dayjs": "^1.11.19", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "luch-request": "^3.0.8", diff --git a/pages.json b/pages.json index 45c7d19..8d46285 100644 --- a/pages.json +++ b/pages.json @@ -3,7 +3,10 @@ "autoscan": true, "custom": { "^s-(.*)": "@/sheep/components/s-$1/s-$1.vue", - "^su-(.*)": "@/sheep/ui/su-$1/su-$1.vue" + "^su-(.*)": "@/sheep/ui/su-$1/su-$1.vue", + "^u--(.*)": "@/uni_modules/uview-plus/components/u-$1/u-$1.vue", + "^up-(.*)": "@/uni_modules/uview-plus/components/u-$1/u-$1.vue", + "^u-([^-].*)": "@/uni_modules/uview-plus/components/u-$1/u-$1.vue" } }, "pages": [{ @@ -17,7 +20,7 @@ "auth": false, "sync": true, "title": "首页", - "group": "商城" + "group": "配送端" } }, { @@ -29,7 +32,7 @@ "meta": { "sync": true, "title": "个人中心", - "group": "商城" + "group": "配送端" } }, { @@ -54,6 +57,18 @@ "title": "用户信息", "group": "用户中心" } + }, + { + "path": "orderRecord", + "style": { + "navigationBarTitleText": "接单记录" + } + }, + { + "path": "recordList", + "style": { + "navigationBarTitleText": "订单记录" + } } ] }, @@ -106,6 +121,51 @@ } } ] + }, + { + "root": "pages/registered", + "pages": [ + { + "path": "registerRiders", + "style": { + "navigationBarTitleText": "注册骑手" + }, + "meta": { + "sync": true, + "title": "注册骑手", + "group": "注册" + } + }, + { + "path": "accountInfo", + "style": { + "navigationBarTitleText": "工资结算账户信息" + } + }, + { + "path": "audit", + "style": { + "navigationBarTitleText": "审核中" + } + } + ] + }, + { + "root": "pages/order", + "pages": [ + { + "path": "detail", + "style": { + "navigationBarTitleText": "订单详情" + } + }, + { + "path": "handoverRecord", + "style": { + "navigationBarTitleText": "交接记录" + } + } + ] } ], "globalStyle": { diff --git a/pages/index/index.vue b/pages/index/index.vue index 7de0ca8..086ca7b 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -28,39 +28,41 @@ - - - {{ order.type === 'pickup' ? '取' : '送' }} - - {{ order.shopName }} - #{{ order.id }} - - {{ order.statusText }} - - - - - - - - {{ order.pickupAddress }} - 商家已出餐 · {{ order.pickupNote || '' }} + + + + {{ order.type === 'pickup' ? '取' : '送' }} + + {{ order.shopName }} + #{{ order.id }} - 导航 + {{ order.statusText }} - - - - {{ order.deliveryAddress }} - 收货人:{{ order.receiverName }} {{ order.receiverPhone ? ('尾号' + (order.receiverPhone + '').slice(-4)) : ''}} + + + + + + + {{ order.pickupAddress }} + 商家已出餐 · {{ order.pickupNote || '' }} + + 导航 + + + + + {{ order.deliveryAddress }} + 收货人:{{ order.receiverName }} {{ order.receiverPhone ? ('尾号' + (order.receiverPhone + '').slice(-4)) : ''}} + + 导航 - 导航 - - - - - 顾客:{{ order.note }} + + + + 顾客:{{ order.note }} + @@ -86,6 +88,7 @@ \ No newline at end of file diff --git a/pages/order/handoverRecord.vue b/pages/order/handoverRecord.vue new file mode 100644 index 0000000..161ffd1 --- /dev/null +++ b/pages/order/handoverRecord.vue @@ -0,0 +1,155 @@ + + + + + \ No newline at end of file diff --git a/pages/registered/accountInfo.vue b/pages/registered/accountInfo.vue new file mode 100644 index 0000000..c0e1af9 --- /dev/null +++ b/pages/registered/accountInfo.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/pages/registered/audit.vue b/pages/registered/audit.vue new file mode 100644 index 0000000..3555b6e --- /dev/null +++ b/pages/registered/audit.vue @@ -0,0 +1,69 @@ + + + + + \ No newline at end of file diff --git a/pages/registered/registerRiders.vue b/pages/registered/registerRiders.vue new file mode 100644 index 0000000..75a7c66 --- /dev/null +++ b/pages/registered/registerRiders.vue @@ -0,0 +1,691 @@ + + + + + \ No newline at end of file diff --git a/pages/user/orderRecord.vue b/pages/user/orderRecord.vue new file mode 100644 index 0000000..71cc612 --- /dev/null +++ b/pages/user/orderRecord.vue @@ -0,0 +1,214 @@ + + + + + \ No newline at end of file diff --git a/pages/user/recordList.vue b/pages/user/recordList.vue new file mode 100644 index 0000000..2713049 --- /dev/null +++ b/pages/user/recordList.vue @@ -0,0 +1,200 @@ + + + + + \ No newline at end of file diff --git a/sheep/api/member/auth.js b/sheep/api/member/auth.js index a1c0660..5ff5f04 100644 --- a/sheep/api/member/auth.js +++ b/sheep/api/member/auth.js @@ -14,6 +14,19 @@ const AuthUtil = { }, }); }, + // 账号登录 + loginAccount: (data) => { + return request({ + url: '/auth/login', + method: 'POST', + data, + custom: { + showSuccess: true, + loadingMsg: '登录中', + successMsg: '登录成功', + }, + }); + }, // 使用手机 + 验证码登录 smsLogin: (data) => { return request({ diff --git a/sheep/components/s-auth-modal/components/account-login.vue b/sheep/components/s-auth-modal/components/account-login.vue index ba2c7ea..7b5e831 100644 --- a/sheep/components/s-auth-modal/components/account-login.vue +++ b/sheep/components/s-auth-modal/components/account-login.vue @@ -4,12 +4,8 @@ - 登录账号 - 如无账号请联系平台开通 @@ -24,11 +20,11 @@ > - + @@ -45,6 +41,14 @@ + + + 验证码登录 + + + 骑手注册 + + @@ -69,7 +73,8 @@ // 数据 const state = reactive({ model: { - mobile: '', // 账号 + username: '', // 账号 + mobile: '', password: '', // 密码 }, rules: { @@ -97,10 +102,18 @@ // 提交数据 const { code, data } = await AuthUtil.login(state.model); + // const { code, data } = await AuthUtil.loginAccount(state.model); if (code === 0) { closeAuthModal(); } } + + const toRegister = () => { + uni.navigateTo({ + url: '/pages/registered/registerRiders' + }) + } + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js b/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js new file mode 100644 index 0000000..6cb1e48 --- /dev/null +++ b/uni_modules/uview-plus/components/u-action-sheet/actionSheet.js @@ -0,0 +1,26 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-08-16 10:52:35 + * @FilePath : /uview-plus/libs/config/props/actionSheet.js + */ +export default { + // action-sheet组件 + actionSheet: { + show: false, + title: '', + description: '', + actions: [], + index: '', + cancelText: '', + closeOnClickAction: true, + safeAreaInsetBottom: true, + openType: '', + closeOnClickOverlay: true, + round: 0, + wrapMaxHeight: '600px' + } +} diff --git a/uni_modules/uview-plus/components/u-action-sheet/props.js b/uni_modules/uview-plus/components/u-action-sheet/props.js new file mode 100644 index 0000000..408f32f --- /dev/null +++ b/uni_modules/uview-plus/components/u-action-sheet/props.js @@ -0,0 +1,70 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @LastAuthor : jry + * @lastTime : 2025-08-16 10:52:35 + * @FilePath : /uview-plus/libs/config/props/props.js + */ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: () => defProps.actionSheet.show + }, + // 标题 + title: { + type: String, + default: () => defProps.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: () => defProps.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: () => defProps.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: () => defProps.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: () => defProps.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: () => defProps.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: () => defProps.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: () => defProps.actionSheet.round + }, + // 选项区域最大高度 + wrapMaxHeight: { + type: [String], + default: () => defProps.actionSheet.wrapMaxHeight + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..70862a1 --- /dev/null +++ b/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,302 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-agreement/u-agreement.vue b/uni_modules/uview-plus/components/u-agreement/u-agreement.vue new file mode 100644 index 0000000..438c467 --- /dev/null +++ b/uni_modules/uview-plus/components/u-agreement/u-agreement.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-album/album.js b/uni_modules/uview-plus/components/u-album/album.js new file mode 100644 index 0000000..e7568bf --- /dev/null +++ b/uni_modules/uview-plus/components/u-album/album.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-08-16 16:32:24 + * @FilePath : /uview-plus/libs/config/props/album.js + */ +export default { + // album 组件 + album: { + urls: [], + keyName: '', + singleSize: 180, + multipleSize: 70, + space: 6, + singleMode: 'scaleToFill', + multipleMode: 'aspectFill', + maxCount: 9, + previewFullImage: true, + rowCount: 3, + showMore: true, + autoWrap: false, + unit: 'px', + stop: true, + } +} diff --git a/uni_modules/uview-plus/components/u-album/props.js b/uni_modules/uview-plus/components/u-album/props.js new file mode 100644 index 0000000..a8d5474 --- /dev/null +++ b/uni_modules/uview-plus/components/u-album/props.js @@ -0,0 +1,95 @@ +/* + * @Author : jry + * @Description : + * @version : 3.0 + * @LastAuthor : jry + * @lastTime : 2025-08-16 16:35:24 + * @FilePath : /uview-plus/components/u-album/props.js + */ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: () => defProps.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: () => defProps.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: () => defProps.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: () => defProps.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: () => defProps.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: () => defProps.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: () => defProps.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: () => defProps.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: () => defProps.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: () => defProps.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: () => defProps.album.showMore + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: () => defProps.image.radius + }, + // 自适应换行 + autoWrap: { + type: Boolean, + default: () => defProps.album.autoWrap + }, + // 单位 + unit: { + type: [String], + default: () => defProps.album.unit + }, + // 阻止点击冒泡 + stop: { + type: Boolean, + default: () => defProps.album.stop + } + } +}) diff --git a/uni_modules/uview-plus/components/u-album/u-album.vue b/uni_modules/uview-plus/components/u-album/u-album.vue new file mode 100644 index 0000000..fb6b58d --- /dev/null +++ b/uni_modules/uview-plus/components/u-album/u-album.vue @@ -0,0 +1,344 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-alert/alert.js b/uni_modules/uview-plus/components/u-alert/alert.js new file mode 100644 index 0000000..fb543c0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-alert/alert.js @@ -0,0 +1,26 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-08-17 17:23:53 + * @FilePath : /uview-plus/libs/config/props/alert.js + */ +export default { + // alert警告组件 + alert: { + title: '', + type: 'warning', + description: '', + closable: false, + showIcon: false, + effect: 'light', + center: false, + fontSize: 14, + transitionMode: 'fade', + duration: 0, + icon: '', + value: true + } +} diff --git a/uni_modules/uview-plus/components/u-alert/props.js b/uni_modules/uview-plus/components/u-alert/props.js new file mode 100644 index 0000000..88fb972 --- /dev/null +++ b/uni_modules/uview-plus/components/u-alert/props.js @@ -0,0 +1,75 @@ +/* + * @Author : jry + * @Description : + * @version : 3.0 + * @LastAuthor : jry + * @lastTime : 2025-08-17 17:23:53 + * @FilePath : /uview-plus/libs/config/props/props.js + */ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 显示文字 + title: { + type: String, + default: () => defProps.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: () => defProps.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: () => defProps.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: () => defProps.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: () => defProps.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: () => defProps.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: () => defProps.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.alert.fontSize + }, + // 动画类型 + transitionMode: { + type: [String], + default: () => defProps.alert.transitionMode + }, + // 自动定时关闭毫秒 + duration: { + type: [Number], + default: () => defProps.alert.duration + }, + // 自定义图标 + icon: { + type: [String], + default: () => defProps.alert.icon + }, + // 是否显示 + modelValue: { + type: [Boolean], + default: () => defProps.alert.value + } + } +}) diff --git a/uni_modules/uview-plus/components/u-alert/u-alert.vue b/uni_modules/uview-plus/components/u-alert/u-alert.vue new file mode 100644 index 0000000..8b09720 --- /dev/null +++ b/uni_modules/uview-plus/components/u-alert/u-alert.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js b/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js new file mode 100644 index 0000000..6e81ba3 --- /dev/null +++ b/uni_modules/uview-plus/components/u-avatar-group/avatarGroup.js @@ -0,0 +1,23 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/avatarGroup.js + */ +export default { + // avatarGroup 组件 + avatarGroup: { + urls: [], + maxCount: 5, + shape: 'circle', + mode: 'scaleToFill', + showMore: true, + size: 40, + keyName: '', + gap: 0.5, + extraValue: 0 + } +} diff --git a/uni_modules/uview-plus/components/u-avatar-group/props.js b/uni_modules/uview-plus/components/u-avatar-group/props.js new file mode 100644 index 0000000..96ed871 --- /dev/null +++ b/uni_modules/uview-plus/components/u-avatar-group/props.js @@ -0,0 +1,54 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 头像图片组 + urls: { + type: Array, + default: () => defProps.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: () => defProps.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: () => defProps.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: () => defProps.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: () => defProps.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: () => defProps.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: () => defProps.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: () => defProps.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: () => defProps.avatarGroup.extraValue + } + } +}) diff --git a/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..6635014 --- /dev/null +++ b/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-avatar/avatar.js b/uni_modules/uview-plus/components/u-avatar/avatar.js new file mode 100644 index 0000000..b469247 --- /dev/null +++ b/uni_modules/uview-plus/components/u-avatar/avatar.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/avatar.js + */ +export default { + // avatar 组件 + avatar: { + src: '', + shape: 'circle', + size: 40, + mode: 'scaleToFill', + text: '', + bgColor: '#c0c4cc', + color: '#ffffff', + fontSize: 18, + icon: '', + mpAvatar: false, + randomBgColor: false, + defaultUrl: '', + colorIndex: '', + name: '' + } +} diff --git a/uni_modules/uview-plus/components/u-avatar/props.js b/uni_modules/uview-plus/components/u-avatar/props.js new file mode 100644 index 0000000..8fa15ac --- /dev/null +++ b/uni_modules/uview-plus/components/u-avatar/props.js @@ -0,0 +1,81 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +import test from '../../libs/function/test'; +export const props = defineMixin({ + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: () => defProps.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: () => defProps.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: () => defProps.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: () => defProps.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: () => defProps.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: () => defProps.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: () => defProps.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: () => defProps.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: () => defProps.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: () => defProps.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: () => defProps.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return test.range(n, [0, 19]) || n === '' + }, + default: () => defProps.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: () => defProps.avatar.name + } + } +}) diff --git a/uni_modules/uview-plus/components/u-avatar/u-avatar.vue b/uni_modules/uview-plus/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..864323e --- /dev/null +++ b/uni_modules/uview-plus/components/u-avatar/u-avatar.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-back-top/backtop.js b/uni_modules/uview-plus/components/u-back-top/backtop.js new file mode 100644 index 0000000..11918bc --- /dev/null +++ b/uni_modules/uview-plus/components/u-back-top/backtop.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/backtop.js + */ +export default { + // backtop组件 + backtop: { + mode: 'circle', + icon: 'arrow-upward', + text: '', + duration: 100, + scrollTop: 0, + top: 400, + bottom: 100, + right: 20, + zIndex: 9, + iconStyle: { + color: '#909399', + fontSize: '19px' + } + } +} diff --git a/uni_modules/uview-plus/components/u-back-top/props.js b/uni_modules/uview-plus/components/u-back-top/props.js new file mode 100644 index 0000000..b714641 --- /dev/null +++ b/uni_modules/uview-plus/components/u-back-top/props.js @@ -0,0 +1,56 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: () => defProps.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: () => defProps.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: () => defProps.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: () => defProps.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: () => defProps.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: () => defProps.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: () => defProps.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: () => defProps.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: () => defProps.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: () => defProps.backtop.iconStyle + } + } +}) diff --git a/uni_modules/uview-plus/components/u-back-top/u-back-top.vue b/uni_modules/uview-plus/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..d9d8b52 --- /dev/null +++ b/uni_modules/uview-plus/components/u-back-top/u-back-top.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-badge/badge.js b/uni_modules/uview-plus/components/u-badge/badge.js new file mode 100644 index 0000000..c5f37ee --- /dev/null +++ b/uni_modules/uview-plus/components/u-badge/badge.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/badge.js + */ +export default { + // 徽标数组件 + badge: { + isDot: false, + value: '', + show: true, + max: 999, + type: 'error', + showZero: false, + bgColor: null, + color: null, + shape: 'circle', + numberType: 'overflow', + offset: [], + inverted: false, + absolute: false + } +} diff --git a/uni_modules/uview-plus/components/u-badge/props.js b/uni_modules/uview-plus/components/u-badge/props.js new file mode 100644 index 0000000..5ed924b --- /dev/null +++ b/uni_modules/uview-plus/components/u-badge/props.js @@ -0,0 +1,79 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: () => defProps.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: () => defProps.badge.value + }, + // 显示的内容 + modelValue: { + type: [Number, String], + default: () => defProps.badge.modelValue + }, + // 是否显示 + show: { + type: Boolean, + default: () => defProps.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: () => defProps.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: () => defProps.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: () => defProps.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: () => defProps.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: () => defProps.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: () => defProps.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: () => defProps.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: () => defProps.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: () => defProps.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: () => defProps.badge.absolute + } + } +}) diff --git a/uni_modules/uview-plus/components/u-badge/u-badge.vue b/uni_modules/uview-plus/components/u-badge/u-badge.vue new file mode 100644 index 0000000..6e03954 --- /dev/null +++ b/uni_modules/uview-plus/components/u-badge/u-badge.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-barcode/u-barcode.vue b/uni_modules/uview-plus/components/u-barcode/u-barcode.vue new file mode 100644 index 0000000..9512c43 --- /dev/null +++ b/uni_modules/uview-plus/components/u-barcode/u-barcode.vue @@ -0,0 +1,1000 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-box/props.js b/uni_modules/uview-plus/components/u-box/props.js new file mode 100644 index 0000000..cfe75e4 --- /dev/null +++ b/uni_modules/uview-plus/components/u-box/props.js @@ -0,0 +1,27 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const propsBox = defineMixin({ + props: { + // 背景色 + bgColors: { + type: [Array], + default: ['#EEFCFF', '#FCF8FF', '#FDF8F2'] + }, + // 高度 + height: { + type: [String], + default: "160px" + }, + // 圆角 + borderRadius: { + type: [String], + default: "6px" + }, + // 间隔 + gap: { + type: [String], + default: "15px" + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-box/u-box.vue b/uni_modules/uview-plus/components/u-box/u-box.vue new file mode 100644 index 0000000..8ad979a --- /dev/null +++ b/uni_modules/uview-plus/components/u-box/u-box.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-button/button.js b/uni_modules/uview-plus/components/u-button/button.js new file mode 100644 index 0000000..a38e88f --- /dev/null +++ b/uni_modules/uview-plus/components/u-button/button.js @@ -0,0 +1,43 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/button.js + */ +export default { + // button组件 + button: { + hairline: false, + type: 'info', + size: 'normal', + shape: 'square', + plain: false, + disabled: false, + loading: false, + loadingText: '', + loadingMode: 'spinner', + loadingSize: 15, + openType: '', + formType: '', + appParameter: '', + hoverStopPropagation: true, + lang: 'en', + sessionFrom: '', + sendMessageTitle: '', + sendMessagePath: '', + sendMessageImg: '', + showMessageCard: false, + dataName: '', + throttleTime: 0, + hoverStartTime: 0, + hoverStayTime: 200, + text: '', + icon: '', + iconColor: '', + color: '', + stop: true, + } +} diff --git a/uni_modules/uview-plus/components/u-button/nvue.scss b/uni_modules/uview-plus/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-plus/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-button/props.js b/uni_modules/uview-plus/components/u-button/props.js new file mode 100644 index 0000000..c42d019 --- /dev/null +++ b/uni_modules/uview-plus/components/u-button/props.js @@ -0,0 +1,159 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: () => defProps.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: () => defProps.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: () => defProps.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: () => defProps.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: () => defProps.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: () => defProps.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: () => defProps.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: () => defProps.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: () => defProps.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: () => defProps.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: () => defProps.button.openType + }, + // 用于
组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: () => defProps.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: () => defProps.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: () => defProps.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: () => defProps.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: () => defProps.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: () => defProps.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: () => defProps.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: () => defProps.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: () => defProps.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: () => defProps.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: () => defProps.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: () => defProps.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: () => defProps.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: () => defProps.button.text + }, + // 按钮图标 + icon: { + type: String, + default: () => defProps.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: () => defProps.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: () => defProps.button.color + }, + // 停止冒泡 + stop: { + type: Boolean, + default: () => defProps.button.stop + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-button/u-button.vue b/uni_modules/uview-plus/components/u-button/u-button.vue new file mode 100644 index 0000000..15ca8de --- /dev/null +++ b/uni_modules/uview-plus/components/u-button/u-button.vue @@ -0,0 +1,503 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-button/vue.scss b/uni_modules/uview-plus/components/u-button/vue.scss new file mode 100644 index 0000000..35fe999 --- /dev/null +++ b/uni_modules/uview-plus/components/u-button/vue.scss @@ -0,0 +1,81 @@ +// 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-warning; + +.u-button { + width: 100%; + white-space: nowrap; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-plus/components/u-calendar/calendar.js b/uni_modules/uview-plus/components/u-calendar/calendar.js new file mode 100644 index 0000000..aaf6190 --- /dev/null +++ b/uni_modules/uview-plus/components/u-calendar/calendar.js @@ -0,0 +1,48 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/calendar.js + */ +import { t } from '../../libs/i18n' +export default { + // calendar 组件 + calendar: { + title: t("up.calendar.chooseDates"), + showTitle: true, + showSubtitle: true, + mode: 'single', + startText: t("up.common.start"), + endText: t("up.common.end"), + customList: [], + color: '#3c9cff', + minDate: 0, + maxDate: 0, + defaultDate: null, + maxCount: Number.MAX_SAFE_INTEGER, // Infinity + rowHeight: 56, + formatter: null, + showLunar: false, + showMark: true, + confirmText: t("up.common.confirm"), + confirmDisabledText: t("up.common.confirm"), + show: false, + closeOnClickOverlay: false, + readonly: false, + showConfirm: true, + maxRange: Number.MAX_SAFE_INTEGER, // Infinity + rangePrompt: '', + showRangePrompt: true, + allowSameDay: false, + round: 0, + monthNum: 3, + weekText: [t("up.week.one"), t("up.week.two"), t("up.week.three"), t("up.week.four"), t("up.week.five"), t("up.week.six"), t("up.week.seven")], + forbidDays: [], + forbidDaysToast: t("up.calendar.disabled"), + monthFormat: '', + pageInline: false + } +} diff --git a/uni_modules/uview-plus/components/u-calendar/header.vue b/uni_modules/uview-plus/components/u-calendar/header.vue new file mode 100644 index 0000000..e289643 --- /dev/null +++ b/uni_modules/uview-plus/components/u-calendar/header.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-calendar/month.vue b/uni_modules/uview-plus/components/u-calendar/month.vue new file mode 100644 index 0000000..42a3de1 --- /dev/null +++ b/uni_modules/uview-plus/components/u-calendar/month.vue @@ -0,0 +1,616 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-calendar/props.js b/uni_modules/uview-plus/components/u-calendar/props.js new file mode 100644 index 0000000..3dc0950 --- /dev/null +++ b/uni_modules/uview-plus/components/u-calendar/props.js @@ -0,0 +1,169 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 日历顶部标题 + title: { + type: String, + default: () => defProps.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: () => defProps.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: () => defProps.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: () => defProps.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: () => defProps.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: () => defProps.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: () => defProps.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: () => defProps.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: () => defProps.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: () => defProps.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: () => defProps.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: () => defProps.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: () => defProps.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: () => defProps.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: () => defProps.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: () => defProps.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: () => defProps.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: () => defProps.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: () => defProps.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: () => defProps.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: () => defProps.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: () => defProps.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: () => defProps.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: () => defProps.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: () => defProps.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: () => defProps.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + }, + // 星期文案 + weekText: { + type: Array, + default: defProps.calendar.weekText + }, + forbidDays: { + type: Array, + default: defProps.calendar.forbidDays + }, + forbidDaysToast:{ + type: String, + default: defProps.calendar.forbidDaysToast + }, + monthFormat:{ + type: String, + default: defProps.calendar.monthFormat + }, + // 是否页面内展示 + pageInline:{ + type: Boolean, + default: defProps.calendar.pageInline + } + } +}) diff --git a/uni_modules/uview-plus/components/u-calendar/u-calendar.vue b/uni_modules/uview-plus/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..f2f92ae --- /dev/null +++ b/uni_modules/uview-plus/components/u-calendar/u-calendar.vue @@ -0,0 +1,421 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-calendar/util.js b/uni_modules/uview-plus/components/u-calendar/util.js new file mode 100644 index 0000000..4483937 --- /dev/null +++ b/uni_modules/uview-plus/components/u-calendar/util.js @@ -0,0 +1,86 @@ +import dayjs from '../u-datetime-picker/dayjs.esm.min.js'; +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js b/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js new file mode 100644 index 0000000..487a612 --- /dev/null +++ b/uni_modules/uview-plus/components/u-car-keyboard/carKeyboard.js @@ -0,0 +1,15 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/carKeyboard.js + */ +export default { + // 车牌号键盘 + carKeyboard: { + random: false + } +} diff --git a/uni_modules/uview-plus/components/u-car-keyboard/props.js b/uni_modules/uview-plus/components/u-car-keyboard/props.js new file mode 100644 index 0000000..7cca0ae --- /dev/null +++ b/uni_modules/uview-plus/components/u-car-keyboard/props.js @@ -0,0 +1,17 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +}) diff --git a/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..cf0f7f0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-card/card.js b/uni_modules/uview-plus/components/u-card/card.js new file mode 100644 index 0000000..9d71214 --- /dev/null +++ b/uni_modules/uview-plus/components/u-card/card.js @@ -0,0 +1,40 @@ +/* + * @Author : jry + * @Description : + * @version : 3.0 + * @Date : 2025-04-26 16:37:21 + * @LastAuthor : jry + * @lastTime : 2025-04-26 16:37:21 + * @FilePath : /uview-plus/libs/config/props/card.js + */ +export default { + // card组件的props + card: { + full: false, + title: '', + titleColor: '#303133', + titleSize: '15px', + subTitle: '', + subTitleColor: '#909399', + subTitleSize: '13px', + border: true, + index: '', + margin: '15px', + borderRadius: '8px', + headStyle: {}, + bodyStyle: {}, + footStyle: {}, + headBorderBottom: true, + footBorderTop: true, + thumb: '', + thumbWidth: '30px', + thumbCircle: false, + padding: '15px', + paddingHead: '', + paddingBody: '', + paddingFoot: '', + showHead: true, + showFoot: true, + boxShadow: 'none' + } +} diff --git a/uni_modules/uview-plus/components/u-card/props.js b/uni_modules/uview-plus/components/u-card/props.js new file mode 100644 index 0000000..fa8d72a --- /dev/null +++ b/uni_modules/uview-plus/components/u-card/props.js @@ -0,0 +1,134 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const propsCard = defineMixin({ + props: { + // 与屏幕两侧是否留空隙 + full: { + type: Boolean, + default: () => defProps.card.full + }, + // 标题 + title: { + type: String, + default: () => defProps.card.title + }, + // 标题颜色 + titleColor: { + type: String, + default: () => defProps.card.titleColor + }, + // 标题字体大小 + titleSize: { + type: [Number, String], + default: () => defProps.card.titleSize + }, + // 副标题 + subTitle: { + type: String, + default: () => defProps.card.subTitle + }, + // 副标题颜色 + subTitleColor: { + type: String, + default: () => defProps.card.subTitleColor + }, + // 副标题字体大小 + subTitleSize: { + type: [Number, String], + default: () => defProps.card.subTitleSize + }, + // 是否显示外部边框,只对full=false时有效(卡片与边框有空隙时) + border: { + type: Boolean, + default: () => defProps.card.border + }, + // 用于标识点击了第几个 + index: { + type: [Number, String, Object], + default: () => defProps.card.index + }, + // 用于隔开上下左右的边距,带单位的写法,如:"30px 30px","20px 20px 30px 30px" + margin: { + type: String, + default: () => defProps.card.margin + }, + // card卡片的圆角 + borderRadius: { + type: [Number, String], + default: () => defProps.card.borderRadius + }, + // 头部自定义样式,对象形式 + headStyle: { + type: Object, + default: () => defProps.card.headStyle + }, + // 主体自定义样式,对象形式 + bodyStyle: { + type: Object, + default: () => defProps.card.bodyStyle + }, + // 底部自定义样式,对象形式 + footStyle: { + type: Object, + default: () => defProps.card.footStyle + }, + // 头部是否下边框 + headBorderBottom: { + type: Boolean, + default: () => defProps.card.headBorderBottom + }, + // 底部是否有上边框 + footBorderTop: { + type: Boolean, + default: () => defProps.card.footBorderTop + }, + // 标题左边的缩略图 + thumb: { + type: String, + default: () => defProps.card.thumb + }, + // 缩略图宽高 + thumbWidth: { + type: [String, Number], + default: () => defProps.card.thumbWidth + }, + // 缩略图是否为圆形 + thumbCircle: { + type: Boolean, + default: () => defProps.card.thumbCircle + }, + // 给head,body,foot的内边距 + padding: { + type: [String, Number], + default: () => defProps.card.padding + }, + paddingHead: { + type: [String, Number], + default: () => defProps.card.paddingHead + }, + paddingBody: { + type: [String, Number], + default: () => defProps.card.paddingBody + }, + paddingFoot: { + type: [String, Number], + default: () => defProps.card.paddingFoot + }, + // 是否显示头部 + showHead: { + type: Boolean, + default: () => defProps.card.showHead + }, + // 是否显示尾部 + showFoot: { + type: Boolean, + default: () => defProps.card.showFoot + }, + // 卡片外围阴影,字符串形式 + boxShadow: { + type: String, + default: () => defProps.card.boxShadow + } + } +}) diff --git a/uni_modules/uview-plus/components/u-card/u-card.vue b/uni_modules/uview-plus/components/u-card/u-card.vue new file mode 100644 index 0000000..0d98131 --- /dev/null +++ b/uni_modules/uview-plus/components/u-card/u-card.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-cascader/u-cascader.vue b/uni_modules/uview-plus/components/u-cascader/u-cascader.vue new file mode 100644 index 0000000..f1a4fa9 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cascader/u-cascader.vue @@ -0,0 +1,335 @@ + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue b/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue new file mode 100644 index 0000000..93f1a06 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue @@ -0,0 +1,381 @@ + + + + diff --git a/uni_modules/uview-plus/components/u-cell-group/cellGroup.js b/uni_modules/uview-plus/components/u-cell-group/cellGroup.js new file mode 100644 index 0000000..8a39d07 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cell-group/cellGroup.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/cellGroup.js + */ +export default { + // cell-group组件的props + cellGroup: { + title: '', + border: true, + customStyle: {} + } +} diff --git a/uni_modules/uview-plus/components/u-cell-group/props.js b/uni_modules/uview-plus/components/u-cell-group/props.js new file mode 100644 index 0000000..59c2012 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cell-group/props.js @@ -0,0 +1,16 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 分组标题 + title: { + type: String, + default: () => defProps.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: () => defProps.cellGroup.border + } + } +}) diff --git a/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..0fd1fb4 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,66 @@ + + + + + + diff --git a/uni_modules/uview-plus/components/u-cell/cell.js b/uni_modules/uview-plus/components/u-cell/cell.js new file mode 100644 index 0000000..85f395b --- /dev/null +++ b/uni_modules/uview-plus/components/u-cell/cell.js @@ -0,0 +1,35 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/cell.js + */ +export default { + // cell组件的props + cell: { + customClass: '', + title: '', + label: '', + value: '', + icon: '', + disabled: false, + border: true, + center: false, + url: '', + linkType: 'navigateTo', + clickable: false, + isLink: false, + required: false, + arrowDirection: '', + iconStyle: {}, + rightIconStyle: {}, + rightIcon: 'arrow-right', + titleStyle: {}, + size: '', + stop: true, + name: '' + } +} diff --git a/uni_modules/uview-plus/components/u-cell/props.js b/uni_modules/uview-plus/components/u-cell/props.js new file mode 100644 index 0000000..73f5210 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cell/props.js @@ -0,0 +1,112 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 标题 + title: { + type: [String, Number], + default: () => defProps.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: () => defProps.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: () => defProps.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: () => defProps.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: () => defProps.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: () => defProps.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: () => defProps.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: () => defProps.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: () => defProps.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: () => defProps.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: () => defProps.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: () => defProps.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: () => defProps.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: () => defProps.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return defProps.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return defProps.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return defProps.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: () => defProps.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: () => defProps.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: () => defProps.cell.name + } + } +}) diff --git a/uni_modules/uview-plus/components/u-cell/u-cell.vue b/uni_modules/uview-plus/components/u-cell/u-cell.vue new file mode 100644 index 0000000..fd00a90 --- /dev/null +++ b/uni_modules/uview-plus/components/u-cell/u-cell.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js b/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js new file mode 100644 index 0000000..d685a0a --- /dev/null +++ b/uni_modules/uview-plus/components/u-checkbox-group/checkboxGroup.js @@ -0,0 +1,29 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/checkboxGroup.js + */ +export default { + // checkbox-group组件 + checkboxGroup: { + name: '', + value: [], + shape: 'square', + disabled: false, + activeColor: '#2979ff', + inactiveColor: '#c8c9cc', + size: 18, + placement: 'row', + labelSize: 14, + labelColor: '#303133', + labelDisabled: false, + iconColor: '#ffffff', + iconSize: 12, + iconPlacement: 'left', + borderBottom: false + } +} diff --git a/uni_modules/uview-plus/components/u-checkbox-group/props.js b/uni_modules/uview-plus/components/u-checkbox-group/props.js new file mode 100644 index 0000000..222d184 --- /dev/null +++ b/uni_modules/uview-plus/components/u-checkbox-group/props.js @@ -0,0 +1,93 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 标识符 + name: { + type: String, + default: () => defProps.checkboxGroup.name + }, + // #ifdef VUE3 + // 绑定的值 + modelValue: { + type: Array, + default: () => defProps.checkboxGroup.value + }, + // #endif + // #ifdef VUE2 + // 绑定的值 + value: { + type: Array, + default: () => defProps.checkboxGroup.value + }, + // #endif + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: () => defProps.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: () => defProps.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: () => defProps.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: () => defProps.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: () => defProps.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: () => defProps.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: () => defProps.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: () => defProps.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: () => defProps.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: () => defProps.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: () => defProps.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: () => defProps.checkboxGroup.borderBottom + } + } +}) diff --git a/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..5f9385d --- /dev/null +++ b/uni_modules/uview-plus/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-checkbox/checkbox.js b/uni_modules/uview-plus/components/u-checkbox/checkbox.js new file mode 100644 index 0000000..694dbf8 --- /dev/null +++ b/uni_modules/uview-plus/components/u-checkbox/checkbox.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/checkbox.js + */ +export default { + // checkbox组件 + checkbox: { + name: '', + shape: '', + size: '', + checkbox: false, + disabled: '', + activeColor: '', + inactiveColor: '', + iconSize: '', + iconColor: '', + label: '', + labelSize: '', + labelColor: '', + labelDisabled: '' + } +} diff --git a/uni_modules/uview-plus/components/u-checkbox/props.js b/uni_modules/uview-plus/components/u-checkbox/props.js new file mode 100644 index 0000000..66d8150 --- /dev/null +++ b/uni_modules/uview-plus/components/u-checkbox/props.js @@ -0,0 +1,76 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: () => defProps.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: () => defProps.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: () => defProps.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: () => defProps.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: () => defProps.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: () => defProps.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: () => defProps.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: () => defProps.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: () => defProps.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: () => defProps.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: () => defProps.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: () => defProps.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: () => defProps.checkbox.labelDisabled + }, + // 是否独立使用 + usedAlone: { + type: [Boolean], + default: () => false + } + } +}) diff --git a/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..491b920 --- /dev/null +++ b/uni_modules/uview-plus/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,389 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-choose/u-choose.vue b/uni_modules/uview-plus/components/u-choose/u-choose.vue new file mode 100644 index 0000000..90cc5b7 --- /dev/null +++ b/uni_modules/uview-plus/components/u-choose/u-choose.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js b/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js new file mode 100644 index 0000000..2fd907a --- /dev/null +++ b/uni_modules/uview-plus/components/u-circle-progress/circleProgress.js @@ -0,0 +1,15 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/circleProgress.js + */ +export default { + // circleProgress 组件 + circleProgress: { + percentage: 30 + } +} diff --git a/uni_modules/uview-plus/components/u-circle-progress/props.js b/uni_modules/uview-plus/components/u-circle-progress/props.js new file mode 100644 index 0000000..ff1eeaa --- /dev/null +++ b/uni_modules/uview-plus/components/u-circle-progress/props.js @@ -0,0 +1,10 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + percentage: { + type: [String, Number], + default: () => defProps.circleProgress.percentage + } + } +}) diff --git a/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..496bb19 --- /dev/null +++ b/uni_modules/uview-plus/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-city-locate/u-city-locate.vue b/uni_modules/uview-plus/components/u-city-locate/u-city-locate.vue new file mode 100644 index 0000000..c9a3688 --- /dev/null +++ b/uni_modules/uview-plus/components/u-city-locate/u-city-locate.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-code-input/codeInput.js b/uni_modules/uview-plus/components/u-code-input/codeInput.js new file mode 100644 index 0000000..a9003c0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-code-input/codeInput.js @@ -0,0 +1,29 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/codeInput.js + */ +export default { + // codeInput 组件 + codeInput: { + adjustPosition: true, + maxlength: 6, + dot: false, + mode: 'box', + hairline: false, + space: 10, + value: '', + focus: false, + bold: false, + color: '#606266', + fontSize: 18, + size: 35, + disabledKeyboard: false, + borderColor: '#c9cacc', + disabledDot: true + } +} diff --git a/uni_modules/uview-plus/components/u-code-input/props.js b/uni_modules/uview-plus/components/u-code-input/props.js new file mode 100644 index 0000000..0a4b1e8 --- /dev/null +++ b/uni_modules/uview-plus/components/u-code-input/props.js @@ -0,0 +1,90 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: () => defProps.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: () => defProps.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: () => defProps.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: () => defProps.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: () => defProps.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: () => defProps.codeInput.space + }, + // #ifdef VUE3 + // 预置值 + modelValue: { + type: [String, Number], + default: () => defProps.codeInput.value + }, + // #endif + // #ifdef VUE2 + // 预置值 + value: { + type: [String, Number], + default: () => defProps.codeInput.value + }, + // #endif + // 是否自动获取焦点 + focus: { + type: Boolean, + default: () => defProps.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: () => defProps.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: () => defProps.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: () => defProps.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: () => defProps.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: () => defProps.codeInput.disabledDot + } + } +}) diff --git a/uni_modules/uview-plus/components/u-code-input/u-code-input.vue b/uni_modules/uview-plus/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..4253eef --- /dev/null +++ b/uni_modules/uview-plus/components/u-code-input/u-code-input.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-code/code.js b/uni_modules/uview-plus/components/u-code/code.js new file mode 100644 index 0000000..422aae2 --- /dev/null +++ b/uni_modules/uview-plus/components/u-code/code.js @@ -0,0 +1,21 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/code.js + */ +import { t } from '../../libs/i18n' +export default { + // code 组件 + code: { + seconds: 60, + startText: t("up.code.send"), + changeText: t("up.code.resendAfter"), + endText: t("up.code.resend"), + keepRunning: false, + uniqueKey: '' + } +} diff --git a/uni_modules/uview-plus/components/u-code/props.js b/uni_modules/uview-plus/components/u-code/props.js new file mode 100644 index 0000000..60977b5 --- /dev/null +++ b/uni_modules/uview-plus/components/u-code/props.js @@ -0,0 +1,36 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: () => defProps.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: () => defProps.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: () => defProps.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: () => defProps.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: () => defProps.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: () => defProps.code.uniqueKey + } + } +}) diff --git a/uni_modules/uview-plus/components/u-code/u-code.vue b/uni_modules/uview-plus/components/u-code/u-code.vue new file mode 100644 index 0000000..3d8359b --- /dev/null +++ b/uni_modules/uview-plus/components/u-code/u-code.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-col/col.js b/uni_modules/uview-plus/components/u-col/col.js new file mode 100644 index 0000000..9b19160 --- /dev/null +++ b/uni_modules/uview-plus/components/u-col/col.js @@ -0,0 +1,19 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/col.js + */ +export default { + // col 组件 + col: { + span: 12, + offset: 0, + justify: 'start', + align: 'stretch', + textAlign: 'left' + } +} diff --git a/uni_modules/uview-plus/components/u-col/props.js b/uni_modules/uview-plus/components/u-col/props.js new file mode 100644 index 0000000..b28decb --- /dev/null +++ b/uni_modules/uview-plus/components/u-col/props.js @@ -0,0 +1,31 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: () => defProps.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: () => defProps.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: () => defProps.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: () => defProps.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: () => defProps.col.textAlign + } + } +}) diff --git a/uni_modules/uview-plus/components/u-col/u-col.vue b/uni_modules/uview-plus/components/u-col/u-col.vue new file mode 100644 index 0000000..fe28108 --- /dev/null +++ b/uni_modules/uview-plus/components/u-col/u-col.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js b/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js new file mode 100644 index 0000000..f56c74e --- /dev/null +++ b/uni_modules/uview-plus/components/u-collapse-item/collapseItem.js @@ -0,0 +1,31 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/collapseItem.js + */ +export default { + // collapseItem 组件 + collapseItem: { + title: '', + value: '', + label: '', + disabled: false, + isLink: true, + clickable: true, + border: true, + align: 'left', + name: '', + icon: '', + duration: 300, + showRight: true, + titleStyle: {}, + iconStyle: {}, + rightIconStyle: {}, + cellCustomStyle: {}, + cellCustomClass: '' + } +} diff --git a/uni_modules/uview-plus/components/u-collapse-item/props.js b/uni_modules/uview-plus/components/u-collapse-item/props.js new file mode 100644 index 0000000..095c571 --- /dev/null +++ b/uni_modules/uview-plus/components/u-collapse-item/props.js @@ -0,0 +1,97 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 标题 + title: { + type: String, + default: () => defProps.collapseItem.title + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.titleStyle + } + }, + // 标题右侧内容 + value: { + type: String, + default: () => defProps.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: () => defProps.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: () => defProps.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: () => defProps.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: () => defProps.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: () => defProps.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: () => defProps.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: () => defProps.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: () => defProps.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: () => defProps.collapseItem.duration + }, + // 显示右侧图标 + showRight: { + type: Boolean, + default: () => defProps.collapseItem.showRight + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.rightIconStyle + } + }, + cellCustomStyle: { + type: [Object, String], + default: () => { + return defProps.collapseItem.cellCustomStyle + } + }, + cellCustomClass: { + type: String, + default: () => defProps.collapseItem.cellCustomClass + } + } +}) diff --git a/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..957da74 --- /dev/null +++ b/uni_modules/uview-plus/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-collapse/collapse.js b/uni_modules/uview-plus/components/u-collapse/collapse.js new file mode 100644 index 0000000..f2386a0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-collapse/collapse.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/collapse.js + */ +export default { + // collapse 组件 + collapse: { + value: null, + accordion: false, + border: true + } +} diff --git a/uni_modules/uview-plus/components/u-collapse/props.js b/uni_modules/uview-plus/components/u-collapse/props.js new file mode 100644 index 0000000..7712603 --- /dev/null +++ b/uni_modules/uview-plus/components/u-collapse/props.js @@ -0,0 +1,21 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: () => defProps.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: () => defProps.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: () => defProps.collapse.border + } + } +}) diff --git a/uni_modules/uview-plus/components/u-collapse/u-collapse.vue b/uni_modules/uview-plus/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..81c7af4 --- /dev/null +++ b/uni_modules/uview-plus/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-color-picker/u-color-picker.vue b/uni_modules/uview-plus/components/u-color-picker/u-color-picker.vue new file mode 100644 index 0000000..768f483 --- /dev/null +++ b/uni_modules/uview-plus/components/u-color-picker/u-color-picker.vue @@ -0,0 +1,1095 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-column-notice/columnNotice.js b/uni_modules/uview-plus/components/u-column-notice/columnNotice.js new file mode 100644 index 0000000..07e84cc --- /dev/null +++ b/uni_modules/uview-plus/components/u-column-notice/columnNotice.js @@ -0,0 +1,25 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/columnNotice.js + */ +export default { + // columnNotice 组件 + columnNotice: { + text: '', + icon: 'volume', + mode: '', + color: '#f9ae3d', + bgColor: '#fdf6ec', + fontSize: 14, + speed: 80, + step: false, + duration: 1500, + disableTouch: true, + justifyContent: 'flex-start' + } +} diff --git a/uni_modules/uview-plus/components/u-column-notice/props.js b/uni_modules/uview-plus/components/u-column-notice/props.js new file mode 100644 index 0000000..4e3cc1f --- /dev/null +++ b/uni_modules/uview-plus/components/u-column-notice/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: () => defProps.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: () => defProps.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: () => defProps.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: () => defProps.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: () => defProps.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: () => defProps.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: () => defProps.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: () => defProps.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: () => defProps.columnNotice.disableTouch + }, + justifyContent: { + type: String, + default: () => defProps.columnNotice.justifyContent + } + } +}) diff --git a/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..3ccd926 --- /dev/null +++ b/uni_modules/uview-plus/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-copy/u-copy.vue b/uni_modules/uview-plus/components/u-copy/u-copy.vue new file mode 100644 index 0000000..49c2cd4 --- /dev/null +++ b/uni_modules/uview-plus/components/u-copy/u-copy.vue @@ -0,0 +1,72 @@ + + + + diff --git a/uni_modules/uview-plus/components/u-count-down/countDown.js b/uni_modules/uview-plus/components/u-count-down/countDown.js new file mode 100644 index 0000000..99caef5 --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-down/countDown.js @@ -0,0 +1,18 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/countDown.js + */ +export default { + // u-count-down 计时器组件 + countDown: { + time: 0, + format: 'HH:mm:ss', + autoStart: true, + millisecond: false + } +} diff --git a/uni_modules/uview-plus/components/u-count-down/props.js b/uni_modules/uview-plus/components/u-count-down/props.js new file mode 100644 index 0000000..6dbf1c2 --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-down/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: () => defProps.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: () => defProps.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: () => defProps.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: () => defProps.countDown.millisecond + } + } +}) diff --git a/uni_modules/uview-plus/components/u-count-down/u-count-down.vue b/uni_modules/uview-plus/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..0c6d231 --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-down/u-count-down.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-count-down/utils.js b/uni_modules/uview-plus/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-plus/components/u-count-to/countTo.js b/uni_modules/uview-plus/components/u-count-to/countTo.js new file mode 100644 index 0000000..be93a1c --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-to/countTo.js @@ -0,0 +1,25 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/countTo.js + */ +export default { + // countTo 组件 + countTo: { + startVal: 0, + endVal: 0, + duration: 2000, + autoplay: true, + decimals: 0, + useEasing: true, + decimal: '.', + color: '#606266', + fontSize: 22, + bold: false, + separator: '' + } +} diff --git a/uni_modules/uview-plus/components/u-count-to/props.js b/uni_modules/uview-plus/components/u-count-to/props.js new file mode 100644 index 0000000..0b97c1f --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-to/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: () => defProps.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: () => defProps.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: () => defProps.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: () => defProps.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: () => defProps.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: () => defProps.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: () => defProps.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: () => defProps.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: () => defProps.countTo.separator + } + } +}) diff --git a/uni_modules/uview-plus/components/u-count-to/u-count-to.vue b/uni_modules/uview-plus/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..36e7cf5 --- /dev/null +++ b/uni_modules/uview-plus/components/u-count-to/u-count-to.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-coupon/u-coupon.vue b/uni_modules/uview-plus/components/u-coupon/u-coupon.vue new file mode 100644 index 0000000..ef91d4b --- /dev/null +++ b/uni_modules/uview-plus/components/u-coupon/u-coupon.vue @@ -0,0 +1,406 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-cropper/u-cropper.vue b/uni_modules/uview-plus/components/u-cropper/u-cropper.vue new file mode 100644 index 0000000..4c519ba --- /dev/null +++ b/uni_modules/uview-plus/components/u-cropper/u-cropper.vue @@ -0,0 +1,1228 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js b/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js new file mode 100644 index 0000000..b196522 --- /dev/null +++ b/uni_modules/uview-plus/components/u-datetime-picker/datetimePicker.js @@ -0,0 +1,44 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/datetimePicker.js + */ +import { t } from '../../libs/i18n' +export default { + // datetimePicker 组件 + datetimePicker: { + show: false, + popupMode: 'bottom', + showToolbar: true, + value: '', + title: '', + mode: 'datetime', + maxDate: new Date(new Date().getFullYear() + 10, 0, 1).getTime(), + minDate: new Date(new Date().getFullYear() - 10, 0, 1).getTime(), + minHour: 0, + maxHour: 23, + minMinute: 0, + maxMinute: 59, + filter: null, + formatter: null, + loading: false, + itemHeight: 44, + cancelText: t("up.common.cancel"), + confirmText: t("up.common.confirm"), + cancelColor: '#909193', + confirmColor: '#3c9cff', + visibleItemCount: 5, + closeOnClickOverlay: false, + defaultIndex: [], + inputBorder: 'surround', + disabled: false, + disabledColor: '', + placeholder: t("up.common.pleaseChoose"), + inputProps: {}, + pageInline: false + } +} diff --git a/uni_modules/uview-plus/components/u-datetime-picker/dayjs.esm.min.js b/uni_modules/uview-plus/components/u-datetime-picker/dayjs.esm.min.js new file mode 100644 index 0000000..24c6ec9 --- /dev/null +++ b/uni_modules/uview-plus/components/u-datetime-picker/dayjs.esm.min.js @@ -0,0 +1,7 @@ +/** + * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0. + * Original file: /npm/dayjs@1.11.13/dayjs.min.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var t={exports:{}},e=t.exports=function(){var t=1e3,e=6e4,n=36e5,r="millisecond",s="second",i="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},g=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:g,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),s=n%60;return(e<=0?"+":"-")+g(r,2,"0")+":"+g(s,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,s=a}return!r&&s&&(m=s),s||!r&&m},b=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=w,O.i=S,O.w=function(t,e){return b(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var g=M.prototype;return g.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var s=r[2]-1||0,i=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)):new Date(r[1],s,r[3]||1,r[4]||0,r[5]||0,r[6]||0,i)}}return new Date(e)}(t),this.init()},g.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},g.$utils=function(){return O},g.isValid=function(){return!(this.$d.toString()===l)},g.isSame=function(t,e){var n=b(t);return this.startOf(e)<=n&&n<=this.endOf(e)},g.isAfter=function(t,e){return b(t) { + return {} + } + }, + inputBorder: { + type: String, + default: () => defProps.input.inputBorder + }, + disabled: { + type: Boolean, + default: () => defProps.input.disabled + }, + disabledColor:{ + type: String, + default: () => defProps.input.disabledColor + }, + placeholder: { + type: String, + default: () => defProps.input.placeholder + }, + format: { + type: String, + default: () => '' + }, + // 是否打开组件 + show: { + type: Boolean, + default: () => defProps.datetimePicker.show + }, + // 弹出的方向,可选值为 top bottom right left center + popupMode: { + type: String, + default: () => defProps.picker.popupMode + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: () => defProps.datetimePicker.showToolbar + }, + // 工具栏右侧内容 + toolbarRightSlot:{ + type: Boolean, + default: false + }, + // #ifdef VUE2 + // 绑定值 + value: { + type: [String, Number], + default: () => defProps.datetimePicker.value + }, + // #endif + // #ifdef VUE3 + // 绑定值 + modelValue: { + type: [String, Number], + default: () => defProps.datetimePicker.value + }, + // #endif + // 顶部标题 + title: { + type: String, + default: () => defProps.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: () => defProps.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: () => defProps.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: () => defProps.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: () => defProps.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: () => defProps.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: () => defProps.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: () => defProps.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: () => defProps.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: () => defProps.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: () => defProps.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: () => defProps.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: () => defProps.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: () => defProps.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: () => defProps.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: () => defProps.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: () => defProps.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: () => defProps.datetimePicker.defaultIndex + }, + // 是否页面内展示 + pageInline:{ + type: Boolean, + default: () => defProps.datetimePicker.pageInline + }, + // 蒙层样式样式 + maskClass: { + type: String, + defualt: '' + }, + // 蒙层样式样式 + maskStyle: { + type: String, + defualt: '' + } + } +}) diff --git a/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..7b12fe9 --- /dev/null +++ b/uni_modules/uview-plus/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-divider/divider.js b/uni_modules/uview-plus/components/u-divider/divider.js new file mode 100644 index 0000000..1f9978a --- /dev/null +++ b/uni_modules/uview-plus/components/u-divider/divider.js @@ -0,0 +1,23 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/divider.js + */ +export default { + // divider组件 + divider: { + dashed: false, + hairline: true, + dot: false, + textPosition: 'center', + text: '', + textSize: 14, + textColor: '#909399', + lineColor: '#dcdfe6' + } + +} diff --git a/uni_modules/uview-plus/components/u-divider/props.js b/uni_modules/uview-plus/components/u-divider/props.js new file mode 100644 index 0000000..ec3fd8f --- /dev/null +++ b/uni_modules/uview-plus/components/u-divider/props.js @@ -0,0 +1,46 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: () => defProps.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: () => defProps.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: () => defProps.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: () => defProps.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: () => defProps.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: () => defProps.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: () => defProps.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: () => defProps.divider.lineColor + } + } +}) diff --git a/uni_modules/uview-plus/components/u-divider/u-divider.vue b/uni_modules/uview-plus/components/u-divider/u-divider.vue new file mode 100644 index 0000000..edc91bd --- /dev/null +++ b/uni_modules/uview-plus/components/u-divider/u-divider.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-dragsort/u-dragsort.vue b/uni_modules/uview-plus/components/u-dragsort/u-dragsort.vue new file mode 100644 index 0000000..0292e4e --- /dev/null +++ b/uni_modules/uview-plus/components/u-dragsort/u-dragsort.vue @@ -0,0 +1,389 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-dropdown-item/props.js b/uni_modules/uview-plus/components/u-dropdown-item/props.js new file mode 100644 index 0000000..e5e0265 --- /dev/null +++ b/uni_modules/uview-plus/components/u-dropdown-item/props.js @@ -0,0 +1,47 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // #ifdef VUE3 + // 当前选中项的value值 + modelValue: { + type: [Number, String, Array], + default: '' + }, + // #endif + // #ifdef VUE2 + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // #endif + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +}) diff --git a/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..461e272 --- /dev/null +++ b/uni_modules/uview-plus/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-dropdown/props.js b/uni_modules/uview-plus/components/u-dropdown/props.js new file mode 100644 index 0000000..4614b96 --- /dev/null +++ b/uni_modules/uview-plus/components/u-dropdown/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 菜单标题和选项的激活态颜色 + activeColor: { + type: String, + default: '#2979ff' + }, + // 菜单标题和选项的未激活态颜色 + inactiveColor: { + type: String, + default: '#606266' + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +}) diff --git a/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..4663178 --- /dev/null +++ b/uni_modules/uview-plus/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-empty/empty.js b/uni_modules/uview-plus/components/u-empty/empty.js new file mode 100644 index 0000000..c5009a2 --- /dev/null +++ b/uni_modules/uview-plus/components/u-empty/empty.js @@ -0,0 +1,26 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/empty.js + */ +export default { + // empty组件 + empty: { + icon: '', + text: '', + textColor: '#c0c4cc', + textSize: 14, + iconColor: '#c0c4cc', + iconSize: 90, + mode: 'data', + width: 160, + height: 160, + show: true, + marginTop: 0 + } + +} diff --git a/uni_modules/uview-plus/components/u-empty/props.js b/uni_modules/uview-plus/components/u-empty/props.js new file mode 100644 index 0000000..40edd11 --- /dev/null +++ b/uni_modules/uview-plus/components/u-empty/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: () => defProps.empty.icon + }, + // 提示文字 + text: { + type: String, + default: () => defProps.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: () => defProps.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: () => defProps.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: () => defProps.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: () => defProps.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: () => defProps.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: () => defProps.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: () => defProps.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: () => defProps.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: () => defProps.empty.marginTop + } + } +}) diff --git a/uni_modules/uview-plus/components/u-empty/u-empty.vue b/uni_modules/uview-plus/components/u-empty/u-empty.vue new file mode 100644 index 0000000..f740663 --- /dev/null +++ b/uni_modules/uview-plus/components/u-empty/u-empty.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-float-button/u-float-button.vue b/uni_modules/uview-plus/components/u-float-button/u-float-button.vue new file mode 100644 index 0000000..4ffc32b --- /dev/null +++ b/uni_modules/uview-plus/components/u-float-button/u-float-button.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-form-item/formItem.js b/uni_modules/uview-plus/components/u-form-item/formItem.js new file mode 100644 index 0000000..2113cc9 --- /dev/null +++ b/uni_modules/uview-plus/components/u-form-item/formItem.js @@ -0,0 +1,24 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/formItem.js + */ +export default { + // formItem 组件 + formItem: { + label: '', + prop: '', + rules: [], + borderBottom: '', + labelPosition: '', + labelWidth: '', + rightIcon: '', + leftIcon: '', + required: false, + leftIconStyle: '', + } +} diff --git a/uni_modules/uview-plus/components/u-form-item/props.js b/uni_modules/uview-plus/components/u-form-item/props.js new file mode 100644 index 0000000..cd434ce --- /dev/null +++ b/uni_modules/uview-plus/components/u-form-item/props.js @@ -0,0 +1,55 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // input的label提示语 + label: { + type: String, + default: () => defProps.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: () => defProps.formItem.prop + }, + // 绑定的规则 + rules: { + type: Array, + default: () => defProps.formItem.rules + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: () => defProps.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: () => defProps.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: () => defProps.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: () => defProps.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: () => defProps.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: () => defProps.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: () => defProps.formItem.leftIconStyle, + } + } +}) diff --git a/uni_modules/uview-plus/components/u-form-item/u-form-item.vue b/uni_modules/uview-plus/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..79c6d96 --- /dev/null +++ b/uni_modules/uview-plus/components/u-form-item/u-form-item.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-form/form.js b/uni_modules/uview-plus/components/u-form/form.js new file mode 100644 index 0000000..6671b09 --- /dev/null +++ b/uni_modules/uview-plus/components/u-form/form.js @@ -0,0 +1,22 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/form.js + */ +export default { + // form 组件 + form: { + model: {}, + rules: {}, + errorType: 'message', + borderBottom: true, + labelPosition: 'left', + labelWidth: 45, + labelAlign: 'left', + labelStyle: {} + } +} diff --git a/uni_modules/uview-plus/components/u-form/props.js b/uni_modules/uview-plus/components/u-form/props.js new file mode 100644 index 0000000..b80d623 --- /dev/null +++ b/uni_modules/uview-plus/components/u-form/props.js @@ -0,0 +1,47 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: () => defProps.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: () => defProps.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: () => defProps.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: () => defProps.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: () => defProps.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: () => defProps.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: () => defProps.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: () => defProps.form.labelStyle + } + } +}) diff --git a/uni_modules/uview-plus/components/u-form/u-form.vue b/uni_modules/uview-plus/components/u-form/u-form.vue new file mode 100644 index 0000000..133b6bf --- /dev/null +++ b/uni_modules/uview-plus/components/u-form/u-form.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-gap/gap.js b/uni_modules/uview-plus/components/u-gap/gap.js new file mode 100644 index 0000000..07dd2dc --- /dev/null +++ b/uni_modules/uview-plus/components/u-gap/gap.js @@ -0,0 +1,19 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/gap.js + */ +export default { + // gap组件 + gap: { + bgColor: 'transparent', + height: 20, + marginTop: 0, + marginBottom: 0, + customStyle: {} + } +} diff --git a/uni_modules/uview-plus/components/u-gap/props.js b/uni_modules/uview-plus/components/u-gap/props.js new file mode 100644 index 0000000..77b1d7c --- /dev/null +++ b/uni_modules/uview-plus/components/u-gap/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: () => defProps.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: () => defProps.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: () => defProps.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: () => defProps.gap.marginBottom + } + } +}) diff --git a/uni_modules/uview-plus/components/u-gap/u-gap.vue b/uni_modules/uview-plus/components/u-gap/u-gap.vue new file mode 100644 index 0000000..1debaaa --- /dev/null +++ b/uni_modules/uview-plus/components/u-gap/u-gap.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-goods-sku/u-goods-sku.vue b/uni_modules/uview-plus/components/u-goods-sku/u-goods-sku.vue new file mode 100644 index 0000000..dbb5c2a --- /dev/null +++ b/uni_modules/uview-plus/components/u-goods-sku/u-goods-sku.vue @@ -0,0 +1,434 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-grid-item/gridItem.js b/uni_modules/uview-plus/components/u-grid-item/gridItem.js new file mode 100644 index 0000000..7aff5c6 --- /dev/null +++ b/uni_modules/uview-plus/components/u-grid-item/gridItem.js @@ -0,0 +1,16 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/gridItem.js + */ +export default { + // grid-item组件 + gridItem: { + name: null, + bgColor: 'transparent' + } +} diff --git a/uni_modules/uview-plus/components/u-grid-item/props.js b/uni_modules/uview-plus/components/u-grid-item/props.js new file mode 100644 index 0000000..55f957c --- /dev/null +++ b/uni_modules/uview-plus/components/u-grid-item/props.js @@ -0,0 +1,16 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: () => defProps.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.gridItem.bgColor + } + } +}) diff --git a/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..cff7bd2 --- /dev/null +++ b/uni_modules/uview-plus/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-grid/grid.js b/uni_modules/uview-plus/components/u-grid/grid.js new file mode 100644 index 0000000..b98f802 --- /dev/null +++ b/uni_modules/uview-plus/components/u-grid/grid.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/grid.js + */ +export default { + // grid组件 + grid: { + col: 3, + border: false, + align: 'left' + } +} diff --git a/uni_modules/uview-plus/components/u-grid/props.js b/uni_modules/uview-plus/components/u-grid/props.js new file mode 100644 index 0000000..506baf7 --- /dev/null +++ b/uni_modules/uview-plus/components/u-grid/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 分成几列 + col: { + type: [String, Number], + default: () => defProps.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: () => defProps.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: () => defProps.grid.align + }, + // 间隔 + gap: { + type: String, + default: '0px' + } + } +}) diff --git a/uni_modules/uview-plus/components/u-grid/u-grid.vue b/uni_modules/uview-plus/components/u-grid/u-grid.vue new file mode 100644 index 0000000..ec945fc --- /dev/null +++ b/uni_modules/uview-plus/components/u-grid/u-grid.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-icon/icon.js b/uni_modules/uview-plus/components/u-icon/icon.js new file mode 100644 index 0000000..b500cc1 --- /dev/null +++ b/uni_modules/uview-plus/components/u-icon/icon.js @@ -0,0 +1,36 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/icon.js + */ +import config from '../../libs/config/config' + +const { + color +} = config +export default { + // icon组件 + icon: { + name: '', + color: color['u-content-color'], + size: '16px', + bold: false, + index: '', + hoverClass: '', + customPrefix: 'uicon', + label: '', + labelPos: 'right', + labelSize: '15px', + labelColor: color['u-content-color'], + space: '3px', + imgMode: '', + width: '', + height: '', + top: 0, + stop: false + } +} diff --git a/uni_modules/uview-plus/components/u-icon/icons.js b/uni_modules/uview-plus/components/u-icon/icons.js new file mode 100644 index 0000000..20b2fa0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-icon/icons.js @@ -0,0 +1,215 @@ +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-empty-wifi': '\ue668', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-plus/components/u-icon/props.js b/uni_modules/uview-plus/components/u-icon/props.js new file mode 100644 index 0000000..d5bdfdb --- /dev/null +++ b/uni_modules/uview-plus/components/u-icon/props.js @@ -0,0 +1,91 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 图标类名 + name: { + type: String, + default: () => defProps.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: () => defProps.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: () => defProps.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: () => defProps.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: () => defProps.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: () => defProps.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: () => defProps.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: () => defProps.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: () => defProps.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: () => defProps.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: () => defProps.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: () => defProps.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: () => defProps.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: () => defProps.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: () => defProps.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: () => defProps.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: () => defProps.icon.stop + } + } +}) diff --git a/uni_modules/uview-plus/components/u-icon/u-icon.vue b/uni_modules/uview-plus/components/u-icon/u-icon.vue new file mode 100644 index 0000000..ed610ea --- /dev/null +++ b/uni_modules/uview-plus/components/u-icon/u-icon.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-icon/util.js b/uni_modules/uview-plus/components/u-icon/util.js new file mode 100644 index 0000000..907f8dd --- /dev/null +++ b/uni_modules/uview-plus/components/u-icon/util.js @@ -0,0 +1,68 @@ +import config from '../../libs/config/config'; + +let params = { + loaded: false +}; +// 加载字体方法 +const loadFont = () => { + // console.log('加载字体图标'); + // 全局加载不稳定,默认关闭,需要开启可以配置loadFontOnce。 + if (config.loadFontOnce) { + params.loaded = true; + } + // #ifdef APP-NVUE + // nvue通过weex的dom模块引入字体,相关文档地址如下: + // https://weex.apache.org/zh/docs/modules/dom.html#addrule + const domModule = weex.requireModule('dom'); + domModule.addRule('fontFace', { + 'fontFamily': "uicon-iconfont", + 'src': `url('${config.iconUrl}')` + }); + if (config.customIcon.family) { + domModule.addRule('fontFace', { + 'fontFamily': config.customIcon.family, + 'src': `url('${config.customIcon.url}')` + }); + } + // #endif + // #ifdef APP || H5 || MP-WEIXIN || MP-ALIPAY + uni.loadFontFace({ + global: true, // 是否全局生效。微信小程序 '2.10.0'起支持全局生效,需在 app.vue 中调用。 + family: 'uicon-iconfont', + source: 'url("' + config.iconUrl + '")', + success() { + // console.log('内置字体图标加载成功'); + }, + fail() { + // console.error('内置字体图标加载出错'); + } + }); + if (config.customIcon.family) { + uni.loadFontFace({ + global: true, // 是否全局生效。微信小程序 '2.10.0'起支持全局生效,需在 app.vue 中调用。 + family: config.customIcon.family, + source: 'url("' + config.customIcon.url + '")', + success() { + // console.log('扩展字体图标加载成功'); + }, + fail() { + // console.error('扩展字体图标加载出错'); + } + }); + } + // #endif + // #ifdef APP-NVUE + // if (this.customFontFamily) { + // domModule.addRule('fontFace', { + // 'fontFamily': `${this.customPrefix}-${this.customFontFamily}`, + // 'src': `url('${this.customFontUrl}')` + // }) + // } + // #endif + return true; +}; + +export default { + params: params, + loadFont +} diff --git a/uni_modules/uview-plus/components/u-image/image.js b/uni_modules/uview-plus/components/u-image/image.js new file mode 100644 index 0000000..591b676 --- /dev/null +++ b/uni_modules/uview-plus/components/u-image/image.js @@ -0,0 +1,30 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/image.js + */ +export default { + // image组件 + image: { + src: '', + mode: 'aspectFill', + width: '300', + height: '225', + shape: 'square', + radius: 0, + lazyLoad: true, + showMenuByLongpress: true, + loadingIcon: 'photo', + errorIcon: 'error-circle', + showLoading: true, + showError: true, + fade: true, + webp: false, + duration: 500, + bgColor: '#f3f4f6' + } +} diff --git a/uni_modules/uview-plus/components/u-image/props.js b/uni_modules/uview-plus/components/u-image/props.js new file mode 100644 index 0000000..71bc6db --- /dev/null +++ b/uni_modules/uview-plus/components/u-image/props.js @@ -0,0 +1,86 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 图片地址 + src: { + type: String, + default: () => defProps.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: () => defProps.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: () => defProps.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: () => defProps.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: () => defProps.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: () => defProps.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: () => defProps.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: () => defProps.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: () => defProps.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: () => defProps.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: () => defProps.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: () => defProps.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: () => defProps.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: () => defProps.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: () => defProps.image.bgColor + } + } +}) diff --git a/uni_modules/uview-plus/components/u-image/u-image.vue b/uni_modules/uview-plus/components/u-image/u-image.vue new file mode 100644 index 0000000..24e3b10 --- /dev/null +++ b/uni_modules/uview-plus/components/u-image/u-image.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js b/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js new file mode 100644 index 0000000..f6a5705 --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-anchor/indexAnchor.js @@ -0,0 +1,19 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/indexAnchor.js + */ +export default { + // indexAnchor 组件 + indexAnchor: { + text: '', + color: '#606266', + size: 14, + bgColor: '#f1f1f1', + height: 32 + } +} diff --git a/uni_modules/uview-plus/components/u-index-anchor/props.js b/uni_modules/uview-plus/components/u-index-anchor/props.js new file mode 100644 index 0000000..f07e407 --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-anchor/props.js @@ -0,0 +1,31 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: () => defProps.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: () => defProps.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: () => defProps.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: () => defProps.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: () => defProps.indexAnchor.height + } + } +}) diff --git a/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..4044d53 --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-index-item/props.js b/uni_modules/uview-plus/components/u-index-item/props.js new file mode 100644 index 0000000..3461f1e --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-item/props.js @@ -0,0 +1,8 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + + } +}) diff --git a/uni_modules/uview-plus/components/u-index-item/u-index-item.vue b/uni_modules/uview-plus/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..5d9346a --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-item/u-index-item.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-index-list/indexList.js b/uni_modules/uview-plus/components/u-index-list/indexList.js new file mode 100644 index 0000000..319f1eb --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-list/indexList.js @@ -0,0 +1,21 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/indexList.js + */ +export default { + // indexList 组件 + indexList: { + inactiveColor: '#606266', + activeColor: '#5677fc', + indexList: [], + sticky: true, + customNavHeight: 0, + safeBottomFix: false, + itemMargin: '0rpx' + } +} diff --git a/uni_modules/uview-plus/components/u-index-list/props.js b/uni_modules/uview-plus/components/u-index-list/props.js new file mode 100644 index 0000000..07ec35f --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-list/props.js @@ -0,0 +1,41 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: () => defProps.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: () => defProps.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: () => defProps.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: () => defProps.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: () => defProps.indexList.customNavHeight + }, + // 是否开启底部安全距离适配 + safeBottomFix: { + type: Boolean, + default: () => defProps.indexList.safeBottomFix + }, + //自定义下边距 + itemMargin: { + type: String, + default: () => defProps.indexList.itemMargin + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-index-list/u-index-list.vue b/uni_modules/uview-plus/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..8718637 --- /dev/null +++ b/uni_modules/uview-plus/components/u-index-list/u-index-list.vue @@ -0,0 +1,597 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-input/input.js b/uni_modules/uview-plus/components/u-input/input.js new file mode 100644 index 0000000..c9b66c0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-input/input.js @@ -0,0 +1,50 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-08-20 10:21:55 + * @FilePath : /uview-plus/libs/config/props/input.js + */ +export default { + // index 组件 + input: { + value: '', + type: 'text', + fixed: false, + disabled: false, + disabledColor: '#f5f7fa', + clearable: false, + password: false, + maxlength: 140, + placeholder: null, + placeholderClass: 'input-placeholder', + placeholderStyle: 'color: #c0c4cc', + showWordLimit: false, + confirmType: 'done', + confirmHold: false, + holdKeyboard: false, + focus: false, + autoBlur: false, + disableDefaultPadding: false, + cursor: -1, + cursorSpacing: 30, + selectionStart: -1, + selectionEnd: -1, + adjustPosition: true, + inputAlign: 'left', + fontSize: '15px', + color: '#303133', + prefixIcon: '', + prefixIconStyle: '', + suffixIcon: '', + suffixIconStyle: '', + border: 'surround', + readonly: false, + shape: 'square', + formatter: null, + cursorColor: '#53c21d', + passwordVisibilityToggle: true + } +} diff --git a/uni_modules/uview-plus/components/u-input/props.js b/uni_modules/uview-plus/components/u-input/props.js new file mode 100644 index 0000000..59ace51 --- /dev/null +++ b/uni_modules/uview-plus/components/u-input/props.js @@ -0,0 +1,213 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // #ifdef VUE3 + // 绑定的值 + modelValue: { + type: [String, Number], + default: () => defProps.input.value + }, + // #endif + // #ifdef VUE2 + // 绑定的值 + value: { + type: [String, Number], + default: () => defProps.input.value + }, + // #endif + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: () => defProps.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: () => defProps.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: () => defProps.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: () => defProps.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: false + }, + // 是否仅在聚焦时显示清除控件 + onlyClearableOnFocused: { + type: Boolean, + default: true + }, + // 是否密码类型 + password: { + type: Boolean, + default: () => defProps.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: () => defProps.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: () => defProps.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: () => defProps.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: () => defProps.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: () => defProps.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: () => defProps.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: () => defProps.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: () => defProps.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: () => defProps.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: () => defProps.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: () => defProps.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: () => defProps.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: () => defProps.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: () => defProps.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: () => defProps.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: () => defProps.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: () => defProps.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: () => defProps.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: () => defProps.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: () => defProps.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: () => defProps.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: () => defProps.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: () => defProps.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: () => defProps.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: () => defProps.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: () => defProps.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: () => defProps.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + }, + // 光标颜色 + cursorColor: { + type: String, + default: () => defProps.input.cursorColor + }, + // 密码类型可见性切换 + passwordVisibilityToggle: { + type: Boolean, + default: () => defProps.input.passwordVisibilityToggle + } + } +}) diff --git a/uni_modules/uview-plus/components/u-input/u-input.vue b/uni_modules/uview-plus/components/u-input/u-input.vue new file mode 100644 index 0000000..efd5c54 --- /dev/null +++ b/uni_modules/uview-plus/components/u-input/u-input.vue @@ -0,0 +1,433 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-keyboard/keyboard.js b/uni_modules/uview-plus/components/u-keyboard/keyboard.js new file mode 100644 index 0000000..bf9f760 --- /dev/null +++ b/uni_modules/uview-plus/components/u-keyboard/keyboard.js @@ -0,0 +1,31 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/keyboard.js + */ +import { t } from '../../libs/i18n' +export default { + // 键盘组件 + keyboard: { + mode: 'number', + dotDisabled: false, + tooltip: true, + showTips: true, + tips: '', + showCancel: true, + showConfirm: true, + random: false, + safeAreaInsetBottom: true, + closeOnClickOverlay: true, + show: false, + overlay: true, + zIndex: 10075, + cancelText: t("up.common.cancel"), + confirmText: t("up.common.confirm"), + autoChange: false + } +} diff --git a/uni_modules/uview-plus/components/u-keyboard/props.js b/uni_modules/uview-plus/components/u-keyboard/props.js new file mode 100644 index 0000000..8c5d8ae --- /dev/null +++ b/uni_modules/uview-plus/components/u-keyboard/props.js @@ -0,0 +1,86 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: () => defProps.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: () => defProps.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: () => defProps.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: () => defProps.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: () => defProps.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: () => defProps.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: () => defProps.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: () => defProps.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: () => defProps.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: () => defProps.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: () => defProps.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: () => defProps.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: () => defProps.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: () => defProps.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: () => defProps.keyboard.autoChange + } + } +}) diff --git a/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..5ddd400 --- /dev/null +++ b/uni_modules/uview-plus/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue b/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue new file mode 100644 index 0000000..0a30b44 --- /dev/null +++ b/uni_modules/uview-plus/components/u-lazy-load/u-lazy-load.vue @@ -0,0 +1,261 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-line-progress/lineProgress.js b/uni_modules/uview-plus/components/u-line-progress/lineProgress.js new file mode 100644 index 0000000..74ab100 --- /dev/null +++ b/uni_modules/uview-plus/components/u-line-progress/lineProgress.js @@ -0,0 +1,20 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/lineProgress.js + */ +export default { + // lineProgress 组件 + lineProgress: { + activeColor: '#19be6b', + inactiveColor: '#ececec', + percentage: 0, + showText: true, + height: 12, + fromRight: false, + } +} diff --git a/uni_modules/uview-plus/components/u-line-progress/props.js b/uni_modules/uview-plus/components/u-line-progress/props.js new file mode 100644 index 0000000..2690e29 --- /dev/null +++ b/uni_modules/uview-plus/components/u-line-progress/props.js @@ -0,0 +1,35 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: () => defProps.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: () => defProps.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: () => defProps.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: () => defProps.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: () => defProps.lineProgress.height + }, + // 是否从右往左加载 + fromRight: { + type: Boolean, + default: () => defProps.lineProgress.fromRight + } + } +}) diff --git a/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..d5a93ee --- /dev/null +++ b/uni_modules/uview-plus/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-line/line.js b/uni_modules/uview-plus/components/u-line/line.js new file mode 100644 index 0000000..c4b5dfc --- /dev/null +++ b/uni_modules/uview-plus/components/u-line/line.js @@ -0,0 +1,20 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/line.js + */ +export default { + // line组件 + line: { + color: '#d6d7d9', + length: '100%', + direction: 'row', + hairline: true, + margin: 0, + dashed: false + } +} diff --git a/uni_modules/uview-plus/components/u-line/props.js b/uni_modules/uview-plus/components/u-line/props.js new file mode 100644 index 0000000..6428d3f --- /dev/null +++ b/uni_modules/uview-plus/components/u-line/props.js @@ -0,0 +1,35 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + color: { + type: String, + default: () => defProps.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: () => defProps.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: () => defProps.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: () => defProps.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: () => defProps.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: () => defProps.line.dashed + } + } +}) diff --git a/uni_modules/uview-plus/components/u-line/u-line.vue b/uni_modules/uview-plus/components/u-line/u-line.vue new file mode 100644 index 0000000..7f86b6e --- /dev/null +++ b/uni_modules/uview-plus/components/u-line/u-line.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-link/link.js b/uni_modules/uview-plus/components/u-link/link.js new file mode 100644 index 0000000..8c7042c --- /dev/null +++ b/uni_modules/uview-plus/components/u-link/link.js @@ -0,0 +1,27 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/link.js + */ +import config from '../../libs/config/config' +import { t } from '../../libs/i18n' + +const { + color +} = config +export default { + // link超链接组件props参数 + link: { + color: color['u-primary'], + fontSize: 15, + underLine: false, + href: '', + mpTips: t("up.link.copyed"), + lineColor: '', + text: '' + } +} diff --git a/uni_modules/uview-plus/components/u-link/props.js b/uni_modules/uview-plus/components/u-link/props.js new file mode 100644 index 0000000..d96d824 --- /dev/null +++ b/uni_modules/uview-plus/components/u-link/props.js @@ -0,0 +1,41 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 文字颜色 + color: { + type: String, + default: () => defProps.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: () => defProps.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: () => defProps.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: () => defProps.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: () => defProps.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: () => defProps.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: () => defProps.link.text + } + } +}) diff --git a/uni_modules/uview-plus/components/u-link/u-link.vue b/uni_modules/uview-plus/components/u-link/u-link.vue new file mode 100644 index 0000000..0443f06 --- /dev/null +++ b/uni_modules/uview-plus/components/u-link/u-link.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-list-item/listItem.js b/uni_modules/uview-plus/components/u-list-item/listItem.js new file mode 100644 index 0000000..66d5ccf --- /dev/null +++ b/uni_modules/uview-plus/components/u-list-item/listItem.js @@ -0,0 +1,15 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/listItem.js + */ +export default { + // listItem 组件 + listItem: { + anchor: '' + } +} diff --git a/uni_modules/uview-plus/components/u-list-item/props.js b/uni_modules/uview-plus/components/u-list-item/props.js new file mode 100644 index 0000000..edaa4dc --- /dev/null +++ b/uni_modules/uview-plus/components/u-list-item/props.js @@ -0,0 +1,11 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: () => defProps.listItem.anchor + } + } +}) diff --git a/uni_modules/uview-plus/components/u-list-item/u-list-item.vue b/uni_modules/uview-plus/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..f9cd709 --- /dev/null +++ b/uni_modules/uview-plus/components/u-list-item/u-list-item.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-list/list.js b/uni_modules/uview-plus/components/u-list/list.js new file mode 100644 index 0000000..94010e4 --- /dev/null +++ b/uni_modules/uview-plus/components/u-list/list.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/list.js + */ +export default { + // list 组件 + list: { + showScrollbar: false, + lowerThreshold: 50, + upperThreshold: 0, + scrollTop: 0, + offsetAccuracy: 10, + enableFlex: false, + pagingEnabled: false, + scrollable: true, + scrollIntoView: '', + scrollWithAnimation: false, + enableBackToTop: false, + height: 0, + width: 0, + preLoadScreen: 1 + } +} diff --git a/uni_modules/uview-plus/components/u-list/props.js b/uni_modules/uview-plus/components/u-list/props.js new file mode 100644 index 0000000..9fca829 --- /dev/null +++ b/uni_modules/uview-plus/components/u-list/props.js @@ -0,0 +1,101 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: () => defProps.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: () => defProps.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: () => defProps.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: () => defProps.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: () => defProps.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: () => defProps.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: () => defProps.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: () => defProps.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: () => defProps.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: () => defProps.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: () => defProps.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: () => defProps.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: () => defProps.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: () => defProps.list.preLoadScreen + }, + // 开启自定义下拉刷新 + refresherEnabled: { + type: Boolean, + default: () => false + }, + // 设置自定义下拉刷新阈值 + refresherThreshold: { + type: Number, + default: () => 45 + }, + // 设置自定义下拉刷新默认样式,支持设置 black,white,none,none 表示不使用默认样式 + refresherDefaultStyle: { + type: String, + default: () => 'black' + }, + // 设置自定义下拉刷新区域背景颜色 + refresherBackground: { + type: String, + default: () => '#FFF' + }, + // 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 + refresherTriggered: { + type: Boolean, + default: () => false + } + } +}) diff --git a/uni_modules/uview-plus/components/u-list/u-list.vue b/uni_modules/uview-plus/components/u-list/u-list.vue new file mode 100644 index 0000000..b365225 --- /dev/null +++ b/uni_modules/uview-plus/components/u-list/u-list.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js b/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js new file mode 100644 index 0000000..c51a0a0 --- /dev/null +++ b/uni_modules/uview-plus/components/u-loading-icon/loadingIcon.js @@ -0,0 +1,30 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/loadingIcon.js + */ +import config from '../../libs/config/config' + +const { + color +} = config +export default { + // loading-icon加载中图标组件 + loadingIcon: { + show: true, + color: color['u-tips-color'], + textColor: color['u-tips-color'], + vertical: false, + mode: 'spinner', + size: 24, + textSize: 15, + text: '', + timingFunction: 'ease-in-out', + duration: 1200, + inactiveColor: '' + } +} diff --git a/uni_modules/uview-plus/components/u-loading-icon/props.js b/uni_modules/uview-plus/components/u-loading-icon/props.js new file mode 100644 index 0000000..6a6abf9 --- /dev/null +++ b/uni_modules/uview-plus/components/u-loading-icon/props.js @@ -0,0 +1,61 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示组件 + show: { + type: Boolean, + default: () => defProps.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: () => defProps.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: () => defProps.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: () => defProps.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: () => defProps.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: () => defProps.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: () => defProps.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: () => defProps.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: () => defProps.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: () => defProps.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: () => defProps.loadingIcon.inactiveColor + } + } +}) diff --git a/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..ce07874 --- /dev/null +++ b/uni_modules/uview-plus/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,348 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-loading-page/loadingPage.js b/uni_modules/uview-plus/components/u-loading-page/loadingPage.js new file mode 100644 index 0000000..8bb017a --- /dev/null +++ b/uni_modules/uview-plus/components/u-loading-page/loadingPage.js @@ -0,0 +1,25 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/loadingPage.js + */ +import { t } from '../../libs/i18n' +export default { + // loading-page组件 + loadingPage: { + loadingText: t("up.common.loading2"), + image: '', + loadingMode: 'circle', + loading: false, + bgColor: '#ffffff', + color: '#C8C8C8', + fontSize: 19, + iconSize: 28, + loadingColor: '#C8C8C8', + zIndex: 10 + } +} diff --git a/uni_modules/uview-plus/components/u-loading-page/props.js b/uni_modules/uview-plus/components/u-loading-page/props.js new file mode 100644 index 0000000..185a78f --- /dev/null +++ b/uni_modules/uview-plus/components/u-loading-page/props.js @@ -0,0 +1,57 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: () => defProps.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: () => defProps.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: () => defProps.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: () => defProps.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: () => defProps.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: () => defProps.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: () => defProps.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: () => defProps.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: () => defProps.loadingPage.loadingColor + }, + // 层级 + zIndex: { + type: [Number], + default: () => defProps.loadingPage.zIndex + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..6671125 --- /dev/null +++ b/uni_modules/uview-plus/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-loadmore/loadmore.js b/uni_modules/uview-plus/components/u-loadmore/loadmore.js new file mode 100644 index 0000000..79e125b --- /dev/null +++ b/uni_modules/uview-plus/components/u-loadmore/loadmore.js @@ -0,0 +1,33 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/loadmore.js + */ +import { t } from '../../libs/i18n' +export default { + // loadmore 组件 + loadmore: { + status: 'loadmore', + bgColor: 'transparent', + icon: true, + fontSize: 14, + iconSize: 17, + color: '#606266', + loadingIcon: 'spinner', + loadmoreText: t("up.loadmoe.loadmore"), + loadingText: t("up.common.loading2") + '...', + nomoreText: t("up.loadmoe.nomore"), + isDot: false, + iconColor: '#b7b7b7', + marginTop: 10, + marginBottom: 10, + height: 'auto', + line: false, + lineColor: '#E6E8EB', + dashed: false, + } +} diff --git a/uni_modules/uview-plus/components/u-loadmore/props.js b/uni_modules/uview-plus/components/u-loadmore/props.js new file mode 100644 index 0000000..fb78e39 --- /dev/null +++ b/uni_modules/uview-plus/components/u-loadmore/props.js @@ -0,0 +1,96 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: () => defProps.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: () => defProps.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: () => defProps.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: () => defProps.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: () => defProps.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: () => defProps.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: () => defProps.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: () => defProps.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: () => defProps.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: () => defProps.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: () => defProps.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: () => defProps.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: () => defProps.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: () => defProps.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: () => defProps.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: () => defProps.loadmore.dashed + } + } +}) diff --git a/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..f20b401 --- /dev/null +++ b/uni_modules/uview-plus/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-markdown/marked.esm.js b/uni_modules/uview-plus/components/u-markdown/marked.esm.js new file mode 100644 index 0000000..c1b6a08 --- /dev/null +++ b/uni_modules/uview-plus/components/u-markdown/marked.esm.js @@ -0,0 +1,7 @@ +/** + * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0. + * Original file: /npm/marked@16.1.2/lib/marked.esm.js + * + * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files + */ +function e(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var t={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function n(e){t=e}var r={exec:()=>null};function s(e,t=""){let n="string"==typeof e?e:e.source,r={replace:(e,t)=>{let s="string"==typeof t?t:t.source;return s=s.replace(l.caret,"$1"),n=n.replace(e,s),r},getRegex:()=>new RegExp(n,t)};return r}var l={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[a-zA-Z0-9\u00C0-\u02AF\u0300-\u036F\u0400-\u04FF\u0500-\u052F\u1E00-\u1EFF]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},i=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,a=/(?:[*+-]|\d{1,9}[.)])/,o=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,c=s(o).replace(/bull/g,a).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),h=s(o).replace(/bull/g,a).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),p=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,u=/(?!\s*\])(?:\\.|[^\[\]\\])+/,g=s(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",u).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),k=s(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,a).getRegex(),d="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",f=/|$))/,x=s("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",f).replace("tag",d).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),b=s(p).replace("hr",i).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",d).getRegex(),w={blockquote:s(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",b).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:g,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:i,html:x,lheading:c,list:k,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:b,table:r,text:/^[^\n]+/},m=s("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",i).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",d).getRegex(),y={...w,lheading:h,table:m,paragraph:s(p).replace("hr",i).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",m).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",d).getRegex()},$={...w,html:s("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",f).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:r,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:s(p).replace("hr",i).replace("heading"," *#{1,6} *[^\n]").replace("lheading",c).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},R=/^( {2,}|\\)\n(?!\s*$)/,S=/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~·!¥……()——《》「」『』【】、;:‘’“”,。、]/u,T=/[\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~·!¥……()——《》「」『』【】、;:‘’“”,。、]/,z=/[^a-zA-Z0-9\u4e00-\u9fa5\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~·!¥……()——《》「」『』【】、;:‘’“”,。、]/,A=s(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,T).getRegex(),_=/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}·!¥……()——《》「」『』【】、;:‘’“”,。、]/,P=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,I=s(P,"u").replace(/punct/g,S).getRegex(),L=s(P,"u").replace(/punct/g,_).getRegex(),B="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",C=s(B,"gu").replace(/notPunctSpace/g,z).replace(/punctSpace/g,T).replace(/punct/g,S).getRegex(),q=s(B,"gu").replace(/notPunctSpace/g,/[a-zA-Z0-9\u4e00-\u9fa5~]/).replace(/punctSpace/g,/[\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}·!¥……()——《》「」『』【】、;:‘’“”,。、]/).replace(/punct/g,_).getRegex(),E=s("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,z).replace(/punctSpace/g,T).replace(/punct/g,S).getRegex(),v=s(/\\(punct)/,"gu").replace(/punct/g,S).getRegex(),Z=s(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),D=s(f).replace("(?:--\x3e|$)","--\x3e").getRegex(),M=s("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",D).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),O=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,Q=s(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",O).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),N=s(/^!?\[(label)\]\[(ref)\]/).replace("label",O).replace("ref",u).getRegex(),j=s(/^!?\[(ref)\](?:\[\])?/).replace("ref",u).getRegex(),G={_backpedal:r,anyPunctuation:v,autolink:Z,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<(?! )[^<>]*?>/g,br:R,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:r,emStrongLDelim:I,emStrongRDelimAst:C,emStrongRDelimUnd:E,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:Q,nolink:j,punctuation:A,reflink:N,reflinkSearch:s("reflink|nolink(?!\\()","g").replace("reflink",N).replace("nolink",j).getRegex(),tag:M,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},K=e=>J[e];function V(e,t){if(t){if(l.escapeTest.test(e))return e.replace(l.escapeReplace,K)}else if(l.escapeTestNoEncode.test(e))return e.replace(l.escapeReplaceNoEncode,K);return e}function Y(e){try{e=encodeURI(e).replace(l.percentDecode,"%")}catch{return null}return e}function ee(e,t){let n=e.replace(l.findPipe,((e,t,n)=>{let r=!1,s=t;for(;--s>=0&&"\\"===n[s];)r=!r;return r?"|":" |"})).split(l.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:te(e,"\n")}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(null===r)return t;let s=r[1];return t.split("\n").map((e=>{let t=e.match(n.other.beginningSpace);if(null===t)return e;let[r]=t;return r.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=te(e,"#");(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:te(t[0],"\n")}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=te(t[0],"\n").split("\n"),n="",r="",s=[];for(;e.length>0;){let t,l=!1,i=[];for(t=0;t1,s={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let l=this.rules.other.listItemRegex(n),i=!1;for(;e;){let n=!1,r="",a="";if(!(t=l.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let o=t[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,(e=>" ".repeat(3*e.length))),c=e.split("\n",1)[0],h=!o.trim(),p=0;if(this.options.pedantic?(p=2,a=o.trimStart()):h?p=t[1].length+1:(p=t[2].search(this.rules.other.nonSpaceChar),p=p>4?1:p,a=o.slice(p),p+=t[1].length),h&&this.rules.other.blankLine.test(c)&&(r+=c+"\n",e=e.substring(c.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(p),n=this.rules.other.hrRegex(p),s=this.rules.other.fencesBeginRegex(p),l=this.rules.other.headingBeginRegex(p),i=this.rules.other.htmlBeginRegex(p);for(;e;){let u,g=e.split("\n",1)[0];if(c=g,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),u=c):u=c.replace(this.rules.other.tabCharGlobal," "),s.test(c)||l.test(c)||i.test(c)||t.test(c)||n.test(c))break;if(u.search(this.rules.other.nonSpaceChar)>=p||!c.trim())a+="\n"+u.slice(p);else{if(h||o.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||s.test(o)||l.test(o)||n.test(o))break;a+="\n"+c}!h&&!c.trim()&&(h=!0),r+=g+"\n",e=e.substring(g.length+1),o=u.slice(p)}}s.loose||(i?s.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(i=!0));let u,g=null;this.options.gfm&&(g=this.rules.other.listIsTask.exec(a),g&&(u="[ ] "!==g[0],a=a.replace(this.rules.other.listReplaceTask,""))),s.items.push({type:"list_item",raw:r,task:!!g,checked:u,loose:!1,text:a,tokens:[]}),s.raw+=r}let a=s.items.at(-1);if(!a)return;a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd(),s.raw=s.raw.trimEnd();for(let e=0;e"space"===e.type)),n=t.length>0&&t.some((e=>this.rules.other.anyLine.test(e.raw)));s.loose=n}if(s.loose)for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:l.align[t]}))));return l}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=te(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let r=0;r0?-2:-1}(t[2],"()");if(-2===e)return;if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),ne(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return ne(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!r[1]&&!r[2]||!n||this.rules.inline.punctuation.exec(n))){let n,s,l=[...r[0]].length-1,i=l,a=0,o="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(o.lastIndex=0,t=t.slice(-1*e.length+l);null!=(r=o.exec(t));){if(n=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!n)continue;if(s=[...n].length,r[3]||r[4]){i+=s;continue}if((r[5]||r[6])&&l%3&&!((l+s)%3)){a+=s;continue}if(i-=s,i>0)continue;s=Math.min(s,s+i+a);let t=[...r[0]][0].length,o=e.slice(0,l+r.index+t+s);if(Math.min(l,s)%2){let e=o.slice(1,-1);return{type:"em",raw:o,text:e,tokens:this.lexer.inlineTokens(e)}}let c=o.slice(2,-2);return{type:"strong",raw:o,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=t[1],n="mailto:"+e):(e=t[1],n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=t[0],n="mailto:"+e;else{let r;do{r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(r!==t[0]);e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},se=class e{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||t,this.options.tokenizer=this.options.tokenizer||new re,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:l,block:F.normal,inline:U.normal};this.options.pedantic?(n.block=F.pedantic,n.inline=U.pedantic):this.options.gfm&&(n.block=F.gfm,this.options.breaks?n.inline=U.breaks:n.inline=U.gfm),this.tokenizer.rules=n}static get rules(){return{block:F,inline:U}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(l.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let e=0;e!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0))))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);1===r.raw.length&&void 0!==n?n.raw+="\n":t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let s=e;if(this.options.extensions?.startBlock){let t,n=1/0,r=e.slice(1);this.options.extensions.startBlock.forEach((e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))})),n<1/0&&n>=0&&(s=e.substring(0,n+1))}if(this.state.top&&(r=this.tokenizer.paragraph(s))){let l=t.at(-1);n&&"paragraph"===l?.type?(l.raw+=(l.raw.endsWith("\n")?"":"\n")+r.raw,l.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):t.push(r),n=s.length!==e.length,e=e.substring(r.raw.length)}else if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r)}else if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(n));)e.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.anyPunctuation.exec(n));)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(n));)n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let s=!1,l="";for(;e;){let r;if(s||(l=""),s=!1,this.options.extensions?.inline?.some((n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0))))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);"text"===r.type&&"text"===n?.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,l)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startInline){let t,n=1/0,r=e.slice(1);this.options.extensions.startInline.forEach((e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))})),n<1/0&&n>=0&&(i=e.substring(0,n+1))}if(r=this.tokenizer.inlineText(i)){e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(l=r.raw.slice(-1)),s=!0;let n=t.at(-1);"text"===n?.type?(n.raw+=r.raw,n.text+=r.text):t.push(r)}else if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return t}},le=class{options;parser;constructor(e){this.options=e||t}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(l.notSpaceStart)?.[0],s=e.replace(l.endingNewline,"")+"\n";return r?'
'+(n?s:V(s,!0))+"
\n":"
"+(n?s:V(s,!0))+"
\n"}blockquote({tokens:e}){return`
\n${this.parser.parse(e)}
\n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}\n`}hr(e){return"
\n"}list(e){let t=e.ordered,n=e.start,r="";for(let t=0;t\n"+r+"\n"}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?"paragraph"===e.tokens[0]?.type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+V(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • \n`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    \n`}table(e){let t="",n="";for(let t=0;t${r}`),"\n\n"+t+"\n"+r+"
    \n"}tablerow({text:e}){return`\n${e}\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${V(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),s=Y(e);if(null===s)return r;let l='
    ",l}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=Y(e);if(null===s)return V(n);let l=`${n}{let s=e[r].flat(1/0);n=n.concat(this.walkTokens(s,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){let t=this.defaults.renderer||new le(this.defaults);for(let n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=n,s=e.renderer[r],l=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=l.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new re(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=n,s=e.tokenizer[r],l=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=l.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new oe;for(let n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=n,s=e.hooks[r],l=t[r];oe.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async)return Promise.resolve(s.call(t,e)).then((e=>l.call(t,e)));let n=s.call(t,e);return l.call(t,n)}:t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=l.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return se.lex(e,t??this.defaults)}parser(e,t){return ae.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},s={...this.defaults,...r},l=this.onError(!!s.silent,!!s.async);if(!0===this.defaults.async&&!1===r.async)return l(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let i=s.hooks?s.hooks.provideLexer():e?se.lex:se.lexInline,a=s.hooks?s.hooks.provideParser():e?ae.parse:ae.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(t):t).then((e=>i(e,s))).then((e=>s.hooks?s.hooks.processAllTokens(e):e)).then((e=>s.walkTokens?Promise.all(this.walkTokens(e,s.walkTokens)).then((()=>e)):e)).then((e=>a(e,s))).then((e=>s.hooks?s.hooks.postprocess(e):e)).catch(l);try{s.hooks&&(t=s.hooks.preprocess(t));let e=i(t,s);s.hooks&&(e=s.hooks.processAllTokens(e)),s.walkTokens&&this.walkTokens(e,s.walkTokens);let n=a(e,s);return s.hooks&&(n=s.hooks.postprocess(n)),n}catch(e){return l(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="

    An error occurred:

    "+V(n.message+"",!0)+"
    ";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},he=new ce;function pe(e,t){return he.parse(e,t)}pe.options=pe.setOptions=function(e){return he.setOptions(e),pe.defaults=he.defaults,n(pe.defaults),pe},pe.getDefaults=e,pe.defaults=t,pe.use=function(...e){return he.use(...e),pe.defaults=he.defaults,n(pe.defaults),pe},pe.walkTokens=function(e,t){return he.walkTokens(e,t)},pe.parseInline=he.parseInline,pe.Parser=ae,pe.parser=ae.parse,pe.Renderer=le,pe.TextRenderer=ie,pe.Lexer=se,pe.lexer=se.lex,pe.Tokenizer=re,pe.Hooks=oe,pe.parse=pe;var ue=pe.options,ge=pe.setOptions,ke=pe.use,de=pe.walkTokens,fe=pe.parseInline,xe=pe,be=ae.parse,we=se.lex;export{oe as Hooks,se as Lexer,ce as Marked,ae as Parser,le as Renderer,ie as TextRenderer,re as Tokenizer,t as defaults,e as getDefaults,we as lexer,pe as marked,ue as options,xe as parse,fe as parseInline,be as parser,ge as setOptions,ke as use,de as walkTokens};export default null; diff --git a/uni_modules/uview-plus/components/u-markdown/u-markdown.vue b/uni_modules/uview-plus/components/u-markdown/u-markdown.vue new file mode 100644 index 0000000..8312b88 --- /dev/null +++ b/uni_modules/uview-plus/components/u-markdown/u-markdown.vue @@ -0,0 +1,300 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-plus/components/u-message-input/u-message-input.vue b/uni_modules/uview-plus/components/u-message-input/u-message-input.vue new file mode 100644 index 0000000..0da5f1c --- /dev/null +++ b/uni_modules/uview-plus/components/u-message-input/u-message-input.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-modal/modal.js b/uni_modules/uview-plus/components/u-modal/modal.js new file mode 100644 index 0000000..59d8abc --- /dev/null +++ b/uni_modules/uview-plus/components/u-modal/modal.js @@ -0,0 +1,36 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/modal.js + */ +import { t } from '../../libs/i18n' +export default { + // modal 组件 + modal: { + show: false, + title: '', + content: '', + confirmText: t("up.common.confirm"), + cancelText: t("up.common.cancel"), + showConfirmButton: true, + showCancelButton: false, + confirmColor: '#2979ff', + cancelColor: '#606266', + buttonReverse: false, + zoom: true, + asyncClose: false, + closeOnClickOverlay: false, + negativeTop: 0, + width: '650rpx', + confirmButtonShape: '', + duration: 400, + contentTextAlign: 'left', + asyncCloseTip: t("up.common.inOperation") + '...', + asyncCancelClose: false, + contentStyle: {} + } +} diff --git a/uni_modules/uview-plus/components/u-modal/props.js b/uni_modules/uview-plus/components/u-modal/props.js new file mode 100644 index 0000000..0f0177b --- /dev/null +++ b/uni_modules/uview-plus/components/u-modal/props.js @@ -0,0 +1,111 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否展示modal + show: { + type: Boolean, + default: () => defProps.modal.show + }, + // 标题 + title: { + type: [String], + default: () => defProps.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: () => defProps.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: () => defProps.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: () => defProps.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: () => defProps.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: () => defProps.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: () => defProps.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: () => defProps.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: () => defProps.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: () => defProps.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: () => defProps.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: () => defProps.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: () => defProps.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: () => defProps.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: () => defProps.modal.confirmButtonShape + }, + // 弹窗动画过度时间 + duration: { + type: [Number], + default: defProps.modal.duration + }, + // 文案对齐方式 + contentTextAlign: { + type: String, + default: () => defProps.modal.contentTextAlign + }, + // 异步确定时如果点击了取消时候的提示文案 + asyncCloseTip: { + type: String, + default: () => defProps.modal.asyncCloseTip + }, + // 是否异步关闭,只对取消按钮有效 + asyncCancelClose: { + type: Boolean, + default: () => defProps.modal.asyncCancelClose + }, + // 内容样式 + contentStyle: { + type: Object, + default: () => defProps.modal.contentStyle + } + } +}) diff --git a/uni_modules/uview-plus/components/u-modal/u-modal.vue b/uni_modules/uview-plus/components/u-modal/u-modal.vue new file mode 100644 index 0000000..eab8f72 --- /dev/null +++ b/uni_modules/uview-plus/components/u-modal/u-modal.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-navbar-mini/props.js b/uni_modules/uview-plus/components/u-navbar-mini/props.js new file mode 100644 index 0000000..57d5b4e --- /dev/null +++ b/uni_modules/uview-plus/components/u-navbar-mini/props.js @@ -0,0 +1,51 @@ +import { defineMixin } from '../../libs/vue' + +export const props = defineMixin({ + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: () => true + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: () => true + }, + // 左边的图标 + leftIcon: { + type: String, + default: 'arrow-leftward' + }, + // 背景颜色 + bgColor: { + type: String, + default: () => 'rgba(0,0,0,.15)' + }, + // 导航栏高度 + height: { + type: [String, Number], + default: () => '32px' + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: '20px' + }, + // 图标的颜色 + iconColor: { + type: String, + default: '#fff' + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: () => true + }, + // 首页路径 + homeUrl: { + type: [String], + default: '' + } + } +}) diff --git a/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue b/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue new file mode 100644 index 0000000..be546d7 --- /dev/null +++ b/uni_modules/uview-plus/components/u-navbar-mini/u-navbar-mini.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-navbar/navbar.js b/uni_modules/uview-plus/components/u-navbar/navbar.js new file mode 100644 index 0000000..e268b35 --- /dev/null +++ b/uni_modules/uview-plus/components/u-navbar/navbar.js @@ -0,0 +1,33 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/navbar.js + */ +import color from '../../libs/config/color' +export default { + // navbar 组件 + navbar: { + safeAreaInsetTop: true, + placeholder: false, + fixed: true, + border: false, + leftIcon: 'arrow-left', + leftText: '', + rightText: '', + rightIcon: '', + title: '', + titleColor: '', + bgColor: '#ffffff', + titleWidth: '400rpx', + height: '44px', + leftIconSize: 20, + leftIconColor: color.mainColor, + autoBack: false, + titleStyle: '' + } + +} diff --git a/uni_modules/uview-plus/components/u-navbar/props.js b/uni_modules/uview-plus/components/u-navbar/props.js new file mode 100644 index 0000000..b66f87e --- /dev/null +++ b/uni_modules/uview-plus/components/u-navbar/props.js @@ -0,0 +1,97 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' + +export const props = defineMixin({ + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: () => defProps.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: () => defProps.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: () => defProps.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: () => defProps.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: () => defProps.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: () => defProps.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: () => defProps.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: () => defProps.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: () => defProps.navbar.title + }, + // 标题颜色 + titleColor: { + type: String, + default: () => defProps.navbar.titleColor + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.navbar.bgColor + }, + // 状态栏背景颜色 不写会使用背景颜色bgColor + statusBarBgColor: { + type: String, + default: () => '' + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: () => defProps.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: () => defProps.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: () => defProps.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: () => defProps.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: () => defProps.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: () => defProps.navbar.titleStyle + } + } +}) diff --git a/uni_modules/uview-plus/components/u-navbar/u-navbar.vue b/uni_modules/uview-plus/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..08945f2 --- /dev/null +++ b/uni_modules/uview-plus/components/u-navbar/u-navbar.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-no-network/noNetwork.js b/uni_modules/uview-plus/components/u-no-network/noNetwork.js new file mode 100644 index 0000000..96bb796 --- /dev/null +++ b/uni_modules/uview-plus/components/u-no-network/noNetwork.js @@ -0,0 +1,18 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/noNetwork.js + */ +import { t } from '../../libs/i18n' +export default { + // noNetwork + noNetwork: { + tips: t("up.noNetwork.text"), + zIndex: '', + image: 'data:image/png;base64,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' + } +} diff --git a/uni_modules/uview-plus/components/u-no-network/props.js b/uni_modules/uview-plus/components/u-no-network/props.js new file mode 100644 index 0000000..1091cf5 --- /dev/null +++ b/uni_modules/uview-plus/components/u-no-network/props.js @@ -0,0 +1,21 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 页面文字提示 + tips: { + type: String, + default: () => defProps.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: () => defProps.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: () => defProps.noNetwork.image + } + } +}) diff --git a/uni_modules/uview-plus/components/u-no-network/u-no-network.vue b/uni_modules/uview-plus/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..e9dd03b --- /dev/null +++ b/uni_modules/uview-plus/components/u-no-network/u-no-network.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js b/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js new file mode 100644 index 0000000..59e930b --- /dev/null +++ b/uni_modules/uview-plus/components/u-notice-bar/noticeBar.js @@ -0,0 +1,28 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/noticeBar.js + */ +export default { + // noticeBar + noticeBar: { + text: [], + direction: 'row', + step: false, + icon: 'volume', + mode: '', + color: '#f9ae3d', + bgColor: '#fdf6ec', + speed: 80, + fontSize: 14, + duration: 2000, + disableTouch: true, + url: '', + linkType: 'navigateTo', + justifyContent: 'flex-start' + } +} diff --git a/uni_modules/uview-plus/components/u-notice-bar/props.js b/uni_modules/uview-plus/components/u-notice-bar/props.js new file mode 100644 index 0000000..2dd91af --- /dev/null +++ b/uni_modules/uview-plus/components/u-notice-bar/props.js @@ -0,0 +1,76 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: () => defProps.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: () => defProps.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: () => defProps.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: () => defProps.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: () => defProps.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: () => defProps.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: () => defProps.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: () => defProps.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: () => defProps.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: () => defProps.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: () => defProps.noticeBar.linkType + }, + justifyContent: { + type: String, + default: () => defProps.noticeBar.justifyContent + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..32de362 --- /dev/null +++ b/uni_modules/uview-plus/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,105 @@ + + + + diff --git a/uni_modules/uview-plus/components/u-notify/notify.js b/uni_modules/uview-plus/components/u-notify/notify.js new file mode 100644 index 0000000..142760e --- /dev/null +++ b/uni_modules/uview-plus/components/u-notify/notify.js @@ -0,0 +1,22 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/notify.js + */ +export default { + // notify组件 + notify: { + top: 0, + type: 'primary', + color: '#ffffff', + bgColor: '', + message: '', + duration: 3000, + fontSize: 15, + safeAreaInsetTop: false + } +} diff --git a/uni_modules/uview-plus/components/u-notify/props.js b/uni_modules/uview-plus/components/u-notify/props.js new file mode 100644 index 0000000..fdb01b4 --- /dev/null +++ b/uni_modules/uview-plus/components/u-notify/props.js @@ -0,0 +1,51 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: () => defProps.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: () => defProps.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: () => defProps.notify.type + }, + // 字体颜色 + color: { + type: String, + default: () => defProps.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: () => defProps.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: () => defProps.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: () => defProps.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: () => defProps.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: () => defProps.notify.safeAreaInsetTop + } + } +}) diff --git a/uni_modules/uview-plus/components/u-notify/u-notify.vue b/uni_modules/uview-plus/components/u-notify/u-notify.vue new file mode 100644 index 0000000..2970f4d --- /dev/null +++ b/uni_modules/uview-plus/components/u-notify/u-notify.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-number-box/numberBox.js b/uni_modules/uview-plus/components/u-number-box/numberBox.js new file mode 100644 index 0000000..8d79ab7 --- /dev/null +++ b/uni_modules/uview-plus/components/u-number-box/numberBox.js @@ -0,0 +1,40 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/numberBox.js + */ +export default { + // 步进器组件 + numberBox: { + name: '', + value: 0, + min: 1, + max: Number.MAX_SAFE_INTEGER, + step: 1, + integer: false, + disabled: false, + disabledInput: false, + asyncChange: false, + inputWidth: 35, + showMinus: true, + showPlus: true, + decimalLength: null, + longPress: true, + color: '#323233', + buttonWidth: 30, + buttonSize: 30, + buttonRadius: '0px', + bgColor: '#EBECEE', + disabledBgColor: '#f7f8fa', + inputBgColor: '#EBECEE', + cursorSpacing: 100, + disableMinus: false, + disablePlus: false, + iconStyle: '', + miniMode: false + } +} diff --git a/uni_modules/uview-plus/components/u-number-box/props.js b/uni_modules/uview-plus/components/u-number-box/props.js new file mode 100644 index 0000000..ada9952 --- /dev/null +++ b/uni_modules/uview-plus/components/u-number-box/props.js @@ -0,0 +1,145 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: () => defProps.numberBox.name + }, + // #ifdef VUE2 + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: () => defProps.numberBox.value + }, + // #endif + // #ifdef VUE3 + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + modelValue: { + type: [String, Number], + default: () => defProps.numberBox.value + }, + // #endif + // 最小值 + min: { + type: [String, Number], + default: () => defProps.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: () => defProps.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: () => defProps.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: () => defProps.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: () => defProps.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: () => defProps.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: () => defProps.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: () => defProps.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: () => defProps.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: () => defProps.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: () => defProps.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: () => defProps.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: () => defProps.numberBox.color + }, + // 按钮宽度 + buttonWidth: { + type: [String, Number], + default: () => defProps.numberBox.buttonWidth + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: () => defProps.numberBox.buttonSize + }, + // 按钮圆角 + buttonRadius: { + type: [String], + default: () => defProps.numberBox.buttonRadius + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: () => defProps.numberBox.bgColor + }, + // 按钮禁用背景色 + disabledBgColor: { + type: String, + default: () => defProps.numberBox.disabledBgColor + }, + // 输入框背景颜色 + inputBgColor: { + type: String, + default: () => defProps.numberBox.inputBgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: () => defProps.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: () => defProps.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: () => defProps.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: () => defProps.numberBox.iconStyle + }, + // 迷你模式 + miniMode: { + type: Boolean, + default: () => defProps.numberBox.miniMode + }, + } +}) diff --git a/uni_modules/uview-plus/components/u-number-box/u-number-box.vue b/uni_modules/uview-plus/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..09ae4f5 --- /dev/null +++ b/uni_modules/uview-plus/components/u-number-box/u-number-box.vue @@ -0,0 +1,478 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js b/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js new file mode 100644 index 0000000..f94be24 --- /dev/null +++ b/uni_modules/uview-plus/components/u-number-keyboard/numberKeyboard.js @@ -0,0 +1,17 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/numberKeyboard.js + */ +export default { + // 数字键盘 + numberKeyboard: { + mode: 'number', + dotDisabled: false, + random: false + } +} diff --git a/uni_modules/uview-plus/components/u-number-keyboard/props.js b/uni_modules/uview-plus/components/u-number-keyboard/props.js new file mode 100644 index 0000000..d853858 --- /dev/null +++ b/uni_modules/uview-plus/components/u-number-keyboard/props.js @@ -0,0 +1,21 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: () => defProps.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: () => defProps.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: () => defProps.numberKeyboard.random + } + } +}) diff --git a/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..2290793 --- /dev/null +++ b/uni_modules/uview-plus/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-overlay/overlay.js b/uni_modules/uview-plus/components/u-overlay/overlay.js new file mode 100644 index 0000000..89f1da3 --- /dev/null +++ b/uni_modules/uview-plus/components/u-overlay/overlay.js @@ -0,0 +1,18 @@ +/* + * @Author : LQ + * @Description : + * @version : 3.0 + * @Date : 2021-08-20 16:44:21 + * @LastAuthor : jry + * @lastTime : 2025-12-19 08:55:21 + * @FilePath : /uview-plus/libs/config/props/overlay.js + */ +export default { + // overlay组件 + overlay: { + show: false, + zIndex: 10070, + duration: 300, + opacity: 0.5 + } +} diff --git a/uni_modules/uview-plus/components/u-overlay/props.js b/uni_modules/uview-plus/components/u-overlay/props.js new file mode 100644 index 0000000..39f16f3 --- /dev/null +++ b/uni_modules/uview-plus/components/u-overlay/props.js @@ -0,0 +1,26 @@ +import { defineMixin } from '../../libs/vue' +import defProps from '../../libs/config/props.js' +export const props = defineMixin({ + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: () => defProps.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: () => defProps.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: () => defProps.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: () => defProps.overlay.opacity + } + } +}) diff --git a/uni_modules/uview-plus/components/u-overlay/u-overlay.vue b/uni_modules/uview-plus/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..c2c007b --- /dev/null +++ b/uni_modules/uview-plus/components/u-overlay/u-overlay.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-pagination/u-pagination.vue b/uni_modules/uview-plus/components/u-pagination/u-pagination.vue new file mode 100644 index 0000000..b256aa6 --- /dev/null +++ b/uni_modules/uview-plus/components/u-pagination/u-pagination.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/uni_modules/uview-plus/components/u-parse/node/node.vue b/uni_modules/uview-plus/components/u-parse/node/node.vue new file mode 100644 index 0000000..bc5b262 --- /dev/null +++ b/uni_modules/uview-plus/components/u-parse/node/node.vue @@ -0,0 +1,600 @@ +