From cb0af8c38467791958d3a0a6e912c8a4a493da6c Mon Sep 17 00:00:00 2001 From: JaylenTech <350683609@qq.com> Date: Wed, 29 Dec 2021 11:14:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E9=B8=9FUI=20V1.0.0=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 3 + .hbuilderx/launch.json | 20 + App.vue | 91 ++ README.md | 3 + basicPage/avatar/avatar.vue | 272 ++++ basicPage/badge/badge.vue | 200 +++ basicPage/border/border.vue | 139 ++ basicPage/button/button.vue | 230 +++ basicPage/color/color.vue | 710 ++++++++ basicPage/flex-layout/flex-layout.vue | 574 +++++++ basicPage/grid-layout/grid-layout.vue | 169 ++ basicPage/icon/icon.vue | 168 ++ basicPage/icon/iconfont.js | 3 + basicPage/shadow/shadow.vue | 118 ++ basicPage/tag/tag.vue | 259 +++ basicPage/test/test.vue | 245 +++ componentsPage/action-sheet/action-sheet.vue | 139 ++ componentsPage/calendar/calendar.vue | 213 +++ componentsPage/collapse/collapse.vue | 194 +++ componentsPage/count-down/count-down.vue | 168 ++ componentsPage/count-scroll/count-scroll.vue | 110 ++ componentsPage/count-to/count-to.vue | 110 ++ componentsPage/form/form.vue | 523 ++++++ componentsPage/image-upload/image-upload.vue | 273 ++++ componentsPage/index-list/index-list.vue | 91 ++ componentsPage/keyboard/keyboard.vue | 324 ++++ componentsPage/list/list.vue | 306 ++++ componentsPage/loading/loading.vue | 105 ++ componentsPage/mock/index.list.js | 585 +++++++ componentsPage/modal/modal.vue | 277 ++++ componentsPage/nav-bar/nav-bar.vue | 148 ++ componentsPage/notice-bar/notice-bar.vue | 292 ++++ componentsPage/number-box/number-box.vue | 171 ++ componentsPage/picker/picker.vue | 303 ++++ componentsPage/popup/popup.vue | 240 +++ componentsPage/progress/progress.vue | 204 +++ componentsPage/rate/rate.vue | 177 ++ componentsPage/read-more/read-more.vue | 179 ++ componentsPage/scroll-list/scroll-list.vue | 148 ++ componentsPage/select/select.vue | 377 +++++ componentsPage/sign-board/sign-board.vue | 134 ++ componentsPage/slider/slider.vue | 198 +++ componentsPage/steps/steps.vue | 142 ++ componentsPage/sticky/sticky.vue | 89 + componentsPage/swipe-action/swipe-action.vue | 226 +++ componentsPage/swiper/swiper.vue | 224 +++ componentsPage/switch/switch.vue | 131 ++ componentsPage/tabs/tabs.vue | 251 +++ componentsPage/time-line/time-line.vue | 223 +++ componentsPage/tips/tips.vue | 133 ++ componentsPage/toast/toast.vue | 139 ++ .../verification-code/verification-code.vue | 158 ++ index.html | 14 + libs/components/dynamic-demo-template.vue | 680 ++++++++ libs/components/nav-index-button.vue | 169 ++ libs/mixin/dynamic_demo_mixin.js | 52 + libs/mixin/template_page_mixin.js | 33 + main.js | 24 + manifest.json | 86 + mock/basic_page.js | 57 + mock/components_page.js | 206 +++ mock/template_page.js | 107 ++ pages.json | 418 +++++ pages/basic/basic.vue | 157 ++ pages/components/components.vue | 167 ++ pages/index/index.vue | 116 ++ pages/template/template.vue | 167 ++ pages/tuniao/tuniao.vue | 336 ++++ static/css/components/demo_page_common.scss | 193 +++ static/css/templatePage/custom_nav_bar.scss | 38 + static/favicon.ico | Bin 0 -> 67646 bytes store/$t.mixin.js | 28 + store/index.js | 75 + template.h5.html | 38 + templatePage/animate/hollow/hollow.vue | 148 ++ templatePage/animate/loading/loading.vue | 265 +++ templatePage/animate/particle/particle.vue | 149 ++ templatePage/animate/photo/photo.vue | 264 +++ templatePage/health/qrcode/qrcode.vue | 519 ++++++ templatePage/home/course/course.vue | 647 ++++++++ templatePage/home/design/design.vue | 527 ++++++ templatePage/home/job/job.vue | 439 +++++ templatePage/home/music/music.vue | 704 ++++++++ templatePage/home/screen/screen.vue | 604 +++++++ templatePage/home/wallpaper/wallpaper.vue | 534 ++++++ templatePage/life/browser/browser.vue | 238 +++ templatePage/life/fullpage/fullpage.vue | 159 ++ templatePage/life/plus/plus.vue | 150 ++ templatePage/login/demo1/demo1.vue | 414 +++++ templatePage/login/demo2/demo2.vue | 495 ++++++ tuniao-ui/README.md | 4 + .../tn-action-sheet/tn-action-sheet.vue | 202 +++ .../tn-avatar-group/tn-avatar-group.vue | 101 ++ tuniao-ui/components/tn-avatar/tn-avatar.vue | 298 ++++ tuniao-ui/components/tn-badge/tn-badge.vue | 172 ++ tuniao-ui/components/tn-button/tn-button.vue | 298 ++++ .../components/tn-calendar/tn-calendar.vue | 707 ++++++++ .../tn-car-keyboard/tn-car-keyboard.vue | 320 ++++ .../tn-checkbox-group/tn-checkbox-group.vue | 134 ++ .../components/tn-checkbox/tn-checkbox.vue | 328 ++++ .../tn-circle-progress/tn-circle-progress.vue | 223 +++ .../tn-collapse-item/tn-collapse-item.vue | 232 +++ .../components/tn-collapse/tn-collapse.vue | 98 ++ .../tn-color-icon/tn-color-icon.vue | 318 ++++ .../tn-column-notice/tn-column-notice.vue | 251 +++ .../tn-count-down/tn-count-down.vue | 314 ++++ .../tn-count-scroll/tn-count-scroll.vue | 171 ++ .../components/tn-count-to/tn-count-to.vue | 231 +++ .../components/tn-form-item/tn-form-item.vue | 457 ++++++ tuniao-ui/components/tn-form/tn-form.vue | 139 ++ .../components/tn-grid-item/tn-grid-item.vue | 114 ++ tuniao-ui/components/tn-grid/tn-grid.vue | 111 ++ .../tn-image-upload/tn-image-upload.vue | 644 ++++++++ .../tn-index-anchor/tn-index-anchor.vue | 90 + .../tn-index-list/tn-index-list.vue | 361 ++++ tuniao-ui/components/tn-input/tn-input.vue | 427 +++++ .../components/tn-keyboard/tn-keyboard.vue | 220 +++ .../tn-line-progress/tn-line-progress.vue | 143 ++ .../components/tn-list-cell/tn-list-cell.vue | 209 +++ .../components/tn-list-view/tn-list-view.vue | 181 +++ .../components/tn-loading/tn-loading.vue | 100 ++ tuniao-ui/components/tn-modal/tn-modal.vue | 246 +++ .../components/tn-nav-bar/tn-nav-bar.vue | 325 ++++ .../tn-notice-bar/tn-notice-bar.vue | 209 +++ .../tn-number-box/tn-number-box.vue | 401 +++++ .../tn-number-keyboard/tn-number-keyboard.vue | 182 +++ tuniao-ui/components/tn-picker/tn-picker.vue | 723 +++++++++ tuniao-ui/components/tn-popup/tn-popup.vue | 484 ++++++ .../tn-radio-group/tn-radio-group.vue | 124 ++ tuniao-ui/components/tn-radio/tn-radio.vue | 265 +++ tuniao-ui/components/tn-rate/tn-rate.vue | 334 ++++ .../components/tn-read-more/tn-read-more.vue | 222 +++ .../tn-row-notice/tn-row-notice.vue | 301 ++++ .../tn-scroll-list/tn-scroll-list.vue | 177 ++ tuniao-ui/components/tn-select/tn-select.vue | 380 +++++ .../tn-sign-board/tn-sign-board.vue | 690 ++++++++ tuniao-ui/components/tn-slider/tn-slider.vue | 254 +++ tuniao-ui/components/tn-steps/tn-steps.vue | 330 ++++ tuniao-ui/components/tn-sticky/tn-sticky.vue | 183 +++ .../tn-subsection/tn-subsection.vue | 381 +++++ .../components/tn-swipe-action-item/index.wxs | 220 +++ .../tn-swipe-action-item.vue | 229 +++ .../tn-swipe-action/tn-swipe-action.vue | 61 + tuniao-ui/components/tn-swiper/tn-swiper.vue | 363 +++++ tuniao-ui/components/tn-switch/tn-switch.vue | 241 +++ tuniao-ui/components/tn-tabbar/tn-tabbar.vue | 575 +++++++ .../tn-tabs-swiper/tn-tabs-swiper.vue | 444 +++++ tuniao-ui/components/tn-tabs/tn-tabs.vue | 340 ++++ tuniao-ui/components/tn-tag/tn-tag.vue | 214 +++ .../tn-time-line-item/tn-time-line-item.vue | 71 + .../tn-time-line-item.vue_bk | 71 + .../components/tn-time-line/tn-time-line.vue | 39 + .../tn-time-line/tn-time-line.vue_bk | 39 + tuniao-ui/components/tn-tips/tn-tips.vue | 240 +++ tuniao-ui/components/tn-toast/tn-toast.vue | 227 +++ .../tn-verification-code.vue | 149 ++ tuniao-ui/iconfont.css | 1446 +++++++++++++++++ tuniao-ui/index.js | 73 + tuniao-ui/index.scss | 13 + tuniao-ui/libs/config/color.js | 15 + tuniao-ui/libs/config/zIndex.js | 12 + tuniao-ui/libs/css/color.scss | 563 +++++++ tuniao-ui/libs/css/main.scss | 713 ++++++++ tuniao-ui/libs/css/style.h5.scss | 38 + tuniao-ui/libs/css/style.mp.scss | 55 + tuniao-ui/libs/function/$parent.js | 18 + tuniao-ui/libs/function/array.js | 22 + tuniao-ui/libs/function/colorUtils.js | 266 +++ tuniao-ui/libs/function/deepClone.js | 29 + tuniao-ui/libs/function/messageUtils.js | 74 + tuniao-ui/libs/function/number.js | 96 ++ tuniao-ui/libs/function/string.js | 38 + tuniao-ui/libs/function/test.js | 232 +++ .../libs/function/updateCustomBarInfo.js | 48 + tuniao-ui/libs/function/uuid.js | 41 + tuniao-ui/libs/luch-request/adapters/index.js | 99 ++ .../luch-request/core/InterceptorManager.js | 51 + tuniao-ui/libs/luch-request/core/Request.js | 200 +++ .../libs/luch-request/core/buildFullPath.js | 20 + tuniao-ui/libs/luch-request/core/defaults.js | 30 + .../libs/luch-request/core/dispatchRequest.js | 6 + .../libs/luch-request/core/mergeConfig.js | 103 ++ tuniao-ui/libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + tuniao-ui/libs/luch-request/index.d.ts | 116 ++ tuniao-ui/libs/luch-request/index.js | 2 + tuniao-ui/libs/luch-request/utils.js | 135 ++ tuniao-ui/libs/luch-request/utils/clone.js | 264 +++ tuniao-ui/libs/mixin/components_color.js | 47 + tuniao-ui/libs/mixin/mixin.js | 68 + tuniao-ui/libs/mixin/mpShare.js | 30 + tuniao-ui/libs/mixin/touch.js | 61 + tuniao-ui/libs/utils/area.js | 1 + tuniao-ui/libs/utils/async-validator.js | 1356 ++++++++++++++++ tuniao-ui/libs/utils/calendar.js | 546 +++++++ tuniao-ui/libs/utils/city.js | 1 + tuniao-ui/libs/utils/emitter.js | 55 + tuniao-ui/libs/utils/province.js | 1 + tuniao-ui/theme.scss | 182 +++ uni.scss | 7 + 203 files changed, 44944 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 .hbuilderx/launch.json create mode 100644 App.vue create mode 100644 README.md create mode 100644 basicPage/avatar/avatar.vue create mode 100644 basicPage/badge/badge.vue create mode 100644 basicPage/border/border.vue create mode 100644 basicPage/button/button.vue create mode 100644 basicPage/color/color.vue create mode 100644 basicPage/flex-layout/flex-layout.vue create mode 100644 basicPage/grid-layout/grid-layout.vue create mode 100644 basicPage/icon/icon.vue create mode 100644 basicPage/icon/iconfont.js create mode 100644 basicPage/shadow/shadow.vue create mode 100644 basicPage/tag/tag.vue create mode 100644 basicPage/test/test.vue create mode 100644 componentsPage/action-sheet/action-sheet.vue create mode 100644 componentsPage/calendar/calendar.vue create mode 100644 componentsPage/collapse/collapse.vue create mode 100644 componentsPage/count-down/count-down.vue create mode 100644 componentsPage/count-scroll/count-scroll.vue create mode 100644 componentsPage/count-to/count-to.vue create mode 100644 componentsPage/form/form.vue create mode 100644 componentsPage/image-upload/image-upload.vue create mode 100644 componentsPage/index-list/index-list.vue create mode 100644 componentsPage/keyboard/keyboard.vue create mode 100644 componentsPage/list/list.vue create mode 100644 componentsPage/loading/loading.vue create mode 100644 componentsPage/mock/index.list.js create mode 100644 componentsPage/modal/modal.vue create mode 100644 componentsPage/nav-bar/nav-bar.vue create mode 100644 componentsPage/notice-bar/notice-bar.vue create mode 100644 componentsPage/number-box/number-box.vue create mode 100644 componentsPage/picker/picker.vue create mode 100644 componentsPage/popup/popup.vue create mode 100644 componentsPage/progress/progress.vue create mode 100644 componentsPage/rate/rate.vue create mode 100644 componentsPage/read-more/read-more.vue create mode 100644 componentsPage/scroll-list/scroll-list.vue create mode 100644 componentsPage/select/select.vue create mode 100644 componentsPage/sign-board/sign-board.vue create mode 100644 componentsPage/slider/slider.vue create mode 100644 componentsPage/steps/steps.vue create mode 100644 componentsPage/sticky/sticky.vue create mode 100644 componentsPage/swipe-action/swipe-action.vue create mode 100644 componentsPage/swiper/swiper.vue create mode 100644 componentsPage/switch/switch.vue create mode 100644 componentsPage/tabs/tabs.vue create mode 100644 componentsPage/time-line/time-line.vue create mode 100644 componentsPage/tips/tips.vue create mode 100644 componentsPage/toast/toast.vue create mode 100644 componentsPage/verification-code/verification-code.vue create mode 100644 index.html create mode 100644 libs/components/dynamic-demo-template.vue create mode 100644 libs/components/nav-index-button.vue create mode 100644 libs/mixin/dynamic_demo_mixin.js create mode 100644 libs/mixin/template_page_mixin.js create mode 100644 main.js create mode 100644 manifest.json create mode 100644 mock/basic_page.js create mode 100644 mock/components_page.js create mode 100644 mock/template_page.js create mode 100644 pages.json create mode 100644 pages/basic/basic.vue create mode 100644 pages/components/components.vue create mode 100644 pages/index/index.vue create mode 100644 pages/template/template.vue create mode 100644 pages/tuniao/tuniao.vue create mode 100644 static/css/components/demo_page_common.scss create mode 100644 static/css/templatePage/custom_nav_bar.scss create mode 100644 static/favicon.ico create mode 100644 store/$t.mixin.js create mode 100644 store/index.js create mode 100644 template.h5.html create mode 100644 templatePage/animate/hollow/hollow.vue create mode 100644 templatePage/animate/loading/loading.vue create mode 100644 templatePage/animate/particle/particle.vue create mode 100644 templatePage/animate/photo/photo.vue create mode 100644 templatePage/health/qrcode/qrcode.vue create mode 100644 templatePage/home/course/course.vue create mode 100644 templatePage/home/design/design.vue create mode 100644 templatePage/home/job/job.vue create mode 100644 templatePage/home/music/music.vue create mode 100644 templatePage/home/screen/screen.vue create mode 100644 templatePage/home/wallpaper/wallpaper.vue create mode 100644 templatePage/life/browser/browser.vue create mode 100644 templatePage/life/fullpage/fullpage.vue create mode 100644 templatePage/life/plus/plus.vue create mode 100644 templatePage/login/demo1/demo1.vue create mode 100644 templatePage/login/demo2/demo2.vue create mode 100644 tuniao-ui/README.md create mode 100644 tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue create mode 100644 tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue create mode 100644 tuniao-ui/components/tn-avatar/tn-avatar.vue create mode 100644 tuniao-ui/components/tn-badge/tn-badge.vue create mode 100644 tuniao-ui/components/tn-button/tn-button.vue create mode 100644 tuniao-ui/components/tn-calendar/tn-calendar.vue create mode 100644 tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue create mode 100644 tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue create mode 100644 tuniao-ui/components/tn-checkbox/tn-checkbox.vue create mode 100644 tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue create mode 100644 tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue create mode 100644 tuniao-ui/components/tn-collapse/tn-collapse.vue create mode 100644 tuniao-ui/components/tn-color-icon/tn-color-icon.vue create mode 100644 tuniao-ui/components/tn-column-notice/tn-column-notice.vue create mode 100644 tuniao-ui/components/tn-count-down/tn-count-down.vue create mode 100644 tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue create mode 100644 tuniao-ui/components/tn-count-to/tn-count-to.vue create mode 100644 tuniao-ui/components/tn-form-item/tn-form-item.vue create mode 100644 tuniao-ui/components/tn-form/tn-form.vue create mode 100644 tuniao-ui/components/tn-grid-item/tn-grid-item.vue create mode 100644 tuniao-ui/components/tn-grid/tn-grid.vue create mode 100644 tuniao-ui/components/tn-image-upload/tn-image-upload.vue create mode 100644 tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue create mode 100644 tuniao-ui/components/tn-index-list/tn-index-list.vue create mode 100644 tuniao-ui/components/tn-input/tn-input.vue create mode 100644 tuniao-ui/components/tn-keyboard/tn-keyboard.vue create mode 100644 tuniao-ui/components/tn-line-progress/tn-line-progress.vue create mode 100644 tuniao-ui/components/tn-list-cell/tn-list-cell.vue create mode 100644 tuniao-ui/components/tn-list-view/tn-list-view.vue create mode 100644 tuniao-ui/components/tn-loading/tn-loading.vue create mode 100644 tuniao-ui/components/tn-modal/tn-modal.vue create mode 100644 tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue create mode 100644 tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue create mode 100644 tuniao-ui/components/tn-number-box/tn-number-box.vue create mode 100644 tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue create mode 100644 tuniao-ui/components/tn-picker/tn-picker.vue create mode 100644 tuniao-ui/components/tn-popup/tn-popup.vue create mode 100644 tuniao-ui/components/tn-radio-group/tn-radio-group.vue create mode 100644 tuniao-ui/components/tn-radio/tn-radio.vue create mode 100644 tuniao-ui/components/tn-rate/tn-rate.vue create mode 100644 tuniao-ui/components/tn-read-more/tn-read-more.vue create mode 100644 tuniao-ui/components/tn-row-notice/tn-row-notice.vue create mode 100644 tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue create mode 100644 tuniao-ui/components/tn-select/tn-select.vue create mode 100644 tuniao-ui/components/tn-sign-board/tn-sign-board.vue create mode 100644 tuniao-ui/components/tn-slider/tn-slider.vue create mode 100644 tuniao-ui/components/tn-steps/tn-steps.vue create mode 100644 tuniao-ui/components/tn-sticky/tn-sticky.vue create mode 100644 tuniao-ui/components/tn-subsection/tn-subsection.vue create mode 100644 tuniao-ui/components/tn-swipe-action-item/index.wxs create mode 100644 tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue create mode 100644 tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue create mode 100644 tuniao-ui/components/tn-swiper/tn-swiper.vue create mode 100644 tuniao-ui/components/tn-switch/tn-switch.vue create mode 100644 tuniao-ui/components/tn-tabbar/tn-tabbar.vue create mode 100644 tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue create mode 100644 tuniao-ui/components/tn-tabs/tn-tabs.vue create mode 100644 tuniao-ui/components/tn-tag/tn-tag.vue create mode 100644 tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue create mode 100644 tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk create mode 100644 tuniao-ui/components/tn-time-line/tn-time-line.vue create mode 100644 tuniao-ui/components/tn-time-line/tn-time-line.vue_bk create mode 100644 tuniao-ui/components/tn-tips/tn-tips.vue create mode 100644 tuniao-ui/components/tn-toast/tn-toast.vue create mode 100644 tuniao-ui/components/tn-verification-code/tn-verification-code.vue create mode 100644 tuniao-ui/iconfont.css create mode 100644 tuniao-ui/index.js create mode 100644 tuniao-ui/index.scss create mode 100644 tuniao-ui/libs/config/color.js create mode 100644 tuniao-ui/libs/config/zIndex.js create mode 100644 tuniao-ui/libs/css/color.scss create mode 100644 tuniao-ui/libs/css/main.scss create mode 100644 tuniao-ui/libs/css/style.h5.scss create mode 100644 tuniao-ui/libs/css/style.mp.scss create mode 100644 tuniao-ui/libs/function/$parent.js create mode 100644 tuniao-ui/libs/function/array.js create mode 100644 tuniao-ui/libs/function/colorUtils.js create mode 100644 tuniao-ui/libs/function/deepClone.js create mode 100644 tuniao-ui/libs/function/messageUtils.js create mode 100644 tuniao-ui/libs/function/number.js create mode 100644 tuniao-ui/libs/function/string.js create mode 100644 tuniao-ui/libs/function/test.js create mode 100644 tuniao-ui/libs/function/updateCustomBarInfo.js create mode 100644 tuniao-ui/libs/function/uuid.js create mode 100644 tuniao-ui/libs/luch-request/adapters/index.js create mode 100644 tuniao-ui/libs/luch-request/core/InterceptorManager.js create mode 100644 tuniao-ui/libs/luch-request/core/Request.js create mode 100644 tuniao-ui/libs/luch-request/core/buildFullPath.js create mode 100644 tuniao-ui/libs/luch-request/core/defaults.js create mode 100644 tuniao-ui/libs/luch-request/core/dispatchRequest.js create mode 100644 tuniao-ui/libs/luch-request/core/mergeConfig.js create mode 100644 tuniao-ui/libs/luch-request/core/settle.js create mode 100644 tuniao-ui/libs/luch-request/helpers/buildURL.js create mode 100644 tuniao-ui/libs/luch-request/helpers/combineURLs.js create mode 100644 tuniao-ui/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 tuniao-ui/libs/luch-request/index.d.ts create mode 100644 tuniao-ui/libs/luch-request/index.js create mode 100644 tuniao-ui/libs/luch-request/utils.js create mode 100644 tuniao-ui/libs/luch-request/utils/clone.js create mode 100644 tuniao-ui/libs/mixin/components_color.js create mode 100644 tuniao-ui/libs/mixin/mixin.js create mode 100644 tuniao-ui/libs/mixin/mpShare.js create mode 100644 tuniao-ui/libs/mixin/touch.js create mode 100644 tuniao-ui/libs/utils/area.js create mode 100644 tuniao-ui/libs/utils/async-validator.js create mode 100644 tuniao-ui/libs/utils/calendar.js create mode 100644 tuniao-ui/libs/utils/city.js create mode 100644 tuniao-ui/libs/utils/emitter.js create mode 100644 tuniao-ui/libs/utils/province.js create mode 100644 tuniao-ui/theme.scss create mode 100644 uni.scss diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 + import Vue from 'vue' + import store from './store/index.js' + import updateCustomBarInfo from './tuniao-ui/libs/function/updateCustomBarInfo.js' + + export default { + onLaunch: function() { + uni.getSystemInfo({ + success: function(e) { + // #ifndef H5 + // 获取手机系统版本 + const system = e.system.toLowerCase() + const platform = e.platform.toLowerCase() + // 判断是否为ios设备 + if (platform.indexOf('ios') != -1 && (system.indexOf('ios') != -1 || system.indexOf('macos') != -1)) { + Vue.prototype.SystemPlatform = 'apple' + } else if (platform.indexOf('android') != -1 && (system.indexOf('android') != -1)) { + Vue.prototype.SystemPlatform = 'android' + } else { + Vue.prototype.SystemPlatform = 'devtools' + } + // #endif + } + }) + + // 获取设备的状态栏信息和自定义顶栏信息 + // store.dispatch('updateCustomBarInfo') + updateCustomBarInfo().then((res) => { + store.commit('$tStore', { + name: 'vuex_status_bar_height', + value: res.statusBarHeight + }) + store.commit('$tStore', { + name: 'vuex_custom_bar_height', + value: res.customBarHeight + }) + }) + + // #ifdef MP-WEIXIN + //更新检测 + if (wx.canIUse('getUpdateManager')) { + const updateManager = wx.getUpdateManager(); + updateManager && updateManager.onCheckForUpdate((res) => { + if (res.hasUpdate) { + updateManager.onUpdateReady(() => { + uni.showModal({ + title: '更新提示', + content: '新版本已经准备就绪,是否需要重新启动应用?', + success: (res) => { + if (res.confirm) { + uni.clearStorageSync() // 更新完成后刷新storage的数据 + updateManager.applyUpdate() + } + } + }) + }) + + updateManager.onUpdateFailed(() => { + uni.showModal({ + title: '已有新版本上线', + content: '小程序自动更新失败,请删除该小程序后重新搜索打开哟~~~', + showCancel: false + }) + }) + } else { + //没有更新 + } + }) + } else { + uni.showModal({ + title: '提示', + content: '当前微信版本过低,无法使用该功能,请更新到最新的微信后再重试。', + showCancel: false + }) + } + // #endif + }, + onShow: function() { + // console.log('App Show') + }, + onHide: function() { + // console.log('App Hide') + } + } + + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..f70ba41 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +

Tuniao UI

+

炫酷且可以快速开发UI框架

+ diff --git a/basicPage/avatar/avatar.vue b/basicPage/avatar/avatar.vue new file mode 100644 index 0000000..7db362f --- /dev/null +++ b/basicPage/avatar/avatar.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/basicPage/badge/badge.vue b/basicPage/badge/badge.vue new file mode 100644 index 0000000..e1a2afe --- /dev/null +++ b/basicPage/badge/badge.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/basicPage/border/border.vue b/basicPage/border/border.vue new file mode 100644 index 0000000..303a649 --- /dev/null +++ b/basicPage/border/border.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/basicPage/button/button.vue b/basicPage/button/button.vue new file mode 100644 index 0000000..01d67a9 --- /dev/null +++ b/basicPage/button/button.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/basicPage/color/color.vue b/basicPage/color/color.vue new file mode 100644 index 0000000..f9fc54f --- /dev/null +++ b/basicPage/color/color.vue @@ -0,0 +1,710 @@ + + + + + diff --git a/basicPage/flex-layout/flex-layout.vue b/basicPage/flex-layout/flex-layout.vue new file mode 100644 index 0000000..5bbc5a2 --- /dev/null +++ b/basicPage/flex-layout/flex-layout.vue @@ -0,0 +1,574 @@ + + + + + diff --git a/basicPage/grid-layout/grid-layout.vue b/basicPage/grid-layout/grid-layout.vue new file mode 100644 index 0000000..fb3bd5e --- /dev/null +++ b/basicPage/grid-layout/grid-layout.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/basicPage/icon/icon.vue b/basicPage/icon/icon.vue new file mode 100644 index 0000000..6664aa0 --- /dev/null +++ b/basicPage/icon/icon.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/basicPage/icon/iconfont.js b/basicPage/icon/iconfont.js new file mode 100644 index 0000000..a7e78ea --- /dev/null +++ b/basicPage/icon/iconfont.js @@ -0,0 +1,3 @@ +export default { + data: [{name: "font"}, {name: "chemistry"}, {name: "biology"}, {name: "level"}, {name: "deploy"}, {name: "server"}, {name: "cube"}, {name: "organizatio"}, {name: "company"}, {name: "pharmacy"}, {name: "medical"}, {name: "wheelchair"}, {name: "my-add"}, {name: "my"}, {name: "my-fill"}, {name: "trust"}, {name: "trust-fill"}, {name: "moon"}, {name: "moon-fill"}, {name: "funds"}, {name: "funds-fill"}, {name: "signpost"}, {name: "signpost-fill"}, {name: "vip"}, {name: "vip-fill"}, {name: "hardware"}, {name: "hardware-fill"}, {name: "honor"}, {name: "honor-fill"}, {name: "count"}, {name: "count-fill"}, {name: "discover-planet"}, {name: "discover-planet-fill"}, {name: "discover"}, {name: "discover-fill"}, {name: "home"}, {name: "home-fill"}, {name: "home-vertical"}, {name: "home-vertical-fill"}, {name: "home-smile"}, {name: "home-smile-fill"}, {name: "home-capsule"}, {name: "home-capsule-fill"}, {name: "cross-fill"}, {name: "focus"}, {name: "all"}, {name: "assort-fill"}, {name: "assort"}, {name: "menu-list"}, {name: "menu-sorts"}, {name: "menu-sort"}, {name: "menu-more"}, {name: "menu"}, {name: "menu-circle"}, {name: "search-menu"}, {name: "search-list"}, {name: "search"}, {name: "brand"}, {name: "link"}, {name: "code"}, {name: "computer"}, {name: "computer-fill"}, {name: "ipad"}, {name: "ipad-fill"}, {name: "phone"}, {name: "phone-fill"}, {name: "tel"}, {name: "tel-circle-fill"}, {name: "tel-circle"}, {name: "watercup"}, {name: "gloves-fill"}, {name: "gloves"}, {name: "covid-19"}, {name: "sport-jog"}, {name: "sport-run"}, {name: "sport-swim"}, {name: "sport-cycle"}, {name: "airplane"}, {name: "train"}, {name: "steamship"}, {name: "bus"}, {name: "balancecar"}, {name: "electromobile"}, {name: "zodiac-zhu"}, {name: "zodiac-gou"}, {name: "zodiac-ji"}, {name: "zodiac-hou"}, {name: "zodiac-yang"}, {name: "zodiac-ma"}, {name: "zodiac-she"}, {name: "zodiac-long"}, {name: "zodiac-tu"}, {name: "zodiac-hu"}, {name: "zodiac-niu"}, {name: "zodiac-shu"}, {name: "lucky-money"}, {name: "lucky-money-fill"}, {name: "prize"}, {name: "gift"}, {name: "pay"}, {name: "refund"}, {name: "money"}, {name: "power"}, {name: "fingerprint"}, {name: "qr-beibei"}, {name: "qr-code"}, {name: "qr-barcode"}, {name: "scan"}, {name: "revoke"}, {name: "filter"}, {name: "upload"}, {name: "download"}, {name: "fork"}, {name: "relation"}, {name: "master"}, {name: "facebook"}, {name: "google"}, {name: "linkedin"}, {name: "twitter"}, {name: "logo-tuniao"}, {name: "sina"}, {name: "taobao"}, {name: "gitee"}, {name: "github"}, {name: "dingtalk"}, {name: "alipay"}, {name: "qq"}, {name: "moments"}, {name: "wechat"}, {name: "wechat-fill"}, {name: "service"}, {name: "service-fill"}, {name: "team"}, {name: "team-fill"}, {name: "emoji-sad"}, {name: "emoji-sad-fill"}, {name: "emoji-general"}, {name: "emoji-general-fill"}, {name: "emoji-good"}, {name: "emoji-good-fill"}, {name: "clock"}, {name: "clock-fill"}, {name: "time-fill"}, {name: "time"}, {name: "footprint"}, {name: "delete"}, {name: "delete-fill"}, {name: "clear"}, {name: "set"}, {name: "set-fill"}, {name: "keyboard-circle"}, {name: "keyboard"}, {name: "wifi-no"}, {name: "wifi"}, {name: "creative-stop"}, {name: "creative-stop-fill"}, {name: "creative-fill"}, {name: "creative"}, {name: "trophy-fill"}, {name: "trophy"}, {name: "game-fill"}, {name: "game"}, {name: "tag-fill"}, {name: "tag"}, {name: "logistics"}, {name: "taxi-fill"}, {name: "taxi"}, {name: "flag"}, {name: "flag-fill"}, {name: "baby"}, {name: "baby-fill"}, {name: "shop"}, {name: "shop-fill"}, {name: "commissary"}, {name: "coupon-fill"}, {name: "coupon"}, {name: "shopbag-fill"}, {name: "shopbag"}, {name: "basket-fill"}, {name: "basket"}, {name: "cart-fill"}, {name: "cart"}, {name: "ticket"}, {name: "ticket-fill"}, {name: "receipt"}, {name: "receipt-fill"}, {name: "cardbag"}, {name: "cardbag-fill"}, {name: "bankcard-fill"}, {name: "bankcard"}, {name: "identity"}, {name: "identity-fill"}, {name: "calendar"}, {name: "calendar-fill"}, {name: "order"}, {name: "order-fill"}, {name: "image"}, {name: "image-fill"}, {name: "image-text"}, {name: "image-text-fill"}, {name: "data"}, {name: "data-fill"}, {name: "statistics"}, {name: "statistics-fill"}, {name: "trusty-fill"}, {name: "trusty"}, {name: "safe-fill"}, {name: "safe"}, {name: "edit"}, {name: "edit-form"}, {name: "edit-write"}, {name: "write-fill"}, {name: "write"}, {name: "eye-hide"}, {name: "eye-close"}, {name: "eye"}, {name: "eye-fill"}, {name: "unlock"}, {name: "lock"}, {name: "sex"}, {name: "sex-female"}, {name: "sex-male"}, {name: "circle-lack"}, {name: "circle-arrow"}, {name: "circle-fill"}, {name: "circle"}, {name: "copy-fill"}, {name: "copy"}, {name: "square"}, {name: "open"}, {name: "group-double"}, {name: "group-square"}, {name: "group-triangle"}, {name: "group-circle"}, {name: "group-null"}, {name: "share-triangle"}, {name: "share-square"}, {name: "share-circle"}, {name: "share"}, {name: "send-fill"}, {name: "send"}, {name: "light-fill"}, {name: "light"}, {name: "praise-fill"}, {name: "praise"}, {name: "star-fill"}, {name: "star"}, {name: "caring"}, {name: "caring-fill"}, {name: "fire"}, {name: "fire-fill"}, {name: "topic"}, {name: "topics"}, {name: "topics-fill"}, {name: "like-break"}, {name: "like-lack"}, {name: "like"}, {name: "like-fill"}, {name: "reply"}, {name: "reply-fill"}, {name: "comment-fill"}, {name: "comment"}, {name: "message-fill"}, {name: "message"}, {name: "flower-fill"}, {name: "flower"}, {name: "location-fill"}, {name: "location"}, {name: "map-fill"}, {name: "map"}, {name: "camera"}, {name: "camera-fill"}, {name: "live-stream"}, {name: "live-stream-fill"}, {name: "sing"}, {name: "music-fill"}, {name: "music-stop"}, {name: "video-fill"}, {name: "video"}, {name: "voice-fill"}, {name: "voice"}, {name: "previous-fill"}, {name: "next-fill"}, {name: "play-fill"}, {name: "stop"}, {name: "backspace"}, {name: "backspace-fill"}, {name: "sound-close-fill"}, {name: "sound-close"}, {name: "sound-fill"}, {name: "sound"}, {name: "sound-reduce-fill"}, {name: "sound-reduce"}, {name: "sound-add"}, {name: "sound-add-fill"}, {name: "sequence-vertical"}, {name: "sequence"}, {name: "align-center"}, {name: "align-right"}, {name: "align-left"}, {name: "align"}, {name: "title"}, {name: "sort"}, {name: "more-vertical"}, {name: "more-horizontal"}, {name: "more-circle"}, {name: "more-circle-fill"}, {name: "warning"}, {name: "warning-fill"}, {name: "zoom-out"}, {name: "zoom-out-fill"}, {name: "zoom-in-fill"}, {name: "zoom-in"}, {name: "success-square"}, {name: "success-circle-fill"}, {name: "success-circle"}, {name: "success-square-fill"}, {name: "success"}, {name: "close-fill"}, {name: "close"}, {name: "close-circle"}, {name: "help"}, {name: "help-fill"}, {name: "tips"}, {name: "tip-fill"}, {name: "left"}, {name: "left-triangle"}, {name: "left-fill"}, {name: "left-double"}, {name: "left-circle"}, {name: "left-arrow"}, {name: "down"}, {name: "down-arrow"}, {name: "down-circle"}, {name: "down-double"}, {name: "down-fill"}, {name: "down-triangle"}, {name: "right"}, {name: "right-fill"}, {name: "right-arrow"}, {name: "right-double"}, {name: "right-triangle"}, {name: "right-circle"}, {name: "up"}, {name: "up-arrow"}, {name: "up-circle"}, {name: "up-triangle"}, {name: "up-double"}, {name: "up-fill"}, {name: "add-circle"}, {name: "add"}, {name: "add-fill"}, {name: "reduce"}, {name: "reduce-square-fill"}, {name: "reduce-square"}, {name: "reduce-circle"}, {name: "reduce-circle-fill"}] +} \ No newline at end of file diff --git a/basicPage/shadow/shadow.vue b/basicPage/shadow/shadow.vue new file mode 100644 index 0000000..82e56ca --- /dev/null +++ b/basicPage/shadow/shadow.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/basicPage/tag/tag.vue b/basicPage/tag/tag.vue new file mode 100644 index 0000000..cc431cf --- /dev/null +++ b/basicPage/tag/tag.vue @@ -0,0 +1,259 @@ + + + + + + + diff --git a/basicPage/test/test.vue b/basicPage/test/test.vue new file mode 100644 index 0000000..418dcda --- /dev/null +++ b/basicPage/test/test.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/componentsPage/action-sheet/action-sheet.vue b/componentsPage/action-sheet/action-sheet.vue new file mode 100644 index 0000000..94ba0f7 --- /dev/null +++ b/componentsPage/action-sheet/action-sheet.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/componentsPage/calendar/calendar.vue b/componentsPage/calendar/calendar.vue new file mode 100644 index 0000000..ae38add --- /dev/null +++ b/componentsPage/calendar/calendar.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/componentsPage/collapse/collapse.vue b/componentsPage/collapse/collapse.vue new file mode 100644 index 0000000..7801b13 --- /dev/null +++ b/componentsPage/collapse/collapse.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/componentsPage/count-down/count-down.vue b/componentsPage/count-down/count-down.vue new file mode 100644 index 0000000..d0845a6 --- /dev/null +++ b/componentsPage/count-down/count-down.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/componentsPage/count-scroll/count-scroll.vue b/componentsPage/count-scroll/count-scroll.vue new file mode 100644 index 0000000..e10cf8c --- /dev/null +++ b/componentsPage/count-scroll/count-scroll.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/componentsPage/count-to/count-to.vue b/componentsPage/count-to/count-to.vue new file mode 100644 index 0000000..3fe03fb --- /dev/null +++ b/componentsPage/count-to/count-to.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/componentsPage/form/form.vue b/componentsPage/form/form.vue new file mode 100644 index 0000000..3ae1d16 --- /dev/null +++ b/componentsPage/form/form.vue @@ -0,0 +1,523 @@ + + + + + diff --git a/componentsPage/image-upload/image-upload.vue b/componentsPage/image-upload/image-upload.vue new file mode 100644 index 0000000..42e8986 --- /dev/null +++ b/componentsPage/image-upload/image-upload.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/componentsPage/index-list/index-list.vue b/componentsPage/index-list/index-list.vue new file mode 100644 index 0000000..9fa4f94 --- /dev/null +++ b/componentsPage/index-list/index-list.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/componentsPage/keyboard/keyboard.vue b/componentsPage/keyboard/keyboard.vue new file mode 100644 index 0000000..cd4fd46 --- /dev/null +++ b/componentsPage/keyboard/keyboard.vue @@ -0,0 +1,324 @@ + + + + + diff --git a/componentsPage/list/list.vue b/componentsPage/list/list.vue new file mode 100644 index 0000000..8f3ca99 --- /dev/null +++ b/componentsPage/list/list.vue @@ -0,0 +1,306 @@ + + + + + diff --git a/componentsPage/loading/loading.vue b/componentsPage/loading/loading.vue new file mode 100644 index 0000000..a24ce86 --- /dev/null +++ b/componentsPage/loading/loading.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/componentsPage/mock/index.list.js b/componentsPage/mock/index.list.js new file mode 100644 index 0000000..7e0f5ed --- /dev/null +++ b/componentsPage/mock/index.list.js @@ -0,0 +1,585 @@ +module.exports = { + list: [{ + "letter": "A", + "data": [{ + "name": "阿拉斯加", + "mobile": "13588889999", + "keyword": "阿拉斯加ABA13588889999" + }, + { + "name": "阿克苏", + "mobile": "0551-4386721", + "keyword": "阿克苏AKESU0551-4386721" + }, + { + "name": "阿拉善", + "mobile": "4008009100", + "keyword": "阿拉善ALASHAN4008009100" + }, + { + "name": "阿勒泰", + "mobile": "13588889999", + "keyword": "阿勒泰ALETAI13588889999" + }, + { + "name": "阿里", + "mobile": "13588889999", + "keyword": "阿里ALI13588889999" + }, + { + "name": "安阳", + "mobile": "13588889999", + "keyword": "13588889999安阳ANYANG" + } + ] + }, + { + "letter": "B", + "data": [{ + "name": "白城", + "mobile": "该主子没有留电话~", + "keyword": "白城BAICHENG" + }, + { + "name": "白山", + "mobile": "13588889999", + "keyword": "白山BAISHAN13588889999" + }, + { + "name": "白银", + "mobile": "13588889999", + "keyword": "白银BAIYIN13588889999" + }, + { + "name": "保定", + "mobile": "13588889999", + "keyword": "保定BAODING13588889999" + } + ] + }, + { + "letter": "C", + "data": [{ + "name": "沧州", + "mobile": "13588889999", + "keyword": "沧州CANGZHOU13588889999" + }, + { + "name": "长春", + "mobile": "13588889999", + "keyword": "长春CHANGCHUN13588889999" + } + ] + }, + { + "letter": "D", + "data": [{ + "name": "大理", + "mobile": "13588889999", + "keyword": "大理DALI13588889999" + }, + { + "name": "大连", + "mobile": "13588889999", + "keyword": "大连DALIAN13588889999" + } + ] + }, + { + "letter": "E", + "data": [{ + "name": "鄂尔多斯", + "mobile": "13588889999", + "keyword": "鄂尔多斯EERDUOSI13588889999" + }, + { + "name": "恩施", + "mobile": "13588889999", + "keyword": "恩施ENSHI13588889999" + }, + { + "name": "鄂州", + "mobile": "13588889999", + "keyword": "鄂州EZHOU13588889999" + } + ] + }, + { + "letter": "F", + "data": [{ + "name": "防城港", + "mobile": "该主子没有留电话~", + "keyword": "防城港FANGCHENGGANG" + }, + { + "name": "抚顺", + "mobile": "13588889999", + "keyword": "抚顺FUSHUN13588889999" + }, + { + "name": "阜新", + "mobile": "13588889999", + "keyword": "阜新FUXIN13588889999" + }, + { + "name": "阜阳", + "mobile": "13588889999", + "keyword": "阜阳FUYANG13588889999" + }, + { + "name": "抚州", + "mobile": "13588889999", + "keyword": "抚州FUZHOU13588889999" + }, + { + "name": "福州", + "mobile": "13588889999", + "keyword": "福州FUZHOU13588889999" + } + ] + }, + { + "letter": "G", + "data": [{ + "name": "甘南", + "mobile": "13588889999", + "keyword": "甘南GANNAN13588889999" + }, + { + "name": "赣州", + "mobile": "13588889999", + "keyword": "赣州GANZHOU13588889999" + }, + { + "name": "甘孜", + "mobile": "13588889999", + "keyword": "甘孜GANZI13588889999" + } + ] + }, + { + "letter": "H", + "data": [{ + "name": "哈尔滨", + "mobile": "13588889999", + "keyword": "哈尔滨HAERBIN13588889999" + }, + { + "name": "海北", + "mobile": "13588889999", + "keyword": "海北HAIBEI13588889999" + }, + { + "name": "海东", + "mobile": "13588889999", + "keyword": "海东HAIDONG13588889999" + }, + { + "name": "海口", + "mobile": "13588889999", + "keyword": "海口HAIKOU13588889999" + } + ] + }, + { + "letter": "I", + "data": [{ + "name": "ice", + "mobile": "13588889999", + "keyword": "佳木斯JIAMUSI13588889999" + }] + }, + { + "letter": "J", + "data": [{ + "name": "佳木斯", + "mobile": "13588889999", + "keyword": "佳木斯JIAMUSI13588889999" + }, + { + "name": "吉安", + "mobile": "13588889999", + "keyword": "吉安JIAN13588889999" + }, + { + "name": "江门", + "mobile": "13588889999", + "keyword": "江门JIANGMEN13588889999" + } + ] + }, + { + "letter": "K", + "data": [{ + "name": "开封", + "mobile": "13588889999", + "keyword": "开封KAIFENG13588889999" + }, + { + "name": "喀什", + "mobile": "13588889999", + "keyword": "喀什KASHI13588889999" + }, + { + "name": "克拉玛依", + "mobile": "13588889999", + "keyword": "克拉玛依KELAMAYI13588889999" + } + ] + }, + { + "letter": "L", + "data": [{ + "name": "来宾", + "mobile": "13588889999", + "keyword": "来宾LAIBIN13588889999" + }, + { + "name": "兰州", + "mobile": "13588889999", + "keyword": "兰州LANZHOU13588889999" + }, + { + "name": "拉萨", + "mobile": "13588889999", + "keyword": "拉萨LASA13588889999" + }, + { + "name": "乐山", + "mobile": "13588889999", + "keyword": "乐山LESHAN13588889999" + }, + { + "name": "凉山", + "mobile": "13588889999", + "keyword": "凉山LIANGSHAN13588889999" + }, + { + "name": "连云港", + "mobile": "13588889999", + "keyword": "连云港LIANYUNGANG13588889999" + }, + { + "name": "聊城", + "mobile": "18322223333", + "keyword": "聊城LIAOCHENG18322223333" + }, + { + "name": "辽阳", + "mobile": "18322223333", + "keyword": "辽阳LIAOYANG18322223333" + }, + { + "name": "辽源", + "mobile": "18322223333", + "keyword": "辽源LIAOYUAN18322223333" + }, + { + "name": "丽江", + "mobile": "18322223333", + "keyword": "丽江LIJIANG18322223333" + }, + { + "name": "临沧", + "mobile": "18322223333", + "keyword": "临沧LINCANG18322223333" + }, + { + "name": "临汾", + "mobile": "18322223333", + "keyword": "临汾LINFEN18322223333" + }, + { + "name": "临夏", + "mobile": "18322223333", + "keyword": "临夏LINXIA18322223333" + }, + { + "name": "临沂", + "mobile": "18322223333", + "keyword": "临沂LINYI18322223333" + }, + { + "name": "林芝", + "mobile": "18322223333", + "keyword": "林芝LINZHI18322223333" + }, + { + "name": "丽水", + "mobile": "18322223333", + "keyword": "丽水LISHUI18322223333" + } + ] + }, + { + "letter": "M", + "data": [{ + "name": "眉山", + "mobile": "15544448888", + "keyword": "眉山MEISHAN15544448888" + }, + { + "name": "梅州", + "mobile": "15544448888", + "keyword": "梅州MEIZHOU15544448888" + }, + { + "name": "绵阳", + "mobile": "15544448888", + "keyword": "绵阳MIANYANG15544448888" + }, + { + "name": "牡丹江", + "mobile": "15544448888", + "keyword": "牡丹江MUDANJIANG15544448888" + } + ] + }, + { + "letter": "N", + "data": [{ + "name": "南昌", + "mobile": "15544448888", + "keyword": "南昌NANCHANG15544448888" + }, + { + "name": "南充", + "mobile": "15544448888", + "keyword": "南充NANCHONG15544448888" + }, + { + "name": "南京", + "mobile": "15544448888", + "keyword": "南京NANJING15544448888" + }, + { + "name": "南宁", + "mobile": "15544448888", + "keyword": "南宁NANNING15544448888" + }, + { + "name": "南平", + "mobile": "15544448888", + "keyword": "南平NANPING15544448888" + } + ] + }, + { + "letter": "O", + "data": [{ + "name": "欧阳", + "mobile": "15544448888", + "keyword": "欧阳ouyang15544448888" + }] + }, + { + "letter": "P", + "data": [{ + "name": "盘锦", + "mobile": "15544448888", + "keyword": "盘锦PANJIN15544448888" + }, + { + "name": "攀枝花", + "mobile": "15544448888", + "keyword": "攀枝花PANZHIHUA15544448888" + }, + { + "name": "平顶山", + "mobile": "15544448888", + "keyword": "平顶山PINGDINGSHAN15544448888" + }, + { + "name": "平凉", + "mobile": "15544448888", + "keyword": "平凉PINGLIANG15544448888" + }, + { + "name": "萍乡", + "mobile": "15544448888", + "keyword": "萍乡PINGXIANG15544448888" + }, + { + "name": "普洱", + "mobile": "15544448888", + "keyword": "普洱PUER15544448888" + }, + { + "name": "莆田", + "mobile": "15544448888", + "keyword": "莆田PUTIAN15544448888" + }, + { + "name": "濮阳", + "mobile": "15544448888", + "keyword": "濮阳PUYANG15544448888" + } + ] + }, + { + "letter": "Q", + "data": [{ + "name": "黔东南", + "mobile": "15544448888", + "keyword": "黔东南QIANDONGNAN15544448888" + }, + { + "name": "黔南", + "mobile": "15544448888", + "keyword": "黔南QIANNAN15544448888" + }, + { + "name": "黔西南", + "mobile": "15544448888", + "keyword": "黔西南QIANXINAN15544448888" + } + ] + }, + { + "letter": "R", + "data": [{ + "name": "日喀则", + "mobile": "15544448888", + "keyword": "日喀则RIKAZE15544448888" + }, + { + "name": "日照", + "mobile": "15544448888", + "keyword": "日照RIZHAO15544448888" + } + ] + }, + { + "letter": "S", + "data": [{ + "name": "三门峡", + "mobile": "15544448888", + "keyword": "三门峡SANMENXIA15544448888" + }, + { + "name": "三明", + "mobile": "15544448888", + "keyword": "三明SANMING15544448888" + }, + { + "name": "三沙", + "mobile": "15544448888", + "keyword": "三沙SANSHA15544448888" + } + ] + }, + { + "letter": "T", + "data": [{ + "name": "塔城", + "mobile": "15544448888", + "keyword": "塔城TACHENG15544448888" + }, + { + "name": "漯河", + "mobile": "15544448888", + "keyword": "漯河TAHE15544448888" + }, + { + "name": "泰安", + "mobile": "15544448888", + "keyword": "泰安TAIAN15544448888" + } + ] + }, + { + "letter": "W", + "data": [{ + "name": "潍坊", + "mobile": "15544448888", + "keyword": "潍坊WEIFANG15544448888" + }, + { + "name": "威海", + "mobile": "15544448888", + "keyword": "威海WEIHAI15544448888" + }, + { + "name": "渭南", + "mobile": "15544448888", + "keyword": "渭南WEINAN15544448888" + }, + { + "name": "文山", + "mobile": "15544448888", + "keyword": "文山WENSHAN15544448888" + } + ] + }, + { + "letter": "X", + "data": [{ + "name": "厦门", + "mobile": "15544448888", + "keyword": "厦门XIAMEN15544448888" + }, + { + "name": "西安", + "mobile": "15544448888", + "keyword": "西安XIAN15544448888" + }, + { + "name": "湘潭", + "mobile": "15544448888", + "keyword": "湘潭XIANGTAN15544448888" + } + ] + }, + { + "letter": "Y", + "data": [{ + "name": "雅安", + "mobile": "15544448888", + "keyword": "雅安YAAN15544448888" + }, + { + "name": "延安", + "mobile": "15544448888", + "keyword": "延安YANAN15544448888" + }, + { + "name": "延边", + "mobile": "15544448888", + "keyword": "延边YANBIAN15544448888" + }, + { + "name": "盐城", + "mobile": "15544448888", + "keyword": "盐城YANCHENG15544448888" + } + ] + }, + { + "letter": "Z", + "data": [{ + "name": "枣庄", + "mobile": "15544448888", + "keyword": "枣庄ZAOZHUANG15544448888" + }, + { + "name": "张家界", + "mobile": "15544448888", + "keyword": "张家界ZHANGJIAJIE15544448888" + }, + { + "name": "张家口", + "mobile": "15544448888", + "keyword": "张家口ZHANGJIAKOU15544448888" + } + ] + }, + { + "letter": "#", + "data": [{ + "name": "其他.", + "mobile": "16666666666", + "keyword": "echo16666666666" + }] + } + ] +} diff --git a/componentsPage/modal/modal.vue b/componentsPage/modal/modal.vue new file mode 100644 index 0000000..f2aaa52 --- /dev/null +++ b/componentsPage/modal/modal.vue @@ -0,0 +1,277 @@ + + + + + + + diff --git a/componentsPage/nav-bar/nav-bar.vue b/componentsPage/nav-bar/nav-bar.vue new file mode 100644 index 0000000..4dc8809 --- /dev/null +++ b/componentsPage/nav-bar/nav-bar.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/componentsPage/notice-bar/notice-bar.vue b/componentsPage/notice-bar/notice-bar.vue new file mode 100644 index 0000000..9389e22 --- /dev/null +++ b/componentsPage/notice-bar/notice-bar.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/componentsPage/number-box/number-box.vue b/componentsPage/number-box/number-box.vue new file mode 100644 index 0000000..b098e9d --- /dev/null +++ b/componentsPage/number-box/number-box.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/componentsPage/picker/picker.vue b/componentsPage/picker/picker.vue new file mode 100644 index 0000000..8c50188 --- /dev/null +++ b/componentsPage/picker/picker.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/componentsPage/popup/popup.vue b/componentsPage/popup/popup.vue new file mode 100644 index 0000000..5e21202 --- /dev/null +++ b/componentsPage/popup/popup.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/componentsPage/progress/progress.vue b/componentsPage/progress/progress.vue new file mode 100644 index 0000000..278f7fe --- /dev/null +++ b/componentsPage/progress/progress.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/componentsPage/rate/rate.vue b/componentsPage/rate/rate.vue new file mode 100644 index 0000000..d129053 --- /dev/null +++ b/componentsPage/rate/rate.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/componentsPage/read-more/read-more.vue b/componentsPage/read-more/read-more.vue new file mode 100644 index 0000000..15318de --- /dev/null +++ b/componentsPage/read-more/read-more.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/componentsPage/scroll-list/scroll-list.vue b/componentsPage/scroll-list/scroll-list.vue new file mode 100644 index 0000000..c246e17 --- /dev/null +++ b/componentsPage/scroll-list/scroll-list.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/componentsPage/select/select.vue b/componentsPage/select/select.vue new file mode 100644 index 0000000..f195f46 --- /dev/null +++ b/componentsPage/select/select.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/componentsPage/sign-board/sign-board.vue b/componentsPage/sign-board/sign-board.vue new file mode 100644 index 0000000..0def203 --- /dev/null +++ b/componentsPage/sign-board/sign-board.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/componentsPage/slider/slider.vue b/componentsPage/slider/slider.vue new file mode 100644 index 0000000..71cd61a --- /dev/null +++ b/componentsPage/slider/slider.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/componentsPage/steps/steps.vue b/componentsPage/steps/steps.vue new file mode 100644 index 0000000..8b31143 --- /dev/null +++ b/componentsPage/steps/steps.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/componentsPage/sticky/sticky.vue b/componentsPage/sticky/sticky.vue new file mode 100644 index 0000000..0201776 --- /dev/null +++ b/componentsPage/sticky/sticky.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/componentsPage/swipe-action/swipe-action.vue b/componentsPage/swipe-action/swipe-action.vue new file mode 100644 index 0000000..6c192a4 --- /dev/null +++ b/componentsPage/swipe-action/swipe-action.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/componentsPage/swiper/swiper.vue b/componentsPage/swiper/swiper.vue new file mode 100644 index 0000000..d0019d1 --- /dev/null +++ b/componentsPage/swiper/swiper.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/componentsPage/switch/switch.vue b/componentsPage/switch/switch.vue new file mode 100644 index 0000000..b86b55a --- /dev/null +++ b/componentsPage/switch/switch.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/componentsPage/tabs/tabs.vue b/componentsPage/tabs/tabs.vue new file mode 100644 index 0000000..15f43de --- /dev/null +++ b/componentsPage/tabs/tabs.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/componentsPage/time-line/time-line.vue b/componentsPage/time-line/time-line.vue new file mode 100644 index 0000000..8f58f9a --- /dev/null +++ b/componentsPage/time-line/time-line.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/componentsPage/tips/tips.vue b/componentsPage/tips/tips.vue new file mode 100644 index 0000000..b91a815 --- /dev/null +++ b/componentsPage/tips/tips.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/componentsPage/toast/toast.vue b/componentsPage/toast/toast.vue new file mode 100644 index 0000000..e60956c --- /dev/null +++ b/componentsPage/toast/toast.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/componentsPage/verification-code/verification-code.vue b/componentsPage/verification-code/verification-code.vue new file mode 100644 index 0000000..9a23681 --- /dev/null +++ b/componentsPage/verification-code/verification-code.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..b61f63e --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + + + +
+ + + diff --git a/libs/components/dynamic-demo-template.vue b/libs/components/dynamic-demo-template.vue new file mode 100644 index 0000000..d3e26b3 --- /dev/null +++ b/libs/components/dynamic-demo-template.vue @@ -0,0 +1,680 @@ + + + + + diff --git a/libs/components/nav-index-button.vue b/libs/components/nav-index-button.vue new file mode 100644 index 0000000..2af5a14 --- /dev/null +++ b/libs/components/nav-index-button.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/libs/mixin/dynamic_demo_mixin.js b/libs/mixin/dynamic_demo_mixin.js new file mode 100644 index 0000000..66ff992 --- /dev/null +++ b/libs/mixin/dynamic_demo_mixin.js @@ -0,0 +1,52 @@ +/** + * 动态参数演示mixin + */ +module.exports = { + data() { + return { + // 效果显示框top的值 + contentContainerTop: '0px', + contentContainerIsTop: false, + + // 参数显示框top的值 + sectionContainerTop: '0px' + } + }, + onReady() { + this.updateSectionContainerTop() + }, + methods: { + // 处理演示效果框的位置 + async _handleContentConatinerPosition() { + // 获取效果演示框的节点信息 + const contentContainer = await this._tGetRect('#content_container') + // 获取参数框的节点信息 + this._tGetRect('#section_container').then((res) => { + // 判断参数框是否在移动,如果是则更新效果框的位置 + // 如果效果框的顶部已经触控到顶部导航栏就停止跟随 + if (res.top - contentContainer.bottom != 15) { + const newTop = res.top - (contentContainer.height + uni.upx2px(20)) + const minTop = this.vuex_custom_bar_height + 1 + if (newTop < minTop) { + this.contentContainerTop = minTop + 'px' + this.contentContainerIsTop = true + } else { + this.contentContainerTop = newTop + 'px' + this.contentContainerIsTop = false + } + } + }) + }, + // 更新状态切换栏位置信息 + updateSectionContainerTop() { + this._tGetRect('#content_container').then((res) => { + this.contentContainerTop = (this.vuex_custom_bar_height + 148) + 'px' + this.sectionContainerTop = (res.height + 20) + 'px' + }) + } + }, + // 监听页面滚动 + onPageScroll() { + this._handleContentConatinerPosition() + } +} diff --git a/libs/mixin/template_page_mixin.js b/libs/mixin/template_page_mixin.js new file mode 100644 index 0000000..4efd9dc --- /dev/null +++ b/libs/mixin/template_page_mixin.js @@ -0,0 +1,33 @@ +/** + * 演示页面mixin + */ +module.exports = { + data() { + return { + + } + }, + methods: { + // 点击左上角返回按钮时触发事件 + goBack() { + // 通过判断当前页面的页面栈信息,是否有上一页进行返回,如果没有则跳转到首页 + const pages = getCurrentPages() + if (pages && pages.length > 0) { + const firstPage = pages[0] + if (!firstPage.route || firstPage.route != 'pages/index/index') { + uni.reLaunch({ + url: '/pages/index/index' + }) + } else { + uni.navigateBack({ + delta: 1 + }) + } + } else { + uni.reLaunch({ + url: '/pages/index/index' + }) + } + } + } +} \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..ac7021b --- /dev/null +++ b/main.js @@ -0,0 +1,24 @@ +import App from './App' +import store from './store' + +import Vue from 'vue' +Vue.config.productionTip = false +App.mpType = 'app' + +// 引入全局TuniaoUI +import TuniaoUI from 'tuniao-ui' +Vue.use(TuniaoUI) + +// 引入TuniaoUI提供的vuex简写方法 +let vuexStore = require('@/store/$t.mixin.js') +Vue.mixin(vuexStore) + +// 引入TuniaoUI对小程序分享的mixin封装 +let mpShare = require('tuniao-ui/libs/mixin/mpShare.js') +Vue.mixin(mpShare) + +const app = new Vue({ + store, + ...App +}) +app.$mount() \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..7de6724 --- /dev/null +++ b/manifest.json @@ -0,0 +1,86 @@ +{ + "name" : "TuniaoUI_UniApp_Opensource", + "appid" : "__UNI__C82400B", + "description" : "TuniaoUI 开源版本", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wxf3d81a452b88ff4b", + "setting" : { + "urlCheck" : false, + "es6" : true + }, + "usingComponents" : true, + "optimization" : { + "subPackages" : true + } + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2", + "h5" : { + "template" : "template.h5.html", + "title" : "Tuniao UI", + "router" : { + "mode" : "hash" + }, + "sdkConfigs" : { + "maps" : {} + } + } +} diff --git a/mock/basic_page.js b/mock/basic_page.js new file mode 100644 index 0000000..ea564ae --- /dev/null +++ b/mock/basic_page.js @@ -0,0 +1,57 @@ +/** + * 页面展示列表数据 + */ +export default { + data: [ + { + icon: 'menu-more', + title: 'Flex布局', + url: '/basicPage/flex-layout/flex-layout' + }, + { + icon: 'menu-circle', + title: 'Grid布局', + url: '/basicPage/grid-layout/grid-layout' + }, + { + icon: 'gloves', + title: '配色', + url: '/basicPage/color/color' + }, + { + icon: 'topics', + title: '图标', + url: '/basicPage/icon/icon' + }, + { + icon: 'circle-fill', + title: '按钮', + url: '/basicPage/button/button' + }, + { + icon: 'tag', + title: '标签', + url: '/basicPage/tag/tag' + }, + { + icon: 'square', + title: '边框', + url: '/basicPage/border/border' + }, + { + icon: 'copy-fill', + title: '阴影', + url: '/basicPage/shadow/shadow' + }, + { + icon: 'moon', + title: '微标', + url: '/basicPage/badge/badge' + }, + { + icon: 'emoji-good', + title: '头像', + url: '/basicPage/avatar/avatar' + } + ] +} \ No newline at end of file diff --git a/mock/components_page.js b/mock/components_page.js new file mode 100644 index 0000000..ffd2965 --- /dev/null +++ b/mock/components_page.js @@ -0,0 +1,206 @@ +/** + * 页面展示列表数据 + */ +export default { + data: [ + { + title: '基础组件', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'signpost', + title: '列表', + url: '/componentsPage/list/list' + }, + { + icon: 'circle-arrow', + title: 'Loading加载', + url: '/componentsPage/loading/loading' + }, + { + icon: 'share', + title: 'tabs标签', + url: '/componentsPage/tabs/tabs' + }, + { + icon: 'receipt', + title: 'sticky吸顶', + url: '/componentsPage/sticky/sticky' + }, + { + icon: 'all', + title: 'navBar导航栏', + url: '/componentsPage/nav-bar/nav-bar' + }, + { + icon: 'sound', + title: 'noticeBar通知栏', + url: '/componentsPage/notice-bar/notice-bar' + }, + { + icon: 'image', + title: 'swiper轮播图', + url: '/componentsPage/swiper/swiper' + }, + { + icon: 'server', + title: 'collapse折叠面板', + url: '/componentsPage/collapse/collapse' + }, + { + icon: 'more-circle', + title: 'readMore查看更多', + url: '/componentsPage/read-more/read-more' + }, + { + icon: 'success-square', + title: 'steps步骤条', + url: '/componentsPage/steps/steps' + }, + { + icon: 'clock', + title: 'timeLine时间轴', + url: '/componentsPage/time-line/time-line' + }, + { + icon: 'level', + title: 'indexList索引列表', + url: '/componentsPage/index-list/index-list' + }, + { + icon: 'group-square', + title: 'scrollList横向滚动', + url: '/componentsPage/scroll-list/scroll-list' + }, + { + icon: 'star', + title: 'swipeAction滑动菜单', + url: '/componentsPage/swipe-action/swipe-action' + } + ] + }, + { + title: '弹框组件', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'prize', + title: '弹出层', + url: '/componentsPage/popup/popup' + }, + { + icon: 'bankcard', + title: '模态框', + url: '/componentsPage/modal/modal' + }, + { + icon: 'comment', + title: 'Toast', + url: '/componentsPage/toast/toast' + }, + { + icon: 'creative', + title: '提示信息框', + url: '/componentsPage/tips/tips' + }, + ] + }, + { + title: '表单组件', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'image-text', + title: 'Form表单', + url: '/componentsPage/form/form' + }, + { + icon: 'ticket', + title: 'ActionSheet操作菜单', + url: '/componentsPage/action-sheet/action-sheet' + }, + { + icon: 'deploy', + title: 'Picker选择器', + url: '/componentsPage/picker/picker' + }, + { + icon: 'organizatio', + title: 'Select列选择器', + url: '/componentsPage/select/select' + }, + { + icon: 'data', + title: '验证码倒计时', + url: '/componentsPage/verification-code/verification-code' + }, + { + icon: 'power', + title: 'Switch开关', + url: '/componentsPage/switch/switch' + }, + { + icon: 'upload', + title: '图片上传', + url: '/componentsPage/image-upload/image-upload' + }, + { + icon: 'calendar', + title: '日历', + url: '/componentsPage/calendar/calendar' + }, + { + icon: 'edit-write', + title: '签名板', + url: '/componentsPage/sign-board/sign-board' + }, + ] + }, + { + title: '数据组件', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'watercup', + title: 'Progress进度条', + url: '/componentsPage/progress/progress' + }, + { + icon: 'star', + title: 'rate评分', + url: '/componentsPage/rate/rate' + }, + { + icon: 'light', + title: 'slider滑动条', + url: '/componentsPage/slider/slider' + }, + { + icon: 'statistics', + title: 'numberBox步进输入', + url: '/componentsPage/number-box/number-box' + }, + { + icon: 'keyboard-circle', + title: 'keyboard键盘', + url: '/componentsPage/keyboard/keyboard' + }, + { + icon: 'time', + title: 'countDown倒计时', + url: '/componentsPage/count-down/count-down' + }, + { + icon: 'group-circle', + title: 'countTo数字跳转', + url: '/componentsPage/count-to/count-to' + }, + { + icon: 'sequence-vertical', + title: 'countScroll数字滚动', + url: '/componentsPage/count-scroll/count-scroll' + } + ] + } + ] +} \ No newline at end of file diff --git a/mock/template_page.js b/mock/template_page.js new file mode 100644 index 0000000..194913f --- /dev/null +++ b/mock/template_page.js @@ -0,0 +1,107 @@ +/** + * 页面展示列表数据 + */ +export default { + data: [ + { + title: '登录注册', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'order', + title: '火箭登录', + url: '/templatePage/login/demo1/demo1' + }, + { + icon: 'order', + title: '粒子登录', + url: '/templatePage/login/demo2/demo2' + } + ] + }, + { + title: '常用首页', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'order', + title: '音乐首页', + url: '/templatePage/home/music/music' + }, + { + icon: 'order', + title: '课程首页', + url: '/templatePage/home/course/course' + }, + { + icon: 'order', + title: '设计首页', + url: '/templatePage/home/design/design' + }, + { + icon: 'order', + title: '招聘首页', + url: '/templatePage/home/job/job' + }, + { + icon: 'order', + title: '投屏首页', + url: '/templatePage/home/screen/screen' + }, + { + icon: 'order', + title: '壁纸首页', + url: '/templatePage/home/wallpaper/wallpaper' + }, + ] + }, + { + title: '其他页面', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'order', + title: '健康码', + url: '/templatePage/health/qrcode/qrcode' + }, + + { + icon: 'order', + title: '全屏轮播', + url: '/templatePage/life/fullpage/fullpage' + }, + { + icon: 'order', + title: '浏览器', + url: '/templatePage/life/browser/browser' + } + ] + }, + { + title: '动效元素', + backgroundColor: 'tn-cool-bg-color-1', + list: [ + { + icon: 'order', + title: '加载动画', + url: '/templatePage/animate/loading/loading' + }, + { + icon: 'order', + title: '随机粒子', + url: '/templatePage/animate/particle/particle' + }, + { + icon: 'order', + title: '相册图集', + url: '/templatePage/animate/photo/photo' + }, + { + icon: 'order', + title: '镂空效果', + url: '/templatePage/animate/hollow/hollow' + } + ] + } + ] +} \ No newline at end of file diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..af19c93 --- /dev/null +++ b/pages.json @@ -0,0 +1,418 @@ +{ + "easycom": { + "^tn-(.*)": "@/tuniao-ui/components/tn-$1/tn-$1.vue" + }, + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "Tuniao UI", + "enablePullDownRefresh": false + } + } + ], + "subPackages": [{ + "root": "basicPage", + "pages": [ + { + "path": "test/test", + "style": { + "navigationStyle":"default", + "navigationBarTitleText": "测试页面", + "enablePullDownRefresh": false + } + }, + { + "path": "flex-layout/flex-layout", + "style": { + "navigationBarTitleText": "Flex布局", + "enablePullDownRefresh": false + } + }, { + "path": "grid-layout/grid-layout", + "style": { + "navigationBarTitleText": "Grid布局", + "enablePullDownRefresh": false + } + }, { + "path": "color/color", + "style": { + "navigationBarTitleText": "配色", + "enablePullDownRefresh": false + } + }, { + "path": "icon/icon", + "style": { + "navigationBarTitleText": "图标", + "enablePullDownRefresh": false + } + }, { + "path": "button/button", + "style": { + "navigationBarTitleText": "按钮", + "enablePullDownRefresh": false + } + }, { + "path": "tag/tag", + "style": { + "navigationBarTitleText": "标签", + "enablePullDownRefresh": false + } + }, { + "path": "border/border", + "style": { + "navigationBarTitleText": "边框", + "enablePullDownRefresh": false + } + }, { + "path": "shadow/shadow", + "style": { + "navigationBarTitleText": "阴影", + "enablePullDownRefresh": false + } + }, { + "path": "badge/badge", + "style": { + "navigationBarTitleText": "微标", + "enablePullDownRefresh": false + } + }, { + "path": "avatar/avatar", + "style": { + "navigationBarTitleText": "头像", + "enablePullDownRefresh": false + } + } + ] + },{ + "root": "componentsPage", + "pages": [ + { + "path": "list/list", + "style": { + "navigationBarTitleText": "列表", + "enablePullDownRefresh": false + } + }, { + "path": "popup/popup", + "style": { + "navigationBarTitleText": "弹出层", + "enablePullDownRefresh": false + } + }, { + "path": "modal/modal", + "style": { + "navigationBarTitleText": "模态框", + "enablePullDownRefresh": false + } + }, { + "path": "toast/toast", + "style": { + "navigationBarTitleText": "Toast", + "enablePullDownRefresh": false + } + }, { + "path": "tips/tips", + "style": { + "navigationBarTitleText": "提示信息", + "enablePullDownRefresh": false + } + }, { + "path": "form/form", + "style": { + "navigationBarTitleText": "Form表单", + "enablePullDownRefresh": false + } + }, { + "path": "action-sheet/action-sheet", + "style": { + "navigationBarTitleText": "操作菜单", + "enablePullDownRefresh": false + } + }, { + "path": "picker/picker", + "style": { + "navigationBarTitleText": "Picker选择器", + "enablePullDownRefresh": false + } + }, { + "path": "select/select", + "style": { + "navigationBarTitleText": "Select列选择器", + "enablePullDownRefresh": false + } + }, { + "path": "verification-code/verification-code", + "style": { + "navigationBarTitleText": "验证码倒计时", + "enablePullDownRefresh": false + } + }, { + "path": "loading/loading", + "style": { + "navigationBarTitleText": "Loading加载", + "enablePullDownRefresh": false + } + }, { + "path": "switch/switch", + "style": { + "navigationBarTitleText": "Switch开关", + "enablePullDownRefresh": false + } + }, { + "path": "progress/progress", + "style": { + "navigationBarTitleText": "Progress进度条", + "enablePullDownRefresh": false + } + }, { + "path": "image-upload/image-upload", + "style": { + "navigationBarTitleText": "图片上传", + "enablePullDownRefresh": false + } + }, { + "path": "rate/rate", + "style": { + "navigationBarTitleText": "rate评分", + "enablePullDownRefresh": false + } + }, { + "path": "slider/slider", + "style": { + "navigationBarTitleText": "slider滑动条", + "enablePullDownRefresh": false + } + }, { + "path": "number-box/number-box", + "style": { + "navigationBarTitleText": "numberBox步进输入", + "enablePullDownRefresh": false + } + }, { + "path": "keyboard/keyboard", + "style": { + "navigationBarTitleText": "keyboard键盘", + "enablePullDownRefresh": false + } + }, { + "path": "tabs/tabs", + "style": { + "navigationBarTitleText": "tabs标签", + "enablePullDownRefresh": false + } + }, { + "path": "count-down/count-down", + "style": { + "navigationBarTitleText": "countDown倒计时", + "enablePullDownRefresh": false + } + }, { + "path": "count-to/count-to", + "style": { + "navigationBarTitleText": "countTo数字跳转", + "enablePullDownRefresh": false + } + }, { + "path": "count-scroll/count-scroll", + "style": { + "navigationBarTitleText": "countTo数字滚动", + "enablePullDownRefresh": false + } + }, { + "path": "sticky/sticky", + "style": { + "navigationBarTitleText": "sticky吸顶", + "enablePullDownRefresh": false + } + }, { + "path": "nav-bar/nav-bar", + "style": { + "navigationBarTitleText": "navBar导航栏", + "enablePullDownRefresh": false + } + }, { + "path": "notice-bar/notice-bar", + "style": { + "navigationBarTitleText": "noticeBar通知栏", + "enablePullDownRefresh": false + } + }, { + "path": "swiper/swiper", + "style": { + "navigationBarTitleText": "swiper轮播图", + "enablePullDownRefresh": false + } + }, { + "path": "collapse/collapse", + "style": { + "navigationBarTitleText": "collapse折叠面板", + "enablePullDownRefresh": false + } + }, { + "path": "read-more/read-more", + "style": { + "navigationBarTitleText": "readMore查看更多", + "enablePullDownRefresh": false + } + }, { + "path": "steps/steps", + "style": { + "navigationBarTitleText": "steps步骤条", + "enablePullDownRefresh": false + } + }, { + "path": "time-line/time-line", + "style": { + "navigationBarTitleText": "timeLine时间轴", + "enablePullDownRefresh": false + } + }, { + "path": "index-list/index-list", + "style": { + "navigationBarTitleText": "indexList索引列表", + "enablePullDownRefresh": false + } + }, { + "path": "calendar/calendar", + "style": { + "navigationBarTitleText": "calendar日历", + "enablePullDownRefresh": false + } + }, { + "path": "scroll-list/scroll-list", + "style": { + "navigationBarTitleText": "scrollList横向滚动", + "enablePullDownRefresh": false + } + }, { + "path": "swipe-action/swipe-action", + "style": { + "navigationBarTitleText": "swipeAction滑动菜单", + "enablePullDownRefresh": false + } + }, { + "path": "sign-board/sign-board", + "style": { + "navigationBarTitleText": "signBoard签名板", + "enablePullDownRefresh": false + // "pageOrientation": "landscape" + } + } + ] + },{ + "root":"templatePage", + "pages": [ + { + "path": "login/demo1/demo1", + "style": { + "navigationBarTitleText": "火箭登录", + "enablePullDownRefresh": false + } + },{ + "path": "login/demo2/demo2", + "style": { + "navigationBarTitleText": "粒子登录", + "enablePullDownRefresh": false + } + }, { + "path": "health/qrcode/qrcode", + "style": { + "navigationBarTitleText": "健康码", + "enablePullDownRefresh": false + } + }, { + "path": "home/course/course", + "style": { + "navigationBarTitleText": "课程首页", + "enablePullDownRefresh": false + } + }, { + "path": "home/music/music", + "style": { + "navigationBarTitleText": "音乐首页", + "enablePullDownRefresh": false + } + },{ + "path": "home/design/design", + "style": { + "navigationBarTitleText": "设计首页", + "enablePullDownRefresh": false + } + }, { + "path": "home/job/job", + "style": { + "navigationBarTitleText": "招聘首页", + "enablePullDownRefresh": false + } + }, { + "path": "home/screen/screen", + "style": { + "navigationBarTitleText": "投屏首页", + "enablePullDownRefresh": false + } + }, { + "path": "home/wallpaper/wallpaper", + "style": { + "navigationBarTitleText": "壁纸首页", + "enablePullDownRefresh": false + } + }, { + "path": "life/fullpage/fullpage", + "style": { + "navigationBarTitleText": "全屏轮播", + "enablePullDownRefresh": false + } + },{ + "path": "life/plus/plus", + "style": { + "navigationBarTitleText": "会员协议", + "enablePullDownRefresh": false + } + },{ + "path": "life/browser/browser", + "style": { + "navigationBarTitleText": "浏览器", + "enablePullDownRefresh": false + } + },{ + "path": "animate/loading/loading", + "style": { + "navigationBarTitleText": "加载动效", + "enablePullDownRefresh": false + } + }, { + "path": "animate/particle/particle", + "style": { + "navigationBarTitleText": "随机粒子", + "enablePullDownRefresh": false + } + }, { + "path": "animate/photo/photo", + "style": { + "navigationBarTitleText": "相册图集", + "enablePullDownRefresh": false + } + }, { + "path": "animate/hollow/hollow", + "style": { + "navigationBarTitleText": "镂空效果", + "enablePullDownRefresh": false + } + } + ] + }], + "preloadRule": { + "pages/index/index": { + "network":"all", + "packages": ["basicPage","componentsPage","templatePage"] + } + }, + "globalStyle": { + "navigationStyle": "custom", + "navigationBarTextStyle": "black", + "navigationBarTitleText": "Tuniao UI", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8" + } +} diff --git a/pages/basic/basic.vue b/pages/basic/basic.vue new file mode 100644 index 0000000..9adcb66 --- /dev/null +++ b/pages/basic/basic.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/pages/components/components.vue b/pages/components/components.vue new file mode 100644 index 0000000..c9506c2 --- /dev/null +++ b/pages/components/components.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..1620282 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/pages/template/template.vue b/pages/template/template.vue new file mode 100644 index 0000000..5072026 --- /dev/null +++ b/pages/template/template.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/pages/tuniao/tuniao.vue b/pages/tuniao/tuniao.vue new file mode 100644 index 0000000..1155990 --- /dev/null +++ b/pages/tuniao/tuniao.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/static/css/components/demo_page_common.scss b/static/css/components/demo_page_common.scss new file mode 100644 index 0000000..f40b136 --- /dev/null +++ b/static/css/components/demo_page_common.scss @@ -0,0 +1,193 @@ +/* 顶部 start */ +.header { + padding: 80rpx 60rpx 40rpx 60rpx; + + .title { + font-size: 36rpx; + color: $tn-font-color; + font-weight: bold; + } + + .sub-title { + font-size: 28rpx; + color: $tn-content-color; + padding-top: 18rpx; + } + + .tips-title { + font-size: 24rpx; + color: $tn-font-sub-color; + padding-top: 5rpx; + } +} +/* 顶部 end */ + +/* 展示内容容器 start */ +.show-content-container { + + /* 标题容器 start */ + .title-container { + display: flex; + position: relative; + align-items: center; + justify-content: space-between; + min-height: 100rpx; + + // 标题样式 + .title { + height: 100%; + max-width: 100%; + margin: 0 20rpx; + font-size: 30rpx; + display: flex; + align-items: center; + justify-content: center; + + // 标题前面小点 + &:before { + content: " "; + background-color: $tn-main-color; + width: 15rpx; + height: 15rpx; + border-radius: 10rpx; + margin-right: 18rpx; + } + } + } + /* 标题容器 end */ + + /* 内容 start */ + .content { + padding: 20rpx; + } + /* 内容 end */ + +} +/* 展示内容容器 end */ + +/* 内容容器 start */ +.demo-content-container { + border: 1rpx dashed $tn-main-color; + margin: 20rpx; + margin-top: 0rpx; + + position: fixed; + width: 95%; + z-index: 10; + + transition: all 0.15s ease-out; + + &.top { + width: 100%; + margin: 0; + } + + &.no-fixed { + position: relative !important; + } + + /* 标题容器 start */ + .title-container { + display: flex; + position: relative; + align-items: center; + justify-content: center; + min-height: 100rpx; + + // 标题样式 + .title { + height: 100%; + max-width: 100%; + margin: 0 30rpx; + font-size: 30rpx; + display: flex; + align-items: center; + justify-content: center; + } + } + /* 标题容器 end */ + + /* 内容 start */ + .content { + padding: 30rpx; + display: flex; + align-items: center; + justify-content: center; + } + /* 内容 end */ + +} +/* 内容容器 end */ + +/* 可选项内容容器 start */ +.demo-section-container { + margin: 20rpx; + height: 100%; + + /* 标题容器 start */ + .title-container { + display: flex; + position: relative; + align-items: center; + justify-content: center; + min-height: 100rpx; + margin-bottom: 10rpx; + + // 标题样式 + .title { + height: 100%; + max-width: 100%; + margin: 0 30rpx; + font-size: 30rpx; + display: flex; + align-items: center; + justify-content: center; + } + + &::after { + content: " "; + box-sizing: border-box; + width: 90%; + height: 100%; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + border-bottom: 1rpx solid $tn-border-solid-color; + } + } + /* 标题容器 end */ + + /* 参数内容 start*/ + .content { + padding: 0 20rpx 10rpx 20rpx; + + // 标题样式 + .title { + padding-left: 20rpx; + height: 100%; + position: relative; + + &::before { + content: " "; + position: absolute; + top: 50%; + left: 0; + width: 4rpx; + height: 90%; + background-color: $tn-main-color; + border-radius: 6rpx; + transform: translateY(-50%); + } + } + + // 参数样式 + .section { + margin-top: 15rpx; + margin-bottom: 20rpx; + } + } + /* 参数内容 end*/ + +} +/* 可选项内容容器 end */ \ No newline at end of file diff --git a/static/css/templatePage/custom_nav_bar.scss b/static/css/templatePage/custom_nav_bar.scss new file mode 100644 index 0000000..7cc0960 --- /dev/null +++ b/static/css/templatePage/custom_nav_bar.scss @@ -0,0 +1,38 @@ +.tn-custom-nav-bar__back { + width: 100%; + height: 100%; + position: relative; + display: flex; + justify-content: space-evenly; + align-items: center; + box-sizing: border-box; + background-color: rgba(0, 0, 0, 0.15); + border-radius: 1000rpx; + border: 1rpx solid rgba(255, 255, 255, 0.5); + color: #FFFFFF; + font-size: 18px; + + .icon { + display: block; + flex: 1; + margin: auto; + text-align: center; + } + + &:before { + content: " "; + width: 1rpx; + height: 110%; + position: absolute; + top: 22.5%; + left: 0; + right: 0; + margin: auto; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + opacity: 0.7; + background-color: #FFFFFF; + } +} \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7bf90375f6b3c53badd9cb1536841e207889f098 GIT binary patch literal 67646 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 literal 0 HcmV?d00001 diff --git a/store/$t.mixin.js b/store/$t.mixin.js new file mode 100644 index 0000000..831b7f9 --- /dev/null +++ b/store/$t.mixin.js @@ -0,0 +1,28 @@ +import { mapState } from 'vuex' +import store from '@/store' + +// 尝试将用户在根目录中的store/index.js的vuex的state变量加载到全局变量中 +let $tStoreKey = [] +try { + $tStoreKey = store.state ? Object.keys(store.state) : [] +} catch(e) { + +} + +module.exports = { + beforeCreate() { + // 将vuex方法挂在在$t中 + // 使用方法: + // 修改vuex的state中的user.name变量为图鸟小菜 => this.$t.vuex('user.name', '图鸟小菜') + // 修改vuexde state中的version变量为1.0.1 => this.$t.vuex('version', 1.0.1) + this.$t.vuex = (name, value) => { + this.$store.commit('$tStore', { + name, value + }) + } + }, + computed: { + // 将vuex的state中的变量结构到全局混入mixin中 + ...mapState($tStoreKey) + } +} \ No newline at end of file diff --git a/store/index.js b/store/index.js new file mode 100644 index 0000000..828212c --- /dev/null +++ b/store/index.js @@ -0,0 +1,75 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +let lifeData = {} + +// 尝试获取本地是否存在lifeData变量,第一次启动时不存在 +try { + lifeData = uni.getStorageSync('lifeData') +} catch(e) { + +} + +// 标记需要永久存储的变量,在每次启动时取出,在state中的变量名 +let saveStateKeys = ['vuex_user'] + +// 保存变量到本地存储 +const saveLifeData = function(key, value) { + // 判断变量是否在存储数组中 + if (saveStateKeys.indexOf(key) != -1) { + // 获取本地存储的lifeData对象,将变量添加到对象中 + let tmpLifeData = uni.getStorageSync('lifeData') + // 第一次启动时不存在,则放一个空对象 + tmpLifeData = tmpLifeData ? tmpLifeData : {}, + tmpLifeData[key] = value + // 将变量再次放回本地存储中 + uni.setStorageSync('lifeData', tmpLifeData) + } +} + +const store = new Vuex.Store({ + state: { + // 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量 + // 加上vuex_前缀,是防止变量名冲突,也让人一目了然 + vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {name: '图鸟'}, + + // 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式 + // app版本 + vuex_version: "1.0.0", + // 是否使用自定义导航栏 + vuex_custom_nav_bar: true, + // 状态栏高度 + vuex_status_bar_height: 0, + // 自定义导航栏的高度 + vuex_custom_bar_height: 0 + }, + mutations: { + $tStore(state, payload) { + // 判断是否多层调用,state中为对象存在的情况,例如user.info.score = 1 + let nameArr = payload.name.split('.') + let saveKey = '' + let len = nameArr.length + if (len >= 2) { + let obj = state[nameArr[0]] + for (let i= 1; i < len - 1; i++) { + obj = obj[nameArr[i]] + } + obj[nameArr[len - 1]] = payload.value + saveKey = nameArr[0] + } else { + // 单层级变量 + state[payload.name] = payload.value + saveKey = payload.name + } + + // 保存变量到本地中 + saveLifeData(saveKey, state[saveKey]) + } + }, + actions: { + } +}) + +export default store \ No newline at end of file diff --git a/template.h5.html b/template.h5.html new file mode 100644 index 0000000..974e4db --- /dev/null +++ b/template.h5.html @@ -0,0 +1,38 @@ + + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + + + + + + +
+ + + + diff --git a/templatePage/animate/hollow/hollow.vue b/templatePage/animate/hollow/hollow.vue new file mode 100644 index 0000000..8e08820 --- /dev/null +++ b/templatePage/animate/hollow/hollow.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/templatePage/animate/loading/loading.vue b/templatePage/animate/loading/loading.vue new file mode 100644 index 0000000..73893da --- /dev/null +++ b/templatePage/animate/loading/loading.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/templatePage/animate/particle/particle.vue b/templatePage/animate/particle/particle.vue new file mode 100644 index 0000000..5a261b4 --- /dev/null +++ b/templatePage/animate/particle/particle.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/templatePage/animate/photo/photo.vue b/templatePage/animate/photo/photo.vue new file mode 100644 index 0000000..1676e52 --- /dev/null +++ b/templatePage/animate/photo/photo.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/templatePage/health/qrcode/qrcode.vue b/templatePage/health/qrcode/qrcode.vue new file mode 100644 index 0000000..2c77876 --- /dev/null +++ b/templatePage/health/qrcode/qrcode.vue @@ -0,0 +1,519 @@ + + + + + diff --git a/templatePage/home/course/course.vue b/templatePage/home/course/course.vue new file mode 100644 index 0000000..0c842c8 --- /dev/null +++ b/templatePage/home/course/course.vue @@ -0,0 +1,647 @@ + + + + + diff --git a/templatePage/home/design/design.vue b/templatePage/home/design/design.vue new file mode 100644 index 0000000..1f02e2b --- /dev/null +++ b/templatePage/home/design/design.vue @@ -0,0 +1,527 @@ + + + + + diff --git a/templatePage/home/job/job.vue b/templatePage/home/job/job.vue new file mode 100644 index 0000000..78c4a0e --- /dev/null +++ b/templatePage/home/job/job.vue @@ -0,0 +1,439 @@ + + + + + diff --git a/templatePage/home/music/music.vue b/templatePage/home/music/music.vue new file mode 100644 index 0000000..833b46d --- /dev/null +++ b/templatePage/home/music/music.vue @@ -0,0 +1,704 @@ + + + + + diff --git a/templatePage/home/screen/screen.vue b/templatePage/home/screen/screen.vue new file mode 100644 index 0000000..380efb6 --- /dev/null +++ b/templatePage/home/screen/screen.vue @@ -0,0 +1,604 @@ + + + + + diff --git a/templatePage/home/wallpaper/wallpaper.vue b/templatePage/home/wallpaper/wallpaper.vue new file mode 100644 index 0000000..2cf33aa --- /dev/null +++ b/templatePage/home/wallpaper/wallpaper.vue @@ -0,0 +1,534 @@ + + + + + diff --git a/templatePage/life/browser/browser.vue b/templatePage/life/browser/browser.vue new file mode 100644 index 0000000..67badfe --- /dev/null +++ b/templatePage/life/browser/browser.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/templatePage/life/fullpage/fullpage.vue b/templatePage/life/fullpage/fullpage.vue new file mode 100644 index 0000000..b999414 --- /dev/null +++ b/templatePage/life/fullpage/fullpage.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/templatePage/life/plus/plus.vue b/templatePage/life/plus/plus.vue new file mode 100644 index 0000000..2323831 --- /dev/null +++ b/templatePage/life/plus/plus.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/templatePage/login/demo1/demo1.vue b/templatePage/login/demo1/demo1.vue new file mode 100644 index 0000000..fc8f7e6 --- /dev/null +++ b/templatePage/login/demo1/demo1.vue @@ -0,0 +1,414 @@ + + + + + diff --git a/templatePage/login/demo2/demo2.vue b/templatePage/login/demo2/demo2.vue new file mode 100644 index 0000000..6192ac1 --- /dev/null +++ b/templatePage/login/demo2/demo2.vue @@ -0,0 +1,495 @@ + + + + + diff --git a/tuniao-ui/README.md b/tuniao-ui/README.md new file mode 100644 index 0000000..ccb9fcb --- /dev/null +++ b/tuniao-ui/README.md @@ -0,0 +1,4 @@ +TuniaoUi for uniApp v1.0.0 | by 图鸟 2021-09-01 +仅供开发,如作它用所承受的法律责任一概与作者无关 + +*使用TuniaoUi开发扩展与插件时,请注明基于tuniao字眼 \ No newline at end of file diff --git a/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue b/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue new file mode 100644 index 0000000..577b437 --- /dev/null +++ b/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue b/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue new file mode 100644 index 0000000..848c1b2 --- /dev/null +++ b/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/tuniao-ui/components/tn-avatar/tn-avatar.vue b/tuniao-ui/components/tn-avatar/tn-avatar.vue new file mode 100644 index 0000000..fb28d48 --- /dev/null +++ b/tuniao-ui/components/tn-avatar/tn-avatar.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/tuniao-ui/components/tn-badge/tn-badge.vue b/tuniao-ui/components/tn-badge/tn-badge.vue new file mode 100644 index 0000000..a7c73cf --- /dev/null +++ b/tuniao-ui/components/tn-badge/tn-badge.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/tuniao-ui/components/tn-button/tn-button.vue b/tuniao-ui/components/tn-button/tn-button.vue new file mode 100644 index 0000000..2910988 --- /dev/null +++ b/tuniao-ui/components/tn-button/tn-button.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/tuniao-ui/components/tn-calendar/tn-calendar.vue b/tuniao-ui/components/tn-calendar/tn-calendar.vue new file mode 100644 index 0000000..e0711e8 --- /dev/null +++ b/tuniao-ui/components/tn-calendar/tn-calendar.vue @@ -0,0 +1,707 @@ + + + + + diff --git a/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue b/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue new file mode 100644 index 0000000..f92559c --- /dev/null +++ b/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue b/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue new file mode 100644 index 0000000..5472ad5 --- /dev/null +++ b/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/tuniao-ui/components/tn-checkbox/tn-checkbox.vue b/tuniao-ui/components/tn-checkbox/tn-checkbox.vue new file mode 100644 index 0000000..89dd311 --- /dev/null +++ b/tuniao-ui/components/tn-checkbox/tn-checkbox.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue b/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue new file mode 100644 index 0000000..6788c5d --- /dev/null +++ b/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue b/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue new file mode 100644 index 0000000..05763b2 --- /dev/null +++ b/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/tuniao-ui/components/tn-collapse/tn-collapse.vue b/tuniao-ui/components/tn-collapse/tn-collapse.vue new file mode 100644 index 0000000..00ec9a2 --- /dev/null +++ b/tuniao-ui/components/tn-collapse/tn-collapse.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/tuniao-ui/components/tn-color-icon/tn-color-icon.vue b/tuniao-ui/components/tn-color-icon/tn-color-icon.vue new file mode 100644 index 0000000..c7ad83b --- /dev/null +++ b/tuniao-ui/components/tn-color-icon/tn-color-icon.vue @@ -0,0 +1,318 @@ + + + + + diff --git a/tuniao-ui/components/tn-column-notice/tn-column-notice.vue b/tuniao-ui/components/tn-column-notice/tn-column-notice.vue new file mode 100644 index 0000000..e4ec36a --- /dev/null +++ b/tuniao-ui/components/tn-column-notice/tn-column-notice.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/tuniao-ui/components/tn-count-down/tn-count-down.vue b/tuniao-ui/components/tn-count-down/tn-count-down.vue new file mode 100644 index 0000000..b601de7 --- /dev/null +++ b/tuniao-ui/components/tn-count-down/tn-count-down.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue b/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue new file mode 100644 index 0000000..de208c8 --- /dev/null +++ b/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/tuniao-ui/components/tn-count-to/tn-count-to.vue b/tuniao-ui/components/tn-count-to/tn-count-to.vue new file mode 100644 index 0000000..c3d8854 --- /dev/null +++ b/tuniao-ui/components/tn-count-to/tn-count-to.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/tuniao-ui/components/tn-form-item/tn-form-item.vue b/tuniao-ui/components/tn-form-item/tn-form-item.vue new file mode 100644 index 0000000..c5a58ef --- /dev/null +++ b/tuniao-ui/components/tn-form-item/tn-form-item.vue @@ -0,0 +1,457 @@ + + + + + diff --git a/tuniao-ui/components/tn-form/tn-form.vue b/tuniao-ui/components/tn-form/tn-form.vue new file mode 100644 index 0000000..ec23599 --- /dev/null +++ b/tuniao-ui/components/tn-form/tn-form.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/tuniao-ui/components/tn-grid-item/tn-grid-item.vue b/tuniao-ui/components/tn-grid-item/tn-grid-item.vue new file mode 100644 index 0000000..2837bc2 --- /dev/null +++ b/tuniao-ui/components/tn-grid-item/tn-grid-item.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/tuniao-ui/components/tn-grid/tn-grid.vue b/tuniao-ui/components/tn-grid/tn-grid.vue new file mode 100644 index 0000000..f5487c6 --- /dev/null +++ b/tuniao-ui/components/tn-grid/tn-grid.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/tuniao-ui/components/tn-image-upload/tn-image-upload.vue b/tuniao-ui/components/tn-image-upload/tn-image-upload.vue new file mode 100644 index 0000000..50fa434 --- /dev/null +++ b/tuniao-ui/components/tn-image-upload/tn-image-upload.vue @@ -0,0 +1,644 @@ + + + + + diff --git a/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue b/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue new file mode 100644 index 0000000..97bef6e --- /dev/null +++ b/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/tuniao-ui/components/tn-index-list/tn-index-list.vue b/tuniao-ui/components/tn-index-list/tn-index-list.vue new file mode 100644 index 0000000..91fc639 --- /dev/null +++ b/tuniao-ui/components/tn-index-list/tn-index-list.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/tuniao-ui/components/tn-input/tn-input.vue b/tuniao-ui/components/tn-input/tn-input.vue new file mode 100644 index 0000000..eaa22a1 --- /dev/null +++ b/tuniao-ui/components/tn-input/tn-input.vue @@ -0,0 +1,427 @@ +