From fb62116df8509999fe86a919ee5ae6a12333ee55 Mon Sep 17 00:00:00 2001
From: wxc <191104855@qq.com>
Date: Mon, 9 Jun 2025 15:07:38 +0800
Subject: [PATCH] first commit
---
.gitignore | 6 +
App.vue | 82 +
README.md | 129 ++
api/auth.js | 5 +
api/book.js | 5 +
api/comfort.js | 17 +
api/depart.js | 9 +
api/dict.js | 7 +
api/feedback.js | 5 +
api/file.js | 9 +
api/inspection.js | 17 +
api/negative.js | 13 +
api/photo.js | 9 +
api/police.js | 5 +
api/problemType.js | 5 +
api/request.js | 131 ++
api/selfexamination.js | 13 +
api/task.js | 13 +
api/taskProblem.js | 13 +
api/testingAlcohol.js | 13 +
changelog.md | 0
common/auth.js | 13 +
common/dict.js | 12 +
common/graceChecker.js | 97 +
common/html-parser.js | 352 ++++
common/permission.js | 209 ++
common/uni-nvue.css | 136 ++
common/uni.scss | 1685 +++++++++++++++++
common/util.js | 154 ++
components/empty.vue | 31 +
components/file-list.vue | 91 +
components/filter-radio.vue | 60 +
components/inspection-task-data-picker.vue | 134 ++
components/modal.vue | 110 ++
components/n-button.vue | 36 +
components/negative.vue | 420 ++++
components/net-image.vue | 30 +
components/police-picker.vue | 214 +++
components/problem-picker.vue | 21 +
components/skeleton.vue | 52 +
components/tabs.vue | 87 +
components/upload.vue | 182 ++
hybrid/html/local.html | 88 +
index.html | 22 +
jest.config.js | 11 +
main.js | 45 +
manifest.json | 200 ++
package.json | 81 +
pages.json | 215 +++
pages/books/index.vue | 121 ++
pages/center/about.vue | 31 +
pages/center/feedback.vue | 65 +
pages/center/manual.vue | 21 +
pages/comfort/action.vue | 176 ++
pages/comfort/add.vue | 513 +++++
pages/comfort/list.vue | 209 ++
pages/common/camera.nvue | 296 +++
pages/duty/index.vue | 92 +
pages/index/index.vue | 442 +++++
pages/negative/action.vue | 198 ++
pages/negative/index.vue | 226 +++
pages/negative/info.vue | 41 +
pages/photo/index.vue | 60 +
pages/task/index.vue | 392 ++++
pages/task/inspection/info.vue | 42 +
pages/task/inspection/list.vue | 131 ++
pages/task/problem/add.vue | 138 ++
pages/task/problem/index.vue | 89 +
pages/task/problem/list.vue | 201 ++
pages/task/selfexamination/add.vue | 106 ++
pages/task/selfexamination/index.vue | 85 +
pages/task/selfexamination/info.vue | 82 +
pages/task/selfexamination/list.vue | 193 ++
pages/task/testingAlcohol/add.vue | 193 ++
pages/task/testingAlcohol/info.vue | 104 +
pages/task/testingAlcohol/people.vue | 293 +++
platforms/app-plus/feedback/feedback.vue | 232 +++
.../app-plus/orientation/orientation.vue | 64 +
platforms/app-plus/proximity/proximity.vue | 69 +
platforms/app-plus/push/push.vue | 81 +
platforms/app-plus/shake/shake.vue | 106 ++
platforms/app-plus/speech/speech.vue | 105 +
static/camer.png | Bin 0 -> 7196 bytes
static/center-selected.png | Bin 0 -> 5614 bytes
static/center.png | Bin 0 -> 5851 bytes
static/customicons.css | 12 +
static/edit.png | Bin 0 -> 1085 bytes
static/empty.png | Bin 0 -> 3028 bytes
static/font/Pacifico-Regular.ttf | Bin 0 -> 315408 bytes
static/icon/doc.png | Bin 0 -> 6270 bytes
static/icon/ic_apply.png | Bin 0 -> 2910 bytes
static/icon/ic_book.png | Bin 0 -> 3085 bytes
static/icon/ic_c_app.png | Bin 0 -> 1549 bytes
static/icon/ic_c_book.png | Bin 0 -> 1209 bytes
static/icon/ic_c_message.png | Bin 0 -> 1384 bytes
static/icon/ic_camera.png | Bin 0 -> 3030 bytes
static/icon/ic_card.png | Bin 0 -> 3478 bytes
static/icon/ic_question.png | Bin 0 -> 2026 bytes
static/icon/ic_selfexamination.png | Bin 0 -> 3156 bytes
static/icon/ic_task.png | Bin 0 -> 2014 bytes
static/icon/ic_warning.png | Bin 0 -> 3318 bytes
static/icon/ic_wine.png | Bin 0 -> 1877 bytes
static/icon/iconfont.ttf | Bin 0 -> 1688 bytes
static/icon/mp3.png | Bin 0 -> 6181 bytes
static/icon/mp4.png | Bin 0 -> 5930 bytes
static/icon/pdf.png | Bin 0 -> 5479 bytes
static/icon/txt.png | Bin 0 -> 5585 bytes
static/icon/xls.png | Bin 0 -> 6066 bytes
static/iconfont.css | 32 +
static/icons/badge.png | Bin 0 -> 677 bytes
static/icons/button.png | Bin 0 -> 3465 bytes
static/icons/calendar.png | Bin 0 -> 735 bytes
static/icons/card.png | Bin 0 -> 429 bytes
static/icons/collapse.png | Bin 0 -> 802 bytes
static/icons/color.png | Bin 0 -> 4635 bytes
static/icons/combox.png | Bin 0 -> 828 bytes
static/icons/countdown.png | Bin 0 -> 1527 bytes
static/icons/data-checkbox.png | Bin 0 -> 1888 bytes
static/icons/data-picker.png | Bin 0 -> 588 bytes
static/icons/dateformat.png | Bin 0 -> 879 bytes
static/icons/datetime-picker.png | Bin 0 -> 1779 bytes
static/icons/drawer.png | Bin 0 -> 686 bytes
static/icons/easyinput.png | Bin 0 -> 465 bytes
static/icons/fab.png | Bin 0 -> 1303 bytes
static/icons/fav.png | Bin 0 -> 1480 bytes
static/icons/file-picker.png | Bin 0 -> 1017 bytes
static/icons/font.png | Bin 0 -> 3816 bytes
static/icons/forms.png | Bin 0 -> 801 bytes
static/icons/goods-nav.png | Bin 0 -> 902 bytes
static/icons/grid.png | Bin 0 -> 412 bytes
static/icons/group.png | Bin 0 -> 948 bytes
static/icons/iconfont.ttf | Bin 0 -> 1688 bytes
static/icons/icons.png | Bin 0 -> 1199 bytes
static/icons/indexed-list.png | Bin 0 -> 1620 bytes
static/icons/link.png | Bin 0 -> 1670 bytes
static/icons/list.png | Bin 0 -> 534 bytes
static/icons/load-more.png | Bin 0 -> 1342 bytes
static/icons/nav-bar.png | Bin 0 -> 716 bytes
static/icons/notice-bar.png | Bin 0 -> 981 bytes
static/icons/number-box.png | Bin 0 -> 455 bytes
static/icons/pagination.png | Bin 0 -> 943 bytes
static/icons/popup.png | Bin 0 -> 980 bytes
static/icons/radius.png | Bin 0 -> 1249 bytes
static/icons/rate.png | Bin 0 -> 1624 bytes
static/icons/row.png | Bin 0 -> 400 bytes
static/icons/search-bar.png | Bin 0 -> 1249 bytes
static/icons/section.png | Bin 0 -> 541 bytes
static/icons/segmented-control.png | Bin 0 -> 624 bytes
static/icons/space.png | Bin 0 -> 4175 bytes
static/icons/steps.png | Bin 0 -> 1203 bytes
static/icons/swipe-action.png | Bin 0 -> 1660 bytes
static/icons/swiper-dot.png | Bin 0 -> 1023 bytes
static/icons/tag.png | Bin 0 -> 569 bytes
static/icons/title.png | Bin 0 -> 364 bytes
static/icons/transition.png | Bin 0 -> 1415 bytes
static/image-resize-3.0.1.min.js | 1 +
static/image/1.png | Bin 0 -> 5000030 bytes
static/image/2.png | Bin 0 -> 3517261 bytes
static/image/carousel.png | Bin 0 -> 1559534 bytes
static/image/logo-p.png | Bin 0 -> 23038 bytes
static/image/logo.png | Bin 0 -> 20408 bytes
static/image/police-badge.png | Bin 0 -> 55334 bytes
static/index-selected.png | Bin 0 -> 4953 bytes
static/index.png | Bin 0 -> 5156 bytes
static/police.png | Bin 0 -> 3324 bytes
static/quill-1.3.7.min.js | 7 +
static/splash.9.png | Bin 0 -> 30533 bytes
static/splash.png | Bin 0 -> 69855 bytes
static/uni.ttf | Bin 0 -> 26164 bytes
store/index.js | 48 +
template.h5.html | 61 +
uni.scss | 76 +
uni_modules/uni-badge/changelog.md | 33 +
.../components/uni-badge/uni-badge.vue | 268 +++
uni_modules/uni-badge/package.json | 85 +
uni_modules/uni-badge/readme.md | 10 +
uni_modules/uni-breadcrumb/changelog.md | 6 +
.../uni-breadcrumb-item.vue | 121 ++
.../uni-breadcrumb/uni-breadcrumb.vue | 41 +
uni_modules/uni-breadcrumb/package.json | 85 +
uni_modules/uni-breadcrumb/readme.md | 66 +
uni_modules/uni-calendar/changelog.md | 30 +
.../components/uni-calendar/calendar.js | 544 ++++++
.../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 | 187 ++
.../components/uni-calendar/uni-calendar.vue | 567 ++++++
.../components/uni-calendar/util.js | 360 ++++
uni_modules/uni-calendar/package.json | 86 +
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 | 38 +
.../uni-collapse-item/uni-collapse-item.vue | 402 ++++
.../components/uni-collapse/uni-collapse.vue | 147 ++
uni_modules/uni-collapse/package.json | 86 +
uni_modules/uni-collapse/readme.md | 12 +
uni_modules/uni-combox/changelog.md | 17 +
.../components/uni-combox/uni-combox.vue | 284 +++
uni_modules/uni-combox/package.json | 88 +
uni_modules/uni-combox/readme.md | 11 +
uni_modules/uni-countdown/changelog.md | 28 +
.../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 | 276 +++
uni_modules/uni-countdown/package.json | 84 +
uni_modules/uni-countdown/readme.md | 10 +
uni_modules/uni-data-checkbox/changelog.md | 51 +
.../components/uni-data-checkbox/clientdb.js | 316 ++++
.../uni-data-checkbox/uni-data-checkbox.vue | 853 +++++++++
uni_modules/uni-data-checkbox/package.json | 87 +
uni_modules/uni-data-checkbox/readme.md | 18 +
uni_modules/uni-data-picker/changelog.md | 79 +
.../components/uni-data-picker/keypress.js | 45 +
.../uni-data-picker/uni-data-picker.uvue | 381 ++++
.../uni-data-picker/uni-data-picker.vue | 558 ++++++
.../uni-data-pickerview/loading.uts | 1 +
.../uni-data-pickerview/uni-data-picker.js | 622 ++++++
.../uni-data-pickerview/uni-data-picker.uts | 692 +++++++
.../uni-data-pickerview.css | 76 +
.../uni-data-pickerview.uvue | 69 +
.../uni-data-pickerview.vue | 323 ++++
uni_modules/uni-data-picker/package.json | 91 +
uni_modules/uni-data-picker/readme.md | 22 +
uni_modules/uni-data-select/changelog.md | 39 +
.../uni-data-select/uni-data-select.vue | 562 ++++++
uni_modules/uni-data-select/package.json | 86 +
uni_modules/uni-data-select/readme.md | 8 +
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 | 168 ++
.../uni-datetime-picker/calendar-item.vue | 177 ++
.../uni-datetime-picker/calendar.js | 546 ++++++
.../uni-datetime-picker/calendar.vue | 947 +++++++++
.../uni-datetime-picker/i18n/en.json | 22 +
.../uni-datetime-picker/i18n/index.js | 8 +
.../uni-datetime-picker/i18n/zh-Hans.json | 22 +
.../uni-datetime-picker/i18n/zh-Hant.json | 22 +
.../uni-datetime-picker/keypress.js | 45 +
.../uni-datetime-picker/time-picker.vue | 940 +++++++++
.../uni-datetime-picker.vue | 1064 +++++++++++
.../components/uni-datetime-picker/util.js | 421 ++++
uni_modules/uni-datetime-picker/package.json | 88 +
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 | 115 ++
.../components/uni-easyinput/common.js | 54 +
.../uni-easyinput/uni-easyinput.vue | 676 +++++++
uni_modules/uni-easyinput/package.json | 88 +
uni_modules/uni-easyinput/readme.md | 11 +
uni_modules/uni-fab/changelog.md | 25 +
.../uni-fab/components/uni-fab/uni-fab.vue | 491 +++++
.../components/uni-fab/uni-fab.vue.bak | 379 ++++
uni_modules/uni-fab/package.json | 85 +
uni_modules/uni-fab/readme.md | 9 +
uni_modules/uni-fav/changelog.md | 19 +
.../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 | 161 ++
uni_modules/uni-fav/package.json | 89 +
uni_modules/uni-fav/readme.md | 10 +
uni_modules/uni-file-picker/changelog.md | 81 +
.../uni-file-picker/choose-and-upload-file.js | 287 +++
.../uni-file-picker/uni-file-picker.vue | 668 +++++++
.../uni-file-picker/upload-file.vue | 325 ++++
.../uni-file-picker/upload-image.vue | 292 +++
.../components/uni-file-picker/utils.js | 110 ++
uni_modules/uni-file-picker/package.json | 84 +
uni_modules/uni-file-picker/readme.md | 11 +
uni_modules/uni-forms/changelog.md | 100 +
.../uni-forms-item/uni-forms-item.vue | 637 +++++++
.../components/uni-forms/uni-forms.vue | 404 ++++
.../uni-forms/components/uni-forms/utils.js | 293 +++
.../components/uni-forms/validate.js | 486 +++++
uni_modules/uni-forms/package.json | 89 +
uni_modules/uni-forms/readme.md | 23 +
uni_modules/uni-goods-nav/changelog.md | 18 +
.../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 | 229 +++
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 | 16 +
.../components/uni-group/uni-group.vue | 134 ++
uni_modules/uni-group/package.json | 87 +
uni_modules/uni-group/readme.md | 9 +
uni_modules/uni-icons/changelog.md | 42 +
.../uni-icons/components/uni-icons/icons.js | 1169 ++++++++++++
.../components/uni-icons/uni-icons.uvue | 91 +
.../components/uni-icons/uni-icons.vue | 110 ++
.../uni-icons/components/uni-icons/uni.ttf | Bin 0 -> 26164 bytes
.../components/uni-icons/uniicons.css | 664 +++++++
.../components/uni-icons/uniicons.ttf | Bin 0 -> 35824 bytes
.../components/uni-icons/uniicons_file.ts | 664 +++++++
.../components/uni-icons/uniicons_file_vue.js | 649 +++++++
uni_modules/uni-icons/package.json | 89 +
uni_modules/uni-icons/readme.md | 8 +
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-installApk/changelog.md | 10 +
uni_modules/uni-installApk/package.json | 93 +
uni_modules/uni-installApk/readme.md | 37 +
.../utssdk/app-android/AndroidManifest.xml | 5 +
.../utssdk/app-android/index.uts | 83 +
uni_modules/uni-installApk/utssdk/index.d.ts | 78 +
.../uni-installApk/utssdk/interface.uts | 76 +
.../uni-installApk/utssdk/unierror.uts | 25 +
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 | 48 +
.../components/uni-list-ad/uni-list-ad.vue | 107 ++
.../uni-list-chat/uni-list-chat.scss | 58 +
.../uni-list-chat/uni-list-chat.vue | 593 ++++++
.../uni-list-item/uni-list-item.vue | 534 ++++++
.../components/uni-list/uni-list - 副本.vue | 106 ++
.../uni-list/components/uni-list/uni-list.vue | 123 ++
.../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 | 46 +
uni_modules/uni-load-more/changelog.md | 25 +
.../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 | 404 ++++
uni_modules/uni-load-more/package.json | 84 +
uni_modules/uni-load-more/readme.md | 14 +
uni_modules/uni-nav-bar/changelog.md | 57 +
.../components/uni-nav-bar/uni-nav-bar.vue | 357 ++++
.../components/uni-nav-bar/uni-status-bar.vue | 30 +
uni_modules/uni-nav-bar/package.json | 87 +
uni_modules/uni-nav-bar/readme.md | 15 +
uni_modules/uni-notice-bar/changelog.md | 20 +
.../uni-notice-bar/uni-notice-bar.vue | 431 +++++
uni_modules/uni-notice-bar/package.json | 87 +
uni_modules/uni-notice-bar/readme.md | 13 +
uni_modules/uni-number-box/changelog.md | 39 +
.../uni-number-box/uni-number-box.vue | 232 +++
uni_modules/uni-number-box/package.json | 83 +
uni_modules/uni-number-box/readme.md | 13 +
uni_modules/uni-pagination/changelog.md | 27 +
.../components/uni-pagination/i18n/en.json | 5 +
.../components/uni-pagination/i18n/es.json | 5 +
.../components/uni-pagination/i18n/fr.json | 5 +
.../components/uni-pagination/i18n/index.js | 12 +
.../uni-pagination/i18n/zh-Hans.json | 5 +
.../uni-pagination/i18n/zh-Hant.json | 5 +
.../uni-pagination/uni-pagination.vue | 465 +++++
uni_modules/uni-pagination/package.json | 83 +
uni_modules/uni-pagination/readme.md | 11 +
uni_modules/uni-popup/changelog.md | 90 +
.../components/uni-popup-dialog/keypress.js | 45 +
.../uni-popup-dialog/uni-popup-dialog.vue | 316 ++++
.../uni-popup-message/uni-popup-message.vue | 143 ++
.../uni-popup-share/uni-popup-share.vue | 188 ++
.../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.uvue | 90 +
.../components/uni-popup/uni-popup.vue | 518 +++++
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 | 47 +
.../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 | 309 +++
uni_modules/uni-search-bar/package.json | 87 +
uni_modules/uni-search-bar/readme.md | 14 +
uni_modules/uni-section/changelog.md | 2 +
.../components/uni-section/uni-section.vue | 167 ++
uni_modules/uni-section/package.json | 87 +
uni_modules/uni-section/readme.md | 8 +
.../uni-segmented-control/changelog.md | 15 +
.../uni-segmented-control.vue | 146 ++
.../uni-segmented-control/package.json | 85 +
uni_modules/uni-segmented-control/readme.md | 13 +
uni_modules/uni-steps/changelog.md | 18 +
.../components/uni-steps/uni-steps.vue | 280 +++
uni_modules/uni-steps/package.json | 87 +
uni_modules/uni-steps/readme.md | 13 +
uni_modules/uni-swipe-action/changelog.md | 47 +
.../uni-swipe-action-item/bindingx.js | 302 +++
.../uni-swipe-action-item/index.wxs | 323 ++++
.../components/uni-swipe-action-item/isPC.js | 12 +
.../uni-swipe-action-item/mpalipay.js | 195 ++
.../uni-swipe-action-item/mpother.js | 260 +++
.../components/uni-swipe-action-item/mpwxs.js | 84 +
.../uni-swipe-action-item/render.js | 270 +++
.../uni-swipe-action-item.vue | 348 ++++
.../components/uni-swipe-action-item/wx.wxs | 341 ++++
.../uni-swipe-action/uni-swipe-action.vue | 60 +
uni_modules/uni-swipe-action/package.json | 84 +
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 | 33 +
.../components/uni-table/uni-table.vue | 460 +++++
.../components/uni-tbody/uni-tbody.vue | 34 +
.../uni-table/components/uni-td/uni-td.vue | 95 +
.../components/uni-th/filter-dropdown.vue | 511 +++++
.../uni-table/components/uni-th/uni-th.vue | 295 +++
.../components/uni-thead/uni-thead.vue | 137 ++
.../components/uni-tr/table-checkbox.vue | 179 ++
.../uni-table/components/uni-tr/uni-tr.vue | 184 ++
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 | 84 +
uni_modules/uni-table/readme.md | 13 +
uni_modules/uni-tag/changelog.md | 23 +
.../uni-tag/components/uni-tag/uni-tag.vue | 252 +++
uni_modules/uni-tag/package.json | 84 +
uni_modules/uni-tag/readme.md | 13 +
uni_modules/uni-title/changelog.md | 10 +
.../components/uni-title/uni-title.vue | 171 ++
uni_modules/uni-title/package.json | 88 +
uni_modules/uni-title/readme.md | 14 +
uni_modules/uni-tooltip/changelog.md | 16 +
.../components/uni-tooltip/uni-tooltip.vue | 108 ++
uni_modules/uni-tooltip/package.json | 86 +
uni_modules/uni-tooltip/readme.md | 8 +
uni_modules/uni-transition/changelog.md | 24 +
.../uni-transition/createAnimation.js | 131 ++
.../uni-transition/uni-transition.vue | 286 +++
uni_modules/uni-transition/package.json | 85 +
uni_modules/uni-transition/readme.md | 11 +
.../uts-progressNotification/changelog.md | 24 +
.../uts-progressNotification/package.json | 83 +
.../uts-progressNotification/readme.md | 71 +
.../utssdk/app-android/AndroidManifest.xml | 11 +
.../app-android/TransparentActivity.uts | 62 +
.../utssdk/app-android/callbacks.uts | 4 +
.../utssdk/app-android/config.json | 3 +
.../utssdk/app-android/constant.uts | 2 +
.../utssdk/app-android/index.uts | 159 ++
.../values/notification_progress_styles.xml | 11 +
.../utssdk/interface.uts | 46 +
uni_modules/y-custom-camera/changelog.md | 4 +
.../components/y-custom-camera/utils.js | 11 +
.../y-custom-camera/y-custom-camera.vue | 231 +++
uni_modules/y-custom-camera/package.json | 86 +
uni_modules/y-custom-camera/readme.md | 113 ++
wxcomponents/vant/button/index.d.ts | 1 +
wxcomponents/vant/button/index.js | 68 +
wxcomponents/vant/button/index.json | 7 +
wxcomponents/vant/button/index.wxml | 52 +
wxcomponents/vant/button/index.wxss | 1 +
wxcomponents/vant/common/color.d.ts | 7 +
wxcomponents/vant/common/color.js | 7 +
wxcomponents/vant/common/component.d.ts | 3 +
wxcomponents/vant/common/component.js | 48 +
wxcomponents/vant/common/index.wxss | 1 +
wxcomponents/vant/common/style/clearfix.wxss | 1 +
wxcomponents/vant/common/style/ellipsis.wxss | 1 +
wxcomponents/vant/common/style/hairline.wxss | 1 +
wxcomponents/vant/common/utils.d.ts | 8 +
wxcomponents/vant/common/utils.js | 32 +
wxcomponents/vant/icon/index.d.ts | 1 +
wxcomponents/vant/icon/index.js | 39 +
wxcomponents/vant/icon/index.json | 6 +
wxcomponents/vant/icon/index.wxml | 18 +
wxcomponents/vant/icon/index.wxss | 957 ++++++++++
wxcomponents/vant/info/index.d.ts | 1 +
wxcomponents/vant/info/index.js | 8 +
wxcomponents/vant/info/index.json | 3 +
wxcomponents/vant/info/index.wxml | 7 +
wxcomponents/vant/info/index.wxss | 1 +
wxcomponents/vant/loading/index.d.ts | 1 +
wxcomponents/vant/loading/index.js | 32 +
wxcomponents/vant/loading/index.json | 3 +
wxcomponents/vant/loading/index.wxml | 16 +
wxcomponents/vant/loading/index.wxss | 1 +
wxcomponents/vant/mixins/basic.d.ts | 1 +
wxcomponents/vant/mixins/basic.js | 22 +
wxcomponents/vant/mixins/button.d.ts | 1 +
wxcomponents/vant/mixins/button.js | 18 +
wxcomponents/vant/mixins/link.d.ts | 1 +
wxcomponents/vant/mixins/link.js | 17 +
.../vant/mixins/observer/behavior.d.ts | 1 +
wxcomponents/vant/mixins/observer/behavior.js | 14 +
wxcomponents/vant/mixins/observer/index.d.ts | 1 +
wxcomponents/vant/mixins/observer/index.js | 19 +
wxcomponents/vant/mixins/open-type.d.ts | 1 +
wxcomponents/vant/mixins/open-type.js | 25 +
wxcomponents/vant/mixins/touch.d.ts | 1 +
wxcomponents/vant/mixins/touch.js | 35 +
wxcomponents/vant/mixins/transition.d.ts | 1 +
wxcomponents/vant/mixins/transition.js | 120 ++
wxcomponents/vant/wxs/array.wxs | 5 +
wxcomponents/vant/wxs/bem.wxs | 38 +
wxcomponents/vant/wxs/memoize.wxs | 54 +
wxcomponents/vant/wxs/object.wxs | 13 +
wxcomponents/vant/wxs/utils.wxs | 7 +
555 files changed, 55484 insertions(+)
create mode 100644 .gitignore
create mode 100644 App.vue
create mode 100644 README.md
create mode 100644 api/auth.js
create mode 100644 api/book.js
create mode 100644 api/comfort.js
create mode 100644 api/depart.js
create mode 100644 api/dict.js
create mode 100644 api/feedback.js
create mode 100644 api/file.js
create mode 100644 api/inspection.js
create mode 100644 api/negative.js
create mode 100644 api/photo.js
create mode 100644 api/police.js
create mode 100644 api/problemType.js
create mode 100644 api/request.js
create mode 100644 api/selfexamination.js
create mode 100644 api/task.js
create mode 100644 api/taskProblem.js
create mode 100644 api/testingAlcohol.js
create mode 100644 changelog.md
create mode 100644 common/auth.js
create mode 100644 common/dict.js
create mode 100644 common/graceChecker.js
create mode 100644 common/html-parser.js
create mode 100644 common/permission.js
create mode 100644 common/uni-nvue.css
create mode 100644 common/uni.scss
create mode 100644 common/util.js
create mode 100644 components/empty.vue
create mode 100644 components/file-list.vue
create mode 100644 components/filter-radio.vue
create mode 100644 components/inspection-task-data-picker.vue
create mode 100644 components/modal.vue
create mode 100644 components/n-button.vue
create mode 100644 components/negative.vue
create mode 100644 components/net-image.vue
create mode 100644 components/police-picker.vue
create mode 100644 components/problem-picker.vue
create mode 100644 components/skeleton.vue
create mode 100644 components/tabs.vue
create mode 100644 components/upload.vue
create mode 100644 hybrid/html/local.html
create mode 100644 index.html
create mode 100644 jest.config.js
create mode 100644 main.js
create mode 100644 manifest.json
create mode 100644 package.json
create mode 100644 pages.json
create mode 100644 pages/books/index.vue
create mode 100644 pages/center/about.vue
create mode 100644 pages/center/feedback.vue
create mode 100644 pages/center/manual.vue
create mode 100644 pages/comfort/action.vue
create mode 100644 pages/comfort/add.vue
create mode 100644 pages/comfort/list.vue
create mode 100644 pages/common/camera.nvue
create mode 100644 pages/duty/index.vue
create mode 100644 pages/index/index.vue
create mode 100644 pages/negative/action.vue
create mode 100644 pages/negative/index.vue
create mode 100644 pages/negative/info.vue
create mode 100644 pages/photo/index.vue
create mode 100644 pages/task/index.vue
create mode 100644 pages/task/inspection/info.vue
create mode 100644 pages/task/inspection/list.vue
create mode 100644 pages/task/problem/add.vue
create mode 100644 pages/task/problem/index.vue
create mode 100644 pages/task/problem/list.vue
create mode 100644 pages/task/selfexamination/add.vue
create mode 100644 pages/task/selfexamination/index.vue
create mode 100644 pages/task/selfexamination/info.vue
create mode 100644 pages/task/selfexamination/list.vue
create mode 100644 pages/task/testingAlcohol/add.vue
create mode 100644 pages/task/testingAlcohol/info.vue
create mode 100644 pages/task/testingAlcohol/people.vue
create mode 100644 platforms/app-plus/feedback/feedback.vue
create mode 100644 platforms/app-plus/orientation/orientation.vue
create mode 100644 platforms/app-plus/proximity/proximity.vue
create mode 100644 platforms/app-plus/push/push.vue
create mode 100644 platforms/app-plus/shake/shake.vue
create mode 100644 platforms/app-plus/speech/speech.vue
create mode 100644 static/camer.png
create mode 100644 static/center-selected.png
create mode 100644 static/center.png
create mode 100644 static/customicons.css
create mode 100644 static/edit.png
create mode 100644 static/empty.png
create mode 100644 static/font/Pacifico-Regular.ttf
create mode 100644 static/icon/doc.png
create mode 100644 static/icon/ic_apply.png
create mode 100644 static/icon/ic_book.png
create mode 100644 static/icon/ic_c_app.png
create mode 100644 static/icon/ic_c_book.png
create mode 100644 static/icon/ic_c_message.png
create mode 100644 static/icon/ic_camera.png
create mode 100644 static/icon/ic_card.png
create mode 100644 static/icon/ic_question.png
create mode 100644 static/icon/ic_selfexamination.png
create mode 100644 static/icon/ic_task.png
create mode 100644 static/icon/ic_warning.png
create mode 100644 static/icon/ic_wine.png
create mode 100644 static/icon/iconfont.ttf
create mode 100644 static/icon/mp3.png
create mode 100644 static/icon/mp4.png
create mode 100644 static/icon/pdf.png
create mode 100644 static/icon/txt.png
create mode 100644 static/icon/xls.png
create mode 100644 static/iconfont.css
create mode 100644 static/icons/badge.png
create mode 100644 static/icons/button.png
create mode 100644 static/icons/calendar.png
create mode 100644 static/icons/card.png
create mode 100644 static/icons/collapse.png
create mode 100644 static/icons/color.png
create mode 100644 static/icons/combox.png
create mode 100644 static/icons/countdown.png
create mode 100644 static/icons/data-checkbox.png
create mode 100644 static/icons/data-picker.png
create mode 100644 static/icons/dateformat.png
create mode 100644 static/icons/datetime-picker.png
create mode 100644 static/icons/drawer.png
create mode 100644 static/icons/easyinput.png
create mode 100644 static/icons/fab.png
create mode 100644 static/icons/fav.png
create mode 100644 static/icons/file-picker.png
create mode 100644 static/icons/font.png
create mode 100644 static/icons/forms.png
create mode 100644 static/icons/goods-nav.png
create mode 100644 static/icons/grid.png
create mode 100644 static/icons/group.png
create mode 100644 static/icons/iconfont.ttf
create mode 100644 static/icons/icons.png
create mode 100644 static/icons/indexed-list.png
create mode 100644 static/icons/link.png
create mode 100644 static/icons/list.png
create mode 100644 static/icons/load-more.png
create mode 100644 static/icons/nav-bar.png
create mode 100644 static/icons/notice-bar.png
create mode 100644 static/icons/number-box.png
create mode 100644 static/icons/pagination.png
create mode 100644 static/icons/popup.png
create mode 100644 static/icons/radius.png
create mode 100644 static/icons/rate.png
create mode 100644 static/icons/row.png
create mode 100644 static/icons/search-bar.png
create mode 100644 static/icons/section.png
create mode 100644 static/icons/segmented-control.png
create mode 100644 static/icons/space.png
create mode 100644 static/icons/steps.png
create mode 100644 static/icons/swipe-action.png
create mode 100644 static/icons/swiper-dot.png
create mode 100644 static/icons/tag.png
create mode 100644 static/icons/title.png
create mode 100644 static/icons/transition.png
create mode 100644 static/image-resize-3.0.1.min.js
create mode 100644 static/image/1.png
create mode 100644 static/image/2.png
create mode 100644 static/image/carousel.png
create mode 100644 static/image/logo-p.png
create mode 100644 static/image/logo.png
create mode 100644 static/image/police-badge.png
create mode 100644 static/index-selected.png
create mode 100644 static/index.png
create mode 100644 static/police.png
create mode 100644 static/quill-1.3.7.min.js
create mode 100644 static/splash.9.png
create mode 100644 static/splash.png
create mode 100644 static/uni.ttf
create mode 100644 store/index.js
create mode 100644 template.h5.html
create mode 100644 uni.scss
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-breadcrumb/changelog.md
create mode 100644 uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue
create mode 100644 uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue
create mode 100644 uni_modules/uni-breadcrumb/package.json
create mode 100644 uni_modules/uni-breadcrumb/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-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/clientdb.js
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.uvue
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/loading.uts
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-picker.uts
create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.css
create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.uvue
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-data-select/changelog.md
create mode 100644 uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
create mode 100644 uni_modules/uni-data-select/package.json
create mode 100644 uni_modules/uni-data-select/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.js
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/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/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/utils.js
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.uvue
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/components/uni-icons/uniicons.css
create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.ttf
create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons_file.ts
create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js
create mode 100644 uni_modules/uni-icons/package.json
create mode 100644 uni_modules/uni-icons/readme.md
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-installApk/changelog.md
create mode 100644 uni_modules/uni-installApk/package.json
create mode 100644 uni_modules/uni-installApk/readme.md
create mode 100644 uni_modules/uni-installApk/utssdk/app-android/AndroidManifest.xml
create mode 100644 uni_modules/uni-installApk/utssdk/app-android/index.uts
create mode 100644 uni_modules/uni-installApk/utssdk/index.d.ts
create mode 100644 uni_modules/uni-installApk/utssdk/interface.uts
create mode 100644 uni_modules/uni-installApk/utssdk/unierror.uts
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-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.uvue
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-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/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-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-tooltip/changelog.md
create mode 100644 uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue
create mode 100644 uni_modules/uni-tooltip/package.json
create mode 100644 uni_modules/uni-tooltip/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/uts-progressNotification/changelog.md
create mode 100644 uni_modules/uts-progressNotification/package.json
create mode 100644 uni_modules/uts-progressNotification/readme.md
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/AndroidManifest.xml
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/TransparentActivity.uts
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/callbacks.uts
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/config.json
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/constant.uts
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/index.uts
create mode 100644 uni_modules/uts-progressNotification/utssdk/app-android/res/values/notification_progress_styles.xml
create mode 100644 uni_modules/uts-progressNotification/utssdk/interface.uts
create mode 100644 uni_modules/y-custom-camera/changelog.md
create mode 100644 uni_modules/y-custom-camera/components/y-custom-camera/utils.js
create mode 100644 uni_modules/y-custom-camera/components/y-custom-camera/y-custom-camera.vue
create mode 100644 uni_modules/y-custom-camera/package.json
create mode 100644 uni_modules/y-custom-camera/readme.md
create mode 100644 wxcomponents/vant/button/index.d.ts
create mode 100644 wxcomponents/vant/button/index.js
create mode 100644 wxcomponents/vant/button/index.json
create mode 100644 wxcomponents/vant/button/index.wxml
create mode 100644 wxcomponents/vant/button/index.wxss
create mode 100644 wxcomponents/vant/common/color.d.ts
create mode 100644 wxcomponents/vant/common/color.js
create mode 100644 wxcomponents/vant/common/component.d.ts
create mode 100644 wxcomponents/vant/common/component.js
create mode 100644 wxcomponents/vant/common/index.wxss
create mode 100644 wxcomponents/vant/common/style/clearfix.wxss
create mode 100644 wxcomponents/vant/common/style/ellipsis.wxss
create mode 100644 wxcomponents/vant/common/style/hairline.wxss
create mode 100644 wxcomponents/vant/common/utils.d.ts
create mode 100644 wxcomponents/vant/common/utils.js
create mode 100644 wxcomponents/vant/icon/index.d.ts
create mode 100644 wxcomponents/vant/icon/index.js
create mode 100644 wxcomponents/vant/icon/index.json
create mode 100644 wxcomponents/vant/icon/index.wxml
create mode 100644 wxcomponents/vant/icon/index.wxss
create mode 100644 wxcomponents/vant/info/index.d.ts
create mode 100644 wxcomponents/vant/info/index.js
create mode 100644 wxcomponents/vant/info/index.json
create mode 100644 wxcomponents/vant/info/index.wxml
create mode 100644 wxcomponents/vant/info/index.wxss
create mode 100644 wxcomponents/vant/loading/index.d.ts
create mode 100644 wxcomponents/vant/loading/index.js
create mode 100644 wxcomponents/vant/loading/index.json
create mode 100644 wxcomponents/vant/loading/index.wxml
create mode 100644 wxcomponents/vant/loading/index.wxss
create mode 100644 wxcomponents/vant/mixins/basic.d.ts
create mode 100644 wxcomponents/vant/mixins/basic.js
create mode 100644 wxcomponents/vant/mixins/button.d.ts
create mode 100644 wxcomponents/vant/mixins/button.js
create mode 100644 wxcomponents/vant/mixins/link.d.ts
create mode 100644 wxcomponents/vant/mixins/link.js
create mode 100644 wxcomponents/vant/mixins/observer/behavior.d.ts
create mode 100644 wxcomponents/vant/mixins/observer/behavior.js
create mode 100644 wxcomponents/vant/mixins/observer/index.d.ts
create mode 100644 wxcomponents/vant/mixins/observer/index.js
create mode 100644 wxcomponents/vant/mixins/open-type.d.ts
create mode 100644 wxcomponents/vant/mixins/open-type.js
create mode 100644 wxcomponents/vant/mixins/touch.d.ts
create mode 100644 wxcomponents/vant/mixins/touch.js
create mode 100644 wxcomponents/vant/mixins/transition.d.ts
create mode 100644 wxcomponents/vant/mixins/transition.js
create mode 100644 wxcomponents/vant/wxs/array.wxs
create mode 100644 wxcomponents/vant/wxs/bem.wxs
create mode 100644 wxcomponents/vant/wxs/memoize.wxs
create mode 100644 wxcomponents/vant/wxs/object.wxs
create mode 100644 wxcomponents/vant/wxs/utils.wxs
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6db8efc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.history/
+.idea
+.vscode
+
+/node_modules/
+/unpackage/
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..524f432
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,82 @@
+
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..17bb22b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,129 @@
+# hello-uniapp
+
+`uni-app`框架示例,一套代码,同时发行到iOS、Android、H5、小程序等多个平台,请使用手机在下方扫码快速体验`uni-app`的强大功能。[官方文档](https://uniapp.dcloud.net.cn/)
+
+## 快速上手
+hello-uniapp 示例工程可以通过两种方式创建, 一种是 HBuilderX, 配套 IDE,集成开发;另一种是 CLI 创建;推荐前者。
+### 通过 HBuilderX 可视化界面创建(推荐)
+
+可视化的方式比较简单,HBuilderX内置相关环境,开箱即用,无需配置nodejs。
+
+开始之前,开发者需先下载安装如下工具:
+
+- HBuilderX:[官方IDE下载地址](https://www.dcloud.io/hbuilderx.html)
+
+HBuilderX是通用的前端开发工具,但为`uni-app`做了特别强化,请下载App开发版。
+
+由于截图在 github 不便浏览,参见官方文档 [HBuilderX 可视化界面创建](https://uniapp.dcloud.net.cn/quickstart?id=_1-%e9%80%9a%e8%bf%87-hbuilderx-%e5%8f%af%e8%a7%86%e5%8c%96%e7%95%8c%e9%9d%a2)
+
+### 通过 vue-cli 创建
+
+```
+npm install -g @vue/cli
+```
+
+#### 创建uni-app
+
+**使用正式版**(对应HBuilderX最新正式版)
+
+```
+vue create -p dcloudio/uni-preset-vue my-project
+```
+
+**使用alpha版**(对应HBuilderX最新alpha版)
+
+```
+vue create -p dcloudio/uni-preset-vue#alpha my-alpha-project
+```
+
+此时,会提示选择项目模板,选择 `hello uni-app` 项目模板,如下所示:
+
+
+

+
+
+创建好后,进入项目目录
+```
+cd my-project
+```
+
+执行该命令运行到 h5 端
+```
+npm run dev:h5
+```
+
+欢迎提 issues,推荐到[官方社区](https://ask.dcloud.net.cn/explore/)提问。
+
+## 扫码体验
+
+
+
一套代码编到10个平台,这不是梦想。眼见为实,扫描10个二维码,亲自体验最全面的跨平台效果!
+
+
+
+ 注:某些平台不能提交简单demo,故补充了一些其他功能;hello uni-app示例代码可从[github](https://github.com/dcloudio/hello-uniapp)获取
+ 快应用仅支持 vivo 、oppo、华为
+ 360小程序仅 windows平台支持,需要在360浏览器中打开
+
+
+
+`uni-app`官网文档详见[https://uniapp.dcloud.io](https://uniapp.dcloud.io)
+
+更多uni-app的模板、示例详见[插件市场](https://ext.dcloud.net.cn/)
+
diff --git a/api/auth.js b/api/auth.js
new file mode 100644
index 0000000..e19e45a
--- /dev/null
+++ b/api/auth.js
@@ -0,0 +1,5 @@
+import request from './request'
+
+export function login(query) {
+ return request.post({ url: '/app/login', query })
+}
\ No newline at end of file
diff --git a/api/book.js b/api/book.js
new file mode 100644
index 0000000..9939a41
--- /dev/null
+++ b/api/book.js
@@ -0,0 +1,5 @@
+import request from './request'
+
+export function listBook(query) {
+ return request.get({ url: '/book', query })
+}
\ No newline at end of file
diff --git a/api/comfort.js b/api/comfort.js
new file mode 100644
index 0000000..7ed4ec2
--- /dev/null
+++ b/api/comfort.js
@@ -0,0 +1,17 @@
+import request from './request'
+
+export function listComfort(query) {
+ return request.get({ url: '/comfort', query })
+}
+
+export function getComfort(id) {
+ return request.get({ url: '/comfort/' + id })
+}
+
+export function addComfort(body) {
+ return request.post({ url: '/comfort', body })
+}
+
+export function listRightPersonByDepartId(departId) {
+ return request.get({ url: '/rightPerson/depart/' + departId })
+}
\ No newline at end of file
diff --git a/api/depart.js b/api/depart.js
new file mode 100644
index 0000000..d6d18e3
--- /dev/null
+++ b/api/depart.js
@@ -0,0 +1,9 @@
+import request from './request'
+
+export function departTree() {
+ return request.get({ url: '/depart/tree' })
+}
+
+export function secondList() {
+ return request.get({ url: '/depart/second' })
+}
\ No newline at end of file
diff --git a/api/dict.js b/api/dict.js
new file mode 100644
index 0000000..98272c8
--- /dev/null
+++ b/api/dict.js
@@ -0,0 +1,7 @@
+import request from './request'
+
+export function listDictDataAll(dictType) {
+ return request.get({
+ url: `/dict/data/${dictType}`
+ });
+}
\ No newline at end of file
diff --git a/api/feedback.js b/api/feedback.js
new file mode 100644
index 0000000..897a470
--- /dev/null
+++ b/api/feedback.js
@@ -0,0 +1,5 @@
+import request from './request'
+
+export function addFeedback(body) {
+ return request.post({ url: '/feedback', body })
+}
\ No newline at end of file
diff --git a/api/file.js b/api/file.js
new file mode 100644
index 0000000..8cc900d
--- /dev/null
+++ b/api/file.js
@@ -0,0 +1,9 @@
+import request from './request'
+
+export function uploadFileBase64(body) {
+ return request.post({ url: '/file/upload/base64', body })
+}
+
+export function getFileBase64(filepath) {
+ return request.get({ url: '/file/base64?filepath=' + filepath })
+}
\ No newline at end of file
diff --git a/api/inspection.js b/api/inspection.js
new file mode 100644
index 0000000..f65c5a5
--- /dev/null
+++ b/api/inspection.js
@@ -0,0 +1,17 @@
+import request from './request'
+
+export function listInspection(query) {
+ return request.get({ url: `/task/inspection`, query })
+}
+
+export function listInspectionProblem(taskId, query) {
+ return request.get({ url: `/task/inspection/${taskId}/problem`, query })
+}
+
+export function signInspection(taskId) {
+ return request.post({ url: `/task/inspection/${taskId}/sign` })
+}
+
+export function getInspection(taskId) {
+ return request.get({ url: `/task/inspection/${taskId}` })
+}
\ No newline at end of file
diff --git a/api/negative.js b/api/negative.js
new file mode 100644
index 0000000..df56ef6
--- /dev/null
+++ b/api/negative.js
@@ -0,0 +1,13 @@
+import request from './request'
+
+export function listNegative(query) {
+ return request.get({ url: `/negative`, query })
+}
+
+export function getNegative(id, workId) {
+ return request.get({ url: `/negative/${id}?workId=${workId || ''}` })
+}
+
+export function executeNegative(id, body) {
+ return request.post({ url: `/negative/${id}/execute`, body})
+}
\ No newline at end of file
diff --git a/api/photo.js b/api/photo.js
new file mode 100644
index 0000000..9133a9a
--- /dev/null
+++ b/api/photo.js
@@ -0,0 +1,9 @@
+import request from './request'
+
+export function listPhoto() {
+ return request.get({ url: '/photo' })
+}
+
+export function addPhoto(body) {
+ return request.post({ url: '/photo', body })
+}
\ No newline at end of file
diff --git a/api/police.js b/api/police.js
new file mode 100644
index 0000000..9a077d2
--- /dev/null
+++ b/api/police.js
@@ -0,0 +1,5 @@
+import request from './request'
+
+export function listPolice(query) {
+ return request.get({ url: '/police', query })
+}
\ No newline at end of file
diff --git a/api/problemType.js b/api/problemType.js
new file mode 100644
index 0000000..710d63b
--- /dev/null
+++ b/api/problemType.js
@@ -0,0 +1,5 @@
+import request from './request'
+
+export function problemTypeTree() {
+ return request.get({ url: '/dict/content/tree' })
+}
\ No newline at end of file
diff --git a/api/request.js b/api/request.js
new file mode 100644
index 0000000..832ec87
--- /dev/null
+++ b/api/request.js
@@ -0,0 +1,131 @@
+import { getToken, clearToken } from '@/common/auth'
+import store from '@/store'
+
+function get(options) {
+ options.method = 'GET';
+ return ajax(options.url, options)
+}
+
+function post(options) {
+ options.method = 'POST';
+ return ajax(options.url, options)
+}
+
+function put(options) {
+ options.method = 'PUT';
+ return ajax(options.url, options)
+}
+
+function del(options) {
+ options.method = 'DELETE';
+ return ajax(options.url, options)
+}
+
+function ajax(url, options) {
+ let body;
+ if (options?.params && Object.keys(options.params).length > 0) {
+ if (options.method === 'GET') {
+ options.query = options.params;
+ } else {
+ body = JSON.stringify(options.params);
+ }
+ }
+ if (options?.query) {
+ const queryParams = []
+ for (const key in options.query) {
+ queryParams.push(key + '=' + options.query[key])
+ }
+ url += (url.indexOf('?') > -1 ? '' : '?') + queryParams.join('&')
+ }
+ if (options?.body) {
+ if (options.body === 'string') {
+ body = options.body;
+ } else {
+ if (Object.keys(options.body).length > 0) {
+ body = JSON.stringify(options.body);
+ }
+ }
+ }
+
+ return new Promise((resolve, reject) => {
+ const requestUrl = store.state.requestUrl;
+ if (!requestUrl) {
+ uni.showToast({
+ title: '未找到资源',
+ icon: 'none',
+ duration: 5000
+ })
+ reject('未找到资源')
+ return
+ }
+ uni.request({
+ url: requestUrl,
+ method: 'POST',
+ data: {
+ url,
+ method: options.method,
+ token: getToken(),
+ body
+ },
+ header: {
+ "Content-Type": "application/json",
+ messageId: generateUUID(),
+ appCredential: store.state.appCredential,
+ userCredential: store.state.userCredential
+ },
+ success: function(response) {
+ if (response.statusCode !== 200) {
+ uni.showToast({
+ title: 'response信息:' + JSON.stringify(response),
+ icon: 'none',
+ duration: 5000
+ });
+ return
+ }
+ const res = response.data;
+ if (res.code === 200) {
+ resolve(res.data)
+ } else {
+ let message = res.message;
+ if (res.code === 401) {
+ message = '未授权登录'
+ }
+ uni.showToast({
+ title: message || '系统异常',
+ icon: 'none',
+ duration: 5000
+ });
+ reject(res)
+ }
+
+ },
+ fail: function(err) {
+ uni.showToast({
+ title: err,
+ icon: 'none',
+ duration: 5000
+ })
+ resolve()
+ }
+ })
+ })
+}
+
+function generateUUID() {
+ var d = new Date().getTime();
+ var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r = (d + Math.random() * 16) % 16 | 0;
+ d = Math.floor(d / 16);
+ return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
+ });
+ return uuid;
+}
+
+const request = {
+ get,
+ post,
+ put,
+ del
+}
+
+export default request;
\ No newline at end of file
diff --git a/api/selfexamination.js b/api/selfexamination.js
new file mode 100644
index 0000000..48203ee
--- /dev/null
+++ b/api/selfexamination.js
@@ -0,0 +1,13 @@
+import request from './request'
+
+export function getTaskSelfexamination(taskId) {
+ return request.get({ url: '/task/selfexamination/' + taskId })
+}
+
+export function signTaskSelfexamination(taskId) {
+ return request.post({ url: `/task/selfexamination/${taskId}/sign` })
+}
+
+export function listTaskSelfexamination(query) {
+ return request.get({ url: `/task/selfexamination`, query })
+}
\ No newline at end of file
diff --git a/api/task.js b/api/task.js
new file mode 100644
index 0000000..5a60fa2
--- /dev/null
+++ b/api/task.js
@@ -0,0 +1,13 @@
+import request from './request'
+
+export function listTask(query) {
+ return request.get({ url: '/task', query })
+}
+
+export function getTaskCount() {
+ return request.get({ url: '/task/count' })
+}
+
+export function submitTask(taskId) {
+ return request.post({ url: `/task/${taskId}/submit` })
+}
\ No newline at end of file
diff --git a/api/taskProblem.js b/api/taskProblem.js
new file mode 100644
index 0000000..f6ffdd3
--- /dev/null
+++ b/api/taskProblem.js
@@ -0,0 +1,13 @@
+import request from './request'
+
+export function getProblem(id) {
+ return request.get({ url: '/task/problem/' + id })
+}
+
+export function listProblem(query) {
+ return request.get({ url: '/task/problem', query })
+}
+
+export function addProblem(body) {
+ return request.post({ url: '/task/problem', body })
+}
\ No newline at end of file
diff --git a/api/testingAlcohol.js b/api/testingAlcohol.js
new file mode 100644
index 0000000..61b2763
--- /dev/null
+++ b/api/testingAlcohol.js
@@ -0,0 +1,13 @@
+import request from './request'
+
+export function listTestingAlcoholPeople(taskId, query) {
+ return request.get({ url: `/task/testingAlcohol/${taskId}/people`, query })
+}
+
+export function updateTestingAlcoholPeople(taskId, body) {
+ return request.put({ url: `/task/testingAlcohol/${taskId}/people`, body })
+}
+
+export function countTestingAlcoholPeople(taskId) {
+ return request.get({ url: `/task/testingAlcohol/${taskId}/people/count` })
+}
\ No newline at end of file
diff --git a/changelog.md b/changelog.md
new file mode 100644
index 0000000..e69de29
diff --git a/common/auth.js b/common/auth.js
new file mode 100644
index 0000000..328a467
--- /dev/null
+++ b/common/auth.js
@@ -0,0 +1,13 @@
+
+const TOKEN_KEY = "token";
+
+export function setToken(token) {
+ uni.setStorageSync(TOKEN_KEY, token);
+}
+export function getToken() {
+ return uni.getStorageSync(TOKEN_KEY);
+}
+
+export function clearToken() {
+ uni.removeStorageSync(TOKEN_KEY);
+}
\ No newline at end of file
diff --git a/common/dict.js b/common/dict.js
new file mode 100644
index 0000000..4ae11bf
--- /dev/null
+++ b/common/dict.js
@@ -0,0 +1,12 @@
+import {
+ listDictDataAll
+} from '@/api/dict'
+import { ref } from 'vue'
+
+export const getDictOptions = (dictType) => {
+ const result = ref([])
+ listDictDataAll(dictType).then(data => {
+ result.value = data
+ })
+ return result;
+}
\ No newline at end of file
diff --git a/common/graceChecker.js b/common/graceChecker.js
new file mode 100644
index 0000000..b3db2d7
--- /dev/null
+++ b/common/graceChecker.js
@@ -0,0 +1,97 @@
+/**
+数据验证(表单验证)
+来自 grace.hcoder.net
+作者 hcoder 深海
+*/
+export default {
+ error:'',
+ check : function (data, rule){
+ for(var i = 0; i < rule.length; i++){
+ if (!rule[i].checkType){return true;}
+ if (!rule[i].name) {return true;}
+ if (!rule[i].errorMsg) {return true;}
+ if (!data[rule[i].name]) {this.error = rule[i].errorMsg; return false;}
+ switch (rule[i].checkType){
+ case 'string':
+ var reg = new RegExp('^.{' + rule[i].checkRule + '}$');
+ if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
+ break;
+ case 'int':
+ var reg = new RegExp('^(-[1-9]|[1-9])[0-9]{' + rule[i].checkRule + '}$');
+ if(!reg.test(data[rule[i].name])) {this.error = rule[i].errorMsg; return false;}
+ break;
+ break;
+ case 'between':
+ if (!this.isNumber(data[rule[i].name])){
+ this.error = rule[i].errorMsg;
+ return false;
+ }
+ var minMax = rule[i].checkRule.split(',');
+ minMax[0] = Number(minMax[0]);
+ minMax[1] = Number(minMax[1]);
+ if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
+ this.error = rule[i].errorMsg;
+ return false;
+ }
+ break;
+ case 'betweenD':
+ var reg = /^-?[1-9][0-9]?$/;
+ if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+ var minMax = rule[i].checkRule.split(',');
+ minMax[0] = Number(minMax[0]);
+ minMax[1] = Number(minMax[1]);
+ if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
+ this.error = rule[i].errorMsg;
+ return false;
+ }
+ break;
+ case 'betweenF':
+ var reg = /^-?[0-9][0-9]?.+[0-9]+$/;
+ if (!reg.test(data[rule[i].name])){this.error = rule[i].errorMsg; return false;}
+ var minMax = rule[i].checkRule.split(',');
+ minMax[0] = Number(minMax[0]);
+ minMax[1] = Number(minMax[1]);
+ if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
+ this.error = rule[i].errorMsg;
+ return false;
+ }
+ break;
+ case 'same':
+ if (data[rule[i].name] != rule[i].checkRule) { this.error = rule[i].errorMsg; return false;}
+ break;
+ case 'notsame':
+ if (data[rule[i].name] == rule[i].checkRule) { this.error = rule[i].errorMsg; return false; }
+ break;
+ case 'email':
+ var reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
+ if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+ break;
+ case 'phoneno':
+ var reg = /^1[0-9]{10,10}$/;
+ if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+ break;
+ case 'zipcode':
+ var reg = /^[0-9]{6}$/;
+ if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+ break;
+ case 'reg':
+ var reg = new RegExp(rule[i].checkRule);
+ if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false; }
+ break;
+ case 'in':
+ if(rule[i].checkRule.indexOf(data[rule[i].name]) == -1){
+ this.error = rule[i].errorMsg; return false;
+ }
+ break;
+ case 'notnull':
+ if(data[rule[i].name] == null || data[rule[i].name].length < 1){this.error = rule[i].errorMsg; return false;}
+ break;
+ }
+ }
+ return true;
+ },
+ isNumber : function (checkVal){
+ var reg = /^-?[1-9][0-9]?.?[0-9]*$/;
+ return reg.test(checkVal);
+ }
+}
\ No newline at end of file
diff --git a/common/html-parser.js b/common/html-parser.js
new file mode 100644
index 0000000..20a89b2
--- /dev/null
+++ b/common/html-parser.js
@@ -0,0 +1,352 @@
+/*
+ * HTML5 Parser By Sam Blowes
+ *
+ * Designed for HTML5 documents
+ *
+ * Original code by John Resig (ejohn.org)
+ * http://ejohn.org/blog/pure-javascript-html-parser/
+ * Original code by Erik Arvidsson, Mozilla Public License
+ * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
+ *
+ * ----------------------------------------------------------------------------
+ * License
+ * ----------------------------------------------------------------------------
+ *
+ * This code is triple licensed using Apache Software License 2.0,
+ * Mozilla Public License or GNU Public License
+ *
+ * ////////////////////////////////////////////////////////////////////////////
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * ////////////////////////////////////////////////////////////////////////////
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is Simple HTML Parser.
+ *
+ * The Initial Developer of the Original Code is Erik Arvidsson.
+ * Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights
+ * Reserved.
+ *
+ * ////////////////////////////////////////////////////////////////////////////
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * ----------------------------------------------------------------------------
+ * Usage
+ * ----------------------------------------------------------------------------
+ *
+ * // Use like so:
+ * HTMLParser(htmlString, {
+ * start: function(tag, attrs, unary) {},
+ * end: function(tag) {},
+ * chars: function(text) {},
+ * comment: function(text) {}
+ * });
+ *
+ * // or to get an XML string:
+ * HTMLtoXML(htmlString);
+ *
+ * // or to get an XML DOM Document
+ * HTMLtoDOM(htmlString);
+ *
+ * // or to inject into an existing document/DOM node
+ * HTMLtoDOM(htmlString, document);
+ * HTMLtoDOM(htmlString, document.body);
+ *
+ */
+// Regular Expressions for parsing tags and attributes
+var startTag = /^<([-A-Za-z0-9_]+)((?:\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;
+var endTag = /^<\/([-A-Za-z0-9_]+)[^>]*>/;
+var attr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g; // Empty Elements - HTML 5
+
+var empty = makeMap('area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr'); // Block Elements - HTML 5
+// fixed by xxx 将 ins 标签从块级名单中移除
+
+var block = makeMap('a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video'); // Inline Elements - HTML 5
+
+var inline = makeMap('abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'); // Elements that you can, intentionally, leave open
+// (and which close themselves)
+
+var closeSelf = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'); // Attributes that have their values filled in disabled="disabled"
+
+var fillAttrs = makeMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'); // Special Elements (can contain anything)
+
+var special = makeMap('script,style');
+function HTMLParser(html, handler) {
+ var index;
+ var chars;
+ var match;
+ var stack = [];
+ var last = html;
+
+ stack.last = function () {
+ return this[this.length - 1];
+ };
+
+ while (html) {
+ chars = true; // Make sure we're not in a script or style element
+
+ if (!stack.last() || !special[stack.last()]) {
+ // Comment
+ if (html.indexOf('');
+
+ if (index >= 0) {
+ if (handler.comment) {
+ handler.comment(html.substring(4, index));
+ }
+
+ html = html.substring(index + 3);
+ chars = false;
+ } // end tag
+
+ } else if (html.indexOf('') == 0) {
+ match = html.match(endTag);
+
+ if (match) {
+ html = html.substring(match[0].length);
+ match[0].replace(endTag, parseEndTag);
+ chars = false;
+ } // start tag
+
+ } else if (html.indexOf('<') == 0) {
+ match = html.match(startTag);
+
+ if (match) {
+ html = html.substring(match[0].length);
+ match[0].replace(startTag, parseStartTag);
+ chars = false;
+ }
+ }
+
+ if (chars) {
+ index = html.indexOf('<');
+ var text = index < 0 ? html : html.substring(0, index);
+ html = index < 0 ? '' : html.substring(index);
+
+ if (handler.chars) {
+ handler.chars(text);
+ }
+ }
+ } else {
+ html = html.replace(new RegExp('([\\s\\S]*?)<\/' + stack.last() + '[^>]*>'), function (all, text) {
+ text = text.replace(/|/g, '$1$2');
+
+ if (handler.chars) {
+ handler.chars(text);
+ }
+
+ return '';
+ });
+ parseEndTag('', stack.last());
+ }
+
+ if (html == last) {
+ throw 'Parse Error: ' + html;
+ }
+
+ last = html;
+ } // Clean up any remaining tags
+
+
+ parseEndTag();
+
+ function parseStartTag(tag, tagName, rest, unary) {
+ tagName = tagName.toLowerCase();
+
+ if (block[tagName]) {
+ while (stack.last() && inline[stack.last()]) {
+ parseEndTag('', stack.last());
+ }
+ }
+
+ if (closeSelf[tagName] && stack.last() == tagName) {
+ parseEndTag('', tagName);
+ }
+
+ unary = empty[tagName] || !!unary;
+
+ if (!unary) {
+ stack.push(tagName);
+ }
+
+ if (handler.start) {
+ var attrs = [];
+ rest.replace(attr, function (match, name) {
+ var value = arguments[2] ? arguments[2] : arguments[3] ? arguments[3] : arguments[4] ? arguments[4] : fillAttrs[name] ? name : '';
+ attrs.push({
+ name: name,
+ value: value,
+ escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') // "
+
+ });
+ });
+
+ if (handler.start) {
+ handler.start(tagName, attrs, unary);
+ }
+ }
+ }
+
+ function parseEndTag(tag, tagName) {
+ // If no tag name is provided, clean shop
+ if (!tagName) {
+ var pos = 0;
+ } // Find the closest opened tag of the same type
+ else {
+ for (var pos = stack.length - 1; pos >= 0; pos--) {
+ if (stack[pos] == tagName) {
+ break;
+ }
+ }
+ }
+
+ if (pos >= 0) {
+ // Close all the open elements, up the stack
+ for (var i = stack.length - 1; i >= pos; i--) {
+ if (handler.end) {
+ handler.end(stack[i]);
+ }
+ } // Remove the open elements from the stack
+
+
+ stack.length = pos;
+ }
+ }
+}
+
+function makeMap(str) {
+ var obj = {};
+ var items = str.split(',');
+
+ for (var i = 0; i < items.length; i++) {
+ obj[items[i]] = true;
+ }
+
+ return obj;
+}
+
+function removeDOCTYPE(html) {
+ return html.replace(/<\?xml.*\?>\n/, '').replace(/\n/, '').replace(/\n/, '');
+}
+
+function parseAttrs(attrs) {
+ return attrs.reduce(function (pre, attr) {
+ var value = attr.value;
+ var name = attr.name;
+
+ if (pre[name]) {
+ pre[name] = pre[name] + " " + value;
+ } else {
+ pre[name] = value;
+ }
+
+ return pre;
+ }, {});
+}
+
+function parseHtml(html) {
+ html = removeDOCTYPE(html);
+ var stacks = [];
+ var results = {
+ node: 'root',
+ children: []
+ };
+ HTMLParser(html, {
+ start: function start(tag, attrs, unary) {
+ var node = {
+ name: tag
+ };
+
+ if (attrs.length !== 0) {
+ node.attrs = parseAttrs(attrs);
+ }
+
+ if (unary) {
+ var parent = stacks[0] || results;
+
+ if (!parent.children) {
+ parent.children = [];
+ }
+
+ parent.children.push(node);
+ } else {
+ stacks.unshift(node);
+ }
+ },
+ end: function end(tag) {
+ var node = stacks.shift();
+ if (node.name !== tag) console.error('invalid state: mismatch end tag');
+
+ if (stacks.length === 0) {
+ results.children.push(node);
+ } else {
+ var parent = stacks[0];
+
+ if (!parent.children) {
+ parent.children = [];
+ }
+
+ parent.children.push(node);
+ }
+ },
+ chars: function chars(text) {
+ var node = {
+ type: 'text',
+ text: text
+ };
+
+ if (stacks.length === 0) {
+ results.children.push(node);
+ } else {
+ var parent = stacks[0];
+
+ if (!parent.children) {
+ parent.children = [];
+ }
+
+ parent.children.push(node);
+ }
+ },
+ comment: function comment(text) {
+ var node = {
+ node: 'comment',
+ text: text
+ };
+ var parent = stacks[0];
+
+ if (!parent.children) {
+ parent.children = [];
+ }
+
+ parent.children.push(node);
+ }
+ });
+ return results.children;
+}
+
+export default parseHtml;
diff --git a/common/permission.js b/common/permission.js
new file mode 100644
index 0000000..9bb6a28
--- /dev/null
+++ b/common/permission.js
@@ -0,0 +1,209 @@
+/// null = 未请求,1 = 已允许,0 = 拒绝|受限, 2 = 系统未开启
+
+var isIOS
+
+function album() {
+ var result = 0;
+ var PHPhotoLibrary = plus.ios.import("PHPhotoLibrary");
+ var authStatus = PHPhotoLibrary.authorizationStatus();
+ if (authStatus === 0) {
+ result = null;
+ } else if (authStatus == 3) {
+ result = 1;
+ } else {
+ result = 0;
+ }
+ plus.ios.deleteObject(PHPhotoLibrary);
+ return result;
+}
+
+function camera() {
+ var result = 0;
+ var AVCaptureDevice = plus.ios.import("AVCaptureDevice");
+ var authStatus = AVCaptureDevice.authorizationStatusForMediaType('vide');
+ if (authStatus === 0) {
+ result = null;
+ } else if (authStatus == 3) {
+ result = 1;
+ } else {
+ result = 0;
+ }
+ plus.ios.deleteObject(AVCaptureDevice);
+ return result;
+}
+
+function location() {
+ var result = 0;
+ var cllocationManger = plus.ios.import("CLLocationManager");
+ var enable = cllocationManger.locationServicesEnabled();
+ var status = cllocationManger.authorizationStatus();
+ if (!enable) {
+ result = 2;
+ } else if (status === 0) {
+ result = null;
+ } else if (status === 3 || status === 4) {
+ result = 1;
+ } else {
+ result = 0;
+ }
+ plus.ios.deleteObject(cllocationManger);
+ return result;
+}
+
+function push() {
+ var result = 0;
+ var UIApplication = plus.ios.import("UIApplication");
+ var app = UIApplication.sharedApplication();
+ var enabledTypes = 0;
+ if (app.currentUserNotificationSettings) {
+ var settings = app.currentUserNotificationSettings();
+ enabledTypes = settings.plusGetAttribute("types");
+ if (enabledTypes == 0) {
+ result = 0;
+ console.log("推送权限没有开启");
+ } else {
+ result = 1;
+ console.log("已经开启推送功能!")
+ }
+ plus.ios.deleteObject(settings);
+ } else {
+ enabledTypes = app.enabledRemoteNotificationTypes();
+ if (enabledTypes == 0) {
+ result = 3;
+ console.log("推送权限没有开启!");
+ } else {
+ result = 4;
+ console.log("已经开启推送功能!")
+ }
+ }
+ plus.ios.deleteObject(app);
+ plus.ios.deleteObject(UIApplication);
+ return result;
+}
+
+function contact() {
+ var result = 0;
+ var CNContactStore = plus.ios.import("CNContactStore");
+ var cnAuthStatus = CNContactStore.authorizationStatusForEntityType(0);
+ if (cnAuthStatus === 0) {
+ result = null;
+ } else if (cnAuthStatus == 3) {
+ result = 1;
+ } else {
+ result = 0;
+ }
+ plus.ios.deleteObject(CNContactStore);
+ return result;
+}
+
+function record() {
+ var result = null;
+ var avaudiosession = plus.ios.import("AVAudioSession");
+ var avaudio = avaudiosession.sharedInstance();
+ var status = avaudio.recordPermission();
+ console.log("permissionStatus:" + status);
+ if (status === 1970168948) {
+ result = null;
+ } else if (status === 1735552628) {
+ result = 1;
+ } else {
+ result = 0;
+ }
+ plus.ios.deleteObject(avaudiosession);
+ return result;
+}
+
+function calendar() {
+ var result = null;
+ var EKEventStore = plus.ios.import("EKEventStore");
+ var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(0);
+ if (ekAuthStatus == 3) {
+ result = 1;
+ console.log("日历权限已经开启");
+ } else {
+ console.log("日历权限没有开启");
+ }
+ plus.ios.deleteObject(EKEventStore);
+ return result;
+}
+
+function memo() {
+ var result = null;
+ var EKEventStore = plus.ios.import("EKEventStore");
+ var ekAuthStatus = EKEventStore.authorizationStatusForEntityType(1);
+ if (ekAuthStatus == 3) {
+ result = 1;
+ console.log("备忘录权限已经开启");
+ } else {
+ console.log("备忘录权限没有开启");
+ }
+ plus.ios.deleteObject(EKEventStore);
+ return result;
+}
+
+function requestAndroid(permissionID) {
+ return new Promise((resolve, reject) => {
+ plus.android.requestPermissions(
+ [permissionID],
+ function(resultObj) {
+ var result = 0;
+ for (var i = 0; i < resultObj.granted.length; i++) {
+ var grantedPermission = resultObj.granted[i];
+ console.log('已获取的权限:' + grantedPermission);
+ result = 1
+ }
+ for (var i = 0; i < resultObj.deniedPresent.length; i++) {
+ var deniedPresentPermission = resultObj.deniedPresent[i];
+ console.log('拒绝本次申请的权限:' + deniedPresentPermission);
+ result = 0
+ }
+ for (var i = 0; i < resultObj.deniedAlways.length; i++) {
+ var deniedAlwaysPermission = resultObj.deniedAlways[i];
+ console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
+ result = -1
+ }
+ resolve(result);
+ },
+ function(error) {
+ console.log('result error: ' + error.message)
+ resolve({
+ code: error.code,
+ message: error.message
+ });
+ }
+ );
+ });
+}
+
+function gotoAppPermissionSetting() {
+ if (permission.isIOS) {
+ var UIApplication = plus.ios.import("UIApplication");
+ var application2 = UIApplication.sharedApplication();
+ var NSURL2 = plus.ios.import("NSURL");
+ var setting2 = NSURL2.URLWithString("app-settings:");
+ application2.openURL(setting2);
+ plus.ios.deleteObject(setting2);
+ plus.ios.deleteObject(NSURL2);
+ plus.ios.deleteObject(application2);
+ } else {
+ var Intent = plus.android.importClass("android.content.Intent");
+ var Settings = plus.android.importClass("android.provider.Settings");
+ var Uri = plus.android.importClass("android.net.Uri");
+ var mainActivity = plus.android.runtimeMainActivity();
+ var intent = new Intent();
+ intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+ var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
+ intent.setData(uri);
+ mainActivity.startActivity(intent);
+ }
+}
+
+const permission = {
+ get isIOS(){
+ return typeof isIOS === 'boolean' ? isIOS : (isIOS = uni.getSystemInfoSync().platform === 'ios')
+ },
+ requestAndroid: requestAndroid,
+ gotoAppSetting: gotoAppPermissionSetting
+}
+
+export default permission
diff --git a/common/uni-nvue.css b/common/uni-nvue.css
new file mode 100644
index 0000000..e27c762
--- /dev/null
+++ b/common/uni-nvue.css
@@ -0,0 +1,136 @@
+/* #ifndef APP-PLUS-NVUE */
+page {
+ min-height: 100%;
+ height: auto;
+}
+/* #endif */
+
+/* 解决头条小程序字体图标不显示问题,因为头条运行时自动插入了span标签,且有全局字体 */
+/* #ifdef MP-TOUTIAO */
+/* text :not(view) {
+ font-family: uniicons;
+} */
+/* #endif */
+
+.uni-icon {
+ font-family: uniicons;
+ font-weight: normal;
+}
+
+.uni-container {
+ padding: 15px;
+ background-color: #f8f8f8;
+}
+
+.uni-header-logo {
+ /* #ifdef H5 */
+ display: flex;
+ /* #endif */
+ padding: 15px 15px;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ margin-top: 10rpx;
+}
+
+.uni-header-image {
+ width: 80px;
+ height: 80px;
+}
+
+.uni-hello-text {
+ margin-bottom: 20px;
+}
+
+.hello-text {
+ color: #7A7E83;
+ font-size: 14px;
+ line-height: 20px;
+}
+
+.hello-link {
+ color: #7A7E83;
+ font-size: 14px;
+ line-height: 20px;
+}
+
+.uni-panel {
+ margin-bottom: 12px;
+}
+
+.uni-panel-h {
+ /* #ifdef H5 */
+ display: flex;
+ /* #endif */
+ background-color: #ffffff;
+ flex-direction: row !important;
+ /* justify-content: space-between !important; */
+ align-items: center !important;
+ padding: 12px;
+ /* #ifdef H5 */
+ cursor: pointer;
+ /* #endif */
+}
+/*
+.uni-panel-h:active {
+ background-color: #f8f8f8;
+}
+ */
+.uni-panel-h-on {
+ background-color: #f0f0f0;
+}
+
+.uni-panel-text {
+ flex: 1;
+ color: #000000;
+ font-size: 14px;
+ font-weight: normal;
+}
+
+.uni-panel-icon {
+ margin-left: 15px;
+ color: #999999;
+ font-size: 14px;
+ font-weight: normal;
+ transform: rotate(0deg);
+ transition-duration: 0s;
+ transition-property: transform;
+}
+
+.uni-panel-icon-on {
+ transform: rotate(180deg);
+}
+
+.uni-navigate-item {
+ /* #ifdef H5 */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+ background-color: #FFFFFF;
+ border-top-style: solid;
+ border-top-color: #f0f0f0;
+ border-top-width: 1px;
+ padding: 12px;
+ /* #ifdef H5 */
+ cursor: pointer;
+ /* #endif */
+}
+
+.uni-navigate-item:active {
+ background-color: #f8f8f8;
+}
+
+.uni-navigate-text {
+ flex: 1;
+ color: #000000;
+ font-size: 14px;
+ font-weight: normal;
+}
+
+.uni-navigate-icon {
+ margin-left: 15px;
+ color: #999999;
+ font-size: 14px;
+ font-weight: normal;
+}
\ No newline at end of file
diff --git a/common/uni.scss b/common/uni.scss
new file mode 100644
index 0000000..9a3e330
--- /dev/null
+++ b/common/uni.scss
@@ -0,0 +1,1685 @@
+@font-face {
+ font-family: uniicons;
+ font-weight: normal;
+ font-style: normal;
+ src: url('~@/static/uni.ttf') format('truetype');
+}
+
+/*通用 */
+page {
+ --primary-color: #1677FF;
+ --danger-color: #FF1212;
+ --success-color: #4caf50;
+}
+
+
+progress, checkbox-group{
+ width: 100%;
+}
+form {
+ width: 100%;
+}
+.primary {
+ color: var(--primary-color);
+}
+.uni-flex {
+ display: flex;
+ flex-direction: row;
+}
+.uni-flex-item {
+ flex: 1;
+}
+.uni-row {
+ flex-direction: row;
+}
+.uni-column {
+ flex-direction: column;
+}
+.uni-link{
+ color:#576B95;
+ font-size:26rpx;
+}
+.uni-center{
+ text-align:center;
+}
+.uni-inline-item{
+ display: flex;
+ flex-direction: row;
+ align-items:center;
+}
+.uni-inline-item text{
+ margin-right: 20rpx;
+}
+.uni-inline-item text:last-child{
+ margin-right: 0rpx;
+ margin-left: 20rpx;
+}
+
+/* page */
+.common-page-head{
+ padding:35rpx;
+ text-align: center;
+}
+.common-page-head-title {
+ display: inline-block;
+ padding: 0 40rpx;
+ font-size: 30rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ color: #BEBEBE;
+ box-sizing: border-box;
+ border-bottom: 2rpx solid #D8D8D8;
+}
+
+.uni-padding-wrap{
+ /* width:690rpx; */
+ padding:0 30rpx;
+}
+.uni-word {
+ text-align: center;
+ padding:200rpx 100rpx;
+}
+.uni-title {
+ font-size:30rpx;
+ font-weight:500;
+ padding:20rpx 0;
+ line-height:1.5;
+}
+.uni-text{
+ font-size:28rpx;
+}
+.uni-title text{
+ font-size:24rpx;
+ color:#888;
+}
+
+.uni-text-gray{
+ color: #ccc;
+}
+.uni-text-small {
+ font-size:24rpx;
+}
+.uni-common-mb{
+ margin-bottom:30rpx;
+}
+.uni-common-pb{
+ padding-bottom:30rpx;
+}
+.uni-common-pl{
+ padding-left:30rpx;
+}
+.uni-common-mt{
+ margin-top:30rpx;
+}
+.uni-text-nowrap {
+ white-space: nowrap;
+}
+/* 背景色 */
+.uni-bg-red{
+ background:#F76260; color:#FFF;
+}
+.uni-bg-green{
+ background:#09BB07; color:#FFF;
+}
+.uni-bg-blue{
+ background:#007AFF; color:#FFF;
+}
+/* 标题 */
+.uni-h1 {font-size: 80rpx; font-weight:700;}
+.uni-h2 {font-size: 60rpx; font-weight:700;}
+.uni-h3 {font-size: 48rpx; font-weight:700;}
+.uni-h4 {font-size: 36rpx; font-weight:700;}
+.uni-h5 {font-size: 28rpx; color: #8f8f94;}
+.uni-h6 {font-size: 24rpx; color: #8f8f94;}
+.uni-bold{font-weight:bold;}
+
+/* 文本溢出隐藏 */
+.uni-ellipsis {overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
+
+/* 竖向百分百按钮 */
+.uni-btn-v{
+ padding:10rpx 0;
+}
+.uni-btn-v button{margin:20rpx 0;}
+
+/* 表单 */
+.uni-form-item{
+ display:flex;
+ width:100%;
+ padding:10rpx 0;
+}
+.uni-form-item .title{
+ padding:10rpx 25rpx;
+}
+.uni-label {
+ width: 210rpx;
+ word-wrap: break-word;
+ word-break: break-all;
+ text-indent:20rpx;
+}
+.uni-input {
+ height: 50rpx;
+ padding: 15rpx 25rpx;
+ line-height:50rpx;
+ font-size:28rpx;
+ background:#FFF;
+ flex: 1;
+}
+radio-group, checkbox-group{
+ width:100%;
+}
+radio-group label, checkbox-group label{
+ padding-right:20rpx;
+}
+.uni-form-item .with-fun{
+ display:flex;
+ flex-wrap:nowrap;
+ background:#FFFFFF;
+}
+.uni-form-item .with-fun .uni-icon{
+ width:40px;
+ height:80rpx;
+ line-height:80rpx;
+ flex-shrink:0;
+}
+
+/* loadmore */
+.uni-loadmore{
+ height:80rpx;
+ line-height:80rpx;
+ text-align:center;
+ padding-bottom:30rpx;
+}
+/*数字角标*/
+/* .uni-badge,
+.uni-badge-default {
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
+ font-size: 12px;
+ line-height: 1;
+ display: inline-block;
+ padding: 3px 6px;
+ color: #333;
+ border-radius: 100px;
+ background-color: rgba(0, 0, 0, .15);
+} */
+.uni-badge.uni-badge-inverted {
+ padding: 0 5px 0 0;
+ color: #929292;
+ background-color: transparent
+}
+.uni-badge-primary {
+ color: #fff;
+ background-color: #007aff
+}
+.uni-badge-blue.uni-badge-inverted,
+.uni-badge-primary.uni-badge-inverted {
+ color: #007aff;
+ background-color: transparent
+}
+.uni-badge-green,
+.uni-badge-success {
+ color: #fff;
+ background-color: #4cd964;
+}
+.uni-badge-green.uni-badge-inverted,
+.uni-badge-success.uni-badge-inverted {
+ color: #4cd964;
+ background-color: transparent
+}
+.uni-badge-warning,
+.uni-badge-yellow {
+ color: #fff;
+ background-color: #f0ad4e
+}
+.uni-badge-warning.uni-badge-inverted,
+.uni-badge-yellow.uni-badge-inverted {
+ color: #f0ad4e;
+ background-color: transparent
+}
+.uni-badge-danger,
+.uni-badge-red {
+ color: #fff;
+ background-color: #dd524d
+}
+.uni-badge-danger.uni-badge-inverted,
+.uni-badge-red.uni-badge-inverted {
+ color: #dd524d;
+ background-color: transparent
+}
+.uni-badge-purple,
+.uni-badge-royal {
+ color: #fff;
+ background-color: #8a6de9
+}
+.uni-badge-purple.uni-badge-inverted,
+.uni-badge-royal.uni-badge-inverted {
+ color: #8a6de9;
+ background-color: transparent
+}
+
+/*折叠面板 */
+.uni-collapse-content {
+ height: 0;
+ width: 100%;
+ overflow: hidden;
+}
+.uni-collapse-content.uni-active {
+ height: auto;
+}
+
+/*卡片视图 */
+.uni-card {
+ background: #fff;
+ border-radius: 8rpx;
+ margin:20rpx 0;
+ position: relative;
+ /* box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, .3); */
+}
+.uni-card-content {
+ font-size: 30rpx;
+}
+.uni-card-content.image-view{
+ width: 100%;
+ margin: 0;
+}
+.uni-card-content-inner {
+ position: relative;
+ padding: 30rpx;
+}
+.uni-card-footer,
+.uni-card-header {
+ position: relative;
+ display: flex;
+ min-height: 50rpx;
+ padding: 20rpx 30rpx;
+ justify-content: space-between;
+ align-items: center;
+}
+.uni-card-header {
+ font-size: 36rpx;
+}
+.uni-card-footer {
+ color: #6d6d72;
+}
+.uni-card-footer:before,
+.uni-card-header:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+.uni-card-header:after {
+ top: auto;
+ bottom: 0;
+}
+.uni-card-media {
+ justify-content: flex-start;
+}
+.uni-card-media-logo {
+ height: 84rpx;
+ width: 84rpx;
+ margin-right: 20rpx;
+}
+.uni-card-media-body {
+ height: 84rpx;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+}
+.uni-card-media-text-top {
+ line-height: 36rpx;
+ font-size: 34rpx;
+}
+.uni-card-media-text-bottom {
+ line-height: 30rpx;
+ font-size: 28rpx;
+ color: #8f8f94;
+}
+.uni-card-link {
+ color: #007AFF;
+}
+
+/* 列表 */
+.uni-list {
+ background-color: #FFFFFF;
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+.uni-list:after {
+ position: absolute;
+ z-index: 10;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+/* .uni-list::before {
+ position: absolute;
+ z-index: 10;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+} */
+.uni-list-cell {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+.uni-list-cell-hover {
+ background-color: #eee;
+}
+.uni-list-cell-pd {
+ padding: 22rpx 30rpx;
+}
+.uni-list-cell-left {
+ white-space: nowrap;
+ font-size:28rpx;
+ padding: 0 30rpx;
+}
+.uni-list-cell-db,
+.uni-list-cell-right {
+ flex: 1;
+}
+.uni-list-cell::after {
+ position: absolute;
+ z-index: 3;
+ right: 0;
+ bottom: 0;
+ left: 30rpx;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+.uni-list .uni-list-cell:last-child::after {
+ height: 0rpx;
+}
+.uni-list-cell-last.uni-list-cell::after {
+ height: 0rpx;
+}
+.uni-list-cell-divider {
+ position: relative;
+ display: flex;
+ color: #999;
+ background-color: #f7f7f7;
+ padding:15rpx 20rpx;
+}
+.uni-list-cell-divider::before {
+ position: absolute;
+ right: 0;
+ top: 0;
+ left: 0;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+.uni-list-cell-divider::after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0rpx;
+ height: 1px;
+ content: '';
+ -webkit-transform: scaleY(.5);
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+.uni-list-cell-navigate {
+ font-size:30rpx;
+ padding: 22rpx 30rpx;
+ line-height: 48rpx;
+ position: relative;
+ display: flex;
+ box-sizing: border-box;
+ width: 100%;
+ flex: 1;
+ justify-content: space-between;
+ align-items: center;
+}
+.uni-list-cell-navigate {
+ padding-right: 36rpx;
+}
+.uni-navigate-badge {
+ padding-right: 50rpx;
+}
+.uni-list-cell-navigate.uni-navigate-right:after {
+ font-family: uniicons;
+ content: '\e583';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+.uni-list-cell-navigate.uni-navigate-bottom:after {
+ font-family: uniicons;
+ content: '\e581';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+.uni-list-cell-navigate.uni-navigate-bottom.uni-active::after {
+ font-family: uniicons;
+ content: '\e580';
+ position: absolute;
+ right: 24rpx;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+.uni-collapse.uni-list-cell {
+ flex-direction: column;
+}
+.uni-list-cell-navigate.uni-active {
+ background: #eee;
+}
+.uni-list.uni-collapse {
+ box-sizing: border-box;
+ height: 0;
+ overflow: hidden;
+}
+.uni-collapse .uni-list-cell {
+ padding-left: 20rpx;
+}
+.uni-collapse .uni-list-cell::after {
+ left: 52rpx;
+}
+.uni-list.uni-active {
+ height: auto;
+}
+
+/* 三行列表 */
+.uni-triplex-row {
+ display: flex;
+ flex: 1;
+ width: 100%;
+ box-sizing: border-box;
+ flex-direction: row;
+ padding: 22rpx 30rpx;
+}
+.uni-triplex-right,
+.uni-triplex-left {
+ display: flex;
+ flex-direction: column;
+}
+.uni-triplex-left {
+ width: 84%;
+}
+.uni-triplex-left .uni-title{
+ padding:8rpx 0;
+}
+.uni-triplex-left .uni-text, .uni-triplex-left .uni-text-small{color:#999999;}
+.uni-triplex-right {
+ width: 16%;
+ text-align: right;
+}
+
+/* 图文列表 */
+.uni-media-list {
+ padding: 22rpx 30rpx;
+ box-sizing: border-box;
+ display: flex;
+ width: 100%;
+ flex-direction: row;
+}
+.uni-navigate-right.uni-media-list {
+ padding-right: 74rpx;
+}
+.uni-pull-right {
+ flex-direction: row-reverse;
+}
+.uni-pull-right>.uni-media-list-logo {
+ margin-right: 0rpx;
+ margin-left: 20rpx;
+}
+.uni-media-list-logo {
+ height: 84rpx;
+ width: 84rpx;
+ margin-right: 20rpx;
+}
+.uni-media-list-logo image {
+ height: 100%;
+ width: 100%;
+}
+.uni-media-list-body {
+ height: 84rpx;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: flex-start;
+ overflow: hidden;
+}
+.uni-media-list-text-top {
+ width: 100%;
+ line-height: 36rpx;
+ font-size: 30rpx;
+}
+.uni-media-list-text-bottom {
+ width: 100%;
+ line-height: 30rpx;
+ font-size: 26rpx;
+ color: #8f8f94;
+}
+
+/* 九宫格 */
+.uni-grid-9 {
+ background: #f2f2f2;
+ width: 750rpx;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ border-top: 2rpx solid #eee;
+}
+.uni-grid-9-item {
+ width: 250rpx;
+ height: 200rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-bottom: 2rpx solid;
+ border-right: 2rpx solid;
+ border-color: #eee;
+ box-sizing: border-box;
+}
+.no-border-right {
+ border-right: none;
+}
+.uni-grid-9-image {
+ width: 100rpx;
+ height: 100rpx;
+}
+.uni-grid-9-text {
+ width: 250rpx;
+ line-height: 4rpx;
+ height: 40rpx;
+ text-align: center;
+ font-size: 30rpx;
+}
+.uni-grid-9-item-hover {
+ background: rgba(0, 0, 0, 0.1);
+}
+
+/* 上传 */
+.uni-uploader {
+ flex: 1;
+ flex-direction: column;
+}
+.uni-uploader-head {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+.uni-uploader-info {
+ color: #B2B2B2;
+}
+.uni-uploader-body {
+ margin-top: 16rpx;
+}
+.uni-uploader__files {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+}
+.uni-uploader__file {
+ margin: 10rpx;
+ width: 210rpx;
+ height: 210rpx;
+}
+.uni-uploader__img {
+ display: block;
+ width: 210rpx;
+ height: 210rpx;
+}
+.uni-uploader__input-box {
+ position: relative;
+ margin:10rpx;
+ width: 208rpx;
+ height: 208rpx;
+ border: 2rpx solid #D9D9D9;
+}
+.uni-uploader__input-box:before,
+.uni-uploader__input-box:after {
+ content: " ";
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ background-color: #D9D9D9;
+}
+.uni-uploader__input-box:before {
+ width: 4rpx;
+ height: 79rpx;
+}
+.uni-uploader__input-box:after {
+ width: 79rpx;
+ height: 4rpx;
+}
+.uni-uploader__input-box:active {
+ border-color: #999999;
+}
+.uni-uploader__input-box:active:before,
+.uni-uploader__input-box:active:after {
+ background-color: #999999;
+}
+.uni-uploader__input {
+ position: absolute;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+}
+
+/*问题反馈*/
+.feedback-title {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20rpx;
+ color: #8f8f94;
+ font-size: 28rpx;
+}
+.feedback-star-view.feedback-title {
+ justify-content: flex-start;
+ margin: 0;
+}
+.feedback-quick {
+ position: relative;
+ padding-right: 40rpx;
+}
+.feedback-quick:after {
+ font-family: uniicons;
+ font-size: 40rpx;
+ content: '\e581';
+ position: absolute;
+ right: 0;
+ top: 50%;
+ color: #bbb;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+}
+.feedback-body {
+ background: #fff;
+}
+.feedback-textare {
+ height: 200rpx;
+ font-size: 34rpx;
+ line-height: 50rpx;
+ width: 100%;
+ box-sizing: border-box;
+ padding: 20rpx 30rpx 0;
+}
+.feedback-input {
+ font-size: 34rpx;
+ height: 50rpx;
+ min-height: 50rpx;
+ padding: 15rpx 20rpx;
+ line-height: 50rpx;
+}
+.feedback-uploader {
+ padding: 22rpx 20rpx;
+}
+.feedback-star {
+ font-family: uniicons;
+ font-size: 40rpx;
+ margin-left: 6rpx;
+}
+.feedback-star-view {
+ margin-left: 20rpx;
+}
+.feedback-star:after {
+ content: '\e408';
+}
+.feedback-star.active {
+ color: #FFB400;
+}
+.feedback-star.active:after {
+ content: '\e438';
+}
+.feedback-submit {
+ background: #007AFF;
+ color: #FFFFFF;
+ margin: 20rpx;
+}
+
+/* input group */
+.uni-input-group {
+ position: relative;
+ padding: 0;
+ border: 0;
+ background-color: #fff;
+}
+
+.uni-input-group:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-group:after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-row {
+ position: relative;
+ display: flex;
+ flex-direction: row;
+ font-size:28rpx;
+ padding: 22rpx 30rpx;
+ justify-content: space-between;
+}
+
+.uni-input-group .uni-input-row:after {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 30rpx;
+ height: 2rpx;
+ content: '';
+ transform: scaleY(.5);
+ background-color: #c8c7cc;
+}
+
+.uni-input-row label {
+ line-height: 70rpx;
+}
+
+/* textarea */
+.uni-textarea{
+ width:100%;
+ background:#FFF;
+}
+.uni-textarea textarea{
+ width:96%;
+ padding:18rpx 2%;
+ line-height:1.6;
+ font-size:28rpx;
+ height:150rpx;
+}
+
+/* tab bar */
+.uni-tab-bar {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ overflow: hidden;
+ height: 100%;
+}
+
+.uni-tab-bar .list {
+ width: 750rpx;
+ height: 100%;
+}
+
+.uni-swiper-tab {
+ width: 100%;
+ white-space: nowrap;
+ line-height: 100rpx;
+ height: 100rpx;
+ border-bottom: 1px solid #c8c7cc;
+}
+
+.swiper-tab-list {
+ font-size: 30rpx;
+ width: 150rpx;
+ display: inline-block;
+ text-align: center;
+ color: #555;
+}
+
+.uni-tab-bar .active {
+ color: #007AFF;
+}
+
+.uni-tab-bar .swiper-box {
+ flex: 1;
+ width: 100%;
+ height: calc(100% - 100rpx);
+}
+
+.uni-tab-bar-loading{
+ padding:20rpx 0;
+}
+
+/* comment */
+.uni-comment{padding:5rpx 0; display: flex; flex-grow:1; flex-direction: column;}
+.uni-comment-list{flex-wrap:nowrap; padding:10rpx 0; margin:10rpx 0; width:100%; display: flex;}
+.uni-comment-face{width:70rpx; height:70rpx; border-radius:100%; margin-right:20rpx; flex-shrink:0; overflow:hidden;}
+.uni-comment-face image{width:100%; border-radius:100%;}
+.uni-comment-body{width:100%;}
+.uni-comment-top{line-height:1.5em; justify-content:space-between;}
+.uni-comment-top text{color:#0A98D5; font-size:24rpx;}
+.uni-comment-date{line-height:38rpx; flex-direction:row; justify-content:space-between; display:flex !important; flex-grow:1;}
+.uni-comment-date view{color:#666666; font-size:24rpx; line-height:38rpx;}
+.uni-comment-content{line-height:1.6em; font-size:28rpx; padding:8rpx 0;}
+.uni-comment-replay-btn{background:#FFF; font-size:24rpx; line-height:28rpx; padding:5rpx 20rpx; border-radius:30rpx; color:#333 !important; margin:0 10rpx;}
+
+/* swiper msg */
+.uni-swiper-msg{width:100%; padding:12rpx 0; flex-wrap:nowrap; display:flex;}
+.uni-swiper-msg-icon{width:50rpx; margin-right:20rpx;}
+.uni-swiper-msg-icon image{width:100%; flex-shrink:0;}
+.uni-swiper-msg swiper{width:100%; height:50rpx;}
+.uni-swiper-msg swiper-item{line-height:50rpx;}
+
+/* product */
+.uni-product-list {
+ display: flex;
+ width: 100%;
+ flex-wrap: wrap;
+ flex-direction: row;
+}
+
+.uni-product {
+ padding: 20rpx;
+ display: flex;
+ flex-direction: column;
+}
+
+.image-view {
+ height: 330rpx;
+ width: 330rpx;
+ margin:12rpx 0;
+}
+
+.uni-product-image {
+ height: 330rpx;
+ width: 330rpx;
+}
+
+.uni-product-title {
+ width: 300rpx;
+ word-break: break-all;
+ display: -webkit-box;
+ overflow: hidden;
+ line-height:1.5;
+ text-overflow: ellipsis;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+}
+
+.uni-product-price {
+ margin-top:10rpx;
+ font-size: 28rpx;
+ line-height:1.5;
+ position: relative;
+}
+
+.uni-product-price-original {
+ color: #e80080;
+}
+
+.uni-product-price-favour {
+ color: #888888;
+ text-decoration: line-through;
+ margin-left: 10rpx;
+}
+
+.uni-product-tip {
+ position: absolute;
+ right: 10rpx;
+ background-color: #ff3333;
+ color: #ffffff;
+ padding: 0 10rpx;
+ border-radius: 5rpx;
+}
+
+/* timeline */
+.uni-timeline {
+ margin: 35rpx 0;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+ }
+
+
+ .uni-timeline-item {
+ display: flex;
+ flex-direction: row;
+ position: relative;
+ padding-bottom: 20rpx;
+ box-sizing: border-box;
+ overflow: hidden;
+
+ }
+
+ .uni-timeline-item .uni-timeline-item-keynode {
+ width: 160rpx;
+ flex-shrink: 0;
+ box-sizing: border-box;
+ padding-right: 20rpx;
+ text-align: right;
+ line-height: 65rpx;
+ }
+
+ .uni-timeline-item .uni-timeline-item-divider {
+ flex-shrink: 0;
+ position: relative;
+ width: 30rpx;
+ height: 30rpx;
+ top: 15rpx;
+ border-radius: 50%;
+ background-color: #bbb;
+ }
+
+
+
+ .uni-timeline-item-divider::before,
+ .uni-timeline-item-divider::after {
+ position: absolute;
+ left: 15rpx;
+ width: 1rpx;
+ height: 100vh;
+ content: '';
+ background: inherit;
+ }
+
+ .uni-timeline-item-divider::before {
+ bottom: 100%;
+ }
+
+ .uni-timeline-item-divider::after {
+ top: 100%;
+ }
+
+
+ .uni-timeline-last-item .uni-timeline-item-divider:after {
+ display: none;
+ }
+
+ .uni-timeline-first-item .uni-timeline-item-divider:before {
+ display: none;
+ }
+
+ .uni-timeline-item .uni-timeline-item-content {
+ padding-left: 20rpx;
+ }
+
+ .uni-timeline-last-item .bottom-border::after{
+ display: none;
+ }
+
+ .uni-timeline-item-content .datetime{
+ color: #CCCCCC;
+ }
+
+ /* 自定义节点颜色 */
+ .uni-timeline-last-item .uni-timeline-item-divider{
+ background-color: #1AAD19;
+ }
+
+
+/* uni-icon */
+
+.uni-icon {
+ font-family: uniicons;
+ font-size: 24px;
+ font-weight: normal;
+ font-style: normal;
+ line-height: 1;
+ display: inline-block;
+ text-decoration: none;
+ -webkit-font-smoothing: antialiased;
+}
+
+.uni-icon.uni-active {
+ color: #007aff;
+}
+
+.uni-icon-contact:before {
+ content: '\e100';
+}
+
+.uni-icon-person:before {
+ content: '\e101';
+}
+
+.uni-icon-personadd:before {
+ content: '\e102';
+}
+
+.uni-icon-contact-filled:before {
+ content: '\e130';
+}
+
+.uni-icon-person-filled:before {
+ content: '\e131';
+}
+
+.uni-icon-personadd-filled:before {
+ content: '\e132';
+}
+
+.uni-icon-phone:before {
+ content: '\e200';
+}
+
+.uni-icon-email:before {
+ content: '\e201';
+}
+
+.uni-icon-chatbubble:before {
+ content: '\e202';
+}
+
+.uni-icon-chatboxes:before {
+ content: '\e203';
+}
+
+.uni-icon-phone-filled:before {
+ content: '\e230';
+}
+
+.uni-icon-email-filled:before {
+ content: '\e231';
+}
+
+.uni-icon-chatbubble-filled:before {
+ content: '\e232';
+}
+
+.uni-icon-chatboxes-filled:before {
+ content: '\e233';
+}
+
+.uni-icon-weibo:before {
+ content: '\e260';
+}
+
+.uni-icon-weixin:before {
+ content: '\e261';
+}
+
+.uni-icon-pengyouquan:before {
+ content: '\e262';
+}
+
+.uni-icon-chat:before {
+ content: '\e263';
+}
+
+.uni-icon-qq:before {
+ content: '\e264';
+}
+
+.uni-icon-videocam:before {
+ content: '\e300';
+}
+
+.uni-icon-camera:before {
+ content: '\e301';
+}
+
+.uni-icon-mic:before {
+ content: '\e302';
+}
+
+.uni-icon-location:before {
+ content: '\e303';
+}
+
+.uni-icon-mic-filled:before,
+.uni-icon-speech:before {
+ content: '\e332';
+}
+
+.uni-icon-location-filled:before {
+ content: '\e333';
+}
+
+.uni-icon-micoff:before {
+ content: '\e360';
+}
+
+.uni-icon-image:before {
+ content: '\e363';
+}
+
+.uni-icon-map:before {
+ content: '\e364';
+}
+
+.uni-icon-compose:before {
+ content: '\e400';
+}
+
+.uni-icon-trash:before {
+ content: '\e401';
+}
+
+.uni-icon-upload:before {
+ content: '\e402';
+}
+
+.uni-icon-download:before {
+ content: '\e403';
+}
+
+.uni-icon-close:before {
+ content: '\e404';
+}
+
+.uni-icon-redo:before {
+ content: '\e405';
+}
+
+.uni-icon-undo:before {
+ content: '\e406';
+}
+
+.uni-icon-refresh:before {
+ content: '\e407';
+}
+
+.uni-icon-star:before {
+ content: '\e408';
+}
+
+.uni-icon-plus:before {
+ content: '\e409';
+}
+
+.uni-icon-minus:before {
+ content: '\e410';
+}
+
+.uni-icon-circle:before,
+.uni-icon-checkbox:before {
+ content: '\e411';
+}
+
+.uni-icon-close-filled:before,
+.uni-icon-clear:before {
+ content: '\e434';
+}
+
+.uni-icon-refresh-filled:before {
+ content: '\e437';
+}
+
+.uni-icon-star-filled:before {
+ content: '\e438';
+}
+
+.uni-icon-plus-filled:before {
+ content: '\e439';
+}
+
+.uni-icon-minus-filled:before {
+ content: '\e440';
+}
+
+.uni-icon-circle-filled:before {
+ content: '\e441';
+}
+
+.uni-icon-checkbox-filled:before {
+ content: '\e442';
+}
+
+.uni-icon-closeempty:before {
+ content: '\e460';
+}
+
+.uni-icon-refreshempty:before {
+ content: '\e461';
+}
+
+.uni-icon-reload:before {
+ content: '\e462';
+}
+
+.uni-icon-starhalf:before {
+ content: '\e463';
+}
+
+.uni-icon-spinner:before {
+ content: '\e464';
+}
+
+.uni-icon-spinner-cycle:before {
+ content: '\e465';
+}
+
+.uni-icon-search:before {
+ content: '\e466';
+}
+
+.uni-icon-plusempty:before {
+ content: '\e468';
+}
+
+.uni-icon-forward:before {
+ content: '\e470';
+}
+
+.uni-icon-back:before,
+.uni-icon-left-nav:before {
+ content: '\e471';
+}
+
+.uni-icon-checkmarkempty:before {
+ content: '\e472';
+}
+
+.uni-icon-home:before {
+ content: '\e500';
+}
+
+.uni-icon-navigate:before {
+ content: '\e501';
+}
+
+.uni-icon-gear:before {
+ content: '\e502';
+}
+
+.uni-icon-paperplane:before {
+ content: '\e503';
+}
+
+.uni-icon-info:before {
+ content: '\e504';
+}
+
+.uni-icon-help:before {
+ content: '\e505';
+}
+
+.uni-icon-locked:before {
+ content: '\e506';
+}
+
+.uni-icon-more:before {
+ content: '\e507';
+}
+
+.uni-icon-flag:before {
+ content: '\e508';
+}
+
+.uni-icon-home-filled:before {
+ content: '\e530';
+}
+
+.uni-icon-gear-filled:before {
+ content: '\e532';
+}
+
+.uni-icon-info-filled:before {
+ content: '\e534';
+}
+
+.uni-icon-help-filled:before {
+ content: '\e535';
+}
+
+.uni-icon-more-filled:before {
+ content: '\e537';
+}
+
+.uni-icon-settings:before {
+ content: '\e560';
+}
+
+.uni-icon-list:before {
+ content: '\e562';
+}
+
+.uni-icon-bars:before {
+ content: '\e563';
+}
+
+.uni-icon-loop:before {
+ content: '\e565';
+}
+
+.uni-icon-paperclip:before {
+ content: '\e567';
+}
+
+.uni-icon-eye:before {
+ content: '\e568';
+}
+
+.uni-icon-arrowup:before {
+ content: '\e580';
+}
+
+.uni-icon-arrowdown:before {
+ content: '\e581';
+}
+
+.uni-icon-arrowleft:before {
+ content: '\e582';
+}
+
+.uni-icon-arrowright:before {
+ content: '\e583';
+}
+
+.uni-icon-arrowthinup:before {
+ content: '\e584';
+}
+
+.uni-icon-arrowthindown:before {
+ content: '\e585';
+}
+
+.uni-icon-arrowthinleft:before {
+ content: '\e586';
+}
+
+.uni-icon-arrowthinright:before {
+ content: '\e587';
+}
+
+.uni-icon-pulldown:before {
+ content: '\e588';
+}
+
+.uni-icon-scan:before {
+ content: "\e612";
+}
+
+/* 分界线 */
+.uni-divider{
+ height: 110rpx;
+ display: flex;
+ align-items:center;
+ justify-content: center;
+ position: relative;
+}
+.uni-divider__content{
+ font-size: 28rpx;
+ color: #999;
+ padding: 0 20rpx;
+ position: relative;
+ z-index: 101;
+ background: #F4F5F6;
+}
+.uni-divider__line{
+ background-color: #CCCCCC;
+ height: 1px;
+ width: 100%;
+ position: absolute;
+ z-index: 100;
+ top: 50%;
+ left: 0;
+ transform: translateY(50%);
+}
+
+.left-win-active text{
+ color: #007AFF !important;
+}
+
+
+.flex {
+ display: flex;
+ flex-direction: row;
+ &.gap-8 {
+ gap: 16rpx;
+ }
+ &.gap-12 {
+ gap: 24rpx;
+ }
+ &.gap-16 {
+ gap: 32rpx;
+ }
+ &.gap-32 {
+ gap: 64rpx;
+ }
+ &.flex-col {
+ flex-direction: column;
+ }
+ &.flex-wrap {
+ flex-wrap: wrap;
+ }
+}
+.flex-inline {
+ display: inline-flex;
+ &.gap-8 {
+ gap: 16rpx;
+ }
+ &.gap-12 {
+ gap: 24rpx;
+ }
+ &.gap-16 {
+ gap: 32rpx;
+ }
+ &.gap-32 {
+ gap: 64rpx;
+ }
+ &.flex-col {
+ flex-direction: column;
+ }
+ &.flex-wrap {
+ flex-wrap: wrap;
+ }
+}
+.justify-center {
+ justify-content: center;
+}
+.justify-between {
+ justify-content: space-between;
+}
+.justify-end {
+ justify-content: flex-end;
+}
+.items-center {
+ align-items: center;
+ text-overflow: ellipsis;
+}
+
+.search {
+ box-shadow: inset 0 -1px 0 0 #eee;
+ .search-item {
+ width: 50%;
+ transition: all 0.3s;
+
+ &[search=true] {
+ width: calc(100% - 120rpx);
+ .search-item-conent {
+ width: 100%;
+
+ }
+ .uni-easyinput {
+ transition: all 0.3s;
+ width: 100% !important;
+ }
+ }
+ .search-item-conent {
+ height: 88rpx;
+ line-height: 84rpx;
+ color: #999;
+ font-size: 24rpx;
+ display: flex;
+ gap: 8px;
+ &.active {
+ color: var(--primary-color) !important;
+ .uni-icons {
+ color: var(--primary-color) !important;
+ }
+ }
+ .uni-easyinput {
+ width: 180rpx;
+ }
+ }
+ }
+ .cancel-btn {
+ line-height: 88rpx;
+ padding: 0 24rpx;
+ }
+}
+
+.row {
+ --label-width: 120rpx;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ > .col {
+ font-size: 24rpx;
+ display: flex;
+ flex-direction: row;
+ margin-bottom: 12rpx;
+
+ > .label {
+ width: var(--label-width);
+ text-align: right;
+ color: #666;
+ }
+ > .content {
+ color: #333;
+ width: calc(100% - var(--label-width));
+ white-space: nowrap;
+ overflow: hidden;
+ }
+ }
+}
+
+.card {
+ margin: 0 24rpx;
+ padding: 24rpx 0;
+ box-shadow: inset 0 -1px 0 0 #eee;
+}
+
+.col-12 {
+ width: 50%;
+}
+.col-24 {
+ width: 100%;
+}
+
+.my-10 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.mt-10 {
+ margin-top: 10px;
+}
+.mb-6 {
+ margin-bottom: 6px;
+}
+.mb-8 {
+ margin-bottom: 8px;
+}
+.mb-10 {
+ margin-bottom: 10px;
+}
+.mr-4 {
+ margin-right: 4px;
+}
+.mr-6 {
+ margin-right: 6px;
+}
+.mr-12 {
+ margin-right: 12px;
+}
+.mr-20 {
+ margin-right: 20px;
+}
+
+.footer {
+ padding: 24rpx;
+ position: fixed;
+ bottom: 0;
+ box-sizing: border-box;
+ uni-button {
+ margin: 0;
+ }
+}
+
+.container {
+ padding: 24rpx;
+}
+
+.photo-container {
+ display: flex;
+ gap: 12rpx;
+ flex-wrap: wrap;
+ .photo-item {
+ height: 166rpx;
+ width: 166rpx;
+ position: relative;
+ image {
+ width: 100%;
+ height: 100%;
+ }
+ radio {
+ position: absolute;
+ right: 9rpx;
+ bottom: 9rpx;
+ }
+ }
+}
+
+.popup-container {
+ background-color: #fff;
+ .popup-header {
+ padding: 24rpx;
+ text-align: center;
+ position: relative;
+ box-shadow: inset 0 -1px 0 0 #E5E5E5;
+ .close-btn {
+ position: absolute;
+ top: 24rpx;
+ right: 24rpx;
+ }
+ }
+ .popup-body {
+ .filter-container {
+ padding: 24rpx;
+ .filter-label {
+ margin-bottom: 14rpx;
+
+ }
+ }
+ }
+ .footer {
+ position: static;
+ box-shadow: inset 0 1px 0 0 #E5E5E5;
+ }
+}
\ No newline at end of file
diff --git a/common/util.js b/common/util.js
new file mode 100644
index 0000000..d82a6df
--- /dev/null
+++ b/common/util.js
@@ -0,0 +1,154 @@
+import moment from 'moment'
+
+export function formatTime(time) {
+ if (typeof time !== 'number' || time < 0) {
+ return time
+ }
+
+ var hour = parseInt(time / 3600)
+ time = time % 3600
+ var minute = parseInt(time / 60)
+ time = time % 60
+ var second = time
+
+ return ([hour, minute, second]).map(function(n) {
+ n = n.toString()
+ return n[1] ? n : '0' + n
+ }).join(':')
+}
+
+export function formatLocation(longitude, latitude) {
+ if (typeof longitude === 'string' && typeof latitude === 'string') {
+ longitude = parseFloat(longitude)
+ latitude = parseFloat(latitude)
+ }
+
+ longitude = longitude.toFixed(2)
+ latitude = latitude.toFixed(2)
+
+ return {
+ longitude: longitude.toString().split('.'),
+ latitude: latitude.toString().split('.')
+ }
+}
+
+export var dateUtils = {
+ UNITS: {
+ '年': 31557600000,
+ '月': 2629800000,
+ '天': 86400000,
+ '小时': 3600000,
+ '分钟': 60000,
+ '秒': 1000
+ },
+ humanize: function(milliseconds) {
+ var humanize = '';
+ for (var key in this.UNITS) {
+ if (milliseconds >= this.UNITS[key]) {
+ humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
+ break;
+ }
+ }
+ return humanize || '刚刚';
+ },
+ format: function(dateStr) {
+ var date = this.parse(dateStr)
+ var diff = Date.now() - date.getTime();
+ if (diff < this.UNITS['天']) {
+ return this.humanize(diff);
+ }
+ var _format = function(number) {
+ return (number < 10 ? ('0' + number) : number);
+ };
+ return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
+ _format(date.getHours()) + ':' + _format(date.getMinutes());
+ },
+ parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象
+ var a = str.split(/[^0-9]/);
+ return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
+ }
+};
+
+export function now(format) {
+ return moment().format(format)
+}
+
+export function getDictLabel(dicts, value) {
+ if (!value) {
+ return ''
+ }
+ if (!dicts || !dicts.length) {
+ return ''
+ }
+ const obj = dicts.find(item => item.dictValue === value)
+ if (!obj) {
+ return ''
+ }
+ return obj.dictLabel;
+}
+
+export function getDictLabelByArray(dicts, value) {
+ if (!value) {
+ return ''
+ }
+ if (!dicts || !dicts.length) {
+ return ''
+ }
+ const arr = dicts.filter(item => value.split(',').indexOf(item.dictValue) > -1)
+ if (arr.length === 0) {
+ return ''
+ }
+ return arr.map(item => item.dictLabel).join('、');
+}
+
+export const formatTimeText = (seconds) => {
+ if (!seconds) {
+ return ''
+ }
+ if (seconds < 0) {
+ return formatTimeText(-seconds);
+ }
+ // 秒
+ if (seconds < 60) {
+ return seconds + '秒'
+ }
+ // 分钟
+ if (seconds < 3600) {
+ return `${Math.floor(seconds / 60)}分${seconds % 60}秒`
+ }
+ // 小时
+ if (seconds < 86400) {
+ const remainder = seconds % 3600;
+ return `${Math.floor(seconds / 3600)}时${parseInt(seconds % 3600 / 60)}分`
+ }
+ // 天
+ const remainder = seconds % 86400;
+ return `${Math.floor(seconds / 86400)}天${parseInt(seconds % 86400 / 3600)}时`
+}
+
+export const getFileType = (fileName) => {
+ if (!fileName || fileName.indexOf('.') === -1) {
+ return 'txt';
+ }
+ const fileSuffix = fileName.substr(fileName.lastIndexOf('.') + 1).toLowerCase();
+ const imgSuffix = ['png', 'jpg', 'jpeg', 'gif'];
+ if (imgSuffix.indexOf(fileSuffix) > -1) {
+ return 'img'
+ }
+ if (fileSuffix === 'doc' || fileSuffix === 'docx' ) {
+ return 'doc'
+ }
+ if (fileSuffix === 'xls' || fileSuffix === 'xlsx' ) {
+ return 'xls'
+ }
+ if (fileSuffix === 'pdf' ) {
+ return 'pdf'
+ }
+ if (fileSuffix === 'mp3') {
+ return 'mp3'
+ }
+ if (fileSuffix === 'mp4') {
+ return 'mp4'
+ }
+ return 'txt';
+}
diff --git a/components/empty.vue b/components/empty.vue
new file mode 100644
index 0000000..f0a9118
--- /dev/null
+++ b/components/empty.vue
@@ -0,0 +1,31 @@
+
+
+
+ {{ description }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/file-list.vue b/components/file-list.vue
new file mode 100644
index 0000000..7e6cc04
--- /dev/null
+++ b/components/file-list.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+ {{ file.fileName }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/filter-radio.vue b/components/filter-radio.vue
new file mode 100644
index 0000000..6771357
--- /dev/null
+++ b/components/filter-radio.vue
@@ -0,0 +1,60 @@
+
+
+ {{ item[prop.text] }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/inspection-task-data-picker.vue b/components/inspection-task-data-picker.vue
new file mode 100644
index 0000000..f122c38
--- /dev/null
+++ b/components/inspection-task-data-picker.vue
@@ -0,0 +1,134 @@
+
+
+
+ {{ text }}
+ 请关联督察任务
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+
+ 任务名称:
+ {{ item.taskName }}
+
+
+ 参与人员:
+ {{ item.persons }}
+
+
+ 督察单位:
+ {{ item.supDepartName }}
+
+
+ 任务类型:
+ {{ item.supervisionType }}
+
+
+ 任务内容:
+ {{ item.taskContent }}
+
+
+ 督察时间:
+ {{ item.beginTime }} ~ {{ item.endTime }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/modal.vue b/components/modal.vue
new file mode 100644
index 0000000..835dc33
--- /dev/null
+++ b/components/modal.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/n-button.vue b/components/n-button.vue
new file mode 100644
index 0000000..e1d5069
--- /dev/null
+++ b/components/n-button.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/negative.vue b/components/negative.vue
new file mode 100644
index 0000000..762e25e
--- /dev/null
+++ b/components/negative.vue
@@ -0,0 +1,420 @@
+
+
+
+
+
+
+
+ 问题信息
+
+
+ 源头编号:
+ {{ negative.originId }}
+
+
+ 问题发现时间:
+ {{ negative.discoveryTime }}
+
+
+ 问题发生时间:
+ {{ negative.happenTime }}
+
+
+ 问题来源:
+ {{ negative.problemSources }}
+
+
+ 业务类别:
+ {{ negative.businessTypeName }}
+
+
+ 投诉反映人:
+ {{ negative.responderName }}
+
+
+ 联系电话:
+ {{ negative.contactPhone }}
+
+
+ 涉嫌问题:
+ {{ getDictLabelByArray(suspectProblems, negative.involveProblem) || '/' }}
+
+
+ 涉及单位:
+ {{ negative.involveDepartName }}
+
+
+ 事情简要描述
+
+ {{ negative.thingDesc }}
+
+
+
+ 核查办理
+
+
+ 核查情况:
+ {{ negative.checkStatusName }}
+
+
+ 是否已整改:
+ {{ negative.isRectifyName }}
+
+
+ 追责对象:
+ {{ getDictLabel(accountabilityTarget, negative.accountabilityTarget) }}
+
+
+ 整改限制:
+ {{ negative.rectifyRestrictionDays }}天
+
+
+ 问题核查情况
+
+ {{ negative.checkStatusDesc }}
+
+ 问题整改情况
+
+ {{ negative.rectifyDesc }}
+
+ 问题未整改原因
+
+ {{ negative.unrectifyReason }}
+
+
+
+ 涉及人员{{ index + 1 }}
+
+
+ 姓名:
+ {{ item.blameName }}
+
+
+ 警号:
+ {{ item.blameEmpNo }}
+
+
+ 身份证:
+ {{ item.blameIdCode }}
+
+
+ 人员属性:
+ {{ getDictLabel(personTypes, item.ivPersonTypeCode) }}
+
+
+ 问题类型{{ index + 1 }}:
+ {{ problem.oneLevelContent }} / {{ problem.twoLevelContent }} / {{ problem.threeLevelContent }}
+
+
+
+ 责任类别:
+ {{ item.responsibilityTypeName }}
+
+
+ 主观方面:
+ {{ item.subjectiveAspectName }}
+
+
+ 维权容错:
+ {{ item.protectRightsName }}
+
+
+ 督察措施:
+ {{ item.superviseMeasuresName }}
+
+
+ 处置结果:
+ {{ item.handleResultName }} {{ item.handleResultNameOther }}
+
+
+
+
+ 涉及领导
+
+
+ 领导姓名:
+ {{ item.leadName }}
+
+
+ 身份证:
+ {{ item.leadIdCode }}
+
+
+
+ 责任类别:
+ {{ item.responsibilityTypeName }}
+
+
+ 处置结果:
+ {{ item.leadHandleResultName }} {{ item.leadHandleResultNameOther }}
+
+
+
+
+
+ 办结佐证材料
+
+
+
+
+
+
+
+
+
+
+ {{ item.crtTime }}
+ {{ item.departName }}
+ {{ item.crtName }}
+ {{ item.actionName }}
+
+
+ 用时
+ {{ getTime(index) }}
+
+
+
+
+
+
+
+
+
+
+ 问题信息
+
+
+ 源头编号:
+
+
+
+
+
+ 问题发现时间:
+
+
+
+ 问题来源:
+
+
+
+ 业务类别:
+
+
+
+ 涉嫌问题:
+
+
+
+ 涉及单位:
+
+
+
+ 事情简要描述
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/net-image.vue b/components/net-image.vue
new file mode 100644
index 0000000..8f50263
--- /dev/null
+++ b/components/net-image.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/police-picker.vue b/components/police-picker.vue
new file mode 100644
index 0000000..c8e319b
--- /dev/null
+++ b/components/police-picker.vue
@@ -0,0 +1,214 @@
+
+
+
+ {{ item.name.substring(item.name.length - 2) }}
+
+
+
+
+
+
+
+
+
+ {{ item.name.substring(item.name.length - 2) }}
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/problem-picker.vue b/components/problem-picker.vue
new file mode 100644
index 0000000..2adc543
--- /dev/null
+++ b/components/problem-picker.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/skeleton.vue b/components/skeleton.vue
new file mode 100644
index 0000000..a83cc0f
--- /dev/null
+++ b/components/skeleton.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/tabs.vue b/components/tabs.vue
new file mode 100644
index 0000000..88b5e74
--- /dev/null
+++ b/components/tabs.vue
@@ -0,0 +1,87 @@
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/upload.vue b/components/upload.vue
new file mode 100644
index 0000000..ab17b26
--- /dev/null
+++ b/components/upload.vue
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hybrid/html/local.html b/hybrid/html/local.html
new file mode 100644
index 0000000..9a21210
--- /dev/null
+++ b/hybrid/html/local.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+ 本地网页
+
+
+
+ web-view 组件加载本地 html 示例,仅在 App 环境下生效。点击下列按钮,跳转至其它页面。
+
+
+
+
+
+
+
+ 网页向应用发送消息。注意:小程序端应用会在此页面后退时接收到消息。
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..c1ee912
--- /dev/null
+++ b/index.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 0000000..7255483
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,11 @@
+module.exports = {
+ testTimeout: 20000,
+ reporters: [
+ 'default'
+ ],
+ watchPathIgnorePatterns: ['/node_modules/', '/dist/', '/.git/'],
+ moduleFileExtensions: ['js', 'json'],
+ rootDir: __dirname,
+ testMatch: ["/pages/**/*test.[jt]s?(x)"],
+ testPathIgnorePatterns: ['/node_modules/']
+}
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..a7182f0
--- /dev/null
+++ b/main.js
@@ -0,0 +1,45 @@
+import App from './App'
+import store from './store'
+
+// #ifndef VUE3
+import Vue from 'vue'
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+Vue.prototype.$adpid = "1111111111"
+Vue.prototype.$backgroundAudioData = {
+ playing: false,
+ playTime: 0,
+ formatedPlayTime: '00:00:00'
+}
+App.mpType = 'app'
+const app = new Vue({
+ store,
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import {
+ createSSRApp
+} from 'vue'
+import * as Pinia from 'pinia';
+import Vuex from "vuex";
+export function createApp() {
+ const app = createSSRApp(App)
+ app.use(store)
+ app.use(Pinia.createPinia());
+
+ app.config.globalProperties.$adpid = "1111111111"
+ app.config.globalProperties.$backgroundAudioData = {
+ playing: false,
+ playTime: 0,
+ formatedPlayTime: '00:00:00'
+ }
+ return {
+ app,
+ Vuex, // 如果 nvue 使用 vuex 的各种map工具方法时,必须 return Vuex
+ Pinia // 此处必须将 Pinia 返回
+ }
+}
+// #endif
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..254d975
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,200 @@
+{
+ "name" : "supervision-app",
+ "appid" : "__UNI__3A60B92",
+ "description" : "应用描述",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueCompiler" : "uni-app",
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "nvueLaunchMode" : "fast",
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ "compatible" : {
+ //uni-app兼容模式
+ "ignoreVersion" : true
+ },
+ "modules" : {
+ "OAuth" : {},
+ "Payment" : {},
+ "Push" : {},
+ "Share" : {},
+ "Speech" : {},
+ "VideoPlayer" : {},
+ "LivePusher" : {}
+ },
+ "distribute" : {
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ "ios" : {},
+ "sdkConfigs" : {
+ "speech" : {
+ "ifly" : {}
+ }
+ },
+ "orientation" : [ "portrait-primary" ],
+ "splashscreen" : {
+ "androidStyle" : "default",
+ "iosStyle" : "common",
+ "android" : {
+ "hdpi" : "static/splash.9.png"
+ }
+ }
+ },
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "quickapp" : {},
+ "quickapp-native" : {
+ "icon" : "/static/logo.png",
+ "package" : "com.example.demo",
+ "features" : [
+ {
+ "name" : "system.clipboard"
+ }
+ ]
+ },
+ "quickapp-webview" : {
+ "icon" : "/static/logo.png",
+ "package" : "com.example.demo",
+ "minPlatformVersion" : 1070,
+ "versionName" : "1.0.0",
+ "versionCode" : 100
+ },
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true,
+ "permission" : {
+ "scope.userLocation" : {
+ "desc" : "演示定位能力"
+ }
+ },
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "mp-alipay" : {
+ "usingComponents" : true,
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "mp-baidu" : {
+ "usingComponents" : true,
+ "uniStatistics" : {
+ "enable" : true
+ },
+ "dynamicLib" : {
+ "editorLib" : {
+ "provider" : "swan-editor"
+ }
+ }
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true,
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "mp-jd" : {
+ "usingComponents" : true,
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "h5" : {
+ "template" : "template.h5.html",
+ "router" : {
+ "mode" : "history",
+ "base" : ""
+ },
+ "sdkConfigs" : {
+ "maps" : {
+ "qqmap" : {
+ "key" : "TKUBZ-D24AF-GJ4JY-JDVM2-IBYKK-KEBCU"
+ }
+ }
+ },
+ "async" : {
+ "timeout" : 20000
+ },
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "vueVersion" : "3",
+ "mp-kuaishou" : {
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "mp-lark" : {
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "mp-qq" : {
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "quickapp-webview-huawei" : {
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "quickapp-webview-union" : {
+ "uniStatistics" : {
+ "enable" : true
+ }
+ },
+ "uniStatistics" : {
+ "version" : "2",
+ "enable" : true
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..f5975c1
--- /dev/null
+++ b/package.json
@@ -0,0 +1,81 @@
+{
+ "id": "supervision-app",
+ "name": "supervision-app",
+ "displayName": "supervision-app",
+ "version": "3.4.8",
+ "description": "",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": "https://github.com/dcloudio/hello-uniapp.git",
+ "keywords": [],
+ "author": "",
+ "license": "MIT",
+ "homepage": "https://github.com/dcloudio/hello-uniapp#readme",
+ "dependencies": {
+ "image-tools": "^1.4.0",
+ "moment": "^2.30.1"
+ },
+ "dcloudext": {
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "无",
+ "permissions": "无"
+ },
+ "npmurl": "",
+ "type": "uniapp-template-project"
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y",
+ "alipay": "n"
+ },
+ "client": {
+ "App": {
+ "app-vue": "y",
+ "app-nvue": "y",
+ "app-harmony": "u",
+ "app-uvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "y",
+ "Android Browser": "y",
+ "微信浏览器(Android)": "y",
+ "QQ浏览器(Android)": "y"
+ },
+ "H5-pc": {
+ "Chrome": "y",
+ "IE": "y",
+ "Edge": "y",
+ "Firefox": "y",
+ "Safari": "y"
+ },
+
+ "Vue": {
+ "vue2": "y",
+ "vue3": "y"
+ }
+ }
+ }
+ },
+ "uni-app": {
+ "scripts": {
+
+ }
+ }
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..d6291c5
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,215 @@
+{
+
+ "pages": [
+ // pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "移动督察",
+ "enablePullDownRefresh": true,
+ "app-plus": {
+ "pullToRefresh": {
+ "support": true,
+ "color": "#2979ff", //小圈圈的颜色
+ "style": "circle" //小圈圈的样式
+ }
+ }
+ }
+ },
+ {
+ "path": "pages/common/camera",
+ "style": {
+ "navigationBarTitleText": "随手拍",
+ "app-plus": {
+
+ }
+ }
+ },
+ {
+ "path": "pages/photo/index",
+ "style": {
+ "navigationBarTitleText": "问题照片"
+ }
+ },
+ {
+ "path": "pages/negative/index",
+ "style": {
+ "navigationBarTitleText": "问题清单"
+ }
+ },
+ {
+ "path": "pages/negative/info",
+ "style": {
+ "navigationBarTitleText": ""
+ }
+ },
+ {
+ "path": "pages/negative/action",
+ "style": {
+ "navigationBarTitleText": ""
+ }
+ },
+ {
+ "path": "pages/duty/index",
+ "style": {
+ "navigationBarTitleText": "值班报备"
+ }
+ },
+ {
+ "path": "pages/comfort/list",
+ "style": {
+ "navigationBarTitleText": "抚慰申请"
+ }
+ },
+ {
+ "path": "pages/comfort/action",
+ "style": {
+ "navigationBarTitleText": "抚慰申请"
+ }
+ },
+ {
+ "path": "pages/comfort/add",
+ "style": {
+ "navigationBarTitleText": "抚慰申请"
+ }
+ },
+ {
+ "path": "pages/books/index",
+ "style": {
+ "navigationBarTitleText": "知识库"
+ }
+ },
+ {
+ "path": "pages/center/manual",
+ "style": {
+ "navigationBarTitleText": "使用手册"
+ }
+ },
+ {
+ "path": "pages/center/about",
+ "style": {
+ "navigationBarTitleText": "关于APP"
+ }
+ },
+ {
+ "path": "pages/center/feedback",
+ "style": {
+ "navigationBarTitleText": "意见反馈"
+ }
+ }
+ ],
+ "subPackages": [
+ {
+ "root": "pages/task",
+ "pages": [{
+ "path": "index",
+ "style": {
+ "navigationBarTitleText": "我的任务"
+ }
+ },
+ {
+ "path": "testingAlcohol/people",
+ "style": {
+ "navigationBarTitleText": "工作日测酒"
+ }
+ },
+ {
+ "path": "testingAlcohol/info",
+ "style": {
+ "navigationBarTitleText": "工作日测酒"
+ }
+ },
+ {
+ "path": "testingAlcohol/add",
+ "style": {
+ "navigationBarTitleText": "测酒情况录入"
+ }
+ },
+ {
+ "path": "inspection/info",
+ "style": {
+ "navigationBarTitleText": "督察任务要求"
+ }
+ },
+ {
+ "path": "inspection/list",
+ "style": {
+ "navigationBarTitleText": "督察任务"
+ }
+ },
+
+ {
+ "path": "selfexamination/index",
+ "style": {
+ "navigationBarTitleText": "所队自查任务"
+ }
+ },
+ {
+ "path": "selfexamination/add",
+ "style": {
+ "navigationBarTitleText": "所队自查任务"
+ }
+ },
+ {
+ "path": "selfexamination/list",
+ "style": {
+ "navigationBarTitleText": "所队自查任务"
+ }
+ },
+ {
+ "path": "selfexamination/info",
+ "style": {
+ "navigationBarTitleText": "所队自查任务"
+ }
+ },
+ {
+ "path": "problem/index",
+ "style": {
+ "navigationBarTitleText": "问题详情"
+ }
+ },
+ {
+ "path": "problem/list",
+ "style": {
+ "navigationBarTitleText": "问题详情"
+ }
+ },
+ {
+ "path": "problem/add",
+ "style": {
+ "navigationBarTitleText": "新增督察任务"
+ }
+ }
+ ]
+ }
+ ],
+ "globalStyle": {
+ "pageOrientation": "portrait",
+ "navigationBarTitleText": "移动督察",
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#0e79f2",
+ "h5": {
+ "maxWidth": 1190,
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#0e79f2"
+ }
+ },
+ "easycom": {
+ "autoscan": true,
+ "custom": {
+ "tabs": "@/components/tabs.vue",
+ "upload": "@/components/upload.vue",
+ "police-picker": "@/components/police-picker.vue",
+ "problem-picker": "@/components/problem-picker.vue",
+ "inspection-task-data-picker": "@/components/inspection-task-data-picker.vue",
+ "net-image": "@/components/net-image.vue",
+ "empty": "@/components/empty.vue",
+ "skeleton": "@/components/skeleton.vue",
+ "file-list": "@/components/file-list.vue",
+ "filter-radio": "@/components/filter-radio.vue",
+ "negative": "@/components/negative.vue",
+ "n-button": "@/components/n-button.vue",
+ "modal": "@/components/modal.vue"
+ }
+ }
+}
\ No newline at end of file
diff --git a/pages/books/index.vue b/pages/books/index.vue
new file mode 100644
index 0000000..7580fbd
--- /dev/null
+++ b/pages/books/index.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+ 督察知识库
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+
+
+
+
+
+
+
+ {{ item.fileName }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/center/about.vue b/pages/center/about.vue
new file mode 100644
index 0000000..b549784
--- /dev/null
+++ b/pages/center/about.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+ 移动督察
+ 版本 v6.2.1
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/center/feedback.vue b/pages/center/feedback.vue
new file mode 100644
index 0000000..063e994
--- /dev/null
+++ b/pages/center/feedback.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/center/manual.vue b/pages/center/manual.vue
new file mode 100644
index 0000000..12d7185
--- /dev/null
+++ b/pages/center/manual.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/comfort/action.vue b/pages/comfort/action.vue
new file mode 100644
index 0000000..2348de2
--- /dev/null
+++ b/pages/comfort/action.vue
@@ -0,0 +1,176 @@
+
+
+
+ 办理信息
+
+
+ 申请时间:
+ {{ comfort.apply?.applyDate }}
+
+
+ 是否本人:
+ {{ comfort.apply?.isSelf === '1'? '是' : '否' }}
+
+
+ 代理人姓名:
+ {{ comfort.apply?.agentName }}
+
+
+ 关系:
+ {{ comfort.apply?.relation }}
+
+
+
+
+ 申请人信息
+
+
+ 申请人姓名:
+ {{ comfort.apply?.applicantEmpName }}
+
+
+ 性别:
+ {{ comfort.apply?.sex }}
+
+
+ 警号:
+ {{ comfort.person?.empNo }}
+
+
+ 联系电话:
+ {{ comfort.person?.mobile }}
+
+
+ 单位:
+ {{ comfort.apply?.departName }}
+
+
+ 身份证:
+ {{ comfort.person?.idCode }}
+
+
+ 出生年月:
+ {{ comfort.person?.birthday }}
+
+
+
+ 职务:
+ {{ comfort.person?.job || '/' }}
+
+
+
+ 警衔:
+ {{ comfort.person?.policeRank || '/' }}
+
+
+ 文化程度:
+ {{ comfort.person?.levelEducation || '/' }}
+
+
+ 政治面貌:
+ {{ comfort.person?.politicCountenance || '/' }}
+
+
+ 开户行:
+ {{ comfort.person?.bankCardAccount }}{{ comfort.person?.bankBranch }}
+
+
+ 银行账号:
+ {{ comfort.person?.bankCardAccount }}
+
+
+
+
+ 案发情况
+
+
+ 事发时间:
+ {{ comfort.apply?.happenTime }}
+
+
+ 事实与理由:
+ {{ comfort.apply?.factReason }}
+
+
+ 案发环节:
+ {{ comfort.apply?.incidentLink }}
+
+
+ 受伤程度:
+ {{ comfort.apply?.injurySeverity }}
+
+
+ 侵权形式:
+ {{ comfort.apply?.formsOfTort }}
+
+
+ 侵权人姓名:
+ {{ comfort.apply?.infringerName || '/' }}
+
+
+ 处理方式:
+ {{ comfort.apply?.infringerHandle }}
+
+
+
+
+ 附件
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/comfort/add.vue b/pages/comfort/add.vue
new file mode 100644
index 0000000..51d7d68
--- /dev/null
+++ b/pages/comfort/add.vue
@@ -0,0 +1,513 @@
+
+
+
+ 办理信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请人信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 案发情况
+
+
+
+
+
+
+
+ {
+ formData.incidentLinkName = getDictLabel(incidentLink, val)
+ }"
+ >
+
+
+ {
+ formData.injurySeverityName = getDictLabel(injurySeverity, val)
+ }"
+ >
+
+
+ {
+ formData.formsOfTortName = detail.value[0].text
+ }"
+ />
+
+
+
+
+
+
+
+
+
+
+ 佐证材料
+
+
+
+
+
+ 呈报审批
+
+
+
+
+ {{ formData.approver }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/comfort/list.vue b/pages/comfort/list.vue
new file mode 100644
index 0000000..fef5a16
--- /dev/null
+++ b/pages/comfort/list.vue
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+
+ 申请人:
+ {{ item.applicantEmpName }}
+
+
+ 申请时间:
+ {{ item.applyDate }}
+
+
+ 受伤程度:
+ {{ item.injurySeverityName }}
+
+
+ 申请金额:
+ {{ item.injurySeverity }}
+
+
+ 事实与理由:
+ {{ item.factReason }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/common/camera.nvue b/pages/common/camera.nvue
new file mode 100644
index 0000000..3f0a7ff
--- /dev/null
+++ b/pages/common/camera.nvue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ files.length }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/duty/index.vue b/pages/duty/index.vue
new file mode 100644
index 0000000..9122bdd
--- /dev/null
+++ b/pages/duty/index.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+ 市局
+
+
+ 值班领导
+ 张三
+
+
+ 分局
+
+
+ 天心分局
+ 李四
+
+
+ 雨花分局
+ 王五
+
+
+ 芙蓉分局
+ 游麻
+
+
+ 长沙县局
+ 张三
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..6f9670c
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+ 我的任务
+
+
+
+ {{ task.todoCount }}
+
+ 待处理
+
+
+
+ {{ task.doneCount }}
+
+ 已办结
+
+
+
+
+
+ 督察应用
+
+
+
+
+
+ 问题随拍
+
+
+
+
+
+ 问题清单
+
+
+
+
+
+ 所队自查
+
+
+
+
+
+
+ 值班报备
+
+
+
+
+
+ 抚慰申请
+
+
+
+
+
+ 知识库
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ store.state.user.nickName }}
+ {{ store.state.user.departName }}
+ {{ }}
+
+
+ 警号:
+ {{ store.state.user.empNo }}
+
+
+
+
+
+
+
+
+
+
+ 使用手册
+
+
+
+
+
+
+
+
+ 意见反馈
+
+
+
+
+
+
+
+ 关于APP
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+ 随手拍
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/negative/action.vue b/pages/negative/action.vue
new file mode 100644
index 0000000..e5dc394
--- /dev/null
+++ b/pages/negative/action.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/negative/index.vue b/pages/negative/index.vue
new file mode 100644
index 0000000..e606927
--- /dev/null
+++ b/pages/negative/index.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+ {{ item.problemSources }}
+
+
+
+
+ 录入时间:
+ {{ item.crtTime }}
+
+
+ 发现时间:
+ {{ item.discoveryTime }}
+
+
+ 业务类别:
+ {{ item.businessTypeName }}
+
+
+ 涉及单位:
+ {{ item.involveDepartName }}
+
+
+ 问题内容:
+ {{ item.thingDesc }}
+
+
+ 是否属实:
+ {{ item.checkStatusName }}
+
+
+ 当前处理:
+ {{ item.currentProcessingObject }}
+
+
+
+ 签收中
+ 办理中
+ 审批中
+ 已办结
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/negative/info.vue b/pages/negative/info.vue
new file mode 100644
index 0000000..5aea966
--- /dev/null
+++ b/pages/negative/info.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/photo/index.vue b/pages/photo/index.vue
new file mode 100644
index 0000000..169c812
--- /dev/null
+++ b/pages/photo/index.vue
@@ -0,0 +1,60 @@
+
+
+ 记录时间:{{ item.date }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/index.vue b/pages/task/index.vue
new file mode 100644
index 0000000..6c493a2
--- /dev/null
+++ b/pages/task/index.vue
@@ -0,0 +1,392 @@
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 督察单位:
+ {{ item.supDepartName }}
+
+
+ 抽检人员:
+ {{ item.totalNumber }}人
+
+
+ 检查时间:
+ {{ item.beginTime }} ~ {{ item.endTime }}
+
+
+ 待处理
+ 已办结
+
+
+
+
+
+
+
+
+
+
+
+
+ 督察单位:
+ {{ item.supDepartName }}
+
+
+ 督察类型:
+ {{ item.supervisionType }}
+
+
+ 督察内容:
+ {{ item.taskContent }}
+
+
+ 检查时间:
+ {{ item.beginTime }} ~ {{ item.endTime }}
+
+
+ {{ !item.hasSign? '待签收' : '待处理'}}
+ 已办结
+
+
+
+
+
+
+
+
+
+
+
+
+ 自查单位:
+ {{ item.supDepartName }}
+
+
+ 自查类型:
+ {{ item.type }}
+
+
+ 自查要求:
+ {{ item.requirement }}
+
+
+ 任务时间:
+ {{ item.beginTime }} ~ {{ item.endTime }}
+
+
+ {{ !item.hasSign? '待签收' : '待处理'}}
+ 已办结
+
+
+
+
+
+
+
+
+
+
+
+
+ 业务类别:
+ {{ item.businessTypeName }}
+
+
+ 涉及单位:
+ {{ item.supDepartName }}
+
+
+ 问题内容:
+ {{ item.taskContent }}
+
+
+ 涉嫌问题:
+ {{ getDictLabelByArray(suspectProblems, item.involveProblem) || '/' }}
+
+
+ 已办结
+ {{ getFlowLable(item.flowKey) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/inspection/info.vue b/pages/task/inspection/info.vue
new file mode 100644
index 0000000..df093fe
--- /dev/null
+++ b/pages/task/inspection/info.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/inspection/list.vue b/pages/task/inspection/list.vue
new file mode 100644
index 0000000..2d71081
--- /dev/null
+++ b/pages/task/inspection/list.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+
+ 问题类型:
+ {{ item.probmeType }}
+
+
+ 被督察单位:
+ {{ item.departName }}
+
+
+ 被督察人员:
+ {{ item.peoples?.map(p => p.name).join(' ') }}
+
+
+ 情况描述:
+ {{ item.thingDesc }}
+
+
+
+
+ {{ item.createTime }}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/problem/add.vue b/pages/task/problem/add.vue
new file mode 100644
index 0000000..1b64d34
--- /dev/null
+++ b/pages/task/problem/add.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ formData.problemType = node.name" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/problem/index.vue b/pages/task/problem/index.vue
new file mode 100644
index 0000000..5bdfde5
--- /dev/null
+++ b/pages/task/problem/index.vue
@@ -0,0 +1,89 @@
+
+
+
+
+ 是否存在问题:
+ {{ problem.hasProblem ? '是' : '否' }}
+
+
+ 问题来源:
+ {{ getDictLabel(taskType, problem.taskType) }}
+
+
+ 录入时间:
+ {{ problem.createTime }}
+
+
+ 被督察单位:
+ {{ problem.departName }}
+
+
+ 被督察人员:
+ {{ problem.peoples ? JSON.parse(problem.peoples).map(item => item.name).join('、') : '/' }}
+
+
+ 情况描述:
+ {{ problem.thingDesc }}
+
+
+ 是否下发:
+ 未下发
+ 已下发
+
+
+ 附件
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/problem/list.vue b/pages/task/problem/list.vue
new file mode 100644
index 0000000..c1e6588
--- /dev/null
+++ b/pages/task/problem/list.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+
+ 录入时间:
+ {{ item.createTime }}
+
+
+ 涉及单位:
+ {{ item.departName }}
+
+
+ 涉及人员:
+ {{ item.peoples || '/' }}
+
+
+ 问题类型:
+ {{ item.problemType || '/' }}
+
+
+ 问题内容:
+ {{ item.thingDesc }}
+
+
+
+ 未下发
+ 已下发
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/selfexamination/add.vue b/pages/task/selfexamination/add.vue
new file mode 100644
index 0000000..3a1ecc1
--- /dev/null
+++ b/pages/task/selfexamination/add.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/selfexamination/index.vue b/pages/task/selfexamination/index.vue
new file mode 100644
index 0000000..4896e6c
--- /dev/null
+++ b/pages/task/selfexamination/index.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+ {{ index + 1 }} {{ item.title }}
+
+
+
+ {{ item.content }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/selfexamination/info.vue b/pages/task/selfexamination/info.vue
new file mode 100644
index 0000000..847bffd
--- /dev/null
+++ b/pages/task/selfexamination/info.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+ 任务名称:
+ {{ task.taskName }}
+
+
+ 自查类型:
+ {{ task.type }}
+
+
+ 自查单位:
+ {{ task.supDepartName }}
+
+
+ 自查时间:
+ {{ task.beginTime }}
+
+
+ 任务状态:
+
+
+
+
+
+
+ 任务要求
+
+ 自查内容
+
+ {{ index + 1 }} {{ item.title }}
+ {{ item.content }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/selfexamination/list.vue b/pages/task/selfexamination/list.vue
new file mode 100644
index 0000000..3690163
--- /dev/null
+++ b/pages/task/selfexamination/list.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+ {{ item.taskName }}
+
+
+
+
+ 自查类型:
+ {{ item.type }}
+
+
+ 自查单位:
+ {{ item.supDepartName }}
+
+
+ 自查时间:
+ {{ item.beginTime }} ~ {{ item.endTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/testingAlcohol/add.vue b/pages/task/testingAlcohol/add.vue
new file mode 100644
index 0000000..6727d0b
--- /dev/null
+++ b/pages/task/testingAlcohol/add.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ {{ people.name }}
+
+
+ 警号:
+ {{ people.empNo }}
+
+
+ 所属单位:
+ {{ people.departName }}
+
+
+ 职位:
+ {{ people.position }}
+
+
+ 联系电话:
+ {{ people.mobile || '/' }}
+
+
+
+
+ 待检测
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/testingAlcohol/info.vue b/pages/task/testingAlcohol/info.vue
new file mode 100644
index 0000000..8acce89
--- /dev/null
+++ b/pages/task/testingAlcohol/info.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ {{ people.name }}
+
+
+ 警号:
+ {{ people.empNo }}
+
+
+ 所属单位:
+ {{ people.departName }}
+
+
+ 职位:
+ {{ people.position }}
+
+
+ 联系电话:
+ {{ people.mobile || '/' }}
+
+
+
+
+
+
+
+
+
+ 测酒时间:
+ {{ people.testingTime }}
+
+
+ 检测情况:
+
+ {{ people.testingResult }}
+ {{ people.testingResult }}
+
+
+
+ 饮酒结果:
+
+
+
+
+
+
+ 酒精含量:
+ {{ people.alcoholContent }}
+
+
+ 未检测原因:
+ {{ people.unTestingDesc }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/task/testingAlcohol/people.vue b/pages/task/testingAlcohol/people.vue
new file mode 100644
index 0000000..d3d5f85
--- /dev/null
+++ b/pages/task/testingAlcohol/people.vue
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 筛选
+
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ {{ item.name }}
+
+
+ 警号:
+ {{ item.empNo }}
+
+
+ 所属单位:
+ {{ item.departName }}
+
+
+ 职位:
+ {{ item.position }}
+
+
+ 联系电话:
+ {{ item.mobile || '/' }}
+
+
+
+ 测酒时间:
+ {{ item.testingTime }}
+
+
+ 检测情况:
+
+ {{ item.testingResult }}
+ {{ item.testingResult }}
+
+
+
+ 饮酒结果:
+
+
+
+
+
+
+ 酒精含量:
+ {{ item.alcoholContent }}
+
+
+ 未检测原因:
+ {{ item.unTestingDesc }}
+
+
+
+
+ 待检测
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/platforms/app-plus/feedback/feedback.vue b/platforms/app-plus/feedback/feedback.vue
new file mode 100644
index 0000000..0373166
--- /dev/null
+++ b/platforms/app-plus/feedback/feedback.vue
@@ -0,0 +1,232 @@
+
+
+
+ 问题和意见
+ 快速键入
+
+
+ 图片(选填,提供问题截图,总大小10M以下)
+
+
+
+ 点击预览图片
+ {{ imageList.length }}/5
+
+
+
+
+
+
+ x
+
+
+
+
+
+
+
+ QQ/邮箱
+
+
+ 应用评分
+
+
+
+ 用户反馈的结果可在app打包后于DCloud开发者中心查看
+
+
+
+
+
+
diff --git a/platforms/app-plus/orientation/orientation.vue b/platforms/app-plus/orientation/orientation.vue
new file mode 100644
index 0000000..ba636c4
--- /dev/null
+++ b/platforms/app-plus/orientation/orientation.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/platforms/app-plus/proximity/proximity.vue b/platforms/app-plus/proximity/proximity.vue
new file mode 100644
index 0000000..ee4af46
--- /dev/null
+++ b/platforms/app-plus/proximity/proximity.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+ 手机顶部听筒处有传感器监听距离手机屏幕的障碍物,覆盖该传感器会触发本事件变化
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platforms/app-plus/push/push.vue b/platforms/app-plus/push/push.vue
new file mode 100644
index 0000000..91aa675
--- /dev/null
+++ b/platforms/app-plus/push/push.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+ 透传内容:
+
+
+
+
+
+
+
+
+
diff --git a/platforms/app-plus/shake/shake.vue b/platforms/app-plus/shake/shake.vue
new file mode 100644
index 0000000..5e1c6ad
--- /dev/null
+++ b/platforms/app-plus/shake/shake.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platforms/app-plus/speech/speech.vue b/platforms/app-plus/speech/speech.vue
new file mode 100644
index 0000000..cae663e
--- /dev/null
+++ b/platforms/app-plus/speech/speech.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/camer.png b/static/camer.png
new file mode 100644
index 0000000000000000000000000000000000000000..39502e6a5f544a3c2c1962974ab980cc1d36d7aa
GIT binary patch
literal 7196
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