From 4c1f42de565aff9837b246029659dae144a3bb11 Mon Sep 17 00:00:00 2001
From: mnz <627844378@qq.com>
Date: Wed, 4 Dec 2024 11:05:49 +0800
Subject: [PATCH 1/2] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9app=20h5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.env.development | 1 +
.env.production | 3 +-
.gitignore | 2 +
App.vue | 1 +
node_modules/.package-lock.json | 23 +
node_modules/.package_versions.json | 8 +-
node_modules/@dcloudio/uni-ui/LICENSE | 202 +
node_modules/@dcloudio/uni-ui/README.md | 245 +
.../uni-ui/lib/uni-badge/uni-badge.vue | 268 +
.../uni-breadcrumb-item.vue | 126 +
.../lib/uni-breadcrumb/uni-breadcrumb.vue | 46 +
.../uni-ui/lib/uni-calendar/calendar.js | 546 +
.../uni-ui/lib/uni-calendar/i18n/en.json | 12 +
.../uni-ui/lib/uni-calendar}/i18n/index.js | 0
.../uni-ui/lib/uni-calendar/i18n/zh-Hans.json | 12 +
.../uni-ui/lib/uni-calendar/i18n/zh-Hant.json | 12 +
.../lib/uni-calendar/uni-calendar-item.vue | 187 +
.../uni-ui/lib/uni-calendar/uni-calendar.vue | 567 +
.../@dcloudio/uni-ui/lib/uni-calendar/util.js | 360 +
.../uni-ui/lib/uni-card/uni-card.vue | 270 +
.../@dcloudio/uni-ui/lib/uni-col/uni-col.vue | 317 +
.../uni-collapse-item/uni-collapse-item.vue | 402 +
.../uni-ui/lib/uni-collapse/uni-collapse.vue | 147 +
.../uni-ui/lib/uni-combox/uni-combox.vue | 275 +
.../uni-ui/lib/uni-countdown/i18n/en.json | 6 +
.../uni-ui/lib/uni-countdown}/i18n/index.js | 0
.../lib/uni-countdown/i18n/zh-Hans.json | 6 +
.../lib/uni-countdown/i18n/zh-Hant.json | 6 +
.../lib/uni-countdown/uni-countdown.vue | 281 +
.../uni-data-checkbox/uni-data-checkbox.vue | 849 +
.../uni-ui/lib}/uni-data-picker/keypress.js | 0
.../lib}/uni-data-picker/uni-data-picker.uvue | 0
.../lib}/uni-data-picker/uni-data-picker.vue | 7 +-
.../lib}/uni-data-pickerview/loading.uts | 0
.../uni-data-pickerview/uni-data-picker.js | 0
.../uni-data-pickerview/uni-data-picker.uts | 0
.../uni-data-pickerview.css | 0
.../uni-data-pickerview.uvue | 0
.../uni-data-pickerview.vue | 0
.../lib}/uni-data-select/uni-data-select.vue | 0
.../uni-ui/lib/uni-dateformat/date-format.js | 200 +
.../lib/uni-dateformat/uni-dateformat.vue | 88 +
.../uni-datetime-picker/calendar-item.vue | 6 +-
.../lib}/uni-datetime-picker/calendar.vue | 2 +-
.../lib}/uni-datetime-picker/i18n/en.json | 0
.../lib/uni-datetime-picker}/i18n/index.js | 0
.../uni-datetime-picker/i18n/zh-Hans.json | 0
.../uni-datetime-picker/i18n/zh-Hant.json | 0
.../lib}/uni-datetime-picker/time-picker.vue | 0
.../uni-datetime-picker.vue | 0
.../uni-ui/lib}/uni-datetime-picker/util.js | 0
.../uni-ui/lib}/uni-drawer/keypress.js | 0
.../uni-ui/lib}/uni-drawer/uni-drawer.vue | 0
.../uni-ui/lib}/uni-easyinput/common.js | 0
.../lib}/uni-easyinput/uni-easyinput.vue | 79 +-
.../@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue | 491 +
.../@dcloudio/uni-ui/lib/uni-fav/i18n/en.json | 4 +
.../uni-ui/lib/uni-fav/i18n/index.js | 8 +
.../uni-ui/lib/uni-fav/i18n/zh-Hans.json | 4 +
.../uni-ui/lib/uni-fav/i18n/zh-Hant.json | 4 +
.../@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue | 161 +
.../uni-file-picker/choose-and-upload-file.js | 0
.../lib}/uni-file-picker/uni-file-picker.vue | 10 +
.../lib}/uni-file-picker/upload-file.vue | 0
.../lib}/uni-file-picker/upload-image.vue | 0
.../uni-ui/lib}/uni-file-picker/utils.js | 0
.../lib/uni-forms-item/uni-forms-item.vue | 627 +
.../uni-ui/lib/uni-forms/uni-forms.vue | 397 +
.../@dcloudio/uni-ui/lib/uni-forms/utils.js | 293 +
.../uni-ui/lib/uni-forms/validate.js | 486 +
.../uni-ui/lib/uni-goods-nav/i18n/en.json | 6 +
.../uni-ui/lib/uni-goods-nav/i18n/index.js | 8 +
.../lib/uni-goods-nav/i18n/zh-Hans.json | 6 +
.../lib/uni-goods-nav/i18n/zh-Hant.json | 6 +
.../lib/uni-goods-nav/uni-goods-nav.vue | 231 +
.../lib/uni-grid-item/uni-grid-item.vue | 127 +
.../uni-ui/lib/uni-grid/uni-grid.vue | 142 +
.../uni-ui/lib/uni-group/uni-group.vue | 134 +
.../uni-ui/lib/uni-icons/uni-icons.uvue | 91 +
.../uni-ui/lib}/uni-icons/uni-icons.vue | 0
.../uni-ui/lib}/uni-icons/uniicons.css | 0
.../uni-ui/lib}/uni-icons/uniicons.ttf | Bin
.../uni-ui/lib}/uni-icons/uniicons_file.ts | 0
.../lib}/uni-icons/uniicons_file_vue.js | 0
.../uni-indexed-list-item.vue | 144 +
.../lib/uni-indexed-list/uni-indexed-list.vue | 367 +
.../uni-ui/lib/uni-link/uni-link.vue | 128 +
.../uni-ui/lib/uni-list-ad/uni-list-ad.vue | 107 +
.../lib/uni-list-chat/uni-list-chat.scss | 58 +
.../lib/uni-list-chat/uni-list-chat.vue | 593 +
.../lib/uni-list-item/uni-list-item.vue | 534 +
.../uni-ui/lib/uni-list/uni-list.vue | 123 +
.../uni-ui/lib/uni-list/uni-refresh.vue | 65 +
.../uni-ui/lib/uni-list/uni-refresh.wxs | 87 +
.../uni-ui/lib}/uni-load-more/i18n/en.json | 0
.../uni-ui/lib/uni-load-more/i18n/index.js | 8 +
.../lib}/uni-load-more/i18n/zh-Hans.json | 0
.../lib}/uni-load-more/i18n/zh-Hant.json | 0
.../lib}/uni-load-more/uni-load-more.vue | 0
.../uni-ui/lib/uni-nav-bar/uni-nav-bar.vue | 357 +
.../uni-ui/lib/uni-nav-bar/uni-status-bar.vue | 24 +
.../lib/uni-notice-bar/uni-notice-bar.vue | 431 +
.../lib/uni-number-box/uni-number-box.vue | 232 +
.../uni-ui/lib/uni-pagination/i18n/en.json | 5 +
.../uni-ui/lib/uni-pagination/i18n/es.json | 5 +
.../uni-ui/lib/uni-pagination/i18n/fr.json | 5 +
.../uni-ui/lib/uni-pagination/i18n/index.js | 12 +
.../lib/uni-pagination/i18n/zh-Hans.json | 5 +
.../lib/uni-pagination/i18n/zh-Hant.json | 5 +
.../lib/uni-pagination/uni-pagination.vue | 465 +
.../uni-ui/lib}/uni-popup-dialog/keypress.js | 0
.../uni-popup-dialog/uni-popup-dialog.vue | 0
.../uni-popup-message/uni-popup-message.vue | 0
.../lib}/uni-popup-share/uni-popup-share.vue | 0
.../uni-ui/lib}/uni-popup/i18n/en.json | 0
.../uni-ui/lib/uni-popup/i18n/index.js | 8 +
.../uni-ui/lib}/uni-popup/i18n/zh-Hans.json | 0
.../uni-ui/lib}/uni-popup/i18n/zh-Hant.json | 0
.../uni-ui/lib}/uni-popup/keypress.js | 0
.../@dcloudio/uni-ui/lib}/uni-popup/popup.js | 0
.../uni-ui/lib}/uni-popup/uni-popup.uvue | 0
.../uni-ui/lib}/uni-popup/uni-popup.vue | 0
.../uni-ui/lib/uni-rate/uni-rate.vue | 361 +
.../@dcloudio/uni-ui/lib/uni-row/uni-row.vue | 190 +
.../uni-ui/lib}/uni-scss/changelog.md | 0
.../@dcloudio/uni-ui/lib}/uni-scss/index.scss | 0
.../uni-ui/lib}/uni-scss/package.json | 0
.../@dcloudio/uni-ui/lib}/uni-scss/readme.md | 0
.../uni-ui/lib}/uni-scss/styles/index.scss | 0
.../lib}/uni-scss/styles/setting/_border.scss | 0
.../lib}/uni-scss/styles/setting/_color.scss | 0
.../lib}/uni-scss/styles/setting/_radius.scss | 0
.../lib}/uni-scss/styles/setting/_space.scss | 0
.../lib}/uni-scss/styles/setting/_styles.scss | 0
.../lib}/uni-scss/styles/setting/_text.scss | 0
.../uni-scss/styles/setting/_variables.scss | 0
.../lib}/uni-scss/styles/tools/functions.scss | 0
.../@dcloudio/uni-ui/lib}/uni-scss/theme.scss | 0
.../uni-ui/lib}/uni-scss/variables.scss | 0
.../uni-ui/lib/uni-search-bar/i18n/en.json | 4 +
.../uni-ui/lib/uni-search-bar/i18n/index.js | 8 +
.../lib/uni-search-bar/i18n/zh-Hans.json | 4 +
.../lib/uni-search-bar/i18n/zh-Hant.json | 4 +
.../lib/uni-search-bar/uni-search-bar.vue | 309 +
.../uni-ui/lib/uni-section/uni-section.vue | 167 +
.../uni-segmented-control.vue | 146 +
.../uni-ui/lib/uni-steps/uni-steps.vue | 280 +
.../lib/uni-swipe-action-item/bindingx.js | 302 +
.../uni-ui/lib/uni-swipe-action-item/isPC.js | 12 +
.../lib/uni-swipe-action-item/mpalipay.js | 195 +
.../lib/uni-swipe-action-item/mpother.js | 260 +
.../uni-ui/lib/uni-swipe-action-item/mpwxs.js | 84 +
.../lib/uni-swipe-action-item/render.js | 270 +
.../uni-swipe-action-item.vue | 348 +
.../uni-ui/lib/uni-swipe-action-item/wx.wxs | 341 +
.../lib/uni-swipe-action/uni-swipe-action.vue | 60 +
.../lib/uni-swiper-dot/uni-swiper-dot.vue | 218 +
.../uni-ui/lib/uni-table/uni-table.vue | 455 +
.../@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue | 252 +
.../uni-ui/lib/uni-tbody/uni-tbody.vue | 29 +
.../@dcloudio/uni-ui/lib/uni-td/uni-td.vue | 90 +
.../uni-ui/lib/uni-th/filter-dropdown.vue | 511 +
.../@dcloudio/uni-ui/lib/uni-th/uni-th.vue | 285 +
.../uni-ui/lib/uni-thead/uni-thead.vue | 137 +
.../uni-ui/lib/uni-title/uni-title.vue | 171 +
.../uni-ui/lib/uni-tooltip/uni-tooltip.vue | 109 +
.../uni-ui/lib/uni-tr/table-checkbox.vue | 179 +
.../@dcloudio/uni-ui/lib/uni-tr/uni-tr.vue | 184 +
.../lib}/uni-transition/createAnimation.js | 0
.../lib}/uni-transition/uni-transition.vue | 0
node_modules/@dcloudio/uni-ui/package.json | 17 +
node_modules/dayjs/package.json | 5 +-
package-lock.json | 14 +-
pages.json | 7 +
pages/document/detail.vue | 32 +-
pages/document/onlinePreview.vue | 44 +
pages/login/login.vue | 1 +
pages/tab/my.vue | 11 +-
uni_modules/lime-drag/changelog.md | 33 -
.../lime-drag/components/l-drag/index.scss | 93 -
.../lime-drag/components/l-drag/l-drag.vue | 532 -
.../lime-drag/components/l-drag/props.ts | 47 -
.../lime-drag/components/l-drag/type.ts | 21 -
.../lime-drag/components/l-drag/vue.ts | 9 -
.../components/lime-drag/lime-drag.vue | 268 -
uni_modules/lime-drag/package.json | 87 -
uni_modules/lime-drag/readme.md | 170 -
uni_modules/lime-shared/addUnit/index.ts | 42 -
uni_modules/lime-shared/animation/bezier.ts | 82 -
uni_modules/lime-shared/animation/ease.ts | 2 -
uni_modules/lime-shared/animation/index.ts | 10 -
.../lime-shared/animation/useTransition.ts | 97 -
uni_modules/lime-shared/animation/uvue.uts | 112 -
uni_modules/lime-shared/animation/vue.ts | 123 -
.../lime-shared/arrayBufferToFile/index.ts | 10 -
.../lime-shared/arrayBufferToFile/uvue.uts | 10 -
.../lime-shared/arrayBufferToFile/vue.ts | 63 -
.../lime-shared/base64ToArrayBuffer/index.ts | 13 -
uni_modules/lime-shared/base64ToPath/index.ts | 9 -
uni_modules/lime-shared/base64ToPath/uvue.uts | 22 -
uni_modules/lime-shared/base64ToPath/vue.ts | 75 -
uni_modules/lime-shared/camelCase/index.ts | 21 -
.../lime-shared/canIUseCanvas2d/index.ts | 67 -
uni_modules/lime-shared/changelog.md | 36 -
uni_modules/lime-shared/clamp/index.ts | 16 -
uni_modules/lime-shared/cloneDeep/index.ts | 10 -
uni_modules/lime-shared/cloneDeep/uvue.ts | 17 -
uni_modules/lime-shared/cloneDeep/vue.ts | 103 -
uni_modules/lime-shared/closest/index.ts | 22 -
.../components/lime-shared/lime-shared.vue | 139 -
.../lime-shared/createAnimation/index.ts | 9 -
.../lime-shared/createAnimation/type.ts | 25 -
.../lime-shared/createAnimation/uvue.ts | 5 -
.../lime-shared/createAnimation/vue.ts | 148 -
uni_modules/lime-shared/createImage/index.ts | 70 -
uni_modules/lime-shared/debounce/index.ts | 10 -
uni_modules/lime-shared/debounce/uvue.ts | 36 -
uni_modules/lime-shared/debounce/vue.ts | 40 -
uni_modules/lime-shared/exif/index.ts | 9 -
uni_modules/lime-shared/exif/uvue.ts | 7 -
uni_modules/lime-shared/exif/vue.ts | 1057 -
uni_modules/lime-shared/fillZero/index.ts | 11 -
uni_modules/lime-shared/floatAdd/index.ts | 36 -
uni_modules/lime-shared/getClassStr/index.ts | 53 -
.../lime-shared/getCurrentPage/index.ts | 9 -
.../lime-shared/getCurrentPage/uvue.uts | 5 -
uni_modules/lime-shared/getCurrentPage/vue.ts | 6 -
.../lime-shared/getLocalFilePath/index.ts | 62 -
uni_modules/lime-shared/getRect/index.ts | 9 -
uni_modules/lime-shared/getRect/uvue.uts | 16 -
uni_modules/lime-shared/getRect/vue.ts | 117 -
uni_modules/lime-shared/getStyleStr/index.ts | 54 -
.../lime-shared/getStyleStr/index_.uts | 39 -
uni_modules/lime-shared/hasOwn/index.ts | 9 -
uni_modules/lime-shared/hasOwn/uvue.ts | 39 -
uni_modules/lime-shared/hasOwn/vue.ts | 30 -
uni_modules/lime-shared/index.ts | 43 -
uni_modules/lime-shared/isBase64/index.ts | 23 -
uni_modules/lime-shared/isBrowser/index.ts | 8 -
uni_modules/lime-shared/isDef/index.ts | 23 -
uni_modules/lime-shared/isEmpty/index.ts | 83 -
uni_modules/lime-shared/isFunction/index.ts | 16 -
uni_modules/lime-shared/isNumber/index.ts | 26 -
uni_modules/lime-shared/isNumeric/index.ts | 33 -
uni_modules/lime-shared/isObject/index.ts | 19 -
uni_modules/lime-shared/isPromise/index.ts | 22 -
uni_modules/lime-shared/isString/index.ts | 19 -
uni_modules/lime-shared/kebabCase/index.ts | 24 -
uni_modules/lime-shared/package.json | 86 -
uni_modules/lime-shared/pathToBase64/index.ts | 9 -
uni_modules/lime-shared/pathToBase64/uvue.uts | 17 -
uni_modules/lime-shared/pathToBase64/vue.ts | 121 -
uni_modules/lime-shared/platform/index.ts | 34 -
uni_modules/lime-shared/raf/index.ts | 10 -
uni_modules/lime-shared/raf/uvue.ts | 20 -
uni_modules/lime-shared/raf/vue.ts | 33 -
uni_modules/lime-shared/random/index.ts | 24 -
uni_modules/lime-shared/range/index.ts | 36 -
uni_modules/lime-shared/readme.md | 445 -
.../lime-shared/selectAllComponent/index.ts | 8 -
.../lime-shared/selectAllComponent/uvue.uts | 39 -
.../lime-shared/selectAllComponent/vue.ts | 151 -
.../lime-shared/selectComponent/index.ts | 7 -
.../lime-shared/selectComponent/uvue.uts | 75 -
.../lime-shared/selectComponent/vue.ts | 149 -
.../lime-shared/selectElement/index.uts | 275 -
uni_modules/lime-shared/sleep/index.ts | 44 -
uni_modules/lime-shared/throttle/index.ts | 77 -
uni_modules/lime-shared/toArray/index.ts | 21 -
uni_modules/lime-shared/toBoolean/index.ts | 40 -
uni_modules/lime-shared/toNumber/index.ts | 28 -
uni_modules/lime-shared/unitConvert/index.ts | 73 -
uni_modules/lime-shared/vue/index.ts | 16 -
uni_modules/uni-config-center/changelog.md | 6 -
uni_modules/uni-config-center/package.json | 81 -
uni_modules/uni-config-center/readme.md | 93 -
.../common/uni-config-center/index.js | 1 -
.../common/uni-config-center/package.json | 13 -
uni_modules/uni-data-picker/changelog.md | 77 -
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_modules/uni-data-select/package.json | 86 -
uni_modules/uni-data-select/readme.md | 8 -
uni_modules/uni-datetime-picker/changelog.md | 160 -
uni_modules/uni-datetime-picker/package.json | 88 -
uni_modules/uni-datetime-picker/readme.md | 21 -
uni_modules/uni-drawer/changelog.md | 13 -
uni_modules/uni-drawer/package.json | 87 -
uni_modules/uni-drawer/readme.md | 10 -
uni_modules/uni-easyinput/changelog.md | 115 -
uni_modules/uni-easyinput/package.json | 88 -
uni_modules/uni-easyinput/readme.md | 11 -
uni_modules/uni-file-picker/changelog.md | 81 -
uni_modules/uni-file-picker/package.json | 84 -
uni_modules/uni-file-picker/readme.md | 11 -
uni_modules/uni-icons/changelog.md | 42 -
.../components/uni-icons/uni-icons.uvue | 91 -
uni_modules/uni-icons/package.json | 89 -
uni_modules/uni-icons/readme.md | 8 -
uni_modules/uni-id-common/changelog.md | 36 -
uni_modules/uni-id-common/package.json | 84 -
uni_modules/uni-id-common/readme.md | 3 -
.../common/uni-id-common/index.js | 1 -
.../common/uni-id-common/package.json | 20 -
uni_modules/uni-load-more/changelog.md | 19 -
uni_modules/uni-load-more/package.json | 86 -
uni_modules/uni-load-more/readme.md | 14 -
uni_modules/uni-popup/changelog.md | 84 -
uni_modules/uni-popup/package.json | 88 -
uni_modules/uni-popup/readme.md | 17 -
uni_modules/uni-transition/changelog.md | 24 -
uni_modules/uni-transition/package.json | 85 -
uni_modules/uni-transition/readme.md | 11 -
unpackage/dist/build/.nvue/app.css.js | 11 -
unpackage/dist/build/.nvue/app.js | 2 -
.../dist/build/app-plus/__uniappautomator.js | 16 -
.../build/app-plus/__uniappchooselocation.js | 32 -
.../dist/build/app-plus/__uniapperror.png | Bin 5842 -> 0 bytes
.../build/app-plus/__uniappopenlocation.js | 32 -
.../dist/build/app-plus/__uniapppicker.js | 33 -
.../dist/build/app-plus/__uniappquill.js | 8 -
.../app-plus/__uniappquillimageresize.js | 1 -
unpackage/dist/build/app-plus/__uniappscan.js | 32 -
.../dist/build/app-plus/__uniappsuccess.png | Bin 2021 -> 0 bytes
.../dist/build/app-plus/__uniappview.html | 23 -
.../dist/build/app-plus/app-config-service.js | 11 -
unpackage/dist/build/app-plus/app-config.js | 1 -
unpackage/dist/build/app-plus/app-service.js | 9 -
unpackage/dist/build/app-plus/app.css | 3 -
.../app-plus/assets/uniicons.32e978a5.ttf | Bin 35824 -> 0 bytes
unpackage/dist/build/app-plus/manifest.json | 196 -
.../build/app-plus/pages/checkin/index.css | 1 -
.../build/app-plus/pages/document/detail.css | 1 -
.../build/app-plus/pages/document/index.css | 1 -
.../app-plus/pages/leave/application.css | 1 -
.../dist/build/app-plus/pages/login/login.css | 1 -
.../build/app-plus/pages/meeting/detail.css | 1 -
.../build/app-plus/pages/meeting/index.css | 1 -
.../build/app-plus/pages/product/index.css | 1 -
.../dist/build/app-plus/pages/safe/detail.css | 1 -
.../dist/build/app-plus/pages/safe/manage.css | 1 -
.../dist/build/app-plus/pages/tab/index.css | 1 -
.../dist/build/app-plus/pages/tab/my.css | 1 -
.../dist/build/app-plus/pages/tab/office.css | 1 -
.../app-plus/pages/talk/conversation.css | 1 -
.../app-plus/pages/talk/message_list.css | 1 -
.../dist/build/app-plus/pages/talk/system.css | 1 -
.../dist/build/app-plus/pages/task/handle.css | 1 -
.../dist/build/app-plus/pages/task/index.css | 1 -
.../dist/build/app-plus/pages/task/self.css | 1 -
.../build/app-plus/pages/task/todotask.css | 1 -
.../app-plus/pages/useredit/add_address.css | 1 -
.../build/app-plus/pages/useredit/address.css | 1 -
.../app-plus/pages/useredit/addressbook.css | 1 -
.../app-plus/pages/useredit/useredit.css | 1 -
.../build/app-plus/pages/userlist/index.css | 1 -
.../build/app-plus/pages/zhiban/index.css | 1 -
.../app-plus/static/checkin/chenggong.png | Bin 1244 -> 0 bytes
.../build/app-plus/static/checkin/circle1.png | Bin 63416 -> 0 bytes
.../build/app-plus/static/checkin/circle2.png | Bin 64968 -> 0 bytes
.../build/app-plus/static/checkin/circle3.png | Bin 64550 -> 0 bytes
.../build/app-plus/static/checkin/circle4.png | Bin 65137 -> 0 bytes
.../app-plus/static/checkin/position1.png | Bin 7178 -> 0 bytes
.../app-plus/static/checkin/position2.png | Bin 8524 -> 0 bytes
.../app-plus/static/checkin/position3.png | Bin 8594 -> 0 bytes
.../app-plus/static/checkin/position4.png | Bin 8983 -> 0 bytes
.../build/app-plus/static/checkin/shibai.png | Bin 1347 -> 0 bytes
.../dist/build/app-plus/static/index/back.png | Bin 570 -> 0 bytes
.../build/app-plus/static/index/calendar.png | Bin 1232 -> 0 bytes
.../dist/build/app-plus/static/index/eye.png | Bin 1539 -> 0 bytes
.../dist/build/app-plus/static/index/line.png | Bin 1040 -> 0 bytes
.../dist/build/app-plus/static/index/menu.png | Bin 791 -> 0 bytes
.../build/app-plus/static/index/position.png | Bin 1862 -> 0 bytes
.../dist/build/app-plus/static/index/rili.png | Bin 1239 -> 0 bytes
unpackage/dist/build/app-plus/static/line.png | Bin 1337 -> 0 bytes
.../build/app-plus/static/login/checked.png | Bin 1594 -> 0 bytes
.../build/app-plus/static/login/eye-off.png | Bin 1074 -> 0 bytes
.../dist/build/app-plus/static/login/eye.png | Bin 1208 -> 0 bytes
.../dist/build/app-plus/static/login/logo.png | Bin 85772 -> 0 bytes
.../build/app-plus/static/login/nocheck.png | Bin 1910 -> 0 bytes
.../build/app-plus/static/login/phone.png | Bin 816 -> 0 bytes
.../dist/build/app-plus/static/login/pwd.png | Bin 2095 -> 0 bytes
.../dist/build/app-plus/static/my/bg1.png | Bin 9775 -> 0 bytes
.../dist/build/app-plus/static/my/biao.png | Bin 1450 -> 0 bytes
.../dist/build/app-plus/static/my/close.png | Bin 3512 -> 0 bytes
.../dist/build/app-plus/static/my/default.png | Bin 4440 -> 0 bytes
.../dist/build/app-plus/static/my/dingwei.png | Bin 4637 -> 0 bytes
.../dist/build/app-plus/static/my/done.png | Bin 6156 -> 0 bytes
.../dist/build/app-plus/static/my/edit.png | Bin 2494 -> 0 bytes
.../dist/build/app-plus/static/my/navbg.png | Bin 1888424 -> 0 bytes
.../dist/build/app-plus/static/my/num.png | Bin 3571 -> 0 bytes
.../dist/build/app-plus/static/my/open.png | Bin 3717 -> 0 bytes
.../dist/build/app-plus/static/my/process.png | Bin 4909 -> 0 bytes
.../dist/build/app-plus/static/my/self.png | Bin 5577 -> 0 bytes
.../dist/build/app-plus/static/my/shengji.png | Bin 3382 -> 0 bytes
.../dist/build/app-plus/static/my/shezhi.png | Bin 4559 -> 0 bytes
.../dist/build/app-plus/static/my/xiaoxi.png | Bin 2000 -> 0 bytes
.../build/app-plus/static/office/absence.png | Bin 13753 -> 0 bytes
.../build/app-plus/static/office/baoxiao.png | Bin 14061 -> 0 bytes
.../build/app-plus/static/office/daka.png | Bin 15558 -> 0 bytes
.../build/app-plus/static/office/duty.png | Bin 14255 -> 0 bytes
.../build/app-plus/static/office/feiyong.png | Bin 13335 -> 0 bytes
.../build/app-plus/static/office/gonggao.png | Bin 12204 -> 0 bytes
.../build/app-plus/static/office/gongtuan.png | Bin 12883 -> 0 bytes
.../build/app-plus/static/office/gongwen.png | Bin 13337 -> 0 bytes
.../build/app-plus/static/office/huiyi.png | Bin 13434 -> 0 bytes
.../build/app-plus/static/office/jiankang.png | Bin 15323 -> 0 bytes
.../build/app-plus/static/office/jiedai.png | Bin 15581 -> 0 bytes
.../build/app-plus/static/office/process.png | Bin 4909 -> 0 bytes
.../build/app-plus/static/office/task.png | Bin 4498 -> 0 bytes
.../build/app-plus/static/office/tongxun.png | Bin 13415 -> 0 bytes
.../dist/build/app-plus/static/search.png | Bin 2700 -> 0 bytes
.../dist/build/app-plus/static/system.png | Bin 7062 -> 0 bytes
.../dist/build/app-plus/static/tab/anquan.png | Bin 13091 -> 0 bytes
.../build/app-plus/static/tab/cheliang.png | Bin 15069 -> 0 bytes
.../dist/build/app-plus/static/tab/index1.png | Bin 1083 -> 0 bytes
.../dist/build/app-plus/static/tab/index2.png | Bin 1774 -> 0 bytes
.../build/app-plus/static/tab/office1.png | Bin 1864 -> 0 bytes
.../build/app-plus/static/tab/office2.png | Bin 3091 -> 0 bytes
.../build/app-plus/static/tab/product.png | Bin 13684 -> 0 bytes
.../build/app-plus/static/tab/product1.png | Bin 1376 -> 0 bytes
.../build/app-plus/static/tab/product2.png | Bin 2220 -> 0 bytes
.../dist/build/app-plus/static/tab/scan.png | Bin 9189 -> 0 bytes
.../dist/build/app-plus/static/tab/shenpi.png | Bin 12909 -> 0 bytes
.../build/app-plus/static/tab/taizhang.png | Bin 12522 -> 0 bytes
.../dist/build/app-plus/static/tab/todo.png | Bin 8381 -> 0 bytes
.../dist/build/app-plus/static/tab/user1.png | Bin 1573 -> 0 bytes
.../dist/build/app-plus/static/tab/user2.png | Bin 2168 -> 0 bytes
.../dist/build/app-plus/static/tab/yunshu.png | Bin 14104 -> 0 bytes
.../dist/build/app-plus/uni-app-view.umd.js | 7 -
.../dist/cache/.vite/deps/_metadata.json | 15 -
unpackage/dist/cache/.vite/deps/base-64.js | 117 -
.../dist/cache/.vite/deps/base-64.js.map | 7 -
unpackage/dist/cache/.vite/deps/package.json | 3 -
unpackage/dist/dev/.nvue/app.css.js | 11 -
unpackage/dist/dev/.nvue/app.js | 2 -
.../utssdk/app-android/index.kt.map | 1 -
.../dist/dev/app-plus/__uniappautomator.js | 16 -
.../dev/app-plus/__uniappchooselocation.js | 32 -
unpackage/dist/dev/app-plus/__uniapperror.png | Bin 5842 -> 0 bytes
.../dist/dev/app-plus/__uniappopenlocation.js | 32 -
unpackage/dist/dev/app-plus/__uniapppicker.js | 33 -
unpackage/dist/dev/app-plus/__uniappquill.js | 8 -
.../dev/app-plus/__uniappquillimageresize.js | 1 -
unpackage/dist/dev/app-plus/__uniappscan.js | 32 -
.../dist/dev/app-plus/__uniappsuccess.png | Bin 2021 -> 0 bytes
unpackage/dist/dev/app-plus/__uniappview.html | 23 -
.../dist/dev/app-plus/app-config-service.js | 11 -
unpackage/dist/dev/app-plus/app-config.js | 1 -
unpackage/dist/dev/app-plus/app-service.js | 29048 ----------------
unpackage/dist/dev/app-plus/app.css | 617 -
.../dev/app-plus/assets/uniicons.32e978a5.ttf | Bin 35824 -> 0 bytes
unpackage/dist/dev/app-plus/manifest.json | 196 -
.../dist/dev/app-plus/pages/checkin/index.css | 717 -
.../dev/app-plus/pages/document/detail.css | 53 -
.../dev/app-plus/pages/document/index.css | 690 -
.../dev/app-plus/pages/leave/application.css | 1322 -
.../dist/dev/app-plus/pages/login/login.css | 107 -
.../dev/app-plus/pages/meeting/detail.css | 118 -
.../dist/dev/app-plus/pages/meeting/index.css | 702 -
.../dist/dev/app-plus/pages/product/index.css | 614 -
.../dist/dev/app-plus/pages/safe/detail.css | 94 -
.../dist/dev/app-plus/pages/safe/manage.css | 682 -
.../dist/dev/app-plus/pages/tab/index.css | 1505 -
unpackage/dist/dev/app-plus/pages/tab/my.css | 125 -
.../dist/dev/app-plus/pages/tab/office.css | 97 -
.../dev/app-plus/pages/talk/conversation.css | 89 -
.../dev/app-plus/pages/talk/message_list.css | 60 -
.../dist/dev/app-plus/pages/talk/system.css | 52 -
.../dist/dev/app-plus/pages/task/handle.css | 777 -
.../dist/dev/app-plus/pages/task/index.css | 155 -
.../dist/dev/app-plus/pages/task/self.css | 77 -
.../dist/dev/app-plus/pages/task/todotask.css | 198 -
.../app-plus/pages/useredit/add_address.css | 80 -
.../dev/app-plus/pages/useredit/address.css | 97 -
.../app-plus/pages/useredit/addressbook.css | 58 -
.../dev/app-plus/pages/useredit/useredit.css | 613 -
.../dev/app-plus/pages/userlist/index.css | 1201 -
.../dist/dev/app-plus/pages/zhiban/index.css | 58 -
.../dev/app-plus/static/checkin/chenggong.png | Bin 1244 -> 0 bytes
.../dev/app-plus/static/checkin/circle1.png | Bin 63416 -> 0 bytes
.../dev/app-plus/static/checkin/circle2.png | Bin 64968 -> 0 bytes
.../dev/app-plus/static/checkin/circle3.png | Bin 64550 -> 0 bytes
.../dev/app-plus/static/checkin/circle4.png | Bin 65137 -> 0 bytes
.../dev/app-plus/static/checkin/position1.png | Bin 7178 -> 0 bytes
.../dev/app-plus/static/checkin/position2.png | Bin 8524 -> 0 bytes
.../dev/app-plus/static/checkin/position3.png | Bin 8594 -> 0 bytes
.../dev/app-plus/static/checkin/position4.png | Bin 8983 -> 0 bytes
.../dev/app-plus/static/checkin/shibai.png | Bin 1347 -> 0 bytes
.../dist/dev/app-plus/static/index/back.png | Bin 570 -> 0 bytes
.../dev/app-plus/static/index/calendar.png | Bin 1232 -> 0 bytes
.../dist/dev/app-plus/static/index/eye.png | Bin 1539 -> 0 bytes
.../dist/dev/app-plus/static/index/line.png | Bin 1040 -> 0 bytes
.../dist/dev/app-plus/static/index/menu.png | Bin 791 -> 0 bytes
.../dev/app-plus/static/index/position.png | Bin 1862 -> 0 bytes
.../dist/dev/app-plus/static/index/rili.png | Bin 1239 -> 0 bytes
unpackage/dist/dev/app-plus/static/line.png | Bin 1337 -> 0 bytes
.../dev/app-plus/static/login/checked.png | Bin 1594 -> 0 bytes
.../dev/app-plus/static/login/eye-off.png | Bin 1074 -> 0 bytes
.../dist/dev/app-plus/static/login/eye.png | Bin 1208 -> 0 bytes
.../dist/dev/app-plus/static/login/logo.png | Bin 85772 -> 0 bytes
.../dev/app-plus/static/login/nocheck.png | Bin 1910 -> 0 bytes
.../dist/dev/app-plus/static/login/phone.png | Bin 816 -> 0 bytes
.../dist/dev/app-plus/static/login/pwd.png | Bin 2095 -> 0 bytes
unpackage/dist/dev/app-plus/static/my/bg1.png | Bin 9775 -> 0 bytes
.../dist/dev/app-plus/static/my/biao.png | Bin 1450 -> 0 bytes
.../dist/dev/app-plus/static/my/close.png | Bin 3512 -> 0 bytes
.../dist/dev/app-plus/static/my/default.png | Bin 4440 -> 0 bytes
.../dist/dev/app-plus/static/my/dingwei.png | Bin 4637 -> 0 bytes
.../dist/dev/app-plus/static/my/done.png | Bin 6156 -> 0 bytes
.../dist/dev/app-plus/static/my/edit.png | Bin 2494 -> 0 bytes
.../dist/dev/app-plus/static/my/navbg.png | Bin 1888424 -> 0 bytes
unpackage/dist/dev/app-plus/static/my/num.png | Bin 3571 -> 0 bytes
.../dist/dev/app-plus/static/my/open.png | Bin 3717 -> 0 bytes
.../dist/dev/app-plus/static/my/process.png | Bin 4909 -> 0 bytes
.../dist/dev/app-plus/static/my/self.png | Bin 5577 -> 0 bytes
.../dist/dev/app-plus/static/my/shengji.png | Bin 3382 -> 0 bytes
.../dist/dev/app-plus/static/my/shezhi.png | Bin 4559 -> 0 bytes
.../dist/dev/app-plus/static/my/xiaoxi.png | Bin 2000 -> 0 bytes
.../dev/app-plus/static/office/absence.png | Bin 13753 -> 0 bytes
.../dev/app-plus/static/office/baoxiao.png | Bin 14061 -> 0 bytes
.../dist/dev/app-plus/static/office/daka.png | Bin 15558 -> 0 bytes
.../dist/dev/app-plus/static/office/duty.png | Bin 14255 -> 0 bytes
.../dev/app-plus/static/office/feiyong.png | Bin 13335 -> 0 bytes
.../dev/app-plus/static/office/gonggao.png | Bin 12204 -> 0 bytes
.../dev/app-plus/static/office/gongtuan.png | Bin 12883 -> 0 bytes
.../dev/app-plus/static/office/gongwen.png | Bin 13337 -> 0 bytes
.../dist/dev/app-plus/static/office/huiyi.png | Bin 13434 -> 0 bytes
.../dev/app-plus/static/office/jiankang.png | Bin 15323 -> 0 bytes
.../dev/app-plus/static/office/jiedai.png | Bin 15581 -> 0 bytes
.../dev/app-plus/static/office/process.png | Bin 4909 -> 0 bytes
.../dist/dev/app-plus/static/office/task.png | Bin 4498 -> 0 bytes
.../dev/app-plus/static/office/tongxun.png | Bin 13415 -> 0 bytes
unpackage/dist/dev/app-plus/static/search.png | Bin 2700 -> 0 bytes
unpackage/dist/dev/app-plus/static/system.png | Bin 7062 -> 0 bytes
.../dist/dev/app-plus/static/tab/anquan.png | Bin 13091 -> 0 bytes
.../dist/dev/app-plus/static/tab/cheliang.png | Bin 15069 -> 0 bytes
.../dist/dev/app-plus/static/tab/index1.png | Bin 1083 -> 0 bytes
.../dist/dev/app-plus/static/tab/index2.png | Bin 1774 -> 0 bytes
.../dist/dev/app-plus/static/tab/office1.png | Bin 1864 -> 0 bytes
.../dist/dev/app-plus/static/tab/office2.png | Bin 3091 -> 0 bytes
.../dist/dev/app-plus/static/tab/product.png | Bin 13684 -> 0 bytes
.../dist/dev/app-plus/static/tab/product1.png | Bin 1376 -> 0 bytes
.../dist/dev/app-plus/static/tab/product2.png | Bin 2220 -> 0 bytes
.../dist/dev/app-plus/static/tab/scan.png | Bin 9189 -> 0 bytes
.../dist/dev/app-plus/static/tab/shenpi.png | Bin 12909 -> 0 bytes
.../dist/dev/app-plus/static/tab/taizhang.png | Bin 12522 -> 0 bytes
.../dist/dev/app-plus/static/tab/todo.png | Bin 8381 -> 0 bytes
.../dist/dev/app-plus/static/tab/user1.png | Bin 1573 -> 0 bytes
.../dist/dev/app-plus/static/tab/user2.png | Bin 2168 -> 0 bytes
.../dist/dev/app-plus/static/tab/yunshu.png | Bin 14104 -> 0 bytes
.../dist/dev/app-plus/uni-app-view.umd.js | 7 -
utils/code.js | 105 +
554 files changed, 18700 insertions(+), 49601 deletions(-)
create mode 100644 .gitignore
create mode 100644 node_modules/.package-lock.json
create mode 100644 node_modules/@dcloudio/uni-ui/LICENSE
create mode 100644 node_modules/@dcloudio/uni-ui/README.md
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb-item/uni-breadcrumb-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb/uni-breadcrumb.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/calendar.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/en.json
rename {uni_modules/uni-datetime-picker/components/uni-datetime-picker => node_modules/@dcloudio/uni-ui/lib/uni-calendar}/i18n/index.js (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hans.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hant.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-calendar/util.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-card/uni-card.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-col/uni-col.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-collapse-item/uni-collapse-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-collapse/uni-collapse.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-combox/uni-combox.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/en.json
rename {uni_modules/uni-load-more/components/uni-load-more => node_modules/@dcloudio/uni-ui/lib/uni-countdown}/i18n/index.js (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hans.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hant.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-countdown/uni-countdown.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-data-checkbox/uni-data-checkbox.vue
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-picker/keypress.js (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-picker/uni-data-picker.uvue (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-picker/uni-data-picker.vue (99%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-pickerview/loading.uts (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-pickerview/uni-data-picker.js (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-pickerview/uni-data-picker.uts (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-pickerview/uni-data-pickerview.css (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-pickerview/uni-data-pickerview.uvue (100%)
rename {uni_modules/uni-data-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-pickerview/uni-data-pickerview.vue (100%)
rename {uni_modules/uni-data-select/components => node_modules/@dcloudio/uni-ui/lib}/uni-data-select/uni-data-select.vue (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-dateformat/date-format.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-dateformat/uni-dateformat.vue
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/calendar-item.vue (97%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/calendar.vue (99%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/i18n/en.json (100%)
rename {uni_modules/uni-popup/components/uni-popup => node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker}/i18n/index.js (100%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/i18n/zh-Hans.json (100%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/i18n/zh-Hant.json (100%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/time-picker.vue (100%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/uni-datetime-picker.vue (100%)
rename {uni_modules/uni-datetime-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-datetime-picker/util.js (100%)
rename {uni_modules/uni-drawer/components => node_modules/@dcloudio/uni-ui/lib}/uni-drawer/keypress.js (100%)
rename {uni_modules/uni-drawer/components => node_modules/@dcloudio/uni-ui/lib}/uni-drawer/uni-drawer.vue (100%)
rename {uni_modules/uni-easyinput/components => node_modules/@dcloudio/uni-ui/lib}/uni-easyinput/common.js (100%)
rename {uni_modules/uni-easyinput/components => node_modules/@dcloudio/uni-ui/lib}/uni-easyinput/uni-easyinput.vue (82%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/en.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/index.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hans.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hant.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue
rename {uni_modules/uni-file-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-file-picker/choose-and-upload-file.js (100%)
rename {uni_modules/uni-file-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-file-picker/uni-file-picker.vue (99%)
rename {uni_modules/uni-file-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-file-picker/upload-file.vue (100%)
rename {uni_modules/uni-file-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-file-picker/upload-image.vue (100%)
rename {uni_modules/uni-file-picker/components => node_modules/@dcloudio/uni-ui/lib}/uni-file-picker/utils.js (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-forms-item/uni-forms-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-forms/uni-forms.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-forms/utils.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-forms/validate.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/en.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/index.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hans.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hant.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/uni-goods-nav.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-group/uni-group.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.uvue
rename {uni_modules/uni-icons/components => node_modules/@dcloudio/uni-ui/lib}/uni-icons/uni-icons.vue (100%)
rename {uni_modules/uni-icons/components => node_modules/@dcloudio/uni-ui/lib}/uni-icons/uniicons.css (100%)
rename {uni_modules/uni-icons/components => node_modules/@dcloudio/uni-ui/lib}/uni-icons/uniicons.ttf (100%)
rename {uni_modules/uni-icons/components => node_modules/@dcloudio/uni-ui/lib}/uni-icons/uniicons_file.ts (100%)
rename {uni_modules/uni-icons/components => node_modules/@dcloudio/uni-ui/lib}/uni-icons/uniicons_file_vue.js (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-link/uni-link.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list-ad/uni-list-ad.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.scss
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list/uni-list.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.wxs
rename {uni_modules/uni-load-more/components => node_modules/@dcloudio/uni-ui/lib}/uni-load-more/i18n/en.json (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/index.js
rename {uni_modules/uni-load-more/components => node_modules/@dcloudio/uni-ui/lib}/uni-load-more/i18n/zh-Hans.json (100%)
rename {uni_modules/uni-load-more/components => node_modules/@dcloudio/uni-ui/lib}/uni-load-more/i18n/zh-Hant.json (100%)
rename {uni_modules/uni-load-more/components => node_modules/@dcloudio/uni-ui/lib}/uni-load-more/uni-load-more.vue (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-nav-bar.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-status-bar.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-notice-bar/uni-notice-bar.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-number-box/uni-number-box.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/en.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/es.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/fr.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/index.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hans.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hant.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-pagination/uni-pagination.vue
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup-dialog/keypress.js (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup-dialog/uni-popup-dialog.vue (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup-message/uni-popup-message.vue (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup-share/uni-popup-share.vue (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/i18n/en.json (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/index.js
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/i18n/zh-Hans.json (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/i18n/zh-Hant.json (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/keypress.js (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/popup.js (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/uni-popup.uvue (100%)
rename {uni_modules/uni-popup/components => node_modules/@dcloudio/uni-ui/lib}/uni-popup/uni-popup.vue (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-rate/uni-rate.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-row/uni-row.vue
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/changelog.md (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/index.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/package.json (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/readme.md (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/index.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_border.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_color.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_radius.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_space.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_styles.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_text.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/setting/_variables.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/styles/tools/functions.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/theme.scss (100%)
rename {uni_modules => node_modules/@dcloudio/uni-ui/lib}/uni-scss/variables.scss (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/en.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/index.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hans.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hant.json
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-search-bar/uni-search-bar.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-section/uni-section.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-segmented-control/uni-segmented-control.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-steps/uni-steps.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/bindingx.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/isPC.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpalipay.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpother.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpwxs.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/render.js
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/uni-swipe-action-item.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/wx.wxs
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swipe-action/uni-swipe-action.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-swiper-dot/uni-swiper-dot.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-table/uni-table.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-tbody/uni-tbody.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-td/uni-td.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-th/filter-dropdown.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-th/uni-th.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-thead/uni-thead.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-title/uni-title.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-tooltip/uni-tooltip.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-tr/table-checkbox.vue
create mode 100644 node_modules/@dcloudio/uni-ui/lib/uni-tr/uni-tr.vue
rename {uni_modules/uni-transition/components => node_modules/@dcloudio/uni-ui/lib}/uni-transition/createAnimation.js (100%)
rename {uni_modules/uni-transition/components => node_modules/@dcloudio/uni-ui/lib}/uni-transition/uni-transition.vue (100%)
create mode 100644 node_modules/@dcloudio/uni-ui/package.json
create mode 100644 pages/document/onlinePreview.vue
delete mode 100644 uni_modules/lime-drag/changelog.md
delete mode 100644 uni_modules/lime-drag/components/l-drag/index.scss
delete mode 100644 uni_modules/lime-drag/components/l-drag/l-drag.vue
delete mode 100644 uni_modules/lime-drag/components/l-drag/props.ts
delete mode 100644 uni_modules/lime-drag/components/l-drag/type.ts
delete mode 100644 uni_modules/lime-drag/components/l-drag/vue.ts
delete mode 100644 uni_modules/lime-drag/components/lime-drag/lime-drag.vue
delete mode 100644 uni_modules/lime-drag/package.json
delete mode 100644 uni_modules/lime-drag/readme.md
delete mode 100644 uni_modules/lime-shared/addUnit/index.ts
delete mode 100644 uni_modules/lime-shared/animation/bezier.ts
delete mode 100644 uni_modules/lime-shared/animation/ease.ts
delete mode 100644 uni_modules/lime-shared/animation/index.ts
delete mode 100644 uni_modules/lime-shared/animation/useTransition.ts
delete mode 100644 uni_modules/lime-shared/animation/uvue.uts
delete mode 100644 uni_modules/lime-shared/animation/vue.ts
delete mode 100644 uni_modules/lime-shared/arrayBufferToFile/index.ts
delete mode 100644 uni_modules/lime-shared/arrayBufferToFile/uvue.uts
delete mode 100644 uni_modules/lime-shared/arrayBufferToFile/vue.ts
delete mode 100644 uni_modules/lime-shared/base64ToArrayBuffer/index.ts
delete mode 100644 uni_modules/lime-shared/base64ToPath/index.ts
delete mode 100644 uni_modules/lime-shared/base64ToPath/uvue.uts
delete mode 100644 uni_modules/lime-shared/base64ToPath/vue.ts
delete mode 100644 uni_modules/lime-shared/camelCase/index.ts
delete mode 100644 uni_modules/lime-shared/canIUseCanvas2d/index.ts
delete mode 100644 uni_modules/lime-shared/changelog.md
delete mode 100644 uni_modules/lime-shared/clamp/index.ts
delete mode 100644 uni_modules/lime-shared/cloneDeep/index.ts
delete mode 100644 uni_modules/lime-shared/cloneDeep/uvue.ts
delete mode 100644 uni_modules/lime-shared/cloneDeep/vue.ts
delete mode 100644 uni_modules/lime-shared/closest/index.ts
delete mode 100644 uni_modules/lime-shared/components/lime-shared/lime-shared.vue
delete mode 100644 uni_modules/lime-shared/createAnimation/index.ts
delete mode 100644 uni_modules/lime-shared/createAnimation/type.ts
delete mode 100644 uni_modules/lime-shared/createAnimation/uvue.ts
delete mode 100644 uni_modules/lime-shared/createAnimation/vue.ts
delete mode 100644 uni_modules/lime-shared/createImage/index.ts
delete mode 100644 uni_modules/lime-shared/debounce/index.ts
delete mode 100644 uni_modules/lime-shared/debounce/uvue.ts
delete mode 100644 uni_modules/lime-shared/debounce/vue.ts
delete mode 100644 uni_modules/lime-shared/exif/index.ts
delete mode 100644 uni_modules/lime-shared/exif/uvue.ts
delete mode 100644 uni_modules/lime-shared/exif/vue.ts
delete mode 100644 uni_modules/lime-shared/fillZero/index.ts
delete mode 100644 uni_modules/lime-shared/floatAdd/index.ts
delete mode 100644 uni_modules/lime-shared/getClassStr/index.ts
delete mode 100644 uni_modules/lime-shared/getCurrentPage/index.ts
delete mode 100644 uni_modules/lime-shared/getCurrentPage/uvue.uts
delete mode 100644 uni_modules/lime-shared/getCurrentPage/vue.ts
delete mode 100644 uni_modules/lime-shared/getLocalFilePath/index.ts
delete mode 100644 uni_modules/lime-shared/getRect/index.ts
delete mode 100644 uni_modules/lime-shared/getRect/uvue.uts
delete mode 100644 uni_modules/lime-shared/getRect/vue.ts
delete mode 100644 uni_modules/lime-shared/getStyleStr/index.ts
delete mode 100644 uni_modules/lime-shared/getStyleStr/index_.uts
delete mode 100644 uni_modules/lime-shared/hasOwn/index.ts
delete mode 100644 uni_modules/lime-shared/hasOwn/uvue.ts
delete mode 100644 uni_modules/lime-shared/hasOwn/vue.ts
delete mode 100644 uni_modules/lime-shared/index.ts
delete mode 100644 uni_modules/lime-shared/isBase64/index.ts
delete mode 100644 uni_modules/lime-shared/isBrowser/index.ts
delete mode 100644 uni_modules/lime-shared/isDef/index.ts
delete mode 100644 uni_modules/lime-shared/isEmpty/index.ts
delete mode 100644 uni_modules/lime-shared/isFunction/index.ts
delete mode 100644 uni_modules/lime-shared/isNumber/index.ts
delete mode 100644 uni_modules/lime-shared/isNumeric/index.ts
delete mode 100644 uni_modules/lime-shared/isObject/index.ts
delete mode 100644 uni_modules/lime-shared/isPromise/index.ts
delete mode 100644 uni_modules/lime-shared/isString/index.ts
delete mode 100644 uni_modules/lime-shared/kebabCase/index.ts
delete mode 100644 uni_modules/lime-shared/package.json
delete mode 100644 uni_modules/lime-shared/pathToBase64/index.ts
delete mode 100644 uni_modules/lime-shared/pathToBase64/uvue.uts
delete mode 100644 uni_modules/lime-shared/pathToBase64/vue.ts
delete mode 100644 uni_modules/lime-shared/platform/index.ts
delete mode 100644 uni_modules/lime-shared/raf/index.ts
delete mode 100644 uni_modules/lime-shared/raf/uvue.ts
delete mode 100644 uni_modules/lime-shared/raf/vue.ts
delete mode 100644 uni_modules/lime-shared/random/index.ts
delete mode 100644 uni_modules/lime-shared/range/index.ts
delete mode 100644 uni_modules/lime-shared/readme.md
delete mode 100644 uni_modules/lime-shared/selectAllComponent/index.ts
delete mode 100644 uni_modules/lime-shared/selectAllComponent/uvue.uts
delete mode 100644 uni_modules/lime-shared/selectAllComponent/vue.ts
delete mode 100644 uni_modules/lime-shared/selectComponent/index.ts
delete mode 100644 uni_modules/lime-shared/selectComponent/uvue.uts
delete mode 100644 uni_modules/lime-shared/selectComponent/vue.ts
delete mode 100644 uni_modules/lime-shared/selectElement/index.uts
delete mode 100644 uni_modules/lime-shared/sleep/index.ts
delete mode 100644 uni_modules/lime-shared/throttle/index.ts
delete mode 100644 uni_modules/lime-shared/toArray/index.ts
delete mode 100644 uni_modules/lime-shared/toBoolean/index.ts
delete mode 100644 uni_modules/lime-shared/toNumber/index.ts
delete mode 100644 uni_modules/lime-shared/unitConvert/index.ts
delete mode 100644 uni_modules/lime-shared/vue/index.ts
delete mode 100644 uni_modules/uni-config-center/changelog.md
delete mode 100644 uni_modules/uni-config-center/package.json
delete mode 100644 uni_modules/uni-config-center/readme.md
delete mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/index.js
delete mode 100644 uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json
delete mode 100644 uni_modules/uni-data-picker/changelog.md
delete mode 100644 uni_modules/uni-data-picker/package.json
delete mode 100644 uni_modules/uni-data-picker/readme.md
delete mode 100644 uni_modules/uni-data-select/changelog.md
delete mode 100644 uni_modules/uni-data-select/package.json
delete mode 100644 uni_modules/uni-data-select/readme.md
delete mode 100644 uni_modules/uni-datetime-picker/changelog.md
delete mode 100644 uni_modules/uni-datetime-picker/package.json
delete mode 100644 uni_modules/uni-datetime-picker/readme.md
delete mode 100644 uni_modules/uni-drawer/changelog.md
delete mode 100644 uni_modules/uni-drawer/package.json
delete mode 100644 uni_modules/uni-drawer/readme.md
delete mode 100644 uni_modules/uni-easyinput/changelog.md
delete mode 100644 uni_modules/uni-easyinput/package.json
delete mode 100644 uni_modules/uni-easyinput/readme.md
delete mode 100644 uni_modules/uni-file-picker/changelog.md
delete mode 100644 uni_modules/uni-file-picker/package.json
delete mode 100644 uni_modules/uni-file-picker/readme.md
delete mode 100644 uni_modules/uni-icons/changelog.md
delete mode 100644 uni_modules/uni-icons/components/uni-icons/uni-icons.uvue
delete mode 100644 uni_modules/uni-icons/package.json
delete mode 100644 uni_modules/uni-icons/readme.md
delete mode 100644 uni_modules/uni-id-common/changelog.md
delete mode 100644 uni_modules/uni-id-common/package.json
delete mode 100644 uni_modules/uni-id-common/readme.md
delete mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/index.js
delete mode 100644 uni_modules/uni-id-common/uniCloud/cloudfunctions/common/uni-id-common/package.json
delete mode 100644 uni_modules/uni-load-more/changelog.md
delete mode 100644 uni_modules/uni-load-more/package.json
delete mode 100644 uni_modules/uni-load-more/readme.md
delete mode 100644 uni_modules/uni-popup/changelog.md
delete mode 100644 uni_modules/uni-popup/package.json
delete mode 100644 uni_modules/uni-popup/readme.md
delete mode 100644 uni_modules/uni-transition/changelog.md
delete mode 100644 uni_modules/uni-transition/package.json
delete mode 100644 uni_modules/uni-transition/readme.md
delete mode 100644 unpackage/dist/build/.nvue/app.css.js
delete mode 100644 unpackage/dist/build/.nvue/app.js
delete mode 100644 unpackage/dist/build/app-plus/__uniappautomator.js
delete mode 100644 unpackage/dist/build/app-plus/__uniappchooselocation.js
delete mode 100644 unpackage/dist/build/app-plus/__uniapperror.png
delete mode 100644 unpackage/dist/build/app-plus/__uniappopenlocation.js
delete mode 100644 unpackage/dist/build/app-plus/__uniapppicker.js
delete mode 100644 unpackage/dist/build/app-plus/__uniappquill.js
delete mode 100644 unpackage/dist/build/app-plus/__uniappquillimageresize.js
delete mode 100644 unpackage/dist/build/app-plus/__uniappscan.js
delete mode 100644 unpackage/dist/build/app-plus/__uniappsuccess.png
delete mode 100644 unpackage/dist/build/app-plus/__uniappview.html
delete mode 100644 unpackage/dist/build/app-plus/app-config-service.js
delete mode 100644 unpackage/dist/build/app-plus/app-config.js
delete mode 100644 unpackage/dist/build/app-plus/app-service.js
delete mode 100644 unpackage/dist/build/app-plus/app.css
delete mode 100644 unpackage/dist/build/app-plus/assets/uniicons.32e978a5.ttf
delete mode 100644 unpackage/dist/build/app-plus/manifest.json
delete mode 100644 unpackage/dist/build/app-plus/pages/checkin/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/document/detail.css
delete mode 100644 unpackage/dist/build/app-plus/pages/document/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/leave/application.css
delete mode 100644 unpackage/dist/build/app-plus/pages/login/login.css
delete mode 100644 unpackage/dist/build/app-plus/pages/meeting/detail.css
delete mode 100644 unpackage/dist/build/app-plus/pages/meeting/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/product/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/safe/detail.css
delete mode 100644 unpackage/dist/build/app-plus/pages/safe/manage.css
delete mode 100644 unpackage/dist/build/app-plus/pages/tab/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/tab/my.css
delete mode 100644 unpackage/dist/build/app-plus/pages/tab/office.css
delete mode 100644 unpackage/dist/build/app-plus/pages/talk/conversation.css
delete mode 100644 unpackage/dist/build/app-plus/pages/talk/message_list.css
delete mode 100644 unpackage/dist/build/app-plus/pages/talk/system.css
delete mode 100644 unpackage/dist/build/app-plus/pages/task/handle.css
delete mode 100644 unpackage/dist/build/app-plus/pages/task/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/task/self.css
delete mode 100644 unpackage/dist/build/app-plus/pages/task/todotask.css
delete mode 100644 unpackage/dist/build/app-plus/pages/useredit/add_address.css
delete mode 100644 unpackage/dist/build/app-plus/pages/useredit/address.css
delete mode 100644 unpackage/dist/build/app-plus/pages/useredit/addressbook.css
delete mode 100644 unpackage/dist/build/app-plus/pages/useredit/useredit.css
delete mode 100644 unpackage/dist/build/app-plus/pages/userlist/index.css
delete mode 100644 unpackage/dist/build/app-plus/pages/zhiban/index.css
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/chenggong.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/circle1.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/circle2.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/circle3.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/circle4.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/position1.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/position2.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/position3.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/position4.png
delete mode 100644 unpackage/dist/build/app-plus/static/checkin/shibai.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/back.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/calendar.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/eye.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/line.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/menu.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/position.png
delete mode 100644 unpackage/dist/build/app-plus/static/index/rili.png
delete mode 100644 unpackage/dist/build/app-plus/static/line.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/checked.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/eye-off.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/eye.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/logo.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/nocheck.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/phone.png
delete mode 100644 unpackage/dist/build/app-plus/static/login/pwd.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/bg1.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/biao.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/close.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/default.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/dingwei.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/done.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/edit.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/navbg.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/num.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/open.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/process.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/self.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/shengji.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/shezhi.png
delete mode 100644 unpackage/dist/build/app-plus/static/my/xiaoxi.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/absence.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/baoxiao.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/daka.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/duty.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/feiyong.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/gonggao.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/gongtuan.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/gongwen.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/huiyi.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/jiankang.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/jiedai.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/process.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/task.png
delete mode 100644 unpackage/dist/build/app-plus/static/office/tongxun.png
delete mode 100644 unpackage/dist/build/app-plus/static/search.png
delete mode 100644 unpackage/dist/build/app-plus/static/system.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/anquan.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/cheliang.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/index1.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/index2.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/office1.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/office2.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/product.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/product1.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/product2.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/scan.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/shenpi.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/taizhang.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/todo.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/user1.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/user2.png
delete mode 100644 unpackage/dist/build/app-plus/static/tab/yunshu.png
delete mode 100644 unpackage/dist/build/app-plus/uni-app-view.umd.js
delete mode 100644 unpackage/dist/cache/.vite/deps/_metadata.json
delete mode 100644 unpackage/dist/cache/.vite/deps/base-64.js
delete mode 100644 unpackage/dist/cache/.vite/deps/base-64.js.map
delete mode 100644 unpackage/dist/cache/.vite/deps/package.json
delete mode 100644 unpackage/dist/dev/.nvue/app.css.js
delete mode 100644 unpackage/dist/dev/.nvue/app.js
delete mode 100644 unpackage/dist/dev/.sourcemap/app/uni_modules/wuwx-step-counter/utssdk/app-android/index.kt.map
delete mode 100644 unpackage/dist/dev/app-plus/__uniappautomator.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniappchooselocation.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniapperror.png
delete mode 100644 unpackage/dist/dev/app-plus/__uniappopenlocation.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniapppicker.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniappquill.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniappquillimageresize.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniappscan.js
delete mode 100644 unpackage/dist/dev/app-plus/__uniappsuccess.png
delete mode 100644 unpackage/dist/dev/app-plus/__uniappview.html
delete mode 100644 unpackage/dist/dev/app-plus/app-config-service.js
delete mode 100644 unpackage/dist/dev/app-plus/app-config.js
delete mode 100644 unpackage/dist/dev/app-plus/app-service.js
delete mode 100644 unpackage/dist/dev/app-plus/app.css
delete mode 100644 unpackage/dist/dev/app-plus/assets/uniicons.32e978a5.ttf
delete mode 100644 unpackage/dist/dev/app-plus/manifest.json
delete mode 100644 unpackage/dist/dev/app-plus/pages/checkin/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/document/detail.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/document/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/leave/application.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/login/login.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/meeting/detail.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/meeting/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/product/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/safe/detail.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/safe/manage.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/tab/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/tab/my.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/tab/office.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/talk/conversation.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/talk/message_list.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/talk/system.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/task/handle.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/task/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/task/self.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/task/todotask.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/useredit/add_address.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/useredit/address.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/useredit/addressbook.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/useredit/useredit.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/userlist/index.css
delete mode 100644 unpackage/dist/dev/app-plus/pages/zhiban/index.css
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/chenggong.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/circle1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/circle2.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/circle3.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/circle4.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/position1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/position2.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/position3.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/position4.png
delete mode 100644 unpackage/dist/dev/app-plus/static/checkin/shibai.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/back.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/calendar.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/eye.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/line.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/menu.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/position.png
delete mode 100644 unpackage/dist/dev/app-plus/static/index/rili.png
delete mode 100644 unpackage/dist/dev/app-plus/static/line.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/checked.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/eye-off.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/eye.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/logo.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/nocheck.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/phone.png
delete mode 100644 unpackage/dist/dev/app-plus/static/login/pwd.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/bg1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/biao.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/close.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/default.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/dingwei.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/done.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/edit.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/navbg.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/num.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/open.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/process.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/self.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/shengji.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/shezhi.png
delete mode 100644 unpackage/dist/dev/app-plus/static/my/xiaoxi.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/absence.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/baoxiao.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/daka.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/duty.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/feiyong.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/gonggao.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/gongtuan.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/gongwen.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/huiyi.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/jiankang.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/jiedai.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/process.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/task.png
delete mode 100644 unpackage/dist/dev/app-plus/static/office/tongxun.png
delete mode 100644 unpackage/dist/dev/app-plus/static/search.png
delete mode 100644 unpackage/dist/dev/app-plus/static/system.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/anquan.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/cheliang.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/index1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/index2.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/office1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/office2.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/product.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/product1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/product2.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/scan.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/shenpi.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/taizhang.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/todo.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/user1.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/user2.png
delete mode 100644 unpackage/dist/dev/app-plus/static/tab/yunshu.png
delete mode 100644 unpackage/dist/dev/app-plus/uni-app-view.umd.js
create mode 100644 utils/code.js
diff --git a/.env.development b/.env.development
index b6fc12c..ba1835b 100644
--- a/.env.development
+++ b/.env.development
@@ -1,3 +1,4 @@
# 开发环境
# 请求接口地址
VITE_REQUEST_BASE_URL = https://36.112.48.190
+#VITE_REQUEST_BASE_URL = http://10.75.166.6:8080
diff --git a/.env.production b/.env.production
index f2ecc62..09673a0 100644
--- a/.env.production
+++ b/.env.production
@@ -1,3 +1,4 @@
# 生产环境
# 请求接口地址
-VITE_REQUEST_BASE_URL = https://36.112.48.190
\ No newline at end of file
+VITE_REQUEST_BASE_URL = https://36.112.48.190
+#VITE_REQUEST_BASE_URL = http://10.75.166.6:8080
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0a73778
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+/uni_modules
+/unpackage/dist
diff --git a/App.vue b/App.vue
index 5ddd792..8771dea 100644
--- a/App.vue
+++ b/App.vue
@@ -34,6 +34,7 @@
cxcJurisdictionApi({
id: "1827997127165677570"
}).then((res) => {
+ console.log(res)
// 1为灰化
if (res.success) {
const store = useStore()
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..ebf6326
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,23 @@
+{
+ "name": "cxc-szcx-uniapp",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@dcloudio/uni-ui": {
+ "version": "1.5.6",
+ "resolved": "https://registry.npmjs.org/@dcloudio/uni-ui/-/uni-ui-1.5.6.tgz",
+ "integrity": "sha512-jmb98PasFvZkrIDXGh94GbdWg2/jyhgs1HUG+bU8eyL7Ltias/5XBz4q8w9RXyWUfqepJRqapPA2IIQpLCuTIg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/base-64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/base-64/-/base-64-1.0.0.tgz",
+ "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.13",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
+ }
+ }
+}
diff --git a/node_modules/.package_versions.json b/node_modules/.package_versions.json
index b96c8cc..78f095c 100644
--- a/node_modules/.package_versions.json
+++ b/node_modules/.package_versions.json
@@ -1,11 +1,5 @@
{
- "base-64": [
- "1.0.0"
- ],
"@dcloudio/uni-ui": [
- "1.5.6"
- ],
- "dayjs": [
- "1.11.13"
+ "1.5.7"
]
}
\ No newline at end of file
diff --git a/node_modules/@dcloudio/uni-ui/LICENSE b/node_modules/@dcloudio/uni-ui/LICENSE
new file mode 100644
index 0000000..7a4a3ea
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
\ No newline at end of file
diff --git a/node_modules/@dcloudio/uni-ui/README.md b/node_modules/@dcloudio/uni-ui/README.md
new file mode 100644
index 0000000..6928c7b
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/README.md
@@ -0,0 +1,245 @@
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
+
+## uni-ui产品特点
+
+### 1. 高性能
+
+目前为止,在小程序和混合app领域,暂时还没有比 `uni-ui` 更高性能的框架。
+- 自动差量更新数据
+
+虽然uni-app支持小程序自定义组件,所有小程序的ui库都可以用。但小程序自定义组件的ui库都需要使用setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。
+
+而 `uni-ui` 属于vue组件,uni-app引擎底层自动diff更新数据。当然其实插件市场里众多vue组件都具备这个特点。
+- 优化逻辑层和视图层通讯折损
+
+非H5,不管是小程序还是App,不管是app的webview渲染还是原生渲染,全都是逻辑层和视图层分离的。这里就有一个逻辑层和视图层通讯的折损问题。
+比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用js监听很难做到实时跟手。
+
+这时就需要使用css动画以及平台底层提供的wxs、bindingx等技术。不过这些技术都比较复杂,所以 `uni-ui` 里做了封装,在需要跟手式操作的ui组件,比如swiperaction列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验
+- 背景停止
+
+很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。
+
+而 `uni-ui` 的组件,会自动判断自己的显示状态,在组件不再可见时,不会再消耗硬件资源。
+
+### 2. 全端
+
+ `uni-ui` 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。
+
+比如导航栏navbar组件,会自动处理不同端的状态栏。
+比如swiperaction组件,在app和微信小程序上会使用交互体验更好的wxs技术,但在不支持wxs的其他小程序端会使用js模拟类似效果。
+
+ `uni-ui` 还支持nvue原生渲染,[详见](https://github.com/dcloudio/uni-ui/tree/nvue-uni-ui)
+
+未来 `uni-ui` 还会支持pc等大屏设备。
+
+### 3. 与uni统计自动集成实现免打点
+
+uni统计是优秀的多端统计平台,见[tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)。
+
+除了一张报表看全端,它的另一个重要特点是免打点。
+比如使用 `uni-ui` 的navbar标题栏、收藏、购物车等组件,均可实现自动打点,统计页面标题等各种行为数据。
+当然你也可以关闭uni统计,这不是强制的。
+
+### 4. 主题扩展
+
+ `uni-ui` 支持[uni.scss](https://uniapp.dcloud.io/collocation/uni-scss),可以方便的切换App的风格。
+
+ui是一种需求非常发散的产品,DCloud官方也无意用 `uni-ui` 压制第三方ui插件的空间,但官方有义务在性能和多端方面提供一个开源的标杆给大家。
+
+我们欢迎更多优秀的ui组件出现,也欢迎更多人贡献 `uni-ui` 的主题风格,满足更多用户的需求。
+
+
+# 快速开始
+
+## 方式一:使用 uni_modules 安装(推荐)
+
+使用 `uni_modules` 方式安装组件库,可以直接通过插件市场导入,通过右键菜单快速更新组件,不需要引用、注册,直接在页面中使用 `uni-ui` 组件。[点击安装 uni-ui 组件库](https://ext.dcloud.net.cn/plugin?id=55)
+
+**注意:下载最新的组件目前仅支持 uni_modules ,非 uni_modules 版本最高支持到组件的1.2.10版本**
+
+如不能升级到 `uni_modules` 版本,可以使用 `uni_modules` 安装好对应组件,将组件拷贝到对应目录。
+
+例如需更新 `uni-list`和`uni-badge` ,将 `uni_modules>uni-list>components`和`uni_modules>uni-badege>components`下所有目录拷贝到如下目录即可:
+
+**目录示例**
+```json {2,3,4,5,6,7}
+┌─components 组件目录
+│ ├─uni-list list 列表目录
+│ │ └─uni-list.vue list 组件文件
+│ ├─uni-list-item list-item 列表目录
+│ │ └─uni-list-item.vue list 组件文件
+│ ├─uni-badge badge 角标目录
+│ │ └─uni-badge.vue badge 组件文件
+│ └─ //.... 更多组件文件
+├─pages 业务页面文件存放的目录
+│ ├─index
+│ │ └─index.vue index示例页面
+├─main.js Vue初始化入口文件
+├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
+├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见
+└─pages.json 配置页
+
+```
+
+
+## 方式二:使用 npm 安装
+
+在 `vue-cli` 项目中可以使用 `npm` 安装 `uni-ui` 库 ,或者直接在 `HBuilderX` 项目中使用 `npm` 。(不推荐后一种方式)
+
+> **注意**
+> cli 项目默认是不编译 `node_modules` 下的组件的,导致条件编译等功能失效 ,导致组件异常
+> 需要在根目录创建 `vue.config.js` 文件 ,增加 `@dcloudio/uni-ui` 包的编译即可正常
+> ```javascript
+> // vue.config.js
+> module.exports = {
+> transpileDependencies:['@dcloudio/uni-ui']
+> }
+> ```
+
+
+
+**准备 sass**
+
+`vue-cli` 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。
+
+- 安装 sass
+```
+ npm i sass -D 或 yarn add sass -D
+```
+
+- 安装 sass-loader
+```
+npm i sass-loader@10.1.1 -D 或 yarn add sass-loader@10.1.1 -D
+```
+
+> sass-loader 请使用低于 @11.0.0 的版本,[sass-loader@11.0.0 不支持 vue@2.6.12 ](https://stackoverflow.com/questions/66082397/typeerror-this-getoptions-is-not-a-function)
+
+
+**安装 uni-ui**
+
+```
+npm i @dcloudio/uni-ui 或 yarn add @dcloudio/uni-ui
+```
+
+
+
+在 ``script`` 中引用组件:
+
+```javascript
+import {uniBadge} from '@dcloudio/uni-ui'
+//import uniBadge from '@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue' //也可使用此方式引入组件
+export default {
+ components: {uniBadge}
+}
+```
+
+
+在 ``template`` 中使用组件:
+
+```html
+
+
+
+```
+> **注意**
+> - `CLI` 引用方式, `H5` 端不支持在 `main.js` 中全局注册组件,如有需求请使用([easyCom](https://uniapp.dcloud.io/collocation/pages?id=easycom)) 的方式引用组件
+> - 使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 `vue.config.js` 解决:
+> ```javascript
+> // 在根目录创建 vue.config.js 文件,并配置如下
+> module.exports = {
+> transpileDependencies: ['@dcloudio/uni-ui']
+> }
+> ```
+
+
+## 使用 npm + easycom
+
+使用 `npm` 安装好 `uni-ui` 之后,需要配置 `easycom` 规则,让 `npm` 安装的组件支持 `easycom`
+
+打开项目根目录下的 `pages.json` 并添加 `easycom` 节点:
+
+```javascript {8}
+// pages.json
+
+{
+ "easycom": {
+ "autoscan": true,
+ "custom": {
+ // uni-ui 规则如下配置
+ "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
+ }
+ },
+
+ // 其他内容
+ pages:[
+ // ...
+ ]
+}
+
+```
+
+### uni-ui 已支持的组件列表
+|组件名|组件说明|
+|---|---|
+|uni-badge|[数字角标](https://ext.dcloud.net.cn/plugin?name=uni-badge)|
+|uni-breadcrumb|[面包屑](https://ext.dcloud.net.cn/plugin?name=uni-breadcrumb)|
+|uni-calendar|[日历](https://ext.dcloud.net.cn/plugin?name=uni-calendar)|
+|uni-card|[卡片](https://ext.dcloud.net.cn/plugin?name=uni-card)|
+|uni-collapse|[折叠面板](https://ext.dcloud.net.cn/plugin?name=uni-collapse)|
+|uni-combox|[组合框](https://ext.dcloud.net.cn/plugin?name=uni-combox)|
+|uni-countdown|[倒计时](https://ext.dcloud.net.cn/plugin?name=uni-countdown)|
+|uni-data-checkbox|[数据选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-checkbox)|
+|uni-data-picker|[数据驱动的picker选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-picker)|
+|uni-data-select|[下拉框选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-select)|
+|uni-dateformat|[日期格式化](https://ext.dcloud.net.cn/plugin?name=uni-dateformat)|
+|uni-datetime-picker|[日期选择器](https://ext.dcloud.net.cn/plugin?name=uni-datetime-picker)|
+|uni-drawer|[抽屉](https://ext.dcloud.net.cn/plugin?name=uni-drawer)|
+|uni-easyinput|[增强输入框](https://ext.dcloud.net.cn/plugin?name=uni-easyinput)|
+|uni-fab|[悬浮按钮](https://ext.dcloud.net.cn/plugin?name=uni-fab)|
+|uni-fav|[收藏按钮](https://ext.dcloud.net.cn/plugin?name=uni-fav)|
+|uni-file-picker|[文件选择上传](https://ext.dcloud.net.cn/plugin?name=uni-file-picker)|
+|uni-forms|[表单](https://ext.dcloud.net.cn/plugin?name=uni-forms)|
+|uni-goods-nav|[商品导航](https://ext.dcloud.net.cn/plugin?name=uni-goods-nav)|
+|uni-grid|[宫格](https://ext.dcloud.net.cn/plugin?name=uni-grid)|
+|uni-group|[分组](https://ext.dcloud.net.cn/plugin?name=uni-group)|
+|uni-icons|[图标](https://ext.dcloud.net.cn/plugin?name=uni-icons)|
+|uni-indexed-list|[索引列表](https://ext.dcloud.net.cn/plugin?name=uni-indexed-list)|
+|uni-link|[超链接](https://ext.dcloud.net.cn/plugin?name=uni-link)|
+|uni-list|[列表](https://ext.dcloud.net.cn/plugin?name=uni-list)|
+|uni-load-more|[加载更多](https://ext.dcloud.net.cn/plugin?name=uni-load-more)|
+|uni-nav-bar|[自定义导航栏](https://ext.dcloud.net.cn/plugin?name=uni-nav-bar)|
+|uni-notice-bar|[通告栏](https://ext.dcloud.net.cn/plugin?name=uni-notice-bar)|
+|uni-number-box|[数字输入框](https://ext.dcloud.net.cn/plugin?name=uni-number-box)|
+|uni-pagination|[分页器](https://ext.dcloud.net.cn/plugin?name=uni-pagination)|
+|uni-popup|[弹出层](https://ext.dcloud.net.cn/plugin?name=uni-popup)|
+|uni-rate|[评分](https://ext.dcloud.net.cn/plugin?name=uni-rate)|
+|uni-row|[布局-行](https://ext.dcloud.net.cn/plugin?name=uni-row)|
+|uni-scss|[辅助样式](https://ext.dcloud.net.cn/plugin?name=uni-scss)|
+|uni-search-bar|[搜索栏](https://ext.dcloud.net.cn/plugin?name=uni-search-bar)|
+|uni-section|[标题栏](https://ext.dcloud.net.cn/plugin?name=uni-section)|
+|uni-segmented-control|[分段器](https://ext.dcloud.net.cn/plugin?name=uni-segmented-control)|
+|uni-steps|[步骤条](https://ext.dcloud.net.cn/plugin?name=uni-steps)|
+|uni-swipe-action|[滑动操作](https://ext.dcloud.net.cn/plugin?name=uni-swipe-action)|
+|uni-swiper-dot|[轮播图指示点](https://ext.dcloud.net.cn/plugin?name=uni-swiper-dot)|
+|uni-table|[表格](https://ext.dcloud.net.cn/plugin?name=uni-table)|
+|uni-tag|[标签](https://ext.dcloud.net.cn/plugin?name=uni-tag)|
+|uni-title|[章节标题](https://ext.dcloud.net.cn/plugin?name=uni-title)|
+|uni-tooltip|[提示文字](https://ext.dcloud.net.cn/plugin?name=uni-tooltip)|
+|uni-transition|[过渡动画](https://ext.dcloud.net.cn/plugin?name=uni-transition)|
+
+
+### 其他
+
+- uni-ui 是全端兼容的基于flex布局的、无dom的ui库
+- uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。
+
+
+> **注意**
+> - `uni-ui` 不支持使用 `Vue.use()` 的方式安装
+
+
+
+### 贡献代码
+在使用 `uni-ui` 中,如遇到无法解决的问题,请提 [Issues](https://github.com/dcloudio/uni-ui/issues) 给我们,假如您有更好的点子或更好的实现方式,也欢迎给我们提交 [PR](https://github.com/dcloudio/uni-ui/pulls)
\ No newline at end of file
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue b/node_modules/@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue
new file mode 100644
index 0000000..956354b
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-badge/uni-badge.vue
@@ -0,0 +1,268 @@
+
+
+
+ {{displayValue}}
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb-item/uni-breadcrumb-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb-item/uni-breadcrumb-item.vue
new file mode 100644
index 0000000..420aaf5
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb-item/uni-breadcrumb-item.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+ {{ separator }}
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb/uni-breadcrumb.vue b/node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb/uni-breadcrumb.vue
new file mode 100644
index 0000000..81fb63e
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-breadcrumb/uni-breadcrumb.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/calendar.js b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/calendar.js
new file mode 100644
index 0000000..b8d7d6f
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/calendar.js
@@ -0,0 +1,546 @@
+/**
+* @1900-2100区间内的公历、农历互转
+* @charset UTF-8
+* @github https://github.com/jjonline/calendar.js
+* @Author Jea杨(JJonline@JJonline.Cn)
+* @Time 2014-7-21
+* @Time 2016-8-13 Fixed 2033hex、Attribution Annals
+* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug
+* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+* @Version 1.0.3
+* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+*/
+/* eslint-disable */
+var calendar = {
+
+ /**
+ * 农历1900-2100的润大小信息表
+ * @Array Of Property
+ * @return Hex
+ */
+ lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
+ 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
+ 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
+ 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
+ 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
+ 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
+ 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
+ 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
+ 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
+ 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
+ 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
+ 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
+ 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
+ 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
+ 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
+ /** Add By JJonline@JJonline.Cn**/
+ 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
+ 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
+ 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
+ 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
+ 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
+ 0x0d520], // 2100
+
+ /**
+ * 公历每个月份的天数普通表
+ * @Array Of Property
+ * @return Number
+ */
+ solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+ /**
+ * 天干地支之天干速查表
+ * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+ * @return Cn string
+ */
+ Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
+
+ /**
+ * 天干地支之地支速查表
+ * @Array Of Property
+ * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+ * @return Cn string
+ */
+ Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
+
+ /**
+ * 天干地支之地支速查表<=>生肖
+ * @Array Of Property
+ * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+ * @return Cn string
+ */
+ Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
+
+ /**
+ * 24节气速查表
+ * @Array Of Property
+ * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+ * @return Cn string
+ */
+ solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
+
+ /**
+ * 1900-2100各年的24节气日期速查表
+ * @Array Of Property
+ * @return 0x string For splice
+ */
+ sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+ '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+ 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+ '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+ '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+ '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+ '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+ '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+ '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+ '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
+
+ /**
+ * 数字转中文速查表
+ * @Array Of Property
+ * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+ * @return Cn string
+ */
+ nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
+
+ /**
+ * 日期转农历称呼速查表
+ * @Array Of Property
+ * @trans ['初','十','廿','卅']
+ * @return Cn string
+ */
+ nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
+
+ /**
+ * 月份转农历称呼速查表
+ * @Array Of Property
+ * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+ * @return Cn string
+ */
+ nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
+
+ /**
+ * 返回农历y年一整年的总天数
+ * @param lunar Year
+ * @return Number
+ * @eg:var count = calendar.lYearDays(1987) ;//count=387
+ */
+ lYearDays: function (y) {
+ var i; var sum = 348
+ for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
+ return (sum + this.leapDays(y))
+ },
+
+ /**
+ * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+ * @param lunar Year
+ * @return Number (0-12)
+ * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+ */
+ leapMonth: function (y) { // 闰字编码 \u95f0
+ return (this.lunarInfo[y - 1900] & 0xf)
+ },
+
+ /**
+ * 返回农历y年闰月的天数 若该年没有闰月则返回0
+ * @param lunar Year
+ * @return Number (0、29、30)
+ * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+ */
+ leapDays: function (y) {
+ if (this.leapMonth(y)) {
+ return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
+ }
+ return (0)
+ },
+
+ /**
+ * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+ * @param lunar Year
+ * @return Number (-1、29、30)
+ * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+ */
+ monthDays: function (y, m) {
+ if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
+ return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
+ },
+
+ /**
+ * 返回公历(!)y年m月的天数
+ * @param solar Year
+ * @return Number (-1、28、29、30、31)
+ * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+ */
+ solarDays: function (y, m) {
+ if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+ var ms = m - 1
+ if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
+ return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
+ } else {
+ return (this.solarMonth[ms])
+ }
+ },
+
+ /**
+ * 农历年份转换为干支纪年
+ * @param lYear 农历年的年份数
+ * @return Cn string
+ */
+ toGanZhiYear: function (lYear) {
+ var ganKey = (lYear - 3) % 10
+ var zhiKey = (lYear - 3) % 12
+ if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
+ if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
+ return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
+ },
+
+ /**
+ * 公历月、日判断所属星座
+ * @param cMonth [description]
+ * @param cDay [description]
+ * @return Cn string
+ */
+ toAstro: function (cMonth, cDay) {
+ var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
+ var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
+ return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
+ },
+
+ /**
+ * 传入offset偏移量返回干支
+ * @param offset 相对甲子的偏移量
+ * @return Cn string
+ */
+ toGanZhi: function (offset) {
+ return this.Gan[offset % 10] + this.Zhi[offset % 12]
+ },
+
+ /**
+ * 传入公历(!)y年获得该年第n个节气的公历日期
+ * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+ * @return day Number
+ * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+ */
+ getTerm: function (y, n) {
+ if (y < 1900 || y > 2100) { return -1 }
+ if (n < 1 || n > 24) { return -1 }
+ var _table = this.sTermInfo[y - 1900]
+ var _info = [
+ parseInt('0x' + _table.substr(0, 5)).toString(),
+ parseInt('0x' + _table.substr(5, 5)).toString(),
+ parseInt('0x' + _table.substr(10, 5)).toString(),
+ parseInt('0x' + _table.substr(15, 5)).toString(),
+ parseInt('0x' + _table.substr(20, 5)).toString(),
+ parseInt('0x' + _table.substr(25, 5)).toString()
+ ]
+ var _calday = [
+ _info[0].substr(0, 1),
+ _info[0].substr(1, 2),
+ _info[0].substr(3, 1),
+ _info[0].substr(4, 2),
+
+ _info[1].substr(0, 1),
+ _info[1].substr(1, 2),
+ _info[1].substr(3, 1),
+ _info[1].substr(4, 2),
+
+ _info[2].substr(0, 1),
+ _info[2].substr(1, 2),
+ _info[2].substr(3, 1),
+ _info[2].substr(4, 2),
+
+ _info[3].substr(0, 1),
+ _info[3].substr(1, 2),
+ _info[3].substr(3, 1),
+ _info[3].substr(4, 2),
+
+ _info[4].substr(0, 1),
+ _info[4].substr(1, 2),
+ _info[4].substr(3, 1),
+ _info[4].substr(4, 2),
+
+ _info[5].substr(0, 1),
+ _info[5].substr(1, 2),
+ _info[5].substr(3, 1),
+ _info[5].substr(4, 2)
+ ]
+ return parseInt(_calday[n - 1])
+ },
+
+ /**
+ * 传入农历数字月份返回汉语通俗表示法
+ * @param lunar month
+ * @return Cn string
+ * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+ */
+ toChinaMonth: function (m) { // 月 => \u6708
+ if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+ var s = this.nStr3[m - 1]
+ s += '\u6708'// 加上月字
+ return s
+ },
+
+ /**
+ * 传入农历日期数字返回汉字表示法
+ * @param lunar day
+ * @return Cn string
+ * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+ */
+ toChinaDay: function (d) { // 日 => \u65e5
+ var s
+ switch (d) {
+ case 10:
+ s = '\u521d\u5341'; break
+ case 20:
+ s = '\u4e8c\u5341'; break
+ break
+ case 30:
+ s = '\u4e09\u5341'; break
+ break
+ default :
+ s = this.nStr2[Math.floor(d / 10)]
+ s += this.nStr1[d % 10]
+ }
+ return (s)
+ },
+
+ /**
+ * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+ * @param y year
+ * @return Cn string
+ * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+ */
+ getAnimal: function (y) {
+ return this.Animals[(y - 4) % 12]
+ },
+
+ /**
+ * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+ * @param y solar year
+ * @param m solar month
+ * @param d solar day
+ * @return JSON object
+ * @eg:console.log(calendar.solar2lunar(1987,11,01));
+ */
+ solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
+ // 年份限定、上限
+ if (y < 1900 || y > 2100) {
+ return -1// undefined转换为数字变为NaN
+ }
+ // 公历传参最下限
+ if (y == 1900 && m == 1 && d < 31) {
+ return -1
+ }
+ // 未传参 获得当天
+ if (!y) {
+ var objDate = new Date()
+ } else {
+ var objDate = new Date(y, parseInt(m) - 1, d)
+ }
+ var i; var leap = 0; var temp = 0
+ // 修正ymd参数
+ var y = objDate.getFullYear()
+ var m = objDate.getMonth() + 1
+ var d = objDate.getDate()
+ var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
+ for (i = 1900; i < 2101 && offset > 0; i++) {
+ temp = this.lYearDays(i)
+ offset -= temp
+ }
+ if (offset < 0) {
+ offset += temp; i--
+ }
+
+ // 是否今天
+ var isTodayObj = new Date()
+ var isToday = false
+ if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+ isToday = true
+ }
+ // 星期几
+ var nWeek = objDate.getDay()
+ var cWeek = this.nStr1[nWeek]
+ // 数字表示周几顺应天朝周一开始的惯例
+ if (nWeek == 0) {
+ nWeek = 7
+ }
+ // 农历年
+ var year = i
+ var leap = this.leapMonth(i) // 闰哪个月
+ var isLeap = false
+
+ // 效验闰月
+ for (i = 1; i < 13 && offset > 0; i++) {
+ // 闰月
+ if (leap > 0 && i == (leap + 1) && isLeap == false) {
+ --i
+ isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
+ } else {
+ temp = this.monthDays(year, i)// 计算农历普通月天数
+ }
+ // 解除闰月
+ if (isLeap == true && i == (leap + 1)) { isLeap = false }
+ offset -= temp
+ }
+ // 闰月导致数组下标重叠取反
+ if (offset == 0 && leap > 0 && i == leap + 1) {
+ if (isLeap) {
+ isLeap = false
+ } else {
+ isLeap = true; --i
+ }
+ }
+ if (offset < 0) {
+ offset += temp; --i
+ }
+ // 农历月
+ var month = i
+ // 农历日
+ var day = offset + 1
+ // 天干地支处理
+ var sm = m - 1
+ var gzY = this.toGanZhiYear(year)
+
+ // 当月的两个节气
+ // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+ var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
+ var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
+
+ // 依据12节气修正干支月
+ var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
+ if (d >= firstNode) {
+ gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
+ }
+
+ // 传入的日期的节气与否
+ var isTerm = false
+ var Term = null
+ if (firstNode == d) {
+ isTerm = true
+ Term = this.solarTerm[m * 2 - 2]
+ }
+ if (secondNode == d) {
+ isTerm = true
+ Term = this.solarTerm[m * 2 - 1]
+ }
+ // 日柱 当月一日与 1900/1/1 相差天数
+ var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
+ var gzD = this.toGanZhi(dayCyclical + d - 1)
+ // 该日期所属的星座
+ var astro = this.toAstro(m, d)
+
+ return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
+ },
+
+ /**
+ * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+ * @param y lunar year
+ * @param m lunar month
+ * @param d lunar day
+ * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+ * @return JSON object
+ * @eg:console.log(calendar.lunar2solar(1987,9,10));
+ */
+ lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
+ var isLeapMonth = !!isLeapMonth
+ var leapOffset = 0
+ var leapMonth = this.leapMonth(y)
+ var leapDay = this.leapDays(y)
+ if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+ if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
+ var day = this.monthDays(y, m)
+ var _day = day
+ // bugFix 2016-9-25
+ // if month is leap, _day use leapDays method
+ if (isLeapMonth) {
+ _day = this.leapDays(y, m)
+ }
+ if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
+
+ // 计算农历的时间差
+ var offset = 0
+ for (var i = 1900; i < y; i++) {
+ offset += this.lYearDays(i)
+ }
+ var leap = 0; var isAdd = false
+ for (var i = 1; i < m; i++) {
+ leap = this.leapMonth(y)
+ if (!isAdd) { // 处理闰月
+ if (leap <= i && leap > 0) {
+ offset += this.leapDays(y); isAdd = true
+ }
+ }
+ offset += this.monthDays(y, i)
+ }
+ // 转换闰月农历 需补充该年闰月的前一个月的时差
+ if (isLeapMonth) { offset += day }
+ // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+ var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
+ var calObj = new Date((offset + d - 31) * 86400000 + stmap)
+ var cY = calObj.getUTCFullYear()
+ var cM = calObj.getUTCMonth() + 1
+ var cD = calObj.getUTCDate()
+
+ return this.solar2lunar(cY, cM, cD)
+ }
+}
+
+export default calendar
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/en.json
new file mode 100644
index 0000000..fcbd13c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/en.json
@@ -0,0 +1,12 @@
+{
+ "uni-calender.ok": "ok",
+ "uni-calender.cancel": "cancel",
+ "uni-calender.today": "today",
+ "uni-calender.MON": "MON",
+ "uni-calender.TUE": "TUE",
+ "uni-calender.WED": "WED",
+ "uni-calender.THU": "THU",
+ "uni-calender.FRI": "FRI",
+ "uni-calender.SAT": "SAT",
+ "uni-calender.SUN": "SUN"
+}
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/index.js
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/index.js
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hans.json
new file mode 100644
index 0000000..1ca43de
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hans.json
@@ -0,0 +1,12 @@
+{
+ "uni-calender.ok": "确定",
+ "uni-calender.cancel": "取消",
+ "uni-calender.today": "今日",
+ "uni-calender.SUN": "日",
+ "uni-calender.MON": "一",
+ "uni-calender.TUE": "二",
+ "uni-calender.WED": "三",
+ "uni-calender.THU": "四",
+ "uni-calender.FRI": "五",
+ "uni-calender.SAT": "六"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hant.json
new file mode 100644
index 0000000..e0fe33b
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/i18n/zh-Hant.json
@@ -0,0 +1,12 @@
+{
+ "uni-calender.ok": "確定",
+ "uni-calender.cancel": "取消",
+ "uni-calender.today": "今日",
+ "uni-calender.SUN": "日",
+ "uni-calender.MON": "一",
+ "uni-calender.TUE": "二",
+ "uni-calender.WED": "三",
+ "uni-calender.THU": "四",
+ "uni-calender.FRI": "五",
+ "uni-calender.SAT": "六"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar-item.vue
new file mode 100644
index 0000000..a54135e
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar-item.vue
@@ -0,0 +1,187 @@
+
+
+
+
+ {{weeks.date}}
+ {{todayText}}
+ {{weeks.isDay ? todayText : (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}
+ {{weeks.extraInfo.info}}
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar.vue b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar.vue
new file mode 100644
index 0000000..0beebfb
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/uni-calendar.vue
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+ {{nowDate.month}}
+
+
+
+ {{SUNText}}
+
+
+ {{monText}}
+
+
+ {{TUEText}}
+
+
+ {{WEDText}}
+
+
+ {{THUText}}
+
+
+ {{FRIText}}
+
+
+ {{SATText}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-calendar/util.js b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/util.js
new file mode 100644
index 0000000..5ec8a92
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-calendar/util.js
@@ -0,0 +1,360 @@
+import CALENDAR from './calendar.js'
+
+class Calendar {
+ constructor({
+ date,
+ selected,
+ startDate,
+ endDate,
+ range
+ } = {}) {
+ // 当前日期
+ this.date = this.getDate(new Date()) // 当前初入日期
+ // 打点信息
+ this.selected = selected || [];
+ // 范围开始
+ this.startDate = startDate
+ // 范围结束
+ this.endDate = endDate
+ this.range = range
+ // 多选状态
+ this.cleanMultipleStatus()
+ // 每周日期
+ this.weeks = {}
+ // this._getWeek(this.date.fullDate)
+ }
+ /**
+ * 设置日期
+ * @param {Object} date
+ */
+ setDate(date) {
+ this.selectDate = this.getDate(date)
+ this._getWeek(this.selectDate.fullDate)
+ }
+
+ /**
+ * 清理多选状态
+ */
+ cleanMultipleStatus() {
+ this.multipleStatus = {
+ before: '',
+ after: '',
+ data: []
+ }
+ }
+
+ /**
+ * 重置开始日期
+ */
+ resetSatrtDate(startDate) {
+ // 范围开始
+ this.startDate = startDate
+
+ }
+
+ /**
+ * 重置结束日期
+ */
+ resetEndDate(endDate) {
+ // 范围结束
+ this.endDate = endDate
+ }
+
+ /**
+ * 获取任意时间
+ */
+ getDate(date, AddDayCount = 0, str = 'day') {
+ if (!date) {
+ date = new Date()
+ }
+ if (typeof date !== 'object') {
+ date = date.replace(/-/g, '/')
+ }
+ const dd = new Date(date)
+ switch (str) {
+ case 'day':
+ dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ case 'month':
+ if (dd.getDate() === 31 && AddDayCount>0) {
+ dd.setDate(dd.getDate() + AddDayCount)
+ } else {
+ const preMonth = dd.getMonth()
+ dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期
+ const nextMonth = dd.getMonth()
+ // 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
+ if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){
+ dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount))
+ }
+ // 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题
+ if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){
+ dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount))
+ }
+ }
+ break
+ case 'year':
+ dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+ break
+ }
+ const y = dd.getFullYear()
+ const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+ const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
+ return {
+ fullDate: y + '-' + m + '-' + d,
+ year: y,
+ month: m,
+ date: d,
+ day: dd.getDay()
+ }
+ }
+
+
+ /**
+ * 获取上月剩余天数
+ */
+ _getLastMonthDays(firstDay, full) {
+ let dateArr = []
+ for (let i = firstDay; i > 0; i--) {
+ const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+ dateArr.push({
+ date: beforeDate,
+ month: full.month - 1,
+ lunar: this.getlunar(full.year, full.month - 1, beforeDate),
+ disable: true
+ })
+ }
+ return dateArr
+ }
+ /**
+ * 获取本月天数
+ */
+ _currentMonthDys(dateData, full) {
+ let dateArr = []
+ let fullDate = this.date.fullDate
+ for (let i = 1; i <= dateData; i++) {
+ let nowDate = full.year + '-' + (full.month < 10 ?
+ full.month : full.month) + '-' + (i < 10 ?
+ '0' + i : i)
+ // 是否今天
+ let isDay = fullDate === nowDate
+ // 获取打点信息
+ let info = this.selected && this.selected.find((item) => {
+ if (this.dateEqual(nowDate, item.date)) {
+ return item
+ }
+ })
+
+ // 日期禁用
+ let disableBefore = true
+ let disableAfter = true
+ if (this.startDate) {
+ // let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+ // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+ disableBefore = this.dateCompare(this.startDate, nowDate)
+ }
+
+ if (this.endDate) {
+ // let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+ // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+ disableAfter = this.dateCompare(nowDate, this.endDate)
+ }
+ let multiples = this.multipleStatus.data
+ let checked = false
+ let multiplesStatus = -1
+ if (this.range) {
+ if (multiples) {
+ multiplesStatus = multiples.findIndex((item) => {
+ return this.dateEqual(item, nowDate)
+ })
+ }
+ if (multiplesStatus !== -1) {
+ checked = true
+ }
+ }
+ let data = {
+ fullDate: nowDate,
+ year: full.year,
+ date: i,
+ multiple: this.range ? checked : false,
+ beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate),
+ afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate),
+ month: full.month,
+ lunar: this.getlunar(full.year, full.month, i),
+ disable: !(disableBefore && disableAfter),
+ isDay
+ }
+ if (info) {
+ data.extraInfo = info
+ }
+
+ dateArr.push(data)
+ }
+ return dateArr
+ }
+ /**
+ * 获取下月天数
+ */
+ _getNextMonthDays(surplus, full) {
+ let dateArr = []
+ for (let i = 1; i < surplus + 1; i++) {
+ dateArr.push({
+ date: i,
+ month: Number(full.month) + 1,
+ lunar: this.getlunar(full.year, Number(full.month) + 1, i),
+ disable: true
+ })
+ }
+ return dateArr
+ }
+
+ /**
+ * 获取当前日期详情
+ * @param {Object} date
+ */
+ getInfo(date) {
+ if (!date) {
+ date = new Date()
+ }
+ const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+ return dateInfo
+ }
+
+ /**
+ * 比较时间大小
+ */
+ dateCompare(startDate, endDate) {
+ // 计算截止时间
+ startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+ if (startDate <= endDate) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+ /**
+ * 比较时间是否相等
+ */
+ dateEqual(before, after) {
+ // 计算截止时间
+ before = new Date(before.replace('-', '/').replace('-', '/'))
+ // 计算详细项的截止时间
+ after = new Date(after.replace('-', '/').replace('-', '/'))
+ if (before.getTime() - after.getTime() === 0) {
+ return true
+ } else {
+ return false
+ }
+ }
+
+
+ /**
+ * 获取日期范围内所有日期
+ * @param {Object} begin
+ * @param {Object} end
+ */
+ geDateAll(begin, end) {
+ var arr = []
+ var ab = begin.split('-')
+ var ae = end.split('-')
+ var db = new Date()
+ db.setFullYear(ab[0], ab[1] - 1, ab[2])
+ var de = new Date()
+ de.setFullYear(ae[0], ae[1] - 1, ae[2])
+ var unixDb = db.getTime() - 24 * 60 * 60 * 1000
+ var unixDe = de.getTime() - 24 * 60 * 60 * 1000
+ for (var k = unixDb; k <= unixDe;) {
+ k = k + 24 * 60 * 60 * 1000
+ arr.push(this.getDate(new Date(parseInt(k))).fullDate)
+ }
+ return arr
+ }
+ /**
+ * 计算阴历日期显示
+ */
+ getlunar(year, month, date) {
+ return CALENDAR.solar2lunar(year, month, date)
+ }
+ /**
+ * 设置打点
+ */
+ setSelectInfo(data, value) {
+ this.selected = value
+ this._getWeek(data)
+ }
+
+ /**
+ * 获取多选状态
+ */
+ setMultiple(fullDate) {
+ let {
+ before,
+ after
+ } = this.multipleStatus
+
+ if (!this.range) return
+ if (before && after) {
+ this.multipleStatus.before = ''
+ this.multipleStatus.after = ''
+ this.multipleStatus.data = []
+ } else {
+ if (!before) {
+ this.multipleStatus.before = fullDate
+ } else {
+ this.multipleStatus.after = fullDate
+ if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
+ } else {
+ this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
+ }
+ }
+ }
+ this._getWeek(fullDate)
+ }
+
+ /**
+ * 获取每周数据
+ * @param {Object} dateData
+ */
+ _getWeek(dateData) {
+ const {
+ year,
+ month
+ } = this.getDate(dateData)
+ let firstDay = new Date(year, month - 1, 1).getDay()
+ let currentDay = new Date(year, month, 0).getDate()
+ let dates = {
+ lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+ currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+ nextMonthDays: [], // 下个月开始几天
+ weeks: []
+ }
+ let canlender = []
+ const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+ dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+ canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+ let weeks = {}
+ // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天
+ for (let i = 0; i < canlender.length; i++) {
+ if (i % 7 === 0) {
+ weeks[parseInt(i / 7)] = new Array(7)
+ }
+ weeks[parseInt(i / 7)][i % 7] = canlender[i]
+ }
+ this.canlender = canlender
+ this.weeks = weeks
+ }
+
+ //静态方法
+ // static init(date) {
+ // if (!this.instance) {
+ // this.instance = new Calendar(date);
+ // }
+ // return this.instance;
+ // }
+}
+
+
+export default Calendar
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-card/uni-card.vue b/node_modules/@dcloudio/uni-ui/lib/uni-card/uni-card.vue
new file mode 100644
index 0000000..38cf594
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-card/uni-card.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-col/uni-col.vue b/node_modules/@dcloudio/uni-ui/lib/uni-col/uni-col.vue
new file mode 100644
index 0000000..84e2deb
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-col/uni-col.vue
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-collapse-item/uni-collapse-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-collapse-item/uni-collapse-item.vue
new file mode 100644
index 0000000..2f0862e
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-collapse-item/uni-collapse-item.vue
@@ -0,0 +1,402 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-collapse/uni-collapse.vue b/node_modules/@dcloudio/uni-ui/lib/uni-collapse/uni-collapse.vue
new file mode 100644
index 0000000..384c39a
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-collapse/uni-collapse.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-combox/uni-combox.vue b/node_modules/@dcloudio/uni-ui/lib/uni-combox/uni-combox.vue
new file mode 100644
index 0000000..d4cb79d
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-combox/uni-combox.vue
@@ -0,0 +1,275 @@
+
+
+
+ {{label}}
+
+
+
+
+
+
+
+
+
+
+ {{emptyTips}}
+
+
+ {{item}}
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/en.json
new file mode 100644
index 0000000..06309cb
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/en.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "day",
+ "uni-countdown.h": "h",
+ "uni-countdown.m": "m",
+ "uni-countdown.s": "s"
+}
diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/index.js
similarity index 100%
rename from uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/index.js
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hans.json
new file mode 100644
index 0000000..358cdd1
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "天",
+ "uni-countdown.h": "时",
+ "uni-countdown.m": "分",
+ "uni-countdown.s": "秒"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hant.json
new file mode 100644
index 0000000..e5a63de
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/i18n/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "uni-countdown.day": "天",
+ "uni-countdown.h": "時",
+ "uni-countdown.m": "分",
+ "uni-countdown.s": "秒"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-countdown/uni-countdown.vue b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/uni-countdown.vue
new file mode 100644
index 0000000..1e28dda
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-countdown/uni-countdown.vue
@@ -0,0 +1,281 @@
+
+
+ {{ d }}
+ {{dayText}}
+ {{ h }}
+ {{ showColon ? ':' : hourText }}
+ {{ i }}
+ {{ showColon ? ':' : minuteText }}
+ {{ s }}
+ {{secondText}}
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-data-checkbox/uni-data-checkbox.vue b/node_modules/@dcloudio/uni-ui/lib/uni-data-checkbox/uni-data-checkbox.vue
new file mode 100644
index 0000000..81d3f07
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-data-checkbox/uni-data-checkbox.vue
@@ -0,0 +1,849 @@
+
+
+
+
+
+ {{mixinDatacomErrorMessage}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/node_modules/@dcloudio/uni-ui/lib/uni-data-picker/keypress.js
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-picker/keypress.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-picker/keypress.js
diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.uvue b/node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.uvue
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.uvue
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.uvue
diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.vue
similarity index 99%
rename from uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.vue
index 4e06ae6..179a4e0 100644
--- a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-data-picker/uni-data-picker.vue
@@ -290,7 +290,6 @@
flex: 1;
position: relative;
font-size: 14px;
-
}
.error-text {
@@ -309,17 +308,15 @@
padding: 0 10px;
padding-right: 5px;
overflow: hidden;
- /* height: 35px; */
+ height: 35px;
/* #ifndef APP-NVUE */
box-sizing: border-box;
/* #endif */
- padding: 20rpx 10px;
}
.input-value-border {
border: 1px solid #e5e5e5;
border-radius: 5px;
-
}
.selected-area {
@@ -363,7 +360,7 @@
.placeholder {
color: grey;
- font-size: 28rpx;
+ font-size: 12px;
}
.input-split-line {
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/loading.uts b/node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/loading.uts
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-pickerview/loading.uts
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/loading.uts
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-picker.js
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-picker.js
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.uts b/node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-picker.uts
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.uts
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-picker.uts
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.css b/node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.css
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.css
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.css
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.uvue b/node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.uvue
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.uvue
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.uvue
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.vue
similarity index 100%
rename from uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-pickerview/uni-data-pickerview.vue
diff --git a/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/node_modules/@dcloudio/uni-ui/lib/uni-data-select/uni-data-select.vue
similarity index 100%
rename from uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-data-select/uni-data-select.vue
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-dateformat/date-format.js b/node_modules/@dcloudio/uni-ui/lib/uni-dateformat/date-format.js
new file mode 100644
index 0000000..e00d559
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-dateformat/date-format.js
@@ -0,0 +1,200 @@
+// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型
+function pad(str, length = 2) {
+ str += ''
+ while (str.length < length) {
+ str = '0' + str
+ }
+ return str.slice(-length)
+}
+
+const parser = {
+ yyyy: (dateObj) => {
+ return pad(dateObj.year, 4)
+ },
+ yy: (dateObj) => {
+ return pad(dateObj.year)
+ },
+ MM: (dateObj) => {
+ return pad(dateObj.month)
+ },
+ M: (dateObj) => {
+ return dateObj.month
+ },
+ dd: (dateObj) => {
+ return pad(dateObj.day)
+ },
+ d: (dateObj) => {
+ return dateObj.day
+ },
+ hh: (dateObj) => {
+ return pad(dateObj.hour)
+ },
+ h: (dateObj) => {
+ return dateObj.hour
+ },
+ mm: (dateObj) => {
+ return pad(dateObj.minute)
+ },
+ m: (dateObj) => {
+ return dateObj.minute
+ },
+ ss: (dateObj) => {
+ return pad(dateObj.second)
+ },
+ s: (dateObj) => {
+ return dateObj.second
+ },
+ SSS: (dateObj) => {
+ return pad(dateObj.millisecond, 3)
+ },
+ S: (dateObj) => {
+ return dateObj.millisecond
+ },
+}
+
+// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12
+function getDate(time) {
+ if (time instanceof Date) {
+ return time
+ }
+ switch (typeof time) {
+ case 'string':
+ {
+ // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000
+ if (time.indexOf('T') > -1) {
+ return new Date(time)
+ }
+ return new Date(time.replace(/-/g, '/'))
+ }
+ default:
+ return new Date(time)
+ }
+}
+
+export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') {
+ if (!date && date !== 0) {
+ return ''
+ }
+ date = getDate(date)
+ const dateObj = {
+ year: date.getFullYear(),
+ month: date.getMonth() + 1,
+ day: date.getDate(),
+ hour: date.getHours(),
+ minute: date.getMinutes(),
+ second: date.getSeconds(),
+ millisecond: date.getMilliseconds()
+ }
+ const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/
+ let flag = true
+ let result = format
+ while (flag) {
+ flag = false
+ result = result.replace(tokenRegExp, function(matched) {
+ flag = true
+ return parser[matched](dateObj)
+ })
+ }
+ return result
+}
+
+export function friendlyDate(time, {
+ locale = 'zh',
+ threshold = [60000, 3600000],
+ format = 'yyyy/MM/dd hh:mm:ss'
+}) {
+ if (time === '-') {
+ return time
+ }
+ if (!time && time !== 0) {
+ return ''
+ }
+ const localeText = {
+ zh: {
+ year: '年',
+ month: '月',
+ day: '天',
+ hour: '小时',
+ minute: '分钟',
+ second: '秒',
+ ago: '前',
+ later: '后',
+ justNow: '刚刚',
+ soon: '马上',
+ template: '{num}{unit}{suffix}'
+ },
+ en: {
+ year: 'year',
+ month: 'month',
+ day: 'day',
+ hour: 'hour',
+ minute: 'minute',
+ second: 'second',
+ ago: 'ago',
+ later: 'later',
+ justNow: 'just now',
+ soon: 'soon',
+ template: '{num} {unit} {suffix}'
+ }
+ }
+ const text = localeText[locale] || localeText.zh
+ let date = getDate(time)
+ let ms = date.getTime() - Date.now()
+ let absMs = Math.abs(ms)
+ if (absMs < threshold[0]) {
+ return ms < 0 ? text.justNow : text.soon
+ }
+ if (absMs >= threshold[1]) {
+ return formatDate(date, format)
+ }
+ let num
+ let unit
+ let suffix = text.later
+ if (ms < 0) {
+ suffix = text.ago
+ ms = -ms
+ }
+ const seconds = Math.floor((ms) / 1000)
+ const minutes = Math.floor(seconds / 60)
+ const hours = Math.floor(minutes / 60)
+ const days = Math.floor(hours / 24)
+ const months = Math.floor(days / 30)
+ const years = Math.floor(months / 12)
+ switch (true) {
+ case years > 0:
+ num = years
+ unit = text.year
+ break
+ case months > 0:
+ num = months
+ unit = text.month
+ break
+ case days > 0:
+ num = days
+ unit = text.day
+ break
+ case hours > 0:
+ num = hours
+ unit = text.hour
+ break
+ case minutes > 0:
+ num = minutes
+ unit = text.minute
+ break
+ default:
+ num = seconds
+ unit = text.second
+ break
+ }
+
+ if (locale === 'en') {
+ if (num === 1) {
+ num = 'a'
+ } else {
+ unit += 's'
+ }
+ }
+
+ return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g,
+ suffix)
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-dateformat/uni-dateformat.vue b/node_modules/@dcloudio/uni-ui/lib/uni-dateformat/uni-dateformat.vue
new file mode 100644
index 0000000..c5ed030
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-dateformat/uni-dateformat.vue
@@ -0,0 +1,88 @@
+
+ {{dateShow}}
+
+
+
+
+
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar-item.vue
similarity index 97%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar-item.vue
index 9c20275..dba9887 100644
--- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar-item.vue
@@ -130,14 +130,14 @@
}
.uni-calendar-item__weeks-box .uni-calendar-item--checked {
- // background-color: $uni-primary;by xxl
+ background-color: $uni-primary;
border-radius: 50%;
box-sizing: border-box;
border: 3px solid #fff;
}
.uni-calendar-item--checked .uni-calendar-item--checked-text {
- // color: #fff;by xxl
+ color: #fff;
}
.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
@@ -146,7 +146,7 @@
.uni-calendar-item--multiple {
background-color: #F6F7FC;
- // color: #fff;by xxl
+ // color: #fff;
}
.uni-calendar-item--multiple .uni-calendar-item--before-checked,
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar.vue
similarity index 99%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar.vue
index af873fe..0f9e121 100644
--- a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/calendar.vue
@@ -93,7 +93,7 @@
-
+ {{confirmText}}
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/en.json
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/en.json
diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/index.js
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/i18n/index.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/index.js
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hans.json
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hans.json
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hant.json
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/i18n/zh-Hant.json
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/time-picker.vue
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/time-picker.vue
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/uni-datetime-picker.vue
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/uni-datetime-picker.vue
diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/util.js
similarity index 100%
rename from uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-datetime-picker/util.js
diff --git a/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/node_modules/@dcloudio/uni-ui/lib/uni-drawer/keypress.js
similarity index 100%
rename from uni_modules/uni-drawer/components/uni-drawer/keypress.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-drawer/keypress.js
diff --git a/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/node_modules/@dcloudio/uni-ui/lib/uni-drawer/uni-drawer.vue
similarity index 100%
rename from uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-drawer/uni-drawer.vue
diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/node_modules/@dcloudio/uni-ui/lib/uni-easyinput/common.js
similarity index 100%
rename from uni_modules/uni-easyinput/components/uni-easyinput/common.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-easyinput/common.js
diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/node_modules/@dcloudio/uni-ui/lib/uni-easyinput/uni-easyinput.vue
similarity index 82%
rename from uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-easyinput/uni-easyinput.vue
index 93506d6..d41411b 100644
--- a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-easyinput/uni-easyinput.vue
@@ -1,27 +1,54 @@
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
@@ -204,7 +231,7 @@
},
styles: {
type: Object,
- default () {
+ default() {
return {
color: '#333',
backgroundColor: '#fff',
@@ -279,23 +306,24 @@
});
},
inputContentStyle() {
- const focusColor = this.focusShow ?
- this.primaryColor :
- this.styles.borderColor;
+ const focusColor = this.focusShow
+ ? this.primaryColor
+ : this.styles.borderColor;
const borderColor =
this.inputBorder && this.msg ? '#dd524d' : focusColor;
return obj2strStyle({
'border-color': borderColor || '#e5e5e5',
- 'background-color': this.disabled ?
- this.styles.disableColor : this.styles.backgroundColor
+ 'background-color': this.disabled
+ ? this.styles.disableColor
+ : this.styles.backgroundColor
});
},
// input右侧样式
inputStyle() {
const paddingRight =
- this.type === 'password' || this.clearable || this.prefixIcon ?
- '' :
- '10px';
+ this.type === 'password' || this.clearable || this.prefixIcon
+ ? ''
+ : '10px';
return obj2strStyle({
'padding-right': paddingRight,
'padding-left': this.prefixIcon ? '' : '10px'
@@ -304,18 +332,9 @@
},
watch: {
value(newVal) {
- // fix by mehaotian 解决 值为null的情况下,input报错的bug
- if (newVal === null) {
- this.val = '';
- return
- }
this.val = newVal;
},
modelValue(newVal) {
- if (newVal === null) {
- this.val = '';
- return
- }
this.val = newVal;
},
focus(newVal) {
@@ -352,10 +371,9 @@
this.modelValue === 0 ||
this.modelValue === ''
) {
- this.val = this.modelValue;
+ this.val = this.modelValue;
} else {
- // fix by ht 如果初始值为null,则input报错,待框架修复
- this.val = '';
+ this.val = null;
}
},
@@ -558,7 +576,6 @@
& ::-o-clear {
display: none;
}
-
/*endif*/
}
@@ -673,4 +690,4 @@
font-size: 12px;
}
}
-
\ No newline at end of file
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue b/node_modules/@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue
new file mode 100644
index 0000000..dfa65c1
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-fab/uni-fab.vue
@@ -0,0 +1,491 @@
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/en.json
new file mode 100644
index 0000000..9a0759e
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/en.json
@@ -0,0 +1,4 @@
+{
+ "uni-fav.collect": "collect",
+ "uni-fav.collected": "collected"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hans.json
new file mode 100644
index 0000000..67c89bf
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hans.json
@@ -0,0 +1,4 @@
+{
+ "uni-fav.collect": "收藏",
+ "uni-fav.collected": "已收藏"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hant.json
new file mode 100644
index 0000000..67c89bf
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-fav/i18n/zh-Hant.json
@@ -0,0 +1,4 @@
+{
+ "uni-fav.collect": "收藏",
+ "uni-fav.collected": "已收藏"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue b/node_modules/@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue
new file mode 100644
index 0000000..d2c58df
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-fav/uni-fav.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+ {{ checked ? contentFav : contentDefault }}
+
+
+
+
+
+
diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/choose-and-upload-file.js
similarity index 100%
rename from uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-file-picker/choose-and-upload-file.js
diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.vue
similarity index 99%
rename from uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.vue
index 785c7eb..fb83f63 100644
--- a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.vue
@@ -89,18 +89,24 @@
},
emits: ['select', 'success', 'fail', 'progress', 'delete', 'update:modelValue', 'input'],
props: {
+ // #ifdef VUE3
modelValue: {
type: [Array, Object],
default () {
return []
}
},
+ // #endif
+
+ // #ifndef VUE3
value: {
type: [Array, Object],
default () {
return []
}
},
+ // #endif
+
disabled: {
type: Boolean,
default: false
@@ -198,18 +204,22 @@
}
},
watch: {
+ // #ifndef VUE3
value: {
handler(newVal, oldVal) {
this.setValue(newVal, oldVal)
},
immediate: true
},
+ // #endif
+ // #ifdef VUE3
modelValue: {
handler(newVal, oldVal) {
this.setValue(newVal, oldVal)
},
immediate: true
},
+ // #endif
},
computed: {
filesList() {
diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-file.vue
similarity index 100%
rename from uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-file.vue
diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-image.vue
similarity index 100%
rename from uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-file-picker/upload-image.vue
diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/node_modules/@dcloudio/uni-ui/lib/uni-file-picker/utils.js
similarity index 100%
rename from uni_modules/uni-file-picker/components/uni-file-picker/utils.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-file-picker/utils.js
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-forms-item/uni-forms-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-forms-item/uni-forms-item.vue
new file mode 100644
index 0000000..0aef9cc
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-forms-item/uni-forms-item.vue
@@ -0,0 +1,627 @@
+
+
+
+
+ *
+ {{label}}
+
+
+
+
+
+
+ {{msg}}
+
+
+
+
+
+
+
+
+
+ {{msg}}
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-forms/uni-forms.vue b/node_modules/@dcloudio/uni-ui/lib/uni-forms/uni-forms.vue
new file mode 100644
index 0000000..9bb9ae7
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-forms/uni-forms.vue
@@ -0,0 +1,397 @@
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-forms/utils.js b/node_modules/@dcloudio/uni-ui/lib/uni-forms/utils.js
new file mode 100644
index 0000000..6da2421
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-forms/utils.js
@@ -0,0 +1,293 @@
+/**
+ * 简单处理对象拷贝
+ * @param {Obejct} 被拷贝对象
+ * @@return {Object} 拷贝对象
+ */
+export const deepCopy = (val) => {
+ return JSON.parse(JSON.stringify(val))
+}
+/**
+ * 过滤数字类型
+ * @param {String} format 数字类型
+ * @@return {Boolean} 返回是否为数字类型
+ */
+export const typeFilter = (format) => {
+ return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp';
+}
+
+/**
+ * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined
+ * @param {String} key 字段名
+ * @param {any} value 字段值
+ * @param {Object} rules 表单校验规则
+ */
+export const getValue = (key, value, rules) => {
+ const isRuleNumType = rules.find(val => val.format && typeFilter(val.format));
+ const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool');
+ // 输入类型为 number
+ if (!!isRuleNumType) {
+ if (!value && value !== 0) {
+ value = null
+ } else {
+ value = isNumber(Number(value)) ? Number(value) : value
+ }
+ }
+
+ // 输入类型为 boolean
+ if (!!isRuleBoolType) {
+ value = isBoolean(value) ? value : false
+ }
+
+ return value;
+}
+
+/**
+ * 获取表单数据
+ * @param {String|Array} name 真实名称,需要使用 realName 获取
+ * @param {Object} data 原始数据
+ * @param {any} value 需要设置的值
+ */
+export const setDataValue = (field, formdata, value) => {
+ formdata[field] = value
+ return value || ''
+}
+
+/**
+ * 获取表单数据
+ * @param {String|Array} field 真实名称,需要使用 realName 获取
+ * @param {Object} data 原始数据
+ */
+export const getDataValue = (field, data) => {
+ return objGet(data, field)
+}
+
+/**
+ * 获取表单类型
+ * @param {String|Array} field 真实名称,需要使用 realName 获取
+ */
+export const getDataValueType = (field, data) => {
+ const value = getDataValue(field, data)
+ return {
+ type: type(value),
+ value
+ }
+}
+
+/**
+ * 获取表单可用的真实name
+ * @param {String|Array} name 表单name
+ * @@return {String} 表单可用的真实name
+ */
+export const realName = (name, data = {}) => {
+ const base_name = _basePath(name)
+ if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) {
+ const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_')
+ return realname
+ }
+ return base_name[0] || name
+}
+
+/**
+ * 判断是否表单可用的真实name
+ * @param {String|Array} name 表单name
+ * @@return {String} 表单可用的真实name
+ */
+export const isRealName = (name) => {
+ const reg = /^_formdata_#*/
+ return reg.test(name)
+}
+
+/**
+ * 获取表单数据的原始格式
+ * @@return {Object|Array} object 需要解析的数据
+ */
+export const rawData = (object = {}, name) => {
+ let newData = JSON.parse(JSON.stringify(object))
+ let formData = {}
+ for(let i in newData){
+ let path = name2arr(i)
+ objSet(formData,path,newData[i])
+ }
+ return formData
+}
+
+/**
+ * 真实name还原为 array
+ * @param {*} name
+ */
+export const name2arr = (name) => {
+ let field = name.replace('_formdata_#', '')
+ field = field.split('#').map(v => (isNumber(v) ? Number(v) : v))
+ return field
+}
+
+/**
+ * 对象中设置值
+ * @param {Object|Array} object 源数据
+ * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c']
+ * @param {String} value 需要设置的值
+ */
+export const objSet = (object, path, value) => {
+ if (typeof object !== 'object') return object;
+ _basePath(path).reduce((o, k, i, _) => {
+ if (i === _.length - 1) {
+ // 若遍历结束直接赋值
+ o[k] = value
+ return null
+ } else if (k in o) {
+ // 若存在对应路径,则返回找到的对象,进行下一次遍历
+ return o[k]
+ } else {
+ // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象
+ o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {}
+ return o[k]
+ }
+ }, object)
+ // 返回object
+ return object;
+}
+
+// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用
+function _basePath(path) {
+ // 若是数组,则直接返回
+ if (Array.isArray(path)) return path
+ // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']'
+ return path.replace(/\[/g, '.').replace(/\]/g, '').split('.')
+}
+
+/**
+ * 从对象中获取值
+ * @param {Object|Array} object 源数据
+ * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c']
+ * @param {String} defaultVal 如果无法从调用链中获取值的默认值
+ */
+export const objGet = (object, path, defaultVal = 'undefined') => {
+ // 先将path处理成统一格式
+ let newPath = _basePath(path)
+ // 递归处理,返回最后结果
+ let val = newPath.reduce((o, k) => {
+ return (o || {})[k]
+ }, object);
+ return !val || val !== undefined ? val : defaultVal
+}
+
+
+/**
+ * 是否为 number 类型
+ * @param {any} num 需要判断的值
+ * @return {Boolean} 是否为 number
+ */
+export const isNumber = (num) => {
+ return !isNaN(Number(num))
+}
+
+/**
+ * 是否为 boolean 类型
+ * @param {any} bool 需要判断的值
+ * @return {Boolean} 是否为 boolean
+ */
+export const isBoolean = (bool) => {
+ return (typeof bool === 'boolean')
+}
+/**
+ * 是否有必填字段
+ * @param {Object} rules 规则
+ * @return {Boolean} 是否有必填字段
+ */
+export const isRequiredField = (rules) => {
+ let isNoField = false;
+ for (let i = 0; i < rules.length; i++) {
+ const ruleData = rules[i];
+ if (ruleData.required) {
+ isNoField = true;
+ break;
+ }
+ }
+ return isNoField;
+}
+
+
+/**
+ * 获取数据类型
+ * @param {Any} obj 需要获取数据类型的值
+ */
+export const type = (obj) => {
+ var class2type = {};
+
+ // 生成class2type映射
+ "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) {
+ class2type["[object " + item + "]"] = item.toLowerCase();
+ })
+ if (obj == null) {
+ return obj + "";
+ }
+ return typeof obj === "object" || typeof obj === "function" ?
+ class2type[Object.prototype.toString.call(obj)] || "object" :
+ typeof obj;
+}
+
+/**
+ * 判断两个值是否相等
+ * @param {any} a 值
+ * @param {any} b 值
+ * @return {Boolean} 是否相等
+ */
+export const isEqual = (a, b) => {
+ //如果a和b本来就全等
+ if (a === b) {
+ //判断是否为0和-0
+ return a !== 0 || 1 / a === 1 / b;
+ }
+ //判断是否为null和undefined
+ if (a == null || b == null) {
+ return a === b;
+ }
+ //接下来判断a和b的数据类型
+ var classNameA = toString.call(a),
+ classNameB = toString.call(b);
+ //如果数据类型不相等,则返回false
+ if (classNameA !== classNameB) {
+ return false;
+ }
+ //如果数据类型相等,再根据不同数据类型分别判断
+ switch (classNameA) {
+ case '[object RegExp]':
+ case '[object String]':
+ //进行字符串转换比较
+ return '' + a === '' + b;
+ case '[object Number]':
+ //进行数字转换比较,判断是否为NaN
+ if (+a !== +a) {
+ return +b !== +b;
+ }
+ //判断是否为0或-0
+ return +a === 0 ? 1 / +a === 1 / b : +a === +b;
+ case '[object Date]':
+ case '[object Boolean]':
+ return +a === +b;
+ }
+ //如果是对象类型
+ if (classNameA == '[object Object]') {
+ //获取a和b的属性长度
+ var propsA = Object.getOwnPropertyNames(a),
+ propsB = Object.getOwnPropertyNames(b);
+ if (propsA.length != propsB.length) {
+ return false;
+ }
+ for (var i = 0; i < propsA.length; i++) {
+ var propName = propsA[i];
+ //如果对应属性对应值不相等,则返回false
+ if (a[propName] !== b[propName]) {
+ return false;
+ }
+ }
+ return true;
+ }
+ //如果是数组类型
+ if (classNameA == '[object Array]') {
+ if (a.toString() == b.toString()) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-forms/validate.js b/node_modules/@dcloudio/uni-ui/lib/uni-forms/validate.js
new file mode 100644
index 0000000..1834c6c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-forms/validate.js
@@ -0,0 +1,486 @@
+var pattern = {
+ email: /^\S+?@\S+?\.\S+?$/,
+ idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
+ url: new RegExp(
+ "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$",
+ 'i')
+};
+
+const FORMAT_MAPPING = {
+ "int": 'integer',
+ "bool": 'boolean',
+ "double": 'number',
+ "long": 'number',
+ "password": 'string'
+ // "fileurls": 'array'
+}
+
+function formatMessage(args, resources = '') {
+ var defaultMessage = ['label']
+ defaultMessage.forEach((item) => {
+ if (args[item] === undefined) {
+ args[item] = ''
+ }
+ })
+
+ let str = resources
+ for (let key in args) {
+ let reg = new RegExp('{' + key + '}')
+ str = str.replace(reg, args[key])
+ }
+ return str
+}
+
+function isEmptyValue(value, type) {
+ if (value === undefined || value === null) {
+ return true;
+ }
+
+ if (typeof value === 'string' && !value) {
+ return true;
+ }
+
+ if (Array.isArray(value) && !value.length) {
+ return true;
+ }
+
+ if (type === 'object' && !Object.keys(value).length) {
+ return true;
+ }
+
+ return false;
+}
+
+const types = {
+ integer(value) {
+ return types.number(value) && parseInt(value, 10) === value;
+ },
+ string(value) {
+ return typeof value === 'string';
+ },
+ number(value) {
+ if (isNaN(value)) {
+ return false;
+ }
+ return typeof value === 'number';
+ },
+ "boolean": function(value) {
+ return typeof value === 'boolean';
+ },
+ "float": function(value) {
+ return types.number(value) && !types.integer(value);
+ },
+ array(value) {
+ return Array.isArray(value);
+ },
+ object(value) {
+ return typeof value === 'object' && !types.array(value);
+ },
+ date(value) {
+ return value instanceof Date;
+ },
+ timestamp(value) {
+ if (!this.integer(value) || Math.abs(value).toString().length > 16) {
+ return false
+ }
+ return true;
+ },
+ file(value) {
+ return typeof value.url === 'string';
+ },
+ email(value) {
+ return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255;
+ },
+ url(value) {
+ return typeof value === 'string' && !!value.match(pattern.url);
+ },
+ pattern(reg, value) {
+ try {
+ return new RegExp(reg).test(value);
+ } catch (e) {
+ return false;
+ }
+ },
+ method(value) {
+ return typeof value === 'function';
+ },
+ idcard(value) {
+ return typeof value === 'string' && !!value.match(pattern.idcard);
+ },
+ 'url-https'(value) {
+ return this.url(value) && value.startsWith('https://');
+ },
+ 'url-scheme'(value) {
+ return value.startsWith('://');
+ },
+ 'url-web'(value) {
+ return false;
+ }
+}
+
+class RuleValidator {
+
+ constructor(message) {
+ this._message = message
+ }
+
+ async validateRule(fieldKey, fieldValue, value, data, allData) {
+ var result = null
+
+ let rules = fieldValue.rules
+
+ let hasRequired = rules.findIndex((item) => {
+ return item.required
+ })
+ if (hasRequired < 0) {
+ if (value === null || value === undefined) {
+ return result
+ }
+ if (typeof value === 'string' && !value.length) {
+ return result
+ }
+ }
+
+ var message = this._message
+
+ if (rules === undefined) {
+ return message['default']
+ }
+
+ for (var i = 0; i < rules.length; i++) {
+ let rule = rules[i]
+ let vt = this._getValidateType(rule)
+
+ Object.assign(rule, {
+ label: fieldValue.label || `["${fieldKey}"]`
+ })
+
+ if (RuleValidatorHelper[vt]) {
+ result = RuleValidatorHelper[vt](rule, value, message)
+ if (result != null) {
+ break
+ }
+ }
+
+ if (rule.validateExpr) {
+ let now = Date.now()
+ let resultExpr = rule.validateExpr(value, allData, now)
+ if (resultExpr === false) {
+ result = this._getMessage(rule, rule.errorMessage || this._message['default'])
+ break
+ }
+ }
+
+ if (rule.validateFunction) {
+ result = await this.validateFunction(rule, value, data, allData, vt)
+ if (result !== null) {
+ break
+ }
+ }
+ }
+
+ if (result !== null) {
+ result = message.TAG + result
+ }
+
+ return result
+ }
+
+ async validateFunction(rule, value, data, allData, vt) {
+ let result = null
+ try {
+ let callbackMessage = null
+ const res = await rule.validateFunction(rule, value, allData || data, (message) => {
+ callbackMessage = message
+ })
+ if (callbackMessage || (typeof res === 'string' && res) || res === false) {
+ result = this._getMessage(rule, callbackMessage || res, vt)
+ }
+ } catch (e) {
+ result = this._getMessage(rule, e.message, vt)
+ }
+ return result
+ }
+
+ _getMessage(rule, message, vt) {
+ return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default'])
+ }
+
+ _getValidateType(rule) {
+ var result = ''
+ if (rule.required) {
+ result = 'required'
+ } else if (rule.format) {
+ result = 'format'
+ } else if (rule.arrayType) {
+ result = 'arrayTypeFormat'
+ } else if (rule.range) {
+ result = 'range'
+ } else if (rule.maximum !== undefined || rule.minimum !== undefined) {
+ result = 'rangeNumber'
+ } else if (rule.maxLength !== undefined || rule.minLength !== undefined) {
+ result = 'rangeLength'
+ } else if (rule.pattern) {
+ result = 'pattern'
+ } else if (rule.validateFunction) {
+ result = 'validateFunction'
+ }
+ return result
+ }
+}
+
+const RuleValidatorHelper = {
+ required(rule, value, message) {
+ if (rule.required && isEmptyValue(value, rule.format || typeof value)) {
+ return formatMessage(rule, rule.errorMessage || message.required);
+ }
+
+ return null
+ },
+
+ range(rule, value, message) {
+ const {
+ range,
+ errorMessage
+ } = rule;
+
+ let list = new Array(range.length);
+ for (let i = 0; i < range.length; i++) {
+ const item = range[i];
+ if (types.object(item) && item.value !== undefined) {
+ list[i] = item.value;
+ } else {
+ list[i] = item;
+ }
+ }
+
+ let result = false
+ if (Array.isArray(value)) {
+ result = (new Set(value.concat(list)).size === list.length);
+ } else {
+ if (list.indexOf(value) > -1) {
+ result = true;
+ }
+ }
+
+ if (!result) {
+ return formatMessage(rule, errorMessage || message['enum']);
+ }
+
+ return null
+ },
+
+ rangeNumber(rule, value, message) {
+ if (!types.number(value)) {
+ return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
+ }
+
+ let {
+ minimum,
+ maximum,
+ exclusiveMinimum,
+ exclusiveMaximum
+ } = rule;
+ let min = exclusiveMinimum ? value <= minimum : value < minimum;
+ let max = exclusiveMaximum ? value >= maximum : value > maximum;
+
+ if (minimum !== undefined && min) {
+ return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ?
+ 'exclusiveMinimum' : 'minimum'
+ ])
+ } else if (maximum !== undefined && max) {
+ return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ?
+ 'exclusiveMaximum' : 'maximum'
+ ])
+ } else if (minimum !== undefined && maximum !== undefined && (min || max)) {
+ return formatMessage(rule, rule.errorMessage || message['number'].range)
+ }
+
+ return null
+ },
+
+ rangeLength(rule, value, message) {
+ if (!types.string(value) && !types.array(value)) {
+ return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
+ }
+
+ let min = rule.minLength;
+ let max = rule.maxLength;
+ let val = value.length;
+
+ if (min !== undefined && val < min) {
+ return formatMessage(rule, rule.errorMessage || message['length'].minLength)
+ } else if (max !== undefined && val > max) {
+ return formatMessage(rule, rule.errorMessage || message['length'].maxLength)
+ } else if (min !== undefined && max !== undefined && (val < min || val > max)) {
+ return formatMessage(rule, rule.errorMessage || message['length'].range)
+ }
+
+ return null
+ },
+
+ pattern(rule, value, message) {
+ if (!types['pattern'](rule.pattern, value)) {
+ return formatMessage(rule, rule.errorMessage || message.pattern.mismatch);
+ }
+
+ return null
+ },
+
+ format(rule, value, message) {
+ var customTypes = Object.keys(types);
+ var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType);
+
+ if (customTypes.indexOf(format) > -1) {
+ if (!types[format](value)) {
+ return formatMessage(rule, rule.errorMessage || message.typeError);
+ }
+ }
+
+ return null
+ },
+
+ arrayTypeFormat(rule, value, message) {
+ if (!Array.isArray(value)) {
+ return formatMessage(rule, rule.errorMessage || message.typeError);
+ }
+
+ for (let i = 0; i < value.length; i++) {
+ const element = value[i];
+ let formatResult = this.format(rule, element, message)
+ if (formatResult !== null) {
+ return formatResult
+ }
+ }
+
+ return null
+ }
+}
+
+class SchemaValidator extends RuleValidator {
+
+ constructor(schema, options) {
+ super(SchemaValidator.message);
+
+ this._schema = schema
+ this._options = options || null
+ }
+
+ updateSchema(schema) {
+ this._schema = schema
+ }
+
+ async validate(data, allData) {
+ let result = this._checkFieldInSchema(data)
+ if (!result) {
+ result = await this.invokeValidate(data, false, allData)
+ }
+ return result.length ? result[0] : null
+ }
+
+ async validateAll(data, allData) {
+ let result = this._checkFieldInSchema(data)
+ if (!result) {
+ result = await this.invokeValidate(data, true, allData)
+ }
+ return result
+ }
+
+ async validateUpdate(data, allData) {
+ let result = this._checkFieldInSchema(data)
+ if (!result) {
+ result = await this.invokeValidateUpdate(data, false, allData)
+ }
+ return result.length ? result[0] : null
+ }
+
+ async invokeValidate(data, all, allData) {
+ let result = []
+ let schema = this._schema
+ for (let key in schema) {
+ let value = schema[key]
+ let errorMessage = await this.validateRule(key, value, data[key], data, allData)
+ if (errorMessage != null) {
+ result.push({
+ key,
+ errorMessage
+ })
+ if (!all) break
+ }
+ }
+ return result
+ }
+
+ async invokeValidateUpdate(data, all, allData) {
+ let result = []
+ for (let key in data) {
+ let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData)
+ if (errorMessage != null) {
+ result.push({
+ key,
+ errorMessage
+ })
+ if (!all) break
+ }
+ }
+ return result
+ }
+
+ _checkFieldInSchema(data) {
+ var keys = Object.keys(data)
+ var keys2 = Object.keys(this._schema)
+ if (new Set(keys.concat(keys2)).size === keys2.length) {
+ return ''
+ }
+
+ var noExistFields = keys.filter((key) => {
+ return keys2.indexOf(key) < 0;
+ })
+ var errorMessage = formatMessage({
+ field: JSON.stringify(noExistFields)
+ }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid'])
+ return [{
+ key: 'invalid',
+ errorMessage
+ }]
+ }
+}
+
+function Message() {
+ return {
+ TAG: "",
+ default: '验证错误',
+ defaultInvalid: '提交的字段{field}在数据库中并不存在',
+ validateFunction: '验证无效',
+ required: '{label}必填',
+ 'enum': '{label}超出范围',
+ timestamp: '{label}格式无效',
+ whitespace: '{label}不能为空',
+ typeError: '{label}类型无效',
+ date: {
+ format: '{label}日期{value}格式无效',
+ parse: '{label}日期无法解析,{value}无效',
+ invalid: '{label}日期{value}无效'
+ },
+ length: {
+ minLength: '{label}长度不能少于{minLength}',
+ maxLength: '{label}长度不能超过{maxLength}',
+ range: '{label}必须介于{minLength}和{maxLength}之间'
+ },
+ number: {
+ minimum: '{label}不能小于{minimum}',
+ maximum: '{label}不能大于{maximum}',
+ exclusiveMinimum: '{label}不能小于等于{minimum}',
+ exclusiveMaximum: '{label}不能大于等于{maximum}',
+ range: '{label}必须介于{minimum}and{maximum}之间'
+ },
+ pattern: {
+ mismatch: '{label}格式不匹配'
+ }
+ };
+}
+
+
+SchemaValidator.message = new Message();
+
+export default SchemaValidator
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/en.json
new file mode 100644
index 0000000..dcdba41
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/en.json
@@ -0,0 +1,6 @@
+{
+ "uni-goods-nav.options.shop": "shop",
+ "uni-goods-nav.options.cart": "cart",
+ "uni-goods-nav.buttonGroup.addToCart": "add to cart",
+ "uni-goods-nav.buttonGroup.buyNow": "buy now"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hans.json
new file mode 100644
index 0000000..48ee344
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hans.json
@@ -0,0 +1,6 @@
+{
+ "uni-goods-nav.options.shop": "店铺",
+ "uni-goods-nav.options.cart": "购物车",
+ "uni-goods-nav.buttonGroup.addToCart": "加入购物车",
+ "uni-goods-nav.buttonGroup.buyNow": "立即购买"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hant.json
new file mode 100644
index 0000000..d0a0255
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/i18n/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "uni-goods-nav.options.shop": "店鋪",
+ "uni-goods-nav.options.cart": "購物車",
+ "uni-goods-nav.buttonGroup.addToCart": "加入購物車",
+ "uni-goods-nav.buttonGroup.buyNow": "立即購買"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/uni-goods-nav.vue b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/uni-goods-nav.vue
new file mode 100644
index 0000000..e79a0fa
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-goods-nav/uni-goods-nav.vue
@@ -0,0 +1,231 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+ {{ item.info }}
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue
new file mode 100644
index 0000000..19c08d7
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-grid-item/uni-grid-item.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue b/node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue
new file mode 100644
index 0000000..0edc7ff
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-grid/uni-grid.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-group/uni-group.vue b/node_modules/@dcloudio/uni-ui/lib/uni-group/uni-group.vue
new file mode 100644
index 0000000..3425ecd
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-group/uni-group.vue
@@ -0,0 +1,134 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.uvue b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.uvue
new file mode 100644
index 0000000..398678e
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.uvue
@@ -0,0 +1,91 @@
+
+
+ {{unicode}}
+
+
+
+
+
+
diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue
similarity index 100%
rename from uni_modules/uni-icons/components/uni-icons/uni-icons.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.vue
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.css
similarity index 100%
rename from uni_modules/uni-icons/components/uni-icons/uniicons.css
rename to node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.css
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.ttf
similarity index 100%
rename from uni_modules/uni-icons/components/uni-icons/uniicons.ttf
rename to node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons.ttf
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons_file.ts b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons_file.ts
similarity index 100%
rename from uni_modules/uni-icons/components/uni-icons/uniicons_file.ts
rename to node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons_file.ts
diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js b/node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons_file_vue.js
similarity index 100%
rename from uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-icons/uniicons_file_vue.js
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list-item.vue
new file mode 100644
index 0000000..19284bd
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list-item.vue
@@ -0,0 +1,144 @@
+
+
+
+ {{ list.key }}
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list.vue b/node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list.vue
new file mode 100644
index 0000000..ee3a7ec
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-indexed-list/uni-indexed-list.vue
@@ -0,0 +1,367 @@
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+ {{ lists[touchmoveIndex].key }}
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-link/uni-link.vue b/node_modules/@dcloudio/uni-ui/lib/uni-link/uni-link.vue
new file mode 100644
index 0000000..27c5468
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-link/uni-link.vue
@@ -0,0 +1,128 @@
+
+
+ {{text}}
+
+
+
+ {{text}}
+
+
+
+
+ {{text}}
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list-ad/uni-list-ad.vue b/node_modules/@dcloudio/uni-ui/lib/uni-list-ad/uni-list-ad.vue
new file mode 100644
index 0000000..b9349c2
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list-ad/uni-list-ad.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.scss b/node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.scss
new file mode 100644
index 0000000..311f8d9
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.scss
@@ -0,0 +1,58 @@
+/**
+ * 这里是 uni-list 组件内置的常用样式变量
+ * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码
+ *
+ */
+
+// 背景色
+$background-color : #fff;
+// 分割线颜色
+$divide-line-color : #e5e5e5;
+
+// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像
+// nvue 页面不支持修改头像大小
+$avatar-width : 45px ;
+
+// 头像边框
+$avatar-border-radius: 5px;
+$avatar-border-color: #eee;
+$avatar-border-width: 1px;
+
+// 标题文字样式
+$title-size : 16px;
+$title-color : #3b4144;
+$title-weight : normal;
+
+// 描述文字样式
+$note-size : 12px;
+$note-color : #999;
+$note-weight : normal;
+
+// 右侧额外内容默认样式
+$right-text-size : 12px;
+$right-text-color : #999;
+$right-text-weight : normal;
+
+// 角标样式
+// nvue 页面不支持修改圆点位置以及大小
+// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动
+$badge-left: 0px;
+$badge-top: 0px;
+
+// 显示圆点时,圆点大小
+$dot-width: 10px;
+$dot-height: 10px;
+
+// 显示角标时,角标大小和字体大小
+$badge-size : 18px;
+$badge-font : 12px;
+// 显示角标时,角标前景色
+$badge-color : #fff;
+// 显示角标时,角标背景色
+$badge-background-color : #ff5a5f;
+// 显示角标时,角标左右间距
+$badge-space : 6px;
+
+// 状态样式
+// 选中颜色
+$hover : #f5f5f5;
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.vue b/node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.vue
new file mode 100644
index 0000000..d49fd7c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list-chat/uni-list-chat.vue
@@ -0,0 +1,593 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ badgeText === 'dot' ? '' : badgeText }}
+
+
+
+ {{ title }}
+
+ [草稿]
+ {{isDraft?note.slice(14):note}}
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item.vue
new file mode 100644
index 0000000..6402508
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list-item/uni-list-item.vue
@@ -0,0 +1,534 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+ {{ note }}
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
\ No newline at end of file
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-list.vue b/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-list.vue
new file mode 100644
index 0000000..6ef5972
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-list.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.vue b/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.vue
new file mode 100644
index 0000000..3b4c5a2
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.wxs b/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.wxs
new file mode 100644
index 0000000..818a6b7
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-list/uni-refresh.wxs
@@ -0,0 +1,87 @@
+var pullDown = {
+ threshold: 95,
+ maxHeight: 200,
+ callRefresh: 'onrefresh',
+ callPullingDown: 'onpullingdown',
+ refreshSelector: '.uni-refresh'
+};
+
+function ready(newValue, oldValue, ownerInstance, instance) {
+ var state = instance.getState()
+ state.canPullDown = newValue;
+ // console.log(newValue);
+}
+
+function touchStart(e, instance) {
+ var state = instance.getState();
+ state.refreshInstance = instance.selectComponent(pullDown.refreshSelector);
+ state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined);
+ if (!state.canPullDown) {
+ return
+ }
+
+ // console.log("touchStart");
+
+ state.height = 0;
+ state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY;
+ state.refreshInstance.setStyle({
+ 'height': 0
+ });
+ state.refreshInstance.callMethod("onchange", true);
+}
+
+function touchMove(e, ownerInstance) {
+ var instance = e.instance;
+ var state = instance.getState();
+ if (!state.canPullDown) {
+ return
+ }
+
+ var oldHeight = state.height;
+ var endY = e.touches[0].pageY || e.changedTouches[0].pageY;
+ var height = endY - state.touchStartY;
+ if (height > pullDown.maxHeight) {
+ return;
+ }
+
+ var refreshInstance = state.refreshInstance;
+ refreshInstance.setStyle({
+ 'height': height + 'px'
+ });
+
+ height = height < pullDown.maxHeight ? height : pullDown.maxHeight;
+ state.height = height;
+ refreshInstance.callMethod(pullDown.callPullingDown, {
+ height: height
+ });
+}
+
+function touchEnd(e, ownerInstance) {
+ var state = e.instance.getState();
+ if (!state.canPullDown) {
+ return
+ }
+
+ state.refreshInstance.callMethod("onchange", false);
+
+ var refreshInstance = state.refreshInstance;
+ if (state.height > pullDown.threshold) {
+ refreshInstance.callMethod(pullDown.callRefresh);
+ return;
+ }
+
+ refreshInstance.setStyle({
+ 'height': 0
+ });
+}
+
+function propObserver(newValue, oldValue, instance) {
+ pullDown = newValue;
+}
+
+module.exports = {
+ touchmove: touchMove,
+ touchstart: touchStart,
+ touchend: touchEnd,
+ propObserver: propObserver
+}
diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/en.json
similarity index 100%
rename from uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/en.json
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hans.json
similarity index 100%
rename from uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hans.json
diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hant.json
similarity index 100%
rename from uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-load-more/i18n/zh-Hant.json
diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue
similarity index 100%
rename from uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-nav-bar.vue b/node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-nav-bar.vue
new file mode 100644
index 0000000..46806c1
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-nav-bar.vue
@@ -0,0 +1,357 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-status-bar.vue b/node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-status-bar.vue
new file mode 100644
index 0000000..4ac73ae
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-nav-bar/uni-status-bar.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-notice-bar/uni-notice-bar.vue b/node_modules/@dcloudio/uni-ui/lib/uni-notice-bar/uni-notice-bar.vue
new file mode 100644
index 0000000..47fb9b3
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-notice-bar/uni-notice-bar.vue
@@ -0,0 +1,431 @@
+
+
+
+
+
+ {{text}}
+
+
+
+ {{ moreText }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-number-box/uni-number-box.vue b/node_modules/@dcloudio/uni-ui/lib/uni-number-box/uni-number-box.vue
new file mode 100644
index 0000000..4e203cc
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-number-box/uni-number-box.vue
@@ -0,0 +1,232 @@
+
+
+
+ -
+
+
+
+ +
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/en.json
new file mode 100644
index 0000000..d6e2897
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/en.json
@@ -0,0 +1,5 @@
+{
+ "uni-pagination.prevText": "prev",
+ "uni-pagination.nextText": "next",
+ "uni-pagination.piecePerPage": "piece/page"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/es.json b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/es.json
new file mode 100644
index 0000000..604a113
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/es.json
@@ -0,0 +1,5 @@
+{
+ "uni-pagination.prevText": "anterior",
+ "uni-pagination.nextText": "prxima",
+ "uni-pagination.piecePerPage": "Artculo/Pgina"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/fr.json b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/fr.json
new file mode 100644
index 0000000..a7a0c77
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/fr.json
@@ -0,0 +1,5 @@
+{
+ "uni-pagination.prevText": "précédente",
+ "uni-pagination.nextText": "suivante",
+ "uni-pagination.piecePerPage": "Articles/Pages"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/index.js
new file mode 100644
index 0000000..2469dd0
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/index.js
@@ -0,0 +1,12 @@
+import en from './en.json'
+import es from './es.json'
+import fr from './fr.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ es,
+ fr,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hans.json
new file mode 100644
index 0000000..782bbe4
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hans.json
@@ -0,0 +1,5 @@
+{
+ "uni-pagination.prevText": "上一页",
+ "uni-pagination.nextText": "下一页",
+ "uni-pagination.piecePerPage": "条/页"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hant.json
new file mode 100644
index 0000000..180fddb
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/i18n/zh-Hant.json
@@ -0,0 +1,5 @@
+{
+ "uni-pagination.prevText": "上一頁",
+ "uni-pagination.nextText": "下一頁",
+ "uni-pagination.piecePerPage": "條/頁"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-pagination/uni-pagination.vue b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/uni-pagination.vue
new file mode 100644
index 0000000..5305b5f
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-pagination/uni-pagination.vue
@@ -0,0 +1,465 @@
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/node_modules/@dcloudio/uni-ui/lib/uni-popup-dialog/keypress.js
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup-dialog/keypress.js
diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/node_modules/@dcloudio/uni-ui/lib/uni-popup-dialog/uni-popup-dialog.vue
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup-dialog/uni-popup-dialog.vue
diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/node_modules/@dcloudio/uni-ui/lib/uni-popup-message/uni-popup-message.vue
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup-message/uni-popup-message.vue
diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/node_modules/@dcloudio/uni-ui/lib/uni-popup-share/uni-popup-share.vue
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup-share/uni-popup-share.vue
diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/en.json
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/i18n/en.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/en.json
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/zh-Hans.json
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/zh-Hans.json
diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/zh-Hant.json
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/i18n/zh-Hant.json
diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/node_modules/@dcloudio/uni-ui/lib/uni-popup/keypress.js
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/keypress.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/keypress.js
diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/node_modules/@dcloudio/uni-ui/lib/uni-popup/popup.js
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/popup.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/popup.js
diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.uvue
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/uni-popup.uvue
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.uvue
diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.vue
similarity index 100%
rename from uni_modules/uni-popup/components/uni-popup/uni-popup.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.vue
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-rate/uni-rate.vue b/node_modules/@dcloudio/uni-ui/lib/uni-rate/uni-rate.vue
new file mode 100644
index 0000000..857f5f9
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-rate/uni-rate.vue
@@ -0,0 +1,361 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-row/uni-row.vue b/node_modules/@dcloudio/uni-ui/lib/uni-row/uni-row.vue
new file mode 100644
index 0000000..f8e8542
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-row/uni-row.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-scss/changelog.md b/node_modules/@dcloudio/uni-ui/lib/uni-scss/changelog.md
similarity index 100%
rename from uni_modules/uni-scss/changelog.md
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/changelog.md
diff --git a/uni_modules/uni-scss/index.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/index.scss
similarity index 100%
rename from uni_modules/uni-scss/index.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/index.scss
diff --git a/uni_modules/uni-scss/package.json b/node_modules/@dcloudio/uni-ui/lib/uni-scss/package.json
similarity index 100%
rename from uni_modules/uni-scss/package.json
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/package.json
diff --git a/uni_modules/uni-scss/readme.md b/node_modules/@dcloudio/uni-ui/lib/uni-scss/readme.md
similarity index 100%
rename from uni_modules/uni-scss/readme.md
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/readme.md
diff --git a/uni_modules/uni-scss/styles/index.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/index.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/index.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/index.scss
diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_border.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_border.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_border.scss
diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_color.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_color.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_color.scss
diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_radius.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_radius.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_radius.scss
diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_space.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_space.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_space.scss
diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_styles.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_styles.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_styles.scss
diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_text.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_text.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_text.scss
diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_variables.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/setting/_variables.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/setting/_variables.scss
diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/tools/functions.scss
similarity index 100%
rename from uni_modules/uni-scss/styles/tools/functions.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/styles/tools/functions.scss
diff --git a/uni_modules/uni-scss/theme.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/theme.scss
similarity index 100%
rename from uni_modules/uni-scss/theme.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/theme.scss
diff --git a/uni_modules/uni-scss/variables.scss b/node_modules/@dcloudio/uni-ui/lib/uni-scss/variables.scss
similarity index 100%
rename from uni_modules/uni-scss/variables.scss
rename to node_modules/@dcloudio/uni-ui/lib/uni-scss/variables.scss
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/en.json b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/en.json
new file mode 100644
index 0000000..dd083a5
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/en.json
@@ -0,0 +1,4 @@
+{
+ "uni-search-bar.cancel": "cancel",
+ "uni-search-bar.placeholder": "Search enter content"
+}
\ No newline at end of file
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/index.js b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/index.js
new file mode 100644
index 0000000..de7509c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/index.js
@@ -0,0 +1,8 @@
+import en from './en.json'
+import zhHans from './zh-Hans.json'
+import zhHant from './zh-Hant.json'
+export default {
+ en,
+ 'zh-Hans': zhHans,
+ 'zh-Hant': zhHant
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hans.json b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hans.json
new file mode 100644
index 0000000..d2a1ced
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hans.json
@@ -0,0 +1,4 @@
+{
+ "uni-search-bar.cancel": "取消",
+ "uni-search-bar.placeholder": "请输入搜索内容"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hant.json b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hant.json
new file mode 100644
index 0000000..f1c96bc
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/i18n/zh-Hant.json
@@ -0,0 +1,4 @@
+{
+ "uni-search-bar.cancel": "取消",
+ "uni-search-bar.placeholder": "請輸入搜索內容"
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/uni-search-bar.vue b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/uni-search-bar.vue
new file mode 100644
index 0000000..6b9b9c1
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-search-bar/uni-search-bar.vue
@@ -0,0 +1,309 @@
+
+
+
+
+
+
+
+
+
+ {{ placeholder }}
+
+
+
+
+
+
+ {{cancelTextI18n}}
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-section/uni-section.vue b/node_modules/@dcloudio/uni-ui/lib/uni-section/uni-section.vue
new file mode 100644
index 0000000..9a52e0b
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-section/uni-section.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-segmented-control/uni-segmented-control.vue b/node_modules/@dcloudio/uni-ui/lib/uni-segmented-control/uni-segmented-control.vue
new file mode 100644
index 0000000..a69366a
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-segmented-control/uni-segmented-control.vue
@@ -0,0 +1,146 @@
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-steps/uni-steps.vue b/node_modules/@dcloudio/uni-ui/lib/uni-steps/uni-steps.vue
new file mode 100644
index 0000000..81017fc
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-steps/uni-steps.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+ {{item.title}}
+ {{item.desc}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/bindingx.js b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/bindingx.js
new file mode 100644
index 0000000..707e432
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/bindingx.js
@@ -0,0 +1,302 @@
+let bindIngXMixins = {}
+
+// #ifdef APP-NVUE
+const BindingX = uni.requireNativePlugin('bindingx');
+const dom = uni.requireNativePlugin('dom');
+const animation = uni.requireNativePlugin('animation');
+
+bindIngXMixins = {
+ data() {
+ return {}
+ },
+
+ watch: {
+ show(newVal) {
+ if (this.autoClose) return
+ if (this.stop) return
+ this.stop = true
+ if (newVal) {
+ this.open(newVal)
+ } else {
+ this.close()
+ }
+ },
+ leftOptions() {
+ this.getSelectorQuery()
+ this.init()
+ },
+ rightOptions(newVal) {
+ this.init()
+ }
+ },
+ created() {
+ this.swipeaction = this.getSwipeAction()
+ if (this.swipeaction && Array.isArray(this.swipeaction.children)) {
+ this.swipeaction.children.push(this)
+ }
+ },
+ mounted() {
+ this.box = this.getEl(this.$refs['selector-box--hock'])
+ this.selector = this.getEl(this.$refs['selector-content--hock']);
+ this.leftButton = this.getEl(this.$refs['selector-left-button--hock']);
+ this.rightButton = this.getEl(this.$refs['selector-right-button--hock']);
+ this.init()
+ },
+ // beforeDestroy() {
+ // this.swipeaction.children.forEach((item, index) => {
+ // if (item === this) {
+ // this.swipeaction.children.splice(index, 1)
+ // }
+ // })
+ // },
+ methods: {
+ init() {
+ this.$nextTick(() => {
+ this.x = 0
+ this.button = {
+ show: false
+ }
+ setTimeout(() => {
+ this.getSelectorQuery()
+ }, 200)
+ })
+ },
+ onClick(index, item, position) {
+ this.$emit('click', {
+ content: item,
+ index,
+ position
+ })
+ },
+ touchstart(e) {
+ // fix by mehaotian 禁止滑动
+ if (this.disabled) return
+ // 每次只触发一次,避免多次监听造成闪烁
+ if (this.stop) return
+ this.stop = true
+ if (this.autoClose && this.swipeaction) {
+ this.swipeaction.closeOther(this)
+ }
+
+ const leftWidth = this.button.left.width
+ const rightWidth = this.button.right.width
+ let expression = this.range(this.x, -rightWidth, leftWidth)
+ let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0)
+ let rightExpression = this.range(this.x + rightWidth, 0, rightWidth)
+
+ this.eventpan = BindingX.bind({
+ anchor: this.box,
+ eventType: 'pan',
+ props: [{
+ element: this.selector,
+ property: 'transform.translateX',
+ expression
+ }, {
+ element: this.leftButton,
+ property: 'transform.translateX',
+ expression: leftExpression
+ }, {
+ element: this.rightButton,
+ property: 'transform.translateX',
+ expression: rightExpression
+ }, ]
+ }, (e) => {
+ // nope
+ if (e.state === 'end') {
+ this.x = e.deltaX + this.x;
+ this.isclick = true
+ this.bindTiming(e.deltaX)
+ }
+ });
+ },
+ touchend(e) {
+ if (this.isopen !== 'none' && !this.isclick) {
+ this.open('none')
+ }
+ },
+ bindTiming(x) {
+ const left = this.x
+ const leftWidth = this.button.left.width
+ const rightWidth = this.button.right.width
+ const threshold = this.threshold
+ if (!this.isopen || this.isopen === 'none') {
+ if (left > threshold) {
+ this.open('left')
+ } else if (left < -threshold) {
+ this.open('right')
+ } else {
+ this.open('none')
+ }
+ } else {
+ if ((x > -leftWidth && x < 0) || x > rightWidth) {
+ if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) {
+ this.open('left')
+ } else {
+ this.open('none')
+ }
+ } else {
+ if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) {
+ this.open('right')
+ } else {
+ this.open('none')
+ }
+ }
+ }
+ },
+
+ /**
+ * 移动范围
+ * @param {Object} num
+ * @param {Object} mix
+ * @param {Object} max
+ */
+ range(num, mix, max) {
+ return `min(max(x+${num}, ${mix}), ${max})`
+ },
+
+ /**
+ * 开启swipe
+ */
+ open(type) {
+ this.animation(type)
+ },
+
+ /**
+ * 关闭swipe
+ */
+ close() {
+ this.animation('none')
+ },
+
+ /**
+ * 开启关闭动画
+ * @param {Object} type
+ */
+ animation(type) {
+ const time = 300
+ const leftWidth = this.button.left.width
+ const rightWidth = this.button.right.width
+ if (this.eventpan && this.eventpan.token) {
+ BindingX.unbind({
+ token: this.eventpan.token,
+ eventType: 'pan'
+ })
+ }
+
+ switch (type) {
+ case 'left':
+ Promise.all([
+ this.move(this.selector, leftWidth),
+ this.move(this.leftButton, 0),
+ this.move(this.rightButton, rightWidth * 2)
+ ]).then(() => {
+ this.setEmit(leftWidth, type)
+ })
+ break
+ case 'right':
+ Promise.all([
+ this.move(this.selector, -rightWidth),
+ this.move(this.leftButton, -leftWidth * 2),
+ this.move(this.rightButton, 0)
+ ]).then(() => {
+ this.setEmit(-rightWidth, type)
+ })
+ break
+ default:
+ Promise.all([
+ this.move(this.selector, 0),
+ this.move(this.leftButton, -leftWidth),
+ this.move(this.rightButton, rightWidth)
+ ]).then(() => {
+ this.setEmit(0, type)
+ })
+
+ }
+ },
+ setEmit(x, type) {
+ const leftWidth = this.button.left.width
+ const rightWidth = this.button.right.width
+ this.isopen = this.isopen || 'none'
+ this.stop = false
+ this.isclick = false
+ // 只有状态不一致才会返回结果
+ if (this.isopen !== type && this.x !== x) {
+ if (type === 'left' && leftWidth > 0) {
+ this.$emit('change', 'left')
+ }
+ if (type === 'right' && rightWidth > 0) {
+ this.$emit('change', 'right')
+ }
+ if (type === 'none') {
+ this.$emit('change', 'none')
+ }
+ }
+ this.x = x
+ this.isopen = type
+ },
+ move(ref, value) {
+ return new Promise((resolve, reject) => {
+ animation.transition(ref, {
+ styles: {
+ transform: `translateX(${value})`,
+ },
+ duration: 150, //ms
+ timingFunction: 'linear',
+ needLayout: false,
+ delay: 0 //ms
+ }, function(res) {
+ resolve(res)
+ })
+ })
+
+ },
+
+ /**
+ * 获取ref
+ * @param {Object} el
+ */
+ getEl(el) {
+ return el.ref
+ },
+ /**
+ * 获取节点信息
+ */
+ getSelectorQuery() {
+ Promise.all([
+ this.getDom('left'),
+ this.getDom('right'),
+ ]).then((data) => {
+ let show = 'none'
+ if (this.autoClose) {
+ show = 'none'
+ } else {
+ show = this.show
+ }
+
+ if (show === 'none') {
+ // this.close()
+ } else {
+ this.open(show)
+ }
+
+ })
+
+ },
+ getDom(str) {
+ return new Promise((resolve, reject) => {
+ dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => {
+ if (data) {
+ this.button[str] = data.size
+ resolve(data)
+ } else {
+ reject()
+ }
+ })
+ })
+ }
+ }
+}
+
+// #endif
+
+export default bindIngXMixins
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/isPC.js b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/isPC.js
new file mode 100644
index 0000000..917cb48
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/isPC.js
@@ -0,0 +1,12 @@
+export function isPC() {
+ var userAgentInfo = navigator.userAgent;
+ var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
+ var flag = true;
+ for (let v = 0; v < Agents.length - 1; v++) {
+ if (userAgentInfo.indexOf(Agents[v]) > 0) {
+ flag = false;
+ break;
+ }
+ }
+ return flag;
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpalipay.js b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpalipay.js
new file mode 100644
index 0000000..35c796b
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpalipay.js
@@ -0,0 +1,195 @@
+export default {
+ data() {
+ return {
+ x: 0,
+ transition: false,
+ width: 0,
+ viewWidth: 0,
+ swipeShow: 0
+ }
+ },
+ watch: {
+ show(newVal) {
+ if (this.autoClose) return
+ if (newVal && newVal !== 'none') {
+ this.transition = true
+ this.open(newVal)
+ } else {
+ this.close()
+ }
+ }
+ },
+ created() {
+ this.swipeaction = this.getSwipeAction()
+ if (this.swipeaction && Array.isArray(this.swipeaction.children)) {
+ this.swipeaction.children.push(this)
+ }
+ },
+ mounted() {
+ this.isopen = false
+ setTimeout(() => {
+ this.getQuerySelect()
+ }, 50)
+ },
+ methods: {
+ appTouchStart(e) {
+ const {
+ clientX
+ } = e.changedTouches[0]
+ this.clientX = clientX
+ this.timestamp = new Date().getTime()
+ },
+ appTouchEnd(e, index, item, position) {
+ const {
+ clientX
+ } = e.changedTouches[0]
+ // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
+ let diff = Math.abs(this.clientX - clientX)
+ let time = (new Date().getTime()) - this.timestamp
+ if (diff < 40 && time < 300) {
+ this.$emit('click', {
+ content: item,
+ index,
+ position
+ })
+ }
+ },
+ /**
+ * 移动触发
+ * @param {Object} e
+ */
+ onChange(e) {
+ this.moveX = e.detail.x
+ this.isclose = false
+ },
+ touchstart(e) {
+ this.transition = false
+ this.isclose = true
+ if (this.autoClose && this.swipeaction) {
+ this.swipeaction.closeOther(this)
+ }
+ },
+ touchmove(e) {},
+ touchend(e) {
+ // 0的位置什么都不执行
+ if (this.isclose && this.isopen === 'none') return
+ if (this.isclose && this.isopen !== 'none') {
+ this.transition = true
+ this.close()
+ } else {
+ this.move(this.moveX + this.leftWidth)
+ }
+ },
+
+ /**
+ * 移动
+ * @param {Object} moveX
+ */
+ move(moveX) {
+ // 打开关闭的处理逻辑不太一样
+ this.transition = true
+ // 未打开状态
+ if (!this.isopen || this.isopen === 'none') {
+ if (moveX > this.threshold) {
+ this.open('left')
+ } else if (moveX < -this.threshold) {
+ this.open('right')
+ } else {
+ this.close()
+ }
+ } else {
+ if (moveX < 0 && moveX < this.rightWidth) {
+ const rightX = this.rightWidth + moveX
+ if (rightX < this.threshold) {
+ this.open('right')
+ } else {
+ this.close()
+ }
+ } else if (moveX > 0 && moveX < this.leftWidth) {
+ const leftX = this.leftWidth - moveX
+ if (leftX < this.threshold) {
+ this.open('left')
+ } else {
+ this.close()
+ }
+ }
+
+ }
+
+ },
+
+ /**
+ * 打开
+ */
+ open(type) {
+ this.x = this.moveX
+ this.animation(type)
+ },
+
+ /**
+ * 关闭
+ */
+ close() {
+ this.x = this.moveX
+ // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化
+ this.$nextTick(() => {
+ this.x = -this.leftWidth
+ if (this.isopen !== 'none') {
+ this.$emit('change', 'none')
+ }
+ this.isopen = 'none'
+ })
+ },
+
+ /**
+ * 执行结束动画
+ * @param {Object} type
+ */
+ animation(type) {
+ this.$nextTick(() => {
+ if (type === 'left') {
+ this.x = 0
+ } else {
+ this.x = -this.rightWidth - this.leftWidth
+ }
+
+ if (this.isopen !== type) {
+ this.$emit('change', type)
+ }
+ this.isopen = type
+ })
+
+ },
+ getSlide(x) {},
+ getQuerySelect() {
+ const query = uni.createSelectorQuery().in(this);
+ query.selectAll('.movable-view--hock').boundingClientRect(data => {
+ this.leftWidth = data[1].width
+ this.rightWidth = data[2].width
+ this.width = data[0].width
+ this.viewWidth = this.width + this.rightWidth + this.leftWidth
+ if (this.leftWidth === 0) {
+ // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点
+ this.x = -0.1
+ } else {
+ this.x = -this.leftWidth
+ }
+ this.moveX = this.x
+ this.$nextTick(() => {
+ this.swipeShow = 1
+ })
+
+ if (!this.buttonWidth) {
+ this.disabledView = true
+ }
+
+ if (this.autoClose) return
+ if (this.show !== 'none') {
+ this.transition = true
+ this.open(this.shows)
+ }
+ }).exec();
+
+ }
+ }
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpother.js b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpother.js
new file mode 100644
index 0000000..d389bce
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpother.js
@@ -0,0 +1,260 @@
+let otherMixins = {}
+
+// #ifndef APP-PLUS|| MP-WEIXIN || H5
+const MIN_DISTANCE = 10;
+otherMixins = {
+ data() {
+ // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug
+ const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+ return {
+ uniShow: false,
+ left: 0,
+ buttonShow: 'none',
+ ani: false,
+ moveLeft: '',
+ elClass
+ }
+ },
+ watch: {
+ show(newVal) {
+ if (this.autoClose) return
+ this.openState(newVal)
+ },
+ left() {
+ this.moveLeft = `translateX(${this.left}px)`
+ },
+ buttonShow(newVal) {
+ if (this.autoClose) return
+ this.openState(newVal)
+ },
+ leftOptions() {
+ this.init()
+ },
+ rightOptions() {
+ this.init()
+ }
+ },
+ mounted() {
+ this.swipeaction = this.getSwipeAction()
+ if (this.swipeaction && Array.isArray(this.swipeaction.children)) {
+ this.swipeaction.children.push(this)
+ }
+ this.init()
+ },
+ methods: {
+ init() {
+ clearTimeout(this.timer)
+ this.timer = setTimeout(() => {
+ this.getSelectorQuery()
+ }, 100)
+ // 移动距离
+ this.left = 0
+ this.x = 0
+ },
+
+ closeSwipe(e) {
+ if (this.autoClose && this.swipeaction) {
+ this.swipeaction.closeOther(this)
+ }
+ },
+ appTouchStart(e) {
+ const {
+ clientX
+ } = e.changedTouches[0]
+ this.clientX = clientX
+ this.timestamp = new Date().getTime()
+ },
+ appTouchEnd(e, index, item, position) {
+ const {
+ clientX
+ } = e.changedTouches[0]
+ // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
+ let diff = Math.abs(this.clientX - clientX)
+ let time = (new Date().getTime()) - this.timestamp
+ if (diff < 40 && time < 300) {
+ this.$emit('click', {
+ content: item,
+ index,
+ position
+ })
+ }
+ },
+ touchstart(e) {
+ if (this.disabled) return
+ this.ani = false
+ this.x = this.left || 0
+ this.stopTouchStart(e)
+ this.autoClose && this.closeSwipe()
+ },
+ touchmove(e) {
+ if (this.disabled) return
+ // 是否可以滑动页面
+ this.stopTouchMove(e);
+ if (this.direction !== 'horizontal') {
+ return;
+ }
+ this.move(this.x + this.deltaX)
+ return false
+ },
+ touchend() {
+ if (this.disabled) return
+ this.moveDirection(this.left)
+ },
+ /**
+ * 设置移动距离
+ * @param {Object} value
+ */
+ move(value) {
+ value = value || 0
+ const leftWidth = this.leftWidth
+ const rightWidth = this.rightWidth
+ // 获取可滑动范围
+ this.left = this.range(value, -rightWidth, leftWidth);
+ },
+
+ /**
+ * 获取范围
+ * @param {Object} num
+ * @param {Object} min
+ * @param {Object} max
+ */
+ range(num, min, max) {
+ return Math.min(Math.max(num, min), max);
+ },
+ /**
+ * 移动方向判断
+ * @param {Object} left
+ * @param {Object} value
+ */
+ moveDirection(left) {
+ const threshold = this.threshold
+ const isopen = this.isopen || 'none'
+ const leftWidth = this.leftWidth
+ const rightWidth = this.rightWidth
+ if (this.deltaX === 0) {
+ this.openState('none')
+ return
+ }
+ if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth >
+ 0 && rightWidth +
+ left < threshold)) {
+ // right
+ this.openState('right')
+ } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth >
+ 0 &&
+ leftWidth - left < threshold)) {
+ // left
+ this.openState('left')
+ } else {
+ // default
+ this.openState('none')
+ }
+ },
+
+ /**
+ * 开启状态
+ * @param {Boolean} type
+ */
+ openState(type) {
+ const leftWidth = this.leftWidth
+ const rightWidth = this.rightWidth
+ let left = ''
+ this.isopen = this.isopen ? this.isopen : 'none'
+ switch (type) {
+ case "left":
+ left = leftWidth
+ break
+ case "right":
+ left = -rightWidth
+ break
+ default:
+ left = 0
+ }
+
+
+ if (this.isopen !== type) {
+ this.throttle = true
+ this.$emit('change', type)
+ }
+
+ this.isopen = type
+ // 添加动画类
+ this.ani = true
+ this.$nextTick(() => {
+ this.move(left)
+ })
+ // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的
+ },
+ close() {
+ this.openState('none')
+ },
+ getDirection(x, y) {
+ if (x > y && x > MIN_DISTANCE) {
+ return 'horizontal';
+ }
+ if (y > x && y > MIN_DISTANCE) {
+ return 'vertical';
+ }
+ return '';
+ },
+
+ /**
+ * 重置滑动状态
+ * @param {Object} event
+ */
+ resetTouchStatus() {
+ this.direction = '';
+ this.deltaX = 0;
+ this.deltaY = 0;
+ this.offsetX = 0;
+ this.offsetY = 0;
+ },
+
+ /**
+ * 设置滑动开始位置
+ * @param {Object} event
+ */
+ stopTouchStart(event) {
+ this.resetTouchStatus();
+ const touch = event.touches[0];
+ this.startX = touch.clientX;
+ this.startY = touch.clientY;
+ },
+
+ /**
+ * 滑动中,是否禁止打开
+ * @param {Object} event
+ */
+ stopTouchMove(event) {
+ const touch = event.touches[0];
+ this.deltaX = touch.clientX - this.startX;
+ this.deltaY = touch.clientY - this.startY;
+ this.offsetX = Math.abs(this.deltaX);
+ this.offsetY = Math.abs(this.deltaY);
+ this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY);
+ },
+
+ getSelectorQuery() {
+ const views = uni.createSelectorQuery().in(this)
+ views
+ .selectAll('.' + this.elClass)
+ .boundingClientRect(data => {
+ if (data.length === 0) return
+ let show = 'none'
+ if (this.autoClose) {
+ show = 'none'
+ } else {
+ show = this.show
+ }
+ this.leftWidth = data[0].width || 0
+ this.rightWidth = data[1].width || 0
+ this.buttonShow = show
+ })
+ .exec()
+ }
+ }
+}
+
+// #endif
+
+export default otherMixins
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpwxs.js b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpwxs.js
new file mode 100644
index 0000000..08de1c9
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/mpwxs.js
@@ -0,0 +1,84 @@
+let mpMixins = {}
+let is_pc = null
+// #ifdef H5
+import {
+ isPC
+} from "./isPC"
+is_pc = isPC()
+// #endif
+// #ifdef APP-VUE|| MP-WEIXIN || H5
+
+mpMixins = {
+ data() {
+ return {
+ is_show: 'none'
+ }
+ },
+ watch: {
+ show(newVal) {
+ this.is_show = this.show
+ }
+ },
+ created() {
+ this.swipeaction = this.getSwipeAction()
+ if (this.swipeaction && Array.isArray(this.swipeaction.children)) {
+ this.swipeaction.children.push(this)
+ }
+ },
+ mounted() {
+ this.is_show = this.show
+ },
+ methods: {
+ // wxs 中调用
+ closeSwipe(e) {
+ if (this.autoClose && this.swipeaction) {
+ this.swipeaction.closeOther(this)
+ }
+ },
+
+ change(e) {
+ this.$emit('change', e.open)
+ if (this.is_show !== e.open) {
+ this.is_show = e.open
+ }
+ },
+
+ appTouchStart(e) {
+ if (is_pc) return
+ const {
+ clientX
+ } = e.changedTouches[0]
+ this.clientX = clientX
+ this.timestamp = new Date().getTime()
+ },
+ appTouchEnd(e, index, item, position) {
+ if (is_pc) return
+ const {
+ clientX
+ } = e.changedTouches[0]
+ // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
+ let diff = Math.abs(this.clientX - clientX)
+ let time = (new Date().getTime()) - this.timestamp
+ if (diff < 40 && time < 300) {
+ this.$emit('click', {
+ content: item,
+ index,
+ position
+ })
+ }
+ },
+ onClickForPC(index, item, position) {
+ if (!is_pc) return
+ // #ifdef H5
+ this.$emit('click', {
+ content: item,
+ index,
+ position
+ })
+ // #endif
+ }
+ }
+}
+
+// #endif
+export default mpMixins
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/render.js b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/render.js
new file mode 100644
index 0000000..78f0ec6
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/render.js
@@ -0,0 +1,270 @@
+const MIN_DISTANCE = 10;
+export default {
+ showWatch(newVal, oldVal, ownerInstance, instance, self) {
+ var state = self.state
+ var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el
+ if (!$el) return
+ this.getDom(instance, ownerInstance, self)
+ if (newVal && newVal !== 'none') {
+ this.openState(newVal, instance, ownerInstance, self)
+ return
+ }
+
+ if (state.left) {
+ this.openState('none', instance, ownerInstance, self)
+ }
+ this.resetTouchStatus(instance, self)
+ },
+
+ /**
+ * 开始触摸操作
+ * @param {Object} e
+ * @param {Object} ins
+ */
+ touchstart(e, ownerInstance, self) {
+ let instance = e.instance;
+ let disabled = instance.getDataset().disabled
+ let state = self.state;
+ this.getDom(instance, ownerInstance, self)
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
+ disabled = this.getDisabledType(disabled)
+ if (disabled) return
+ // 开始触摸时移除动画类
+ instance.requestAnimationFrame(function() {
+ instance.removeClass('ani');
+ ownerInstance.callMethod('closeSwipe');
+ })
+
+ // 记录上次的位置
+ state.x = state.left || 0
+ // 计算滑动开始位置
+ this.stopTouchStart(e, ownerInstance, self)
+ },
+
+ /**
+ * 开始滑动操作
+ * @param {Object} e
+ * @param {Object} ownerInstance
+ */
+ touchmove(e, ownerInstance, self) {
+ let instance = e.instance;
+ // 删除之后已经那不到实例了
+ if (!instance) return;
+ let disabled = instance.getDataset().disabled
+ let state = self.state
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
+ disabled = this.getDisabledType(disabled)
+ if (disabled) return
+ // 是否可以滑动页面
+ this.stopTouchMove(e, self);
+ if (state.direction !== 'horizontal') {
+ return;
+ }
+ if (e.preventDefault) {
+ // 阻止页面滚动
+ e.preventDefault()
+ }
+ let x = state.x + state.deltaX
+ this.move(x, instance, ownerInstance, self)
+ },
+
+ /**
+ * 结束触摸操作
+ * @param {Object} e
+ * @param {Object} ownerInstance
+ */
+ touchend(e, ownerInstance, self) {
+ let instance = e.instance;
+ let disabled = instance.getDataset().disabled
+ let state = self.state
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
+ disabled = this.getDisabledType(disabled)
+
+ if (disabled) return
+ // 滑动过程中触摸结束,通过阙值判断是开启还是关闭
+ // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13
+ this.moveDirection(state.left, instance, ownerInstance, self)
+
+ },
+
+ /**
+ * 设置移动距离
+ * @param {Object} value
+ * @param {Object} instance
+ * @param {Object} ownerInstance
+ */
+ move(value, instance, ownerInstance, self) {
+ value = value || 0
+ let state = self.state
+ let leftWidth = state.leftWidth
+ let rightWidth = state.rightWidth
+ // 获取可滑动范围
+ state.left = this.range(value, -rightWidth, leftWidth);
+ instance.requestAnimationFrame(function() {
+ instance.setStyle({
+ transform: 'translateX(' + state.left + 'px)',
+ '-webkit-transform': 'translateX(' + state.left + 'px)'
+ })
+ })
+
+ },
+
+ /**
+ * 获取元素信息
+ * @param {Object} instance
+ * @param {Object} ownerInstance
+ */
+ getDom(instance, ownerInstance, self) {
+ var state = self.state
+ var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el
+ var leftDom = $el.querySelector('.button-group--left')
+ var rightDom = $el.querySelector('.button-group--right')
+
+ state.leftWidth = leftDom.offsetWidth || 0
+ state.rightWidth = rightDom.offsetWidth || 0
+ state.threshold = instance.getDataset().threshold
+ },
+
+ getDisabledType(value) {
+ return (typeof(value) === 'string' ? JSON.parse(value) : value) || false;
+ },
+
+ /**
+ * 获取范围
+ * @param {Object} num
+ * @param {Object} min
+ * @param {Object} max
+ */
+ range(num, min, max) {
+ return Math.min(Math.max(num, min), max);
+ },
+
+
+ /**
+ * 移动方向判断
+ * @param {Object} left
+ * @param {Object} value
+ * @param {Object} ownerInstance
+ * @param {Object} ins
+ */
+ moveDirection(left, ins, ownerInstance, self) {
+ var state = self.state
+ var threshold = state.threshold
+ var position = state.position
+ var isopen = state.isopen || 'none'
+ var leftWidth = state.leftWidth
+ var rightWidth = state.rightWidth
+ if (state.deltaX === 0) {
+ this.openState('none', ins, ownerInstance, self)
+ return
+ }
+ if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 &&
+ rightWidth +
+ left < threshold)) {
+ // right
+ this.openState('right', ins, ownerInstance, self)
+ } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 &&
+ leftWidth - left < threshold)) {
+ // left
+ this.openState('left', ins, ownerInstance, self)
+ } else {
+ // default
+ this.openState('none', ins, ownerInstance, self)
+ }
+ },
+
+
+ /**
+ * 开启状态
+ * @param {Boolean} type
+ * @param {Object} ins
+ * @param {Object} ownerInstance
+ */
+ openState(type, ins, ownerInstance, self) {
+ let state = self.state
+ let leftWidth = state.leftWidth
+ let rightWidth = state.rightWidth
+ let left = ''
+ state.isopen = state.isopen ? state.isopen : 'none'
+ switch (type) {
+ case "left":
+ left = leftWidth
+ break
+ case "right":
+ left = -rightWidth
+ break
+ default:
+ left = 0
+ }
+
+ // && !state.throttle
+
+ if (state.isopen !== type) {
+ state.throttle = true
+ ownerInstance.callMethod('change', {
+ open: type
+ })
+
+ }
+
+ state.isopen = type
+ // 添加动画类
+ ins.requestAnimationFrame(() => {
+ ins.addClass('ani');
+ this.move(left, ins, ownerInstance, self)
+ })
+ },
+
+
+ getDirection(x, y) {
+ if (x > y && x > MIN_DISTANCE) {
+ return 'horizontal';
+ }
+ if (y > x && y > MIN_DISTANCE) {
+ return 'vertical';
+ }
+ return '';
+ },
+
+ /**
+ * 重置滑动状态
+ * @param {Object} event
+ */
+ resetTouchStatus(instance, self) {
+ let state = self.state;
+ state.direction = '';
+ state.deltaX = 0;
+ state.deltaY = 0;
+ state.offsetX = 0;
+ state.offsetY = 0;
+ },
+
+ /**
+ * 设置滑动开始位置
+ * @param {Object} event
+ */
+ stopTouchStart(event, ownerInstance, self) {
+ let instance = event.instance;
+ let state = self.state
+ this.resetTouchStatus(instance, self);
+ var touch = event.touches[0];
+ state.startX = touch.clientX;
+ state.startY = touch.clientY;
+ },
+
+ /**
+ * 滑动中,是否禁止打开
+ * @param {Object} event
+ */
+ stopTouchMove(event, self) {
+ let instance = event.instance;
+ let state = self.state;
+ let touch = event.touches[0];
+
+ state.deltaX = touch.clientX - state.startX;
+ state.deltaY = touch.clientY - state.startY;
+ state.offsetY = Math.abs(state.deltaY);
+ state.offsetX = Math.abs(state.deltaX);
+ state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY);
+ }
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/uni-swipe-action-item.vue b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/uni-swipe-action-item.vue
new file mode 100644
index 0000000..7538671
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/uni-swipe-action-item.vue
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/wx.wxs b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/wx.wxs
new file mode 100644
index 0000000..b394244
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action-item/wx.wxs
@@ -0,0 +1,341 @@
+var MIN_DISTANCE = 10;
+
+/**
+ * 判断当前是否为H5、app-vue
+ */
+var IS_HTML5 = false
+if (typeof window === 'object') IS_HTML5 = true
+
+/**
+ * 监听页面内值的变化,主要用于动态开关swipe-action
+ * @param {Object} newValue
+ * @param {Object} oldValue
+ * @param {Object} ownerInstance
+ * @param {Object} instance
+ */
+function showWatch(newVal, oldVal, ownerInstance, instance) {
+ var state = instance.getState()
+ getDom(instance, ownerInstance)
+ if (newVal && newVal !== 'none') {
+ openState(newVal, instance, ownerInstance)
+ return
+ }
+
+ if (state.left) {
+ openState('none', instance, ownerInstance)
+ }
+ resetTouchStatus(instance)
+}
+
+/**
+ * 开始触摸操作
+ * @param {Object} e
+ * @param {Object} ins
+ */
+function touchstart(e, ownerInstance) {
+ var instance = e.instance;
+ var disabled = instance.getDataset().disabled
+ var state = instance.getState();
+ getDom(instance, ownerInstance)
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
+ if (disabled) return
+ // 开始触摸时移除动画类
+ instance.requestAnimationFrame(function() {
+ instance.removeClass('ani');
+ ownerInstance.callMethod('closeSwipe');
+ })
+
+ // 记录上次的位置
+ state.x = state.left || 0
+ // 计算滑动开始位置
+ stopTouchStart(e, ownerInstance)
+}
+
+/**
+ * 开始滑动操作
+ * @param {Object} e
+ * @param {Object} ownerInstance
+ */
+function touchmove(e, ownerInstance) {
+ var instance = e.instance;
+ var disabled = instance.getDataset().disabled
+ var state = instance.getState()
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
+ if (disabled) return
+ // 是否可以滑动页面
+ stopTouchMove(e);
+ if (state.direction !== 'horizontal') {
+ return;
+ }
+
+ if (e.preventDefault) {
+ // 阻止页面滚动
+ e.preventDefault()
+ }
+
+ move(state.x + state.deltaX, instance, ownerInstance)
+}
+
+/**
+ * 结束触摸操作
+ * @param {Object} e
+ * @param {Object} ownerInstance
+ */
+function touchend(e, ownerInstance) {
+ var instance = e.instance;
+ var disabled = instance.getDataset().disabled
+ var state = instance.getState()
+ // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复
+ disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false;
+
+ if (disabled) return
+ // 滑动过程中触摸结束,通过阙值判断是开启还是关闭
+ // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13
+ moveDirection(state.left, instance, ownerInstance)
+
+}
+
+/**
+ * 设置移动距离
+ * @param {Object} value
+ * @param {Object} instance
+ * @param {Object} ownerInstance
+ */
+function move(value, instance, ownerInstance) {
+ value = value || 0
+ var state = instance.getState()
+ var leftWidth = state.leftWidth
+ var rightWidth = state.rightWidth
+ // 获取可滑动范围
+ state.left = range(value, -rightWidth, leftWidth);
+ instance.requestAnimationFrame(function() {
+ instance.setStyle({
+ transform: 'translateX(' + state.left + 'px)',
+ '-webkit-transform': 'translateX(' + state.left + 'px)'
+ })
+ })
+
+}
+
+/**
+ * 获取元素信息
+ * @param {Object} instance
+ * @param {Object} ownerInstance
+ */
+function getDom(instance, ownerInstance) {
+ var state = instance.getState()
+ var leftDom = ownerInstance.selectComponent('.button-group--left')
+ var rightDom = ownerInstance.selectComponent('.button-group--right')
+ var leftStyles = {
+ width: 0
+ }
+ var rightStyles = {
+ width: 0
+ }
+ leftStyles = leftDom.getBoundingClientRect()
+ rightStyles = rightDom.getBoundingClientRect()
+
+ state.leftWidth = leftStyles.width || 0
+ state.rightWidth = rightStyles.width || 0
+ state.threshold = instance.getDataset().threshold
+}
+
+/**
+ * 获取范围
+ * @param {Object} num
+ * @param {Object} min
+ * @param {Object} max
+ */
+function range(num, min, max) {
+ return Math.min(Math.max(num, min), max);
+}
+
+
+/**
+ * 移动方向判断
+ * @param {Object} left
+ * @param {Object} value
+ * @param {Object} ownerInstance
+ * @param {Object} ins
+ */
+function moveDirection(left, ins, ownerInstance) {
+ var state = ins.getState()
+ var threshold = state.threshold
+ var position = state.position
+ var isopen = state.isopen || 'none'
+ var leftWidth = state.leftWidth
+ var rightWidth = state.rightWidth
+ if (state.deltaX === 0) {
+ openState('none', ins, ownerInstance)
+ return
+ }
+ if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 &&
+ rightWidth +
+ left < threshold)) {
+ // right
+ openState('right', ins, ownerInstance)
+ } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 &&
+ leftWidth - left < threshold)) {
+ // left
+ openState('left', ins, ownerInstance)
+ } else {
+ // default
+ openState('none', ins, ownerInstance)
+ }
+}
+
+
+/**
+ * 开启状态
+ * @param {Boolean} type
+ * @param {Object} ins
+ * @param {Object} ownerInstance
+ */
+function openState(type, ins, ownerInstance) {
+ var state = ins.getState()
+ var leftWidth = state.leftWidth
+ var rightWidth = state.rightWidth
+ var left = ''
+ state.isopen = state.isopen ? state.isopen : 'none'
+ switch (type) {
+ case "left":
+ left = leftWidth
+ break
+ case "right":
+ left = -rightWidth
+ break
+ default:
+ left = 0
+ }
+
+ // && !state.throttle
+
+ if (state.isopen !== type) {
+ state.throttle = true
+ ownerInstance.callMethod('change', {
+ open: type
+ })
+
+ }
+
+ state.isopen = type
+ // 添加动画类
+ ins.requestAnimationFrame(function() {
+ ins.addClass('ani');
+ move(left, ins, ownerInstance)
+ })
+ // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的
+}
+
+
+function getDirection(x, y) {
+ if (x > y && x > MIN_DISTANCE) {
+ return 'horizontal';
+ }
+ if (y > x && y > MIN_DISTANCE) {
+ return 'vertical';
+ }
+ return '';
+}
+
+/**
+ * 重置滑动状态
+ * @param {Object} event
+ */
+function resetTouchStatus(instance) {
+ var state = instance.getState();
+ state.direction = '';
+ state.deltaX = 0;
+ state.deltaY = 0;
+ state.offsetX = 0;
+ state.offsetY = 0;
+}
+
+/**
+ * 设置滑动开始位置
+ * @param {Object} event
+ */
+function stopTouchStart(event) {
+ var instance = event.instance;
+ var state = instance.getState();
+ resetTouchStatus(instance);
+ var touch = event.touches[0];
+ if (IS_HTML5 && isPC()) {
+ touch = event;
+ }
+ state.startX = touch.clientX;
+ state.startY = touch.clientY;
+}
+
+/**
+ * 滑动中,是否禁止打开
+ * @param {Object} event
+ */
+function stopTouchMove(event) {
+ var instance = event.instance;
+ var state = instance.getState();
+ var touch = event.touches[0];
+ if (IS_HTML5 && isPC()) {
+ touch = event;
+ }
+ state.deltaX = touch.clientX - state.startX;
+ state.deltaY = touch.clientY - state.startY;
+ state.offsetY = Math.abs(state.deltaY);
+ state.offsetX = Math.abs(state.deltaX);
+ state.direction = state.direction || getDirection(state.offsetX, state.offsetY);
+}
+
+function isPC() {
+ var userAgentInfo = navigator.userAgent;
+ var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
+ var flag = true;
+ for (var v = 0; v < Agents.length - 1; v++) {
+ if (userAgentInfo.indexOf(Agents[v]) > 0) {
+ flag = false;
+ break;
+ }
+ }
+ return flag;
+}
+
+var movable = false
+
+function mousedown(e, ins) {
+ if (!IS_HTML5) return
+ if (!isPC()) return
+ touchstart(e, ins)
+ movable = true
+}
+
+function mousemove(e, ins) {
+ if (!IS_HTML5) return
+ if (!isPC()) return
+ if (!movable) return
+ touchmove(e, ins)
+}
+
+function mouseup(e, ins) {
+ if (!IS_HTML5) return
+ if (!isPC()) return
+ touchend(e, ins)
+ movable = false
+}
+
+function mouseleave(e, ins) {
+ if (!IS_HTML5) return
+ if (!isPC()) return
+ movable = false
+}
+
+module.exports = {
+ showWatch: showWatch,
+ touchstart: touchstart,
+ touchmove: touchmove,
+ touchend: touchend,
+ mousedown: mousedown,
+ mousemove: mousemove,
+ mouseup: mouseup,
+ mouseleave: mouseleave
+}
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action/uni-swipe-action.vue b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action/uni-swipe-action.vue
new file mode 100644
index 0000000..4971782
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swipe-action/uni-swipe-action.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-swiper-dot/uni-swiper-dot.vue b/node_modules/@dcloudio/uni-ui/lib/uni-swiper-dot/uni-swiper-dot.vue
new file mode 100644
index 0000000..e66b6c7
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-swiper-dot/uni-swiper-dot.vue
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (current+1)+"/"+info.length +' ' +info[current][field] }}
+
+
+ {{ index+1 }}
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-table/uni-table.vue b/node_modules/@dcloudio/uni-ui/lib/uni-table/uni-table.vue
new file mode 100644
index 0000000..21d9527
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-table/uni-table.vue
@@ -0,0 +1,455 @@
+
+
+
+
+
+
+ | {{ emptyText }} |
+
+
+
+
+
+
+
+
+ {{ emptyText }}
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue b/node_modules/@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue
new file mode 100644
index 0000000..7274436
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-tag/uni-tag.vue
@@ -0,0 +1,252 @@
+
+ {{text}}
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-tbody/uni-tbody.vue b/node_modules/@dcloudio/uni-ui/lib/uni-tbody/uni-tbody.vue
new file mode 100644
index 0000000..fbe1bdc
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-tbody/uni-tbody.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-td/uni-td.vue b/node_modules/@dcloudio/uni-ui/lib/uni-td/uni-td.vue
new file mode 100644
index 0000000..9ce93e9
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-td/uni-td.vue
@@ -0,0 +1,90 @@
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-th/filter-dropdown.vue b/node_modules/@dcloudio/uni-ui/lib/uni-th/filter-dropdown.vue
new file mode 100644
index 0000000..df22a71
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-th/filter-dropdown.vue
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-th/uni-th.vue b/node_modules/@dcloudio/uni-ui/lib/uni-th/uni-th.vue
new file mode 100644
index 0000000..14889dd
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-th/uni-th.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-thead/uni-thead.vue b/node_modules/@dcloudio/uni-ui/lib/uni-thead/uni-thead.vue
new file mode 100644
index 0000000..53b5c4c
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-thead/uni-thead.vue
@@ -0,0 +1,137 @@
+
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-title/uni-title.vue b/node_modules/@dcloudio/uni-ui/lib/uni-title/uni-title.vue
new file mode 100644
index 0000000..bf4f926
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-title/uni-title.vue
@@ -0,0 +1,171 @@
+
+
+ {{title}}
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-tooltip/uni-tooltip.vue b/node_modules/@dcloudio/uni-ui/lib/uni-tooltip/uni-tooltip.vue
new file mode 100644
index 0000000..cda3754
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-tooltip/uni-tooltip.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-tr/table-checkbox.vue b/node_modules/@dcloudio/uni-ui/lib/uni-tr/table-checkbox.vue
new file mode 100644
index 0000000..1089187
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-tr/table-checkbox.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node_modules/@dcloudio/uni-ui/lib/uni-tr/uni-tr.vue b/node_modules/@dcloudio/uni-ui/lib/uni-tr/uni-tr.vue
new file mode 100644
index 0000000..3fb76f4
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/lib/uni-tr/uni-tr.vue
@@ -0,0 +1,184 @@
+
+
+
+ |
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/node_modules/@dcloudio/uni-ui/lib/uni-transition/createAnimation.js
similarity index 100%
rename from uni_modules/uni-transition/components/uni-transition/createAnimation.js
rename to node_modules/@dcloudio/uni-ui/lib/uni-transition/createAnimation.js
diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/node_modules/@dcloudio/uni-ui/lib/uni-transition/uni-transition.vue
similarity index 100%
rename from uni_modules/uni-transition/components/uni-transition/uni-transition.vue
rename to node_modules/@dcloudio/uni-ui/lib/uni-transition/uni-transition.vue
diff --git a/node_modules/@dcloudio/uni-ui/package.json b/node_modules/@dcloudio/uni-ui/package.json
new file mode 100644
index 0000000..41bf8b8
--- /dev/null
+++ b/node_modules/@dcloudio/uni-ui/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@dcloudio/uni-ui",
+ "version": "1.5.6",
+ "description": "",
+ "author": "",
+ "license": "Apache-2.0",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/dcloudio/uni-ui"
+ },
+ "dependencies": {},
+ "devDependencies": {},
+ "browserslist": [
+ "Android >= 4",
+ "ios >= 8"
+ ]
+}
\ No newline at end of file
diff --git a/node_modules/dayjs/package.json b/node_modules/dayjs/package.json
index b053046..d3e7c31 100644
--- a/node_modules/dayjs/package.json
+++ b/node_modules/dayjs/package.json
@@ -80,8 +80,5 @@
"rollup-plugin-terser": "^7.0.2",
"size-limit": "^0.18.0",
"typescript": "^2.8.3"
- },
- "__npminstall_done": true,
- "_from": "dayjs@1.11.13",
- "_resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz"
+ }
}
diff --git a/package-lock.json b/package-lock.json
index 17d8781..19e8cd5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,7 @@
"dependencies": {
"@dcloudio/uni-ui": "^1.5.6",
"base-64": "^1.0.0",
- "dayjs": "^1.11.12"
+ "dayjs": "^1.11.13"
}
},
"node_modules/@dcloudio/uni-ui": {
@@ -22,9 +22,9 @@
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
},
"node_modules/dayjs": {
- "version": "1.11.12",
- "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.12.tgz",
- "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg=="
+ "version": "1.11.13",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
}
},
"dependencies": {
@@ -39,9 +39,9 @@
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
},
"dayjs": {
- "version": "1.11.12",
- "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.12.tgz",
- "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg=="
+ "version": "1.11.13",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
+ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
}
}
}
diff --git a/pages.json b/pages.json
index 2d22149..8e8bbfb 100644
--- a/pages.json
+++ b/pages.json
@@ -89,6 +89,13 @@
"navigationBarTextStyle": "white"
}
},
+ {
+ "path": "pages/document/onlinePreview",
+ "style": {
+ "navigationBarTitleText": "在线预览",
+ "navigationBarTextStyle": "white"
+ }
+ },
{
"path": "pages/meeting/index",
"style": {
diff --git a/pages/document/detail.vue b/pages/document/detail.vue
index e17af09..95eac60 100644
--- a/pages/document/detail.vue
+++ b/pages/document/detail.vue
@@ -13,11 +13,22 @@
附件:
-
- {{item}}
-
+
+
+
+ {{item}}
+
+
+
+
+ {{item}}
+
+
+
+
@@ -37,7 +48,17 @@
useStore
} from '@/store';
const store = useStore();
+
const detail = ref({})
+ //判断是否h5 by 闵
+ var ifH5 = false;
+
+ const onlinePreview = (url)=>{ //在线预览文件 by 闵
+ uni.navigateTo({
+ url
+ })
+ }
+
onLoad((options) => {
detail.value = JSON.parse(options.data)
if (options.id == 0) {
@@ -52,6 +73,9 @@
} else if (options.id == 3) {
detail.value.pdf = detail.value.mingcheng
}
+ //#ifdef H5 || MP-WEIXIN
+ ifH5 = true;
+ //#endif
})
diff --git a/pages/document/onlinePreview.vue b/pages/document/onlinePreview.vue
new file mode 100644
index 0000000..c6fad58
--- /dev/null
+++ b/pages/document/onlinePreview.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/login/login.vue b/pages/login/login.vue
index 728d69e..9c7e7b3 100644
--- a/pages/login/login.vue
+++ b/pages/login/login.vue
@@ -195,6 +195,7 @@
}
}
}
+ console.log(deviceIp)
return deviceIp;
// #endif
}
diff --git a/pages/tab/my.vue b/pages/tab/my.vue
index 383238d..a29690b 100644
--- a/pages/tab/my.vue
+++ b/pages/tab/my.vue
@@ -82,6 +82,9 @@
import {
ref
} from 'vue';
+ import {
+ useStore
+ } from '@/store';
import {
queryRoleApi
} from '@/api/login.js';
@@ -98,12 +101,12 @@
import {
imgUrl
} from '@/utils/index.js';
- import {
- useStore
- } from '@/store';
- const store = useStore();
+ const store = useStore();
+ // h5没法访问plus 这里进行处理 by 闵
+ // #ifdef APP_PLUS
const currentVersion = ref(plus.runtime.version)
+ // #endif
const arr = ref([
// {
// img: '../../static/my/biao.png',
diff --git a/uni_modules/lime-drag/changelog.md b/uni_modules/lime-drag/changelog.md
deleted file mode 100644
index e78c265..0000000
--- a/uni_modules/lime-drag/changelog.md
+++ /dev/null
@@ -1,33 +0,0 @@
-## 0.1.3(2023-08-19)
-- fix: 修复使用remove导致样式错乱
-## 0.1.2(2023-08-09)
-- fix: 修复nvue没有获取节点的问题
-- fix: 修复因延时导致卡在中途
-- fix: 修复change事件有时失效的问题
-## 0.1.1(2023-07-03)
-- chore: 更新文档
-## 0.1.0(2023-07-03)
-- fix: 外面的事件冒泡导致点击调动内部移动方法错乱
-## 0.0.9(2023-05-30)
-- fix: 修复因手机事件为`onLongpress`导致,在手机上无法长按
-- fix: 无法因css导致滚动
-## 0.0.8(2023-04-23)
-- feat: 更新文档
-## 0.0.7(2023-04-23)
-- feat: 由于删除是一个危险的动作,故把方法暴露出来,而不在内部处理。如果之前有使用删除的,需要注意
-- feat: 原来的`add`变更为`push`,增加`unshift`
-## 0.0.6(2023-04-12)
-- fix: 修复`handle`不生效问题
-- feat: 增加 `to`方法
-## 0.0.5(2023-04-11)
-- chore: `grid` 插槽增加 `nindex`、`oindex`
-## 0.0.4(2023-04-04)
-- chore: 去掉 script-setup 语法糖
-- chore: 文档增加 vue2 使用方法
-## 0.0.3(2023-03-30)
-- feat: 重要说明 更新 list 只会再次初始化
-- feat: 更新文档
-## 0.0.2(2023-03-29)
-- 修改文档
-## 0.0.1(2023-03-29)
-- 初次提交
diff --git a/uni_modules/lime-drag/components/l-drag/index.scss b/uni_modules/lime-drag/components/l-drag/index.scss
deleted file mode 100644
index e74ba5a..0000000
--- a/uni_modules/lime-drag/components/l-drag/index.scss
+++ /dev/null
@@ -1,93 +0,0 @@
-$drag-handle-size: var(--l-drag-handle-size, 50rpx);
-$drag-delete-size: var(--l-drag-delete-size, 32rpx);
-.l-drag {
- // min-height: 100rpx;
- overflow: hidden;
-
-
- margin: 24rpx 30rpx 0 30rpx;
- // padding: 30rpx 0;
-
-
- /* #ifdef APP-NVUE */
- // flex: 1;
- /* #endif */
- /* #ifndef APP-NVUE */
- // width: 100%;
- /* #endif */
-}
-.l-drag__inner {
- /* #ifdef APP-NVUE */
- flex: 1;
- /* #endif */
- /* #ifndef APP-NVUE */
- width: 100%;
- /* #endif */
- min-height: 100rpx;
-}
-.l-drag__view {
- // touch-action: none;
- // user-select: none;
- // -webkit-user-select: auto;
- z-index: 2;
- transition: opacity 300ms ease;
- .mask {
- position: absolute;
- inset: 0;
- background-color: transparent;
- z-index: 9;
- }
- /* #ifndef APP-NVUE */
- > view {
- &:last-child {
- width: 100%;
- height: 100%;
- }
- }
- box-sizing: border-box;
- /* #endif */
-
-}
-.l-drag-enter {
- opacity: 0;
-}
-.l-drag__ghost {
- /* #ifndef APP-NVUE */
- > view {
- &:last-child {
- width: 100%;
- height: 100%;
- }
- }
- box-sizing: border-box;
- /* #endif */
-}
-.l-is-active {
- z-index: 3;
-}
-.l-is-hidden {
- opacity: 0;
-}
-.l-drag__delete {
- position: absolute;
- z-index: 10;
- width: $drag-delete-size;
- height: $drag-delete-size;
-}
-.l-drag__handle {
- position: absolute;
- z-index: 10;
- width: $drag-handle-size;
- height: $drag-handle-size;
-}
-/* #ifndef APP-NVUE */
-.l-drag__delete::before,.l-drag__handle::before {
- content: '';
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- z-index: 10;
-}
-/* #endif */
\ No newline at end of file
diff --git a/uni_modules/lime-drag/components/l-drag/l-drag.vue b/uni_modules/lime-drag/components/l-drag/l-drag.vue
deleted file mode 100644
index dc438a7..0000000
--- a/uni_modules/lime-drag/components/l-drag/l-drag.vue
+++ /dev/null
@@ -1,532 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/uni_modules/lime-drag/components/l-drag/props.ts b/uni_modules/lime-drag/components/l-drag/props.ts
deleted file mode 100644
index c475fe8..0000000
--- a/uni_modules/lime-drag/components/l-drag/props.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-// @ts-nocheck
-export default {
- list: {
- type: Array,
- default: []
- },
- column: {
- type: Number,
- default: 2
- },
- /**宽高比 填写这项, gridHeight 失效*/
- aspectRatio: Number,
- gridHeight: {
- type: [Number, String],
- default: '120rpx'
- },
- // removeStyle: String,
- // handleStyle: String,
- damping: {
- type: Number,
- default: 40
- },
- friction: {
- type: Number,
- default: 2
- },
- /**
- * 由于 movable-area 无法动态设置高度,故增加额外的行数。用于增加动态项时,高度不够无法正确显示
- */
- extraRow: {
- type: Number,
- default: 0
- },
- /**
- * 由于 movable-area 无法动态设置高度,但vif 重染可以,另一种实现动态高度的方式, 这BUG uni官方好像修复了。
- */
- // reset: Boolean,
- // sort: Boolean,
- // remove: Boolean,
- ghost: Boolean,
- handle: Boolean,
- touchHandle: Boolean,
- before: Boolean,
- after: Boolean,
- disabled: Boolean,
- longpress: Boolean,
- }
\ No newline at end of file
diff --git a/uni_modules/lime-drag/components/l-drag/type.ts b/uni_modules/lime-drag/components/l-drag/type.ts
deleted file mode 100644
index 7cfaa50..0000000
--- a/uni_modules/lime-drag/components/l-drag/type.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export interface Position {
- x: number
- y: number
-}
-export interface GridRect extends Position{
- row : number
- // x : number
- // y : number
- x1 : number
- y1 : number
-}
-export interface Grid extends Position{
- id : string
- index : number
- oldindex : number
- content : any
- // x : number
- // y : number
- class : string
- show: boolean
-}
\ No newline at end of file
diff --git a/uni_modules/lime-drag/components/l-drag/vue.ts b/uni_modules/lime-drag/components/l-drag/vue.ts
deleted file mode 100644
index de8fe1b..0000000
--- a/uni_modules/lime-drag/components/l-drag/vue.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// @ts-nocheck
-// export * from '@/uni_modules/lime-vue'
-
-// #ifdef VUE3
-export * from 'vue';
-// #endif
-// #ifndef VUE3
-export * from '@vue/composition-api';
-// #endif
diff --git a/uni_modules/lime-drag/components/lime-drag/lime-drag.vue b/uni_modules/lime-drag/components/lime-drag/lime-drag.vue
deleted file mode 100644
index ab315a2..0000000
--- a/uni_modules/lime-drag/components/lime-drag/lime-drag.vue
+++ /dev/null
@@ -1,268 +0,0 @@
-
-
-
-
-
-
- {{index}}
-
-
-
-
-
-
-
-
-
-
-
- {{content}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 把原始下标为
-
- 的项移动到
-
-
-
-
-
-
-
-
- {{content}}
- 上移
- 下移
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/uni_modules/lime-drag/package.json b/uni_modules/lime-drag/package.json
deleted file mode 100644
index 839f606..0000000
--- a/uni_modules/lime-drag/package.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "id": "lime-drag",
- "displayName": "拖拽排序-拖动排序-LimeUI",
- "version": "0.1.3",
- "description": "uniapp vue3 拖拽排序插件,用于图片或列表的拖动排序,可设置列数、增加删除等功能, vue2只要配置@vue/composition-api",
- "keywords": [
- "拖拽",
- "拖拽排序",
- "排序",
- "拖动",
- "拖动排序"
-],
- "repository": "",
- "engines": {
- "HBuilderX": "^3.7.12"
- },
- "dcloudext": {
- "type": "component-vue",
- "sale": {
- "regular": {
- "price": "0.00"
- },
- "sourcecode": {
- "price": "0.00"
- }
- },
- "contact": {
- "qq": ""
- },
- "declaration": {
- "ads": "无",
- "data": "无",
- "permissions": "无"
- },
- "npmurl": ""
- },
- "uni_modules": {
- "dependencies": [
- "lime-shared"
- ],
- "encrypt": [],
- "platforms": {
- "cloud": {
- "tcb": "y",
- "aliyun": "y"
- },
- "client": {
- "Vue": {
- "vue2": "n",
- "vue3": "y"
- },
- "App": {
- "app-vue": "y",
- "app-nvue": "y"
- },
- "H5-mobile": {
- "Safari": "y",
- "Android Browser": "y",
- "微信浏览器(Android)": "y",
- "QQ浏览器(Android)": "y"
- },
- "H5-pc": {
- "Chrome": "y",
- "IE": "u",
- "Edge": "u",
- "Firefox": "u",
- "Safari": "u"
- },
- "小程序": {
- "微信": "y",
- "阿里": "u",
- "百度": "u",
- "字节跳动": "u",
- "QQ": "u",
- "钉钉": "u",
- "快手": "u",
- "飞书": "u",
- "京东": "u"
- },
- "快应用": {
- "华为": "u",
- "联盟": "u"
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/uni_modules/lime-drag/readme.md b/uni_modules/lime-drag/readme.md
deleted file mode 100644
index c461f95..0000000
--- a/uni_modules/lime-drag/readme.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# lime-drag 拖拽排序
-- 当前为初版 可能会有BUG
-- 基于uniapp vue3
-- Q群 1169785031
-
-
-### 安装
-- 在市场导入插件即可在任意页面使用,无须再`import`
-
-
-### 使用
-- 提供简单的使用示例,更多请查看下方的demo
-
-```html
-
-
-
-
-
- {{grid.content}}
-
-
-
-```
-
-```js
-const list = new Array(7).fill(0).map((v,i) => i);
-// 拖拽后新的数据
-const newList = ref([])
-const change = v => newList.value = v
-```
-#### 增删
-- 不要给list赋值,这样只会重新初始化
-- 增加数据 调用暴露的`push`
-- 删除某条数据调用暴露的`remove`方法,需要传入`oindex`
-
-```html
-
-
-
-
-
-
-
-
-
- {{content}}
-
-
-
-
-
-
-
-
-```
-```js
-const dragRef = ref(null)
-const list = new Array(7).fill(0).map((v,i) => i);
-const onAdd = () => {
- dragRef.value.push(Math.round(Math.random() * 1000))
-}
-const onRemove = (oindex) => {
- if(dragRef.value && oindex >= 0) {
- // 记得oindex为数组的原始index
- dragRef.value.remove(oindex)
- }
-}
-```
-
-
-#### 插槽
-```html
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-
-### 查看示例
-- 导入后直接使用这个标签查看演示效果
-
-```html
-
-
-```
-
-
-### 插件标签
-- 默认 l-drag 为 component
-- 默认 lime-drag 为 demo
-
-### 关于vue2的使用方式
-- 插件使用了`composition-api`, 如果你希望在vue2中使用请按官方的教程[vue-composition-api](https://uniapp.dcloud.net.cn/tutorial/vue-composition-api.html)配置
-- 关键代码是: 在main.js中 在vue2部分加上这一段即可,官方是把它单独成了一个文件.
-```js
-// vue2
-import Vue from 'vue'
-import VueCompositionAPI from '@vue/composition-api'
-Vue.use(VueCompositionAPI)
-```
-
-- 另外插件也用到了TS,vue2可能会遇过官方的TS版本过低的问题,找到HX目录下的`compile-typescript`目录
-```cmd
-// \HBuilderX\plugins\compile-typescript
-yarn add typescript -D
-- or -
-npm install typescript -D
-```
-
-- 小程序需要在`manifest.json`启用`slotMultipleInstance`
-```json
-"mp-weixin" : {
- "slotMultipleInstance" : true
-}
-```
-
-
-## API
-
-### Props
-
-| 参数 | 说明 | 类型 | 默认值 |
-| --------------------------| ------------------------------------------------------------ | ---------------- | ------------ |
-| list | 列表数组,不可变化,变化后会重新初始化 | array | `[]` |
-| column | 列数 | number | `2` |
-| gridHeight | 行高,宫格高度 | string | `120rpx` |
-| damping | 阻尼系数,用于控制x或y改变时的动画和过界回弹的动画,值越大移动越快 | string | `-` |
-| friction | 摩擦系数,用于控制惯性滑动的动画,值越大摩擦力越大,滑动越快停止;必须大于0,否则会被设置成默认值 | number | `2` |
-| extraRow | 额外行数 | number | `0` |
-| ghost | 开启幽灵插槽 | boolean | `false` |
-| before | 开启列前插槽 | boolean | `false` |
-| after | 开启列后插槽 | boolean | `false` |
-| disabled | 是否禁用 | boolean | `false` |
-| longpress | 是否长按 | boolean | `false` |
-
-### Events
-| 参数 | 说明 | 参数 |
-| --------------------------| ------------------------------------------------------------ | ---------------- |
-| change | 返回新数据 | list |
-
-### Expose
-| 参数 | 说明 | 参数 |
-| --------------------------| ------------------------------------------------------------ | ---------------- |
-| remove | 删除, 传入`oindex`,即数据列表原始的index | |
-| push | 向后增加,可以是数组或单数据 | |
-| unshift | 向前增加,可以是数组或单数据 | |
-| move | 移动, 传入(`oindex`, `toindex`),将数据列表原始的index项移到视图中的目标位置 | |
-
-
-### TODO
-将来实现的功能
-- splice
-
-## 打赏
-
-如果你觉得本插件,解决了你的问题,赠人玫瑰,手留余香。
-
-
\ No newline at end of file
diff --git a/uni_modules/lime-shared/addUnit/index.ts b/uni_modules/lime-shared/addUnit/index.ts
deleted file mode 100644
index 25bc2b1..0000000
--- a/uni_modules/lime-shared/addUnit/index.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-// @ts-nocheck
-import {isNumeric} from '../isNumeric'
-import {isDef} from '../isDef'
-/**
- * 给一个值添加单位(像素 px)
- * @param value 要添加单位的值,可以是字符串或数字
- * @returns 添加了单位的值,如果值为 null 则返回 null
- */
-
-// #ifndef APP-IOS || APP-ANDROID
-export function addUnit(value?: string | number): string | null {
- if (!isDef(value)) {
- return null;
- }
- value = String(value); // 将值转换为字符串
- // 如果值是数字,则在后面添加单位 "px",否则保持原始值
- return isNumeric(value) ? `${value}px` : value;
-}
-// #endif
-
-
-// #ifdef APP-IOS || APP-ANDROID
-function addUnit(value: string): string
-function addUnit(value: number): string
-function addUnit(value: any|null): string|null {
- if (!isDef(value)) {
- return null;
- }
- value = `${value}` //value.toString(); // 将值转换为字符串
-
- // 如果值是数字,则在后面添加单位 "px",否则保持原始值
- return isNumeric(value) ? `${value}px` : value;
-}
-export {addUnit}
-// #endif
-
-
-// console.log(addUnit(100)); // 输出: "100px"
-// console.log(addUnit("200")); // 输出: "200px"
-// console.log(addUnit("300px")); // 输出: "300px"(已经包含单位)
-// console.log(addUnit()); // 输出: undefined(值为 undefined)
-// console.log(addUnit(null)); // 输出: undefined(值为 null)
\ No newline at end of file
diff --git a/uni_modules/lime-shared/animation/bezier.ts b/uni_modules/lime-shared/animation/bezier.ts
deleted file mode 100644
index b4239e1..0000000
--- a/uni_modules/lime-shared/animation/bezier.ts
+++ /dev/null
@@ -1,82 +0,0 @@
-export function cubicBezier(p1x : number, p1y : number, p2x : number, p2y : number):(x: number)=> number {
- const ZERO_LIMIT = 1e-6;
- // Calculate the polynomial coefficients,
- // implicit first and last control points are (0,0) and (1,1).
- const ax = 3 * p1x - 3 * p2x + 1;
- const bx = 3 * p2x - 6 * p1x;
- const cx = 3 * p1x;
-
- const ay = 3 * p1y - 3 * p2y + 1;
- const by = 3 * p2y - 6 * p1y;
- const cy = 3 * p1y;
-
- function sampleCurveDerivativeX(t : number) : number {
- // `ax t^3 + bx t^2 + cx t` expanded using Horner's rule
- return (3 * ax * t + 2 * bx) * t + cx;
- }
-
- function sampleCurveX(t : number) : number {
- return ((ax * t + bx) * t + cx) * t;
- }
-
- function sampleCurveY(t : number) : number {
- return ((ay * t + by) * t + cy) * t;
- }
-
- // Given an x value, find a parametric value it came from.
- function solveCurveX(x : number) : number {
- let t2 = x;
- let derivative : number;
- let x2 : number;
-
- // https://trac.webkit.org/browser/trunk/Source/WebCore/platform/animation
- // first try a few iterations of Newton's method -- normally very fast.
- // http://en.wikipedia.org/wikiNewton's_method
- for (let i = 0; i < 8; i++) {
- // f(t) - x = 0
- x2 = sampleCurveX(t2) - x;
- if (Math.abs(x2) < ZERO_LIMIT) {
- return t2;
- }
- derivative = sampleCurveDerivativeX(t2);
- // == 0, failure
- /* istanbul ignore if */
- if (Math.abs(derivative) < ZERO_LIMIT) {
- break;
- }
- t2 -= x2 / derivative;
- }
-
- // Fall back to the bisection method for reliability.
- // bisection
- // http://en.wikipedia.org/wiki/Bisection_method
- let t1 = 1;
- /* istanbul ignore next */
- let t0 = 0;
-
- /* istanbul ignore next */
- t2 = x;
- /* istanbul ignore next */
- while (t1 > t0) {
- x2 = sampleCurveX(t2) - x;
- if (Math.abs(x2) < ZERO_LIMIT) {
- return t2;
- }
- if (x2 > 0) {
- t1 = t2;
- } else {
- t0 = t2;
- }
- t2 = (t1 + t0) / 2;
- }
-
- // Failure
- return t2;
- }
-
- return function (x : number) : number {
- return sampleCurveY(solveCurveX(x));
- }
-
- // return solve;
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/animation/ease.ts b/uni_modules/lime-shared/animation/ease.ts
deleted file mode 100644
index 9358c6d..0000000
--- a/uni_modules/lime-shared/animation/ease.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-import {cubicBezier} from './bezier';
-export let ease = cubicBezier(0.25, 0.1, 0.25, 1);
\ No newline at end of file
diff --git a/uni_modules/lime-shared/animation/index.ts b/uni_modules/lime-shared/animation/index.ts
deleted file mode 100644
index 5665983..0000000
--- a/uni_modules/lime-shared/animation/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// @ts-nocheck
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.uts'
-// #endif
-
-
-
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
diff --git a/uni_modules/lime-shared/animation/useTransition.ts b/uni_modules/lime-shared/animation/useTransition.ts
deleted file mode 100644
index 818e591..0000000
--- a/uni_modules/lime-shared/animation/useTransition.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-// @ts-nocheck
-import { ComponentPublicInstance } from 'vue'
-import { ease } from './ease';
-import { Timeline, Animation } from './';
-export type UseTransitionOptions = {
- duration ?: number
- immediate ?: boolean
- context ?: ComponentPublicInstance
-}
-// #ifndef APP-IOS || APP-ANDROID
-import { ref, watch, Ref } from '@/uni_modules/lime-shared/vue'
-
-export function useTransition(percent : Ref|(() => number), options : UseTransitionOptions) : Ref {
- const current = ref(0)
- const { immediate, duration = 300 } = options
- let tl:Timeline|null = null;
- let timer = -1
- const isFunction = typeof percent === 'function'
- watch(isFunction ? percent : () => percent.value, (v) => {
- if(tl == null){
- tl = new Timeline()
- }
- tl.start();
- tl.add(
- new Animation(
- current.value,
- v,
- duration,
- 0,
- ease,
- nowValue => {
- current.value = nowValue
- clearTimeout(timer)
- if(current.value == v){
- timer = setTimeout(()=>{
- tl?.pause();
- tl = null
- }, duration)
- }
- }
- )
- );
- }, { immediate })
-
- return current
-}
-
-// #endif
-
-// #ifdef APP-IOS || APP-ANDROID
-type UseTransitionReturnType = Ref
-export function useTransition(source : any, options : UseTransitionOptions) : UseTransitionReturnType {
- const outputRef : Ref = ref(0)
- const immediate = options.immediate ?? false
- const duration = options.duration ?? 300
- const context = options.context //as ComponentPublicInstance | null
- let tl:Timeline|null = null;
- let timer = -1
- const watchFunc = (v : number) => {
- if(tl == null){
- tl = new Timeline()
- }
- tl!.start();
- tl!.add(
- new Animation(
- outputRef.value,
- v,
- duration,
- 0,
- ease,
- nowValue => {
- outputRef.value = nowValue //nowValue < 0.0001 ? 0 : Math.abs(v - nowValue) < 0.00001 ? v : nowValue;
- clearTimeout(timer)
- if(outputRef.value == v){
- timer = setTimeout(()=>{
- tl?.pause();
- tl = null
- }, duration)
- }
- }
- ), null
- );
- }
-
- if (context != null && typeof source == 'string') {
- context.$watch(source, watchFunc, { immediate } as WatchOptions)
- } else {
- watch(source, watchFunc, { immediate } as WatchOptions)
- }
-
- const stop = ()=>{
-
- }
- return outputRef //as UseTransitionReturnType
-}
-
-// #endif
\ No newline at end of file
diff --git a/uni_modules/lime-shared/animation/uvue.uts b/uni_modules/lime-shared/animation/uvue.uts
deleted file mode 100644
index 9a10db0..0000000
--- a/uni_modules/lime-shared/animation/uvue.uts
+++ /dev/null
@@ -1,112 +0,0 @@
-// @ts-nocheck
-export class Timeline {
- state : string
- animations : Set = new Set()
- delAnimations : Animation[] = []
- startTimes : Map = new Map()
- pauseTime : number = 0
- pauseStart : number = Date.now()
- tickHandler : number = 0
- tickHandlers : number[] = []
- tick : (() => void) | null = null
- constructor() {
- this.state = 'Initiated';
- }
- start() {
- if (!(this.state === 'Initiated')) return;
- this.state = 'Started';
-
- let startTime = Date.now();
- this.pauseTime = 0;
- this.tick = () => {
- let now = Date.now();
- this.animations.forEach((animation : Animation) => {
- let t:number;
- const ani = this.startTimes.get(animation)
- if (ani == null) return
- if (ani < startTime) {
- t = now - startTime - animation.delay - this.pauseTime;
- } else {
- t = now - ani - animation.delay - this.pauseTime;
- }
- if (t > animation.duration) {
- this.delAnimations.push(animation)
- // 不能在 foreach 里面 对 集合进行删除操作
- // this.animations.delete(animation);
- t = animation.duration;
- }
- if (t > 0) animation.run(t);
- })
- // 不能在 foreach 里面 对 集合进行删除操作
- while (this.delAnimations.length > 0) {
- const animation = this.delAnimations.pop();
- if (animation == null) return
- this.animations.delete(animation);
- }
- clearTimeout(this.tickHandler);
- if (this.state != 'Started') return
- this.tickHandler = setTimeout(() => {
- this.tick!()
- }, 1000 / 60)
- // this.tickHandlers.push(this.tickHandler)
- }
- this.tick!()
- }
- pause() {
- if (!(this.state === 'Started')) return;
- this.state = 'Paused';
- this.pauseStart = Date.now();
- clearTimeout(this.tickHandler);
- }
- resume() {
- if (!(this.state === 'Paused')) return;
- this.state = 'Started';
- this.pauseTime += Date.now() - this.pauseStart;
- this.tick!();
- }
- reset() {
- this.pause();
- this.state = 'Initiated';
- this.pauseTime = 0;
- this.pauseStart = 0;
- this.animations.clear()
- this.delAnimations.clear()
- this.startTimes.clear()
- this.tickHandler = 0;
- }
- add(animation : Animation, startTime ?: number | null) {
- if (startTime == null) startTime = Date.now();
- this.animations.add(animation);
- this.startTimes.set(animation, startTime);
- }
-}
-
-export class Animation {
- startValue : number
- endValue : number
- duration : number
- timingFunction : (t : number) => number
- delay : number
- template : (t : number) => void
- constructor(
- startValue : number,
- endValue : number,
- duration : number,
- delay : number,
- timingFunction : (t : number) => number,
- template : (v : number) => void) {
- this.startValue = startValue;
- this.endValue = endValue;
- this.duration = duration;
- this.timingFunction = timingFunction;
- this.delay = delay;
- this.template = template;
- }
-
- run(time : number) {
- let range = this.endValue - this.startValue;
- let progress = time / this.duration
- if(progress != 1) progress = this.timingFunction(progress)
- this.template(this.startValue + range * progress)
- }
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/animation/vue.ts b/uni_modules/lime-shared/animation/vue.ts
deleted file mode 100644
index 30f89e5..0000000
--- a/uni_modules/lime-shared/animation/vue.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-// @ts-nocheck
-const TICK = Symbol('tick');
-const TICK_HANDLER = Symbol('tick-handler');
-const ANIMATIONS = Symbol('animations');
-const START_TIMES = Symbol('start-times');
-const PAUSE_START = Symbol('pause-start');
-const PAUSE_TIME = Symbol('pause-time');
-const _raf = typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame : function(cb: Function) {return setTimeout(cb, 1000/60)}
-const _caf = typeof cancelAnimationFrame !== 'undefined' ? cancelAnimationFrame: function(id: any) {clearTimeout(id)}
-
-// const TICK = 'tick';
-// const TICK_HANDLER = 'tick-handler';
-// const ANIMATIONS = 'animations';
-// const START_TIMES = 'start-times';
-// const PAUSE_START = 'pause-start';
-// const PAUSE_TIME = 'pause-time';
-// const _raf = function(callback):number|null {return setTimeout(callback, 1000/60)}
-// const _caf = function(id: number):void {clearTimeout(id)}
-
-export class Timeline {
- state: string
- constructor() {
- this.state = 'Initiated';
- this[ANIMATIONS] = new Set();
- this[START_TIMES] = new Map();
- }
- start() {
- if (!(this.state === 'Initiated')) return;
- this.state = 'Started';
-
- let startTime = Date.now();
- this[PAUSE_TIME] = 0;
- this[TICK] = () => {
- let now = Date.now();
- this[ANIMATIONS].forEach((animation) => {
- let t: number;
- if (this[START_TIMES].get(animation) < startTime) {
- t = now - startTime - animation.delay - this[PAUSE_TIME];
- } else {
- t = now - this[START_TIMES].get(animation) - animation.delay - this[PAUSE_TIME];
- }
-
- if (t > animation.duration) {
- this[ANIMATIONS].delete(animation);
- t = animation.duration;
- }
- if (t > 0) animation.run(t);
- })
- // for (let animation of this[ANIMATIONS]) {
- // let t: number;
- // console.log('animation', animation)
- // if (this[START_TIMES].get(animation) < startTime) {
- // t = now - startTime - animation.delay - this[PAUSE_TIME];
- // } else {
- // t = now - this[START_TIMES].get(animation) - animation.delay - this[PAUSE_TIME];
- // }
-
- // if (t > animation.duration) {
- // this[ANIMATIONS].delete(animation);
- // t = animation.duration;
- // }
- // if (t > 0) animation.run(t);
- // }
- this[TICK_HANDLER] = _raf(this[TICK]);
- };
- this[TICK]();
- }
- pause() {
- if (!(this.state === 'Started')) return;
- this.state = 'Paused';
-
- this[PAUSE_START] = Date.now();
- _caf(this[TICK_HANDLER]);
- }
- resume() {
- if (!(this.state === 'Paused')) return;
- this.state = 'Started';
-
- this[PAUSE_TIME] += Date.now() - this[PAUSE_START];
- this[TICK]();
- }
- reset() {
- this.pause();
- this.state = 'Initiated';
- this[PAUSE_TIME] = 0;
- this[PAUSE_START] = 0;
- this[ANIMATIONS] = new Set();
- this[START_TIMES] = new Map();
- this[TICK_HANDLER] = null;
- }
- add(animation: any, startTime?: number) {
- if (arguments.length < 2) startTime = Date.now();
- this[ANIMATIONS].add(animation);
- this[START_TIMES].set(animation, startTime);
- }
-}
-
-export class Animation {
- startValue: number
- endValue: number
- duration: number
- timingFunction: (t: number) => number
- delay: number
- template: (t: number) => void
- constructor(startValue: number, endValue: number, duration: number, delay: number, timingFunction: (t: number) => number, template: (v: number) => void) {
- timingFunction = timingFunction || (v => v);
- template = template || (v => v);
-
- this.startValue = startValue;
- this.endValue = endValue;
- this.duration = duration;
- this.timingFunction = timingFunction;
- this.delay = delay;
- this.template = template;
- }
-
- run(time: number) {
- let range = this.endValue - this.startValue;
- let progress = time / this.duration
- if(progress != 1) progress = this.timingFunction(progress)
- this.template(this.startValue + range * progress)
- }
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/arrayBufferToFile/index.ts b/uni_modules/lime-shared/arrayBufferToFile/index.ts
deleted file mode 100644
index fd67048..0000000
--- a/uni_modules/lime-shared/arrayBufferToFile/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// @ts-nocheck
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
-
-// #ifdef UNI-APP-X
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.uts'
-// #endif
-// #endif
\ No newline at end of file
diff --git a/uni_modules/lime-shared/arrayBufferToFile/uvue.uts b/uni_modules/lime-shared/arrayBufferToFile/uvue.uts
deleted file mode 100644
index 65c7b14..0000000
--- a/uni_modules/lime-shared/arrayBufferToFile/uvue.uts
+++ /dev/null
@@ -1,10 +0,0 @@
-// @ts-nocheck
-// import {platform} from '../platform'
-/**
- * buffer转路径
- * @param {Object} buffer
- */
-// @ts-nocheck
-export function arrayBufferToFile(buffer: ArrayBuffer, name?: string, format?:string):Promise<(File|string)> {
- console.error('[arrayBufferToFile] 当前环境不支持')
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/arrayBufferToFile/vue.ts b/uni_modules/lime-shared/arrayBufferToFile/vue.ts
deleted file mode 100644
index 9760b20..0000000
--- a/uni_modules/lime-shared/arrayBufferToFile/vue.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-// @ts-nocheck
-import {platform} from '../platform'
-/**
- * buffer转路径
- * @param {Object} buffer
- */
-// @ts-nocheck
-export function arrayBufferToFile(buffer: ArrayBuffer | Blob, name?: string, format?:string):Promise<(File|string)> {
- return new Promise((resolve, reject) => {
- // #ifdef MP
- const fs = uni.getFileSystemManager()
- //自定义文件名
- if (!name && !format) {
- reject(new Error('ERROR_NAME_PARSE'))
- }
- const fileName = `${name || new Date().getTime()}.${format.replace(/(.+)?\//,'')}`;
- let pre = platform()
- const filePath = `${pre.env.USER_DATA_PATH}/${fileName}`
- fs.writeFile({
- filePath,
- data: buffer,
- success() {
- resolve(filePath)
- },
- fail(err) {
- console.error(err)
- reject(err)
- }
- })
- // #endif
-
- // #ifdef H5
- const file = new File([buffer], name, {
- type: format,
- });
- resolve(file)
- // #endif
-
- // #ifdef APP-PLUS
- const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
- const base64 = uni.arrayBufferToBase64(buffer)
- bitmap.loadBase64Data(base64, () => {
- if (!name && !format) {
- reject(new Error('ERROR_NAME_PARSE'))
- }
- const fileNmae = `${name || new Date().getTime()}.${format.replace(/(.+)?\//,'')}`;
- const filePath = `_doc/uniapp_temp/${fileNmae}`
- bitmap.save(filePath, {},
- () => {
- bitmap.clear()
- resolve(filePath)
- },
- (error) => {
- bitmap.clear()
- reject(error)
- })
- }, (error) => {
- bitmap.clear()
- reject(error)
- })
- // #endif
- })
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/base64ToArrayBuffer/index.ts b/uni_modules/lime-shared/base64ToArrayBuffer/index.ts
deleted file mode 100644
index f83b640..0000000
--- a/uni_modules/lime-shared/base64ToArrayBuffer/index.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-// @ts-nocheck
-// 未完成
-export function base64ToArrayBuffer(base64 : string) {
- const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64) || [];
- if (!format) {
- new Error('ERROR_BASE64SRC_PARSE')
- }
- if(uni.base64ToArrayBuffer) {
- return uni.base64ToArrayBuffer(bodyData)
- } else {
-
- }
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/base64ToPath/index.ts b/uni_modules/lime-shared/base64ToPath/index.ts
deleted file mode 100644
index 28a3bf5..0000000
--- a/uni_modules/lime-shared/base64ToPath/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// @ts-nocheck
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
-
-
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.uts'
-// #endif
diff --git a/uni_modules/lime-shared/base64ToPath/uvue.uts b/uni_modules/lime-shared/base64ToPath/uvue.uts
deleted file mode 100644
index 7019ecb..0000000
--- a/uni_modules/lime-shared/base64ToPath/uvue.uts
+++ /dev/null
@@ -1,22 +0,0 @@
-// @ts-nocheck
-import { processFile, ProcessFileOptions } from '@/uni_modules/lime-file-utils'
-
-/**
- * base64转路径
- * @param {Object} base64
- */
-export function base64ToPath(base64: string, filename: string | null = null):Promise {
- return new Promise((resolve,reject) => {
- processFile({
- type: 'toDataURL',
- path: base64,
- filename,
- success(res: string){
- resolve(res)
- },
- fail(err){
- reject(err)
- }
- } as ProcessFileOptions)
- })
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/base64ToPath/vue.ts b/uni_modules/lime-shared/base64ToPath/vue.ts
deleted file mode 100644
index 735000f..0000000
--- a/uni_modules/lime-shared/base64ToPath/vue.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-// @ts-nocheck
-import {platform} from '../platform'
-/**
- * base64转路径
- * @param {Object} base64
- */
-export function base64ToPath(base64: string, filename?: string):Promise {
- const [, format] = /^data:image\/(\w+);base64,/.exec(base64) || [];
- return new Promise((resolve, reject) => {
- // #ifdef MP
- const fs = uni.getFileSystemManager()
- //自定义文件名
- if (!filename && !format) {
- reject(new Error('ERROR_BASE64SRC_PARSE'))
- }
- // const time = new Date().getTime();
- const name = filename || `${new Date().getTime()}.${format}`;
- let pre = platform()
- const filePath = `${pre.env.USER_DATA_PATH}/${name}`
- fs.writeFile({
- filePath,
- data: base64.split(',')[1],
- encoding: 'base64',
- success() {
- resolve(filePath)
- },
- fail(err) {
- console.error(err)
- reject(err)
- }
- })
- // #endif
-
- // #ifdef H5
- // mime类型
- let mimeString = base64.split(',')[0].split(':')[1].split(';')[0];
- //base64 解码
- let byteString = atob(base64.split(',')[1]);
- //创建缓冲数组
- let arrayBuffer = new ArrayBuffer(byteString.length);
- //创建视图
- let intArray = new Uint8Array(arrayBuffer);
- for (let i = 0; i < byteString.length; i++) {
- intArray[i] = byteString.charCodeAt(i);
- }
- resolve(URL.createObjectURL(new Blob([intArray], {
- type: mimeString
- })))
- // #endif
-
- // #ifdef APP-PLUS
- const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
- bitmap.loadBase64Data(base64, () => {
- if (!filename && !format) {
- reject(new Error('ERROR_BASE64SRC_PARSE'))
- }
- // const time = new Date().getTime();
- const name = filename || `${new Date().getTime()}.${format}`;
- const filePath = `_doc/uniapp_temp/${name}`
- bitmap.save(filePath, {},
- () => {
- bitmap.clear()
- resolve(filePath)
- },
- (error) => {
- bitmap.clear()
- reject(error)
- })
- }, (error) => {
- bitmap.clear()
- reject(error)
- })
- // #endif
- })
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/camelCase/index.ts b/uni_modules/lime-shared/camelCase/index.ts
deleted file mode 100644
index dd470ab..0000000
--- a/uni_modules/lime-shared/camelCase/index.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * 将字符串转换为 camelCase 或 PascalCase 风格的命名约定
- * @param str 要转换的字符串
- * @param isPascalCase 指示是否转换为 PascalCase 的布尔值,默认为 false
- * @returns 转换后的字符串
- */
-export function camelCase(str: string, isPascalCase: boolean = false): string {
- // 将字符串分割成单词数组
- let words: string[] = str.split(/[\s_-]+/);
-
- // 将数组中的每个单词首字母大写(除了第一个单词)
- let camelCased: string[] = words.map((word, index):string => {
- if (index == 0 && !isPascalCase) {
- return word.toLowerCase(); // 第一个单词全小写
- }
- return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
- });
-
- // 将数组中的单词拼接成一个字符串
- return camelCased.join('');
-};
\ No newline at end of file
diff --git a/uni_modules/lime-shared/canIUseCanvas2d/index.ts b/uni_modules/lime-shared/canIUseCanvas2d/index.ts
deleted file mode 100644
index 95211d1..0000000
--- a/uni_modules/lime-shared/canIUseCanvas2d/index.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-// @ts-nocheck
-
-// #ifndef APP-IOS || APP-ANDROID
-
-// #ifdef MP-ALIPAY
-interface My {
- SDKVersion: string
-}
-declare var my: My
-// #endif
-
-function compareVersion(v1:string, v2:string) {
- let a1 = v1.split('.');
- let a2 = v2.split('.');
- const len = Math.max(a1.length, a2.length);
-
- while (a1.length < len) {
- a1.push('0');
- }
- while (a2.length < len) {
- a2.push('0');
- }
-
- for (let i = 0; i < len; i++) {
- const num1 = parseInt(a1[i], 10);
- const num2 = parseInt(a2[i], 10);
-
- if (num1 > num2) {
- return 1;
- }
- if (num1 < num2) {
- return -1;
- }
- }
-
- return 0;
-}
-
-function gte(version: string) {
- let {SDKVersion} = uni.getSystemInfoSync();
- // #ifdef MP-ALIPAY
- SDKVersion = my.SDKVersion
- // #endif
- return compareVersion(SDKVersion, version) >= 0;
-}
-// #endif
-
-
-/** 环境是否支持canvas 2d */
-export function canIUseCanvas2d(): boolean {
- // #ifdef MP-WEIXIN
- return gte('2.9.0');
- // #endif
- // #ifdef MP-ALIPAY
- return gte('2.7.0');
- // #endif
- // #ifdef MP-TOUTIAO
- return gte('1.78.0');
- // #endif
- // #ifndef MP-WEIXIN || MP-ALIPAY || MP-TOUTIAO
- return false
- // #endif
-
- // #ifdef APP-IOS || APP-ANDROID || APP-NVUE || APP-VUE
- return false;
- // #endif
-}
diff --git a/uni_modules/lime-shared/changelog.md b/uni_modules/lime-shared/changelog.md
deleted file mode 100644
index 9b9b7dc..0000000
--- a/uni_modules/lime-shared/changelog.md
+++ /dev/null
@@ -1,36 +0,0 @@
-## 0.1.6(2024-07-24)
-- fix: vue2 app ts需要明确的后缀,所有补全
-- chore: 减少依赖
-## 0.1.5(2024-07-21)
-- feat: 删除 Hooks
-- feat: 兼容uniappx
-## 0.1.4(2023-09-05)
-- feat: 增加 Hooks `useIntersectionObserver`
-- feat: 增加 `floatAdd`
-- feat: 因为本人插件兼容 vue2 需要使用 `composition-api`,故增加vue文件代码插件的条件编译
-## 0.1.3(2023-08-13)
-- feat: 增加 `camelCase`
-## 0.1.2(2023-07-17)
-- feat: 增加 `getClassStr`
-## 0.1.1(2023-07-06)
-- feat: 增加 `isNumeric`, 区别于 `isNumber`
-## 0.1.0(2023-06-30)
-- fix: `clamp`忘记导出了
-## 0.0.9(2023-06-27)
-- feat: 增加`arrayBufferToFile`
-## 0.0.8(2023-06-19)
-- feat: 增加`createAnimation`、`clamp`
-## 0.0.7(2023-06-08)
-- chore: 更新注释
-## 0.0.6(2023-06-08)
-- chore: 增加`createImage`为`lime-watermark`和`lime-qrcode`提供依赖
-## 0.0.5(2023-06-03)
-- chore: 更新注释
-## 0.0.4(2023-05-22)
-- feat: 增加`range`,`exif`,`selectComponent`
-## 0.0.3(2023-05-08)
-- feat: 增加`fillZero`,`debounce`,`throttle`,`random`
-## 0.0.2(2023-05-05)
-- chore: 更新文档
-## 0.0.1(2023-05-05)
-- 无
diff --git a/uni_modules/lime-shared/clamp/index.ts b/uni_modules/lime-shared/clamp/index.ts
deleted file mode 100644
index 0e16358..0000000
--- a/uni_modules/lime-shared/clamp/index.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-// @ts-nocheck
-/**
- * 将一个值限制在指定的范围内
- * @param val 要限制的值
- * @param min 最小值
- * @param max 最大值
- * @returns 限制后的值
- */
-export function clamp(val: number, min: number, max: number): number {
- return Math.max(min, Math.min(max, val));
-}
-
-
-// console.log(clamp(5 ,0, 10)); // 输出: 5(在范围内,不做更改)
-// console.log(clamp(-5 ,0, 10)); // 输出: 0(小于最小值,被限制为最小值)
-// console.log(clamp(15 ,0, 10)); // 输出: 10(大于最大值,被限制为最大值)
\ No newline at end of file
diff --git a/uni_modules/lime-shared/cloneDeep/index.ts b/uni_modules/lime-shared/cloneDeep/index.ts
deleted file mode 100644
index 03f85cd..0000000
--- a/uni_modules/lime-shared/cloneDeep/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// @ts-nocheck
-
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.ts'
-// #endif
-
-
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
\ No newline at end of file
diff --git a/uni_modules/lime-shared/cloneDeep/uvue.ts b/uni_modules/lime-shared/cloneDeep/uvue.ts
deleted file mode 100644
index 7929bc2..0000000
--- a/uni_modules/lime-shared/cloneDeep/uvue.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-// @ts-nocheck
-/**
- * 深度克隆一个对象或数组
- * @param obj 要克隆的对象或数组
- * @returns 克隆后的对象或数组
- */
-export function cloneDeep(obj: any): T {
- // 如果传入的对象是基本数据类型(如字符串、数字等),则直接返回
- // if(['number', 'string'].includes(typeof obj) || Array.isArray(obj)){
- // return obj as T
- // }
- if(typeof obj == 'object'){
- return JSON.parse(JSON.stringify(obj as T)) as T;
- }
- return obj as T
-}
-
diff --git a/uni_modules/lime-shared/cloneDeep/vue.ts b/uni_modules/lime-shared/cloneDeep/vue.ts
deleted file mode 100644
index ded334d..0000000
--- a/uni_modules/lime-shared/cloneDeep/vue.ts
+++ /dev/null
@@ -1,103 +0,0 @@
-// @ts-nocheck
-/**
- * 深度克隆一个对象或数组
- * @param obj 要克隆的对象或数组
- * @returns 克隆后的对象或数组
- */
-export function cloneDeep(obj: any): T {
- // 如果传入的对象为空,返回空
- if (obj === null) {
- return null as unknown as T;
- }
-
- // 如果传入的对象是 Set 类型,则将其转换为数组,并通过新的 Set 构造函数创建一个新的 Set 对象
- if (obj instanceof Set) {
- return new Set([...obj]) as unknown as T;
- }
-
- // 如果传入的对象是 Map 类型,则将其转换为数组,并通过新的 Map 构造函数创建一个新的 Map 对象
- if (obj instanceof Map) {
- return new Map([...obj]) as unknown as T;
- }
-
- // 如果传入的对象是 WeakMap 类型,则直接用传入的 WeakMap 对象进行赋值
- if (obj instanceof WeakMap) {
- let weakMap = new WeakMap();
- weakMap = obj;
- return weakMap as unknown as T;
- }
-
- // 如果传入的对象是 WeakSet 类型,则直接用传入的 WeakSet 对象进行赋值
- if (obj instanceof WeakSet) {
- let weakSet = new WeakSet();
- weakSet = obj;
- return weakSet as unknown as T;
- }
-
- // 如果传入的对象是 RegExp 类型,则通过新的 RegExp 构造函数创建一个新的 RegExp 对象
- if (obj instanceof RegExp) {
- return new RegExp(obj) as unknown as T;
- }
-
- // 如果传入的对象是 undefined 类型,则返回 undefined
- if (typeof obj === 'undefined') {
- return undefined as unknown as T;
- }
-
- // 如果传入的对象是数组,则递归调用 cloneDeep 函数对数组中的每个元素进行克隆
- if (Array.isArray(obj)) {
- return obj.map(cloneDeep) as unknown as T;
- }
-
- // 如果传入的对象是 Date 类型,则通过新的 Date 构造函数创建一个新的 Date 对象
- if (obj instanceof Date) {
- return new Date(obj.getTime()) as unknown as T;
- }
-
- // 如果传入的对象是普通对象,则使用递归调用 cloneDeep 函数对对象的每个属性进行克隆
- if (typeof obj === 'object') {
- const newObj: any = {};
- for (const [key, value] of Object.entries(obj)) {
- newObj[key] = cloneDeep(value);
- }
- const symbolKeys = Object.getOwnPropertySymbols(obj);
- for (const key of symbolKeys) {
- newObj[key] = cloneDeep(obj[key]);
- }
- return newObj;
- }
-
- // 如果传入的对象是基本数据类型(如字符串、数字等),则直接返回
- return obj;
-}
-
-// 示例使用
-
-// // 克隆一个对象
-// const obj = { name: 'John', age: 30 };
-// const clonedObj = cloneDeep(obj);
-
-// console.log(clonedObj); // 输出: { name: 'John', age: 30 }
-// console.log(clonedObj === obj); // 输出: false (副本与原对象是独立的)
-
-// // 克隆一个数组
-// const arr = [1, 2, 3];
-// const clonedArr = cloneDeep(arr);
-
-// console.log(clonedArr); // 输出: [1, 2, 3]
-// console.log(clonedArr === arr); // 输出: false (副本与原数组是独立的)
-
-// // 克隆一个包含嵌套对象的对象
-// const person = {
-// name: 'Alice',
-// age: 25,
-// address: {
-// city: 'New York',
-// country: 'USA',
-// },
-// };
-// const clonedPerson = cloneDeep(person);
-
-// console.log(clonedPerson); // 输出: { name: 'Alice', age: 25, address: { city: 'New York', country: 'USA' } }
-// console.log(clonedPerson === person); // 输出: false (副本与原对象是独立的)
-// console.log(clonedPerson.address === person.address); // 输出: false (嵌套对象的副本也是独立的)
\ No newline at end of file
diff --git a/uni_modules/lime-shared/closest/index.ts b/uni_modules/lime-shared/closest/index.ts
deleted file mode 100644
index e6e79c2..0000000
--- a/uni_modules/lime-shared/closest/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-// @ts-nocheck
-
-/**
- * 在给定数组中找到最接近目标数字的元素。
- * @param arr 要搜索的数字数组。
- * @param target 目标数字。
- * @returns 最接近目标数字的数组元素。
- */
-export function closest(arr: number[], target: number):number {
- return arr.reduce((pre: number, cur: number):number =>
- Math.abs(pre - target) < Math.abs(cur - target) ? pre : cur
- );
-}
-
-// 示例
-// // 定义一个数字数组
-// const numbers = [1, 3, 5, 7, 9];
-
-// // 在数组中找到最接近目标数字 6 的元素
-// const closestNumber = closest(numbers, 6);
-
-// console.log(closestNumber); // 输出结果: 5
\ No newline at end of file
diff --git a/uni_modules/lime-shared/components/lime-shared/lime-shared.vue b/uni_modules/lime-shared/components/lime-shared/lime-shared.vue
deleted file mode 100644
index 284e8f0..0000000
--- a/uni_modules/lime-shared/components/lime-shared/lime-shared.vue
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/uni_modules/lime-shared/createAnimation/index.ts b/uni_modules/lime-shared/createAnimation/index.ts
deleted file mode 100644
index 999ec1c..0000000
--- a/uni_modules/lime-shared/createAnimation/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// @ts-nocheck
-// #ifndef UNI-APP-X
-export * from './type.ts'
-export * from './vue.ts'
-// #endif
-
-// #ifdef UNI-APP-X
-export * from './uvue.ts'
-// #endif
\ No newline at end of file
diff --git a/uni_modules/lime-shared/createAnimation/type.ts b/uni_modules/lime-shared/createAnimation/type.ts
deleted file mode 100644
index 0f8ad34..0000000
--- a/uni_modules/lime-shared/createAnimation/type.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-export type CreateAnimationOptions = {
- /**
- * 动画持续时间,单位ms
- */
- duration ?: number;
- /**
- * 定义动画的效果
- * - linear: 动画从头到尾的速度是相同的
- * - ease: 动画以低速开始,然后加快,在结束前变慢
- * - ease-in: 动画以低速开始
- * - ease-in-out: 动画以低速开始和结束
- * - ease-out: 动画以低速结束
- * - step-start: 动画第一帧就跳至结束状态直到结束
- * - step-end: 动画一直保持开始状态,最后一帧跳到结束状态
- */
- timingFunction ?: string //'linear' | 'ease' | 'ease-in' | 'ease-in-out' | 'ease-out' | 'step-start' | 'step-end';
- /**
- * 动画延迟时间,单位 ms
- */
- delay ?: number;
- /**
- * 设置transform-origin
- */
- transformOrigin ?: string;
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/createAnimation/uvue.ts b/uni_modules/lime-shared/createAnimation/uvue.ts
deleted file mode 100644
index 96d8263..0000000
--- a/uni_modules/lime-shared/createAnimation/uvue.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-// @ts-nocheck
-// export * from '@/uni_modules/lime-animateIt'
-export function createAnimation() {
- console.error('当前环境不支持,请使用:lime-animateIt')
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/createAnimation/vue.ts b/uni_modules/lime-shared/createAnimation/vue.ts
deleted file mode 100644
index d6223d8..0000000
--- a/uni_modules/lime-shared/createAnimation/vue.ts
+++ /dev/null
@@ -1,148 +0,0 @@
-// @ts-nocheck
-// nvue 需要在节点上设置ref或在export里传入
-// const animation = createAnimation({
-// ref: this.$refs['xxx'],
-// duration: 0,
-// timingFunction: 'linear'
-// })
-// animation.opacity(1).translate(x, y).step({duration})
-// animation.export(ref)
-
-// 抹平nvue 与 uni.createAnimation的使用差距
-// 但是nvue动画太慢
-
-
-
-import { CreateAnimationOptions } from './type'
-// #ifdef APP-NVUE
-const nvueAnimation = uni.requireNativePlugin('animation')
-
-type AnimationTypes = 'matrix' | 'matrix3d' | 'rotate' | 'rotate3d' | 'rotateX' | 'rotateY' | 'rotateZ' | 'scale' | 'scale3d' | 'scaleX' | 'scaleY' | 'scaleZ' | 'skew' | 'skewX' | 'skewY' | 'translate' | 'translate3d' | 'translateX' | 'translateY' | 'translateZ'
- | 'opacity' | 'backgroundColor' | 'width' | 'height' | 'left' | 'right' | 'top' | 'bottom'
-
-interface Styles {
- [key : string] : any
-}
-
-interface StepConfig {
- duration?: number
- timingFunction?: string
- delay?: number
- needLayout?: boolean
- transformOrigin?: string
-}
-interface StepAnimate {
- styles?: Styles
- config?: StepConfig
-}
-interface StepAnimates {
- [key: number]: StepAnimate
-}
-// export interface CreateAnimationOptions extends UniApp.CreateAnimationOptions {
-// ref?: string
-// }
-
-type Callback = (time: number) => void
-const animateTypes1 : AnimationTypes[] = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d',
- 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY',
- 'translateZ'
-]
-const animateTypes2 : AnimationTypes[] = ['opacity', 'backgroundColor']
-const animateTypes3 : AnimationTypes[] = ['width', 'height', 'left', 'right', 'top', 'bottom']
-
-class LimeAnimation {
- ref : any
- context : any
- options : UniApp.CreateAnimationOptions
- // stack : any[] = []
- next : number = 0
- currentStepAnimates : StepAnimates = {}
- duration : number = 0
- constructor(options : CreateAnimationOptions) {
- const {ref} = options
- this.ref = ref
- this.options = options
- }
- addAnimate(type : AnimationTypes, args: (string | number)[]) {
- let aniObj = this.currentStepAnimates[this.next]
- let stepAnimate:StepAnimate = {}
- if (!aniObj) {
- stepAnimate = {styles: {}, config: {}}
- } else {
- stepAnimate = aniObj
- }
-
- if (animateTypes1.includes(type)) {
- if (!stepAnimate.styles.transform) {
- stepAnimate.styles.transform = ''
- }
- let unit = ''
- if (type === 'rotate') {
- unit = 'deg'
- }
- stepAnimate.styles.transform += `${type}(${args.map((v: number) => v + unit).join(',')}) `
- } else {
- stepAnimate.styles[type] = `${args.join(',')}`
- }
- this.currentStepAnimates[this.next] = stepAnimate
- }
- animateRun(styles: Styles = {}, config:StepConfig = {}, ref: any) {
- const el = ref || this.ref
- if (!el) return
- return new Promise((resolve) => {
- const time = +new Date()
- nvueAnimation.transition(el, {
- styles,
- ...config
- }, () => {
- resolve(+new Date() - time)
- })
- })
- }
- nextAnimate(animates: StepAnimates, step: number = 0, ref: any, cb: Callback) {
- let obj = animates[step]
- if (obj) {
- let { styles, config } = obj
- // this.duration += config.duration
- this.animateRun(styles, config, ref).then((time: number) => {
- step += 1
- this.duration += time
- this.nextAnimate(animates, step, ref, cb)
- })
- } else {
- this.currentStepAnimates = {}
- cb && cb(this.duration)
- }
- }
- step(config:StepConfig = {}) {
- this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config)
- this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin
- this.next++
- return this
- }
- export(ref: any, cb?: Callback) {
- ref = ref || this.ref
- if(!ref) return
- this.duration = 0
- this.next = 0
- this.nextAnimate(this.currentStepAnimates, 0, ref, cb)
- return null
- }
-}
-
-
-animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => {
- LimeAnimation.prototype[type] = function(...args: (string | number)[]) {
- this.addAnimate(type, args)
- return this
- }
-})
-// #endif
-export function createAnimation(options : CreateAnimationOptions) {
- // #ifndef APP-NVUE
- return uni.createAnimation({ ...options })
- // #endif
- // #ifdef APP-NVUE
- return new LimeAnimation(options)
- // #endif
-}
diff --git a/uni_modules/lime-shared/createImage/index.ts b/uni_modules/lime-shared/createImage/index.ts
deleted file mode 100644
index 0cf7dc0..0000000
--- a/uni_modules/lime-shared/createImage/index.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-// @ts-nocheck
-// #ifndef APP-IOS || APP-ANDROID
-import {isBrowser} from '../isBrowser'
-class Image {
- currentSrc: string | null = null
- naturalHeight: number = 0
- naturalWidth: number = 0
- width: number = 0
- height: number = 0
- tagName: string = 'IMG'
- path: string = ''
- crossOrigin: string = ''
- referrerPolicy: string = ''
- onload: () => void = () => {}
- onerror: () => void = () => {}
- complete: boolean = false
- constructor() {}
- set src(src: string) {
- console.log('src', src)
- if(!src) {
- return this.onerror()
- }
- src = src.replace(/^@\//,'/')
- this.currentSrc = src
- uni.getImageInfo({
- src,
- success: (res) => {
- const localReg = /^\.|^\/(?=[^\/])/;
- // #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ || MP-TOUTIAO
- res.path = localReg.test(src) ? `/${res.path}` : res.path;
- // #endif
- this.complete = true
- this.path = res.path
- this.naturalWidth = this.width = res.width
- this.naturalHeight = this.height = res.height
- this.onload()
- },
- fail: () => {
- this.onerror()
- }
- })
- }
- get src() {
- return this.currentSrc
- }
-}
-interface UniImage extends WechatMiniprogram.Image {
- complete?: boolean
- naturalHeight?: number
- naturalWidth?: number
-}
-/** 创建用于 canvas 的 img */
-export function createImage(canvas?: any): HTMLImageElement | UniImage {
- if(canvas && canvas.createImage) {
- return (canvas as WechatMiniprogram.Canvas).createImage()
- } else if(this && this['tagName'] == 'canvas' && !('toBlob' in this) || canvas && !('toBlob' in canvas)){
- return new Image()
- } else if(isBrowser) {
- return new window.Image()
- }
- return new Image()
-}
-// #endif
-
-
-// #ifdef APP-IOS || APP-ANDROID
-export function createImage(){
- console.error('当前环境不支持')
-}
-// #endif
diff --git a/uni_modules/lime-shared/debounce/index.ts b/uni_modules/lime-shared/debounce/index.ts
deleted file mode 100644
index d51b8d0..0000000
--- a/uni_modules/lime-shared/debounce/index.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// @ts-nocheck
-
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.ts'
-
-// #endif
-
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
\ No newline at end of file
diff --git a/uni_modules/lime-shared/debounce/uvue.ts b/uni_modules/lime-shared/debounce/uvue.ts
deleted file mode 100644
index f1fc29d..0000000
--- a/uni_modules/lime-shared/debounce/uvue.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-// @ts-nocheck
-/**
- * 防抖函数,通过延迟一定时间来限制函数的执行频率。
- * @param fn 要防抖的函数。
- * @param wait 触发防抖的等待时间,单位为毫秒。
- * @returns 防抖函数。
- */
-export function debounce(fn : (args: A)=> void, wait = 300): (args: A)=> void {
- let timer = -1
-
- return (args: A) => {
- if (timer >-1) {clearTimeout(timer)};
-
- timer = setTimeout(()=>{
- fn(args)
- }, wait)
- }
-};
-
-
-
-// 示例
-// 定义一个函数
-// function saveData(data: string) {
-// // 模拟保存数据的操作
-// console.log(`Saving data: ${data}`);
-// }
-
-// // 创建一个防抖函数,延迟 500 毫秒后调用 saveData 函数
-// const debouncedSaveData = debounce(saveData, 500);
-
-// // 连续调用防抖函数
-// debouncedSaveData('Data 1'); // 不会立即调用 saveData 函数
-// debouncedSaveData('Data 2'); // 不会立即调用 saveData 函数
-
-// 在 500 毫秒后,只会调用一次 saveData 函数,输出结果为 "Saving data: Data 2"
\ No newline at end of file
diff --git a/uni_modules/lime-shared/debounce/vue.ts b/uni_modules/lime-shared/debounce/vue.ts
deleted file mode 100644
index 694b44d..0000000
--- a/uni_modules/lime-shared/debounce/vue.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-// @ts-nocheck
-type Timeout = ReturnType | null;
-/**
- * 防抖函数,通过延迟一定时间来限制函数的执行频率。
- * @param fn 要防抖的函数。
- * @param wait 触发防抖的等待时间,单位为毫秒。
- * @returns 防抖函数。
- */
-export function debounce(
- fn : (...args : A) => R,
- wait : number = 300) : (...args : A) => void {
- let timer : Timeout = null;
-
- return function (...args : A) {
- if (timer) clearTimeout(timer); // 如果上一个 setTimeout 存在,则清除它
-
- // 设置一个新的 setTimeout,在指定的等待时间后调用防抖函数
- timer = setTimeout(() => {
- fn.apply(this, args); // 使用提供的参数调用原始函数
- }, wait);
- };
-};
-
-
-
-// 示例
-// 定义一个函数
-// function saveData(data: string) {
-// // 模拟保存数据的操作
-// console.log(`Saving data: ${data}`);
-// }
-
-// // 创建一个防抖函数,延迟 500 毫秒后调用 saveData 函数
-// const debouncedSaveData = debounce(saveData, 500);
-
-// // 连续调用防抖函数
-// debouncedSaveData('Data 1'); // 不会立即调用 saveData 函数
-// debouncedSaveData('Data 2'); // 不会立即调用 saveData 函数
-
-// 在 500 毫秒后,只会调用一次 saveData 函数,输出结果为 "Saving data: Data 2"
\ No newline at end of file
diff --git a/uni_modules/lime-shared/exif/index.ts b/uni_modules/lime-shared/exif/index.ts
deleted file mode 100644
index 31d4658..0000000
--- a/uni_modules/lime-shared/exif/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// @ts-nocheck
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
-
-
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.ts'
-// #endif
diff --git a/uni_modules/lime-shared/exif/uvue.ts b/uni_modules/lime-shared/exif/uvue.ts
deleted file mode 100644
index 01d21a2..0000000
--- a/uni_modules/lime-shared/exif/uvue.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-class EXIF {
- constructor(){
- console.error('当前环境不支持')
- }
-}
-
-export const exif = new EXIF()
\ No newline at end of file
diff --git a/uni_modules/lime-shared/exif/vue.ts b/uni_modules/lime-shared/exif/vue.ts
deleted file mode 100644
index 86f2454..0000000
--- a/uni_modules/lime-shared/exif/vue.ts
+++ /dev/null
@@ -1,1057 +0,0 @@
-// @ts-nocheck
-import { base64ToArrayBuffer } from '../base64ToArrayBuffer';
-import { pathToBase64 } from '../pathToBase64';
-// import { isBase64 } from '../isBase64';
-import { isBase64DataUri } from '../isBase64';
-import { isString } from '../isString';
-
-interface File {
- exifdata : any
- iptcdata : any
- xmpdata : any
- src : string
-}
-class EXIF {
- isXmpEnabled = false
- debug = false
- Tags = {
- // version tags
- 0x9000: "ExifVersion", // EXIF version
- 0xA000: "FlashpixVersion", // Flashpix format version
-
- // colorspace tags
- 0xA001: "ColorSpace", // Color space information tag
-
- // image configuration
- 0xA002: "PixelXDimension", // Valid width of meaningful image
- 0xA003: "PixelYDimension", // Valid height of meaningful image
- 0x9101: "ComponentsConfiguration", // Information about channels
- 0x9102: "CompressedBitsPerPixel", // Compressed bits per pixel
-
- // user information
- 0x927C: "MakerNote", // Any desired information written by the manufacturer
- 0x9286: "UserComment", // Comments by user
-
- // related file
- 0xA004: "RelatedSoundFile", // Name of related sound file
-
- // date and time
- 0x9003: "DateTimeOriginal", // Date and time when the original image was generated
- 0x9004: "DateTimeDigitized", // Date and time when the image was stored digitally
- 0x9290: "SubsecTime", // Fractions of seconds for DateTime
- 0x9291: "SubsecTimeOriginal", // Fractions of seconds for DateTimeOriginal
- 0x9292: "SubsecTimeDigitized", // Fractions of seconds for DateTimeDigitized
-
- // picture-taking conditions
- 0x829A: "ExposureTime", // Exposure time (in seconds)
- 0x829D: "FNumber", // F number
- 0x8822: "ExposureProgram", // Exposure program
- 0x8824: "SpectralSensitivity", // Spectral sensitivity
- 0x8827: "ISOSpeedRatings", // ISO speed rating
- 0x8828: "OECF", // Optoelectric conversion factor
- 0x9201: "ShutterSpeedValue", // Shutter speed
- 0x9202: "ApertureValue", // Lens aperture
- 0x9203: "BrightnessValue", // Value of brightness
- 0x9204: "ExposureBias", // Exposure bias
- 0x9205: "MaxApertureValue", // Smallest F number of lens
- 0x9206: "SubjectDistance", // Distance to subject in meters
- 0x9207: "MeteringMode", // Metering mode
- 0x9208: "LightSource", // Kind of light source
- 0x9209: "Flash", // Flash status
- 0x9214: "SubjectArea", // Location and area of main subject
- 0x920A: "FocalLength", // Focal length of the lens in mm
- 0xA20B: "FlashEnergy", // Strobe energy in BCPS
- 0xA20C: "SpatialFrequencyResponse", //
- 0xA20E: "FocalPlaneXResolution", // Number of pixels in width direction per FocalPlaneResolutionUnit
- 0xA20F: "FocalPlaneYResolution", // Number of pixels in height direction per FocalPlaneResolutionUnit
- 0xA210: "FocalPlaneResolutionUnit", // Unit for measuring FocalPlaneXResolution and FocalPlaneYResolution
- 0xA214: "SubjectLocation", // Location of subject in image
- 0xA215: "ExposureIndex", // Exposure index selected on camera
- 0xA217: "SensingMethod", // Image sensor type
- 0xA300: "FileSource", // Image source (3 == DSC)
- 0xA301: "SceneType", // Scene type (1 == directly photographed)
- 0xA302: "CFAPattern", // Color filter array geometric pattern
- 0xA401: "CustomRendered", // Special processing
- 0xA402: "ExposureMode", // Exposure mode
- 0xA403: "WhiteBalance", // 1 = auto white balance, 2 = manual
- 0xA404: "DigitalZoomRation", // Digital zoom ratio
- 0xA405: "FocalLengthIn35mmFilm", // Equivalent foacl length assuming 35mm film camera (in mm)
- 0xA406: "SceneCaptureType", // Type of scene
- 0xA407: "GainControl", // Degree of overall image gain adjustment
- 0xA408: "Contrast", // Direction of contrast processing applied by camera
- 0xA409: "Saturation", // Direction of saturation processing applied by camera
- 0xA40A: "Sharpness", // Direction of sharpness processing applied by camera
- 0xA40B: "DeviceSettingDescription", //
- 0xA40C: "SubjectDistanceRange", // Distance to subject
-
- // other tags
- 0xA005: "InteroperabilityIFDPointer",
- 0xA420: "ImageUniqueID" // Identifier assigned uniquely to each image
- }
- TiffTags = {
- 0x0100: "ImageWidth",
- 0x0101: "ImageHeight",
- 0x8769: "ExifIFDPointer",
- 0x8825: "GPSInfoIFDPointer",
- 0xA005: "InteroperabilityIFDPointer",
- 0x0102: "BitsPerSample",
- 0x0103: "Compression",
- 0x0106: "PhotometricInterpretation",
- 0x0112: "Orientation",
- 0x0115: "SamplesPerPixel",
- 0x011C: "PlanarConfiguration",
- 0x0212: "YCbCrSubSampling",
- 0x0213: "YCbCrPositioning",
- 0x011A: "XResolution",
- 0x011B: "YResolution",
- 0x0128: "ResolutionUnit",
- 0x0111: "StripOffsets",
- 0x0116: "RowsPerStrip",
- 0x0117: "StripByteCounts",
- 0x0201: "JPEGInterchangeFormat",
- 0x0202: "JPEGInterchangeFormatLength",
- 0x012D: "TransferFunction",
- 0x013E: "WhitePoint",
- 0x013F: "PrimaryChromaticities",
- 0x0211: "YCbCrCoefficients",
- 0x0214: "ReferenceBlackWhite",
- 0x0132: "DateTime",
- 0x010E: "ImageDescription",
- 0x010F: "Make",
- 0x0110: "Model",
- 0x0131: "Software",
- 0x013B: "Artist",
- 0x8298: "Copyright"
- }
- GPSTags = {
- 0x0000: "GPSVersionID",
- 0x0001: "GPSLatitudeRef",
- 0x0002: "GPSLatitude",
- 0x0003: "GPSLongitudeRef",
- 0x0004: "GPSLongitude",
- 0x0005: "GPSAltitudeRef",
- 0x0006: "GPSAltitude",
- 0x0007: "GPSTimeStamp",
- 0x0008: "GPSSatellites",
- 0x0009: "GPSStatus",
- 0x000A: "GPSMeasureMode",
- 0x000B: "GPSDOP",
- 0x000C: "GPSSpeedRef",
- 0x000D: "GPSSpeed",
- 0x000E: "GPSTrackRef",
- 0x000F: "GPSTrack",
- 0x0010: "GPSImgDirectionRef",
- 0x0011: "GPSImgDirection",
- 0x0012: "GPSMapDatum",
- 0x0013: "GPSDestLatitudeRef",
- 0x0014: "GPSDestLatitude",
- 0x0015: "GPSDestLongitudeRef",
- 0x0016: "GPSDestLongitude",
- 0x0017: "GPSDestBearingRef",
- 0x0018: "GPSDestBearing",
- 0x0019: "GPSDestDistanceRef",
- 0x001A: "GPSDestDistance",
- 0x001B: "GPSProcessingMethod",
- 0x001C: "GPSAreaInformation",
- 0x001D: "GPSDateStamp",
- 0x001E: "GPSDifferential"
- }
- // EXIF 2.3 Spec
- IFD1Tags = {
- 0x0100: "ImageWidth",
- 0x0101: "ImageHeight",
- 0x0102: "BitsPerSample",
- 0x0103: "Compression",
- 0x0106: "PhotometricInterpretation",
- 0x0111: "StripOffsets",
- 0x0112: "Orientation",
- 0x0115: "SamplesPerPixel",
- 0x0116: "RowsPerStrip",
- 0x0117: "StripByteCounts",
- 0x011A: "XResolution",
- 0x011B: "YResolution",
- 0x011C: "PlanarConfiguration",
- 0x0128: "ResolutionUnit",
- 0x0201: "JpegIFOffset", // When image format is JPEG, this value show offset to JPEG data stored.(aka "ThumbnailOffset" or "JPEGInterchangeFormat")
- 0x0202: "JpegIFByteCount", // When image format is JPEG, this value shows data size of JPEG image (aka "ThumbnailLength" or "JPEGInterchangeFormatLength")
- 0x0211: "YCbCrCoefficients",
- 0x0212: "YCbCrSubSampling",
- 0x0213: "YCbCrPositioning",
- 0x0214: "ReferenceBlackWhite"
- }
- StringValues = {
- ExposureProgram: {
- 0: "Not defined",
- 1: "Manual",
- 2: "Normal program",
- 3: "Aperture priority",
- 4: "Shutter priority",
- 5: "Creative program",
- 6: "Action program",
- 7: "Portrait mode",
- 8: "Landscape mode"
- },
- MeteringMode: {
- 0: "Unknown",
- 1: "Average",
- 2: "CenterWeightedAverage",
- 3: "Spot",
- 4: "MultiSpot",
- 5: "Pattern",
- 6: "Partial",
- 255: "Other"
- },
- LightSource: {
- 0: "Unknown",
- 1: "Daylight",
- 2: "Fluorescent",
- 3: "Tungsten (incandescent light)",
- 4: "Flash",
- 9: "Fine weather",
- 10: "Cloudy weather",
- 11: "Shade",
- 12: "Daylight fluorescent (D 5700 - 7100K)",
- 13: "Day white fluorescent (N 4600 - 5400K)",
- 14: "Cool white fluorescent (W 3900 - 4500K)",
- 15: "White fluorescent (WW 3200 - 3700K)",
- 17: "Standard light A",
- 18: "Standard light B",
- 19: "Standard light C",
- 20: "D55",
- 21: "D65",
- 22: "D75",
- 23: "D50",
- 24: "ISO studio tungsten",
- 255: "Other"
- },
- Flash: {
- 0x0000: "Flash did not fire",
- 0x0001: "Flash fired",
- 0x0005: "Strobe return light not detected",
- 0x0007: "Strobe return light detected",
- 0x0009: "Flash fired, compulsory flash mode",
- 0x000D: "Flash fired, compulsory flash mode, return light not detected",
- 0x000F: "Flash fired, compulsory flash mode, return light detected",
- 0x0010: "Flash did not fire, compulsory flash mode",
- 0x0018: "Flash did not fire, auto mode",
- 0x0019: "Flash fired, auto mode",
- 0x001D: "Flash fired, auto mode, return light not detected",
- 0x001F: "Flash fired, auto mode, return light detected",
- 0x0020: "No flash function",
- 0x0041: "Flash fired, red-eye reduction mode",
- 0x0045: "Flash fired, red-eye reduction mode, return light not detected",
- 0x0047: "Flash fired, red-eye reduction mode, return light detected",
- 0x0049: "Flash fired, compulsory flash mode, red-eye reduction mode",
- 0x004D: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
- 0x004F: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
- 0x0059: "Flash fired, auto mode, red-eye reduction mode",
- 0x005D: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
- 0x005F: "Flash fired, auto mode, return light detected, red-eye reduction mode"
- },
- SensingMethod: {
- 1: "Not defined",
- 2: "One-chip color area sensor",
- 3: "Two-chip color area sensor",
- 4: "Three-chip color area sensor",
- 5: "Color sequential area sensor",
- 7: "Trilinear sensor",
- 8: "Color sequential linear sensor"
- },
- SceneCaptureType: {
- 0: "Standard",
- 1: "Landscape",
- 2: "Portrait",
- 3: "Night scene"
- },
- SceneType: {
- 1: "Directly photographed"
- },
- CustomRendered: {
- 0: "Normal process",
- 1: "Custom process"
- },
- WhiteBalance: {
- 0: "Auto white balance",
- 1: "Manual white balance"
- },
- GainControl: {
- 0: "None",
- 1: "Low gain up",
- 2: "High gain up",
- 3: "Low gain down",
- 4: "High gain down"
- },
- Contrast: {
- 0: "Normal",
- 1: "Soft",
- 2: "Hard"
- },
- Saturation: {
- 0: "Normal",
- 1: "Low saturation",
- 2: "High saturation"
- },
- Sharpness: {
- 0: "Normal",
- 1: "Soft",
- 2: "Hard"
- },
- SubjectDistanceRange: {
- 0: "Unknown",
- 1: "Macro",
- 2: "Close view",
- 3: "Distant view"
- },
- FileSource: {
- 3: "DSC"
- },
-
- Components: {
- 0: "",
- 1: "Y",
- 2: "Cb",
- 3: "Cr",
- 4: "R",
- 5: "G",
- 6: "B"
- }
- }
- enableXmp() {
- this.isXmpEnabled = true
- }
- disableXmp() {
- this.isXmpEnabled = false;
- }
- /**
- * 获取图片数据
- * @param img 图片地址
- * @param callback 回调 返回图片数据
- * */
- getData(img : any, callback : Function) {
- // if (((self.Image && img instanceof self.Image) || (self.HTMLImageElement && img instanceof self.HTMLImageElement)) && !img.complete)
- // return false;
- let file : File = {
- src: '',
- exifdata: null,
- iptcdata: null,
- xmpdata: null,
- }
- if (isBase64(img)) {
- file.src = img
- } else if (img.path) {
- file.src = img.path
- } else if (isString(img)) {
- file.src = img
- } else {
- return false;
- }
-
-
- if (!imageHasData(file)) {
- getImageData(file, callback);
- } else {
- if (callback) {
- callback.call(file);
- }
- }
- return true;
- }
- /**
- * 获取图片tag
- * @param img 图片数据
- * @param tag tag 类型
- * */
- getTag(img : File, tag : string) {
- if (!imageHasData(img)) return;
- return img.exifdata[tag];
- }
- getIptcTag(img : File, tag : string) {
- if (!imageHasData(img)) return;
- return img.iptcdata[tag];
- }
- getAllTags(img : File) {
- if (!imageHasData(img)) return {};
- let a,
- data = img.exifdata,
- tags = {};
- for (a in data) {
- if (data.hasOwnProperty(a)) {
- tags[a] = data[a];
- }
- }
- return tags;
- }
- getAllIptcTags(img : File) {
- if (!imageHasData(img)) return {};
- let a,
- data = img.iptcdata,
- tags = {};
- for (a in data) {
- if (data.hasOwnProperty(a)) {
- tags[a] = data[a];
- }
- }
- return tags;
- }
- pretty(img : File) {
- if (!imageHasData(img)) return "";
- let a,
- data = img.exifdata,
- strPretty = "";
- for (a in data) {
- if (data.hasOwnProperty(a)) {
- if (typeof data[a] == "object") {
- if (data[a] instanceof Number) {
- strPretty += a + " : " + data[a] + " [" + data[a].numerator + "/" + data[a]
- .denominator + "]\r\n";
- } else {
- strPretty += a + " : [" + data[a].length + " values]\r\n";
- }
- } else {
- strPretty += a + " : " + data[a] + "\r\n";
- }
- }
- }
- return strPretty;
- }
- readFromBinaryFile(file: ArrayBuffer) {
- return findEXIFinJPEG(file);
- }
-}
-
-export const exif = new EXIF()
-// export function getData(img, callback) {
-// const exif = new EXIF()
-// exif.getData(img, callback)
-// }
-
-// export default {getData}
-const ExifTags = exif.Tags
-const TiffTags = exif.TiffTags
-const IFD1Tags = exif.IFD1Tags
-const GPSTags = exif.GPSTags
-const StringValues = exif.StringValues
-
-
-function imageHasData(img : File) : boolean {
- return !!(img.exifdata);
-}
-
-function objectURLToBlob(url : string, callback : Function) {
- try {
- const http = new XMLHttpRequest();
- http.open("GET", url, true);
- http.responseType = "blob";
- http.onload = function (e) {
- if (this.status == 200 || this.status === 0) {
- callback(this.response);
- }
- };
- http.send();
- } catch (e) {
- console.warn(e)
- }
-}
-
-
-function getImageData(img : File, callback : Function) {
- function handleBinaryFile(binFile: ArrayBuffer) {
- const data = findEXIFinJPEG(binFile);
- img.exifdata = data ?? {};
- const iptcdata = findIPTCinJPEG(binFile);
- img.iptcdata = iptcdata ?? {};
- if (exif.isXmpEnabled) {
- const xmpdata = findXMPinJPEG(binFile);
- img.xmpdata = xmpdata ?? {};
- }
- if (callback) {
- callback.call(img);
- }
- }
-
- if (img.src) {
- if (/^data\:/i.test(img.src)) { // Data URI
- // var arrayBuffer = base64ToArrayBuffer(img.src);
- handleBinaryFile(base64ToArrayBuffer(img.src));
-
- } else if (/^blob\:/i.test(img.src) && typeof FileReader !== 'undefined') { // Object URL
- var fileReader = new FileReader();
- fileReader.onload = function (e) {
- handleBinaryFile(e.target.result);
- };
- objectURLToBlob(img.src, function (blob : Blob) {
- fileReader.readAsArrayBuffer(blob);
- });
- } else if (typeof XMLHttpRequest !== 'undefined') {
- var http = new XMLHttpRequest();
- http.onload = function () {
- if (this.status == 200 || this.status === 0) {
- handleBinaryFile(http.response);
- } else {
- throw "Could not load image";
- }
- http = null;
- };
- http.open("GET", img.src, true);
- http.responseType = "arraybuffer";
- http.send(null);
- } else {
- pathToBase64(img.src).then(res => {
- handleBinaryFile(base64ToArrayBuffer(res));
- })
- }
- } else if (typeof FileReader !== 'undefined' && self.FileReader && (img instanceof self.Blob || img instanceof self.File)) {
- var fileReader = new FileReader();
- fileReader.onload = function (e : any) {
- if (exif.debug) console.log("Got file of length " + e.target.result.byteLength);
- handleBinaryFile(e.target.result);
- };
-
- fileReader.readAsArrayBuffer(img);
- }
-}
-
-function findEXIFinJPEG(file: ArrayBuffer) {
- const dataView = new DataView(file);
-
- if (exif.debug) console.log("Got file of length " + file.byteLength);
- if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {
- if (exif.debug) console.log("Not a valid JPEG");
- return false; // not a valid jpeg
- }
-
- let offset = 2,
- length = file.byteLength,
- marker;
-
- while (offset < length) {
- if (dataView.getUint8(offset) != 0xFF) {
- if (exif.debug) console.log("Not a valid marker at offset " + offset + ", found: " + dataView.getUint8(
- offset));
- return false; // not a valid marker, something is wrong
- }
-
- marker = dataView.getUint8(offset + 1);
- if (exif.debug) console.log(marker);
-
- // we could implement handling for other markers here,
- // but we're only looking for 0xFFE1 for EXIF data
-
- if (marker == 225) {
- if (exif.debug) console.log("Found 0xFFE1 marker");
-
- return readEXIFData(dataView, offset + 4, dataView.getUint16(offset + 2) - 2);
-
- // offset += 2 + file.getShortAt(offset+2, true);
-
- } else {
- offset += 2 + dataView.getUint16(offset + 2);
- }
-
- }
-
-}
-
-function findIPTCinJPEG(file: ArrayBuffer) {
- const dataView = new DataView(file);
-
- if (exif.debug) console.log("Got file of length " + file.byteLength);
- if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {
- if (exif.debug) console.log("Not a valid JPEG");
- return false; // not a valid jpeg
- }
-
- let offset = 2,
- length = file.byteLength;
-
-
- const isFieldSegmentStart = function (dataView, offset: number) {
- return (
- dataView.getUint8(offset) === 0x38 &&
- dataView.getUint8(offset + 1) === 0x42 &&
- dataView.getUint8(offset + 2) === 0x49 &&
- dataView.getUint8(offset + 3) === 0x4D &&
- dataView.getUint8(offset + 4) === 0x04 &&
- dataView.getUint8(offset + 5) === 0x04
- );
- };
-
- while (offset < length) {
-
- if (isFieldSegmentStart(dataView, offset)) {
-
- // Get the length of the name header (which is padded to an even number of bytes)
- var nameHeaderLength = dataView.getUint8(offset + 7);
- if (nameHeaderLength % 2 !== 0) nameHeaderLength += 1;
- // Check for pre photoshop 6 format
- if (nameHeaderLength === 0) {
- // Always 4
- nameHeaderLength = 4;
- }
-
- var startOffset = offset + 8 + nameHeaderLength;
- var sectionLength = dataView.getUint16(offset + 6 + nameHeaderLength);
-
- return readIPTCData(file, startOffset, sectionLength);
-
- break;
-
- }
-
-
- // Not the marker, continue searching
- offset++;
-
- }
-
-}
-
-const IptcFieldMap = {
- 0x78: 'caption',
- 0x6E: 'credit',
- 0x19: 'keywords',
- 0x37: 'dateCreated',
- 0x50: 'byline',
- 0x55: 'bylineTitle',
- 0x7A: 'captionWriter',
- 0x69: 'headline',
- 0x74: 'copyright',
- 0x0F: 'category'
-};
-
-function readIPTCData(file: ArrayBuffer, startOffset: number, sectionLength: number) {
- const dataView = new DataView(file);
- let data = {};
- let fieldValue, fieldName, dataSize, segmentType, segmentSize;
- let segmentStartPos = startOffset;
- while (segmentStartPos < startOffset + sectionLength) {
- if (dataView.getUint8(segmentStartPos) === 0x1C && dataView.getUint8(segmentStartPos + 1) === 0x02) {
- segmentType = dataView.getUint8(segmentStartPos + 2);
- if (segmentType in IptcFieldMap) {
- dataSize = dataView.getInt16(segmentStartPos + 3);
- segmentSize = dataSize + 5;
- fieldName = IptcFieldMap[segmentType];
- fieldValue = getStringFromDB(dataView, segmentStartPos + 5, dataSize);
- // Check if we already stored a value with this name
- if (data.hasOwnProperty(fieldName)) {
- // Value already stored with this name, create multivalue field
- if (data[fieldName] instanceof Array) {
- data[fieldName].push(fieldValue);
- } else {
- data[fieldName] = [data[fieldName], fieldValue];
- }
- } else {
- data[fieldName] = fieldValue;
- }
- }
-
- }
- segmentStartPos++;
- }
- return data;
-}
-
-function readTags(file: DataView, tiffStart: number, dirStart: number, strings: any[], bigEnd: number) {
- let entries = file.getUint16(dirStart, !bigEnd),
- tags = {},
- entryOffset, tag;
-
- for (let i = 0; i < entries; i++) {
- entryOffset = dirStart + i * 12 + 2;
- tag = strings[file.getUint16(entryOffset, !bigEnd)];
- if (!tag && exif.debug) console.log("Unknown tag: " + file.getUint16(entryOffset, !bigEnd));
- tags[tag] = readTagValue(file, entryOffset, tiffStart, dirStart, bigEnd);
- }
- return tags;
-}
-
-function readTagValue(file: DataView, entryOffset: number, tiffStart: number, dirStart: number, bigEnd: number) {
- let type = file.getUint16(entryOffset + 2, !bigEnd),
- numValues = file.getUint32(entryOffset + 4, !bigEnd),
- valueOffset = file.getUint32(entryOffset + 8, !bigEnd) + tiffStart,
- offset,
- vals, val, n,
- numerator, denominator;
-
- switch (type) {
- case 1: // byte, 8-bit unsigned int
- case 7: // undefined, 8-bit byte, value depending on field
- if (numValues == 1) {
- return file.getUint8(entryOffset + 8, !bigEnd);
- } else {
- offset = numValues > 4 ? valueOffset : (entryOffset + 8);
- vals = [];
- for (n = 0; n < numValues; n++) {
- vals[n] = file.getUint8(offset + n);
- }
- return vals;
- }
-
- case 2: // ascii, 8-bit byte
- offset = numValues > 4 ? valueOffset : (entryOffset + 8);
- return getStringFromDB(file, offset, numValues - 1);
-
- case 3: // short, 16 bit int
- if (numValues == 1) {
- return file.getUint16(entryOffset + 8, !bigEnd);
- } else {
- offset = numValues > 2 ? valueOffset : (entryOffset + 8);
- vals = [];
- for (n = 0; n < numValues; n++) {
- vals[n] = file.getUint16(offset + 2 * n, !bigEnd);
- }
- return vals;
- }
-
- case 4: // long, 32 bit int
- if (numValues == 1) {
- return file.getUint32(entryOffset + 8, !bigEnd);
- } else {
- vals = [];
- for (n = 0; n < numValues; n++) {
- vals[n] = file.getUint32(valueOffset + 4 * n, !bigEnd);
- }
- return vals;
- }
-
- case 5: // rational = two long values, first is numerator, second is denominator
- if (numValues == 1) {
- numerator = file.getUint32(valueOffset, !bigEnd);
- denominator = file.getUint32(valueOffset + 4, !bigEnd);
- val = new Number(numerator / denominator);
- val.numerator = numerator;
- val.denominator = denominator;
- return val;
- } else {
- vals = [];
- for (n = 0; n < numValues; n++) {
- numerator = file.getUint32(valueOffset + 8 * n, !bigEnd);
- denominator = file.getUint32(valueOffset + 4 + 8 * n, !bigEnd);
- vals[n] = new Number(numerator / denominator);
- vals[n].numerator = numerator;
- vals[n].denominator = denominator;
- }
- return vals;
- }
-
- case 9: // slong, 32 bit signed int
- if (numValues == 1) {
- return file.getInt32(entryOffset + 8, !bigEnd);
- } else {
- vals = [];
- for (n = 0; n < numValues; n++) {
- vals[n] = file.getInt32(valueOffset + 4 * n, !bigEnd);
- }
- return vals;
- }
-
- case 10: // signed rational, two slongs, first is numerator, second is denominator
- if (numValues == 1) {
- return file.getInt32(valueOffset, !bigEnd) / file.getInt32(valueOffset + 4, !bigEnd);
- } else {
- vals = [];
- for (n = 0; n < numValues; n++) {
- vals[n] = file.getInt32(valueOffset + 8 * n, !bigEnd) / file.getInt32(valueOffset + 4 + 8 *
- n, !bigEnd);
- }
- return vals;
- }
- }
-}
-/**
- * Given an IFD (Image File Directory) start offset
- * returns an offset to next IFD or 0 if it's the last IFD.
- */
-function getNextIFDOffset(dataView: DataView, dirStart: number, bigEnd: number) {
- //the first 2bytes means the number of directory entries contains in this IFD
- var entries = dataView.getUint16(dirStart, !bigEnd);
-
- // After last directory entry, there is a 4bytes of data,
- // it means an offset to next IFD.
- // If its value is '0x00000000', it means this is the last IFD and there is no linked IFD.
-
- return dataView.getUint32(dirStart + 2 + entries * 12, !bigEnd); // each entry is 12 bytes long
-}
-
-function readThumbnailImage(dataView: DataView, tiffStart: number, firstIFDOffset: number, bigEnd: number) {
- // get the IFD1 offset
- const IFD1OffsetPointer = getNextIFDOffset(dataView, tiffStart + firstIFDOffset, bigEnd);
-
- if (!IFD1OffsetPointer) {
- // console.log('******** IFD1Offset is empty, image thumb not found ********');
- return {};
- } else if (IFD1OffsetPointer > dataView.byteLength) { // this should not happen
- // console.log('******** IFD1Offset is outside the bounds of the DataView ********');
- return {};
- }
- // console.log('******* thumbnail IFD offset (IFD1) is: %s', IFD1OffsetPointer);
-
- let thumbTags : any = readTags(dataView, tiffStart, tiffStart + IFD1OffsetPointer, IFD1Tags, bigEnd)
-
- // EXIF 2.3 specification for JPEG format thumbnail
-
- // If the value of Compression(0x0103) Tag in IFD1 is '6', thumbnail image format is JPEG.
- // Most of Exif image uses JPEG format for thumbnail. In that case, you can get offset of thumbnail
- // by JpegIFOffset(0x0201) Tag in IFD1, size of thumbnail by JpegIFByteCount(0x0202) Tag.
- // Data format is ordinary JPEG format, starts from 0xFFD8 and ends by 0xFFD9. It seems that
- // JPEG format and 160x120pixels of size are recommended thumbnail format for Exif2.1 or later.
-
- if (thumbTags['Compression'] && typeof Blob !== 'undefined') {
- // console.log('Thumbnail image found!');
-
- switch (thumbTags['Compression']) {
- case 6:
- // console.log('Thumbnail image format is JPEG');
- if (thumbTags.JpegIFOffset && thumbTags.JpegIFByteCount) {
- // extract the thumbnail
- var tOffset = tiffStart + thumbTags.JpegIFOffset;
- var tLength = thumbTags.JpegIFByteCount;
- thumbTags['blob'] = new Blob([new Uint8Array(dataView.buffer, tOffset, tLength)], {
- type: 'image/jpeg'
- });
- }
- break;
-
- case 1:
- console.log("Thumbnail image format is TIFF, which is not implemented.");
- break;
- default:
- console.log("Unknown thumbnail image format '%s'", thumbTags['Compression']);
- }
- } else if (thumbTags['PhotometricInterpretation'] == 2) {
- console.log("Thumbnail image format is RGB, which is not implemented.");
- }
- return thumbTags;
-}
-
-function getStringFromDB(buffer: DataView, start: number, length: number) {
- let outstr = "";
- for (let n = start; n < start + length; n++) {
- outstr += String.fromCharCode(buffer.getUint8(n));
- }
- return outstr;
-}
-
-function readEXIFData(file: DataView, start: number) {
- if (getStringFromDB(file, start, 4) != "Exif") {
- if (exif.debug) console.log("Not valid EXIF data! " + getStringFromDB(file, start, 4));
- return false;
- }
-
- let bigEnd,
- tags, tag,
- exifData, gpsData,
- tiffOffset = start + 6;
-
- // test for TIFF validity and endianness
- if (file.getUint16(tiffOffset) == 0x4949) {
- bigEnd = false;
- } else if (file.getUint16(tiffOffset) == 0x4D4D) {
- bigEnd = true;
- } else {
- if (exif.debug) console.log("Not valid TIFF data! (no 0x4949 or 0x4D4D)");
- return false;
- }
-
- if (file.getUint16(tiffOffset + 2, !bigEnd) != 0x002A) {
- if (exif.debug) console.log("Not valid TIFF data! (no 0x002A)");
- return false;
- }
-
- const firstIFDOffset = file.getUint32(tiffOffset + 4, !bigEnd);
-
- if (firstIFDOffset < 0x00000008) {
- if (exif.debug) console.log("Not valid TIFF data! (First offset less than 8)", file.getUint32(tiffOffset + 4,
- !bigEnd));
- return false;
- }
-
- tags = readTags(file, tiffOffset, tiffOffset + firstIFDOffset, TiffTags, bigEnd);
-
- if (tags.ExifIFDPointer) {
- exifData = readTags(file, tiffOffset, tiffOffset + tags.ExifIFDPointer, ExifTags, bigEnd);
- for (tag in exifData) {
- switch (tag) {
- case "LightSource":
- case "Flash":
- case "MeteringMode":
- case "ExposureProgram":
- case "SensingMethod":
- case "SceneCaptureType":
- case "SceneType":
- case "CustomRendered":
- case "WhiteBalance":
- case "GainControl":
- case "Contrast":
- case "Saturation":
- case "Sharpness":
- case "SubjectDistanceRange":
- case "FileSource":
- exifData[tag] = StringValues[tag][exifData[tag]];
- break;
-
- case "ExifVersion":
- case "FlashpixVersion":
- exifData[tag] = String.fromCharCode(exifData[tag][0], exifData[tag][1], exifData[tag][2],
- exifData[tag][3]);
- break;
-
- case "ComponentsConfiguration":
- exifData[tag] =
- StringValues.Components[exifData[tag][0]] +
- StringValues.Components[exifData[tag][1]] +
- StringValues.Components[exifData[tag][2]] +
- StringValues.Components[exifData[tag][3]];
- break;
- }
- tags[tag] = exifData[tag];
- }
- }
-
- if (tags.GPSInfoIFDPointer) {
- gpsData = readTags(file, tiffOffset, tiffOffset + tags.GPSInfoIFDPointer, GPSTags, bigEnd);
- for (tag in gpsData) {
- switch (tag) {
- case "GPSVersionID":
- gpsData[tag] = gpsData[tag][0] +
- "." + gpsData[tag][1] +
- "." + gpsData[tag][2] +
- "." + gpsData[tag][3];
- break;
- }
- tags[tag] = gpsData[tag];
- }
- }
-
- // extract thumbnail
- tags['thumbnail'] = readThumbnailImage(file, tiffOffset, firstIFDOffset, bigEnd);
-
- return tags;
-}
-
-function findXMPinJPEG(file: ArrayBuffer) {
-
- if (!('DOMParser' in self)) {
- // console.warn('XML parsing not supported without DOMParser');
- return;
- }
- const dataView = new DataView(file);
-
- if (exif.debug) console.log("Got file of length " + file.byteLength);
- if ((dataView.getUint8(0) != 0xFF) || (dataView.getUint8(1) != 0xD8)) {
- if (exif.debug) console.log("Not a valid JPEG");
- return false; // not a valid jpeg
- }
-
- let offset = 2,
- length = file.byteLength,
- dom = new DOMParser();
-
- while (offset < (length - 4)) {
- if (getStringFromDB(dataView, offset, 4) == "http") {
- const startOffset = offset - 1;
- const sectionLength = dataView.getUint16(offset - 2) - 1;
- let xmpString = getStringFromDB(dataView, startOffset, sectionLength)
- const xmpEndIndex = xmpString.indexOf('xmpmeta>') + 8;
- xmpString = xmpString.substring(xmpString.indexOf(' 0) {
- json['@attributes'] = {};
- for (var j = 0; j < xml.attributes.length; j++) {
- var attribute = xml.attributes.item(j);
- json['@attributes'][attribute.nodeName] = attribute.nodeValue;
- }
- }
- } else if (xml.nodeType == 3) { // text node
- return xml.nodeValue;
- }
-
- // deal with children
- if (xml.hasChildNodes()) {
- for (var i = 0; i < xml.childNodes.length; i++) {
- var child = xml.childNodes.item(i);
- var nodeName = child.nodeName;
- if (json[nodeName] == null) {
- json[nodeName] = xml2json(child);
- } else {
- if (json[nodeName].push == null) {
- var old = json[nodeName];
- json[nodeName] = [];
- json[nodeName].push(old);
- }
- json[nodeName].push(xml2json(child));
- }
- }
- }
-
- return json;
-}
-
-function xml2Object(xml: any) {
- try {
- var obj = {};
- if (xml.children.length > 0) {
- for (var i = 0; i < xml.children.length; i++) {
- var item = xml.children.item(i);
- var attributes = item.attributes;
- for (var idx in attributes) {
- var itemAtt = attributes[idx];
- var dataKey = itemAtt.nodeName;
- var dataValue = itemAtt.nodeValue;
-
- if (dataKey !== undefined) {
- obj[dataKey] = dataValue;
- }
- }
- var nodeName = item.nodeName;
-
- if (typeof (obj[nodeName]) == "undefined") {
- obj[nodeName] = xml2json(item);
- } else {
- if (typeof (obj[nodeName].push) == "undefined") {
- var old = obj[nodeName];
-
- obj[nodeName] = [];
- obj[nodeName].push(old);
- }
- obj[nodeName].push(xml2json(item));
- }
- }
- } else {
- obj = xml.textContent;
- }
- return obj;
- } catch (e) {
- console.log(e.message);
- }
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/fillZero/index.ts b/uni_modules/lime-shared/fillZero/index.ts
deleted file mode 100644
index 9952c45..0000000
--- a/uni_modules/lime-shared/fillZero/index.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-// @ts-nocheck
-/**
- * 在数字前填充零,返回字符串形式的结果
- * @param number 要填充零的数字
- * @param length 填充零后的字符串长度,默认为2
- * @returns 填充零后的字符串
- */
-export function fillZero(number: number, length: number = 2): string {
- // 将数字转换为字符串,然后使用 padStart 方法填充零到指定长度
- return `${number}`.padStart(length, '0');
-}
\ No newline at end of file
diff --git a/uni_modules/lime-shared/floatAdd/index.ts b/uni_modules/lime-shared/floatAdd/index.ts
deleted file mode 100644
index aba4774..0000000
--- a/uni_modules/lime-shared/floatAdd/index.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import {isNumber} from '../isNumber'
-/**
- * 返回两个浮点数相加的结果
- * @param num1 第一个浮点数
- * @param num2 第二个浮点数
- * @returns 两个浮点数的相加结果
- */
-export function floatAdd(num1: number, num2: number): number {
- // 检查 num1 和 num2 是否为数字类型
- if (!(isNumber(num1) || isNumber(num2))) {
- console.warn('Please pass in the number type');
- return NaN;
- }
-
- let r1: number, r2: number, m: number;
-
- try {
- // 获取 num1 小数点后的位数
- r1 = num1.toString().split('.')[1].length;
- } catch (error) {
- r1 = 0;
- }
-
- try {
- // 获取 num2 小数点后的位数
- r2 = num2.toString().split('.')[1].length;
- } catch (error) {
- r2 = 0;
- }
-
- // 计算需要扩大的倍数
- m = Math.pow(10, Math.max(r1, r2));
-
- // 返回相加结果
- return (num1 * m + num2 * m) / m;
-}
diff --git a/uni_modules/lime-shared/getClassStr/index.ts b/uni_modules/lime-shared/getClassStr/index.ts
deleted file mode 100644
index 32a0a74..0000000
--- a/uni_modules/lime-shared/getClassStr/index.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-// @ts-nocheck
-
-// #ifdef APP-IOS || APP-ANDROID
-import { isNumber } from '../isNumber'
-import { isString } from '../isString'
-import { isDef } from '../isDef'
-// #endif
-
-/**
- * 获取对象的类名字符串
- * @param obj - 需要处理的对象
- * @returns 由对象属性作为类名组成的字符串
- */
-export function getClassStr(obj : T) : string {
- let classNames : string[] = [];
- // #ifdef APP-IOS || APP-ANDROID
- if (obj instanceof UTSJSONObject) {
- (obj as UTSJSONObject).toMap().forEach((value, key) => {
- if (isDef(value)) {
- if (isNumber(value)) {
- classNames.push(key);
- }
- if (isString(value) && value !== '') {
- classNames.push(key);
- }
- if (typeof value == 'boolean' && (value as boolean)) {
- classNames.push(key);
- }
- }
- })
- }
- // #endif
- // #ifndef APP-IOS || APP-ANDROID
- // 遍历对象的属性
- for (let key in obj) {
- // 检查属性确实属于对象自身且其值为true
- if ((obj as any).hasOwnProperty(key) && obj[key]) {
- // 将属性名添加到类名数组中
- classNames.push(key);
- }
- }
- // #endif
-
-
- // 将类名数组用空格连接成字符串并返回
- return classNames.join(' ');
-}
-
-
-// 示例
-// const obj = { foo: true, bar: false, baz: true };
-// const classNameStr = getClassStr(obj);
-// console.log(classNameStr); // 输出: "foo baz"
\ No newline at end of file
diff --git a/uni_modules/lime-shared/getCurrentPage/index.ts b/uni_modules/lime-shared/getCurrentPage/index.ts
deleted file mode 100644
index 28a3bf5..0000000
--- a/uni_modules/lime-shared/getCurrentPage/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-// @ts-nocheck
-// #ifndef APP-IOS || APP-ANDROID
-export * from './vue.ts'
-// #endif
-
-
-// #ifdef APP-IOS || APP-ANDROID
-export * from './uvue.uts'
-// #endif
diff --git a/uni_modules/lime-shared/getCurrentPage/uvue.uts b/uni_modules/lime-shared/getCurrentPage/uvue.uts
deleted file mode 100644
index 9e96d2b..0000000
--- a/uni_modules/lime-shared/getCurrentPage/uvue.uts
+++ /dev/null
@@ -1,5 +0,0 @@
-// @ts-nocheck
-export const getCurrentPage = ():Page => {
- const pages = getCurrentPages();
- return pages[pages.length - 1]
-};
\ No newline at end of file
diff --git a/uni_modules/lime-shared/getCurrentPage/vue.ts b/uni_modules/lime-shared/getCurrentPage/vue.ts
deleted file mode 100644
index 79ecac8..0000000
--- a/uni_modules/lime-shared/getCurrentPage/vue.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// @ts-nocheck
-/** 获取当前页 */
-export const getCurrentPage = () => {
- const pages = getCurrentPages();
- return pages[pages.length - 1] //as T & WechatMiniprogram.Page.TrivialInstance;
-};
\ No newline at end of file
diff --git a/uni_modules/lime-shared/getLocalFilePath/index.ts b/uni_modules/lime-shared/getLocalFilePath/index.ts
deleted file mode 100644
index 42eb80c..0000000
--- a/uni_modules/lime-shared/getLocalFilePath/index.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-// @ts-nocheck
-// #ifdef APP-NVUE || APP-VUE
-export const getLocalFilePath = (path : string) => {
- if (typeof plus == 'undefined') return path
- if (/^(_www|_doc|_documents|_downloads|file:\/\/|\/storage\/emulated\/0\/)/.test(path)) return path
- if (/^\//.test(path)) {
- const localFilePath = plus.io.convertAbsoluteFileSystem(path)
- if (localFilePath !== path) {
- return localFilePath
- } else {
- path = path.slice(1)
- }
- }
- return '_www/' + path
-}
-// #endif
-
-
-// #ifdef APP-ANDROID || APP-IOS
-export { getResourcePath as getLocalFilePath } from '@/uni_modules/lime-file-utils'
-// export const getLocalFilePath = (path : string) : string => {
-// let uri = path
-// if (uri.startsWith("http") || uri.startsWith("