From 5c0787c089a375a228f6d7c8eaec663be1665d04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8A=8A=E9=87=8C?= <1227971437@qq.com>
Date: Thu, 1 Apr 2021 20:43:00 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 4 +
App.vue | 26 +
changelog.md | 2 +
common/login.css | 504 ++++++
common/uni-ui.scss | 120 ++
common/univerify.js | 142 ++
common/uqrcode.js | 1382 +++++++++++++++++
common/utils.js | 57 +
components/m-icon/m-icon.css | 378 +++++
components/m-icon/m-icon.vue | 23 +
components/m-input.vue | 125 ++
.../u-parse/components/wxParseAudio.vue | 28 +
components/u-parse/components/wxParseImg.vue | 94 ++
.../u-parse/components/wxParseTable.vue | 55 +
.../u-parse/components/wxParseTemplate0.vue | 98 ++
.../u-parse/components/wxParseTemplate1.vue | 88 ++
.../u-parse/components/wxParseTemplate10.vue | 88 ++
.../u-parse/components/wxParseTemplate11.vue | 86 +
.../u-parse/components/wxParseTemplate2.vue | 88 ++
.../u-parse/components/wxParseTemplate3.vue | 88 ++
.../u-parse/components/wxParseTemplate4.vue | 88 ++
.../u-parse/components/wxParseTemplate5.vue | 88 ++
.../u-parse/components/wxParseTemplate6.vue | 88 ++
.../u-parse/components/wxParseTemplate7.vue | 88 ++
.../u-parse/components/wxParseTemplate8.vue | 88 ++
.../u-parse/components/wxParseTemplate9.vue | 88 ++
.../u-parse/components/wxParseVideo.vue | 15 +
components/u-parse/libs/html2json.js | 261 ++++
components/u-parse/libs/htmlparser.js | 156 ++
components/u-parse/libs/wxDiscode.js | 209 +++
components/u-parse/parse.css | 258 +++
components/u-parse/parse.vue | 228 +++
components/uni-badge/uni-badge.vue | 153 ++
components/uni-clientdb/license.md | 30 +
components/uni-clientdb/uni-clientdb.vue | 377 +++++
components/uni-forms-item/uni-forms-item.vue | 437 ++++++
components/uni-forms/uni-forms.vue | 420 +++++
components/uni-forms/validate.js | 442 ++++++
components/uni-icons/icons.js | 132 ++
components/uni-icons/uni-icons.vue | 67 +
components/uni-list-item/uni-list-item.vue | 440 ++++++
components/uni-list/uni-list.vue | 106 ++
components/uni-list/uni-refresh.vue | 65 +
components/uni-list/uni-refresh.wxs | 87 ++
components/uni-load-more/config.json | 10 +
components/uni-load-more/readme.md | 48 +
components/uni-load-more/uni-load-more.vue | 359 +++++
components/uni-qrcode/uni-qrcode.vue | 196 +++
components/uni-section/config.json | 12 +
components/uni-section/readme.md | 30 +
components/uni-section/uni-section.vue | 136 ++
main.js | 13 +
manifest.json | 63 +
package.json | 80 +
pages.json | 78 +
pages/grid/banner.json | 34 +
pages/grid/grid.nvue | 313 ++++
pages/index/index.vue | 29 +
pages/invite-reg/invite-reg.vue | 255 +++
pages/invite/invite.vue | 184 +++
pages/invited-user/invited-user.vue | 149 ++
pages/list-news/list-news.vue | 169 ++
pages/list/detail.vue | 286 ++++
pages/list/list.nvue | 321 ++++
pages/login/login.vue | 654 ++++++++
pages/main/main.vue | 134 ++
pages/pwd/pwd.vue | 52 +
pages/pwd/update-password.vue | 261 ++++
pages/reg/reg.vue | 109 ++
pages/search/search.nvue | 496 ++++++
pages/ucenter/ucenter.nvue | 182 +++
pages/uni-feedback/uni-feedback.nvue | 235 +++
pages/user/user.vue | 279 ++++
static/api.png | Bin 0 -> 1449 bytes
static/apiHL.png | Bin 0 -> 1418 bytes
static/c1.png | Bin 0 -> 401 bytes
static/c2.png | Bin 0 -> 470 bytes
static/c3.png | Bin 0 -> 511 bytes
static/c4.png | Bin 0 -> 476 bytes
static/c5.png | Bin 0 -> 472 bytes
static/c6.png | Bin 0 -> 545 bytes
static/c7.png | Bin 0 -> 365 bytes
static/c8.png | Bin 0 -> 587 bytes
static/c9.png | Bin 0 -> 565 bytes
static/component.png | Bin 0 -> 1146 bytes
static/componentHL.png | Bin 0 -> 1142 bytes
static/img/apple.png | Bin 0 -> 8569 bytes
static/img/home.png | Bin 0 -> 2637 bytes
static/img/homeHL.png | Bin 0 -> 2196 bytes
static/img/logo.png | Bin 0 -> 4577 bytes
static/img/more.png | Bin 0 -> 3037 bytes
static/img/qq.png | Bin 0 -> 62363 bytes
static/img/sinaweibo.png | Bin 0 -> 4513 bytes
static/img/univerify.png | Bin 0 -> 232345 bytes
static/img/user.png | Bin 0 -> 4793 bytes
static/img/userHL.png | Bin 0 -> 4214 bytes
static/img/weixin.png | Bin 0 -> 2421 bytes
static/logo.png | Bin 0 -> 4023 bytes
static/template.png | Bin 0 -> 461 bytes
static/templateHL.png | Bin 0 -> 459 bytes
static/text-icon.ttf | Bin 0 -> 3512 bytes
static/uni-center/logo.png | Bin 0 -> 4577 bytes
static/uni.png | Bin 0 -> 4162 bytes
static/uni.ttf | Bin 0 -> 26164 bytes
store/index.js | 20 +
store/modules/user.js | 42 +
uni.scss | 76 +
.../uni-analyse-searchhot/index.js | 49 +
.../uni-analyse-searchhot/package.json | 14 +
.../cloudfunctions/user-center/index.js | 210 +++
.../user-center/package-lock.json | 14 +
.../cloudfunctions/user-center/package.json | 15 +
.../database/JQL\346\237\245\350\257\242.jql" | 9 +
uniCloud-aliyun/database/db_init.json | 163 ++
.../database/opendb-banner.schema.json | 54 +
.../database/opendb-mall-goods.schema.json | 123 ++
.../database/opendb-news-articles.schema.json | 175 +++
.../opendb-news-categories.schema.json | 50 +
.../database/opendb-news-comments.schema.json | 68 +
.../database/opendb-news-favorite.schema.json | 35 +
.../database/opendb-search-hot.schema.json | 27 +
.../database/opendb-search-log.schema.json | 31 +
.../database/opendb-verify-codes.schema.json | 45 +
.../database/uni-id-log.schema.json | 41 +
.../database/uni-id-users.schema.json | 269 ++++
uni_modules/m-icon/m-icon.css | 378 +++++
uni_modules/m-icon/m-icon.vue | 23 +
uni_modules/m-input.vue | 125 ++
uni_modules/uni-badge/changelog.md | 2 +
.../components/uni-badge/uni-badge.vue | 156 ++
uni_modules/uni-badge/package.json | 83 +
uni_modules/uni-badge/readme.md | 43 +
uni_modules/uni-calendar/changelog.md | 2 +
.../components/uni-calendar/calendar.js | 546 +++++++
.../uni-calendar/uni-calendar-item.vue | 170 ++
.../components/uni-calendar/uni-calendar.vue | 505 ++++++
.../components/uni-calendar/util.js | 352 +++++
uni_modules/uni-calendar/package.json | 81 +
uni_modules/uni-calendar/readme.md | 96 ++
uni_modules/uni-captcha/changelog.md | 2 +
uni_modules/uni-captcha/package.json | 80 +
uni_modules/uni-captcha/readme.md | 92 ++
.../common/uni-captcha/LICENSE.md | 201 +++
.../common/uni-captcha/index.js | 1 +
.../common/uni-captcha/package.json | 13 +
uni_modules/uni-card/changelog.md | 2 +
.../uni-card/components/uni-card/uni-card.vue | 406 +++++
uni_modules/uni-card/package.json | 81 +
uni_modules/uni-card/readme.md | 97 ++
uni_modules/uni-clientDB/db_init.json | 0
uni_modules/uni-clientDB/license.md | 30 +
uni_modules/uni-clientDB/package.json | 16 +
uni_modules/uni-clientDB/pages.json | 0
uni_modules/uni-clientDB/readme.md | 248 +++
uni_modules/uni-collapse/changelog.md | 4 +
.../uni-collapse-item/uni-collapse-item.vue | 220 +++
.../components/uni-collapse/uni-collapse.vue | 59 +
uni_modules/uni-collapse/package.json | 84 +
uni_modules/uni-collapse/readme.md | 107 ++
uni_modules/uni-combox/changelog.md | 4 +
.../components/uni-combox/uni-combox.vue | 218 +++
uni_modules/uni-combox/package.json | 82 +
uni_modules/uni-combox/readme.md | 46 +
uni_modules/uni-countdown/changelog.md | 2 +
.../uni-countdown/uni-countdown.vue | 211 +++
uni_modules/uni-countdown/package.json | 81 +
uni_modules/uni-countdown/readme.md | 50 +
uni_modules/uni-data-checkbox/changelog.md | 8 +
.../uni-data-checkbox/uni-data-checkbox.vue | 785 ++++++++++
uni_modules/uni-data-checkbox/package.json | 81 +
uni_modules/uni-data-checkbox/readme.md | 291 ++++
uni_modules/uni-data-picker/changelog.md | 8 +
.../components/uni-data-picker/config.json | 12 +
.../components/uni-data-picker/keypress.js | 45 +
.../uni-data-picker/uni-data-picker.vue | 462 ++++++
.../uni-data-pickerview/uni-data-picker.js | 468 ++++++
.../uni-data-pickerview.vue | 289 ++++
uni_modules/uni-data-picker/package.json | 86 +
uni_modules/uni-data-picker/readme.md | 253 +++
uni_modules/uni-dateformat/changelog.md | 3 +
.../components/uni-dateformat/date-format.js | 197 +++
.../uni-dateformat/uni-dateformat.vue | 90 ++
uni_modules/uni-dateformat/package.json | 83 +
uni_modules/uni-dateformat/readme.md | 71 +
uni_modules/uni-datetime-picker/changelog.md | 6 +
.../uni-datetime-picker/keypress.js | 45 +
.../uni-datetime-picker.vue | 903 +++++++++++
uni_modules/uni-datetime-picker/package.json | 82 +
uni_modules/uni-datetime-picker/readme.md | 61 +
uni_modules/uni-drawer/changelog.md | 2 +
.../components/uni-drawer/keypress.js | 45 +
.../components/uni-drawer/uni-drawer.vue | 181 +++
uni_modules/uni-drawer/package.json | 83 +
uni_modules/uni-drawer/readme.md | 59 +
uni_modules/uni-easyinput/changelog.md | 3 +
.../components/uni-easyinput/common.js | 56 +
.../uni-easyinput/uni-easyinput.vue | 427 +++++
uni_modules/uni-easyinput/package.json | 83 +
uni_modules/uni-easyinput/readme.md | 192 +++
uni_modules/uni-fab/changelog.md | 4 +
.../uni-fab/components/uni-fab/uni-fab.vue | 447 ++++++
.../components/uni-fab/uni-fab.vue.bak | 383 +++++
uni_modules/uni-fab/package.json | 82 +
uni_modules/uni-fab/readme.md | 84 +
uni_modules/uni-fav/changelog.md | 6 +
.../uni-fav/components/uni-fav/uni-fav.vue | 139 ++
uni_modules/uni-fav/package.json | 81 +
uni_modules/uni-fav/readme.md | 44 +
uni_modules/uni-field/changelog.md | 0
.../components/uni-field/uni-field.vue | 712 +++++++++
uni_modules/uni-field/package.json | 79 +
uni_modules/uni-field/readme.md | 165 ++
uni_modules/uni-file-picker/changelog.md | 3 +
.../uni-file-picker/choose-and-upload-file.js | 186 +++
.../uni-file-picker/uni-file-picker.vue | 646 ++++++++
.../uni-file-picker/upload-file.vue | 325 ++++
.../uni-file-picker/upload-image.vue | 289 ++++
uni_modules/uni-file-picker/package.json | 82 +
uni_modules/uni-file-picker/readme.md | 294 ++++
uni_modules/uni-forms/changelog.md | 8 +
.../uni-forms-item/uni-forms-item.vue | 453 ++++++
.../components/uni-forms/uni-forms.vue | 456 ++++++
.../components/uni-forms/validate.js | 472 ++++++
uni_modules/uni-forms/package.json | 86 +
uni_modules/uni-forms/readme.md | 533 +++++++
uni_modules/uni-goods-nav/changelog.md | 4 +
.../uni-goods-nav/uni-goods-nav.vue | 227 +++
uni_modules/uni-goods-nav/package.json | 81 +
uni_modules/uni-goods-nav/readme.md | 107 ++
uni_modules/uni-grid/changelog.md | 2 +
.../uni-grid-item/uni-grid-item.vue | 127 ++
.../uni-grid/components/uni-grid/uni-grid.vue | 141 ++
uni_modules/uni-grid/package.json | 82 +
uni_modules/uni-grid/readme.md | 88 ++
uni_modules/uni-group/changelog.md | 3 +
.../components/uni-group/uni-group.vue | 128 ++
uni_modules/uni-group/package.json | 82 +
uni_modules/uni-group/readme.md | 48 +
uni_modules/uni-icons/changelog.md | 2 +
.../uni-icons/components/uni-icons/icons.js | 132 ++
.../components/uni-icons/uni-icons.vue | 71 +
.../uni-icons/components/uni-icons/uni.ttf | Bin 0 -> 26164 bytes
uni_modules/uni-icons/package.json | 81 +
uni_modules/uni-icons/readme.md | 43 +
uni_modules/uni-id/changelog.md | 2 +
uni_modules/uni-id/package.json | 80 +
uni_modules/uni-id/readme.md | 33 +
.../cloudfunctions/common/uni-id/LICENSE.md | 201 +++
.../cloudfunctions/common/uni-id/config.json | 44 +
.../cloudfunctions/common/uni-id/index.js | 1 +
.../cloudfunctions/common/uni-id/package.json | 13 +
uni_modules/uni-indexed-list/changelog.md | 5 +
.../uni-indexed-list-item.vue | 141 ++
.../uni-indexed-list/uni-indexed-list.vue | 358 +++++
uni_modules/uni-indexed-list/package.json | 82 +
uni_modules/uni-indexed-list/readme.md | 61 +
uni_modules/uni-link/changelog.md | 5 +
.../uni-link/components/uni-link/uni-link.vue | 111 ++
uni_modules/uni-link/package.json | 82 +
uni_modules/uni-link/readme.md | 41 +
uni_modules/uni-list-detail/db_init.json | 30 +
uni_modules/uni-list-detail/license.md | 30 +
uni_modules/uni-list-detail/package.json | 24 +
uni_modules/uni-list-detail/pages.json | 24 +
uni_modules/uni-list-detail/readme.md | 52 +
.../uni-list-news-title-image/db_init.json | 427 +++++
.../uni-list-news-title-image/license.md | 30 +
.../uni-list-news-title-image/package.json | 24 +
.../uni-list-news-title-image/pages.json | 11 +
.../uni-list-news-title-image/readme.md | 94 ++
uni_modules/uni-list/changelog.md | 5 +
.../components/uni-list-ad/uni-list-ad.vue | 107 ++
.../uni-list-chat/uni-list-chat.scss | 58 +
.../uni-list-chat/uni-list-chat.vue | 533 +++++++
.../uni-list-item/uni-list-item.vue | 438 ++++++
.../uni-list/components/uni-list/uni-list.vue | 106 ++
.../components/uni-list/uni-refresh.vue | 65 +
.../components/uni-list/uni-refresh.wxs | 87 ++
uni_modules/uni-list/package.json | 85 +
uni_modules/uni-list/readme.md | 340 ++++
uni_modules/uni-load-more/changelog.md | 2 +
.../uni-load-more/uni-load-more.vue | 359 +++++
uni_modules/uni-load-more/package.json | 82 +
uni_modules/uni-load-more/readme.md | 63 +
uni_modules/uni-nav-bar/changelog.md | 6 +
.../components/uni-nav-bar/uni-nav-bar.vue | 243 +++
.../components/uni-nav-bar/uni-status-bar.vue | 25 +
uni_modules/uni-nav-bar/package.json | 82 +
uni_modules/uni-nav-bar/readme.md | 67 +
uni_modules/uni-notice-bar/changelog.md | 4 +
.../uni-notice-bar/uni-notice-bar.vue | 397 +++++
uni_modules/uni-notice-bar/package.json | 83 +
uni_modules/uni-notice-bar/readme.md | 64 +
uni_modules/uni-number-box/changelog.md | 7 +
.../uni-number-box/uni-number-box.vue | 213 +++
uni_modules/uni-number-box/package.json | 81 +
uni_modules/uni-number-box/readme.md | 43 +
uni_modules/uni-pagination/changelog.md | 4 +
.../uni-pagination/uni-pagination.vue | 206 +++
uni_modules/uni-pagination/package.json | 82 +
uni_modules/uni-pagination/readme.md | 42 +
uni_modules/uni-popup/changelog.md | 8 +
.../components/uni-popup-dialog/keypress.js | 45 +
.../uni-popup-dialog/uni-popup-dialog.vue | 290 ++++
.../uni-popup-message/uni-popup-message.vue | 138 ++
.../uni-popup-share/uni-popup-share.vue | 165 ++
.../components/uni-popup/keypress.js | 45 +
.../uni-popup/components/uni-popup/message.js | 22 +
.../uni-popup/components/uni-popup/popup.js | 50 +
.../uni-popup/components/uni-popup/share.js | 16 +
.../components/uni-popup/uni-popup.vue | 321 ++++
uni_modules/uni-popup/package.json | 84 +
uni_modules/uni-popup/readme.md | 294 ++++
uni_modules/uni-rate/changelog.md | 5 +
.../uni-rate/components/uni-rate/uni-rate.vue | 380 +++++
uni_modules/uni-rate/package.json | 81 +
uni_modules/uni-rate/readme.md | 100 ++
uni_modules/uni-row/changelog.md | 3 +
.../uni-row/components/uni-col/uni-col.vue | 316 ++++
.../uni-row/components/uni-row/uni-row.vue | 189 +++
uni_modules/uni-row/package.json | 84 +
uni_modules/uni-row/readme.md | 176 +++
uni_modules/uni-search-bar/changelog.md | 10 +
.../uni-search-bar/uni-search-bar.vue | 251 +++
uni_modules/uni-search-bar/package.json | 82 +
uni_modules/uni-search-bar/readme.md | 75 +
uni_modules/uni-section/changelog.md | 0
.../components/uni-section/uni-section.vue | 139 ++
uni_modules/uni-section/package.json | 79 +
uni_modules/uni-section/readme.md | 33 +
.../uni-segmented-control/changelog.md | 2 +
.../uni-segmented-control.vue | 141 ++
.../uni-segmented-control/package.json | 82 +
uni_modules/uni-segmented-control/readme.md | 54 +
uni_modules/uni-steps/changelog.md | 4 +
.../components/uni-steps/uni-steps.vue | 252 +++
uni_modules/uni-steps/package.json | 82 +
uni_modules/uni-steps/readme.md | 43 +
uni_modules/uni-swipe-action/changelog.md | 7 +
.../uni-swipe-action-item/bindingx.js | 292 ++++
.../uni-swipe-action-item/index.wxs | 318 ++++
.../components/uni-swipe-action-item/isPC.js | 12 +
.../uni-swipe-action-item/mpalipay.js | 207 +++
.../uni-swipe-action-item/mpother.js | 252 +++
.../components/uni-swipe-action-item/mpwxs.js | 135 ++
.../uni-swipe-action-item.vue | 383 +++++
.../uni-swipe-action/uni-swipe-action.vue | 42 +
uni_modules/uni-swipe-action/package.json | 84 +
uni_modules/uni-swipe-action/readme.md | 161 ++
uni_modules/uni-swiper-dot/changelog.md | 4 +
.../uni-swiper-dot/uni-swiper-dot.vue | 215 +++
uni_modules/uni-swiper-dot/package.json | 83 +
uni_modules/uni-swiper-dot/readme.md | 84 +
uni_modules/uni-table/changelog.md | 4 +
.../components/uni-table/uni-table.vue | 276 ++++
.../uni-table/components/uni-td/uni-td.vue | 74 +
.../uni-table/components/uni-th/uni-th.vue | 80 +
.../uni-table/components/uni-tr/uni-tr.vue | 129 ++
uni_modules/uni-table/package.json | 83 +
uni_modules/uni-table/readme.md | 104 ++
uni_modules/uni-tag/changelog.md | 2 +
.../uni-tag/components/uni-tag/uni-tag.vue | 237 +++
uni_modules/uni-tag/package.json | 84 +
uni_modules/uni-tag/readme.md | 43 +
uni_modules/uni-test/changelog.md | 6 +
uni_modules/uni-test/package.json | 122 ++
uni_modules/uni-test/readme.md | 290 ++++
uni_modules/uni-title/changelog.md | 2 +
.../components/uni-title/uni-title.vue | 170 ++
uni_modules/uni-title/package.json | 82 +
uni_modules/uni-title/readme.md | 65 +
uni_modules/uni-transition/changelog.md | 2 +
.../uni-transition/uni-transition.vue | 280 ++++
uni_modules/uni-transition/package.json | 82 +
uni_modules/uni-transition/readme.md | 84 +
uni_modules/uni-ui/changelog.md | 34 +
.../uni-ui/components/uni-ui/uni-ui.vue | 7 +
uni_modules/uni-ui/package.json | 124 ++
uni_modules/uni-ui/readme.md | 167 ++
379 files changed, 47589 insertions(+)
create mode 100644 .gitignore
create mode 100644 App.vue
create mode 100644 changelog.md
create mode 100644 common/login.css
create mode 100644 common/uni-ui.scss
create mode 100644 common/univerify.js
create mode 100644 common/uqrcode.js
create mode 100644 common/utils.js
create mode 100644 components/m-icon/m-icon.css
create mode 100644 components/m-icon/m-icon.vue
create mode 100644 components/m-input.vue
create mode 100644 components/u-parse/components/wxParseAudio.vue
create mode 100644 components/u-parse/components/wxParseImg.vue
create mode 100644 components/u-parse/components/wxParseTable.vue
create mode 100644 components/u-parse/components/wxParseTemplate0.vue
create mode 100644 components/u-parse/components/wxParseTemplate1.vue
create mode 100644 components/u-parse/components/wxParseTemplate10.vue
create mode 100644 components/u-parse/components/wxParseTemplate11.vue
create mode 100644 components/u-parse/components/wxParseTemplate2.vue
create mode 100644 components/u-parse/components/wxParseTemplate3.vue
create mode 100644 components/u-parse/components/wxParseTemplate4.vue
create mode 100644 components/u-parse/components/wxParseTemplate5.vue
create mode 100644 components/u-parse/components/wxParseTemplate6.vue
create mode 100644 components/u-parse/components/wxParseTemplate7.vue
create mode 100644 components/u-parse/components/wxParseTemplate8.vue
create mode 100644 components/u-parse/components/wxParseTemplate9.vue
create mode 100644 components/u-parse/components/wxParseVideo.vue
create mode 100644 components/u-parse/libs/html2json.js
create mode 100644 components/u-parse/libs/htmlparser.js
create mode 100644 components/u-parse/libs/wxDiscode.js
create mode 100644 components/u-parse/parse.css
create mode 100644 components/u-parse/parse.vue
create mode 100644 components/uni-badge/uni-badge.vue
create mode 100644 components/uni-clientdb/license.md
create mode 100644 components/uni-clientdb/uni-clientdb.vue
create mode 100644 components/uni-forms-item/uni-forms-item.vue
create mode 100644 components/uni-forms/uni-forms.vue
create mode 100644 components/uni-forms/validate.js
create mode 100644 components/uni-icons/icons.js
create mode 100644 components/uni-icons/uni-icons.vue
create mode 100644 components/uni-list-item/uni-list-item.vue
create mode 100644 components/uni-list/uni-list.vue
create mode 100644 components/uni-list/uni-refresh.vue
create mode 100644 components/uni-list/uni-refresh.wxs
create mode 100644 components/uni-load-more/config.json
create mode 100644 components/uni-load-more/readme.md
create mode 100644 components/uni-load-more/uni-load-more.vue
create mode 100644 components/uni-qrcode/uni-qrcode.vue
create mode 100644 components/uni-section/config.json
create mode 100644 components/uni-section/readme.md
create mode 100644 components/uni-section/uni-section.vue
create mode 100644 main.js
create mode 100644 manifest.json
create mode 100644 package.json
create mode 100644 pages.json
create mode 100644 pages/grid/banner.json
create mode 100644 pages/grid/grid.nvue
create mode 100644 pages/index/index.vue
create mode 100644 pages/invite-reg/invite-reg.vue
create mode 100644 pages/invite/invite.vue
create mode 100644 pages/invited-user/invited-user.vue
create mode 100644 pages/list-news/list-news.vue
create mode 100644 pages/list/detail.vue
create mode 100644 pages/list/list.nvue
create mode 100644 pages/login/login.vue
create mode 100644 pages/main/main.vue
create mode 100644 pages/pwd/pwd.vue
create mode 100644 pages/pwd/update-password.vue
create mode 100644 pages/reg/reg.vue
create mode 100644 pages/search/search.nvue
create mode 100644 pages/ucenter/ucenter.nvue
create mode 100644 pages/uni-feedback/uni-feedback.nvue
create mode 100644 pages/user/user.vue
create mode 100644 static/api.png
create mode 100644 static/apiHL.png
create mode 100644 static/c1.png
create mode 100644 static/c2.png
create mode 100644 static/c3.png
create mode 100644 static/c4.png
create mode 100644 static/c5.png
create mode 100644 static/c6.png
create mode 100644 static/c7.png
create mode 100644 static/c8.png
create mode 100644 static/c9.png
create mode 100644 static/component.png
create mode 100644 static/componentHL.png
create mode 100644 static/img/apple.png
create mode 100644 static/img/home.png
create mode 100644 static/img/homeHL.png
create mode 100644 static/img/logo.png
create mode 100644 static/img/more.png
create mode 100644 static/img/qq.png
create mode 100644 static/img/sinaweibo.png
create mode 100644 static/img/univerify.png
create mode 100644 static/img/user.png
create mode 100644 static/img/userHL.png
create mode 100644 static/img/weixin.png
create mode 100644 static/logo.png
create mode 100644 static/template.png
create mode 100644 static/templateHL.png
create mode 100644 static/text-icon.ttf
create mode 100644 static/uni-center/logo.png
create mode 100644 static/uni.png
create mode 100644 static/uni.ttf
create mode 100644 store/index.js
create mode 100644 store/modules/user.js
create mode 100644 uni.scss
create mode 100644 uniCloud-aliyun/cloudfunctions/uni-analyse-searchhot/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/uni-analyse-searchhot/package.json
create mode 100644 uniCloud-aliyun/cloudfunctions/user-center/index.js
create mode 100644 uniCloud-aliyun/cloudfunctions/user-center/package-lock.json
create mode 100644 uniCloud-aliyun/cloudfunctions/user-center/package.json
create mode 100644 "uniCloud-aliyun/database/JQL\346\237\245\350\257\242.jql"
create mode 100644 uniCloud-aliyun/database/db_init.json
create mode 100644 uniCloud-aliyun/database/opendb-banner.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-mall-goods.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-news-articles.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-news-categories.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-news-comments.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-news-favorite.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-search-hot.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-search-log.schema.json
create mode 100644 uniCloud-aliyun/database/opendb-verify-codes.schema.json
create mode 100644 uniCloud-aliyun/database/uni-id-log.schema.json
create mode 100644 uniCloud-aliyun/database/uni-id-users.schema.json
create mode 100644 uni_modules/m-icon/m-icon.css
create mode 100644 uni_modules/m-icon/m-icon.vue
create mode 100644 uni_modules/m-input.vue
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/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-captcha/changelog.md
create mode 100644 uni_modules/uni-captcha/package.json
create mode 100644 uni_modules/uni-captcha/readme.md
create mode 100644 uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/LICENSE.md
create mode 100644 uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/index.js
create mode 100644 uni_modules/uni-captcha/uniCloud/cloudfunctions/common/uni-captcha/package.json
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-clientDB/db_init.json
create mode 100644 uni_modules/uni-clientDB/license.md
create mode 100644 uni_modules/uni-clientDB/package.json
create mode 100644 uni_modules/uni-clientDB/pages.json
create mode 100644 uni_modules/uni-clientDB/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-countdown/changelog.md
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/config.json
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/keypress.js
create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
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/components/uni-fab/uni-fab.vue.bak
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/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-field/changelog.md
create mode 100644 uni_modules/uni-field/components/uni-field/uni-field.vue
create mode 100644 uni_modules/uni-field/package.json
create mode 100644 uni_modules/uni-field/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/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/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/uni.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/changelog.md
create mode 100644 uni_modules/uni-id/package.json
create mode 100644 uni_modules/uni-id/readme.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js
create mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/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-detail/db_init.json
create mode 100644 uni_modules/uni-list-detail/license.md
create mode 100644 uni_modules/uni-list-detail/package.json
create mode 100644 uni_modules/uni-list-detail/pages.json
create mode 100644 uni_modules/uni-list-detail/readme.md
create mode 100644 uni_modules/uni-list-news-title-image/db_init.json
create mode 100644 uni_modules/uni-list-news-title-image/license.md
create mode 100644 uni_modules/uni-list-news-title-image/package.json
create mode 100644 uni_modules/uni-list-news-title-image/pages.json
create mode 100644 uni_modules/uni-list-news-title-image/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/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/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/keypress.js
create mode 100644 uni_modules/uni-popup/components/uni-popup/message.js
create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js
create mode 100644 uni_modules/uni-popup/components/uni-popup/share.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-search-bar/changelog.md
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-section/changelog.md
create mode 100644 uni_modules/uni-section/components/uni-section/uni-section.vue
create mode 100644 uni_modules/uni-section/package.json
create mode 100644 uni_modules/uni-section/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/index.wxs
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/uni-swipe-action-item.vue
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-td/uni-td.vue
create mode 100644 uni_modules/uni-table/components/uni-th/uni-th.vue
create mode 100644 uni_modules/uni-table/components/uni-tr/uni-tr.vue
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/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/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
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..269295a6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+unpackage/
+.hbuilderx
+node_modules
+.DS_Store
\ No newline at end of file
diff --git a/App.vue b/App.vue
new file mode 100644
index 00000000..42a70c28
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,26 @@
+
+
+
diff --git a/changelog.md b/changelog.md
new file mode 100644
index 00000000..b4657f5c
--- /dev/null
+++ b/changelog.md
@@ -0,0 +1,2 @@
+## 0.1.4(2021-03-01)
+- 调整为uni_modules目录规范
diff --git a/common/login.css b/common/login.css
new file mode 100644
index 00000000..f8b35574
--- /dev/null
+++ b/common/login.css
@@ -0,0 +1,504 @@
+
+ /* 头条小程序需要把 iconfont 样式放到组件外 */
+ @font-face {
+ font-family: uniicons;
+ font-weight: normal;
+ font-style: normal;
+ src: url('/static/uni.ttf') format('truetype');
+ }
+
+ .m-icon {
+ font-family: uniicons;
+ /* font-size: 24px; */
+ margin-left: 20px;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ display: inline-block;
+ text-decoration: none;
+ -webkit-font-smoothing: antialiased;
+ }
+
+ .m-icon.uni-active {
+ color: #007aff;
+ }
+
+ .m-icon-contact:before {
+ content: '\e100';
+ }
+
+ .m-icon-person:before {
+ content: '\e101';
+ }
+
+ .m-icon-personadd:before {
+ content: '\e102';
+ }
+
+ .m-icon-contact-filled:before {
+ content: '\e130';
+ }
+
+ .m-icon-person-filled:before {
+ content: '\e131';
+ }
+
+ .m-icon-personadd-filled:before {
+ content: '\e132';
+ }
+
+ .m-icon-phone:before {
+ content: '\e200';
+ }
+
+ .m-icon-email:before {
+ content: '\e201';
+ }
+
+ .m-icon-chatbubble:before {
+ content: '\e202';
+ }
+
+ .m-icon-chatboxes:before {
+ content: '\e203';
+ }
+
+ .m-icon-phone-filled:before {
+ content: '\e230';
+ }
+
+ .m-icon-email-filled:before {
+ content: '\e231';
+ }
+
+ .m-icon-chatbubble-filled:before {
+ content: '\e232';
+ }
+
+ .m-icon-chatboxes-filled:before {
+ content: '\e233';
+ }
+
+ .m-icon-weibo:before {
+ content: '\e260';
+ }
+
+ .m-icon-weixin:before {
+ content: '\e261';
+ }
+
+ .m-icon-pengyouquan:before {
+ content: '\e262';
+ }
+
+ .m-icon-chat:before {
+ content: '\e263';
+ }
+
+ .m-icon-qq:before {
+ content: '\e264';
+ }
+
+ .m-icon-videocam:before {
+ content: '\e300';
+ }
+
+ .m-icon-camera:before {
+ content: '\e301';
+ }
+
+ .m-icon-mic:before {
+ content: '\e302';
+ }
+
+ .m-icon-location:before {
+ content: '\e303';
+ }
+
+ .m-icon-mic-filled:before,
+ .m-icon-speech:before {
+ content: '\e332';
+ }
+
+ .m-icon-location-filled:before {
+ content: '\e333';
+ }
+
+ .m-icon-micoff:before {
+ content: '\e360';
+ }
+
+ .m-icon-image:before {
+ content: '\e363';
+ }
+
+ .m-icon-map:before {
+ content: '\e364';
+ }
+
+ .m-icon-compose:before {
+ content: '\e400';
+ }
+
+ .m-icon-trash:before {
+ content: '\e401';
+ }
+
+ .m-icon-upload:before {
+ content: '\e402';
+ }
+
+ .m-icon-download:before {
+ content: '\e403';
+ }
+
+ .m-icon-close:before {
+ content: '\e404';
+ }
+
+ .m-icon-redo:before {
+ content: '\e405';
+ }
+
+ .m-icon-undo:before {
+ content: '\e406';
+ }
+
+ .m-icon-refresh:before {
+ content: '\e407';
+ }
+
+ .m-icon-star:before {
+ content: '\e408';
+ }
+
+ .m-icon-plus:before {
+ content: '\e409';
+ }
+
+ .m-icon-minus:before {
+ content: '\e410';
+ }
+
+ .m-icon-circle:before,
+ .m-icon-checkbox:before {
+ content: '\e411';
+ }
+
+ .m-icon-close-filled:before,
+ .m-icon-clear:before {
+ content: '\e434';
+ }
+
+ .m-icon-refresh-filled:before {
+ content: '\e437';
+ }
+
+ .m-icon-star-filled:before {
+ content: '\e438';
+ }
+
+ .m-icon-plus-filled:before {
+ content: '\e439';
+ }
+
+ .m-icon-minus-filled:before {
+ content: '\e440';
+ }
+
+ .m-icon-circle-filled:before {
+ content: '\e441';
+ }
+
+ .m-icon-checkbox-filled:before {
+ content: '\e442';
+ }
+
+ .m-icon-closeempty:before {
+ content: '\e460';
+ }
+
+ .m-icon-refreshempty:before {
+ content: '\e461';
+ }
+
+ .m-icon-reload:before {
+ content: '\e462';
+ }
+
+ .m-icon-starhalf:before {
+ content: '\e463';
+ }
+
+ .m-icon-spinner:before {
+ content: '\e464';
+ }
+
+ .m-icon-spinner-cycle:before {
+ content: '\e465';
+ }
+
+ .m-icon-search:before {
+ content: '\e466';
+ }
+
+ .m-icon-plusempty:before {
+ content: '\e468';
+ }
+
+ .m-icon-forward:before {
+ content: '\e470';
+ }
+
+ .m-icon-back:before,
+ .m-icon-left-nav:before {
+ content: '\e471';
+ }
+
+ .m-icon-checkmarkempty:before {
+ content: '\e472';
+ }
+
+ .m-icon-home:before {
+ content: '\e500';
+ }
+
+ .m-icon-navigate:before {
+ content: '\e501';
+ }
+
+ .m-icon-gear:before {
+ content: '\e502';
+ }
+
+ .m-icon-paperplane:before {
+ content: '\e503';
+ }
+
+ .m-icon-info:before {
+ content: '\e504';
+ }
+
+ .m-icon-help:before {
+ content: '\e505';
+ }
+
+ .m-icon-locked:before {
+ content: '\e506';
+ }
+
+ .m-icon-more:before {
+ content: '\e507';
+ }
+
+ .m-icon-flag:before {
+ content: '\e508';
+ }
+
+ .m-icon-home-filled:before {
+ content: '\e530';
+ }
+
+ .m-icon-gear-filled:before {
+ content: '\e532';
+ }
+
+ .m-icon-info-filled:before {
+ content: '\e534';
+ }
+
+ .m-icon-help-filled:before {
+ content: '\e535';
+ }
+
+ .m-icon-more-filled:before {
+ content: '\e537';
+ }
+
+ .m-icon-settings:before {
+ content: '\e560';
+ }
+
+ .m-icon-list:before {
+ content: '\e562';
+ }
+
+ .m-icon-bars:before {
+ content: '\e563';
+ }
+
+ .m-icon-loop:before {
+ content: '\e565';
+ }
+
+ .m-icon-paperclip:before {
+ content: '\e567';
+ }
+
+ .m-icon-eye:before {
+ content: '\e568';
+ }
+
+ .m-icon-arrowup:before {
+ content: '\e580';
+ }
+
+ .m-icon-arrowdown:before {
+ content: '\e581';
+ }
+
+ .m-icon-arrowleft:before {
+ content: '\e582';
+ }
+
+ .m-icon-arrowright:before {
+ content: '\e583';
+ }
+
+ .m-icon-arrowthinup:before {
+ content: '\e584';
+ }
+
+ .m-icon-arrowthindown:before {
+ content: '\e585';
+ }
+
+ .m-icon-arrowthinleft:before {
+ content: '\e586';
+ }
+
+ .m-icon-arrowthinright:before {
+ content: '\e587';
+ }
+
+ .m-icon-pulldown:before {
+ content: '\e588';
+ }
+
+ .m-icon-scan:before {
+ content: "\e612";
+ }
+
+
+ /*每个页面公共css */
+ page {
+ min-height: 100%;
+ display: flex;
+ font-size: 14px;
+ }
+
+ input,
+ textarea,
+ button {
+ font-size: 14px;
+ }
+
+ /* #ifdef MP-BAIDU */
+ page {
+ width: 100%;
+ height: 100%;
+ display: block;
+ }
+
+ swan-template {
+ width: 100%;
+ min-height: 100%;
+ display: flex;
+ }
+
+ /* 原生组件模式下需要注意组件外部样式 */
+ custom-component {
+ width: 100%;
+ min-height: 100%;
+ display: flex;
+ }
+
+ /* #endif */
+
+ /* #ifdef MP-ALIPAY */
+ page {
+ min-height: 100vh;
+ }
+
+ /* #endif */
+
+ /* 原生组件模式下需要注意组件外部样式 */
+ m-input {
+ width: 100%;
+ /* min-height: 100%; */
+ display: flex;
+ flex: 1;
+ }
+
+ .content {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ background-color: #efeff4;
+ padding: 10px;
+ }
+
+ .input-group {
+ background-color: #ffffff;
+ margin-top: 20px;
+ position: relative;
+ }
+
+ .input-group::before {
+ position: absolute;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+ }
+
+ .input-group::after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+ }
+
+ .input-row {
+ display: flex;
+ flex-direction: row;
+ position: relative;
+ /* font-size: 18px; */
+ height: 40px;
+ line-height: 40px;
+ }
+
+ .input-row .title {
+ width: 70px;
+ padding-left: 15px;
+ }
+
+ .input-row.border::after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 8px;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+ }
+
+ .btn-row {
+ margin-top: 25px;
+ padding: 10px;
+ }
+
+ button.primary {
+ background-color: #0faeff;
+ }
\ No newline at end of file
diff --git a/common/uni-ui.scss b/common/uni-ui.scss
new file mode 100644
index 00000000..6ba0990e
--- /dev/null
+++ b/common/uni-ui.scss
@@ -0,0 +1,120 @@
+
+.uni-flex {
+ display: flex;
+}
+
+.uni-flex-row {
+ @extend .uni-flex;
+ flex-direction: row;
+ box-sizing: border-box;
+}
+
+.uni-flex-column {
+ @extend .uni-flex;
+ flex-direction: column;
+}
+
+.uni-color-gary {
+ color: #3b4144;
+}
+
+/* 标题 */
+.uni-title {
+ display: flex;
+ margin-bottom: $uni-spacing-col-base;
+ font-size: $uni-font-size-lg;
+ font-weight: bold;
+ color: #3b4144;
+}
+
+.uni-title-sub {
+ display: flex;
+ // margin-bottom: $uni-spacing-col-base;
+ font-size: $uni-font-size-base;
+ font-weight: 500;
+ color: #3b4144;
+}
+
+/* 描述 额外文本 */
+.uni-note {
+ margin-top: 10px;
+ color: #999;
+ font-size: $uni-font-size-sm;
+}
+
+/* 列表内容 */
+.uni-list-box {
+ @extend .uni-flex-row;
+ flex: 1;
+ margin-top: 10px;
+}
+
+/* 略缩图 */
+.uni-thumb {
+ flex-shrink: 0;
+ margin-right: $uni-spacing-row-base;
+ width: 125px;
+ height: 75px;
+ border-radius: $uni-border-radius-lg;
+ overflow: hidden;
+ border: 1px #f5f5f5 solid;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+}
+
+.uni-media-box {
+ @extend .uni-flex-row;
+ // margin-bottom: $uni-spacing-col-base;
+ border-radius: $uni-border-radius-lg;
+ overflow: hidden;
+ .uni-thumb {
+ margin: 0;
+ margin-left: 4px;
+ flex-shrink: 1;
+ width: 33%;
+ border-radius:0;
+ &:first-child {
+ margin: 0;
+ }
+ }
+}
+
+/* 内容 */
+.uni-content {
+ @extend .uni-flex-column;
+ justify-content: space-between;
+}
+
+/* 列表footer */
+.uni-footer {
+ @extend .uni-flex-row;
+ justify-content: space-between;
+ margin-top: $uni-spacing-col-lg;
+}
+.uni-footer-text {
+ font-size: $uni-font-size-sm;
+ color: $uni-text-color-grey;
+ margin-left: 5px;
+}
+
+/* 标签 */
+
+.uni-tag {
+ flex-shrink: 0;
+ padding: 0 5px;
+ border: 1px $uni-border-color solid;
+ margin-right: $uni-spacing-row-sm;
+ border-radius: $uni-border-radius-base;
+ background: $uni-bg-color-grey;
+ color: $uni-text-color;
+ font-size: $uni-font-size-sm;
+}
+
+/* 链接 */
+.uni-link {
+ margin-left: 10px;
+ color: $uni-text-color;
+ text-decoration: underline;
+}
diff --git a/common/univerify.js b/common/univerify.js
new file mode 100644
index 00000000..e92fab6b
--- /dev/null
+++ b/common/univerify.js
@@ -0,0 +1,142 @@
+import Vuex from '@/store/index.js'
+
+export function univerifyLogin() {
+ const commit = Vuex.commit;
+ const PROVIDER = 'univerify';
+
+ /**
+ * reject(true) 点击其他登录方式
+ * reject(false) 关闭登录框
+ */
+ return new Promise((resolve, reject) => {
+ uni.getProvider({
+ service: 'oauth',
+ success: (res) => {
+ if (res.provider.indexOf(PROVIDER) !== -1) {
+ // 一键登录已在APP onLaunch的时候进行了预登陆,可以显著提高登录速度。登录成功后,预登陆状态会重置
+ uni.login({
+ provider: PROVIDER,
+ success: (res) => {
+ uni.closeAuthView();
+ uni.showLoading();
+
+ uniCloud.callFunction({
+ name: 'user-center',
+ data: {
+ action: 'loginByUniverify',
+ params: res.authResult
+ },
+ success: (e) => {
+ console.log('login success', e);
+
+ if (e.result.code == 0) {
+ const username = e.result.username || e.result.mobile || '一键登录新用户'
+
+ uni.setStorageSync('uni_id_token', e.result.token)
+ uni.setStorageSync('username', username)
+ uni.setStorageSync('login_type', 'online')
+
+ commit('login', username)
+ resolve();
+
+ uni.switchTab({
+ url: '../main/main',
+ });
+ } else {
+ uni.showModal({
+ title: `登录失败: ${e.result.code}`,
+ content: e.result.message,
+ showCancel: false
+ })
+ console.log('登录失败', e);
+
+ e.result.errMsg = e.result.message;
+ }
+ },
+ fail: (e) => {
+ uni.showModal({
+ title: `登录失败`,
+ content: e.errMsg,
+ showCancel: false
+ })
+ },
+ complete: () => {
+ uni.hideLoading()
+ }
+ })
+ },
+ fail: (err) => {
+ console.error('授权登录失败:' + JSON.stringify(err));
+
+ // 一键登录点击其他登录方式
+ if (err.code == 30002) {
+ uni.closeAuthView();
+ reject(true);
+ return;
+ }
+
+ // 关闭登录
+ if (err.code == 30003) {
+ uni.closeAuthView();
+ reject(false);
+ return;
+ }
+
+ reject(err);
+ }
+ })
+ } else {
+ reject();
+ }
+ },
+ fail: (err) => {
+ console.error('获取服务供应商失败:' + err.errMsg);
+ reject(err)
+ }
+ });
+ })
+}
+
+export function univerifyErrorHandler(err, cb) {
+ if (!err) {
+ cb && cb()
+ return
+ };
+
+ const state = Vuex.state;
+ const obj = {
+ /* showCancel: true,
+ cancelText: '其他登录方式',
+ success(res) {
+ if (res.cancel) {
+ cb && cb()
+ }
+ } */
+ }
+
+ switch (true) {
+ // 未开通
+ case err.code == 1000:
+ uni.showModal(Object.assign({
+ title: `登录失败`,
+ content: `${err.errMsg},错误码:${err.code}\n开通指南:https://ask.dcloud.net.cn/article/37965`,
+ }, obj));
+ break;
+ // 预登陆失败
+ case err.code == 30005:
+ uni.showModal(Object.assign({
+ showCancel: false,
+ title: `预登录失败`,
+ content: `${err.errMsg},错误码:${err.code}`
+ }, obj));
+ break;
+ //用户关闭验证界面
+ case err.code != 30003:
+ uni.showModal(Object.assign({
+ showCancel: false,
+ title: `登录失败`,
+ content: `${err.errMsg},错误码:${err.code}`,
+ }, obj));
+ break;
+ }
+}
diff --git a/common/uqrcode.js b/common/uqrcode.js
new file mode 100644
index 00000000..22a947d7
--- /dev/null
+++ b/common/uqrcode.js
@@ -0,0 +1,1382 @@
+//---------------------------------------------------------------------
+// github https://github.com/Sansnn/uQRCode
+//---------------------------------------------------------------------
+
+let uQRCode = {};
+
+(function() {
+ //---------------------------------------------------------------------
+ // QRCode for JavaScript
+ //
+ // Copyright (c) 2009 Kazuhiko Arase
+ //
+ // URL: http://www.d-project.com/
+ //
+ // Licensed under the MIT license:
+ // http://www.opensource.org/licenses/mit-license.php
+ //
+ // The word "QR Code" is registered trademark of
+ // DENSO WAVE INCORPORATED
+ // http://www.denso-wave.com/qrcode/faqpatent-e.html
+ //
+ //---------------------------------------------------------------------
+
+ //---------------------------------------------------------------------
+ // QR8bitByte
+ //---------------------------------------------------------------------
+
+ function QR8bitByte(data) {
+ this.mode = QRMode.MODE_8BIT_BYTE;
+ this.data = data;
+ }
+
+ QR8bitByte.prototype = {
+
+ getLength: function(buffer) {
+ return this.data.length;
+ },
+
+ write: function(buffer) {
+ for (var i = 0; i < this.data.length; i++) {
+ // not JIS ...
+ buffer.put(this.data.charCodeAt(i), 8);
+ }
+ }
+ };
+
+ //---------------------------------------------------------------------
+ // QRCode
+ //---------------------------------------------------------------------
+
+ function QRCode(typeNumber, errorCorrectLevel) {
+ this.typeNumber = typeNumber;
+ this.errorCorrectLevel = errorCorrectLevel;
+ this.modules = null;
+ this.moduleCount = 0;
+ this.dataCache = null;
+ this.dataList = new Array();
+ }
+
+ QRCode.prototype = {
+
+ addData: function(data) {
+ var newData = new QR8bitByte(data);
+ this.dataList.push(newData);
+ this.dataCache = null;
+ },
+
+ isDark: function(row, col) {
+ if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {
+ throw new Error(row + "," + col);
+ }
+ return this.modules[row][col];
+ },
+
+ getModuleCount: function() {
+ return this.moduleCount;
+ },
+
+ make: function() {
+ // Calculate automatically typeNumber if provided is < 1
+ if (this.typeNumber < 1) {
+ var typeNumber = 1;
+ for (typeNumber = 1; typeNumber < 40; typeNumber++) {
+ var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);
+
+ var buffer = new QRBitBuffer();
+ var totalDataCount = 0;
+ for (var i = 0; i < rsBlocks.length; i++) {
+ totalDataCount += rsBlocks[i].dataCount;
+ }
+
+ for (var i = 0; i < this.dataList.length; i++) {
+ var data = this.dataList[i];
+ buffer.put(data.mode, 4);
+ buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));
+ data.write(buffer);
+ }
+ if (buffer.getLengthInBits() <= totalDataCount * 8)
+ break;
+ }
+ this.typeNumber = typeNumber;
+ }
+ this.makeImpl(false, this.getBestMaskPattern());
+ },
+
+ makeImpl: function(test, maskPattern) {
+
+ this.moduleCount = this.typeNumber * 4 + 17;
+ this.modules = new Array(this.moduleCount);
+
+ for (var row = 0; row < this.moduleCount; row++) {
+
+ this.modules[row] = new Array(this.moduleCount);
+
+ for (var col = 0; col < this.moduleCount; col++) {
+ this.modules[row][col] = null; //(col + row) % 3;
+ }
+ }
+
+ this.setupPositionProbePattern(0, 0);
+ this.setupPositionProbePattern(this.moduleCount - 7, 0);
+ this.setupPositionProbePattern(0, this.moduleCount - 7);
+ this.setupPositionAdjustPattern();
+ this.setupTimingPattern();
+ this.setupTypeInfo(test, maskPattern);
+
+ if (this.typeNumber >= 7) {
+ this.setupTypeNumber(test);
+ }
+
+ if (this.dataCache == null) {
+ this.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);
+ }
+
+ this.mapData(this.dataCache, maskPattern);
+ },
+
+ setupPositionProbePattern: function(row, col) {
+
+ for (var r = -1; r <= 7; r++) {
+
+ if (row + r <= -1 || this.moduleCount <= row + r) continue;
+
+ for (var c = -1; c <= 7; c++) {
+
+ if (col + c <= -1 || this.moduleCount <= col + c) continue;
+
+ if ((0 <= r && r <= 6 && (c == 0 || c == 6)) ||
+ (0 <= c && c <= 6 && (r == 0 || r == 6)) ||
+ (2 <= r && r <= 4 && 2 <= c && c <= 4)) {
+ this.modules[row + r][col + c] = true;
+ } else {
+ this.modules[row + r][col + c] = false;
+ }
+ }
+ }
+ },
+
+ getBestMaskPattern: function() {
+
+ var minLostPoint = 0;
+ var pattern = 0;
+
+ for (var i = 0; i < 8; i++) {
+
+ this.makeImpl(true, i);
+
+ var lostPoint = QRUtil.getLostPoint(this);
+
+ if (i == 0 || minLostPoint > lostPoint) {
+ minLostPoint = lostPoint;
+ pattern = i;
+ }
+ }
+
+ return pattern;
+ },
+
+ createMovieClip: function(target_mc, instance_name, depth) {
+
+ var qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);
+ var cs = 1;
+
+ this.make();
+
+ for (var row = 0; row < this.modules.length; row++) {
+
+ var y = row * cs;
+
+ for (var col = 0; col < this.modules[row].length; col++) {
+
+ var x = col * cs;
+ var dark = this.modules[row][col];
+
+ if (dark) {
+ qr_mc.beginFill(0, 100);
+ qr_mc.moveTo(x, y);
+ qr_mc.lineTo(x + cs, y);
+ qr_mc.lineTo(x + cs, y + cs);
+ qr_mc.lineTo(x, y + cs);
+ qr_mc.endFill();
+ }
+ }
+ }
+
+ return qr_mc;
+ },
+
+ setupTimingPattern: function() {
+
+ for (var r = 8; r < this.moduleCount - 8; r++) {
+ if (this.modules[r][6] != null) {
+ continue;
+ }
+ this.modules[r][6] = (r % 2 == 0);
+ }
+
+ for (var c = 8; c < this.moduleCount - 8; c++) {
+ if (this.modules[6][c] != null) {
+ continue;
+ }
+ this.modules[6][c] = (c % 2 == 0);
+ }
+ },
+
+ setupPositionAdjustPattern: function() {
+
+ var pos = QRUtil.getPatternPosition(this.typeNumber);
+
+ for (var i = 0; i < pos.length; i++) {
+
+ for (var j = 0; j < pos.length; j++) {
+
+ var row = pos[i];
+ var col = pos[j];
+
+ if (this.modules[row][col] != null) {
+ continue;
+ }
+
+ for (var r = -2; r <= 2; r++) {
+
+ for (var c = -2; c <= 2; c++) {
+
+ if (r == -2 || r == 2 || c == -2 || c == 2 ||
+ (r == 0 && c == 0)) {
+ this.modules[row + r][col + c] = true;
+ } else {
+ this.modules[row + r][col + c] = false;
+ }
+ }
+ }
+ }
+ }
+ },
+
+ setupTypeNumber: function(test) {
+
+ var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
+
+ for (var i = 0; i < 18; i++) {
+ var mod = (!test && ((bits >> i) & 1) == 1);
+ this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;
+ }
+
+ for (var i = 0; i < 18; i++) {
+ var mod = (!test && ((bits >> i) & 1) == 1);
+ this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;
+ }
+ },
+
+ setupTypeInfo: function(test, maskPattern) {
+
+ var data = (this.errorCorrectLevel << 3) | maskPattern;
+ var bits = QRUtil.getBCHTypeInfo(data);
+
+ // vertical
+ for (var i = 0; i < 15; i++) {
+
+ var mod = (!test && ((bits >> i) & 1) == 1);
+
+ if (i < 6) {
+ this.modules[i][8] = mod;
+ } else if (i < 8) {
+ this.modules[i + 1][8] = mod;
+ } else {
+ this.modules[this.moduleCount - 15 + i][8] = mod;
+ }
+ }
+
+ // horizontal
+ for (var i = 0; i < 15; i++) {
+
+ var mod = (!test && ((bits >> i) & 1) == 1);
+
+ if (i < 8) {
+ this.modules[8][this.moduleCount - i - 1] = mod;
+ } else if (i < 9) {
+ this.modules[8][15 - i - 1 + 1] = mod;
+ } else {
+ this.modules[8][15 - i - 1] = mod;
+ }
+ }
+
+ // fixed module
+ this.modules[this.moduleCount - 8][8] = (!test);
+
+ },
+
+ mapData: function(data, maskPattern) {
+
+ var inc = -1;
+ var row = this.moduleCount - 1;
+ var bitIndex = 7;
+ var byteIndex = 0;
+
+ for (var col = this.moduleCount - 1; col > 0; col -= 2) {
+
+ if (col == 6) col--;
+
+ while (true) {
+
+ for (var c = 0; c < 2; c++) {
+
+ if (this.modules[row][col - c] == null) {
+
+ var dark = false;
+
+ if (byteIndex < data.length) {
+ dark = (((data[byteIndex] >>> bitIndex) & 1) == 1);
+ }
+
+ var mask = QRUtil.getMask(maskPattern, row, col - c);
+
+ if (mask) {
+ dark = !dark;
+ }
+
+ this.modules[row][col - c] = dark;
+ bitIndex--;
+
+ if (bitIndex == -1) {
+ byteIndex++;
+ bitIndex = 7;
+ }
+ }
+ }
+
+ row += inc;
+
+ if (row < 0 || this.moduleCount <= row) {
+ row -= inc;
+ inc = -inc;
+ break;
+ }
+ }
+ }
+
+ }
+
+ };
+
+ QRCode.PAD0 = 0xEC;
+ QRCode.PAD1 = 0x11;
+
+ QRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {
+
+ var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);
+
+ var buffer = new QRBitBuffer();
+
+ for (var i = 0; i < dataList.length; i++) {
+ var data = dataList[i];
+ buffer.put(data.mode, 4);
+ buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));
+ data.write(buffer);
+ }
+
+ // calc num max data.
+ var totalDataCount = 0;
+ for (var i = 0; i < rsBlocks.length; i++) {
+ totalDataCount += rsBlocks[i].dataCount;
+ }
+
+ if (buffer.getLengthInBits() > totalDataCount * 8) {
+ throw new Error("code length overflow. (" +
+ buffer.getLengthInBits() +
+ ">" +
+ totalDataCount * 8 +
+ ")");
+ }
+
+ // end code
+ if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {
+ buffer.put(0, 4);
+ }
+
+ // padding
+ while (buffer.getLengthInBits() % 8 != 0) {
+ buffer.putBit(false);
+ }
+
+ // padding
+ while (true) {
+
+ if (buffer.getLengthInBits() >= totalDataCount * 8) {
+ break;
+ }
+ buffer.put(QRCode.PAD0, 8);
+
+ if (buffer.getLengthInBits() >= totalDataCount * 8) {
+ break;
+ }
+ buffer.put(QRCode.PAD1, 8);
+ }
+
+ return QRCode.createBytes(buffer, rsBlocks);
+ }
+
+ QRCode.createBytes = function(buffer, rsBlocks) {
+
+ var offset = 0;
+
+ var maxDcCount = 0;
+ var maxEcCount = 0;
+
+ var dcdata = new Array(rsBlocks.length);
+ var ecdata = new Array(rsBlocks.length);
+
+ for (var r = 0; r < rsBlocks.length; r++) {
+
+ var dcCount = rsBlocks[r].dataCount;
+ var ecCount = rsBlocks[r].totalCount - dcCount;
+
+ maxDcCount = Math.max(maxDcCount, dcCount);
+ maxEcCount = Math.max(maxEcCount, ecCount);
+
+ dcdata[r] = new Array(dcCount);
+
+ for (var i = 0; i < dcdata[r].length; i++) {
+ dcdata[r][i] = 0xff & buffer.buffer[i + offset];
+ }
+ offset += dcCount;
+
+ var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
+ var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
+
+ var modPoly = rawPoly.mod(rsPoly);
+ ecdata[r] = new Array(rsPoly.getLength() - 1);
+ for (var i = 0; i < ecdata[r].length; i++) {
+ var modIndex = i + modPoly.getLength() - ecdata[r].length;
+ ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0;
+ }
+
+ }
+
+ var totalCodeCount = 0;
+ for (var i = 0; i < rsBlocks.length; i++) {
+ totalCodeCount += rsBlocks[i].totalCount;
+ }
+
+ var data = new Array(totalCodeCount);
+ var index = 0;
+
+ for (var i = 0; i < maxDcCount; i++) {
+ for (var r = 0; r < rsBlocks.length; r++) {
+ if (i < dcdata[r].length) {
+ data[index++] = dcdata[r][i];
+ }
+ }
+ }
+
+ for (var i = 0; i < maxEcCount; i++) {
+ for (var r = 0; r < rsBlocks.length; r++) {
+ if (i < ecdata[r].length) {
+ data[index++] = ecdata[r][i];
+ }
+ }
+ }
+
+ return data;
+
+ }
+
+ //---------------------------------------------------------------------
+ // QRMode
+ //---------------------------------------------------------------------
+
+ var QRMode = {
+ MODE_NUMBER: 1 << 0,
+ MODE_ALPHA_NUM: 1 << 1,
+ MODE_8BIT_BYTE: 1 << 2,
+ MODE_KANJI: 1 << 3
+ };
+
+ //---------------------------------------------------------------------
+ // QRErrorCorrectLevel
+ //---------------------------------------------------------------------
+
+ var QRErrorCorrectLevel = {
+ L: 1,
+ M: 0,
+ Q: 3,
+ H: 2
+ };
+
+ //---------------------------------------------------------------------
+ // QRMaskPattern
+ //---------------------------------------------------------------------
+
+ var QRMaskPattern = {
+ PATTERN000: 0,
+ PATTERN001: 1,
+ PATTERN010: 2,
+ PATTERN011: 3,
+ PATTERN100: 4,
+ PATTERN101: 5,
+ PATTERN110: 6,
+ PATTERN111: 7
+ };
+
+ //---------------------------------------------------------------------
+ // QRUtil
+ //---------------------------------------------------------------------
+
+ var QRUtil = {
+
+ PATTERN_POSITION_TABLE: [
+ [],
+ [6, 18],
+ [6, 22],
+ [6, 26],
+ [6, 30],
+ [6, 34],
+ [6, 22, 38],
+ [6, 24, 42],
+ [6, 26, 46],
+ [6, 28, 50],
+ [6, 30, 54],
+ [6, 32, 58],
+ [6, 34, 62],
+ [6, 26, 46, 66],
+ [6, 26, 48, 70],
+ [6, 26, 50, 74],
+ [6, 30, 54, 78],
+ [6, 30, 56, 82],
+ [6, 30, 58, 86],
+ [6, 34, 62, 90],
+ [6, 28, 50, 72, 94],
+ [6, 26, 50, 74, 98],
+ [6, 30, 54, 78, 102],
+ [6, 28, 54, 80, 106],
+ [6, 32, 58, 84, 110],
+ [6, 30, 58, 86, 114],
+ [6, 34, 62, 90, 118],
+ [6, 26, 50, 74, 98, 122],
+ [6, 30, 54, 78, 102, 126],
+ [6, 26, 52, 78, 104, 130],
+ [6, 30, 56, 82, 108, 134],
+ [6, 34, 60, 86, 112, 138],
+ [6, 30, 58, 86, 114, 142],
+ [6, 34, 62, 90, 118, 146],
+ [6, 30, 54, 78, 102, 126, 150],
+ [6, 24, 50, 76, 102, 128, 154],
+ [6, 28, 54, 80, 106, 132, 158],
+ [6, 32, 58, 84, 110, 136, 162],
+ [6, 26, 54, 82, 110, 138, 166],
+ [6, 30, 58, 86, 114, 142, 170]
+ ],
+
+ G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),
+ G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),
+ G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1),
+
+ getBCHTypeInfo: function(data) {
+ var d = data << 10;
+ while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {
+ d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15)));
+ }
+ return ((data << 10) | d) ^ QRUtil.G15_MASK;
+ },
+
+ getBCHTypeNumber: function(data) {
+ var d = data << 12;
+ while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {
+ d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18)));
+ }
+ return (data << 12) | d;
+ },
+
+ getBCHDigit: function(data) {
+
+ var digit = 0;
+
+ while (data != 0) {
+ digit++;
+ data >>>= 1;
+ }
+
+ return digit;
+ },
+
+ getPatternPosition: function(typeNumber) {
+ return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
+ },
+
+ getMask: function(maskPattern, i, j) {
+
+ switch (maskPattern) {
+
+ case QRMaskPattern.PATTERN000:
+ return (i + j) % 2 == 0;
+ case QRMaskPattern.PATTERN001:
+ return i % 2 == 0;
+ case QRMaskPattern.PATTERN010:
+ return j % 3 == 0;
+ case QRMaskPattern.PATTERN011:
+ return (i + j) % 3 == 0;
+ case QRMaskPattern.PATTERN100:
+ return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
+ case QRMaskPattern.PATTERN101:
+ return (i * j) % 2 + (i * j) % 3 == 0;
+ case QRMaskPattern.PATTERN110:
+ return ((i * j) % 2 + (i * j) % 3) % 2 == 0;
+ case QRMaskPattern.PATTERN111:
+ return ((i * j) % 3 + (i + j) % 2) % 2 == 0;
+
+ default:
+ throw new Error("bad maskPattern:" + maskPattern);
+ }
+ },
+
+ getErrorCorrectPolynomial: function(errorCorrectLength) {
+
+ var a = new QRPolynomial([1], 0);
+
+ for (var i = 0; i < errorCorrectLength; i++) {
+ a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
+ }
+
+ return a;
+ },
+
+ getLengthInBits: function(mode, type) {
+
+ if (1 <= type && type < 10) {
+
+ // 1 - 9
+
+ switch (mode) {
+ case QRMode.MODE_NUMBER:
+ return 10;
+ case QRMode.MODE_ALPHA_NUM:
+ return 9;
+ case QRMode.MODE_8BIT_BYTE:
+ return 8;
+ case QRMode.MODE_KANJI:
+ return 8;
+ default:
+ throw new Error("mode:" + mode);
+ }
+
+ } else if (type < 27) {
+
+ // 10 - 26
+
+ switch (mode) {
+ case QRMode.MODE_NUMBER:
+ return 12;
+ case QRMode.MODE_ALPHA_NUM:
+ return 11;
+ case QRMode.MODE_8BIT_BYTE:
+ return 16;
+ case QRMode.MODE_KANJI:
+ return 10;
+ default:
+ throw new Error("mode:" + mode);
+ }
+
+ } else if (type < 41) {
+
+ // 27 - 40
+
+ switch (mode) {
+ case QRMode.MODE_NUMBER:
+ return 14;
+ case QRMode.MODE_ALPHA_NUM:
+ return 13;
+ case QRMode.MODE_8BIT_BYTE:
+ return 16;
+ case QRMode.MODE_KANJI:
+ return 12;
+ default:
+ throw new Error("mode:" + mode);
+ }
+
+ } else {
+ throw new Error("type:" + type);
+ }
+ },
+
+ getLostPoint: function(qrCode) {
+
+ var moduleCount = qrCode.getModuleCount();
+
+ var lostPoint = 0;
+
+ // LEVEL1
+
+ for (var row = 0; row < moduleCount; row++) {
+
+ for (var col = 0; col < moduleCount; col++) {
+
+ var sameCount = 0;
+ var dark = qrCode.isDark(row, col);
+
+ for (var r = -1; r <= 1; r++) {
+
+ if (row + r < 0 || moduleCount <= row + r) {
+ continue;
+ }
+
+ for (var c = -1; c <= 1; c++) {
+
+ if (col + c < 0 || moduleCount <= col + c) {
+ continue;
+ }
+
+ if (r == 0 && c == 0) {
+ continue;
+ }
+
+ if (dark == qrCode.isDark(row + r, col + c)) {
+ sameCount++;
+ }
+ }
+ }
+
+ if (sameCount > 5) {
+ lostPoint += (3 + sameCount - 5);
+ }
+ }
+ }
+
+ // LEVEL2
+
+ for (var row = 0; row < moduleCount - 1; row++) {
+ for (var col = 0; col < moduleCount - 1; col++) {
+ var count = 0;
+ if (qrCode.isDark(row, col)) count++;
+ if (qrCode.isDark(row + 1, col)) count++;
+ if (qrCode.isDark(row, col + 1)) count++;
+ if (qrCode.isDark(row + 1, col + 1)) count++;
+ if (count == 0 || count == 4) {
+ lostPoint += 3;
+ }
+ }
+ }
+
+ // LEVEL3
+
+ for (var row = 0; row < moduleCount; row++) {
+ for (var col = 0; col < moduleCount - 6; col++) {
+ if (qrCode.isDark(row, col) &&
+ !qrCode.isDark(row, col + 1) &&
+ qrCode.isDark(row, col + 2) &&
+ qrCode.isDark(row, col + 3) &&
+ qrCode.isDark(row, col + 4) &&
+ !qrCode.isDark(row, col + 5) &&
+ qrCode.isDark(row, col + 6)) {
+ lostPoint += 40;
+ }
+ }
+ }
+
+ for (var col = 0; col < moduleCount; col++) {
+ for (var row = 0; row < moduleCount - 6; row++) {
+ if (qrCode.isDark(row, col) &&
+ !qrCode.isDark(row + 1, col) &&
+ qrCode.isDark(row + 2, col) &&
+ qrCode.isDark(row + 3, col) &&
+ qrCode.isDark(row + 4, col) &&
+ !qrCode.isDark(row + 5, col) &&
+ qrCode.isDark(row + 6, col)) {
+ lostPoint += 40;
+ }
+ }
+ }
+
+ // LEVEL4
+
+ var darkCount = 0;
+
+ for (var col = 0; col < moduleCount; col++) {
+ for (var row = 0; row < moduleCount; row++) {
+ if (qrCode.isDark(row, col)) {
+ darkCount++;
+ }
+ }
+ }
+
+ var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;
+ lostPoint += ratio * 10;
+
+ return lostPoint;
+ }
+
+ };
+
+
+ //---------------------------------------------------------------------
+ // QRMath
+ //---------------------------------------------------------------------
+
+ var QRMath = {
+
+ glog: function(n) {
+
+ if (n < 1) {
+ throw new Error("glog(" + n + ")");
+ }
+
+ return QRMath.LOG_TABLE[n];
+ },
+
+ gexp: function(n) {
+
+ while (n < 0) {
+ n += 255;
+ }
+
+ while (n >= 256) {
+ n -= 255;
+ }
+
+ return QRMath.EXP_TABLE[n];
+ },
+
+ EXP_TABLE: new Array(256),
+
+ LOG_TABLE: new Array(256)
+
+ };
+
+ for (var i = 0; i < 8; i++) {
+ QRMath.EXP_TABLE[i] = 1 << i;
+ }
+ for (var i = 8; i < 256; i++) {
+ QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^
+ QRMath.EXP_TABLE[i - 5] ^
+ QRMath.EXP_TABLE[i - 6] ^
+ QRMath.EXP_TABLE[i - 8];
+ }
+ for (var i = 0; i < 255; i++) {
+ QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
+ }
+
+ //---------------------------------------------------------------------
+ // QRPolynomial
+ //---------------------------------------------------------------------
+
+ function QRPolynomial(num, shift) {
+
+ if (num.length == undefined) {
+ throw new Error(num.length + "/" + shift);
+ }
+
+ var offset = 0;
+
+ while (offset < num.length && num[offset] == 0) {
+ offset++;
+ }
+
+ this.num = new Array(num.length - offset + shift);
+ for (var i = 0; i < num.length - offset; i++) {
+ this.num[i] = num[i + offset];
+ }
+ }
+
+ QRPolynomial.prototype = {
+
+ get: function(index) {
+ return this.num[index];
+ },
+
+ getLength: function() {
+ return this.num.length;
+ },
+
+ multiply: function(e) {
+
+ var num = new Array(this.getLength() + e.getLength() - 1);
+
+ for (var i = 0; i < this.getLength(); i++) {
+ for (var j = 0; j < e.getLength(); j++) {
+ num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));
+ }
+ }
+
+ return new QRPolynomial(num, 0);
+ },
+
+ mod: function(e) {
+
+ if (this.getLength() - e.getLength() < 0) {
+ return this;
+ }
+
+ var ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));
+
+ var num = new Array(this.getLength());
+
+ for (var i = 0; i < this.getLength(); i++) {
+ num[i] = this.get(i);
+ }
+
+ for (var i = 0; i < e.getLength(); i++) {
+ num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio);
+ }
+
+ // recursive call
+ return new QRPolynomial(num, 0).mod(e);
+ }
+ };
+
+ //---------------------------------------------------------------------
+ // QRRSBlock
+ //---------------------------------------------------------------------
+
+ function QRRSBlock(totalCount, dataCount) {
+ this.totalCount = totalCount;
+ this.dataCount = dataCount;
+ }
+
+ QRRSBlock.RS_BLOCK_TABLE = [
+
+ // L
+ // M
+ // Q
+ // H
+
+ // 1
+ [1, 26, 19],
+ [1, 26, 16],
+ [1, 26, 13],
+ [1, 26, 9],
+
+ // 2
+ [1, 44, 34],
+ [1, 44, 28],
+ [1, 44, 22],
+ [1, 44, 16],
+
+ // 3
+ [1, 70, 55],
+ [1, 70, 44],
+ [2, 35, 17],
+ [2, 35, 13],
+
+ // 4
+ [1, 100, 80],
+ [2, 50, 32],
+ [2, 50, 24],
+ [4, 25, 9],
+
+ // 5
+ [1, 134, 108],
+ [2, 67, 43],
+ [2, 33, 15, 2, 34, 16],
+ [2, 33, 11, 2, 34, 12],
+
+ // 6
+ [2, 86, 68],
+ [4, 43, 27],
+ [4, 43, 19],
+ [4, 43, 15],
+
+ // 7
+ [2, 98, 78],
+ [4, 49, 31],
+ [2, 32, 14, 4, 33, 15],
+ [4, 39, 13, 1, 40, 14],
+
+ // 8
+ [2, 121, 97],
+ [2, 60, 38, 2, 61, 39],
+ [4, 40, 18, 2, 41, 19],
+ [4, 40, 14, 2, 41, 15],
+
+ // 9
+ [2, 146, 116],
+ [3, 58, 36, 2, 59, 37],
+ [4, 36, 16, 4, 37, 17],
+ [4, 36, 12, 4, 37, 13],
+
+ // 10
+ [2, 86, 68, 2, 87, 69],
+ [4, 69, 43, 1, 70, 44],
+ [6, 43, 19, 2, 44, 20],
+ [6, 43, 15, 2, 44, 16],
+
+ // 11
+ [4, 101, 81],
+ [1, 80, 50, 4, 81, 51],
+ [4, 50, 22, 4, 51, 23],
+ [3, 36, 12, 8, 37, 13],
+
+ // 12
+ [2, 116, 92, 2, 117, 93],
+ [6, 58, 36, 2, 59, 37],
+ [4, 46, 20, 6, 47, 21],
+ [7, 42, 14, 4, 43, 15],
+
+ // 13
+ [4, 133, 107],
+ [8, 59, 37, 1, 60, 38],
+ [8, 44, 20, 4, 45, 21],
+ [12, 33, 11, 4, 34, 12],
+
+ // 14
+ [3, 145, 115, 1, 146, 116],
+ [4, 64, 40, 5, 65, 41],
+ [11, 36, 16, 5, 37, 17],
+ [11, 36, 12, 5, 37, 13],
+
+ // 15
+ [5, 109, 87, 1, 110, 88],
+ [5, 65, 41, 5, 66, 42],
+ [5, 54, 24, 7, 55, 25],
+ [11, 36, 12],
+
+ // 16
+ [5, 122, 98, 1, 123, 99],
+ [7, 73, 45, 3, 74, 46],
+ [15, 43, 19, 2, 44, 20],
+ [3, 45, 15, 13, 46, 16],
+
+ // 17
+ [1, 135, 107, 5, 136, 108],
+ [10, 74, 46, 1, 75, 47],
+ [1, 50, 22, 15, 51, 23],
+ [2, 42, 14, 17, 43, 15],
+
+ // 18
+ [5, 150, 120, 1, 151, 121],
+ [9, 69, 43, 4, 70, 44],
+ [17, 50, 22, 1, 51, 23],
+ [2, 42, 14, 19, 43, 15],
+
+ // 19
+ [3, 141, 113, 4, 142, 114],
+ [3, 70, 44, 11, 71, 45],
+ [17, 47, 21, 4, 48, 22],
+ [9, 39, 13, 16, 40, 14],
+
+ // 20
+ [3, 135, 107, 5, 136, 108],
+ [3, 67, 41, 13, 68, 42],
+ [15, 54, 24, 5, 55, 25],
+ [15, 43, 15, 10, 44, 16],
+
+ // 21
+ [4, 144, 116, 4, 145, 117],
+ [17, 68, 42],
+ [17, 50, 22, 6, 51, 23],
+ [19, 46, 16, 6, 47, 17],
+
+ // 22
+ [2, 139, 111, 7, 140, 112],
+ [17, 74, 46],
+ [7, 54, 24, 16, 55, 25],
+ [34, 37, 13],
+
+ // 23
+ [4, 151, 121, 5, 152, 122],
+ [4, 75, 47, 14, 76, 48],
+ [11, 54, 24, 14, 55, 25],
+ [16, 45, 15, 14, 46, 16],
+
+ // 24
+ [6, 147, 117, 4, 148, 118],
+ [6, 73, 45, 14, 74, 46],
+ [11, 54, 24, 16, 55, 25],
+ [30, 46, 16, 2, 47, 17],
+
+ // 25
+ [8, 132, 106, 4, 133, 107],
+ [8, 75, 47, 13, 76, 48],
+ [7, 54, 24, 22, 55, 25],
+ [22, 45, 15, 13, 46, 16],
+
+ // 26
+ [10, 142, 114, 2, 143, 115],
+ [19, 74, 46, 4, 75, 47],
+ [28, 50, 22, 6, 51, 23],
+ [33, 46, 16, 4, 47, 17],
+
+ // 27
+ [8, 152, 122, 4, 153, 123],
+ [22, 73, 45, 3, 74, 46],
+ [8, 53, 23, 26, 54, 24],
+ [12, 45, 15, 28, 46, 16],
+
+ // 28
+ [3, 147, 117, 10, 148, 118],
+ [3, 73, 45, 23, 74, 46],
+ [4, 54, 24, 31, 55, 25],
+ [11, 45, 15, 31, 46, 16],
+
+ // 29
+ [7, 146, 116, 7, 147, 117],
+ [21, 73, 45, 7, 74, 46],
+ [1, 53, 23, 37, 54, 24],
+ [19, 45, 15, 26, 46, 16],
+
+ // 30
+ [5, 145, 115, 10, 146, 116],
+ [19, 75, 47, 10, 76, 48],
+ [15, 54, 24, 25, 55, 25],
+ [23, 45, 15, 25, 46, 16],
+
+ // 31
+ [13, 145, 115, 3, 146, 116],
+ [2, 74, 46, 29, 75, 47],
+ [42, 54, 24, 1, 55, 25],
+ [23, 45, 15, 28, 46, 16],
+
+ // 32
+ [17, 145, 115],
+ [10, 74, 46, 23, 75, 47],
+ [10, 54, 24, 35, 55, 25],
+ [19, 45, 15, 35, 46, 16],
+
+ // 33
+ [17, 145, 115, 1, 146, 116],
+ [14, 74, 46, 21, 75, 47],
+ [29, 54, 24, 19, 55, 25],
+ [11, 45, 15, 46, 46, 16],
+
+ // 34
+ [13, 145, 115, 6, 146, 116],
+ [14, 74, 46, 23, 75, 47],
+ [44, 54, 24, 7, 55, 25],
+ [59, 46, 16, 1, 47, 17],
+
+ // 35
+ [12, 151, 121, 7, 152, 122],
+ [12, 75, 47, 26, 76, 48],
+ [39, 54, 24, 14, 55, 25],
+ [22, 45, 15, 41, 46, 16],
+
+ // 36
+ [6, 151, 121, 14, 152, 122],
+ [6, 75, 47, 34, 76, 48],
+ [46, 54, 24, 10, 55, 25],
+ [2, 45, 15, 64, 46, 16],
+
+ // 37
+ [17, 152, 122, 4, 153, 123],
+ [29, 74, 46, 14, 75, 47],
+ [49, 54, 24, 10, 55, 25],
+ [24, 45, 15, 46, 46, 16],
+
+ // 38
+ [4, 152, 122, 18, 153, 123],
+ [13, 74, 46, 32, 75, 47],
+ [48, 54, 24, 14, 55, 25],
+ [42, 45, 15, 32, 46, 16],
+
+ // 39
+ [20, 147, 117, 4, 148, 118],
+ [40, 75, 47, 7, 76, 48],
+ [43, 54, 24, 22, 55, 25],
+ [10, 45, 15, 67, 46, 16],
+
+ // 40
+ [19, 148, 118, 6, 149, 119],
+ [18, 75, 47, 31, 76, 48],
+ [34, 54, 24, 34, 55, 25],
+ [20, 45, 15, 61, 46, 16]
+ ];
+
+ QRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {
+
+ var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);
+
+ if (rsBlock == undefined) {
+ throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel);
+ }
+
+ var length = rsBlock.length / 3;
+
+ var list = new Array();
+
+ for (var i = 0; i < length; i++) {
+
+ var count = rsBlock[i * 3 + 0];
+ var totalCount = rsBlock[i * 3 + 1];
+ var dataCount = rsBlock[i * 3 + 2];
+
+ for (var j = 0; j < count; j++) {
+ list.push(new QRRSBlock(totalCount, dataCount));
+ }
+ }
+
+ return list;
+ }
+
+ QRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {
+
+ switch (errorCorrectLevel) {
+ case QRErrorCorrectLevel.L:
+ return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];
+ case QRErrorCorrectLevel.M:
+ return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];
+ case QRErrorCorrectLevel.Q:
+ return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];
+ case QRErrorCorrectLevel.H:
+ return QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];
+ default:
+ return undefined;
+ }
+ }
+
+ //---------------------------------------------------------------------
+ // QRBitBuffer
+ //---------------------------------------------------------------------
+
+ function QRBitBuffer() {
+ this.buffer = new Array();
+ this.length = 0;
+ }
+
+ QRBitBuffer.prototype = {
+
+ get: function(index) {
+ var bufIndex = Math.floor(index / 8);
+ return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) == 1;
+ },
+
+ put: function(num, length) {
+ for (var i = 0; i < length; i++) {
+ this.putBit(((num >>> (length - i - 1)) & 1) == 1);
+ }
+ },
+
+ getLengthInBits: function() {
+ return this.length;
+ },
+
+ putBit: function(bit) {
+
+ var bufIndex = Math.floor(this.length / 8);
+ if (this.buffer.length <= bufIndex) {
+ this.buffer.push(0);
+ }
+
+ if (bit) {
+ this.buffer[bufIndex] |= (0x80 >>> (this.length % 8));
+ }
+
+ this.length++;
+ }
+ };
+
+ //---------------------------------------------------------------------
+ // Support Chinese
+ //---------------------------------------------------------------------
+ function utf16To8(text) {
+ var result = '';
+ var c;
+ for (var i = 0; i < text.length; i++) {
+ c = text.charCodeAt(i);
+ if (c >= 0x0001 && c <= 0x007F) {
+ result += text.charAt(i);
+ } else if (c > 0x07FF) {
+ result += String.fromCharCode(0xE0 | c >> 12 & 0x0F);
+ result += String.fromCharCode(0x80 | c >> 6 & 0x3F);
+ result += String.fromCharCode(0x80 | c >> 0 & 0x3F);
+ } else {
+ result += String.fromCharCode(0xC0 | c >> 6 & 0x1F);
+ result += String.fromCharCode(0x80 | c >> 0 & 0x3F);
+ }
+ }
+ return result;
+ }
+
+ uQRCode = {
+
+ errorCorrectLevel: QRErrorCorrectLevel,
+
+ defaults: {
+ size: 354,
+ margin: 0,
+ backgroundColor: '#ffffff',
+ foregroundColor: '#000000',
+ fileType: 'png', // 'jpg', 'png'
+ errorCorrectLevel: QRErrorCorrectLevel.H,
+ typeNumber: -1
+ },
+
+ make: function(options) {
+ var defaultOptions = {
+ canvasId: options.canvasId,
+ componentInstance: options.componentInstance,
+ text: options.text,
+ size: this.defaults.size,
+ margin: this.defaults.margin,
+ backgroundColor: this.defaults.backgroundColor,
+ foregroundColor: this.defaults.foregroundColor,
+ fileType: this.defaults.fileType,
+ errorCorrectLevel: this.defaults.errorCorrectLevel,
+ typeNumber: this.defaults.typeNumber
+ };
+ if (options) {
+ for (var i in options) {
+ defaultOptions[i] = options[i];
+ }
+ }
+ options = defaultOptions;
+ if (!options.canvasId) {
+ console.error('uQRCode: Please set canvasId!');
+ return;
+ }
+
+ function createCanvas() {
+ var qrcode = new QRCode(options.typeNumber, options.errorCorrectLevel);
+ qrcode.addData(utf16To8(options.text));
+ qrcode.make();
+
+ var ctx = uni.createCanvasContext(options.canvasId, options.componentInstance);
+ ctx.setFillStyle(options.backgroundColor);
+ ctx.fillRect(0, 0, options.size, options.size);
+
+ var tileW = (options.size - options.margin * 2) / qrcode.getModuleCount();
+ var tileH = tileW;
+
+ for (var row = 0; row < qrcode.getModuleCount(); row++) {
+ for (var col = 0; col < qrcode.getModuleCount(); col++) {
+ var style = qrcode.isDark(row, col) ? options.foregroundColor : options.backgroundColor;
+ ctx.setFillStyle(style);
+ var x = Math.round(col * tileW) + options.margin;
+ var y = Math.round(row * tileH) + options.margin;
+ var w = Math.ceil((col + 1) * tileW) - Math.floor(col * tileW);
+ var h = Math.ceil((row + 1) * tileW) - Math.floor(row * tileW);
+ ctx.fillRect(x, y, w, h);
+ }
+ }
+
+ setTimeout(function() {
+ ctx.draw(false, (function() {
+ setTimeout(function() {
+ uni.canvasToTempFilePath({
+ canvasId: options.canvasId,
+ fileType: options.fileType,
+ width: options.size,
+ height: options.size,
+ destWidth: options.size,
+ destHeight: options.size,
+ success: function(res) {
+ options.success && options.success(res.tempFilePath);
+ },
+ fail: function(error) {
+ options.fail && options.fail(error);
+ },
+ complete: function(res) {
+ options.complete && options.complete(res);
+ }
+ }, options.componentInstance);
+ }, options.text.length + 100);
+ })());
+ }, 150);
+ }
+
+ createCanvas();
+ }
+
+ }
+
+})()
+
+export default uQRCode
diff --git a/common/utils.js b/common/utils.js
new file mode 100644
index 00000000..11276b2c
--- /dev/null
+++ b/common/utils.js
@@ -0,0 +1,57 @@
+export function getDeviceUUID() {
+ let deviceId = uni.getStorageSync('uni_deviceId') ||
+ uni.getSystemInfoSync().deviceId ||
+ uni.getSystemInfoSync().system + '_' + Math.random().toString(36).substr(2);
+
+ uni.setStorageSync('uni_deviceId', deviceId)
+ return deviceId;
+}
+export function friendlyDate(timestamp) {
+ var formats = {
+ 'year': '%n% 年前',
+ 'month': '%n% 月前',
+ 'day': '%n% 天前',
+ 'hour': '%n% 小时前',
+ 'minute': '%n% 分钟前',
+ 'second': '%n% 秒前',
+ };
+
+ var now = Date.now();
+ var seconds = Math.floor((now - timestamp) / 1000);
+ var minutes = Math.floor(seconds / 60);
+ var hours = Math.floor(minutes / 60);
+ var days = Math.floor(hours / 24);
+ var months = Math.floor(days / 30);
+ var years = Math.floor(months / 12);
+
+ var diffType = '';
+ var diffValue = 0;
+ if (years > 0) {
+ diffType = 'year';
+ diffValue = years;
+ } else {
+ if (months > 0) {
+ diffType = 'month';
+ diffValue = months;
+ } else {
+ if (days > 0) {
+ diffType = 'day';
+ diffValue = days;
+ } else {
+ if (hours > 0) {
+ diffType = 'hour';
+ diffValue = hours;
+ } else {
+ if (minutes > 0) {
+ diffType = 'minute';
+ diffValue = minutes;
+ } else {
+ diffType = 'second';
+ diffValue = seconds === 0 ? (seconds = 1) : seconds;
+ }
+ }
+ }
+ }
+ }
+ return formats[diffType].replace('%n%', diffValue);
+}
\ No newline at end of file
diff --git a/components/m-icon/m-icon.css b/components/m-icon/m-icon.css
new file mode 100644
index 00000000..438151e0
--- /dev/null
+++ b/components/m-icon/m-icon.css
@@ -0,0 +1,378 @@
+@font-face {
+ font-family: uniicons;
+ font-weight: normal;
+ font-style: normal;
+ src: url('/static/uni.ttf') format('truetype');
+}
+
+.m-icon {
+ font-family: uniicons;
+ /* font-size: 24px; */
+ margin-left: 20px;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ display: inline-block;
+ text-decoration: none;
+ -webkit-font-smoothing: antialiased;
+}
+
+.m-icon.uni-active {
+ color: #007aff;
+}
+
+.m-icon-contact:before {
+ content: '\e100';
+}
+
+.m-icon-person:before {
+ content: '\e101';
+}
+
+.m-icon-personadd:before {
+ content: '\e102';
+}
+
+.m-icon-contact-filled:before {
+ content: '\e130';
+}
+
+.m-icon-person-filled:before {
+ content: '\e131';
+}
+
+.m-icon-personadd-filled:before {
+ content: '\e132';
+}
+
+.m-icon-phone:before {
+ content: '\e200';
+}
+
+.m-icon-email:before {
+ content: '\e201';
+}
+
+.m-icon-chatbubble:before {
+ content: '\e202';
+}
+
+.m-icon-chatboxes:before {
+ content: '\e203';
+}
+
+.m-icon-phone-filled:before {
+ content: '\e230';
+}
+
+.m-icon-email-filled:before {
+ content: '\e231';
+}
+
+.m-icon-chatbubble-filled:before {
+ content: '\e232';
+}
+
+.m-icon-chatboxes-filled:before {
+ content: '\e233';
+}
+
+.m-icon-weibo:before {
+ content: '\e260';
+}
+
+.m-icon-weixin:before {
+ content: '\e261';
+}
+
+.m-icon-pengyouquan:before {
+ content: '\e262';
+}
+
+.m-icon-chat:before {
+ content: '\e263';
+}
+
+.m-icon-qq:before {
+ content: '\e264';
+}
+
+.m-icon-videocam:before {
+ content: '\e300';
+}
+
+.m-icon-camera:before {
+ content: '\e301';
+}
+
+.m-icon-mic:before {
+ content: '\e302';
+}
+
+.m-icon-location:before {
+ content: '\e303';
+}
+
+.m-icon-mic-filled:before,
+.m-icon-speech:before {
+ content: '\e332';
+}
+
+.m-icon-location-filled:before {
+ content: '\e333';
+}
+
+.m-icon-micoff:before {
+ content: '\e360';
+}
+
+.m-icon-image:before {
+ content: '\e363';
+}
+
+.m-icon-map:before {
+ content: '\e364';
+}
+
+.m-icon-compose:before {
+ content: '\e400';
+}
+
+.m-icon-trash:before {
+ content: '\e401';
+}
+
+.m-icon-upload:before {
+ content: '\e402';
+}
+
+.m-icon-download:before {
+ content: '\e403';
+}
+
+.m-icon-close:before {
+ content: '\e404';
+}
+
+.m-icon-redo:before {
+ content: '\e405';
+}
+
+.m-icon-undo:before {
+ content: '\e406';
+}
+
+.m-icon-refresh:before {
+ content: '\e407';
+}
+
+.m-icon-star:before {
+ content: '\e408';
+}
+
+.m-icon-plus:before {
+ content: '\e409';
+}
+
+.m-icon-minus:before {
+ content: '\e410';
+}
+
+.m-icon-circle:before,
+.m-icon-checkbox:before {
+ content: '\e411';
+}
+
+.m-icon-close-filled:before,
+.m-icon-clear:before {
+ content: '\e434';
+}
+
+.m-icon-refresh-filled:before {
+ content: '\e437';
+}
+
+.m-icon-star-filled:before {
+ content: '\e438';
+}
+
+.m-icon-plus-filled:before {
+ content: '\e439';
+}
+
+.m-icon-minus-filled:before {
+ content: '\e440';
+}
+
+.m-icon-circle-filled:before {
+ content: '\e441';
+}
+
+.m-icon-checkbox-filled:before {
+ content: '\e442';
+}
+
+.m-icon-closeempty:before {
+ content: '\e460';
+}
+
+.m-icon-refreshempty:before {
+ content: '\e461';
+}
+
+.m-icon-reload:before {
+ content: '\e462';
+}
+
+.m-icon-starhalf:before {
+ content: '\e463';
+}
+
+.m-icon-spinner:before {
+ content: '\e464';
+}
+
+.m-icon-spinner-cycle:before {
+ content: '\e465';
+}
+
+.m-icon-search:before {
+ content: '\e466';
+}
+
+.m-icon-plusempty:before {
+ content: '\e468';
+}
+
+.m-icon-forward:before {
+ content: '\e470';
+}
+
+.m-icon-back:before,
+.m-icon-left-nav:before {
+ content: '\e471';
+}
+
+.m-icon-checkmarkempty:before {
+ content: '\e472';
+}
+
+.m-icon-home:before {
+ content: '\e500';
+}
+
+.m-icon-navigate:before {
+ content: '\e501';
+}
+
+.m-icon-gear:before {
+ content: '\e502';
+}
+
+.m-icon-paperplane:before {
+ content: '\e503';
+}
+
+.m-icon-info:before {
+ content: '\e504';
+}
+
+.m-icon-help:before {
+ content: '\e505';
+}
+
+.m-icon-locked:before {
+ content: '\e506';
+}
+
+.m-icon-more:before {
+ content: '\e507';
+}
+
+.m-icon-flag:before {
+ content: '\e508';
+}
+
+.m-icon-home-filled:before {
+ content: '\e530';
+}
+
+.m-icon-gear-filled:before {
+ content: '\e532';
+}
+
+.m-icon-info-filled:before {
+ content: '\e534';
+}
+
+.m-icon-help-filled:before {
+ content: '\e535';
+}
+
+.m-icon-more-filled:before {
+ content: '\e537';
+}
+
+.m-icon-settings:before {
+ content: '\e560';
+}
+
+.m-icon-list:before {
+ content: '\e562';
+}
+
+.m-icon-bars:before {
+ content: '\e563';
+}
+
+.m-icon-loop:before {
+ content: '\e565';
+}
+
+.m-icon-paperclip:before {
+ content: '\e567';
+}
+
+.m-icon-eye:before {
+ content: '\e568';
+}
+
+.m-icon-arrowup:before {
+ content: '\e580';
+}
+
+.m-icon-arrowdown:before {
+ content: '\e581';
+}
+
+.m-icon-arrowleft:before {
+ content: '\e582';
+}
+
+.m-icon-arrowright:before {
+ content: '\e583';
+}
+
+.m-icon-arrowthinup:before {
+ content: '\e584';
+}
+
+.m-icon-arrowthindown:before {
+ content: '\e585';
+}
+
+.m-icon-arrowthinleft:before {
+ content: '\e586';
+}
+
+.m-icon-arrowthinright:before {
+ content: '\e587';
+}
+
+.m-icon-pulldown:before {
+ content: '\e588';
+}
+
+.m-icon-scan:before {
+ content: "\e612";
+}
diff --git a/components/m-icon/m-icon.vue b/components/m-icon/m-icon.vue
new file mode 100644
index 00000000..57cb1f73
--- /dev/null
+++ b/components/m-icon/m-icon.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+