From c033fc636169cecfc5ca054312a3e20e3effb22d Mon Sep 17 00:00:00 2001
From: yujialong <479214531@qq.com>
Date: Thu, 21 Nov 2024 11:42:33 +0800
Subject: [PATCH] initial
---
.gitignore | 2 +
.hbuilderx/launch.json | 24 +
App.vue | 36 +
README.md | 1 +
apis/modules/article.js | 26 +
apis/modules/client.js | 54 +
apis/modules/course.js | 38 +
apis/modules/order.js | 42 +
apis/modules/parner.js | 42 +
apis/modules/product.js | 50 +
apis/modules/user.js | 100 +
apis/request.js | 80 +
components/empty/empty.vue | 40 +
components/filter-popup/components/mask.vue | 130 +
components/filter-popup/components/popup.vue | 510 ++++
components/filter-popup/detail.md | 155 ++
components/filter-popup/filter-popup.vue | 596 +++++
components/notAuth/notAuth.vue | 26 +
config/product.js | 10 +
config/request.js | 21 +
course/addCourse/addCourse.vue | 399 +++
course/clients/clients.vue | 280 ++
course/courseDetail/courseDetail.vue | 334 +++
course/curClient/curClient.vue | 273 ++
course/editCourse/editCourse.vue | 504 ++++
course/orderDetail/orderDetail.vue | 1201 +++++++++
course/ordered/ordered.vue | 285 ++
course/practiceDetail/practiceDetail.vue | 109 +
course/privacyAgreement/privacyAgreement.vue | 107 +
course/products/products.vue | 399 +++
course/serviceAgreement/serviceAgreement.vue | 88 +
course/shopCart/shopCart.vue | 317 +++
index.html | 14 +
libs/Oss/base64.js | 135 +
libs/Oss/crypto.js | 117 +
libs/Oss/hmac.js | 37 +
libs/Oss/sha1.js | 82 +
libs/Oss/upload.js | 71 +
libs/WXBizDataCrypt.js | 35 +
libs/mtj-wx-sdk.config.js | 39 +
libs/mtj-wx-sdk.js | 1 +
libs/share.js | 36 +
libs/uma.js | 18 +
libs/util.js | 129 +
main.js | 43 +
manifest.json | 73 +
package-lock.json | 777 ++++++
package.json | 16 +
pages.json | 208 ++
pages/achievement/achievement.vue | 216 ++
pages/index/index.vue | 166 ++
pages/login/login.vue | 347 +++
pages/orders/orders.vue | 360 +++
pages/person/person.vue | 409 +++
static/iconfont/iconfont.css | 32 +
static/iconfont/iconfont.ttf | Bin 0 -> 2748 bytes
static/image/arrow-down.png | Bin 0 -> 257 bytes
static/image/avatar.png | Bin 0 -> 1380 bytes
static/image/index/1.png | Bin 0 -> 775 bytes
static/image/index/2.png | Bin 0 -> 1078 bytes
static/image/index/3.png | Bin 0 -> 1331 bytes
static/image/index/4.png | Bin 0 -> 1289 bytes
static/image/index/5.png | Bin 0 -> 599 bytes
static/image/index/6.png | Bin 0 -> 439 bytes
static/image/index/7.png | Bin 0 -> 1062 bytes
static/image/index/8.png | Bin 0 -> 518 bytes
static/image/index/9.png | Bin 0 -> 522 bytes
static/image/index/banner.png | Bin 0 -> 25860 bytes
static/image/index/banner1.png | Bin 0 -> 21349 bytes
static/image/info-bg.jpg | Bin 0 -> 21392 bytes
static/image/info.png | Bin 0 -> 29025 bytes
static/image/login1.png | Bin 0 -> 9196 bytes
static/image/login2.png | Bin 0 -> 4584 bytes
static/image/logo.png | Bin 0 -> 9939 bytes
static/image/logo1.png | Bin 0 -> 3028 bytes
static/image/none.png | Bin 0 -> 7725 bytes
static/image/person-bg.png | Bin 0 -> 26636 bytes
static/image/person1.png | Bin 0 -> 528 bytes
static/image/person2.png | Bin 0 -> 620 bytes
static/image/person26.png | Bin 0 -> 382 bytes
static/image/person27.png | Bin 0 -> 537 bytes
static/image/person3.png | Bin 0 -> 514 bytes
static/image/person4.png | Bin 0 -> 689 bytes
static/image/person5.png | Bin 0 -> 519 bytes
static/image/person6.png | Bin 0 -> 457 bytes
static/image/person7.png | Bin 0 -> 270 bytes
static/image/person8.png | Bin 0 -> 734 bytes
static/image/person9.png | Bin 0 -> 372 bytes
static/image/phone.png | Bin 0 -> 302 bytes
static/image/product.png | Bin 0 -> 3585 bytes
static/image/product/1.png | Bin 0 -> 483 bytes
static/image/product/2.png | Bin 0 -> 434 bytes
static/image/product/3.png | Bin 0 -> 298 bytes
static/image/product/4.png | Bin 0 -> 351 bytes
static/image/product/5.png | Bin 0 -> 641 bytes
static/image/product/6.png | Bin 0 -> 251 bytes
static/image/product/excel.png | Bin 0 -> 480 bytes
static/image/product/pdf.png | Bin 0 -> 440 bytes
static/image/product/ppt.png | Bin 0 -> 347 bytes
static/image/product/shop-blue.png | Bin 0 -> 1007 bytes
static/image/product/shop.png | Bin 0 -> 510 bytes
static/image/product/word.png | Bin 0 -> 502 bytes
static/image/qrcode.png | Bin 0 -> 325 bytes
static/image/school.png | Bin 0 -> 282 bytes
static/image/study-bg.jpg | Bin 0 -> 49116 bytes
static/image/tab1-1.png | Bin 0 -> 368 bytes
static/image/tab1.png | Bin 0 -> 218 bytes
static/image/tab2-1.png | Bin 0 -> 223 bytes
static/image/tab2.png | Bin 0 -> 372 bytes
static/image/tab3-1.png | Bin 0 -> 195 bytes
static/image/tab3.png | Bin 0 -> 331 bytes
static/image/tab4-1.png | Bin 0 -> 222 bytes
static/image/tab4.png | Bin 0 -> 410 bytes
static/image/trash.png | Bin 0 -> 373 bytes
static/image/unfold.png | Bin 0 -> 197 bytes
static/image/wechat.png | Bin 0 -> 525 bytes
static/image/workbench/index1.png | Bin 0 -> 39359 bytes
static/image/workbench/index10.png | Bin 0 -> 221 bytes
static/image/workbench/index11.png | Bin 0 -> 15624 bytes
static/image/workbench/index12.png | Bin 0 -> 14767 bytes
static/image/workbench/index2.png | Bin 0 -> 70125 bytes
static/image/workbench/index3.png | Bin 0 -> 974 bytes
static/image/workbench/index4.png | Bin 0 -> 760 bytes
static/image/workbench/index5.png | Bin 0 -> 310 bytes
static/image/workbench/index6.png | Bin 0 -> 654 bytes
static/image/workbench/index7.png | Bin 0 -> 283 bytes
static/image/workbench/index8.png | Bin 0 -> 773 bytes
static/image/workbench/index9.png | Bin 0 -> 624 bytes
styles/common.scss | 305 +++
uni.scss | 3 +
uni_modules/Sansnn-uQRCode/changelog.md | 44 +
.../u-qrcode/gcanvas/bridge/bridge-weex.js | 241 ++
.../context-2d/FillStyleLinearGradient.js | 18 +
.../gcanvas/context-2d/FillStylePattern.js | 8 +
.../context-2d/FillStyleRadialGradient.js | 17 +
.../gcanvas/context-2d/RenderingContext.js | 666 +++++
.../gcanvas/context-webgl/ActiveInfo.js | 11 +
.../u-qrcode/gcanvas/context-webgl/Buffer.js | 21 +
.../gcanvas/context-webgl/Framebuffer.js | 21 +
.../u-qrcode/gcanvas/context-webgl/GLenum.js | 298 +++
.../gcanvas/context-webgl/GLmethod.js | 142 +
.../u-qrcode/gcanvas/context-webgl/GLtype.js | 23 +
.../u-qrcode/gcanvas/context-webgl/Program.js | 21 +
.../gcanvas/context-webgl/Renderbuffer.js | 21 +
.../gcanvas/context-webgl/RenderingContext.js | 1191 +++++++++
.../u-qrcode/gcanvas/context-webgl/Shader.js | 22 +
.../context-webgl/ShaderPrecisionFormat.js | 11 +
.../u-qrcode/gcanvas/context-webgl/Texture.js | 22 +
.../gcanvas/context-webgl/UniformLocation.js | 22 +
.../gcanvas/context-webgl/classUtils.js | 3 +
.../components/u-qrcode/gcanvas/env/canvas.js | 74 +
.../components/u-qrcode/gcanvas/env/image.js | 96 +
.../components/u-qrcode/gcanvas/env/tool.js | 24 +
.../components/u-qrcode/gcanvas/index.js | 39 +
.../components/u-qrcode/u-qrcode.vue | 684 +++++
.../Sansnn-uQRCode/js_sdk/u-qrcode/license.md | 201 ++
.../Sansnn-uQRCode/js_sdk/u-qrcode/module.js | 2285 +++++++++++++++++
.../js_sdk/u-qrcode/package.json | 24 +
.../Sansnn-uQRCode/js_sdk/u-qrcode/readme.md | 274 ++
.../js_sdk/u-qrcode/u-qrcode.js | 2285 +++++++++++++++++
uni_modules/Sansnn-uQRCode/package.json | 83 +
uni_modules/Sansnn-uQRCode/readme.md | 274 ++
uni_modules/hpy-form-select/changelog.md | 2 +
.../hpy-form-select/hpy-form-select.vue | 255 ++
uni_modules/hpy-form-select/package.json | 87 +
uni_modules/hpy-form-select/readme.md | 169 ++
uni_modules/mp-html/README.md | 191 ++
uni_modules/mp-html/changelog.md | 121 +
.../mp-html/components/mp-html/mp-html.vue | 498 ++++
.../mp-html/components/mp-html/node/node.vue | 576 +++++
.../mp-html/components/mp-html/parser.js | 1333 ++++++++++
uni_modules/mp-html/package.json | 76 +
.../static/app-plus/mp-html/js/handler.js | 1 +
.../app-plus/mp-html/js/uni.webview.min.js | 1 +
.../static/app-plus/mp-html/local.html | 1 +
uni_modules/uni-badge/changelog.md | 29 +
.../components/uni-badge/uni-badge.vue | 268 ++
uni_modules/uni-badge/package.json | 88 +
uni_modules/uni-badge/readme.md | 10 +
uni_modules/uni-calendar/changelog.md | 16 +
.../components/uni-calendar/calendar.js | 546 ++++
.../components/uni-calendar/i18n/en.json | 12 +
.../components/uni-calendar/i18n/index.js | 8 +
.../components/uni-calendar/i18n/zh-Hans.json | 12 +
.../components/uni-calendar/i18n/zh-Hant.json | 12 +
.../uni-calendar/uni-calendar-item.vue | 181 ++
.../components/uni-calendar/uni-calendar.vue | 554 ++++
.../components/uni-calendar/util.js | 354 +++
uni_modules/uni-calendar/package.json | 88 +
uni_modules/uni-calendar/readme.md | 103 +
uni_modules/uni-card/changelog.md | 26 +
.../uni-card/components/uni-card/uni-card.vue | 270 ++
uni_modules/uni-card/package.json | 90 +
uni_modules/uni-card/readme.md | 12 +
uni_modules/uni-collapse/changelog.md | 36 +
.../uni-collapse-item/uni-collapse-item.vue | 402 +++
.../components/uni-collapse/uni-collapse.vue | 147 ++
uni_modules/uni-collapse/package.json | 89 +
uni_modules/uni-collapse/readme.md | 12 +
uni_modules/uni-combox/changelog.md | 15 +
.../components/uni-combox/uni-combox.vue | 275 ++
uni_modules/uni-combox/package.json | 90 +
uni_modules/uni-combox/readme.md | 11 +
uni_modules/uni-config-center/changelog.md | 6 +
uni_modules/uni-config-center/package.json | 81 +
uni_modules/uni-config-center/readme.md | 93 +
.../common/uni-config-center/index.js | 1 +
.../common/uni-config-center/package.json | 9 +
uni_modules/uni-countdown/changelog.md | 24 +
.../components/uni-countdown/i18n/en.json | 6 +
.../components/uni-countdown/i18n/index.js | 8 +
.../uni-countdown/i18n/zh-Hans.json | 6 +
.../uni-countdown/i18n/zh-Hant.json | 6 +
.../uni-countdown/uni-countdown.vue | 271 ++
uni_modules/uni-countdown/package.json | 86 +
uni_modules/uni-countdown/readme.md | 10 +
uni_modules/uni-data-checkbox/changelog.md | 41 +
.../uni-data-checkbox/uni-data-checkbox.vue | 817 ++++++
uni_modules/uni-data-checkbox/package.json | 87 +
uni_modules/uni-data-checkbox/readme.md | 18 +
uni_modules/uni-data-picker/changelog.md | 56 +
.../components/uni-data-picker/keypress.js | 45 +
.../uni-data-picker/uni-data-picker.vue | 539 ++++
.../uni-data-pickerview/uni-data-picker.js | 563 ++++
.../uni-data-pickerview.vue | 333 +++
uni_modules/uni-data-picker/package.json | 92 +
uni_modules/uni-data-picker/readme.md | 22 +
uni_modules/uni-dateformat/changelog.md | 10 +
.../components/uni-dateformat/date-format.js | 200 ++
.../uni-dateformat/uni-dateformat.vue | 88 +
uni_modules/uni-dateformat/package.json | 88 +
uni_modules/uni-dateformat/readme.md | 11 +
uni_modules/uni-datetime-picker/changelog.md | 89 +
.../uni-datetime-picker/calendar-item.vue | 185 ++
.../uni-datetime-picker/calendar.vue | 898 +++++++
.../uni-datetime-picker/i18n/en.json | 19 +
.../uni-datetime-picker/i18n/index.js | 8 +
.../uni-datetime-picker/i18n/zh-Hans.json | 19 +
.../uni-datetime-picker/i18n/zh-Hant.json | 19 +
.../uni-datetime-picker/keypress.js | 45 +
.../uni-datetime-picker/time-picker.vue | 927 +++++++
.../uni-datetime-picker.vue | 997 +++++++
.../components/uni-datetime-picker/util.js | 410 +++
uni_modules/uni-datetime-picker/package.json | 90 +
uni_modules/uni-datetime-picker/readme.md | 21 +
uni_modules/uni-drawer/changelog.md | 13 +
.../components/uni-drawer/keypress.js | 45 +
.../components/uni-drawer/uni-drawer.vue | 183 ++
uni_modules/uni-drawer/package.json | 87 +
uni_modules/uni-drawer/readme.md | 10 +
uni_modules/uni-easyinput/changelog.md | 35 +
.../components/uni-easyinput/common.js | 56 +
.../uni-easyinput/uni-easyinput.vue | 461 ++++
uni_modules/uni-easyinput/package.json | 90 +
uni_modules/uni-easyinput/readme.md | 11 +
uni_modules/uni-fab/changelog.md | 17 +
.../uni-fab/components/uni-fab/uni-fab.vue | 475 ++++
uni_modules/uni-fab/package.json | 87 +
uni_modules/uni-fab/readme.md | 9 +
uni_modules/uni-fav/changelog.md | 17 +
.../uni-fav/components/uni-fav/i18n/en.json | 4 +
.../uni-fav/components/uni-fav/i18n/index.js | 8 +
.../components/uni-fav/i18n/zh-Hans.json | 4 +
.../components/uni-fav/i18n/zh-Hant.json | 4 +
.../uni-fav/components/uni-fav/uni-fav.vue | 156 ++
uni_modules/uni-fav/package.json | 89 +
uni_modules/uni-fav/readme.md | 10 +
uni_modules/uni-file-picker/changelog.md | 61 +
.../uni-file-picker/choose-and-upload-file.js | 224 ++
.../uni-file-picker/uni-file-picker.vue | 651 +++++
.../uni-file-picker/upload-file.vue | 325 +++
.../uni-file-picker/upload-image.vue | 292 +++
.../components/uni-file-picker/utils.js | 109 +
uni_modules/uni-file-picker/package.json | 86 +
uni_modules/uni-file-picker/readme.md | 11 +
uni_modules/uni-forms/changelog.md | 60 +
.../uni-forms-item/uni-forms-item.vue | 509 ++++
.../components/uni-forms/uni-forms.vue | 472 ++++
.../components/uni-forms/validate.js | 486 ++++
uni_modules/uni-forms/package.json | 90 +
uni_modules/uni-forms/readme.md | 23 +
uni_modules/uni-goods-nav/changelog.md | 16 +
.../components/uni-goods-nav/i18n/en.json | 6 +
.../components/uni-goods-nav/i18n/index.js | 8 +
.../uni-goods-nav/i18n/zh-Hans.json | 6 +
.../uni-goods-nav/i18n/zh-Hant.json | 6 +
.../uni-goods-nav/uni-goods-nav.vue | 224 ++
uni_modules/uni-goods-nav/package.json | 88 +
uni_modules/uni-goods-nav/readme.md | 10 +
uni_modules/uni-grid/changelog.md | 13 +
.../uni-grid-item/uni-grid-item.vue | 127 +
.../uni-grid/components/uni-grid/uni-grid.vue | 142 +
uni_modules/uni-grid/package.json | 86 +
uni_modules/uni-grid/readme.md | 11 +
uni_modules/uni-group/changelog.md | 14 +
.../components/uni-group/uni-group.vue | 130 +
uni_modules/uni-group/package.json | 87 +
uni_modules/uni-group/readme.md | 9 +
uni_modules/uni-icons/changelog.md | 22 +
.../uni-icons/components/uni-icons/icons.js | 1169 +++++++++
.../components/uni-icons/uni-icons.vue | 96 +
.../components/uni-icons/uniicons.css | 663 +++++
.../components/uni-icons/uniicons.ttf | Bin 0 -> 35760 bytes
uni_modules/uni-icons/package.json | 86 +
uni_modules/uni-icons/readme.md | 8 +
uni_modules/uni-id-common/changelog.md | 26 +
uni_modules/uni-id-common/package.json | 87 +
uni_modules/uni-id-common/readme.md | 3 +
.../common/uni-id-common/index.js | 1 +
.../common/uni-id-common/package.json | 16 +
uni_modules/uni-indexed-list/changelog.md | 17 +
.../uni-indexed-list-item.vue | 144 ++
.../uni-indexed-list/uni-indexed-list.vue | 367 +++
uni_modules/uni-indexed-list/package.json | 89 +
uni_modules/uni-indexed-list/readme.md | 11 +
uni_modules/uni-link/changelog.md | 17 +
.../uni-link/components/uni-link/uni-link.vue | 128 +
uni_modules/uni-link/package.json | 87 +
uni_modules/uni-link/readme.md | 11 +
uni_modules/uni-list/changelog.md | 20 +
.../components/uni-list-ad/uni-list-ad.vue | 107 +
.../uni-list-chat/uni-list-chat.scss | 58 +
.../uni-list-chat/uni-list-chat.vue | 538 ++++
.../uni-list-item/uni-list-item.vue | 454 ++++
.../uni-list/components/uni-list/uni-list.vue | 108 +
.../components/uni-list/uni-refresh.vue | 65 +
.../components/uni-list/uni-refresh.wxs | 87 +
uni_modules/uni-list/package.json | 91 +
uni_modules/uni-list/readme.md | 346 +++
uni_modules/uni-load-more/changelog.md | 19 +
.../components/uni-load-more/i18n/en.json | 5 +
.../components/uni-load-more/i18n/index.js | 8 +
.../uni-load-more/i18n/zh-Hans.json | 5 +
.../uni-load-more/i18n/zh-Hant.json | 5 +
.../uni-load-more/uni-load-more.vue | 399 +++
uni_modules/uni-load-more/package.json | 86 +
uni_modules/uni-load-more/readme.md | 14 +
uni_modules/uni-nav-bar/changelog.md | 37 +
.../components/uni-nav-bar/uni-nav-bar.vue | 343 +++
.../components/uni-nav-bar/uni-status-bar.vue | 27 +
uni_modules/uni-nav-bar/package.json | 89 +
uni_modules/uni-nav-bar/readme.md | 15 +
uni_modules/uni-notice-bar/changelog.md | 16 +
.../uni-notice-bar/uni-notice-bar.vue | 395 +++
uni_modules/uni-notice-bar/package.json | 90 +
uni_modules/uni-notice-bar/readme.md | 13 +
uni_modules/uni-number-box/changelog.md | 25 +
.../uni-number-box/uni-number-box.vue | 221 ++
uni_modules/uni-number-box/package.json | 85 +
uni_modules/uni-number-box/readme.md | 13 +
uni_modules/uni-pagination/changelog.md | 20 +
.../components/uni-pagination/i18n/en.json | 4 +
.../components/uni-pagination/i18n/es.json | 4 +
.../components/uni-pagination/i18n/fr.json | 4 +
.../components/uni-pagination/i18n/index.js | 12 +
.../uni-pagination/i18n/zh-Hans.json | 4 +
.../uni-pagination/i18n/zh-Hant.json | 4 +
.../uni-pagination/uni-pagination.vue | 409 +++
uni_modules/uni-pagination/package.json | 86 +
uni_modules/uni-pagination/readme.md | 13 +
uni_modules/uni-popup/changelog.md | 60 +
.../components/uni-popup-dialog/keypress.js | 45 +
.../uni-popup-dialog/uni-popup-dialog.vue | 271 ++
.../uni-popup-message/uni-popup-message.vue | 143 ++
.../uni-popup-share/uni-popup-share.vue | 187 ++
.../components/uni-popup/i18n/en.json | 7 +
.../components/uni-popup/i18n/index.js | 8 +
.../components/uni-popup/i18n/zh-Hans.json | 7 +
.../components/uni-popup/i18n/zh-Hant.json | 7 +
.../components/uni-popup/keypress.js | 45 +
.../uni-popup/components/uni-popup/popup.js | 26 +
.../components/uni-popup/uni-popup.vue | 474 ++++
uni_modules/uni-popup/package.json | 90 +
uni_modules/uni-popup/readme.md | 17 +
uni_modules/uni-rate/changelog.md | 25 +
.../uni-rate/components/uni-rate/uni-rate.vue | 361 +++
uni_modules/uni-rate/package.json | 88 +
uni_modules/uni-rate/readme.md | 12 +
uni_modules/uni-row/changelog.md | 10 +
.../uni-row/components/uni-col/uni-col.vue | 317 +++
.../uni-row/components/uni-row/uni-row.vue | 190 ++
uni_modules/uni-row/package.json | 87 +
uni_modules/uni-row/readme.md | 10 +
uni_modules/uni-scss/changelog.md | 8 +
uni_modules/uni-scss/index.scss | 1 +
uni_modules/uni-scss/package.json | 82 +
uni_modules/uni-scss/readme.md | 4 +
uni_modules/uni-scss/styles/index.scss | 7 +
.../uni-scss/styles/setting/_border.scss | 3 +
.../uni-scss/styles/setting/_color.scss | 66 +
.../uni-scss/styles/setting/_radius.scss | 55 +
.../uni-scss/styles/setting/_space.scss | 56 +
.../uni-scss/styles/setting/_styles.scss | 167 ++
.../uni-scss/styles/setting/_text.scss | 24 +
.../uni-scss/styles/setting/_variables.scss | 146 ++
.../uni-scss/styles/tools/functions.scss | 19 +
uni_modules/uni-scss/theme.scss | 31 +
uni_modules/uni-scss/variables.scss | 62 +
uni_modules/uni-search-bar/changelog.md | 27 +
.../components/uni-search-bar/i18n/en.json | 4 +
.../components/uni-search-bar/i18n/index.js | 8 +
.../uni-search-bar/i18n/zh-Hans.json | 4 +
.../uni-search-bar/i18n/zh-Hant.json | 4 +
.../uni-search-bar/uni-search-bar.vue | 287 +++
uni_modules/uni-search-bar/package.json | 89 +
uni_modules/uni-search-bar/readme.md | 14 +
.../uni-segmented-control/changelog.md | 9 +
.../uni-segmented-control.vue | 145 ++
.../uni-segmented-control/package.json | 87 +
uni_modules/uni-segmented-control/readme.md | 13 +
uni_modules/uni-steps/changelog.md | 16 +
.../components/uni-steps/uni-steps.vue | 269 ++
uni_modules/uni-steps/package.json | 89 +
uni_modules/uni-steps/readme.md | 13 +
uni_modules/uni-swipe-action/changelog.md | 33 +
.../uni-swipe-action-item/bindingx.js | 300 +++
.../components/uni-swipe-action-item/isPC.js | 12 +
.../uni-swipe-action-item/mpalipay.js | 193 ++
.../uni-swipe-action-item/mpother.js | 257 ++
.../components/uni-swipe-action-item/mpwxs.js | 82 +
.../uni-swipe-action-item/render.js | 270 ++
.../uni-swipe-action-item.vue | 344 +++
.../components/uni-swipe-action-item/wx.wxs | 341 +++
.../uni-swipe-action/uni-swipe-action.vue | 60 +
uni_modules/uni-swipe-action/package.json | 87 +
uni_modules/uni-swipe-action/readme.md | 11 +
uni_modules/uni-swiper-dot/changelog.md | 12 +
.../uni-swiper-dot/uni-swiper-dot.vue | 218 ++
uni_modules/uni-swiper-dot/package.json | 87 +
uni_modules/uni-swiper-dot/readme.md | 11 +
uni_modules/uni-table/changelog.md | 21 +
.../components/uni-table/uni-table.vue | 455 ++++
.../components/uni-tbody/uni-tbody.vue | 29 +
.../uni-table/components/uni-td/uni-td.vue | 90 +
.../components/uni-th/filter-dropdown.vue | 503 ++++
.../uni-table/components/uni-th/uni-th.vue | 274 ++
.../components/uni-thead/uni-thead.vue | 129 +
.../components/uni-tr/table-checkbox.vue | 179 ++
.../uni-table/components/uni-tr/uni-tr.vue | 171 ++
uni_modules/uni-table/i18n/en.json | 9 +
uni_modules/uni-table/i18n/es.json | 9 +
uni_modules/uni-table/i18n/fr.json | 9 +
uni_modules/uni-table/i18n/index.js | 12 +
uni_modules/uni-table/i18n/zh-Hans.json | 9 +
uni_modules/uni-table/i18n/zh-Hant.json | 9 +
uni_modules/uni-table/package.json | 86 +
uni_modules/uni-table/readme.md | 13 +
uni_modules/uni-tag/changelog.md | 21 +
.../uni-tag/components/uni-tag/uni-tag.vue | 252 ++
uni_modules/uni-tag/package.json | 87 +
uni_modules/uni-tag/readme.md | 13 +
uni_modules/uni-test/changelog.md | 39 +
.../uni-test/components/uni-test/uni-test.vue | 26 +
uni_modules/uni-test/package.json | 83 +
uni_modules/uni-test/readme.md | 10 +
uni_modules/uni-title/changelog.md | 8 +
.../components/uni-title/uni-title.vue | 171 ++
uni_modules/uni-title/package.json | 88 +
uni_modules/uni-title/readme.md | 14 +
uni_modules/uni-transition/changelog.md | 20 +
.../uni-transition/createAnimation.js | 128 +
.../uni-transition/uni-transition.vue | 277 ++
uni_modules/uni-transition/package.json | 87 +
uni_modules/uni-transition/readme.md | 11 +
uni_modules/uni-ui/changelog.md | 383 +++
.../uni-ui/components/uni-ui/uni-ui.vue | 7 +
uni_modules/uni-ui/package.json | 128 +
uni_modules/uni-ui/readme.md | 248 ++
user/account/account.vue | 61 +
user/addStaff/addStaff.vue | 51 +
user/article/article.vue | 212 ++
user/email/email.vue | 113 +
user/info/info.vue | 285 ++
user/password/password.vue | 62 +
user/phone/phone.vue | 119 +
user/plans/plans.vue | 281 ++
user/qrcode/qrcode.vue | 168 ++
user/reg/reg.vue | 140 +
user/scheme/scheme.vue | 116 +
user/selectAccount/selectAccount.vue | 94 +
user/send/send.vue | 95 +
user/setting/setting.vue | 92 +
user/study/study.vue | 289 +++
483 files changed, 60070 insertions(+)
create mode 100644 .gitignore
create mode 100644 .hbuilderx/launch.json
create mode 100644 App.vue
create mode 100644 README.md
create mode 100644 apis/modules/article.js
create mode 100644 apis/modules/client.js
create mode 100644 apis/modules/course.js
create mode 100644 apis/modules/order.js
create mode 100644 apis/modules/parner.js
create mode 100644 apis/modules/product.js
create mode 100644 apis/modules/user.js
create mode 100644 apis/request.js
create mode 100644 components/empty/empty.vue
create mode 100644 components/filter-popup/components/mask.vue
create mode 100644 components/filter-popup/components/popup.vue
create mode 100644 components/filter-popup/detail.md
create mode 100644 components/filter-popup/filter-popup.vue
create mode 100644 components/notAuth/notAuth.vue
create mode 100644 config/product.js
create mode 100644 config/request.js
create mode 100644 course/addCourse/addCourse.vue
create mode 100644 course/clients/clients.vue
create mode 100644 course/courseDetail/courseDetail.vue
create mode 100644 course/curClient/curClient.vue
create mode 100644 course/editCourse/editCourse.vue
create mode 100644 course/orderDetail/orderDetail.vue
create mode 100644 course/ordered/ordered.vue
create mode 100644 course/practiceDetail/practiceDetail.vue
create mode 100644 course/privacyAgreement/privacyAgreement.vue
create mode 100644 course/products/products.vue
create mode 100644 course/serviceAgreement/serviceAgreement.vue
create mode 100644 course/shopCart/shopCart.vue
create mode 100644 index.html
create mode 100644 libs/Oss/base64.js
create mode 100644 libs/Oss/crypto.js
create mode 100644 libs/Oss/hmac.js
create mode 100644 libs/Oss/sha1.js
create mode 100644 libs/Oss/upload.js
create mode 100644 libs/WXBizDataCrypt.js
create mode 100644 libs/mtj-wx-sdk.config.js
create mode 100644 libs/mtj-wx-sdk.js
create mode 100644 libs/share.js
create mode 100644 libs/uma.js
create mode 100644 libs/util.js
create mode 100644 main.js
create mode 100644 manifest.json
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 pages.json
create mode 100644 pages/achievement/achievement.vue
create mode 100644 pages/index/index.vue
create mode 100644 pages/login/login.vue
create mode 100644 pages/orders/orders.vue
create mode 100644 pages/person/person.vue
create mode 100644 static/iconfont/iconfont.css
create mode 100644 static/iconfont/iconfont.ttf
create mode 100644 static/image/arrow-down.png
create mode 100644 static/image/avatar.png
create mode 100644 static/image/index/1.png
create mode 100644 static/image/index/2.png
create mode 100644 static/image/index/3.png
create mode 100644 static/image/index/4.png
create mode 100644 static/image/index/5.png
create mode 100644 static/image/index/6.png
create mode 100644 static/image/index/7.png
create mode 100644 static/image/index/8.png
create mode 100644 static/image/index/9.png
create mode 100644 static/image/index/banner.png
create mode 100644 static/image/index/banner1.png
create mode 100644 static/image/info-bg.jpg
create mode 100644 static/image/info.png
create mode 100644 static/image/login1.png
create mode 100644 static/image/login2.png
create mode 100644 static/image/logo.png
create mode 100644 static/image/logo1.png
create mode 100644 static/image/none.png
create mode 100644 static/image/person-bg.png
create mode 100644 static/image/person1.png
create mode 100644 static/image/person2.png
create mode 100644 static/image/person26.png
create mode 100644 static/image/person27.png
create mode 100644 static/image/person3.png
create mode 100644 static/image/person4.png
create mode 100644 static/image/person5.png
create mode 100644 static/image/person6.png
create mode 100644 static/image/person7.png
create mode 100644 static/image/person8.png
create mode 100644 static/image/person9.png
create mode 100644 static/image/phone.png
create mode 100644 static/image/product.png
create mode 100644 static/image/product/1.png
create mode 100644 static/image/product/2.png
create mode 100644 static/image/product/3.png
create mode 100644 static/image/product/4.png
create mode 100644 static/image/product/5.png
create mode 100644 static/image/product/6.png
create mode 100644 static/image/product/excel.png
create mode 100644 static/image/product/pdf.png
create mode 100644 static/image/product/ppt.png
create mode 100644 static/image/product/shop-blue.png
create mode 100644 static/image/product/shop.png
create mode 100644 static/image/product/word.png
create mode 100644 static/image/qrcode.png
create mode 100644 static/image/school.png
create mode 100644 static/image/study-bg.jpg
create mode 100644 static/image/tab1-1.png
create mode 100644 static/image/tab1.png
create mode 100644 static/image/tab2-1.png
create mode 100644 static/image/tab2.png
create mode 100644 static/image/tab3-1.png
create mode 100644 static/image/tab3.png
create mode 100644 static/image/tab4-1.png
create mode 100644 static/image/tab4.png
create mode 100644 static/image/trash.png
create mode 100644 static/image/unfold.png
create mode 100644 static/image/wechat.png
create mode 100644 static/image/workbench/index1.png
create mode 100644 static/image/workbench/index10.png
create mode 100644 static/image/workbench/index11.png
create mode 100644 static/image/workbench/index12.png
create mode 100644 static/image/workbench/index2.png
create mode 100644 static/image/workbench/index3.png
create mode 100644 static/image/workbench/index4.png
create mode 100644 static/image/workbench/index5.png
create mode 100644 static/image/workbench/index6.png
create mode 100644 static/image/workbench/index7.png
create mode 100644 static/image/workbench/index8.png
create mode 100644 static/image/workbench/index9.png
create mode 100644 styles/common.scss
create mode 100644 uni.scss
create mode 100644 uni_modules/Sansnn-uQRCode/changelog.md
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/bridge/bridge-weex.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-2d/FillStyleLinearGradient.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-2d/FillStylePattern.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-2d/FillStyleRadialGradient.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-2d/RenderingContext.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/ActiveInfo.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/Buffer.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/Framebuffer.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/GLenum.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/GLmethod.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/GLtype.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/Program.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/Renderbuffer.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/RenderingContext.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/Shader.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/ShaderPrecisionFormat.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/Texture.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/UniformLocation.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/context-webgl/classUtils.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/env/canvas.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/env/image.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/env/tool.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/gcanvas/index.js
create mode 100644 uni_modules/Sansnn-uQRCode/components/u-qrcode/u-qrcode.vue
create mode 100644 uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode/license.md
create mode 100644 uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode/module.js
create mode 100644 uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode/package.json
create mode 100644 uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode/readme.md
create mode 100644 uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode/u-qrcode.js
create mode 100644 uni_modules/Sansnn-uQRCode/package.json
create mode 100644 uni_modules/Sansnn-uQRCode/readme.md
create mode 100644 uni_modules/hpy-form-select/changelog.md
create mode 100644 uni_modules/hpy-form-select/components/hpy-form-select/hpy-form-select.vue
create mode 100644 uni_modules/hpy-form-select/package.json
create mode 100644 uni_modules/hpy-form-select/readme.md
create mode 100644 uni_modules/mp-html/README.md
create mode 100644 uni_modules/mp-html/changelog.md
create mode 100644 uni_modules/mp-html/components/mp-html/mp-html.vue
create mode 100644 uni_modules/mp-html/components/mp-html/node/node.vue
create mode 100644 uni_modules/mp-html/components/mp-html/parser.js
create mode 100644 uni_modules/mp-html/package.json
create mode 100644 uni_modules/mp-html/static/app-plus/mp-html/js/handler.js
create mode 100644 uni_modules/mp-html/static/app-plus/mp-html/js/uni.webview.min.js
create mode 100644 uni_modules/mp-html/static/app-plus/mp-html/local.html
create mode 100644 uni_modules/uni-badge/changelog.md
create mode 100644 uni_modules/uni-badge/components/uni-badge/uni-badge.vue
create mode 100644 uni_modules/uni-badge/package.json
create mode 100644 uni_modules/uni-badge/readme.md
create mode 100644 uni_modules/uni-calendar/changelog.md
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/calendar.js
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/en.json
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/index.js
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue
create mode 100644 uni_modules/uni-calendar/components/uni-calendar/util.js
create mode 100644 uni_modules/uni-calendar/package.json
create mode 100644 uni_modules/uni-calendar/readme.md
create mode 100644 uni_modules/uni-card/changelog.md
create mode 100644 uni_modules/uni-card/components/uni-card/uni-card.vue
create mode 100644 uni_modules/uni-card/package.json
create mode 100644 uni_modules/uni-card/readme.md
create mode 100644 uni_modules/uni-collapse/changelog.md
create mode 100644 uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue
create mode 100644 uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue
create mode 100644 uni_modules/uni-collapse/package.json
create mode 100644 uni_modules/uni-collapse/readme.md
create mode 100644 uni_modules/uni-combox/changelog.md
create mode 100644 uni_modules/uni-combox/components/uni-combox/uni-combox.vue
create mode 100644 uni_modules/uni-combox/package.json
create mode 100644 uni_modules/uni-combox/readme.md
create mode 100644 uni_modules/uni-config-center/changelog.md
create mode 100644 uni_modules/uni-config-center/package.json
create mode 100644 uni_modules/uni-config-center/readme.md
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
create mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json
create mode 100644 uni_modules/uni-countdown/changelog.md
create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/en.json
create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/index.js
create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue
create mode 100644 uni_modules/uni-countdown/package.json
create mode 100644 uni_modules/uni-countdown/readme.md
create mode 100644 uni_modules/uni-data-checkbox/changelog.md
create mode 100644 uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
create mode 100644 uni_modules/uni-data-checkbox/package.json
create mode 100644 uni_modules/uni-data-checkbox/readme.md
create mode 100644 uni_modules/uni-data-picker/changelog.md
create mode 100644 uni_modules/uni-data-picker/components/uni-data-picker/keypress.js
create mode 100644 uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
create mode 100644 uni_modules/uni-data-picker/package.json
create mode 100644 uni_modules/uni-data-picker/readme.md
create mode 100644 uni_modules/uni-dateformat/changelog.md
create mode 100644 uni_modules/uni-dateformat/components/uni-dateformat/date-format.js
create mode 100644 uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue
create mode 100644 uni_modules/uni-dateformat/package.json
create mode 100644 uni_modules/uni-dateformat/readme.md
create mode 100644 uni_modules/uni-datetime-picker/changelog.md
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
create mode 100644 uni_modules/uni-datetime-picker/package.json
create mode 100644 uni_modules/uni-datetime-picker/readme.md
create mode 100644 uni_modules/uni-drawer/changelog.md
create mode 100644 uni_modules/uni-drawer/components/uni-drawer/keypress.js
create mode 100644 uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
create mode 100644 uni_modules/uni-drawer/package.json
create mode 100644 uni_modules/uni-drawer/readme.md
create mode 100644 uni_modules/uni-easyinput/changelog.md
create mode 100644 uni_modules/uni-easyinput/components/uni-easyinput/common.js
create mode 100644 uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
create mode 100644 uni_modules/uni-easyinput/package.json
create mode 100644 uni_modules/uni-easyinput/readme.md
create mode 100644 uni_modules/uni-fab/changelog.md
create mode 100644 uni_modules/uni-fab/components/uni-fab/uni-fab.vue
create mode 100644 uni_modules/uni-fab/package.json
create mode 100644 uni_modules/uni-fab/readme.md
create mode 100644 uni_modules/uni-fav/changelog.md
create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/en.json
create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/index.js
create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-fav/components/uni-fav/uni-fav.vue
create mode 100644 uni_modules/uni-fav/package.json
create mode 100644 uni_modules/uni-fav/readme.md
create mode 100644 uni_modules/uni-file-picker/changelog.md
create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js
create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue
create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue
create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/utils.js
create mode 100644 uni_modules/uni-file-picker/package.json
create mode 100644 uni_modules/uni-file-picker/readme.md
create mode 100644 uni_modules/uni-forms/changelog.md
create mode 100644 uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
create mode 100644 uni_modules/uni-forms/components/uni-forms/uni-forms.vue
create mode 100644 uni_modules/uni-forms/components/uni-forms/validate.js
create mode 100644 uni_modules/uni-forms/package.json
create mode 100644 uni_modules/uni-forms/readme.md
create mode 100644 uni_modules/uni-goods-nav/changelog.md
create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json
create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js
create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue
create mode 100644 uni_modules/uni-goods-nav/package.json
create mode 100644 uni_modules/uni-goods-nav/readme.md
create mode 100644 uni_modules/uni-grid/changelog.md
create mode 100644 uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue
create mode 100644 uni_modules/uni-grid/components/uni-grid/uni-grid.vue
create mode 100644 uni_modules/uni-grid/package.json
create mode 100644 uni_modules/uni-grid/readme.md
create mode 100644 uni_modules/uni-group/changelog.md
create mode 100644 uni_modules/uni-group/components/uni-group/uni-group.vue
create mode 100644 uni_modules/uni-group/package.json
create mode 100644 uni_modules/uni-group/readme.md
create mode 100644 uni_modules/uni-icons/changelog.md
create mode 100644 uni_modules/uni-icons/components/uni-icons/icons.js
create mode 100644 uni_modules/uni-icons/components/uni-icons/uni-icons.vue
create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.css
create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.ttf
create mode 100644 uni_modules/uni-icons/package.json
create mode 100644 uni_modules/uni-icons/readme.md
create mode 100644 uni_modules/uni-id-common/changelog.md
create mode 100644 uni_modules/uni-id-common/package.json
create mode 100644 uni_modules/uni-id-common/readme.md
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/index.js
create mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json
create mode 100644 uni_modules/uni-indexed-list/changelog.md
create mode 100644 uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue
create mode 100644 uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue
create mode 100644 uni_modules/uni-indexed-list/package.json
create mode 100644 uni_modules/uni-indexed-list/readme.md
create mode 100644 uni_modules/uni-link/changelog.md
create mode 100644 uni_modules/uni-link/components/uni-link/uni-link.vue
create mode 100644 uni_modules/uni-link/package.json
create mode 100644 uni_modules/uni-link/readme.md
create mode 100644 uni_modules/uni-list/changelog.md
create mode 100644 uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
create mode 100644 uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
create mode 100644 uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
create mode 100644 uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
create mode 100644 uni_modules/uni-list/components/uni-list/uni-list.vue
create mode 100644 uni_modules/uni-list/components/uni-list/uni-refresh.vue
create mode 100644 uni_modules/uni-list/components/uni-list/uni-refresh.wxs
create mode 100644 uni_modules/uni-list/package.json
create mode 100644 uni_modules/uni-list/readme.md
create mode 100644 uni_modules/uni-load-more/changelog.md
create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
create mode 100644 uni_modules/uni-load-more/package.json
create mode 100644 uni_modules/uni-load-more/readme.md
create mode 100644 uni_modules/uni-nav-bar/changelog.md
create mode 100644 uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
create mode 100644 uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue
create mode 100644 uni_modules/uni-nav-bar/package.json
create mode 100644 uni_modules/uni-nav-bar/readme.md
create mode 100644 uni_modules/uni-notice-bar/changelog.md
create mode 100644 uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue
create mode 100644 uni_modules/uni-notice-bar/package.json
create mode 100644 uni_modules/uni-notice-bar/readme.md
create mode 100644 uni_modules/uni-number-box/changelog.md
create mode 100644 uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue
create mode 100644 uni_modules/uni-number-box/package.json
create mode 100644 uni_modules/uni-number-box/readme.md
create mode 100644 uni_modules/uni-pagination/changelog.md
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/en.json
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/es.json
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/index.js
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue
create mode 100644 uni_modules/uni-pagination/package.json
create mode 100644 uni_modules/uni-pagination/readme.md
create mode 100644 uni_modules/uni-popup/changelog.md
create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
create mode 100644 uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
create mode 100644 uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/en.json
create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/index.js
create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-popup/components/uni-popup/keypress.js
create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js
create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.vue
create mode 100644 uni_modules/uni-popup/package.json
create mode 100644 uni_modules/uni-popup/readme.md
create mode 100644 uni_modules/uni-rate/changelog.md
create mode 100644 uni_modules/uni-rate/components/uni-rate/uni-rate.vue
create mode 100644 uni_modules/uni-rate/package.json
create mode 100644 uni_modules/uni-rate/readme.md
create mode 100644 uni_modules/uni-row/changelog.md
create mode 100644 uni_modules/uni-row/components/uni-col/uni-col.vue
create mode 100644 uni_modules/uni-row/components/uni-row/uni-row.vue
create mode 100644 uni_modules/uni-row/package.json
create mode 100644 uni_modules/uni-row/readme.md
create mode 100644 uni_modules/uni-scss/changelog.md
create mode 100644 uni_modules/uni-scss/index.scss
create mode 100644 uni_modules/uni-scss/package.json
create mode 100644 uni_modules/uni-scss/readme.md
create mode 100644 uni_modules/uni-scss/styles/index.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_border.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_color.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_radius.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_space.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_styles.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_text.scss
create mode 100644 uni_modules/uni-scss/styles/setting/_variables.scss
create mode 100644 uni_modules/uni-scss/styles/tools/functions.scss
create mode 100644 uni_modules/uni-scss/theme.scss
create mode 100644 uni_modules/uni-scss/variables.scss
create mode 100644 uni_modules/uni-search-bar/changelog.md
create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json
create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js
create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue
create mode 100644 uni_modules/uni-search-bar/package.json
create mode 100644 uni_modules/uni-search-bar/readme.md
create mode 100644 uni_modules/uni-segmented-control/changelog.md
create mode 100644 uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue
create mode 100644 uni_modules/uni-segmented-control/package.json
create mode 100644 uni_modules/uni-segmented-control/readme.md
create mode 100644 uni_modules/uni-steps/changelog.md
create mode 100644 uni_modules/uni-steps/components/uni-steps/uni-steps.vue
create mode 100644 uni_modules/uni-steps/package.json
create mode 100644 uni_modules/uni-steps/readme.md
create mode 100644 uni_modules/uni-swipe-action/changelog.md
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs
create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue
create mode 100644 uni_modules/uni-swipe-action/package.json
create mode 100644 uni_modules/uni-swipe-action/readme.md
create mode 100644 uni_modules/uni-swiper-dot/changelog.md
create mode 100644 uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue
create mode 100644 uni_modules/uni-swiper-dot/package.json
create mode 100644 uni_modules/uni-swiper-dot/readme.md
create mode 100644 uni_modules/uni-table/changelog.md
create mode 100644 uni_modules/uni-table/components/uni-table/uni-table.vue
create mode 100644 uni_modules/uni-table/components/uni-tbody/uni-tbody.vue
create mode 100644 uni_modules/uni-table/components/uni-td/uni-td.vue
create mode 100644 uni_modules/uni-table/components/uni-th/filter-dropdown.vue
create mode 100644 uni_modules/uni-table/components/uni-th/uni-th.vue
create mode 100644 uni_modules/uni-table/components/uni-thead/uni-thead.vue
create mode 100644 uni_modules/uni-table/components/uni-tr/table-checkbox.vue
create mode 100644 uni_modules/uni-table/components/uni-tr/uni-tr.vue
create mode 100644 uni_modules/uni-table/i18n/en.json
create mode 100644 uni_modules/uni-table/i18n/es.json
create mode 100644 uni_modules/uni-table/i18n/fr.json
create mode 100644 uni_modules/uni-table/i18n/index.js
create mode 100644 uni_modules/uni-table/i18n/zh-Hans.json
create mode 100644 uni_modules/uni-table/i18n/zh-Hant.json
create mode 100644 uni_modules/uni-table/package.json
create mode 100644 uni_modules/uni-table/readme.md
create mode 100644 uni_modules/uni-tag/changelog.md
create mode 100644 uni_modules/uni-tag/components/uni-tag/uni-tag.vue
create mode 100644 uni_modules/uni-tag/package.json
create mode 100644 uni_modules/uni-tag/readme.md
create mode 100644 uni_modules/uni-test/changelog.md
create mode 100644 uni_modules/uni-test/components/uni-test/uni-test.vue
create mode 100644 uni_modules/uni-test/package.json
create mode 100644 uni_modules/uni-test/readme.md
create mode 100644 uni_modules/uni-title/changelog.md
create mode 100644 uni_modules/uni-title/components/uni-title/uni-title.vue
create mode 100644 uni_modules/uni-title/package.json
create mode 100644 uni_modules/uni-title/readme.md
create mode 100644 uni_modules/uni-transition/changelog.md
create mode 100644 uni_modules/uni-transition/components/uni-transition/createAnimation.js
create mode 100644 uni_modules/uni-transition/components/uni-transition/uni-transition.vue
create mode 100644 uni_modules/uni-transition/package.json
create mode 100644 uni_modules/uni-transition/readme.md
create mode 100644 uni_modules/uni-ui/changelog.md
create mode 100644 uni_modules/uni-ui/components/uni-ui/uni-ui.vue
create mode 100644 uni_modules/uni-ui/package.json
create mode 100644 uni_modules/uni-ui/readme.md
create mode 100644 user/account/account.vue
create mode 100644 user/addStaff/addStaff.vue
create mode 100644 user/article/article.vue
create mode 100644 user/email/email.vue
create mode 100644 user/info/info.vue
create mode 100644 user/password/password.vue
create mode 100644 user/phone/phone.vue
create mode 100644 user/plans/plans.vue
create mode 100644 user/qrcode/qrcode.vue
create mode 100644 user/reg/reg.vue
create mode 100644 user/scheme/scheme.vue
create mode 100644 user/selectAccount/selectAccount.vue
create mode 100644 user/send/send.vue
create mode 100644 user/setting/setting.vue
create mode 100644 user/study/study.vue
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2857694
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+unpackage
+node_modules
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..37af134
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,24 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "h5" :
+ {
+ "launchtype" : "local"
+ },
+ "mp-toutiao" :
+ {
+ "launchtype" : "local"
+ },
+ "mp-weixin" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..55be1b2
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,36 @@
+
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2837dc6
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# 职站商城
\ No newline at end of file
diff --git a/apis/modules/article.js b/apis/modules/article.js
new file mode 100644
index 0000000..c67ac27
--- /dev/null
+++ b/apis/modules/article.js
@@ -0,0 +1,26 @@
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const partnerOperatingList = (data) => {
+ return post('nakadai/nakadai/partner/article/management/partnerOperatingList', data)
+}
+
+export const findById = id => {
+ return post('nakadai/nakadai/applets/partner/browse?contentId=' + id)
+}
+
+export const queryClassificationByType = id => {
+ return post('nakadai/nakadai/partner/article/classification/queryClassificationByType?typeId=' + id)
+}
+
+export const schemeList = data => {
+ return post('nakadai/nakadai/partner/schemeManagement/schemeList', data)
+}
+
+export const schemeFindById = id => {
+ return post('nakadai/nakadai/partner/schemeManagement/findById?id=' + id)
+}
+
+export const collectCourse = (id, state) => {
+ return post('nakadai/nakadai/partner/article/management/collectCourse?contentId=' + id + '&state=' + state)
+}
\ No newline at end of file
diff --git a/apis/modules/client.js b/apis/modules/client.js
new file mode 100644
index 0000000..560370c
--- /dev/null
+++ b/apis/modules/client.js
@@ -0,0 +1,54 @@
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const queryCustomer = (data) => {
+ return post('nakadai/nakadai/customer/queryCustomer', data)
+}
+
+export const list = (data) => {
+ return post('nakadai/nakadai/applets/customer/getCustomerListBasedOnBusinessManagerId', data)
+}
+
+export const all = (data) => {
+ return post('nakadai/nakadai/applets/customer/customerList', data)
+}
+
+export const queryCustomerDetails = (data) => {
+ return get('nakadai/nakadai/customer/queryCustomerDetails', data)
+}
+
+export const querySchool = (data) => {
+ return get('nakadai/nakadai/school/querySchool', data)
+}
+
+export const queryIndustryClass = (data) => {
+ return get('nakadai/nakadai/hrIndustryClass/queryIndustryClass', data)
+}
+
+export const queryIndustry = (data) => {
+ return get('nakadai/nakadai/hrIndustry/queryIndustry', data)
+}
+
+export const queryCustomerIsExists = (data) => {
+ return get('nakadai/nakadai/customer/queryCustomerIsExists', data)
+}
+
+export const addCustomer = (data) => {
+ return post('nakadai/nakadai/customer/addCustomer', data)
+}
+
+export const updateCustomer = (data) => {
+ return post('nakadai/nakadai/customer/updateCustomer', data)
+}
+
+export const getProductsSubscribedByCustomers = (data) => {
+ return get('nakadai/nakadai/customer/getProductsSubscribedByCustomers', data)
+}
+
+export const getTeamsByAccountId = (data) => {
+ return post('nakadai/nakadai/applets/customer/getTeamsByAccountId', data)
+}
+
+export const getTheBusinessManagerIdsUnderTheTeam = id => {
+ return post(`nakadai/nakadai/applets/customer/getTheBusinessManagerIdsUnderTheTeam?id=${id}`)
+}
\ No newline at end of file
diff --git a/apis/modules/course.js b/apis/modules/course.js
new file mode 100644
index 0000000..7677fe6
--- /dev/null
+++ b/apis/modules/course.js
@@ -0,0 +1,38 @@
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const getSchoolCourseAuthority = () => {
+ return get('nakadai/nakadai/curriculum/getSchoolCourseAuthority')
+}
+
+export const recentUse = data => {
+ return post('nakadai/nakadai/curriculum/recentUse', data)
+}
+
+export const schoolCourse = data => {
+ return get('nakadai/nakadai/curriculum/schoolCourse', data)
+}
+
+export const queryChaptersAndSubsections = id => {
+ return get('nakadai/nakadai/curriculum/chapter/queryChaptersAndSubsections/' + id)
+}
+
+export const curriculumDetail = (cid, mallId) => {
+ return post(`nakadai/nakadai/curriculum/curriculumDetail?cid=${cid}&mallId=${mallId}`)
+}
+
+export const queryPracticeByStudent = data => {
+ return post('occupationlab/occupationlab/achievement/queryPracticeByStudent', data)
+}
+
+export const queryAssessmentByStudent = data => {
+ return post('occupationlab/occupationlab/achievement/queryAssessmentByStudent', data)
+}
+
+export const practiceByStudentDetail = data => {
+ return post(`occupationlab/occupationlab/achievement/practiceByStudentDetail?curriculumId=${data.cid}&projectId=${data.projectId}&paperId=${data.paperId}&pageNum=${data.page}&pageSize=${data.pageSize}`)
+}
+
+export const experimentOverview = () => {
+ return get('occupationlab/occupationlab/achievement/experimentOverview')
+}
\ No newline at end of file
diff --git a/apis/modules/order.js b/apis/modules/order.js
new file mode 100644
index 0000000..e9a003d
--- /dev/null
+++ b/apis/modules/order.js
@@ -0,0 +1,42 @@
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const getOrderOtherTime = (data) => {
+ return post('nakadai/nakadai/orderOther/getOrderOtherTime', data)
+}
+
+export const add = (data) => {
+ return post('nakadai/nakadai/order/add', data)
+}
+
+export const update = (data) => {
+ return post('nakadai/nakadai/order/update', data)
+}
+
+export const getDetail = (data) => {
+ return get('nakadai/nakadai/order/get', data)
+}
+
+export const renew = (data) => {
+ return post('nakadai/nakadai/orderOther/renew', data)
+}
+
+export const list = (data) => {
+ return post('nakadai/nakadai/applets/order/orderList', data)
+}
+
+export const orderList = (data) => {
+ return post('nakadai/nakadai/order/list', data)
+}
+
+export const del = (data) => {
+ return post('nakadai/nakadai/order/delete', data)
+}
+
+export const miniProgramOrderRecord = (data) => {
+ return post('nakadai/nakadai/applets/order/miniProgramOrderRecord', data)
+}
+
+export const queryCitySettlementPrice = (mallId, provinceId, cityId) => {
+ return post(`nakadai/mallPrice/queryCitySettlementPrice?mallId=${mallId}&provinceId=${provinceId}&cityId=${cityId}`)
+}
\ No newline at end of file
diff --git a/apis/modules/parner.js b/apis/modules/parner.js
new file mode 100644
index 0000000..c3a3f0b
--- /dev/null
+++ b/apis/modules/parner.js
@@ -0,0 +1,42 @@
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const savePartnerAccount = (data) => {
+ return post('nakadai/nakadai/partnerAccount/savePartnerAccount', data)
+}
+
+export const teamList = (data) => {
+ return post('nakadai/nakadai/partnerAccount/partnerAccountList', data)
+}
+
+export const generateInvitationCode = accountId => {
+ return post(`nakadai/nakadai/partnerAccount/generateInvitationCode?accountId=${accountId}`)
+}
+
+export const treeList = (data) => {
+ return post('nakadai/nakadai/partnerClassification/treeList', data)
+}
+
+export const my = (data) => {
+ return get('nakadai/nakadai/partner-team/my', data)
+}
+
+export const mailFileSend = (data) => {
+ return post('nakadai/nakadai/partnerAccount/mailFileSend', data)
+}
+
+export const salesProgress = data => {
+ return post(`nakadai/nakadai/applets/partner/salesProgress`, data)
+}
+
+export const annualOperatingAnalysis = data => {
+ return post(`nakadai/nakadai/applets/partner/annualOperatingAnalysis`, data)
+}
+
+export const editProvinceCity = data => {
+ return post(`nakadai/nakadai/partner-team/editProvinceCity`, data)
+}
+
+export const getPartnerTeamRates = data => {
+ return post(`nakadai/nakadai/partner-team/getPartnerTeamRates`, data)
+}
\ No newline at end of file
diff --git a/apis/modules/product.js b/apis/modules/product.js
new file mode 100644
index 0000000..4726020
--- /dev/null
+++ b/apis/modules/product.js
@@ -0,0 +1,50 @@
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const AppletsDataProductList = (data) => {
+ return post('nakadai/nakadai/dataProduct/AppletsDataProductList', data)
+}
+
+export const tagsList = () => {
+ return get('nakadai/tags/tagsList')
+}
+
+export const listOfGoods = (data) => {
+ return post('nakadai/mall/listOfGoods', data)
+}
+
+export const detailsOfGoods = (id) => {
+ return get('nakadai/mall/detailsOfGoods?mallId=' + id)
+}
+
+export const productCategoryList = () => {
+ return get('nakadai/productClassification/productCategoryList')
+}
+
+export const productTypeList = () => {
+ return get('nakadai/productType/productTypeList')
+}
+
+export const addToShoppingCart = (data) => {
+ return post('nakadai/mini/program/shopping/cart/addToShoppingCart', data)
+}
+
+export const delCart = (data) => {
+ return post('nakadai/mini/program/shopping/cart/batchDeletion', data)
+}
+
+export const shoppingCartList = (data) => {
+ return post('nakadai/mini/program/shopping/cart/shoppingCartList', data)
+}
+
+export const courseDiscipline = () => {
+ return get('nakadai/nakadai/subject/courseDiscipline')
+}
+
+export const courseProfessionalClass = id => {
+ return get('nakadai/nakadai/subject/courseProfessionalClass?disciplineId=' + id)
+}
+
+export const courseProfessional = id => {
+ return get('nakadai/nakadai/subject/courseProfessional?professionalClassId=' + id)
+}
\ No newline at end of file
diff --git a/apis/modules/user.js b/apis/modules/user.js
new file mode 100644
index 0000000..effec4a
--- /dev/null
+++ b/apis/modules/user.js
@@ -0,0 +1,100 @@
+import Config from '@/config/request.js'
+import request from '@/apis/request.js'
+const { get, post } = request
+
+export const studentWeChatAppletCallback = (data) => {
+ return post('users/users/user/studentWeChatAppletCallback', data)
+}
+
+export const studentBinding = (data) => {
+ return post('users/users/user/studentBinding', data)
+}
+
+export const weChatToken = (data) => {
+ return post('users/users/user/weChatToken', data)
+}
+
+export const captcha = (data) => {
+ return Config.baseURL + `users/users/user/captcha`
+}
+
+export const queryProvince = () => {
+ return get('nakadai/nakadai/province/queryProvince')
+}
+
+export const queryCity = (data) => {
+ return get('nakadai/nakadai/city/queryCity', data)
+}
+
+export const updateAvatars = url => {
+ return post(`users/users/user/updateAvatars?url=` + url)
+}
+
+export const userBinding = (data) => {
+ return post('users/users/user/userBinding', data)
+}
+export const sendPhoneOrEmailCode = (data) => {
+ return post('users/users/userAccount/sendPhoneOrEmailCode', data)
+}
+
+export const examinePassword = (data) => {
+ return post('users/users/userAccount/examinePassword', data)
+}
+
+export const getUserRolesPermissionMenu = (data) => {
+ return get('users/users/user-role/getUserRolesPermissionMenu', data)
+}
+
+export const updatePersonCenter = (data) => {
+ return post('users/users/userAccount/updatePersonCenter', data)
+}
+
+export const queryUserInfoDetails = () => {
+ return get('users/users/userAccount/queryUserInfoDetails')
+}
+
+export const updateMyEmail = (data) => {
+ return post('nakadai/nakadai/partner-team/updateMyEmail', data)
+}
+
+export const mailCodeSend = (data) => {
+ return post('nakadai/nakadai/partner-team/mailCodeSend', data)
+}
+
+export const changeAccount = account => {
+ return post(`users/users/applets/mine/changeAccount?account=${account}`)
+}
+
+export const changePhoneNumber = (phone, code) => {
+ return post(`users/users/applets/mine/changePhoneNumber?phone=${phone}&code=${code}`)
+}
+
+export const checkIfAnAccountExists = account => {
+ return post(`users/users/applets/mine/checkIfAnAccountExists?account=${account}`)
+}
+
+export const checkIfThePhoneNumberExists = phone => {
+ return post(`users/users/applets/mine/checkIfThePhoneNumberExists?phone=${phone}`)
+}
+
+export const queryPartnerAccount = data => {
+ return post(`nakadai/nakadai/partnerAccount/queryPartnerAccount?phone=${data.phone}&openId=${data.openId}&douYinOpenId=${data.douYinOpenId}`)
+}
+
+export const getSessionKey = data => {
+ return post(`users/users/user/getSessionKey`, data)
+}
+
+export const partnerAccountApplication = data => {
+ return post(`nakadai/nakadai/partnerAccount/partnerAccountApplication`, data)
+}
+
+export const loginByOpenid = openid => {
+ return post(`users/users/user/loginByOpenid?openid=${openid}`)
+}
+
+export const checkWorkNumOrAccount = account => {
+ return post(`occupationlab/occupationlab/architecture/checkWorkNumOrAccount?platformId=4&type=0&account=` + account)
+}
+
+export const updateUserAvatars = `http://39.108.250.202:9000/users/users/userAccount/updateUserAvatars`
\ No newline at end of file
diff --git a/apis/request.js b/apis/request.js
new file mode 100644
index 0000000..4ea0553
--- /dev/null
+++ b/apis/request.js
@@ -0,0 +1,80 @@
+import config from '@/config/request'
+let logouted = 0
+
+const request = options => {
+ const header = Object.assign({}, config.headers, {
+ token: uni.getStorageSync('token')
+ })
+ const otherUrl = ['queryPartnerAccount', 'getSessionKey', 'loginByOpenid', 'partnerAccountApplication', 'checkWorkNumOrAccount']
+ return new Promise((resolve, reject)=>{
+ const { url } = options
+ uni.request({
+ header,
+ // url: (otherUrl.find(e => url.includes(e)) ? 'http://192.168.31.116:9000/' : config.baseURL) + url,
+ url: config.baseURL + url,
+ method: options.method || 'GET', // 请求类型,默认为GET
+ data: options.data || {}, // 请求参数,默认空对象
+ success: ({ data }) => {
+ const { status, message, code } = data
+ // 状态判断,根据后台定义并提示
+ if (status === 200) {
+ resolve(data)
+ } else if (status == 401 || code === 401) {
+ if (!logouted) {
+ // 登录过期
+ uni.clearStorageSync()
+ uni.showToast({
+ title: message || '登录过期,请重新登录',
+ icon: 'none'
+ })
+ setTimeout(() => {
+ logouted = 0
+ uni.reLaunch({
+ url: '/pages/index/index'
+ })
+ }, 1500)
+ reject(data)
+ logouted = 1
+ }
+ } else if (status == 10028 || status == 10014) { // 用户不存在
+ resolve(data)
+ } else if (!status) {
+ resolve(data)
+ } else {
+ uni.showToast({
+ title: message,
+ icon: 'none'
+ })
+ reject(data)
+ }
+ },
+ fail: err => {
+ uni.showToast({
+ title: '请求失败!',
+ icon: 'none'
+ })
+ reject(err)
+ },
+ })
+ })
+}
+
+const get = (url, data, options = {}) => {
+ options.method = 'GET'
+ options.data = data
+ options.url = url
+ return request(options)
+}
+
+const post = (url, data, options = {}) => {
+ options.method = 'POST'
+ options.data = data
+ options.url = url
+ return request(options)
+}
+
+export default {
+ request,
+ get,
+ post
+}
\ No newline at end of file
diff --git a/components/empty/empty.vue b/components/empty/empty.vue
new file mode 100644
index 0000000..42d2f06
--- /dev/null
+++ b/components/empty/empty.vue
@@ -0,0 +1,40 @@
+
+
+
+ {{ text }}
+
+
+
+
+
+
diff --git a/components/filter-popup/components/mask.vue b/components/filter-popup/components/mask.vue
new file mode 100644
index 0000000..521f0d9
--- /dev/null
+++ b/components/filter-popup/components/mask.vue
@@ -0,0 +1,130 @@
+
+ {}"
+ :class="{
+ 'u-mask-zoom': zoom,
+ 'u-mask-show': show,
+ }"
+ >
+
+
+
+
+
+
+
diff --git a/components/filter-popup/components/popup.vue b/components/filter-popup/components/popup.vue
new file mode 100644
index 0000000..fffcfdc
--- /dev/null
+++ b/components/filter-popup/components/popup.vue
@@ -0,0 +1,510 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/filter-popup/detail.md b/components/filter-popup/detail.md
new file mode 100644
index 0000000..e704412
--- /dev/null
+++ b/components/filter-popup/detail.md
@@ -0,0 +1,155 @@
+## 导入即用 全端支持
+
+### 有问题 + wx : zy597172583 标注来意 可评论 看到及时回复
+1.使用方式
+
+```javascript
+
+
+
+
+
diff --git a/components/notAuth/notAuth.vue b/components/notAuth/notAuth.vue
new file mode 100644
index 0000000..52f9d08
--- /dev/null
+++ b/components/notAuth/notAuth.vue
@@ -0,0 +1,26 @@
+
+
+
+
+ 权限审核中,可联系下方平台运营加快审核进度
+
+
+
+
+
+
+
+
diff --git a/config/product.js b/config/product.js
new file mode 100644
index 0000000..206e21d
--- /dev/null
+++ b/config/product.js
@@ -0,0 +1,10 @@
+/**
+/**
+ * 产品 配置文件
+ * @author yujialong
+ */
+
+export default {
+ normalIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220609/png/1534733700683030528.png', // 通用图标
+ dataIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220627/png/1541256164447641600.png' // 数据图标
+}
diff --git a/config/request.js b/config/request.js
new file mode 100644
index 0000000..430eec3
--- /dev/null
+++ b/config/request.js
@@ -0,0 +1,21 @@
+/**
+/**
+ * 请求配置文件
+ * @author yujialong
+ */
+
+export default {
+ // baseURL: 'https://izhixinyun.com/',
+ baseURL: 'http://192.168.31.51:9000/',
+ // baseURL: 'http://121.37.12.51/',
+ headers: {
+ 'Content-Type': 'application/json;charset=UTF-8'
+ },
+ data: {},
+ method: 'POST',
+ responseType: 'json', // 响应数据类型
+ withCredentials: false, // 携带cookie
+ // ======================== 以下为注入axios的配置项 =============================
+ showLoading: true, // 是否显示加载动画
+ isFormData: false // 是否序列化表单数据
+}
diff --git a/course/addCourse/addCourse.vue b/course/addCourse/addCourse.vue
new file mode 100644
index 0000000..40c3996
--- /dev/null
+++ b/course/addCourse/addCourse.vue
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+
+
+ - 全部
+
+
+
+ - {{ tab.name }}
+
+
+
+
+ -
+ checkChange(e, i)">
+ checkChange(e, i)">
+
+ {{ item.productName }}
+
+
+
+
+
+
+ 确定({{ checked.length }})
+
+
+
+
+
+
+
diff --git a/course/clients/clients.vue b/course/clients/clients.vue
new file mode 100644
index 0000000..3612133
--- /dev/null
+++ b/course/clients/clients.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+ -
+ {{ item.customerName }}
+
+
+
+ 联系人:
+ {{ item.orderContact }}
+
+
+ 账号:
+ {{ item.account }}
+
+
+ 产品到期时间:
+ {{ item.expireDate.split(' ')[0] }}
+
+
+ 商务经理:
+ {{ item.businessManagerName }}
+
+
+
+ {{ filterData[0].data.find(e => e.value === item.customerType).title }}客户
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/course/courseDetail/courseDetail.vue b/course/courseDetail/courseDetail.vue
new file mode 100644
index 0000000..d2a1b3e
--- /dev/null
+++ b/course/courseDetail/courseDetail.vue
@@ -0,0 +1,334 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+ {{ section.name }}
+
+
+
+
+
+
+
+
+
+ {{ item.projectName }}
+ 最高分:{{ item.hightScore }} 练习次数:{{ item.practiceNum }}
+ 累计练习时长(小时):{{ item.hightScore }}
+ 最近练习时间:{{ item.lastTime }}
+ 练习情况
+
+
+
+
+
+
+ {{ item.experimentalName }}
+ 得分:{{ item.score }} 耗时:{{ item.timeSum }}min
+ 考核开始时间:{{ item.startTime }}
+ 考核结束时间:{{ item.lastTime }}
+ 成绩报告
+
+
+
+
+
+
+
+
+
diff --git a/course/curClient/curClient.vue b/course/curClient/curClient.vue
new file mode 100644
index 0000000..f02cfdc
--- /dev/null
+++ b/course/curClient/curClient.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.orderNumber }}
+
+
+
+ 商务经理:
+ {{ item.businessManagerName }}
+
+
+ 客户名称:
+ {{ item.customerName }}
+
+
+ 订单金额:
+ {{ item.orderAmount }}元
+
+
+ 订单内容:
+
+ {{ item.productName }}
+ {{ item.toggle ? '收起' : '展开' }}
+
+
+
+ 下单日期:
+ {{ item.createTime }}
+
+
+
+ {{ filterData[0].data.find(e => e.value === item.orderStatus).title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/course/editCourse/editCourse.vue b/course/editCourse/editCourse.vue
new file mode 100644
index 0000000..2eb2a5d
--- /dev/null
+++ b/course/editCourse/editCourse.vue
@@ -0,0 +1,504 @@
+
+
+
+
+
+ {{ c.name }}
+
+
+ {{ c.unit !== '' ? units.find(e => e.id === c.unit).text : '请选择' }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.productName }}
+
+
+
+
+
+ 产品类型
+ {{ item.typeName }}
+
+
+ 使用期限
+
+
+ {{ units.find(e => e.id === item.options).text }}
+
+
+
+
+ 起止日期
+
+
+ {{ item.endTime ? item.startTime + ' - ' + item.endTime : item.startTime}}
+
+
+
+
+ 数量
+ 1
+
+
+
+ {{ item.authority ? '市场价' : '市场单价' }}
+ {{ item.marketValue }}元
+
+
+ 结算价
+ {{ item.settlementPrice && item.settlementPrice + '元' }}
+
+
+ 折扣率
+ {{ item.discountRate }}
+
+
+ 市场服务费
+ {{ item.serviceFee }}元
+
+
+ 成交价
+
+
+ 元
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+
+
+
+
+
diff --git a/course/orderDetail/orderDetail.vue b/course/orderDetail/orderDetail.vue
new file mode 100644
index 0000000..74f3fd0
--- /dev/null
+++ b/course/orderDetail/orderDetail.vue
@@ -0,0 +1,1201 @@
+
+
+
+ 基本信息
+
+
+ 商务经理
+ {{ form.businessManagerName }}
+
+
+ 客户名称
+ {{ form.customerName }}
+
+ {{ form.customerName || '请选择客户' }}
+
+
+
+
+ 省份
+ {{ form.provinceName }}
+
+
+ 城市
+ {{ form.cityName }}
+
+
+ 联系人
+ {{ form.orderContact }}
+
+
+ 电话
+ {{ form.phone }}
+
+
+ 邮箱
+ {{ form.email }}
+
+
+ 订单类型
+ {{ orderTypes.find(e => e.value === form.orderType).text }}
+
+
+
+
+ 订单编号
+ {{ form.orderNumber }}
+
+
+ 订单时间
+ {{ form.createTime }}
+
+
+ 订单金额(元)
+ {{ form.orderAmount }}
+
+
+
+
+
+
+
+
+
+ {{ c.name }}
+
+
+ {{ c.unit ? units.find(e => e.id === c.unit).text : '请选择' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 下一步
+
+
+
+
+
+
+ 添加产品
+
+
+
+
+
+
+ 共选{{ courses.length }}个产品
+ 总成交价合计{{ form.orderAmount }}元
+
+
+
+ 总采购成本:{{ form.purchaseCost }}元
+
+
+ 总产品利润: {{ form.profit }} 元
+
+
+
+ 提交({{ courses.length }})
+
+
+
+
+
+
+
+ 续费
+
+
+
+
+
+
+
+
+
+
+
diff --git a/course/ordered/ordered.vue b/course/ordered/ordered.vue
new file mode 100644
index 0000000..85e08f0
--- /dev/null
+++ b/course/ordered/ordered.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ {{ item.productName }}
+
+
+
+ 起止日期:
+ {{ item.startAndEndTime }}
+
+
+ 订阅状态:
+ {{ item.status }}
+
+
+ 产品状态:
+ {{ item.isEnable }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/course/practiceDetail/practiceDetail.vue b/course/practiceDetail/practiceDetail.vue
new file mode 100644
index 0000000..b1967d4
--- /dev/null
+++ b/course/practiceDetail/practiceDetail.vue
@@ -0,0 +1,109 @@
+
+
+
+
+ {{ item.projectName }}
+ 得分:{{ item.score }} 耗时:{{ item.timeSum }}min
+ 练习开始时间:{{ item.startTime }}
+ 练习结束时间:{{ item.submitTime }}
+ 成绩报告
+
+
+
+
+
+
+
+
diff --git a/course/privacyAgreement/privacyAgreement.vue b/course/privacyAgreement/privacyAgreement.vue
new file mode 100644
index 0000000..f8dfd12
--- /dev/null
+++ b/course/privacyAgreement/privacyAgreement.vue
@@ -0,0 +1,107 @@
+
+
+ 用户隐私协议
+
+ 我们非常重视对用户隐私的保护。您在使用我们的服务时,我们可能会收集和使用您的相关信息。我们希望通过本用户隐私条款向您说明,在使用我们的服务时,我们如何收集、使用、披露、存储这些信息。本用户隐私条款系本平台保护用户个人隐私的承诺,与您所使用的服务息息相关,希望您仔细阅读。
+ (一)个人资料的收集
+ 您在注册账户或使用我们的服务时,向我们提供的相关个人信息,例如电话号码、电子邮件等;您通过我们的服务向其他方提供的共享信息,以及您使用我们的服务时所储存的信息。我们收集数据是根据您与我们的互动和您所做出的选择,包括您的隐私设置以及您使用的产品和功能。我们收集的数据可能包括SDK/API/JS代码版本、浏览器、互联网服务提供商、IP地址、平台、时间戳、应用标识符、应用程序版本、应用分发渠道、独立设备标识符、iOS广告标识符(IDFA)、安卓广告主标识符、网卡(MAC)地址、国际移动设备识别码(IMEI)、设备型号、终端制造厂商、终端设备操作系统版本、会话启动/停止时间、语言所在地、时区和网络状态(WiFi等)、硬盘、CPU和电池使用情况等。
+ (二)个人资料的获取
+ 您使用服务时我们可能收集如下信息:
+ 1、日志信息,指您使用我们的服务时,系统可能通过cookies、web、beacon或其他方式自动采集的技术信息,包括:
+ 1)设备或软件信息,例如您的移动设备、网页浏览器或用于接入我们服务的其他程序所提供的配置信息、您的IP地址和移动设备所用的版本和设备识别码等;在使用我们服务时搜索或浏览的信息,例如您使用的网页搜索词语、访问的社交媒体页面url地址,以及您在使用我们服务时浏览或要求提供的其他信息和内容详情;
+ 2)有关您曾使用的移动应用(APP)和其他软件的信息,以及您曾经使用该等移动应用和软件的信息;
+ 3)您通过我们的服务进行通讯的信息,例如曾通讯的账号,以及通讯时间、数据和时长;
+ 4)您通过我们的服务分享的内容所包含的信息(元数据),例如拍摄或上传的共享照片或录像的日期、时间或地点等。
+
+ 2、位置信息,指您开启设备定位功能并使用我们基于位置提供的相关服务时,收集的有关您位置的信息,包括:
+ 1)您通过具有定位功能的移动设备使用我们的服务时,通过GPS或WiFi等方式收集的您的地理位置信息;
+ 2)您或其他用户提供的包含您所处地理位置的实时信息,例如您提供的账户信息中包含的您所在地区信息;
+ 3)您可以通过关闭定位功能,停止对您的地理位置信息的收集。
+ 4)我们的产品集成友盟+SDK,友盟+SDK需要收集您的设备Mac地址、唯一设备识别码(IMEI/androidID/IDFA/OPENUDID/GUID、SIM卡IMSI信息)以提供统计分析服务。
+ (三)APP涉及用户信息使用的SDK相关情况逐项列举,详情如下:
+ 1、华为推送/小米推送/vivo推送/oppo推送:
+ SDK类型:推送通知;
+ SDK描述:用于实现消息推送(或其他推送)功能SDK;
+ 使用业务场景:向用户推荐活动和提醒;
+ 收集个人信息的类型:设备信息、地理位置、网络信息;
+ 设备信息:设备标识符(IMEI、IDFA、Android、ID、MAC、OAID等相关信息)、应用信息(应用崩溃信息、通知开关状态、软件列表等相关信息)、设备参数及系统信息(设备类型、设备型号、操作系统及硬件相关信息);
+ 网络信息:IP地址,WiFi信息,基站信息等相关信息;
+ 使用目的/理由:向用户推荐活动和提醒。
+
+ 2、微信开放平台:
+ SDK类型:社交;
+ SDK描述:微信分享功能;
+ SDK使用业务场景:微信分享;
+ SDK所需用户信息字段:软件安装列表、设备型号、MAC地址、IMEI号、IMSI、系统版本、手机型号;
+ 使用目的/理由:APP分享音频、视频,图片,活动至微信客户端。
+
+ 3、友盟分享:
+ SDK类型:社交;
+ SDK描述:分享功能;
+ SDK使用业务场景:分享到微信;
+ SDK所需用户信息字段:设备型号,系统版本号,手机型号,分享信息;
+ 使用目的/理由:APP分享图片,活动至微信客户端。
+
+ 4、友盟统计:
+ SDK类型:数据统计;
+ SDK描述:提供数据统计,数据收集,数据分析服务;
+ SDK使用业务场景:日活,路径分析;
+ SDK所需用户信息字段:设备型号,系统版本号,手机型号,发布渠道,页面code数据;
+ 使用目的/理由:数据收集,进行数据分析,提升产品体验。
+
+ 5、Bugly:
+ SDK类型:性能监测;
+ SDK描述:提供移动端应用运行时崩溃,卡顿监控服务;
+ SDK使用业务场景:对APP进行性能监控,提升产品使用体验;
+ SDK所需用户信息字段:设备型号,MAC地址,IMEI号,系统版本,手机型号;
+ 使用目的/理由:监控app使用过程中的奔溃信息分析,提升用户体验。
+ (四)个人资料的披露
+ 我们将采取合理的安全手段保护用户提供的个人及单位信息,在未得到用户许可之前,本平台不会擅自将用户信息披露给任何无关的第三方,但涉及下列情形之一的除外:
+ 1、法律强制规定或司法行政机关依照法定程序要求提供。
+ 2、为保护用户的生命、财产安全或为公共安全之需要。
+ 3、为了保护本平台其他用户的合法权益或财产。
+ 4、您出现违反中国有关法律、法规或者本平台相关协议规则的情况,需要向第三方披露。
+ 5、其他特殊或紧急情况。
+ 由于用户对自身信息保密不当,从而导致用户资料的泄露,或由于网络线路、黑客攻击、计算机病毒等原因造成的资料泄露、丢失、被盗用或被篡改等,本平台不承担任何责任。
+ (五)Cookies技术的使用
+ 我们收集信息是为了向您提供更好、更优、更个性化的服务,本公司将以合法的方式收集必要的用户个人资料。本平台有可能收集的个人资料包括:用户姓名、身份证号、地址、电话号码、电子邮件等信息。用户在本平台注册时,须依注册内容之提示提供用户本人及单位的真实、准确、完整信息,并保证个人及单位资料的及时更新。因用户提供个人及单位信息不准确、不完整或未及时更新而可能遭受的任何损害,本公司不承担任何责任。
+ (六)个人资料的存储
+ 我们收集的有关您的信息和资料将保存在我们及(或)其关联公司的服务器上。
+ (七)个人资料的保护
+ 为保障您的信息安全,我们将采取各种合理的安全措施来保护您的信息,使您的信息不会被泄漏、毁损或者丢失,我们对可能接触到您的信息的员工也采取了严格管理,包括但不限于根据岗位的不同采取不同的权限控制,与他们签署保密协议,监控他们的操作情况等措施。我们会按现有技术提供相应的安全措施来保护您的信息,提供合理的安全保障,尽力做到使您的信息不被泄漏、毁损或丢失。您的账户均有安全保护功能,请妥善保管您的账户及密码信息。我们将通过向其它服务器备份、对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。
+ (八)未成年人保护
+ 我们重视未成年人的个人信息保护,如您为未成年人,建议您请您的监护人阅读本隐私权条款,并在征得您的监护人同意的前提下使用我们的服务或向我们提供信息。
+ (九)联系我们
+ 您可通过发送邮件至service@huorantech.cn与我们沟通,我们将在15天内回复您的请求。
+
+
+
+
+
+
+
diff --git a/course/products/products.vue b/course/products/products.vue
new file mode 100644
index 0000000..33058e9
--- /dev/null
+++ b/course/products/products.vue
@@ -0,0 +1,399 @@
+
+
+
+
+
+
+
+
+
+ - 全部
+
+
+
+ - {{ tab.title }}
+
+
+
+
+
+ {{ categoryName }}
+
+
+
+ {{ productTypeName }}
+
+
+
+ 官方精选
+
+
+
+ {{ tagName }}
+
+
+
+
+
+ -
+
+
+ {{ item.productName }}
+
+
+
+ 产品简介:
+
+ {{ item.productIntroduction }}
+
+
+
+ 产品类型:
+ {{ item.typeName }}
+
+
+ 适用专业:
+ {{ item.professionalName }}
+
+
+ 市场建议单价:
+ {{ item.marketUnitPrice }}元/年
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/course/serviceAgreement/serviceAgreement.vue b/course/serviceAgreement/serviceAgreement.vue
new file mode 100644
index 0000000..391b6d7
--- /dev/null
+++ b/course/serviceAgreement/serviceAgreement.vue
@@ -0,0 +1,88 @@
+
+
+ 服务协议
+ 我们提醒您:在使用本平台的各项服务之前,请您务必仔细阅读并透彻理解本声明。如果您使用本平台服务的,您的使用行为将被视为对本声明全部内容的认可,若您不同意本声明中的全部或部分内容,您应立即停止使用本平台服务。
+ 一、知识产权声明
+ 1、本平台内的所有产品、技术、软件、程序、数据及其他信息(包括但不限于文字、图像、图片、照片、音频、视频、图表、色彩、版面设计、电子文档)的所有权利(包括但不限于域名、版权、商标权、专利权、商业秘密及其他所有相关权利)均归我们公司或其关联公司所有。未经我司的许可,任何人不得擅自使用。
+ 2、本平台的Logo等文字、图形及其组合,以及其他标识、徵记、产品和服务名称均为我司及其关联公司的注册商标,未经我们的书面授权,任何人不得以任何方式使用或作其他处理,也不得向他人表明您有权使用或作其他处理。
+ 3、如果本平台内容无权利声明,并不代表本平台对其不享有权利,也不意味着本平台不主张权利,您应根据诚信原则尊重该等内容的合法权益并进行合法使用。您不得以任何方式修改、复制、公开展示、公布或分发这些材料或者以其他方式把它们用于任何公开或商业目的。禁止以任何目的把这些材料用于其他任何网站或其他平面媒体或网络计算机环境。
+ 二、服务声明
+ 1、我们向用户提供的所有产品或新增加的服务功能,均适用本声明条款之规范。
+ 2、本平台所有信息、软件均为按现状提供,不带有任何明示或暗示的担保或条件,包括但不限于准确性、及时性和非侵权的默示担保或保证。
+ 3、本平台有权根据业务需要修订本“服务声明”,并以平台公告的形式进行更新,不再单独通知予您。经修订的“服务声明”一经本平台公布,即产生效力。如您不同意相关修订,请您立即停止使用本平台服务。如您继续使用服务,则将视为您已接受经修订的条款,当您与本平台发生争议时,应以最新的条款为准。
+ 三、平台的使用
+ 1、除法定许可或征得本公司同意,本平台的信息及其任何组成部分不得被重新编辑、复制、抄袭,或为任何未经本公司允许的商业目的所使用。如果本公司确定用户行为违法或有损本平台和本公司的合法权益,本公司将采取相关法律措施,包括但不限于拒绝提供服务、冻结或删除用户账号等。
+ 2、如果您从本站下载软件,在使用软件时要遵守该软件附带的软件许可协议中所有的许可条款。在您阅读并接受软件许可协议的各项条款之前,不得下载或安装这一软件。如果在适用的许可条款或协议中,已经禁止复制或再分发这些软件,您须遵照执行。
+ 四、信息发布条款
+ (一)平台信息发布
+ 本平台所发布的信息由所有权人及其关联公司遵循真实原则发布,发布人对平台信息不作任何保证或其它担保,包括适销性、适合于特定目的、没有计算机病毒或不侵犯知识产权的保证。
+ (二)用户信息发布
+ 1、平台用户有权在本平台允许用户发布信息的版块发布信息,用户在本平台发表或投递的信息、回复必须遵守中华人民共和国各项法律、法规、条例,不发布或链接有关政治、破坏系统、淫秽色情、封建迷信、人身攻击等违法信息,不侵犯他人知识产权等。
+ 2、我们作为服务提供平台,用户在使用时应当了解明白平台上所有信息均为用户自由发布,用户应依法对其提供的任何信息承担全部责任。我们会对信息进行必要的核查(筛选),但最终对信息的合法性、准确性、真实性不承担任何法律责任。如用户发现某些信息中含有虚假、违法内容,请及时联系我们, 待核实之后,我们将根据中国法律法规和政府规范性文件采取措施移除相关内容或屏蔽相关链接。我们不对用户所发布的信息之删除或储存失败负责。若因用户发布内容引起任何刑事或民事纠纷,发布者须自行承担该刑事、民事或者经济法律责任,同时本平台有权就发布者上述违法行为给予平台造成的任何损失要求赔偿。
+ 五、隐私权政策
+ 我们非常重视对用户隐私的保护。您在使用我们的服务时,我们可能会收集和使用您的相关信息。我们希望通过本用户隐私条款向您说明,在使用我们的服务时,我们如何收集、使用、披露、存储这些信息。本用户隐私条款系本平台保护用户个人隐私的承诺,与您所使用的服务息息相关,希望您仔细阅读。
+ (一)个人资料的收集
+ 我们收集信息是为了向您提供更好、更优、更个性化的服务,本公司将以合法的方式收集必要的用户个人资料。本平台有可能收集的个人资料包括:用户姓名、身份证号、地址、电话号码、电子邮件等信息。用户在本平台注册时,须依注册内容之提示提供用户本人及单位的真实、准确、完整信息,并保证个人及单位资料的及时更新。因用户提供个人及单位信息不准确、不完整或未及时更新而可能遭受的任何损害,本公司不承担任何责任。
+ (二)个人资料的使用
+ 本公司有权为内部经营、管理、统计等目的使用您提供的个人及单位资料,包括但不限于:日常管理本公司提供给用户的服务及产品、监控本平台的安全使用、内部调研、对来访数据进行统计和研究;促进更新供用户享用的服务和产品;确认核对联络名单、为宣传推广目的;为解决争议、排除纠纷和执行本法律声明目的等。
+ (三)个人资料的披露
+ 我们将采取合理的安全手段保护用户提供的个人及单位信息,在未得到用户许可之前,本平台不会擅自将用户信息披露给任何无关的第三方,但涉及下列情形之一的除外:
+ 1、法律强制规定或司法行政机关依照法定程序要求提供。
+ 2、为保护用户的生命、财产安全或为公共安全之需要。
+ 3、为了保护本平台其他用户的合法权益或财产。
+ 4、您出现违反中国有关法律、法规或者本平台相关协议规则的情况,需要向第三方披露。
+ 5、其他特殊或紧急情况。
+ 由于用户对自身信息保密不当,从而导致用户资料的泄露,或由于网络线路、黑客攻击、计算机病毒等原因造成的资料泄露、丢失、被盗用或被篡改等,本平台不承担任何责任。
+ (四)Cookies技术的使用
+ 当用户访问设有Cookies装置的本平台时,本平台服务器会自动发送Cookies至用户浏览器中,同时储存进用户的电脑硬盘内,此Cookies便负责记录日后用户访问本平台时的种种操作、浏览习惯、信用记录等。运用Cookies技术,我们能够为您提供更加周到的个性化服务。我们将运用Cookies技术向用户提供其感兴趣的信息资料或为其储存密码。
+ (五)个人资料的存储
+ 我们收集的有关您的信息和资料将保存在本公司及(或)其关联公司的服务器上。
+ (六)个人资料的保护
+ 为保障您的信息安全,我们将采取各种合理的安全措施来保护您的信息,使您的信息不会被泄漏、毁损或者丢失,我们对可能接触到您的信息的员工也采取了严格管理,包括但不限于根据岗位的不同采取不同的权限控制,与他们签署保密协议,监控他们的操作情况等措施。我们会按现有技术提供相应的安全措施来保护您的信息,提供合理的安全保障,尽力做到使您的信息不被泄漏、毁损或丢失。您的账户均有安全保护功能,请妥善保管您的账户及密码信息。我们将通过向其它服务器备份、对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。
+ (七)未成年人保护
+ 我们重视未成年人的个人信息保护,如您为未成年人,建议您请您的监护人阅读本隐私权条款,并在征得您的监护人同意的前提下使用我们的服务或向我们提供信息。
+ 六、免责条款
+ 1、平台用户通过平台获取信息服务的过程中需务必遵守中国的相关法律法规。平台不对用户达成协议过程中的任意纠纷承担法律责任。
+ 2、如买卖双方在交易过程中发生纠纷,在当事人自愿平等的前提下,买卖双方可提出要求平台协助调解。平台会在查明事实、分清是非的基础上,严格遵守国家法律法规来给出建议。不得因未经调解或者调解不成而阻止对方当事人向人民法院起诉。经调解达成的协议具有法律效力,但平台对此协议内容不承担任何法律责任。
+ 3、平台在此声明:对您使用本平台、与本平台相关的任何内容、服务或其它链接至本平台的站点、内容均不作直接、间接、法定、约定的保证;本平台对UGC(用户原创内容)的真实性不作保证,也不承担因其非真实而造成的任何责任。
+ 4、本站到第三方平台的链接仅作为一种方便服务提供给您。如果使用这些链接,您将离开本站。平台没有审查过任何第三方平台,对这些平台及其内容不进行控制,也不负任何责任。如果您决定访问任何与本站链接的第三方平台,其可能带来的结果和风险全部由您自己承担。
+ 5、用户应对使用平台得到的信息结果自行承担风险,我们仅作为服务平台,对本平台的使用即表明同意承担浏览本平台的全部风险,本平台对任何使用或提供本网站信息的商业活动及其风险不承担任何责任。用户自行发布的资源信息,我们不对信息内容的安全性、准确性、真实性、合法性负责,也不承担任何法律责任。
+ 6、本平台如因线路、硬件故障、系统维护、系统升级或其它不可抗力而导致暂停服务,于暂停服务期间造成的一切不便与损失,本平台不承担任何责任。
+ 7、本平台由于计算机黑客攻击、计算机病毒侵入、硬件设施损坏、或因政府行为、司法强制要求而造成个人资料泄露、丢失、被盗用或被篡改等,本平台不承担任何责任。
+ 8、因不可抗力因素或第三方支付平台的系统漏洞、故障造成交易环节中支付服务暂停或中断、不稳定的,本平台不承担任何责任。
+ 9、本平台上所有的增值服务或外包服务,是为了方便用户更好地使用本平台而提供,用户可自行选择接受与否,您应在接受增值服务或外包服务之前阅读相关协议,并按照您的需求和判断作出接受或不接受的意思表示。若您选择接受增值服务及外包服务的,视为您已经阅读相关协议,并自行承担接受增值服务或外包服务的风险,本平台不对任何提供给用户的增值服务及外包服务承担责任。
+ 10、任何单位或个人认为通过本平台网页内容可能涉嫌侵犯其知识产权,应该及时向我们提出书面权利通知,并提供身份证明、权属证明及详细侵权情况证明。我们收到上述法律文件后,将会依法尽快处理。
+ 七、法律管辖和适用
+ 任何有关本平台和本法律声明的争议、纠纷,均适用中华人民共和国法律。任何有关本平台和本法律声明的争议,应由有管辖权的人民法院管辖。如中华人民共和国法律的修改使上述任何条款成为非法,各方将同意由深圳智慧科技有限公司对上述条款作出修改。
+ 八、本声明的解释权及对本平台及软件使用的解释权归结于本公司。
+
+
+
+
+
+
diff --git a/course/shopCart/shopCart.vue b/course/shopCart/shopCart.vue
new file mode 100644
index 0000000..40fe190
--- /dev/null
+++ b/course/shopCart/shopCart.vue
@@ -0,0 +1,317 @@
+
+
+
+
+
+ -
+ checkChange(e, i)">
+ checkChange(e, i)">
+
+
+ {{ item.productName }}
+ 市场建议价:{{ item.marketUnitPrice }}元/年
+
+
+
+
+
+
+
+
+
+
+ 删除
+ 生成订单
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..9efb733
--- /dev/null
+++ b/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/Oss/base64.js b/libs/Oss/base64.js
new file mode 100644
index 0000000..4535327
--- /dev/null
+++ b/libs/Oss/base64.js
@@ -0,0 +1,135 @@
+export const Base64 = {
+
+ // private property
+ _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
+
+ // public method for encoding
+ encode : function (input) {
+ var output = "";
+ var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ input = Base64._utf8_encode(input);
+
+ while (i < input.length) {
+
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output +
+ this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
+ this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
+
+ }
+
+ return output;
+ },
+
+ // public method for decoding
+ decode : function (input) {
+ var output = "";
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0;
+
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+ while (i < input.length) {
+
+ enc1 = this._keyStr.indexOf(input.charAt(i++));
+ enc2 = this._keyStr.indexOf(input.charAt(i++));
+ enc3 = this._keyStr.indexOf(input.charAt(i++));
+ enc4 = this._keyStr.indexOf(input.charAt(i++));
+
+ chr1 = (enc1 << 2) | (enc2 >> 4);
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+ chr3 = ((enc3 & 3) << 6) | enc4;
+
+ output = output + String.fromCharCode(chr1);
+
+ if (enc3 != 64) {
+ output = output + String.fromCharCode(chr2);
+ }
+ if (enc4 != 64) {
+ output = output + String.fromCharCode(chr3);
+ }
+
+ }
+
+ output = Base64._utf8_decode(output);
+
+ return output;
+
+ },
+
+ // private method for UTF-8 encoding
+ _utf8_encode : function (string) {
+ string = string.replace(/\r\n/g,"\n");
+ var utftext = "";
+
+ for (var n = 0; n < string.length; n++) {
+
+ var c = string.charCodeAt(n);
+
+ if (c < 128) {
+ utftext += String.fromCharCode(c);
+ }
+ else if((c > 127) && (c < 2048)) {
+ utftext += String.fromCharCode((c >> 6) | 192);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+ else {
+ utftext += String.fromCharCode((c >> 12) | 224);
+ utftext += String.fromCharCode(((c >> 6) & 63) | 128);
+ utftext += String.fromCharCode((c & 63) | 128);
+ }
+
+ }
+
+ return utftext;
+ },
+
+ // private method for UTF-8 decoding
+ _utf8_decode : function (utftext) {
+ var string = "";
+ var i = 0;
+ var c = c1 = c2 = 0;
+
+ while ( i < utftext.length ) {
+
+ c = utftext.charCodeAt(i);
+
+ if (c < 128) {
+ string += String.fromCharCode(c);
+ i++;
+ }
+ else if((c > 191) && (c < 224)) {
+ c2 = utftext.charCodeAt(i+1);
+ string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
+ i += 2;
+ }
+ else {
+ c2 = utftext.charCodeAt(i+1);
+ c3 = utftext.charCodeAt(i+2);
+ string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
+ i += 3;
+ }
+
+ }
+
+ return string;
+ }
+
+}
\ No newline at end of file
diff --git a/libs/Oss/crypto.js b/libs/Oss/crypto.js
new file mode 100644
index 0000000..7807ea4
--- /dev/null
+++ b/libs/Oss/crypto.js
@@ -0,0 +1,117 @@
+var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+let Crypto = {};
+var util = Crypto.util = {
+ rotl: function (n, b) {
+ return (n << b) | (n >>> (32 - b));
+ },
+ rotr: function (n, b) {
+ return (n << (32 - b)) | (n >>> b);
+ },
+ endian: function (n) {
+ if (n.constructor == Number) {
+ return util.rotl(n, 8) & 0x00FF00FF |
+ util.rotl(n, 24) & 0xFF00FF00;
+ }
+ for (var i = 0; i < n.length; i++)
+ n[i] = util.endian(n[i]);
+ return n;
+ },
+ randomBytes: function (n) {
+ for (var bytes = []; n > 0; n--)
+ bytes.push(Math.floor(Math.random() * 256));
+ return bytes;
+ },
+ stringToBytes: function (str) {
+ var bytes = [];
+ for (var i = 0; i < str.length; i++)
+ bytes.push(str.charCodeAt(i));
+ return bytes;
+ },
+ bytesToString: function (bytes) {
+ var str = [];
+ for (var i = 0; i < bytes.length; i++)
+ str.push(String.fromCharCode(bytes[i]));
+ return str.join("");
+ },
+ stringToWords: function (str) {
+ var words = [];
+ for (var c = 0, b = 0; c < str.length; c++, b += 8)
+ words[b >>> 5] |= str.charCodeAt(c) << (24 - b % 32);
+ return words;
+ },
+ bytesToWords: function (bytes) {
+ var words = [];
+ for (var i = 0, b = 0; i < bytes.length; i++, b += 8)
+ words[b >>> 5] |= bytes[i] << (24 - b % 32);
+ return words;
+ },
+ wordsToBytes: function (words) {
+ var bytes = [];
+ for (var b = 0; b < words.length * 32; b += 8)
+ bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);
+ return bytes;
+ },
+ bytesToHex: function (bytes) {
+ var hex = [];
+ for (var i = 0; i < bytes.length; i++) {
+ hex.push((bytes[i] >>> 4).toString(16));
+ hex.push((bytes[i] & 0xF).toString(16));
+ }
+ return hex.join("");
+ },
+ hexToBytes: function (hex) {
+ var bytes = [];
+ for (var c = 0; c < hex.length; c += 2)
+ bytes.push(parseInt(hex.substr(c, 2), 16));
+ return bytes;
+ },
+ bytesToBase64: function (bytes) {
+ if (typeof btoa == "function") return btoa(util.bytesToString(bytes));
+ var base64 = [],
+ overflow;
+ for (var i = 0; i < bytes.length; i++) {
+ switch (i % 3) {
+ case 0:
+ base64.push(base64map.charAt(bytes[i] >>> 2));
+ overflow = (bytes[i] & 0x3) << 4;
+ break;
+ case 1:
+ base64.push(base64map.charAt(overflow | (bytes[i] >>> 4)));
+ overflow = (bytes[i] & 0xF) << 2;
+ break;
+ case 2:
+ base64.push(base64map.charAt(overflow | (bytes[i] >>> 6)));
+ base64.push(base64map.charAt(bytes[i] & 0x3F));
+ overflow = -1;
+ }
+ }
+ if (overflow != undefined && overflow != -1)
+ base64.push(base64map.charAt(overflow));
+ while (base64.length % 4 != 0) base64.push("=");
+ return base64.join("");
+ },
+ base64ToBytes: function (base64) {
+ if (typeof atob == "function") return util.stringToBytes(atob(base64));
+ base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
+ var bytes = [];
+ for (var i = 0; i < base64.length; i++) {
+ switch (i % 4) {
+ case 1:
+ bytes.push((base64map.indexOf(base64.charAt(i - 1)) << 2) |
+ (base64map.indexOf(base64.charAt(i)) >>> 4));
+ break;
+ case 2:
+ bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0xF) << 4) |
+ (base64map.indexOf(base64.charAt(i)) >>> 2));
+ break;
+ case 3:
+ bytes.push(((base64map.indexOf(base64.charAt(i - 1)) & 0x3) << 6) |
+ (base64map.indexOf(base64.charAt(i))));
+ break;
+ }
+ }
+ return bytes;
+ }
+};
+Crypto.mode = {};
+export default Crypto;
\ No newline at end of file
diff --git a/libs/Oss/hmac.js b/libs/Oss/hmac.js
new file mode 100644
index 0000000..1918f4c
--- /dev/null
+++ b/libs/Oss/hmac.js
@@ -0,0 +1,37 @@
+import Crypto from './crypto.js';
+/*!
+ * Crypto-JS v1.1.0
+ * http://code.google.com/p/crypto-js/
+ * Copyright (c) 2009, Jeff Mott. All rights reserved.
+ * http://code.google.com/p/crypto-js/wiki/License
+ */
+(function(){
+
+// Shortcut
+var util = Crypto.util;
+
+Crypto.HMAC = function (hasher, message, key, options) {
+
+ // Allow arbitrary length keys
+ key = key.length > hasher._blocksize * 4 ?
+ hasher(key, { asBytes: true }) :
+ util.stringToBytes(key);
+
+ // XOR keys with pad constants
+ var okey = key,
+ ikey = key.slice(0);
+ for (var i = 0; i < hasher._blocksize * 4; i++) {
+ okey[i] ^= 0x5C;
+ ikey[i] ^= 0x36;
+ }
+
+ var hmacbytes = hasher(util.bytesToString(okey) +
+ hasher(util.bytesToString(ikey) + message, { asString: true }),
+ { asBytes: true });
+ return options && options.asBytes ? hmacbytes :
+ options && options.asString ? util.bytesToString(hmacbytes) :
+ util.bytesToHex(hmacbytes);
+
+};
+
+})();
\ No newline at end of file
diff --git a/libs/Oss/sha1.js b/libs/Oss/sha1.js
new file mode 100644
index 0000000..5632fd7
--- /dev/null
+++ b/libs/Oss/sha1.js
@@ -0,0 +1,82 @@
+import Crypto from './crypto.js';
+/*!
+ * Crypto-JS v1.1.0
+ * http://code.google.com/p/crypto-js/
+ * Copyright (c) 2009, Jeff Mott. All rights reserved.
+ * http://code.google.com/p/crypto-js/wiki/License
+ */
+(function(){
+
+// Shortcut
+var util = Crypto.util;
+
+// Public API
+var SHA1 = Crypto.SHA1 = function (message, options) {
+ var digestbytes = util.wordsToBytes(SHA1._sha1(message));
+ return options && options.asBytes ? digestbytes :
+ options && options.asString ? util.bytesToString(digestbytes) :
+ util.bytesToHex(digestbytes);
+};
+
+// The core
+SHA1._sha1 = function (message) {
+
+ var m = util.stringToWords(message),
+ l = message.length * 8,
+ w = [],
+ H0 = 1732584193,
+ H1 = -271733879,
+ H2 = -1732584194,
+ H3 = 271733878,
+ H4 = -1009589776;
+
+ // Padding
+ m[l >> 5] |= 0x80 << (24 - l % 32);
+ m[((l + 64 >>> 9) << 4) + 15] = l;
+
+ for (var i = 0; i < m.length; i += 16) {
+
+ var a = H0,
+ b = H1,
+ c = H2,
+ d = H3,
+ e = H4;
+
+ for (var j = 0; j < 80; j++) {
+
+ if (j < 16) w[j] = m[i + j];
+ else {
+ var n = w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16];
+ w[j] = (n << 1) | (n >>> 31);
+ }
+
+ var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + (
+ j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 :
+ j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 :
+ j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 :
+ (H1 ^ H2 ^ H3) - 899497514);
+
+ H4 = H3;
+ H3 = H2;
+ H2 = (H1 << 30) | (H1 >>> 2);
+ H1 = H0;
+ H0 = t;
+
+ }
+
+ H0 += a;
+ H1 += b;
+ H2 += c;
+ H3 += d;
+ H4 += e;
+
+ }
+
+ return [H0, H1, H2, H3, H4];
+
+};
+
+// Package private blocksize
+SHA1._blocksize = 16;
+
+})();
\ No newline at end of file
diff --git a/libs/Oss/upload.js b/libs/Oss/upload.js
new file mode 100644
index 0000000..a673826
--- /dev/null
+++ b/libs/Oss/upload.js
@@ -0,0 +1,71 @@
+import Crypto from './crypto.js';
+import './hmac.js';
+import './sha1.js';
+import Util from '@/libs/util'
+import {Base64} from './base64.js';
+
+let date=new Date()
+date=date.setHours(date.getHours() + 24)
+let extime=""+new Date(date).toISOString()
+console.log(33, extime)
+var policyText = {
+ "expiration": extime, //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了
+ "conditions": [
+ ["content-length-range", 0, 1024*1024*100] // 设置上传文件的大小限制
+ ]
+};
+var config={
+ accessid:'LTAI4FzqQHnk4rozqLZ8jCNj',
+ accesskey:'mveW7B1OyFoKUkHm8WsxmrjHmkJWHq',
+ osshost:'https://huoran.oss-cn-shenzhen.aliyuncs.com',
+ policyBase64:Base64.encode(JSON.stringify(policyText))
+}
+var message = config.policyBase64;
+var bytes = Crypto.HMAC(Crypto.SHA1, message, config.accesskey, { asBytes: true }) ;
+var signature = Crypto.util.bytesToBase64(bytes);
+var timetamp = new Date().getTime();
+function random_string(len) {
+ len = len || 32;
+ var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
+ var maxPos = chars.length;
+ var pwd = '';
+ for (let i = 0; i < len; i++) {
+ pwd += chars.charAt(Math.floor(Math.random() * maxPos));
+ }
+ return pwd;
+}
+var OSS={
+ name:'aliyun',
+ host:config.osshost,
+ accessid:config.accessid,
+ signature:signature,
+ policyBase64:config.policyBase64,
+}
+export default function(tempFilePaths, callback) {
+ const ext = Util.getFileExt(tempFilePaths)
+ const fileName = Date.now() + '.' + ext
+ uni.uploadFile({
+ url: OSS.host,
+ filePath: tempFilePaths,
+ fileType: '',
+ name: 'file',
+ formData: {
+ name: fileName,
+ key: fileName,//文件名
+ policy: OSS.policyBase64, // 输入你获取的的policy
+ OSSAccessKeyId: OSS.accessid, // 输入你的AccessKeyId
+ success_action_status: '200', // 让服务端返回200,不然,默认会返回204
+ signature: OSS.signature, // 输入你获取的的signature
+ },
+ success: (res) => {
+ callback({
+ name: fileName,
+ url: OSS.host + '/' + fileName,
+ ext
+ })
+ },
+ fail: (res) => {
+ console.log(res);
+ }
+})
+};
\ No newline at end of file
diff --git a/libs/WXBizDataCrypt.js b/libs/WXBizDataCrypt.js
new file mode 100644
index 0000000..36b3de1
--- /dev/null
+++ b/libs/WXBizDataCrypt.js
@@ -0,0 +1,35 @@
+var crypto = require('crypto')
+
+function WXBizDataCrypt(appId, sessionKey) {
+ this.appId = appId
+ this.sessionKey = sessionKey
+}
+
+WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {
+ // base64 decode
+ var sessionKey = new Buffer(this.sessionKey, 'base64')
+ encryptedData = new Buffer(encryptedData, 'base64')
+ iv = new Buffer(iv, 'base64')
+
+ try {
+ // 解密
+ var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)
+ // 设置自动 padding 为 true,删除填充补位
+ decipher.setAutoPadding(true)
+ var decoded = decipher.update(encryptedData, 'binary', 'utf8')
+ decoded += decipher.final('utf8')
+
+ decoded = JSON.parse(decoded)
+
+ } catch (err) {
+ throw new Error('Illegal Buffer')
+ }
+
+ if (decoded.watermark.appid !== this.appId) {
+ throw new Error('Illegal Buffer')
+ }
+
+ return decoded
+}
+
+module.exports = WXBizDataCrypt
\ No newline at end of file
diff --git a/libs/mtj-wx-sdk.config.js b/libs/mtj-wx-sdk.config.js
new file mode 100644
index 0000000..e1d7474
--- /dev/null
+++ b/libs/mtj-wx-sdk.config.js
@@ -0,0 +1,39 @@
+/**
+ * @file 百度移动统计配置文件
+ */
+
+module.exports = {
+ /**
+ * 从百度移动统计获取的AppKey
+ * @type {string}
+ */
+ appKey: 'ce2fa79380',
+
+ /**
+ * 是否使用了插件
+ * @type {boolean}
+ */
+ hasPlugin: false,
+
+ /**
+ * 是否获取当前的地理位置和速度信息
+ * @type {boolean}
+ */
+ getLocation: false,
+
+ /**
+ * 是否获取组件滚动信息
+ * @type {boolean}
+ */
+ getComponentScroll: false,
+ /**
+ * 是否开启了A/B 测试
+ * @type {boolean}
+ */
+ hasABTest: false,
+ /**
+ * 是否开启热力图功能
+ * @type {boolean}
+ */
+ hasHeatmap: false,
+};
diff --git a/libs/mtj-wx-sdk.js b/libs/mtj-wx-sdk.js
new file mode 100644
index 0000000..b908aa2
--- /dev/null
+++ b/libs/mtj-wx-sdk.js
@@ -0,0 +1 @@
+var mtjwxsdk=function(t){"use strict";var e,n,r="1.10.23",o="https://hmma.baidu.com/mini.gif",a={app:["onShow","onHide","onError"],page:["onShow","onReady","onHide","onPageScroll"],share:["onShareAppMessage"],behavior:["tap"]},i="mtj_uuid",c="mtj_user",s="mtj_user_property",u="mtj_track_status",f="mtj_remote_config",l="mtj_ab_experiment_list",h="mtj_ab_active_experiment_ids",p={},d={type:1},g={aso:{}},m={},y=function(t){if(!1!==p.trackStatus){var n=t.data.et?{mtj_ii:t.data.uuid||"",mtj_et:t.data.et,mtj_en:t.data.en}:{};return e.request({url:t.url,data:t.data,header:Object.assign({"content-type":"application/json"},n,t.header),method:t.method||"POST",dataType:t.dataType||"json",success:function(e){t.success&&t.success(e)},fail:function(e){t.fail&&t.fail(e)}})}},v=function(){return"undefined"!=typeof crypto&&crypto.getRandomValues?crypto.getRandomValues(new Uint32Array(1))[0]:Math.floor(4294967295*Math.random())},b=function(t,e){return"[object "+e+"]"==={}.toString.call(t)},j=function(t,e,n){var r=(t=t.replace(new RegExp(e+"=[^&]*","g"),"").replace(/(\?|&)&/g,"$1").replace(/(\?|&)$/g,"")).indexOf("?")>0?"&":"?";return t+r+e+"="+encodeURIComponent(n)},S=function t(e){return b(e,"Object")||b(e,"Array")?(Object.keys(e).forEach((function(n){var r=e[n];b(r,"Object")||b(r,"Array")?e[n]=t(r):e[n]=""+r})),e):e},O=function(t){return b(t,"String")&&/^[a-z][a-z0-9_]{0,31}$/.test(t)},w=function(t){return b(t,"String")&&/^[a-z0-9_]{1,32}$/.test(t)},k=function(t){return b(t,"String")||b(t,"Number")},x=function(t){return b(t,"String")&&/^\d{11}$/.test(t)},P=function(t){return b(t,"String")&&28===t.length},_=0,T=function(t){return new Promise((function(e,n){return t.data=t.data||{},p.blacklist&&(p.blacklist.indexOf("all")>-1&&t.data.et||p.blacklist.indexOf("behavior")>-1&&"behavior"===t.data.et)?e():(t.data.v=r,t.data.rqc=++_,o=t.data,JSON.stringify(o).length<=204800?(t.success=function(t){return e(t)},t.fail=function(t){return n(t)},void y(t)):(_--,n(new Error("invalid data"))));var o}))},I=function(t,e){var n=b(e,"Object")?JSON.stringify(e):""+e;T({url:o,dataType:"string",data:Object.assign({},d,{et:"error",en:t,ep:{ex:n},rid:v()})})},A=function(t){t.rid=v(),t.aso=t.aso||{};var e={url:o,dataType:"string",data:Object.assign({},d,t)};T(e),(m.circleToken||m.circleByThreeFingers)&&("page"===t.et&&"show"===t.en||"behavior"===t.et&&"tap"===t.en)&&(e.url="https://hmma.baidu.com/mini.gif?circle=1",e.data.token=m.circleToken,T(e).catch((function(t){return console.error(t)})))};function E(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null==n)return;var r,o,a=[],i=!0,c=!1;try{for(n=n.call(t);!(i=(r=n.next()).done)&&(a.push(r.value),!e||a.length!==e);i=!0);}catch(t){c=!0,o=t}finally{try{i||null==n.return||n.return()}finally{if(c)throw o}}return a}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return N(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return N(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n>t/4).toString(16)})),q(i,t),p.hasABTest&&(U(l),U(h))),t}))},B=function(t){return new Promise((function(n){if(!t)return n();e.getShareInfo({shareTicket:t,success:function(t){delete t.errMsg,n(t)},fail:function(){n({})}})}))},M=function(){return n||(d.sid=v(),d.rqc=0,n=Promise.all([D(),new Promise((function(t){e.getSystemInfo({success:function(e){delete e.errMsg,t(e)},fail:function(){t({})}})})),new Promise((function(t){e.getNetworkType({success:function(e){delete e.errMsg,t(e)},fail:function(){t({})}})})),Promise.resolve().then((function(){var t=C(c),n=b(t,"Object")?t:{};return new Promise((function(t){e.getSetting({success:function(r){r.authSetting&&r.authSetting["scope.userInfo"]?e.getUserInfo({success:function(e){delete e.userInfo.errMsg,t(Object.assign(n,e.userInfo))},fail:function(){t(n)}}):t(n)},fail:function(){t(n)}})}))})),new Promise((function(t){if(!p.getLocation)return t({});e.getLocation({type:"wgs84",success:function(e){delete e.errMsg,t(e)},fail:function(){t({})}})})),Promise.resolve().then((function(){var t=C(s);return b(t,"Object")?t:{}}))]).then((function(t){var e=E(t,6),n=e[0],o=e[1],a=e[2],i=e[3],c=e[4],s=e[5];d.uuid=n,g.system=S(o),g.network=S(a),Object.keys(i).length>0&&(g.user=S(i)),Object.keys(c).length>0&&(g.location=S(c)),Object.keys(s).length>0&&(g.userProperty=JSON.stringify(s)),"devtools"===g.system.platform&&p.latestVersion&&function(t,e){for(var n=t.split("."),r=e.split("."),o=0;o<3;o++){var a=+n[o]||0,i=+r[o]||0;if(a>i)return 1;if(i>a)return-1}return 0}(r,p.latestVersion)<0&&console.warn("百度移动统计微信小程序SDK已更新,为不影响您的正常使用,请到SDK下载中心 https://mtj.baidu.com/web/sdk/index 下载最新版本")})))},R={onShow:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=(g.aso.query||[]).filter((function(t){return 0===t.key.indexOf("mtj_")}));return g.aso.scene=""+(t.scene||""),t.referrerInfo&&t.referrerInfo.appId?g.aso.referrerInfo=t.referrerInfo:delete g.aso.referrerInfo,g.aso.path=t.path||"",g.aso.query=Object.keys(t.query||{}).map((function(e){return{key:e,value:t.query[e]}})),e.length>0&&!/(^|,)mtj_/.test(Object.keys(t.query||{}).join(","))&&(g.aso.query=g.aso.query.concat(e)),(t.query||{}).mtj_ctoken&&!p.disableCircling&&(m.circleToken=t.query.mtj_ctoken),(t.query||{}).mtj_htoken&&p.hasHeatmap&&(m.heatmapToken=t.query.mtj_htoken),M().then((function(){return B(t.shareTicket)})).then((function(t){t?g.aso.shareInfo=t:delete g.aso.shareInfo,A(Object.assign({et:"app",en:"show"},g))})).catch((function(t){I("app.onShow",t)}))},onHide:function(){A({et:"app",en:"hide"})},onError:function(t){var e=b(t,"Object")?JSON.stringify(S(t)):""+t;A({et:"app",en:"error",ep:{ex:e}})}};function F(){this.options={opacity:100,radius:30,bshadow:1.5,boundVal:15e3,shadowBlur:15,points:{max:100,data:[]},gradient:{.45:"rgb(0,0,255)",.55:"rgb(0,255,255)",.65:"rgb(0,255,0)",.95:"yellow",1:"rgb(255,0,0)"}}}F.prototype={getCanvas:function(t){return new Promise((function(n,r){e.createSelectorQuery().select(t).fields({node:!0,size:!0}).exec((function(t){n(t[0].node)}))}))},getPageClientRect:function(){return new Promise((function(t,n){e.createSelectorQuery().select(".hm-container").boundingClientRect((function(e){t([e.width,e.height])})).exec()}))},init:function(){var t=this;return Promise.all([this.getPageClientRect(),this.getCanvas("#cvs"),this.getCanvas("#cvd")]).then((function(e){var n=E(e,3),r=n[0],o=n[1],a=n[2];t.options.width=r[0],t.options.height=r[1],o.width=t.options.width,o.height=t.options.height,t.options.context.setData({p_width:t.options.width,p_height:t.options.height});var i=o.getContext("2d");t.options.ctx=i,a.width=1,a.height=256;var c=a.getContext("2d");t.options.pctx=c}))},renderShadow:function(t,e,n,r){var o=this.options.ctx,a=this.options.boundVal,i=parseFloat(n/this.options.points.max,10);o.shadowColor="rgba(0, 0, 0, "+i+")",o.shadowOffsetX=a,o.shadowOffsetY=a,o.shadowBlur=this.options.shadowBlur,o.beginPath(),o.arc(t-a,e-a,this.options.radius,0,2*Math.PI,!0),o.closePath(),o.fill(),r||this.cachePoint(t,e,n)},colorize:function(){for(var t=this.options.width,e=this.options.height,n=this.options.ctx,r=n.getImageData(0,0,t,e),o=r.data,a=o.length,i=this.getPalette(),c=this.options.opacity,s=3;sr.max&&(r.max=n),o.push([t,e,n])},addPoint:function(t,e,n){this.options.ctx.clearRect(0,0,this.options.width,this.options.height),this.options.pctx.clearRect(0,0,1,256);for(var r=this.options.points.data,o=r.length,a=0;a0&&A(Object.assign({et:"page",en:"scroll",ep:S(t[0])},a))}))}catch(t){I("page.trackComponentScrollEvent",t)}},onPageScroll:function(t){(!m.pageScrollTop||t.scrollTop>m.pageScrollTop)&&(m.pageScrollTop=t.scrollTop)},onShareAppMessage:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={from:t.from,path:e.path};if(!n.path){var r=d.query.map((function(t){return t.key+"="+t.value})).join("&");n.path=d.path+(r?"?"+r:"")}e.title&&(n.title=""+e.title),t.target&&(n.target=JSON.stringify(t.target)),A(Object.assign({et:"share",en:"action",ep:n},g));var o=g.aso.query.filter((function(t){return"mtj_shuuid"===t.key})),a=o[0]?o[0].value.split("_"):[];d.uuid!==a[a.length-1]&&a.push(d.uuid);var i=a.slice(Math.max(0,a.length-3)).join("_");return e.path=j(n.path,"mtj_shuuid",i),e},onAction:function(t,e){if(t&&t.type&&t.currentTarget){var n="#"+(t.currentTarget.id||e);if("tap"===t.type){var r=[{key:"xpath",value:n}],o=t.detail,a=o.x,i=o.y,c={};return void 0!==a&&void 0!==i&&(c={x:Math.floor(a),y:Math.floor(i)}),void A(Object.assign({et:"behavior",en:"tap",ep:{data:r},posi:c},g))}if("touchmove"===t.type&&-1===J&&t.touches instanceof Array&&3===t.touches.length){if(z+=1,clearTimeout(V),3===z)return m.circleByThreeFingers=!0,m.circleToken=void 0,void A(Object.assign({et:"page",en:"show"},g));J=setTimeout((function(){J=-1,V=setTimeout((function(){z=0}),500)}),1e3)}}}},L={trackEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!O(t))return Promise.reject(new Error("事件名称不合法"));var n=Object.keys(e).filter((function(t){return w(t)&&k(e[t])})).map((function(t){return{key:""+t,value:""+e[t],type:b(e[t],"String")?"string":"number"}}));return M().then((function(){A(Object.assign({et:"event",en:""+t,ep:{data:n}},g))})).catch((function(t){I("trackEvent",t)}))},setTrackStatus:function(t){b(t,"Boolean")&&(p.trackStatus=t,q(u,t))},setUserInfo:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.tel,n=t.openId;return M().then((function(){var t=C(c),r=b(t,"Object")?t:{};x(e)&&(r.tel=g.user.tel=e.substr(e.length-11)),P(n)&&(r.openId=g.user.openId=n),(r.tel||r.openId)&&q(c,r),b(e,"Undefined")||x(e)||console.error("手机号 ".concat(e," 不合法")),b(n,"Undefined")||P(n)||console.error("openid ".concat(n," 不合法"))})).catch((function(t){I("setUserInfo",t)}))},setUserId:function(t){return Promise.resolve().then((function(){if(!(b(t,"String")||b(t,"Number")&&Number.isFinite(t)))return Promise.reject(new Error("userId只能是字符串或数字"));var e=""+t,n=C(s),r=b(n,"Object")?n:{};if(!r.uid_||r.uid_[0]!==e){r.uid_=[e,"1"],q(s,r),g.userProperty=JSON.stringify(r);var o=[{key:"uid",value:e}];return M().then((function(){A(Object.assign({et:"api",en:"setUserId",ep:{data:o}},g))})).catch((function(t){I("setUserId",t)}))}}))},setUserProperty:function(t){return Promise.resolve().then((function(){var e=C(s),n=b(e,"Object")?e:{};if(b(t,"Null"))Object.keys(n).forEach((function(t){"_"!==t.charAt(0)&&"_"!==t.charAt(t.length-1)&&delete n[t]}));else if(!b(t,"Object"))return Promise.reject(new Error("userProperty必须是对象"));var r=Object.keys(n).filter((function(t){return"_"!==t.charAt(0)&&"_"!==t.charAt(t.length-1)})).length;Object.keys(t||{}).forEach((function(e){var o=t[e];""===e||"_"===e.charAt(0)||"_"===e.charAt(e.length-1)&&"ab_"!==e&&"ab_filter_"!==e||(b(o,"Null")?n[e]&&(delete n[e],r--):!(b(o,"String")||b(o,"Number")&&Number.isFinite(o))||e.length>256||(""+o).length>256||!n[e]&&r>=100||(n[e]||r++,n[e]=[o,"1"]))})),q(s,n),g.userProperty=JSON.stringify(n)}))}},$={data:[],init:function(){var t=this,e=d.uuid;e?this.startFetch(e):D().then((function(e){d.uuid=e,t.startFetch(e)}))},startFetch:function(t){console.log("---您的设备ID---",t),this.fetchTest()},getExpDataByParamName:function(t){var e=C(l);if(this.setLocalData(e),!e||!b(e,"Array"))return{};var n=e.find((function(e){return e&&b(e.params,"Object")&&!b(e.params[t],"Undefined")}));return n&&n.params?{expValue:n.params[t],expId:n.e}:{}},fetchTest:function(t,e,n){var r=this,o=d.uuid,a=d.key;y({url:"https://hm.baidu.com/v1/diversion/",data:{cid:o,tid:a},method:"GET",success:function(o){b(o,"Object")&&200===o.statusCode&&b(o.data,"Object")&&0===o.data.status?r.handleFetchResponse(o.data,t,e,n):n&&n(e)},fail:function(){console.error("请求分流实验失败"),n&&n(e)}})},handleFetchResponse:function(t,e,n,r){var o=[];if(b(t,"Object")&&b(t.data,"Object")&&b(t.data.expr,"Array")&&(o=t.data.expr),this.updateStorage(o),this.setLocalData(o),r){var a=this.getExpDataByParamName(e),i=a.expValue,c=a.expId;b(i,"Null")||b(i,"Undefined")?r(n):this.handleInTest(i,c,r)}},handleInTest:function(t,e,n){n(t),this.updateUserProperty(e)},updateStorage:function(t){q(l,t)},setLocalData:function(t){this.data=t||[]},updateUserProperty:function(t){var e=this,n=this.getActiveExpIds(t)||[],r={ab_:null,ab_filter_:null},o={},a=[];if(n.forEach((function(t){var n=e.getExpDataFromId(t);b(n,"Object")&&(o[n.e]=n.g,a.push(n.h||0))})),a.length){var i=0;a.forEach((function(t){i=function(t,e){var n="00000000000000000000000000000000";function r(t){var e=(n+n+Number(t).toString(2)).slice(-64);return[parseInt(e.slice(0,32),2),parseInt(e.slice(-32),2)]}function o(t){return(n+t.toString(2)).slice(-32)}var a=r(t),i=r(e);return parseInt(o((a[0]|i[0])>>>0)+o((a[1]|i[1])>>>0),2)}(i,t)})),r={ab_:JSON.stringify(o),ab_filter_:i}}L.setUserProperty(r)},getExpDataFromId:function(t){return C(l).find((function(e){return String(e.e)===String(t)}))},setActiveExperimentIds:function(t){q(h,t)},getActiveExpIds:function(t){var e=this,n=C(h)||[];return b(t,"Undefined")||-1!==n.indexOf(t)||n.push(t),n=(n=n.filter((function(t){return!!e.getExpDataFromId(t)}))).filter((function(t,e){return n.indexOf(t)===e})),this.setActiveExperimentIds(n),n}},K=function(t){if(p.hasABTest)if(b(t,"Object")){var e=t.paramName;if(null!=e){var n=t.defaultValue;if(b(n,"Undefined"))console.error("请设置参数默认值");else{var r=t.callback;if(b(r,"Function")){var o=$.getExpDataByParamName(e),a=o.expValue,i=o.expId;b(a,"Null")||b(a,"Undefined")?$.fetchTest(e,n,r):$.handleInTest(a,i,r)}else console.error("callback必须为函数")}}else console.error("请设置实验参数名称")}else console.error("传递参数请设置为对象")},Q=function(t,e,n){var r=e[t];e[t]=function(e){if(n.call(this,e,t),r)return r.apply(this,arguments)}},G=App,W=function(t){a.app.forEach((function(e){Q(e,t,R[e])})),t.mtj=L,t.mtj.pageEvent=H,t.mtj.fetchABTest=K,G(t)},X=Page,Y=function(t){a.page.forEach((function(e){Q(e,t,H[e])})),a.share.forEach((function(e){!function(t,e,n){var r=e[t];e[t]=function(t){var e=r&&r.apply(this,arguments);return n.call(this,t,e)}}(e,t,H[e])})),Object.keys(t).forEach((function(e){"function"==typeof t[e]&&-1===a.page.indexOf(e)&&-1===a.share.indexOf(e)&&Q(e,t,H.onAction)})),X(t)},Z=Behavior,tt=function(t){return a.page.forEach((function(e){Q(e,t.methods,H[e])})),Z(t)};tt.prototype.constructor=Behavior;var et=Component,nt=function(t){return a.page.forEach((function(e){Q(e,t.methods,H[e])})),et(t)},rt=function(){var t,n;t=wx,e=t;try{n=require("./mtj-wx-sdk.config")}catch(t){return void console.error("请把mtj-wx-sdk.config.js文件拷贝到utils目录中")}n&&n.appKey?(d.key=n.appKey,p.getLocation=n.getLocation||!1,p.getComponentScroll=n.getComponentScroll||!1,p.disableCircling=n.disableCircling||!1,p.trackStatus=!(!1===C(u)),p.hasABTest=n.hasABTest||!1,p.hasHeatmap=n.hasHeatmap||!1,p.hasABTest&&$.init(),function(){var t=C(f);if(t){Object.keys(t).forEach((function(e){p[e]=t[e]}));var e=t.updateTimestamp||0;if(+new Date-e<864e5)return Promise.resolve()}T({url:"https://hmma.baidu.com/mini.conf",method:"POST",header:{"content-type":"application/x-www-form-urlencoded"},data:{type:"wx",key:d.key}}).then((function(t){if(t&&t.data){var e=t.data;Object.keys(e).forEach((function(t){p[t]=e[t]})),e.updateTimestamp=+new Date,q(f,e)}else I("remoteConfig",t)})).catch((function(t){I("sendRequest",t)}))}(),n.hasPlugin||(App=W,Page=Y),module.exports={App:W,Page:Y,Behavior:tt,Component:nt}):console.error("请设置mtj-wx-sdk.config.js文件中的appKey字段")};return rt(),t.init=rt,Object.defineProperty(t,"__esModule",{value:!0}),t}({});
diff --git a/libs/share.js b/libs/share.js
new file mode 100644
index 0000000..a8d0166
--- /dev/null
+++ b/libs/share.js
@@ -0,0 +1,36 @@
+export default{
+ // 监听用户点击右上角菜单的「转发」按钮时触发的事件
+ onShareAppMessage() {
+ // 设置转发的参数
+ return {
+ title: "职站商城",
+ // path: '',
+ imageUrl: "",
+ success: function(res) {
+ if (res.errMsg == 'shareAppMessage:ok') {
+ console.log("成功", res)
+ }
+ },
+ fail: function(res) {
+ console.log("失败", res)
+ }
+ }
+ },
+ // 分享到朋友圈
+ onShareTimeline:function(res){
+ return {
+ title: '职站商城',
+ // imageUrl:'/static/image/phone.png',
+ query:''
+ }
+ },
+ // 收藏
+ onAddToFavorites:function(res) {
+ return {
+ title: '职站商城',
+ // imageUrl:'/static/image/phone.png',
+ query: '',
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/libs/uma.js b/libs/uma.js
new file mode 100644
index 0000000..a688ffd
--- /dev/null
+++ b/libs/uma.js
@@ -0,0 +1,18 @@
+
+import uma from 'umtrack-wx';
+uma.init({
+ appKey: '64cc98d5a1a164591b62da3e', // 由友盟分配的APP_KEY
+ useOpenid: true,
+ // 使用Openid进行统计,此项为false时将使用友盟+uuid进行用户统计。
+ // 使用Openid来统计微信小程序的用户,会使统计的指标更为准确,对系统准确性要求高的应用推荐使用Openid
+ autoGetOpenid: true,
+ // 使用openid进行统计时,是否授权友盟自动获取Openid,
+ // 如若需要,请到友盟后台"设置管理-应用信息"(https://mp.umeng.com/setting/appset)中设置appId及secret
+ debug: true,// 是否打开调试模式
+ uploadUserInfo: true, // 自动上传用户信息,设为false取消上传,默认为false
+ enableVerify: true
+});
+uma.install = function(Vue) {
+ Vue.prototype.$uma = uma;
+}
+export default uma;
diff --git a/libs/util.js b/libs/util.js
new file mode 100644
index 0000000..8e72d90
--- /dev/null
+++ b/libs/util.js
@@ -0,0 +1,129 @@
+import Product from '@/config/product'
+
+const files = [
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/用户服务协议.docx', // 用户服务协议
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/用户隐私协议.docx', // 用户隐私协议
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/1709798668435.docx', // 人工智能
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/1709798621083.docx', // 大数据
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/1709798646462.docx', // 金融科技
+]
+const docExts = ['doc', 'xls', 'ppt', 'pdf', 'docx', 'xlsx', 'pptx']
+export default {
+ // 路由跳转
+ to(url) {
+ uni.navigateTo({
+ url
+ })
+ },
+ // 成功提示
+ sucMsg(title, duration = 1500) {
+ uni.showToast({
+ title,
+ duration
+ })
+ },
+ // 错误提示
+ errMsg(title, duration = 1500) {
+ uni.showToast({
+ title,
+ icon: 'none',
+ duration
+ })
+ },
+ // 如果非数字,则返回0
+ handleNaN(val) {
+ return isNaN(val) || val == 0 ? '' : val
+ },
+ // 小于10,返回0+传入值
+ preZero(val) {
+ return val < 10 ? '0' + val : val
+ },
+ //返回格式化时间,传参例如:"yyyy-MM-dd hh:mm:ss"
+ formatDate(date, fmt = 'yyyy-MM-dd hh:mm:ss') {
+ var date = date ? date : new Date()
+ var o = {
+ "M+" : date.getMonth()+1, //月份
+ "d+" : date.getDate(), //日
+ "h+" : date.getHours(), //小时
+ "m+" : date.getMinutes(), //分
+ "s+" : date.getSeconds(), //秒
+ "q+" : Math.floor((date.getMonth()+3)/3), //季度
+ "S" : date.getMilliseconds() //毫秒
+ }
+ if(/(y+)/.test(fmt)) {
+ fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length))
+ }
+ for(var k in o) {
+ if(new RegExp("("+ k +")").test(fmt)){
+ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)))
+ }
+ }
+ return fmt
+ },
+ // 获取商务经理id
+ getBmId(val) {
+ return uni.getStorageSync('team').partnerId
+ },
+ // 获取商务经理名称
+ getBmName(val) {
+ return uni.getStorageSync('team').partnerClassificationName
+ },
+ // 返回图标。如果有图标,则直接返回
+ getIcon(e) {
+ return e.appletIcon || Product.normalIcon
+ },
+ // 判断文件类型是否能够通过uni.openDocument打开(doc, xls, ppt, pdf, docx, xlsx, pptx)
+ isDoc(ext) {
+ return docExts.includes(ext)
+ },
+ // 预览文档
+ openFile(id) {
+ uni.showLoading({
+ title: '加载中',
+ mask: true
+ })
+ // 下载文件资源到本地
+ uni.downloadFile({
+ url: files[id],
+ success: function(res) {
+ console.log(11, res)
+ uni.hideLoading();
+ uni.showLoading({
+ title: '正在打开',
+ mask: true
+ })
+ // 新开页面打开文档,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx。
+ uni.openDocument({
+ filePath: res.tempFilePath,
+ fileType: 'pdf', // 文件类型,指定文件类型打开文件,有效值 doc, xls, ppt, pdf, docx, xlsx, pptx
+ showMenu: true, // 允许出现分享功能
+ success: res => {
+ uni.hideLoading()
+ },
+ fail: openError => {
+ uni.hideLoading()
+ }
+ })
+ },
+ fail: function(err) {
+ uni.hideLoading()
+ }
+ })
+ },
+ // 产品管理的产品分类(classificationId)有6个,订单管理的产品分类(authority)有5个,后者是由前者决定的,但是id不一样。把产品管理的分类id传入这个函数,即可返回订单的分类id
+ getOrderType(id) {
+ if (id == 1 || id == 2) return 1
+ if (id == 3) return 2
+ if (id == 4) return 3
+ if (id == 5) return 0
+ if (id == 6) return 4
+ },
+ // 去掉html标签
+ removeTag(str) {
+ return str.replace(/(<[^>]+>)|(( )+)/g , '')
+ },
+ // 传入文件名获取文件后缀
+ getFileExt(fileName) {
+ return fileName.substring(fileName.lastIndexOf(".") + 1);
+ },
+}
\ No newline at end of file
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..589448c
--- /dev/null
+++ b/main.js
@@ -0,0 +1,43 @@
+
+// #ifndef VUE3
+import Vue from 'vue'
+import App from './App'
+import util from '@/libs/util'
+import uma from './libs/uma'
+import share from './libs/share'
+import mtjWxSdk from './libs/mtj-wx-sdk'
+
+Vue.config.productionTip = false
+Vue.prototype.$util = util
+Vue.use(uma)
+Vue.mixin(share)
+
+App.mpType = 'app'
+
+// 权限控制
+Vue.prototype.auth = function(text){
+ const auth = uni.getStorageSync('auth')
+ if (text && auth && auth.length) {
+ const isPermission = auth.includes(text)
+ return auth.includes(text)
+ }
+ // return true
+}
+
+const app = new Vue({
+ ...App,
+ share
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+import App from './App.vue'
+export function createApp() {
+ const app = createSSRApp(App)
+ return {
+ app
+ }
+}
+// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..4d126fb
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,73 @@
+{
+ "name" : "职站商城",
+ "appid" : "__UNI__2E89BA6",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ "app-plus" : {
+ /* 5+App特有相关 */
+ "usingComponents" : true,
+ "nvueCompiler" : "uni-app",
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ "modules" : {},
+ /* 模块配置 */
+ "distribute" : {
+ /* 应用发布信息 */
+ "android" : {
+ /* android打包配置 */
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "ios" : {},
+ /* ios打包配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* SDK配置 */
+ "sdkConfigs" : {},
+ "quickapp" : {},
+ /* 快应用特有相关 */
+ "mp-weixin" : {
+ "appid" : "wx2b506fdb0eeee65d",
+ "setting" : {
+ "urlCheck" : false,
+ "es6" : true,
+ "minified" : true
+ },
+ "usingComponents" : true,
+ "optimization" : {
+ "subPackages" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ }
+ },
+ "vueVersion" : "2",
+ "uniStatistics" : {
+ "version" : "2"
+ },
+ "mp-toutiao" : {
+ "appid" : "tt2192572fbea04fe601"
+ }
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..eb2ff65
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,777 @@
+{
+ "name": "筛选 菜单 筛选菜单 上拉筛选 ",
+ "version": "1.0.4",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ=="
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+ },
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA=="
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q=="
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "cacache": {
+ "version": "11.3.3",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz",
+ "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==",
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-webpack-plugin": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.3.tgz",
+ "integrity": "sha512-PlZRs9CUMnAVylZq+vg2Juew662jWtwOXOqH4lbQD9ZFhRG9R7tVStOgHt21CBGVq7k5yIJaz8TXDLSjV+Lj8Q==",
+ "requires": {
+ "cacache": "^11.3.2",
+ "find-cache-dir": "^2.1.0",
+ "glob-parent": "^3.1.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "minimatch": "^3.0.4",
+ "normalize-path": "^3.0.0",
+ "p-limit": "^2.2.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^1.7.0",
+ "webpack-log": "^2.0.0"
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "cyclist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
+ "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A=="
+ },
+ "dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
+ "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "requires": {
+ "path-type": "^3.0.0"
+ }
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "figgy-pudding": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw=="
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
+ "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="
+ }
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA=="
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "requires": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="
+ }
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "serialize-javascript": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz",
+ "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A=="
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg=="
+ },
+ "ssri": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ },
+ "umtrack-wx": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/umtrack-wx/-/umtrack-wx-2.8.0.tgz",
+ "integrity": "sha512-F5ul+Q7bDJ6MDrn9ysPAyB9nyP1vCxLGUBkSJ4uvknt8rjmX4tqy1IUnJuWKj9ZH2BtkjRFpldQXJSlLDOYfhQ=="
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "requires": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..569edcd
--- /dev/null
+++ b/package.json
@@ -0,0 +1,16 @@
+{
+ "id": "filter-popup",
+ "name": "筛选 菜单 筛选菜单 上拉筛选 ",
+ "version": "1.0.4",
+ "description": "筛选菜单,支持单选和多选 , 选择后的数据通过.sync双向绑定,全端支持 导入即用",
+ "keywords": [
+ "筛选",
+ "菜单",
+ "筛选菜单",
+ "上拉筛选"
+ ],
+ "dependencies": {
+ "copy-webpack-plugin": "^5.0.3",
+ "umtrack-wx": "^2.8.0"
+ }
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..72681b0
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,208 @@
+{
+ "pages": [
+ {
+ "path" : "pages/login/login",
+ "style" :
+ {
+ "navigationBarTitleText": "登录",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "pages/index/index",
+ "style" :
+ {"navigationBarTitleText": "课程",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "pages/achievement/achievement",
+ "style" :
+ {
+ "navigationBarTitleText": "成绩",
+ "enablePullDownRefresh": true
+ }
+ },
+ {
+ "path" : "pages/person/person",
+ "style" :
+ {
+ "navigationBarTitleText": "我的",
+ "navigationStyle": "custom",
+ "enablePullDownRefresh": false
+ }
+ }
+ ],
+ "subPackages": [
+ {
+ "root": "course",
+ "pages": [
+ {
+ "path" : "courseDetail/courseDetail",
+ "style" :
+ {
+ "navigationBarTitleText": "课程详情",
+ "enablePullDownRefresh": true
+ }
+ },
+ {
+ "path" : "practiceDetail/practiceDetail",
+ "style" :
+ {
+ "navigationBarTitleText": "练习情况",
+ "enablePullDownRefresh": true
+ }
+ }
+ ]
+ },
+ {
+ "root": "user",
+ "pages": [
+ {
+ "path" : "reg/reg",
+ "style" :
+ {
+ "navigationBarTitleText": "绑定账号",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "selectAccount/selectAccount",
+ "style" :
+ {
+ "navigationBarTitleText": "选择账号",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "setting/setting",
+ "style" :
+ {
+ "navigationBarTitleText": "设置",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "password/password",
+ "style" :
+ {
+ "navigationBarTitleText": "修改密码",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "addStaff/addStaff",
+ "style" :
+ {
+ "navigationBarTitleText": "邀请成员",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "account/account",
+ "style" :
+ {
+ "navigationBarTitleText": "修改账号",
+ "enablePullDownRefresh": false
+ }
+ }
+ ,{
+ "path" : "phone/phone",
+ "style" :
+ {
+ "navigationBarTitleText": "修改手机号",
+ "enablePullDownRefresh": false
+ }
+ }
+ ,{
+ "path" : "email/email",
+ "style" :
+ {
+ "navigationBarTitleText": "修改邮箱",
+ "enablePullDownRefresh": false
+ }
+ }
+ ,{
+ "path" : "qrcode/qrcode",
+ "style" :
+ {
+ "navigationBarTitleText": "邀请加入",
+ "enablePullDownRefresh": false
+ }
+ }
+ ,{
+ "path" : "article/article",
+ "style" :
+ {
+ "navigationBarTitleText": "学习",
+ "navigationBarTextStyle": "black",
+ "navigationBarBackgroundColor": "#fff",
+ "enablePullDownRefresh": false
+ }
+ }
+ ,{
+ "path" : "scheme/scheme",
+ "style" :
+ {
+ "navigationBarTitleText": "方案详情",
+ "enablePullDownRefresh": false
+ }
+ },
+ {
+ "path" : "send/send",
+ "style" :
+ {
+ "navigationBarTitleText": "下载发送",
+ "enablePullDownRefresh": false
+ }
+ }
+ ]
+ }
+ ],
+ "preloadRule": {
+ "pages/index/index": {
+ "network": "all",
+ "packages": ["course"]
+ }
+ },
+ "condition": { //模式配置,仅开发期间生效
+ "current": 0, //当前激活的模式(list 的索引项)
+ "list": [{
+ "name": "test", //模式名称
+ "path": "pages/login/login" //启动页面,必选
+ }]
+ },
+ "globalStyle": {
+ "navigationBarTextStyle": "white",
+ "navigationBarTitleText": "慧教云舟",
+ "navigationBarBackgroundColor": "#007EFF",
+ "backgroundColor": "#f5f5f5",
+ "app-plus": {
+ "background": "#efeff4"
+ }
+ },
+ "tabBar": {
+ "color": "#B8B9B8",
+ "selectedColor": "#007FFF",
+ "borderStyle": "white",
+ "backgroundColor": "#ffffff",
+ "fontSize": "22px",
+ "iconWidth": "20px",
+ "list": [{
+ "pagePath": "pages/index/index",
+ "iconPath": "static/image/tab1.png",
+ "selectedIconPath": "static/image/tab1-1.png",
+ "text": "课程"
+ }, {
+ "pagePath": "pages/achievement/achievement",
+ "iconPath": "static/image/tab2.png",
+ "selectedIconPath": "static/image/tab2-1.png",
+ "text": "成绩"
+ }, {
+ "pagePath": "pages/person/person",
+ "iconPath": "static/image/tab4.png",
+ "selectedIconPath": "static/image/tab4-1.png",
+ "text": "我的"
+ }]
+ }
+}
diff --git a/pages/achievement/achievement.vue b/pages/achievement/achievement.vue
new file mode 100644
index 0000000..3fbf5e8
--- /dev/null
+++ b/pages/achievement/achievement.vue
@@ -0,0 +1,216 @@
+
+
+
+
+ 成绩概览
+
+
+
+ {{ overview.userName }}
+ 姓名
+
+
+
+ {{ overview.experimentalNum }}
+ 实验次数(次)
+
+
+
+ {{ overview.duration ? overview.duration : 0 }}小时
+ 实验总时长(时)
+
+
+
+ {{ overview.avgScore ? overview.avgScore.toFixed(2) : overview.avgScore }}
+ 实验平均分
+
+
+
+
+
+
+
+ 成绩记录明细
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..55d2f97
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
+
+ - {{ tab.classificationName }}
+
+
+
+
+ -
+
+ {{ item.goodsName }}
+ 进入课程
+
+
+
+
+
+
+
+
diff --git a/pages/login/login.vue b/pages/login/login.vue
new file mode 100644
index 0000000..963efbd
--- /dev/null
+++ b/pages/login/login.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+ 慧教云舟
+ EduVessel
+
+
+
+
+ 未注册或未绑定职站商城的手机号,将帮你注册新账号
+
+
+
+ 快捷登录
+
+
+
+
+
+ 《用户服务协议》
+ 《用户隐私协议》
+
+
+
+
+
+
+
+
diff --git a/pages/orders/orders.vue b/pages/orders/orders.vue
new file mode 100644
index 0000000..b188f73
--- /dev/null
+++ b/pages/orders/orders.vue
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.orderNumber }}
+
+
+
+ 商务经理:
+ {{ item.businessManagerName }}
+
+
+ 客户名称:
+ {{ item.customerName }}
+
+
+ 订单金额:
+ {{ item.orderAmount }}元
+
+
+ 订单内容:
+
+ {{ item.orderContent }}
+ {{ item.toggle ? '收起' : '展开' }}
+
+
+
+ 下单日期:
+ {{ item.createTime }}
+
+
+
+ {{ filterData[0].data.find(e => e.value === item.orderStatus).title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/person/person.vue b/pages/person/person.vue
new file mode 100644
index 0000000..5e27982
--- /dev/null
+++ b/pages/person/person.vue
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+
+ {{ my.info.userName }}
+ {{ my.info.phone }}
+
+ 团队负责人
+
+
+
+
+
+ {{ disabled ? '所属团队' : '我的团队' }}
+
+
+
+
+
+
+ 创建自己的团队
+
+
+
+
+
+
+ 团队收益
+
+ {{ my.teamIncome }}元
+
+
+
+
+ 我的项目收益
+
+ {{ my.myIncome }}元
+
+
+
+
+
+
+ 市场服务费:
+
+ {{ my.teamInfo.annualMarketingFee ? '项目抽成' + my.teamInfo.annualMarketingFee + '%' :'-' }}
+
+
+
+
+
+ 团队年费:
+
+ {{ my.teamInfo.annualTeamFee ? '固定年费' + my.teamInfo.annualTeamFee + 'w' : '-' }}
+
+
+
+
+ 业务省份
+
+
+ {{ provinceName }}
+
+
+
+
+
+
+ 业务城市
+
+
+ {{ cityName }}
+
+
+
+
+
+
+ 设置
+
+
+
+
+ 功能升级中,敬请期待...
+
+
+
+
+
+
diff --git a/static/iconfont/iconfont.css b/static/iconfont/iconfont.css
new file mode 100644
index 0000000..3a65ec5
--- /dev/null
+++ b/static/iconfont/iconfont.css
@@ -0,0 +1,32 @@
+@font-face {
+ font-family: "iconfont";
src: url('/static/iconfont/iconfont.ttf') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-qrcode:before {
+ content: "\e7dd";
+}
+
+.icon-dingdan:before {
+ content: "\e601";
+}
+
+.icon-product:before {
+ content: "\e788";
+}
+
+.icon-edit:before {
+ content: "\e621";
+}
+
+.icon-filter:before {
+ content: "\e6b9";
+}
+
diff --git a/static/iconfont/iconfont.ttf b/static/iconfont/iconfont.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..9db285d98e975304ef3231633c3fb0db66a3ea4b
GIT binary patch
literal 2748
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
literal 0
HcmV?d00001
diff --git a/static/image/index/4.png b/static/image/index/4.png
new file mode 100644
index 0000000000000000000000000000000000000000..0af3c84e3805d5bddef6d69be495135d62cf115d
GIT binary patch
literal 1289
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+yeRz^E4B6XFWwGSvNtl0Zh~e<-&e
z%m9ki!Wcjih+?2195wuBCkfB2+VH;LmqY)=xKJ`S$Me@qB+FUY>_d<%Q|-q3*^ia%^{x?OZ%9KHC1n
z)w5@IZ&}&aP@Nqf=;!QUVhG44^JadHe5^y*uXp(y7wgcSX)E
z?*85M2i@9@-!x`%S5En{zNFl*@9fc!x6W?~EwQp@v#-7scDb-n<=^b>|HE(hyT_lA
z=dxP<`?gM67QanIlXE=s*?o4i=4#`)uRmiM|9Y;!m7@==M&np1c7^wahmzc$F;
zQP~l8w5^Dnbak}o;eHRzstn9W=5J|R2&jEs@!
zB7TdlM?ZdF*SBOtz#(J%AJum_8Wevt^DW$PAyN3h{pAVMcE(N=@;q=;`nI+H{lqE4
zj?Z1EKhFKAaPOq(5AGEn!fjQe#~uk7y2Nzu?>Zs2qe14u#WJfG0pbT6Iu=B5D(*gR
z%P@NxuipJsz9Sz(6rQn`H^n{VvT1BkZ`N*F=LzGm6E;HHwvh~zD3qJ|xKq2o;ot2B;Yp>T`J7@dh4Q>Z*R$kgNPp~HRNrLsX
zW>c~dD}0KJTRS)7+V3StuAlg~XN#d|N}Av9s`eGrM2=3K{=GbM
z@}{NB*6F?9bFjnzM#2ZNz1F8oKN-2SL=|VK}%jz(c{pXj_;{zg~8nA%^GI~H+
z5Rw6jKm>tS@XG-O^?~9*#k{h*JaW3+vYHId|Di4cDz5#{CkHeKtVUKJs1e8oX_p6T
z(T13FVZE~((D61UL4Lsu1y7#zcPdIs9A9d+#^f;Xx7VEPUq0TImEryK`tpU-M^-JK
z-c(zani>=AVxc7}^z-hXotx+PG?y2+8>uY+;A6wUz$oD9;usQf`0b^WLCp>#tq+Bj
zorF^5oSr!vtDiIe{x{zH#idPGF2pRj6Hv1{c<&GM?SZQcEi{%|e+$z{d@FeIii6|1
z9+v;St#8=AoUCzV^q#!$?)!<84HwGKl76!3>&xl)go}2(x)}dh@Ar@GB_Z{^(|qS&
zIwN!Jqr7L*2Isc#f}S(IJ=WTsGBQ*-Ua!Db-)$0{WcYpM^ZZRcJR!5z9&PQ^+4a7!PTS*N@%{iJ+C;6HVNDZCHf
gwY*%`9JRHEfrtN*rvXO}Co
z6;%Ic=={%+24Vx1eJZy(542acB*-tAVXyAihS0*_A-_*=-0*^QpneUp#
zKah?T?TuEb?lU_X-F|>i*GyN^!fVUPlMan#yn-)OZi%`)XlUu;Nb#6(hoOzZ>zm0Y
zaiMC>VsqhY>tcS9XA{2}FaPwNsq~T8?ik7I*54Zs)<3$C#!#Fn!X(der|pUh>#Hj%
uJ6^wLusNE{zV5+F@mY4?E_EwNTxLE~wX;|=<-#dY40yWwxvXe>k`e{(PSs?V{i5t|Rj4<->bt
zPVU>WeZzvj?&{KXXE_N`ZuY0X4pzUuzkBoK!R?z@qY5SdtK7W~L%5$jUP9_0{u-
z)-0bkt)VI}D-0|QgFr;B4q#NoHopGSRi5NI`TXqqS?;Ap6z8zQ=7
zg$V1$@B4QC_x@?8>YwI)N^gJde>L?t^D3X6Y52#nKxDOQ^3tVGCr;M*=l?}z)0}@>
z+j6tkd(3l_7ycqW>Cr9g*LBL`;RFnHChy0=RcCXaVFm@`FWjLm-fEBesGyp;@9$Nr4><2FCW!*UbVb^
zTB-Z%>ucq$obB%a5RoohBY#b>GfVeI(94#m#UXb$#fJ)dem$}2=E8kz&hqwJz3fXZ
z4sjKkdN=g<$ye_zKRuXJv9gKb+vDFm^UZ&j=gqfLJKtVwtHF`IH}?wrr=%wl7bOk-
zt5HF`|7^%;o_g2QW|qc`Q_O(^r+&3}_2rd>NvrFZ9dDS@=Dopummid0`*R`)>3VUzX%S_&tzt3Ck%v8I?;*I>1Q^j^X
z);3_dIdLUN?!Tv%++0pk_h(I?C^6r~k>j=fM2p8f+aLE$l=&)WdgZmpJf=TSH5V-H
rcrx{9O!tD+i@dIeC12X@|1*eNoQ(WQ75RlR5lGbEkP-m$9&o843R0dLC50ugskk#jx*5?O_=z>THLq;Dc
z%PXzJFRjNXYXCGvKo(>sP*zbOFb-&+Qb~|sFvD+|h;8a0pR84@59DTfmva5|)}|t(
zZ@X8`>~ywKRg@Ac+`WANI|c?ubx#+^kch)?r$?@9HsEpP6*)9v%ZIp^Hjn2tQ`yw`m9{s0{yXjQf@}qMmFD0Bl{~xB_(P^H3!QjSRpZUwES0W(y9zi&
z)aS+ST)rx+TUY3n@WE|s&&ABmZM?1-67uHlRm~bP!$+CE!q1iXcr6WZp@=sJO8XXFPBQiS~d~%k3^qbTAz(}wD
q;hG=G(SLU8|9dF#|C5eSqxhyrS0^rB+&d2#zzm+QelF{r5}E+~G{Tqw
literal 0
HcmV?d00001
diff --git a/static/image/index/9.png b/static/image/index/9.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6fcd88c741ef07189ac5bae254fc0f06828f2f1
GIT binary patch
literal 522
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy?EyX^u0VSCfuj(#_uz35g`2%a>UL2oP
zmy;FYE%W{H_NCQD&bEePf-`zr(*w+uHW;&u?_pqIWb<@!46!)9cEZhRO$Gw2vpe2&
zFM6~ue{t~t|Fy#BPD&~$`CkdP+PzyresG`Fi}UIqq_;lyURZt5aH=_Xz&S6Iv%QjjwG0vW*Do>*7dp8@
zk>kyjx=mSj{fev`SugkftZ7eROS<)5;EcyvhW#8;{!8K~D7GqZu5%0vTAbtPIh!|c
zbIHw!Cg+Pf+%n!BBA<87TCB7&!eQ3@*t3@YiHh=56#us@EqP$OIc1IKrse9)pV%Ea
W6dd|$oYn$ElEKr}&t;ucLK6T}Fb7=#
literal 0
HcmV?d00001
diff --git a/static/image/index/banner.png b/static/image/index/banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e12e7609372c996febec4e6baecf8b2872aacb9
GIT binary patch
literal 25860
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
M07*qoM6N<$g3F%F_5c6?
literal 0
HcmV?d00001
diff --git a/static/image/index/banner1.png b/static/image/index/banner1.png
new file mode 100644
index 0000000000000000000000000000000000000000..96f920cacacf0c52ae32d0da1851f794230eff8d
GIT binary patch
literal 21349
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