From bf8dc07cb7f64f577b994378f25b6861a657bd06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=85=AE?= <3208053815@qq.com> Date: Thu, 21 Mar 2024 13:53:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .buildpath | 5 + .gitignore | 1 + .hbuilderx/launch.json | 20 + .idea/.gitignore | 5 + .idea/UniappTool.xml | 12 + .idea/dengLan_home_mpWeixin.iml | 12 + .idea/modules.xml | 8 + .project | 22 + .settings/org.eclipse.php.core.prefs | 3 + App.vue | 381 ++++ README.md | 0 agent/pages/account.vue | 135 ++ agent/pages/apply.vue | 315 ++++ agent/pages/income/commission.vue | 576 ++++++ agent/pages/index.vue | 653 +++++++ agent/pages/order/change.vue | 508 +++++ agent/pages/order/detail.vue | 549 ++++++ agent/pages/order/list.vue | 401 ++++ agent/pages/poster/channel.vue | 237 +++ agent/pages/poster/salesman.vue | 218 +++ agent/pages/refund/detail.vue | 415 +++++ agent/pages/refund/list.vue | 330 ++++ agent/pages/technician/apply.vue | 775 ++++++++ agent/pages/technician/list.vue | 284 +++ agent/pages/technician/user.vue | 167 ++ androidPrivacy.json | 38 + api/index.js | 9 + api/modules/admin.js | 57 + api/modules/agent.js | 109 ++ api/modules/base.js | 65 + api/modules/channel.js | 37 + api/modules/dynamic.js | 82 + api/modules/mine.js | 177 ++ api/modules/order.js | 133 ++ api/modules/salesman.js | 37 + api/modules/service.js | 65 + api/modules/shopstore.js | 21 + api/modules/technician.js | 185 ++ api/modules/user.js | 33 + components/abnor.vue | 322 ++++ components/auth.vue | 542 ++++++ components/banner.vue | 285 +++ components/column.vue | 337 ++++ components/common-popup.vue | 161 ++ components/fix-bottom-button.vue | 98 + components/fixed.vue | 86 + components/jyf-Parser/handler.sjs | 62 + components/jyf-Parser/handler.wxs | 58 + components/jyf-Parser/index.vue | 617 ++++++ components/jyf-Parser/libs/CssHandler.js | 149 ++ components/jyf-Parser/libs/MpHtmlParser.js | 441 +++++ components/jyf-Parser/libs/config.js | 252 +++ components/jyf-Parser/trees.vue | 407 ++++ components/load-more.vue | 131 ++ components/login-info.vue | 112 ++ components/mask.vue | 121 ++ components/min-countdown.vue | 176 ++ components/search.vue | 207 ++ components/service-list-item.vue | 180 ++ components/shop-banner.vue | 233 +++ components/tab.vue | 210 +++ components/tabbar.vue | 117 ++ components/technician-list-item.vue | 306 +++ components/technician-list-popup.vue | 331 ++++ components/time-picker-popup/README.md | 87 + .../time-picker-popup/time-picker-popup.vue | 163 ++ components/time-picker-popup/utils.js | 69 + components/timeline.vue | 210 +++ components/uni-nav-bar.vue | 247 +++ components/uni-popup.vue | 209 +++ components/uni-segmented-control.vue | 160 ++ components/uni-status-bar.vue | 29 + components/upload.vue | 353 ++++ components/w-picker/areadata/areadata.js | 1 + components/w-picker/date-picker.vue | 742 ++++++++ components/w-picker/half-picker.vue | 345 ++++ components/w-picker/linkage-picker.vue | 274 +++ components/w-picker/range-picker.vue | 344 ++++ components/w-picker/region-picker.vue | 183 ++ components/w-picker/selector-picker.vue | 129 ++ components/w-picker/shortterm-picker.vue | 250 +++ components/w-picker/time-picker.vue | 218 +++ components/w-picker/w-picker.css | 26 + components/w-picker/w-picker.vue | 340 ++++ components/wfalls-flow.vue | 183 ++ components/xt-verify-code.vue | 280 +++ dynamic/pages/detail.vue | 1384 ++++++++++++++ dynamic/pages/follow.vue | 206 ++ dynamic/pages/technician/comment.vue | 194 ++ dynamic/pages/technician/detail.vue | 1342 +++++++++++++ dynamic/pages/technician/edit.vue | 273 +++ dynamic/pages/technician/follow.vue | 130 ++ dynamic/pages/technician/list.vue | 341 ++++ dynamic/pages/technician/thumbs.vue | 126 ++ jweixin-module/README.md | 30 + jweixin-module/lib/index.js | 1 + jweixin-module/package.json | 53 + locale/index.js | 13 + locale/lang/en-US.js | 5 + locale/lang/zh-CN.js | 12 + main.js | 59 + manifest.json | 231 +++ package (2).json | 17 + package-lock.json | 16 + package.json | 6 + pages.json | 807 ++++++++ pages/dynamic.vue | 396 ++++ pages/login.vue | 326 ++++ pages/map.vue | 866 +++++++++ pages/mine.vue | 1530 +++++++++++++++ pages/order.vue | 417 +++++ pages/service.vue | 793 ++++++++ pages/shopstore.vue | 382 ++++ pages/technician.vue | 587 ++++++ pages/test.vue | 82 + shopstore/pages/detail.vue | 409 ++++ shopstore/pages/service.vue | 107 ++ shopstore/pages/store-info.vue | 130 ++ shopstore/pages/technician.vue | 303 +++ siteinfo.js | 8 + static/coupon/btn.png | Bin 0 -> 37874 bytes static/coupon/coupon.png | Bin 0 -> 2720 bytes static/coupon/line.png | Bin 0 -> 110 bytes static/coupon/menu.png | Bin 0 -> 7396 bytes static/coupon/picture.png | Bin 0 -> 6917 bytes static/coupon/wechat-moments.png | Bin 0 -> 10129 bytes static/coupon/wechat.png | Bin 0 -> 6565 bytes static/img/axg.png | Bin 0 -> 1066 bytes static/img/icon_project.png | Bin 0 -> 436 bytes static/img/icon_technician.png | Bin 0 -> 533 bytes static/img/qs_dingdan.png | Bin 0 -> 41451 bytes static/logo-120.png | Bin 0 -> 7679 bytes static/logo-180.png | Bin 0 -> 14382 bytes static/logo-40.png | Bin 0 -> 2208 bytes static/logo-58.png | Bin 0 -> 3679 bytes static/logo-60.png | Bin 0 -> 3581 bytes static/logo-80.png | Bin 0 -> 4965 bytes static/logo-87.png | Bin 0 -> 4990 bytes static/logo.png | Bin 0 -> 4186 bytes static/mine/Add.png | Bin 0 -> 15642 bytes static/mine/Wallet.png | Bin 0 -> 11071 bytes static/mine/auth.png | Bin 0 -> 14014 bytes static/mine/balance.png | Bin 0 -> 100626 bytes static/mine/bg.jpg | Bin 0 -> 32789 bytes static/mine/cfmx.png | Bin 0 -> 1936 bytes static/mine/cftx.png | Bin 0 -> 1546 bytes static/mine/coupon.png | Bin 0 -> 24720 bytes static/mine/default_user.png | Bin 0 -> 6878 bytes static/mine/dengji.png | Bin 0 -> 3948 bytes static/mine/dizhiguanli.png | Bin 0 -> 5204 bytes static/mine/dongtai.png | Bin 0 -> 2970 bytes static/mine/fencheng.png | Bin 0 -> 4231 bytes static/mine/fenxiao.png | Bin 0 -> 2785 bytes static/mine/fx.png | Bin 0 -> 4492 bytes static/mine/guanli.png | Bin 0 -> 4612 bytes static/mine/guanzhu.png | Bin 0 -> 2682 bytes static/mine/hetong.png | Bin 0 -> 1927 bytes static/mine/jishizhaopin.png | Bin 0 -> 5217 bytes static/mine/lianxikefu.png | Bin 0 -> 6595 bytes static/mine/pingbi.png | Bin 0 -> 5576 bytes static/mine/pingjia.png | Bin 0 -> 3019 bytes static/mine/qiehuan.png | Bin 0 -> 5564 bytes static/mine/qudao.png | Bin 0 -> 4406 bytes static/mine/setTime2.png | Bin 0 -> 3514 bytes static/mine/shens.png | Bin 0 -> 3640 bytes static/mine/shop.png | Bin 0 -> 3187 bytes static/mine/tel.png | Bin 0 -> 5514 bytes static/mine/tuikuan.png | Bin 0 -> 5472 bytes static/mine/vip.png | Bin 0 -> 32483 bytes static/mine/yewu.png | Bin 0 -> 2426 bytes static/mine/yijianfank.png | Bin 0 -> 4166 bytes static/mine/youhui.png | Bin 0 -> 2083 bytes static/tab/dingdan_nor.png | Bin 0 -> 1032 bytes static/tab/dingdan_sel.png | Bin 0 -> 1316 bytes static/tab/find_nor.png | Bin 0 -> 2642 bytes static/tab/find_sel.png | Bin 0 -> 2275 bytes static/tab/jishi_nor.png | Bin 0 -> 2723 bytes static/tab/jishi_sel.png | Bin 0 -> 2580 bytes static/tab/shouye_nor.png | Bin 0 -> 1539 bytes static/tab/shouye_sel.png | Bin 0 -> 1753 bytes static/tab/store_nor.png | Bin 0 -> 1260 bytes static/tab/store_sel.png | Bin 0 -> 1926 bytes static/tab/wode_nor.png | Bin 0 -> 1259 bytes static/tab/wode_sel.png | Bin 0 -> 1803 bytes store/index.js | 10 + store/modules/config.js | 235 +++ store/modules/dynamic.js | 83 + store/modules/map.js | 153 ++ store/modules/order.js | 99 + store/modules/service.js | 128 ++ store/modules/shopstore.js | 51 + store/modules/technician.js | 100 + store/modules/user.js | 208 +++ styles/1px.wxss | 102 + styles/avatar.wxss | 54 + styles/base.wxss | 187 ++ styles/button.wxss | 104 ++ styles/icon.wxss | 1657 +++++++++++++++++ styles/index.wxss | 9 + styles/layout.wxss | 60 + styles/navbar.wxss | 100 + styles/pages.wxss | 440 +++++ styles/popup.wxss | 72 + technician/pages/apply.vue | 704 +++++++ technician/pages/bad-comments/box.vue | 159 ++ technician/pages/bad-comments/choice.vue | 232 +++ technician/pages/bad-comments/list.vue | 147 ++ technician/pages/bad-comments/success.vue | 65 + technician/pages/car-fare.vue | 220 +++ technician/pages/edit.vue | 700 +++++++ technician/pages/income/cash-integral.vue | 532 ++++++ technician/pages/income/commission-detail.vue | 289 +++ technician/pages/income/commission-list.vue | 554 ++++++ technician/pages/income/index.vue | 149 ++ technician/pages/level.vue | 443 +++++ technician/pages/order/detail.vue | 1137 +++++++++++ technician/pages/order/label.vue | 188 ++ technician/pages/order/list.vue | 914 +++++++++ technician/pages/order/recorder.vue | 184 ++ technician/pages/shield.vue | 162 ++ technician/pages/shop/detail.vue | 239 +++ technician/pages/shop/list.vue | 357 ++++ technician/pages/time-manage.vue | 294 +++ technician/pages/time-set.vue | 437 +++++ uni.scss | 103 + uni_modules/lime-painter/changelog.md | 153 ++ .../components/common/relation.js | 147 ++ .../l-painter-image/l-painter-image.vue | 27 + .../l-painter-qrcode/l-painter-qrcode.vue | 26 + .../l-painter-text/l-painter-text.vue | 28 + .../l-painter-view/l-painter-view.vue | 29 + .../components/l-painter/l-painter.vue | 409 ++++ .../lime-painter/components/l-painter/nvue.js | 218 +++ .../components/l-painter/painter.js | 1 + .../components/l-painter/props.js | 50 + .../components/l-painter/utils.js | 469 +++++ .../components/lime-painter/index.vue | 2 + uni_modules/lime-painter/package.json | 96 + uni_modules/lime-painter/readme.md | 910 +++++++++ uni_modules/lime-painter/static/index.html | 119 ++ uni_modules/lime-painter/static/painter.js | 1 + .../lime-painter/static/uni.webview.1.5.3.js | 1 + uni_modules/mumu-recorder/changelog.md | 4 + .../mumu-recorder/mumu-recorder.vue | 120 ++ uni_modules/mumu-recorder/package.json | 87 + uni_modules/mumu-recorder/readme.md | 117 ++ uni_modules/uni-popup/changelog.md | 78 + .../components/uni-popup-dialog/keypress.js | 45 + .../uni-popup-dialog/uni-popup-dialog.vue | 294 +++ .../uni-popup-message/uni-popup-message.vue | 143 ++ .../uni-popup-share/uni-popup-share.vue | 187 ++ .../components/uni-popup/i18n/en.json | 7 + .../components/uni-popup/i18n/index.js | 8 + .../components/uni-popup/i18n/zh-Hans.json | 7 + .../components/uni-popup/i18n/zh-Hant.json | 7 + .../components/uni-popup/keypress.js | 45 + .../uni-popup/components/uni-popup/popup.js | 26 + .../components/uni-popup/uni-popup.uvue | 90 + .../components/uni-popup/uni-popup.vue | 479 +++++ uni_modules/uni-popup/package.json | 87 + uni_modules/uni-popup/readme.md | 17 + uni_modules/uni-scss/changelog.md | 8 + uni_modules/uni-scss/index.scss | 1 + uni_modules/uni-scss/package.json | 82 + uni_modules/uni-scss/readme.md | 4 + uni_modules/uni-scss/styles/index.scss | 7 + .../uni-scss/styles/setting/_border.scss | 3 + .../uni-scss/styles/setting/_color.scss | 66 + .../uni-scss/styles/setting/_radius.scss | 55 + .../uni-scss/styles/setting/_space.scss | 56 + .../uni-scss/styles/setting/_styles.scss | 167 ++ .../uni-scss/styles/setting/_text.scss | 24 + .../uni-scss/styles/setting/_variables.scss | 146 ++ .../uni-scss/styles/tools/functions.scss | 19 + uni_modules/uni-scss/theme.scss | 31 + uni_modules/uni-scss/variables.scss | 62 + uni_modules/uni-transition/changelog.md | 22 + .../uni-transition/createAnimation.js | 131 ++ .../uni-transition/uni-transition.vue | 286 +++ uni_modules/uni-transition/package.json | 84 + uni_modules/uni-transition/readme.md | 11 + uni_modules/v-sign/changelog.md | 48 + .../v-sign-action/v-sign-action.vue | 168 ++ .../components/v-sign-color/v-sign-color.vue | 212 +++ .../components/v-sign-pen/v-sign-pen.vue | 215 +++ .../v-sign/components/v-sign/v-sign.vue | 326 ++++ uni_modules/v-sign/package.json | 84 + uni_modules/v-sign/readme.md | 245 +++ uni_modules/v-sign/static/image/clear.png | Bin 0 -> 6420 bytes uni_modules/v-sign/static/image/clear.svg | 1 + uni_modules/v-sign/static/image/next.png | Bin 0 -> 7319 bytes uni_modules/v-sign/static/image/next.svg | 1 + uni_modules/v-sign/static/image/prev.png | Bin 0 -> 7356 bytes uni_modules/v-sign/static/image/prev.svg | 1 + uni_modules/v-sign/static/image/save.png | Bin 0 -> 3573 bytes uni_modules/v-sign/static/image/save.svg | 1 + uni_modules/v-sign/utils/index.js | 15 + user/pages/address/edit.vue | 305 +++ user/pages/address/list.vue | 252 +++ user/pages/alipay-account.vue | 188 ++ user/pages/alipay-result.vue | 221 +++ user/pages/app-download.vue | 131 ++ user/pages/apply-result.vue | 227 +++ user/pages/article.vue | 219 +++ user/pages/bell/list.vue | 610 ++++++ user/pages/bell/order.vue | 461 +++++ user/pages/cash-out.vue | 301 +++ user/pages/channel/apply.vue | 281 +++ user/pages/channel/income.vue | 448 +++++ user/pages/channel/poster.vue | 148 ++ user/pages/choose-technician.vue | 506 +++++ user/pages/choose-time.vue | 159 ++ user/pages/collect.vue | 228 +++ user/pages/comment.vue | 142 ++ user/pages/common/video.vue | 79 + user/pages/common/web.vue | 43 + user/pages/coupon/list.vue | 250 +++ user/pages/coupon/poster.vue | 230 +++ user/pages/coupon/share.vue | 428 +++++ user/pages/coupon/use.vue | 187 ++ user/pages/detail.vue | 308 +++ user/pages/distribution/agent.vue | 178 ++ user/pages/distribution/apply.vue | 170 ++ user/pages/distribution/bind-technician.vue | 255 +++ user/pages/distribution/income.vue | 349 ++++ user/pages/distribution/poster.vue | 191 ++ user/pages/distribution/record.vue | 242 +++ user/pages/distribution/share-set.vue | 108 ++ user/pages/distribution/team.vue | 164 ++ user/pages/feedback/box.vue | 209 +++ user/pages/feedback/detail.vue | 120 ++ user/pages/feedback/list.vue | 178 ++ user/pages/feedback/success.vue | 65 + user/pages/gzh.vue | 124 ++ user/pages/information.vue | 70 + user/pages/logout.vue | 99 + user/pages/merchant-info.vue | 109 ++ user/pages/order.vue | 954 ++++++++++ user/pages/order/bell-list.vue | 369 ++++ user/pages/order/detail.vue | 722 +++++++ user/pages/order/evaluate.vue | 211 +++ user/pages/order/refund.vue | 437 +++++ user/pages/order/sign.vue | 117 ++ user/pages/phone-code.vue | 190 ++ user/pages/phone.vue | 122 ++ user/pages/protocol.vue | 71 + user/pages/refund/detail.vue | 258 +++ user/pages/refund/list.vue | 237 +++ user/pages/salesman/apply.vue | 265 +++ user/pages/salesman/income.vue | 215 +++ user/pages/salesman/record.vue | 343 ++++ user/pages/service/cate.vue | 97 + user/pages/service/list.vue | 121 ++ user/pages/setting.vue | 358 ++++ user/pages/shield.vue | 178 ++ user/pages/stored/choose-technician.vue | 243 +++ user/pages/stored/commission.vue | 149 ++ user/pages/stored/consume.vue | 303 +++ user/pages/stored/list.vue | 567 ++++++ user/pages/stored/poster.vue | 232 +++ user/pages/stored/record.vue | 302 +++ user/pages/technician-info.vue | 480 +++++ utils/bmap-wx.min.js | 1 + utils/error.js | 46 + utils/index.js | 718 +++++++ utils/jweixin.js | 186 ++ utils/req.js | 569 ++++++ utils/validate.js | 206 ++ utils/wx.js | 776 ++++++++ 369 files changed, 67648 insertions(+) create mode 100644 .buildpath create mode 100644 .gitignore create mode 100644 .hbuilderx/launch.json create mode 100644 .idea/.gitignore create mode 100644 .idea/UniappTool.xml create mode 100644 .idea/dengLan_home_mpWeixin.iml create mode 100644 .idea/modules.xml create mode 100644 .project create mode 100644 .settings/org.eclipse.php.core.prefs create mode 100644 App.vue create mode 100644 README.md create mode 100644 agent/pages/account.vue create mode 100644 agent/pages/apply.vue create mode 100644 agent/pages/income/commission.vue create mode 100644 agent/pages/index.vue create mode 100644 agent/pages/order/change.vue create mode 100644 agent/pages/order/detail.vue create mode 100644 agent/pages/order/list.vue create mode 100644 agent/pages/poster/channel.vue create mode 100644 agent/pages/poster/salesman.vue create mode 100644 agent/pages/refund/detail.vue create mode 100644 agent/pages/refund/list.vue create mode 100644 agent/pages/technician/apply.vue create mode 100644 agent/pages/technician/list.vue create mode 100644 agent/pages/technician/user.vue create mode 100644 androidPrivacy.json create mode 100644 api/index.js create mode 100644 api/modules/admin.js create mode 100644 api/modules/agent.js create mode 100644 api/modules/base.js create mode 100644 api/modules/channel.js create mode 100644 api/modules/dynamic.js create mode 100644 api/modules/mine.js create mode 100644 api/modules/order.js create mode 100644 api/modules/salesman.js create mode 100644 api/modules/service.js create mode 100644 api/modules/shopstore.js create mode 100644 api/modules/technician.js create mode 100644 api/modules/user.js create mode 100644 components/abnor.vue create mode 100644 components/auth.vue create mode 100644 components/banner.vue create mode 100644 components/column.vue create mode 100644 components/common-popup.vue create mode 100644 components/fix-bottom-button.vue create mode 100644 components/fixed.vue create mode 100644 components/jyf-Parser/handler.sjs create mode 100644 components/jyf-Parser/handler.wxs create mode 100644 components/jyf-Parser/index.vue create mode 100644 components/jyf-Parser/libs/CssHandler.js create mode 100644 components/jyf-Parser/libs/MpHtmlParser.js create mode 100644 components/jyf-Parser/libs/config.js create mode 100644 components/jyf-Parser/trees.vue create mode 100644 components/load-more.vue create mode 100644 components/login-info.vue create mode 100644 components/mask.vue create mode 100644 components/min-countdown.vue create mode 100644 components/search.vue create mode 100644 components/service-list-item.vue create mode 100644 components/shop-banner.vue create mode 100644 components/tab.vue create mode 100644 components/tabbar.vue create mode 100644 components/technician-list-item.vue create mode 100644 components/technician-list-popup.vue create mode 100644 components/time-picker-popup/README.md create mode 100644 components/time-picker-popup/time-picker-popup.vue create mode 100644 components/time-picker-popup/utils.js create mode 100644 components/timeline.vue create mode 100644 components/uni-nav-bar.vue create mode 100644 components/uni-popup.vue create mode 100644 components/uni-segmented-control.vue create mode 100644 components/uni-status-bar.vue create mode 100644 components/upload.vue create mode 100644 components/w-picker/areadata/areadata.js create mode 100644 components/w-picker/date-picker.vue create mode 100644 components/w-picker/half-picker.vue create mode 100644 components/w-picker/linkage-picker.vue create mode 100644 components/w-picker/range-picker.vue create mode 100644 components/w-picker/region-picker.vue create mode 100644 components/w-picker/selector-picker.vue create mode 100644 components/w-picker/shortterm-picker.vue create mode 100644 components/w-picker/time-picker.vue create mode 100644 components/w-picker/w-picker.css create mode 100644 components/w-picker/w-picker.vue create mode 100644 components/wfalls-flow.vue create mode 100644 components/xt-verify-code.vue create mode 100644 dynamic/pages/detail.vue create mode 100644 dynamic/pages/follow.vue create mode 100644 dynamic/pages/technician/comment.vue create mode 100644 dynamic/pages/technician/detail.vue create mode 100644 dynamic/pages/technician/edit.vue create mode 100644 dynamic/pages/technician/follow.vue create mode 100644 dynamic/pages/technician/list.vue create mode 100644 dynamic/pages/technician/thumbs.vue create mode 100644 jweixin-module/README.md create mode 100644 jweixin-module/lib/index.js create mode 100644 jweixin-module/package.json create mode 100644 locale/index.js create mode 100644 locale/lang/en-US.js create mode 100644 locale/lang/zh-CN.js create mode 100644 main.js create mode 100644 manifest.json create mode 100644 package (2).json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/dynamic.vue create mode 100644 pages/login.vue create mode 100644 pages/map.vue create mode 100644 pages/mine.vue create mode 100644 pages/order.vue create mode 100644 pages/service.vue create mode 100644 pages/shopstore.vue create mode 100644 pages/technician.vue create mode 100644 pages/test.vue create mode 100644 shopstore/pages/detail.vue create mode 100644 shopstore/pages/service.vue create mode 100644 shopstore/pages/store-info.vue create mode 100644 shopstore/pages/technician.vue create mode 100644 siteinfo.js create mode 100644 static/coupon/btn.png create mode 100644 static/coupon/coupon.png create mode 100644 static/coupon/line.png create mode 100644 static/coupon/menu.png create mode 100644 static/coupon/picture.png create mode 100644 static/coupon/wechat-moments.png create mode 100644 static/coupon/wechat.png create mode 100644 static/img/axg.png create mode 100644 static/img/icon_project.png create mode 100644 static/img/icon_technician.png create mode 100644 static/img/qs_dingdan.png create mode 100644 static/logo-120.png create mode 100644 static/logo-180.png create mode 100644 static/logo-40.png create mode 100644 static/logo-58.png create mode 100644 static/logo-60.png create mode 100644 static/logo-80.png create mode 100644 static/logo-87.png create mode 100644 static/logo.png create mode 100644 static/mine/Add.png create mode 100644 static/mine/Wallet.png create mode 100644 static/mine/auth.png create mode 100644 static/mine/balance.png create mode 100644 static/mine/bg.jpg create mode 100644 static/mine/cfmx.png create mode 100644 static/mine/cftx.png create mode 100644 static/mine/coupon.png create mode 100644 static/mine/default_user.png create mode 100644 static/mine/dengji.png create mode 100644 static/mine/dizhiguanli.png create mode 100644 static/mine/dongtai.png create mode 100644 static/mine/fencheng.png create mode 100644 static/mine/fenxiao.png create mode 100644 static/mine/fx.png create mode 100644 static/mine/guanli.png create mode 100644 static/mine/guanzhu.png create mode 100644 static/mine/hetong.png create mode 100644 static/mine/jishizhaopin.png create mode 100644 static/mine/lianxikefu.png create mode 100644 static/mine/pingbi.png create mode 100644 static/mine/pingjia.png create mode 100644 static/mine/qiehuan.png create mode 100644 static/mine/qudao.png create mode 100644 static/mine/setTime2.png create mode 100644 static/mine/shens.png create mode 100644 static/mine/shop.png create mode 100644 static/mine/tel.png create mode 100644 static/mine/tuikuan.png create mode 100644 static/mine/vip.png create mode 100644 static/mine/yewu.png create mode 100644 static/mine/yijianfank.png create mode 100644 static/mine/youhui.png create mode 100644 static/tab/dingdan_nor.png create mode 100644 static/tab/dingdan_sel.png create mode 100644 static/tab/find_nor.png create mode 100644 static/tab/find_sel.png create mode 100644 static/tab/jishi_nor.png create mode 100644 static/tab/jishi_sel.png create mode 100644 static/tab/shouye_nor.png create mode 100644 static/tab/shouye_sel.png create mode 100644 static/tab/store_nor.png create mode 100644 static/tab/store_sel.png create mode 100644 static/tab/wode_nor.png create mode 100644 static/tab/wode_sel.png create mode 100644 store/index.js create mode 100644 store/modules/config.js create mode 100644 store/modules/dynamic.js create mode 100644 store/modules/map.js create mode 100644 store/modules/order.js create mode 100644 store/modules/service.js create mode 100644 store/modules/shopstore.js create mode 100644 store/modules/technician.js create mode 100644 store/modules/user.js create mode 100644 styles/1px.wxss create mode 100644 styles/avatar.wxss create mode 100644 styles/base.wxss create mode 100644 styles/button.wxss create mode 100644 styles/icon.wxss create mode 100644 styles/index.wxss create mode 100644 styles/layout.wxss create mode 100644 styles/navbar.wxss create mode 100644 styles/pages.wxss create mode 100644 styles/popup.wxss create mode 100644 technician/pages/apply.vue create mode 100644 technician/pages/bad-comments/box.vue create mode 100644 technician/pages/bad-comments/choice.vue create mode 100644 technician/pages/bad-comments/list.vue create mode 100644 technician/pages/bad-comments/success.vue create mode 100644 technician/pages/car-fare.vue create mode 100644 technician/pages/edit.vue create mode 100644 technician/pages/income/cash-integral.vue create mode 100644 technician/pages/income/commission-detail.vue create mode 100644 technician/pages/income/commission-list.vue create mode 100644 technician/pages/income/index.vue create mode 100644 technician/pages/level.vue create mode 100644 technician/pages/order/detail.vue create mode 100644 technician/pages/order/label.vue create mode 100644 technician/pages/order/list.vue create mode 100644 technician/pages/order/recorder.vue create mode 100644 technician/pages/shield.vue create mode 100644 technician/pages/shop/detail.vue create mode 100644 technician/pages/shop/list.vue create mode 100644 technician/pages/time-manage.vue create mode 100644 technician/pages/time-set.vue create mode 100644 uni.scss create mode 100644 uni_modules/lime-painter/changelog.md create mode 100644 uni_modules/lime-painter/components/common/relation.js create mode 100644 uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue create mode 100644 uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue create mode 100644 uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue create mode 100644 uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue create mode 100644 uni_modules/lime-painter/components/l-painter/l-painter.vue create mode 100644 uni_modules/lime-painter/components/l-painter/nvue.js create mode 100644 uni_modules/lime-painter/components/l-painter/painter.js create mode 100644 uni_modules/lime-painter/components/l-painter/props.js create mode 100644 uni_modules/lime-painter/components/l-painter/utils.js create mode 100644 uni_modules/lime-painter/components/lime-painter/index.vue create mode 100644 uni_modules/lime-painter/package.json create mode 100644 uni_modules/lime-painter/readme.md create mode 100644 uni_modules/lime-painter/static/index.html create mode 100644 uni_modules/lime-painter/static/painter.js create mode 100644 uni_modules/lime-painter/static/uni.webview.1.5.3.js create mode 100644 uni_modules/mumu-recorder/changelog.md create mode 100644 uni_modules/mumu-recorder/components/mumu-recorder/mumu-recorder.vue create mode 100644 uni_modules/mumu-recorder/package.json create mode 100644 uni_modules/mumu-recorder/readme.md create mode 100644 uni_modules/uni-popup/changelog.md create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/en.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/index.js create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json create mode 100644 uni_modules/uni-popup/components/uni-popup/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.uvue create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.vue create mode 100644 uni_modules/uni-popup/package.json create mode 100644 uni_modules/uni-popup/readme.md create mode 100644 uni_modules/uni-scss/changelog.md create mode 100644 uni_modules/uni-scss/index.scss create mode 100644 uni_modules/uni-scss/package.json create mode 100644 uni_modules/uni-scss/readme.md create mode 100644 uni_modules/uni-scss/styles/index.scss create mode 100644 uni_modules/uni-scss/styles/setting/_border.scss create mode 100644 uni_modules/uni-scss/styles/setting/_color.scss create mode 100644 uni_modules/uni-scss/styles/setting/_radius.scss create mode 100644 uni_modules/uni-scss/styles/setting/_space.scss create mode 100644 uni_modules/uni-scss/styles/setting/_styles.scss create mode 100644 uni_modules/uni-scss/styles/setting/_text.scss create mode 100644 uni_modules/uni-scss/styles/setting/_variables.scss create mode 100644 uni_modules/uni-scss/styles/tools/functions.scss create mode 100644 uni_modules/uni-scss/theme.scss create mode 100644 uni_modules/uni-scss/variables.scss create mode 100644 uni_modules/uni-transition/changelog.md create mode 100644 uni_modules/uni-transition/components/uni-transition/createAnimation.js create mode 100644 uni_modules/uni-transition/components/uni-transition/uni-transition.vue create mode 100644 uni_modules/uni-transition/package.json create mode 100644 uni_modules/uni-transition/readme.md create mode 100644 uni_modules/v-sign/changelog.md create mode 100644 uni_modules/v-sign/components/v-sign-action/v-sign-action.vue create mode 100644 uni_modules/v-sign/components/v-sign-color/v-sign-color.vue create mode 100644 uni_modules/v-sign/components/v-sign-pen/v-sign-pen.vue create mode 100644 uni_modules/v-sign/components/v-sign/v-sign.vue create mode 100644 uni_modules/v-sign/package.json create mode 100644 uni_modules/v-sign/readme.md create mode 100644 uni_modules/v-sign/static/image/clear.png create mode 100644 uni_modules/v-sign/static/image/clear.svg create mode 100644 uni_modules/v-sign/static/image/next.png create mode 100644 uni_modules/v-sign/static/image/next.svg create mode 100644 uni_modules/v-sign/static/image/prev.png create mode 100644 uni_modules/v-sign/static/image/prev.svg create mode 100644 uni_modules/v-sign/static/image/save.png create mode 100644 uni_modules/v-sign/static/image/save.svg create mode 100644 uni_modules/v-sign/utils/index.js create mode 100644 user/pages/address/edit.vue create mode 100644 user/pages/address/list.vue create mode 100644 user/pages/alipay-account.vue create mode 100644 user/pages/alipay-result.vue create mode 100644 user/pages/app-download.vue create mode 100644 user/pages/apply-result.vue create mode 100644 user/pages/article.vue create mode 100644 user/pages/bell/list.vue create mode 100644 user/pages/bell/order.vue create mode 100644 user/pages/cash-out.vue create mode 100644 user/pages/channel/apply.vue create mode 100644 user/pages/channel/income.vue create mode 100644 user/pages/channel/poster.vue create mode 100644 user/pages/choose-technician.vue create mode 100644 user/pages/choose-time.vue create mode 100644 user/pages/collect.vue create mode 100644 user/pages/comment.vue create mode 100644 user/pages/common/video.vue create mode 100644 user/pages/common/web.vue create mode 100644 user/pages/coupon/list.vue create mode 100644 user/pages/coupon/poster.vue create mode 100644 user/pages/coupon/share.vue create mode 100644 user/pages/coupon/use.vue create mode 100644 user/pages/detail.vue create mode 100644 user/pages/distribution/agent.vue create mode 100644 user/pages/distribution/apply.vue create mode 100644 user/pages/distribution/bind-technician.vue create mode 100644 user/pages/distribution/income.vue create mode 100644 user/pages/distribution/poster.vue create mode 100644 user/pages/distribution/record.vue create mode 100644 user/pages/distribution/share-set.vue create mode 100644 user/pages/distribution/team.vue create mode 100644 user/pages/feedback/box.vue create mode 100644 user/pages/feedback/detail.vue create mode 100644 user/pages/feedback/list.vue create mode 100644 user/pages/feedback/success.vue create mode 100644 user/pages/gzh.vue create mode 100644 user/pages/information.vue create mode 100644 user/pages/logout.vue create mode 100644 user/pages/merchant-info.vue create mode 100644 user/pages/order.vue create mode 100644 user/pages/order/bell-list.vue create mode 100644 user/pages/order/detail.vue create mode 100644 user/pages/order/evaluate.vue create mode 100644 user/pages/order/refund.vue create mode 100644 user/pages/order/sign.vue create mode 100644 user/pages/phone-code.vue create mode 100644 user/pages/phone.vue create mode 100644 user/pages/protocol.vue create mode 100644 user/pages/refund/detail.vue create mode 100644 user/pages/refund/list.vue create mode 100644 user/pages/salesman/apply.vue create mode 100644 user/pages/salesman/income.vue create mode 100644 user/pages/salesman/record.vue create mode 100644 user/pages/service/cate.vue create mode 100644 user/pages/service/list.vue create mode 100644 user/pages/setting.vue create mode 100644 user/pages/shield.vue create mode 100644 user/pages/stored/choose-technician.vue create mode 100644 user/pages/stored/commission.vue create mode 100644 user/pages/stored/consume.vue create mode 100644 user/pages/stored/list.vue create mode 100644 user/pages/stored/poster.vue create mode 100644 user/pages/stored/record.vue create mode 100644 user/pages/technician-info.vue create mode 100644 utils/bmap-wx.min.js create mode 100644 utils/error.js create mode 100644 utils/index.js create mode 100644 utils/jweixin.js create mode 100644 utils/req.js create mode 100644 utils/validate.js create mode 100644 utils/wx.js diff --git a/.buildpath b/.buildpath new file mode 100644 index 0000000..8bcb4b5 --- /dev/null +++ b/.buildpath @@ -0,0 +1,5 @@ + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a503fa2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/unpackage/ diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..ee5be77 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,20 @@ +{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version": "0.0", + "configurations": [{ + "app-plus" : + { + "launchtype" : "local" + }, + "default" : + { + "launchtype" : "local" + }, + "mp-weixin" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..10b731c --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ diff --git a/.idea/UniappTool.xml b/.idea/UniappTool.xml new file mode 100644 index 0000000..8694db6 --- /dev/null +++ b/.idea/UniappTool.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/.idea/dengLan_home_mpWeixin.iml b/.idea/dengLan_home_mpWeixin.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/dengLan_home_mpWeixin.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6db107f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..3bf5aad --- /dev/null +++ b/.project @@ -0,0 +1,22 @@ + + + djh5 + + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.eclipse.dltk.core.scriptbuilder + + + + + + org.eclipse.php.core.PHPNature + + diff --git a/.settings/org.eclipse.php.core.prefs b/.settings/org.eclipse.php.core.prefs new file mode 100644 index 0000000..d8cdb4a --- /dev/null +++ b/.settings/org.eclipse.php.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +include_path=0;/djh5 +use_asp_tags_as_php=false diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..6ec7375 --- /dev/null +++ b/App.vue @@ -0,0 +1,381 @@ + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/agent/pages/account.vue b/agent/pages/account.vue new file mode 100644 index 0000000..753085c --- /dev/null +++ b/agent/pages/account.vue @@ -0,0 +1,135 @@ + + + + + + \ No newline at end of file diff --git a/agent/pages/apply.vue b/agent/pages/apply.vue new file mode 100644 index 0000000..868e0b5 --- /dev/null +++ b/agent/pages/apply.vue @@ -0,0 +1,315 @@ + + + + + + \ No newline at end of file diff --git a/agent/pages/income/commission.vue b/agent/pages/income/commission.vue new file mode 100644 index 0000000..8d2cc6c --- /dev/null +++ b/agent/pages/income/commission.vue @@ -0,0 +1,576 @@ + + + + + + \ No newline at end of file diff --git a/agent/pages/index.vue b/agent/pages/index.vue new file mode 100644 index 0000000..efc49af --- /dev/null +++ b/agent/pages/index.vue @@ -0,0 +1,653 @@ + + + + + + \ No newline at end of file diff --git a/agent/pages/order/change.vue b/agent/pages/order/change.vue new file mode 100644 index 0000000..d50ce8b --- /dev/null +++ b/agent/pages/order/change.vue @@ -0,0 +1,508 @@ + + + + + diff --git a/dynamic/pages/technician/follow.vue b/dynamic/pages/technician/follow.vue new file mode 100644 index 0000000..4557753 --- /dev/null +++ b/dynamic/pages/technician/follow.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/dynamic/pages/technician/list.vue b/dynamic/pages/technician/list.vue new file mode 100644 index 0000000..0832e84 --- /dev/null +++ b/dynamic/pages/technician/list.vue @@ -0,0 +1,341 @@ + + + + + diff --git a/dynamic/pages/technician/thumbs.vue b/dynamic/pages/technician/thumbs.vue new file mode 100644 index 0000000..56de56e --- /dev/null +++ b/dynamic/pages/technician/thumbs.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/jweixin-module/README.md b/jweixin-module/README.md new file mode 100644 index 0000000..7c91d7b --- /dev/null +++ b/jweixin-module/README.md @@ -0,0 +1,30 @@ +# jweixin-module + +微信JS-SDK + +## 安装 + +### NPM + +```shell +npm install jweixin-module --save +``` + +### UMD + +```http +https://unpkg.com/jweixin-module/out/index.js +``` + +## 使用 + +```js +var jweixin = require('jweixin-module') +jweixin.ready(function(){ + // TODO +}); +``` + +## 完整API + +>[微信JS-SDK说明文档](https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115) diff --git a/jweixin-module/lib/index.js b/jweixin-module/lib/index.js new file mode 100644 index 0000000..ae4baaf --- /dev/null +++ b/jweixin-module/lib/index.js @@ -0,0 +1 @@ +!function(e,n){"function"==typeof define&&(define.amd||define.cmd)?define(function(){return n(e)}):n(e,!0)}(window,function(o,e){if(!o.jWeixin){var n,c={config:"preVerifyJSAPI",onMenuShareTimeline:"menu:share:timeline",onMenuShareAppMessage:"menu:share:appmessage",onMenuShareQQ:"menu:share:qq",onMenuShareWeibo:"menu:share:weiboApp",onMenuShareQZone:"menu:share:QZone",previewImage:"imagePreview",getLocation:"geoLocation",openProductSpecificView:"openProductViewWithPid",addCard:"batchAddCard",openCard:"batchViewCard",chooseWXPay:"getBrandWCPayRequest",openEnterpriseRedPacket:"getRecevieBizHongBaoRequest",startSearchBeacons:"startMonitoringBeacons",stopSearchBeacons:"stopMonitoringBeacons",onSearchBeacons:"onBeaconsInRange",consumeAndShareCard:"consumedShareCard",openAddress:"editAddress"},a=function(){var e={};for(var n in c)e[c[n]]=n;return e}(),i=o.document,t=i.title,r=navigator.userAgent.toLowerCase(),s=navigator.platform.toLowerCase(),d=!(!s.match("mac")&&!s.match("win")),u=-1!=r.indexOf("wxdebugger"),l=-1!=r.indexOf("micromessenger"),p=-1!=r.indexOf("android"),f=-1!=r.indexOf("iphone")||-1!=r.indexOf("ipad"),m=(n=r.match(/micromessenger\/(\d+\.\d+\.\d+)/)||r.match(/micromessenger\/(\d+\.\d+)/))?n[1]:"",g={initStartTime:L(),initEndTime:0,preVerifyStartTime:0,preVerifyEndTime:0},h={version:1,appId:"",initTime:0,preVerifyTime:0,networkType:"",isPreVerifyOk:1,systemType:f?1:p?2:-1,clientVersion:m,url:encodeURIComponent(location.href)},v={},S={_completes:[]},y={state:0,data:{}};O(function(){g.initEndTime=L()});var I=!1,_=[],w={config:function(e){B("config",v=e);var t=!1!==v.check;O(function(){if(t)M(c.config,{verifyJsApiList:C(v.jsApiList),verifyOpenTagList:C(v.openTagList)},function(){S._complete=function(e){g.preVerifyEndTime=L(),y.state=1,y.data=e},S.success=function(e){h.isPreVerifyOk=0},S.fail=function(e){S._fail?S._fail(e):y.state=-1};var t=S._completes;return t.push(function(){!function(){if(!(d||u||v.debug||m<"6.0.2"||h.systemType<0)){var i=new Image;h.appId=v.appId,h.initTime=g.initEndTime-g.initStartTime,h.preVerifyTime=g.preVerifyEndTime-g.preVerifyStartTime,w.getNetworkType({isInnerInvoke:!0,success:function(e){h.networkType=e.networkType;var n="https://open.weixin.qq.com/sdk/report?v="+h.version+"&o="+h.isPreVerifyOk+"&s="+h.systemType+"&c="+h.clientVersion+"&a="+h.appId+"&n="+h.networkType+"&i="+h.initTime+"&p="+h.preVerifyTime+"&u="+h.url;i.src=n}})}}()}),S.complete=function(e){for(var n=0,i=t.length;n", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "abiFilters" : [ "armeabi-v7a", "arm64-v8a" ], + "autoSdkPermissions" : true + }, + "icons" : { + // 改为自己的 logo + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png" + }, + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png" + } + } + }, + "ios" : { + "capabilities" : { + "entitlements" : { + "com.apple.developer.associated-domains" : [ "applinks:testapps.cncnconnect.com" ] // 改为自己的 + } + }, + "dSYMs" : false, + "privacyDescription" : { + // ios隐私信息访问许可描述 + "NSPhotoLibraryUsageDescription" : "允许手机存储权限读写相册,注册服务人员/退款时需从相册中选择图片", + "NSPhotoLibraryAddUsageDescription" : "允许手机存储权限读写相册,用于保存图片", + "NSCameraUsageDescription" : "需要访问相册,以便于上传服务人员资格证书、工作形象照等功能", + "NSLocationWhenInUseUsageDescription" : "允许获取您的位置信息,以便获取您附近的服务人员,更好的为您服务", + "NSLocationAlwaysUsageDescription" : "允许获取您的位置信息,以便获取您附近的服务人员,更好的为您服务", + "NSLocationAlwaysAndWhenInUseUsageDescription" : "允许获取您的位置信息,以便获取您附近的服务人员,更好的为您服务" + } + } + } + }, + "nativePlugins" : {}, + "_spaceID" : "8a1db412-049f-4be6-894a-755ffe5ebe5b" +} diff --git a/package (2).json b/package (2).json new file mode 100644 index 0000000..f7d3409 --- /dev/null +++ b/package (2).json @@ -0,0 +1,17 @@ +{ + "id": "jarvis-timePickerPopup", + "name": "时间范围弹窗选择器", + "displayName": "时间范围弹窗选择器", + "version": "1.0.0", + "description": "时间范围弹窗选择器:使用uni-popup+picker-view实现", + "keywords": [ + "时间选择器", + "时间范围" + ], + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ] + } +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1861f19 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,16 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "jweixin-module": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz", + "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==" + }, + "vue-i18n": { + "version": "8.28.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.28.2.tgz", + "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5bd9dac --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "jweixin-module": "^1.6.0", + "vue-i18n": "^8.18.2" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..4cf9bfa --- /dev/null +++ b/pages.json @@ -0,0 +1,807 @@ +{ + "pages": [{ + "path": "pages/service", + "style": { + "navigationBarTitleText": "首页", + //#ifndef H5 + "navigationStyle": "custom", + //#endif + "enablePullDownRefresh": true + } + }, + { + "path": "pages/map", + "style": { + "navigationBarTitleText": "技师", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/technician", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/shopstore", + "style": { + "navigationBarTitleText": "门店", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/dynamic", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/order", + "style": { + "navigationBarTitleText": "订单", + //#ifndef H5 + "navigationStyle": "custom", + //#endif + "enablePullDownRefresh": true + } + }, + { + "path": "pages/mine", + "style": { + "navigationBarTitleText": "我的", + //#ifndef H5 + "navigationStyle": "custom", + //#endif + "enablePullDownRefresh": true + } + } + //#ifndef MP-WEIXIN + , { + "path": "pages/login", // app H5登陆页面 + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "navigationBarTextStyle": "black", + "navigationBarBackgroundColor": "#ffffff" + } + }, + { + "path" : "pages/test", + "style" : + { + "navigationBarTitleText" : "", + "enablePullDownRefresh" : false + } + } + //#endif + ], + "subPackages": [ + // 用户端 + { + "root": "user/", + "pages": [{ + "path": "pages/detail", + "style": { + "navigationBarTitleText": "服务详情" + } + }, + { + "path": "pages/article", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/protocol", + "style": { + "navigationBarTitleText": "隐私政策" + } + }, + { + "path": "pages/information", + "style": { + "navigationBarTitleText": "服务协议" + } + }, + { + "path": "pages/collect", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/technician-info", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/merchant-info", + "style": { + "navigationBarTitleText": "商户信息" + } + }, + { + "path": "pages/comment", + "style": { + "navigationBarTitleText": "评论", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/order", + "style": { + "navigationBarTitleText": "下单" + } + }, + { + "path": "pages/choose-time", + "style": { + "navigationBarTitleText": "选择时间" + } + }, + { + "path": "pages/choose-technician", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/address/list", + "style": { + "navigationBarTitleText": "地址列表", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/address/edit", + "style": { + "navigationBarTitleText": "添加新地址" + } + }, + { + "path": "pages/order/bell-list", + "style": { + "navigationBarTitleText": "加钟订单", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/order/sign", + "style": { + "navigationBarTitleText": "签名确认" + } + }, + { + "path": "pages/order/detail", + "style": { + "navigationBarTitleText": "订单详情" + } + }, + { + "path": "pages/order/refund", + "style": { + "navigationBarTitleText": "申请退款" + } + }, + { + "path": "pages/order/evaluate", + "style": { + "navigationBarTitleText": "评价" + } + }, + { + "path": "pages/refund/list", + "style": { + "navigationBarTitleText": "售后/退款", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/refund/detail", + "style": { + "navigationBarTitleText": "售后详情" + } + }, { + "path": "pages/channel/apply", + "style": { + "navigationBarTitleText": "" + } + }, { + "path": "pages/channel/income", + "style": { + "navigationBarTitleText": "我是渠道商", + "enablePullDownRefresh": true + } + }, { + "path": "pages/channel/poster", + "style": { + "navigationBarTitleText": "渠道码" + } + }, { + "path": "pages/salesman/apply", + "style": { + "navigationBarTitleText": "" + } + }, { + "path": "pages/salesman/income", + "style": { + "navigationBarTitleText": "我是业务员", + "enablePullDownRefresh": true + } + }, { + "path": "pages/salesman/record", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/service/list", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/service/cate", + "style": { + "navigationBarTitleText": "全部分类" + } + }, { + "path": "pages/common/web", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/common/video", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/coupon/list", + "style": { + "navigationBarTitleText": "我的卡券", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/coupon/use", + "style": { + "navigationBarTitleText": "选择卡券", + "enablePullDownRefresh": true + } + }, { + "path": "pages/coupon/share", + "style": { + "navigationBarTitleText": "分享有奖", + "enablePullDownRefresh": true + } + }, { + "path": "pages/coupon/poster", + "style": { + "navigationBarTitleText": "我的邀请码" + } + }, { + "path": "pages/stored/list", + "style": { + "navigationBarTitleText": "余额充值", + "enablePullDownRefresh": true + } + }, { + "path": "pages/stored/choose-technician", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/stored/commission", + "style": { + "navigationBarTitleText": "佣金流水", + "enablePullDownRefresh": true + } + }, { + "path": "pages/stored/record", + "style": { + "navigationBarTitleText": "充值记录", + "enablePullDownRefresh": true + } + }, { + "path": "pages/stored/consume", + "style": { + "navigationBarTitleText": "消费明细", + "enablePullDownRefresh": true + } + }, { + "path": "pages/stored/poster", + "style": { + "navigationBarTitleText": "邀请好友" + } + }, { + "path": "pages/distribution/apply", + "style": { + "navigationBarTitleText": "申请分销商" + } + }, { + "path": "pages/distribution/income", + "style": { + "navigationBarTitleText": "我的收入", + "enablePullDownRefresh": true + } + }, { + "path": "pages/distribution/record", + "style": { + "navigationBarTitleText": "提现记录", + "enablePullDownRefresh": true + } + }, { + "path": "pages/distribution/team", + "style": { + "navigationBarTitleText": "我的邀请", + "enablePullDownRefresh": true + } + }, { + "path": "pages/distribution/poster", + "style": { + "navigationBarTitleText": "推广海报" + } + }, + { + "path": "pages/distribution/bind-technician", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/distribution/share-set", + "style": { + "navigationBarTitleText": "分享设置" + } + }, + { + "path": "pages/distribution/agent", + "style": { + "navigationBarTitleText": "选择代理商" + } + }, { + "path": "pages/cash-out", + "style": { + "navigationBarTitleText": "提现" + } + }, + //#ifndef MP-WEIXIN + { + "path": "pages/alipay-account", + "style": { + "navigationBarTitleText": "绑定支付宝账号" + } + }, + //#endif + { + "path": "pages/alipay-result", + "style": { + "navigationBarTitleText": "支付宝支付", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/apply-result", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/app-download", + "style": { + "navigationBarTitleText": "APP下载", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/phone-code", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/phone", + "style": { + "navigationBarTitleText": "绑定手机号" + } + }, + { + "path": "pages/setting", + "style": { + "navigationBarTitleText": "设置" + } + }, + { + "path": "pages/shield", + "style": { + "navigationBarTitleText": "屏蔽列表", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/logout", + "style": { + "navigationBarTitleText": "注销账户" + } + }, + { + "path": "pages/feedback/box", + "style": { + "navigationBarTitleText": "问题反馈" + } + }, + { + "path": "pages/feedback/list", + "style": { + "navigationBarTitleText": "反馈记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/feedback/detail", + "style": { + "navigationBarTitleText": "反馈详情" + } + }, + { + "path": "pages/feedback/success", + "style": { + "navigationBarTitleText": "提交结果" + } + }, + { + "path": "pages/bell/list", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/bell/order", + "style": { + "navigationBarTitleText": "下单" + } + }, + { + "path": "pages/gzh", + "style": { + "navigationBarTitleText": "关注公众号" + } + } + ] + }, + // 代理端 + { + "root": "agent/", + "pages": [{ + "path": "pages/index", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/account", + "style": { + "navigationBarTitleText": "账号设置" + } + }, { + "path": "pages/apply", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/income/commission", + "style": { + "navigationBarTitleText": "分佣明细", + "enablePullDownRefresh": true + } + }, { + "path": "pages/order/list", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/order/change", + "style": { + "navigationBarTitleText": "拒单管理", + "enablePullDownRefresh": true + } + }, { + "path": "pages/order/detail", + "style": { + "navigationBarTitleText": "订单详情" + } + }, { + "path": "pages/refund/list", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/refund/detail", + "style": { + "navigationBarTitleText": "退款详情" + } + }, { + "path": "pages/technician/list", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician/user", + "style": { + "navigationBarTitleText": "选择用户", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician/apply", + "style": { + "navigationBarTitleText": "" + } + }, { + "path": "pages/poster/channel", + "style": { + "navigationBarTitleText": "邀请渠道商" + } + }, { + "path": "pages/poster/salesman", + "style": { + "navigationBarTitleText": "邀请业务员" + } + }] + }, + // 技-师 + { + "root": "technician/", + "pages": [{ + "path": "pages/apply", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/order/recorder", + "style": { + "navigationBarTitleText": "测试录音" + } + }, + { + "path": "pages/edit", + "style": { + "navigationBarTitleText": "编辑信息" + } + }, + { + "path": "pages/time-manage", + "style": { + "navigationBarTitleText": "时间管理" + } + }, + { + "path": "pages/time-set", + "style": { + "navigationBarTitleText": "出行设置" + } + }, + { + "path": "pages/income/index", + "style": { + "navigationBarTitleText": "服务费提现", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/income/cash-integral", + "style": { + "navigationBarTitleText": "储值返佣明细", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/income/commission-list", + "style": { + "navigationBarTitleText": "分成明细", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/income/commission-detail", + "style": { + "navigationBarTitleText": "收益详情" + } + }, + { + "path": "pages/order/label", + "style": { + "navigationBarTitleText": "评价客户" + } + }, + { + "path": "pages/order/list", + "style": { + "navigationBarTitleText": "订单管理", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/order/detail", + "style": { + "navigationBarTitleText": "订单详情" + } + }, + { + "path": "pages/car-fare", + "style": { + "navigationBarTitleText": "车费明细" + } + }, + { + "path": "pages/shop/detail", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/shop/list", + "style": { + "navigationBarTitleText": "物料商城", + "enablePullDownRefresh": true + } + }, { + "path": "pages/bad-comments/box", + "style": { + "navigationBarTitleText": "差评申诉" + } + }, { + "path": "pages/bad-comments/list", + "style": { + "navigationBarTitleText": "申诉记录", + "enablePullDownRefresh": true + } + }, { + "path": "pages/bad-comments/choice", + "style": { + "navigationBarTitleText": "选择订单", + "enablePullDownRefresh": true + } + }, { + "path": "pages/bad-comments/success", + "style": { + "navigationBarTitleText": "提交结果" + } + }, { + "path": "pages/level", + "style": { + "navigationBarTitleText": "等级管理" + } + }, { + "path": "pages/shield", + "style": { + "navigationBarTitleText": "拉黑用户", + "enablePullDownRefresh": true + } + } + ] + }, + // 门店 + { + "root": "shopstore/", + "pages": [{ + "path": "pages/store-info", + "style": { + "navigationBarTitleText": "" + } + }, { + "path": "pages/detail", + "style": { + "navigationBarTitleText": "商家详情", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true + } + }, { + "path": "pages/service", + "style": { + "navigationBarTitleText": "推荐服务", + "enablePullDownRefresh": true + } + }] + }, + // 动态 + { + "root": "dynamic/", + "pages": [{ + "path": "pages/technician/edit", + "style": { + "navigationBarTitleText": "发布动态" + } + }, { + "path": "pages/technician/comment", + "style": { + "navigationBarTitleText": "收获的评论", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician/detail", + "style": { + "navigationBarTitleText": "动态详情", + "navigationStyle": "custom", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician/follow", + "style": { + "navigationBarTitleText": "新增关注", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician/list", + "style": { + "navigationBarTitleText": "动态发布", + "enablePullDownRefresh": true + } + }, { + "path": "pages/technician/thumbs", + "style": { + "navigationBarTitleText": "收获的赞", + "enablePullDownRefresh": true + } + }, { + "path": "pages/detail", + "style": { + "navigationBarTitleText": "动态详情", + "navigationStyle": "custom", + "enablePullDownRefresh": true + } + }, { + "path": "pages/follow", + "style": { + "navigationBarTitleText": "我的关注", + "enablePullDownRefresh": true + } + }] + } + ], + "globalStyle": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "", + "navigationBarBackgroundColor": "#F4F6F8", + "backgroundColor": "#F8F8F8", + "onReachBottomDistance": 140 + }, + "condition": { //模式配置,仅开发期间生效 + "current": 0, //当前激活的模式(list 的索引项) + "list": [{ + "name": "", //模式名称 + "path": "", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + }] + }, + "requiredPrivateInfos": [ + "getLocation", + "chooseLocation" + ] +} \ No newline at end of file diff --git a/pages/dynamic.vue b/pages/dynamic.vue new file mode 100644 index 0000000..b6b208f --- /dev/null +++ b/pages/dynamic.vue @@ -0,0 +1,396 @@ + + + + + + \ No newline at end of file diff --git a/pages/login.vue b/pages/login.vue new file mode 100644 index 0000000..a7bb915 --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,326 @@ + + + + + \ No newline at end of file diff --git a/pages/map.vue b/pages/map.vue new file mode 100644 index 0000000..b5d6ef3 --- /dev/null +++ b/pages/map.vue @@ -0,0 +1,866 @@ + + + + + + \ No newline at end of file diff --git a/pages/mine.vue b/pages/mine.vue new file mode 100644 index 0000000..b5b7fc3 --- /dev/null +++ b/pages/mine.vue @@ -0,0 +1,1530 @@ + + + + + \ No newline at end of file diff --git a/pages/order.vue b/pages/order.vue new file mode 100644 index 0000000..ab2271e --- /dev/null +++ b/pages/order.vue @@ -0,0 +1,417 @@ + + + + + + diff --git a/pages/service.vue b/pages/service.vue new file mode 100644 index 0000000..6b00534 --- /dev/null +++ b/pages/service.vue @@ -0,0 +1,793 @@ + + + + + + diff --git a/pages/shopstore.vue b/pages/shopstore.vue new file mode 100644 index 0000000..34921ea --- /dev/null +++ b/pages/shopstore.vue @@ -0,0 +1,382 @@ + + + + + + \ No newline at end of file diff --git a/pages/technician.vue b/pages/technician.vue new file mode 100644 index 0000000..12ea15f --- /dev/null +++ b/pages/technician.vue @@ -0,0 +1,587 @@ + + + + + + \ No newline at end of file diff --git a/pages/test.vue b/pages/test.vue new file mode 100644 index 0000000..10caad8 --- /dev/null +++ b/pages/test.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/shopstore/pages/detail.vue b/shopstore/pages/detail.vue new file mode 100644 index 0000000..82ebcab --- /dev/null +++ b/shopstore/pages/detail.vue @@ -0,0 +1,409 @@ + + + + + + \ No newline at end of file diff --git a/shopstore/pages/service.vue b/shopstore/pages/service.vue new file mode 100644 index 0000000..f188dd7 --- /dev/null +++ b/shopstore/pages/service.vue @@ -0,0 +1,107 @@ + + + + + \ No newline at end of file diff --git a/shopstore/pages/store-info.vue b/shopstore/pages/store-info.vue new file mode 100644 index 0000000..3587e43 --- /dev/null +++ b/shopstore/pages/store-info.vue @@ -0,0 +1,130 @@ + + + + + + diff --git a/shopstore/pages/technician.vue b/shopstore/pages/technician.vue new file mode 100644 index 0000000..7ef0137 --- /dev/null +++ b/shopstore/pages/technician.vue @@ -0,0 +1,303 @@ + + + + + + \ No newline at end of file diff --git a/siteinfo.js b/siteinfo.js new file mode 100644 index 0000000..fbeb92b --- /dev/null +++ b/siteinfo.js @@ -0,0 +1,8 @@ +module.exports = { + // 预约按摩 多城市 + "uniacid": "666", + "multiid": "0", + "version": "3.0", + "gzh_appid": "wx88bf27358c22f867", + "siteroot": "https://tianjin.tianjinhualong.cn/index.php" +} diff --git a/static/coupon/btn.png b/static/coupon/btn.png new file mode 100644 index 0000000000000000000000000000000000000000..0ee1366a460990f42f4880f10c1c9be1ed711d21 GIT binary patch literal 37874 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 literal 0 HcmV?d00001 diff --git a/static/coupon/line.png b/static/coupon/line.png new file mode 100644 index 0000000000000000000000000000000000000000..db7cb694b00c0f91f5d8bc0e20dd03631c61b2d8 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0y~yU@8N$89CU1Wbm8ED}j`$r;B5Vhj;RyvbyK>dd}r; zY(O9&?b3W;#f=P!o@LD!_ZURU^-Swr{Pj@AU5i_G5>dG-4BOBB?voIkavW#?gQu&X J%Q~loCIE~MBijG~ literal 0 HcmV?d00001 diff --git a/static/coupon/menu.png b/static/coupon/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..7524602d8be17e1f3862b3c21bc201290726d635 GIT binary patch literal 7396 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 W=;NRGUx%0is6Pza7*(U~6!CwbR%VF+ literal 0 HcmV?d00001 diff --git a/static/coupon/picture.png b/static/coupon/picture.png new file mode 100644 index 0000000000000000000000000000000000000000..9ffeda8ad79d3db7fb4abc9a1cc19e4b90331482 GIT binary patch literal 6917 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 CNgnqA literal 0 HcmV?d00001 diff --git a/static/coupon/wechat.png b/static/coupon/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..71c2cca0105b574a3c202351f90522b2198c6616 GIT binary patch literal 6565 zcmcgx=QkW)v{goDq6|R>V-UTUnCP9TqZ7UN8bL&vN%StdA!?#`LJ*?HsL^{b5haF1 zFVFA&0q^7caPQgcmbLa-=iasUy*pY*ONES>o)`-Yi%d;bQTHMK_^%P-KlD|`)p-vA z+gDdb9;CeQA)(lQW?oa+N}#D0QV#r7B^4SxfC)6I+9)^EDy{`U&_}HU(2RQjYWec0 z%A&l&HSjv<-*42P{X}4^0WKF!ExRr=}C65n<%4v>t`i51ZuP*cGykSUrIMrzL-Z za)$LRW3>{sPhys>4*X9Y=g@af4*C5dO!uKx-oc;?-s7m-njMPN+tYXAm1JTJg=wOI z6E*UTTuyO!Ivr~$NR!M9cTZa@z-~d9mfL^wG6J2IeO;$sE}NCIvrJj=3$=Y~!xHW$1g>A5~w-4IQ;knrDd`y5rDN zIc1V%j?BE)R>M>Y7A_rGnuv5mk{FQs0oWSkw)+BV+lEFMskI8wWr&CGu(8b^)fS^e zJ@ucatuO|m2yL+*ib7T~{yj>&Ok0lQsg^V`9t72ybvN z1b`o@tP15IbjX$)ZeyQJcV;Mt#f!HHHTJfx&6pK{gQ4o(*0kN4gDIj4e?P_^QQ#OI zSP#7|M_;G`HrS$g%IdwU%%gg)8^~3k^^-Hnq0JIEE<6Bik%Fr)WY~qe^kBohGpQTQ zQAsQ_Y9w}M7-2CCS0EoI(&8_`n-e#oQ^4*Ol#pYlh_2h(4|?ab#%lUNg($!R=r!n1 zT-5&l^5oz05UYv`c?MZmx&;cIsR8lA0zPtprjQa)kjZh~P>x8`jq1s}CWIvw_oPwe zL8_&oSH!J2ZIp;k?8qOv#s8MVSyaQh$JEEvv?By=bv_R)8`u)@&xlCo#tAbO?3ttqZwL@CAF6D>rBbkF;2_U_;sk z0P-yQu?^2TbO^d5(p?u4`Gc07=)|4Lrz_|(Ypg=nyW(%0&?CzZuc<`rK?Di8!=--2v{=C>fa*Do;l(9xW%0GBeQ-UViaN{SMVafzjz0#k(T0M z*`T>jJmPKJ_OS@FyNcEY(_9!0eU9))#??v~gaDeaROx-5Jb}gc9L!#w>F)gFXw#qj zG&v5qzat{%u}j)!2(Gr05%Xr4^A#D4-NAYBRwQs>{`6Na#9lgaV>ngU7}>-5EjYs@ zb|d`Tze1w`5PKI5N+_d1*L2i{M#skaug3n>&ig-N^pxVShOI$wGo9F8cLYwt8~smBGl+ z#hH4gsV%*pa(^SAx`oKD-bUegg1Ls~;ueW=X19lu1=aIA5r1BNlinoWmY*Lc@*sOF zQp4)MGW52N#)b9Pp(3&Jix^i(Ia|ySH{#{Z*F>kAvH31Dn&Yvk1HZJaGk|yN*wLAW zx)=rw{66)Dn0+Xatf+ZcxxO&Kk2U<0Q7uD`K=7l<6k#u8RQjpNZS&J8*9=zYjKx*< zl!Q8aEtL|1@7Z7AF;@G^S&xf!C70~7lhfT;rt&__Je(z1_N1;-ao0ZG*44ORiy1bj z+mO*)gbiR-5RHo2*e~!VbX+qKU!osXJa>M^{^P}&U6H#`)=`F218-69Wr4MyH^RnA z;*M-7v8Ui}nqCBLhTM=UID9Yc#Rl{QIu>3x=1}!EE$4pAM7%ocs$+0_r|up*Jcba- zKB=@#g$?h{ey6JK@S3~<8jvjOE0zhxQg#xhsb_G0fktr}U4GTrqCC?~awUO%Of%)n ze!>ynRX@zhQLVvy_hukQ2^6%S_U9E+e~xj)Qb>?_Q|@mA3of>eX}|T~d9w7qn4QDa z3#L`MO6w;xO2;%~UpCW;`G6(AhV54;ULmJmcU$DtjfWz8z?Oo`11oMcKF*s%){)Sadg`Lza(-}>ABLqtE%yTKTbm@H zu4r;LRjDu(#J=fzg>3m%nycud?Tu$}q)_LAE-0ed5kN~4qg;ku9gL1-y>W{wQT08u zZ}&O8$g{((UMkz^bxZ5n3szy$BC<*?bD>fA1Wzw5|PcxWKY zobvv|-v$|6Mqss{n*3om>O~UqKoQG@KnAXrPc|}8>E-p$=4<`KbLng1Sx|FGHm~v6 zrsPO+rDJAQe&3i5zC{SDfLc7@lF&54^l4bo4WCG2zA;f;e#^(gWh3?tDnuC|`5UA3 z`q0vGiIa!2FT28xi0@B7YuR{zay{kUFuvg;e}$RKf-cQCAKx|Gj`&~GS95<<5e)Oa zTBUWXqWf^kevZUCy2SeAfy^=6K>SV&v(%zz?TI8+h_Bw6i8oPS*skI*30E+Khz=C{QmR0Z?;AfpXpT|CgT*x^vExCwPa2`|Pw~{G|w$Iz~Xiyd}T40{O(>83E zwBE=0TlZe>k%6h%>!PlTvJ;oJ(n?nA&GERxmI$0@0`DX;!vm*tO|n>3voZ=>*c+11 zTcqIc>O2nGxV-odq$7ln`Kp-TI$!k<|?RS-|;w%SZk8*0cO&yp%f#+o?z_Kn&7 z>4GL4qrH8UW47>m;C0}UFLN=T-d3;Eul}i5R-&+p@V!DB8S~M2q~5lRsb)ZBUt+wK z_ea?^#}*EI@Rw~Zi4}CUtKPb4S8VAby=s13m8WBM2omG*PqOcr@!NwB*l(jYW4k0P zcpOsuNHMV&OO0R5I(y$_nD56FBV>2ml>d+yQG}lE9L0i+hasP~l?ru331CEh)6s7p zJK`hQ+}0}7{o}3kw3&A8i`mt)h0h$z%~D=bw7o%s!+&>_Q#+5gRM9O}dw7QX=fn8> z(y2ImCZ}#YocM}+-PHg_+DTBf;XSz;4&t@rp*gUwR|lM{$YK85R&dORB68vCd)*+b zT*xp0Y}|mxl};~d?X_^aMU|0%jsb?B$vtjl2!5;@O(B%orO>L@@Uq=_^VcX1dLkcw zMI9o6`ePrvQc>8MitV@Tu~B%lb4fjY0D;!4v59zsPtu4DTxa`?mz{?{;I6JoudjD+ zWNQLYT{YGME~LlGG}mKCcgYzA_kHO0=hsth9P8h8YN8`NO$CLb8&U zcpa?R&3vqKMVD#F=m;a2&o+h*Lh|Qw3Z?dFRkJC2_3wmp z))kQ~$2{4yTGtD%3%Wi0<8F*gjZRmJR=7n6)PE0dULi?+p?Kf+gbC>^5@plQ1?(!& z+Gs9^6HI@;TwR5SsgX}f(sN=Rc1xpWdkYtYG>J5K=OM0QxSlw%i1z7L|y4%#k3WWzo1EJCHd2Wqu`kxI=c_j%>5@Mc#DW!~;e zMir5+GEgV*V_T3{fC(-PsAPNAT*8tasdILLbaup;Sy_Uv3+I`0!`w70{XoXi4r~S? zicD<zK=F1HH+!_lT&VZA)fu{>e&0YA|^0X+{Ho5mD+S{Ot$m{SmCX_#D?|MK*fhv~M;GGL)(GkvCPc z$2X-zNas}ir5Bd({?}QcFFhWgHZ6``+quwi&S*saIyENvNDF1OsJN=`HCSQ7$ z#XS}801GP~vun-0%&w~t>X#@6j8+o8+7=?1@}j}J<<&+aHU2oyxdeZ5Txg8Do6!Pf zW1(dJ8d=&rEf{DdOk2JadXMkQ&% zd}}q#lYkJS%~jzo?)5_6SrU~l(u1Z@BTf| zMqaEfcy@l{yWTkyTaH%tNx0&=Ji zfI@+>M;$T8F_wB;;bdb>p;)gq-F5dF&M~Gt-o8V|=!5Y3nxfd~{zbcBnZD2}m7Rfy zBE-9X71qnbRBYZ$faT(-XJ;5WmzT%NV) z%X-|HTR1pu=VtC3%0J->C{i)rBH5$cY?D|gktXkBWbNtmaWov^ii?zV2e5*h&>w*W0g*jT{T{F z&%Ux5O7T!@Deks^GTi*RuyPs6%n$g5Qdw3H|8)e}^e_iTel^O^?b)lQ_=KfU=b^T} z&^8ELPJ6GoNQ1y>i#w-_ez=nMk+5hdi{P_u4=&;Z!4if#*N+`5$!(HBumUb$y84&q z^eek6L}-AQ*^<)PMpijQ!F)c4+#b%k=`*O_&2wJyw^Az-KLXai)Z>k9>qUE*ClH9({@WEl zkm-9HF7dNnQaZy1h6j)i>j`C7NWvVTQ9`fp0(U`_3Fz&=3cB_lN_~yylI5j+36_AT zqgTCcy)L8`&HK~(ZU-}5yRP2!&GMXy^{g-E6|GWp2VORpC?t7Uq&opW_vTUw=V%qQ zxLFtnMsv+nJ++YiJ+qxQsOiha_DwK(=N9}TG{#`5V~y9goh82|7Ft7Vq68X|RkJ zqk|^=lS-w5d?kjSgXF!ECx5~nfatr-n8*kbj6vb-+Z0`ewpwD>ad6Tei7e7JvP{h9dL%y4M^?!J8V905z>!$3tju z)|Pr(`S_F1&PWEo%TUdU!)V260n>$Jxf;rZNcwoJUgvN4$M=mZ8>>zm=79FJ058N_ zoGDp48J;zy0@){bQur|2a-J z$I$yB`KCikjm7t8x~`UIS=B840fyAgDyMo@8CqrN)dyj?=xsd5m0e6Y;T-74lC9pB zPW$hd;RWe}Le0sr8Iu&F>L&L!zW4_F4*?Zjr=N-z8256XQ9QwZg!!mkTs`Sr`2c^% z!RMM*YNXf*qe?Y;Z!Kzb~ zL&o-*GI-H?=mVjg|uBD_V*ucC%N_W3!OUQfqZR7?r0-w0l2f6477d|FL z1bZ1jQPd-(1T^J8uf7d%l7_~xM#@gQA6P7t$hAYMr^R8NjMOO>2O57bkA+(1X_-}Z zwz_{2sdeY?8u+{13e}jBZN7(KBS@+YcUVD2k%C$i1{!s6@)ss z0guMxuDr>SPimn^nEbXEtGgCZ4oZUTIdr|jbp7lCsxnK4Mg;j2gd{T*qxAIFU5jS=Q$xnx&!r47v! z7Hsr(@L2**Fyp}`7hw1MN-DEFd1ut%g&ldzNB6zmTdUB8!Fci4(KN9SB|;d)DL?!- zro~rjU5=)U*_t^J$w70}1VP+5JDa5r6fsnvE`RbwRm{ebv(A`MZzi*>Ef~%1kX&tj z7wXI4TF^GiC^2aQf8?AvnuJMd{&n z8Qg&Pkk)K1wWlr*0M5d7<`e#4I2cWG4l2e!02jqRi)wOm(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZV^_?8(3P^#H{DuS?A%vDM`osEYyHW^yy`)_Uq^|za zaR@-m9tR;(0aS8`$M*i}u7yJqOp_Y`6?^sxfJU5@tgK93JNA4DU=LseASciF0BTas z*n172VRijxI%A>$EF5ER0o0GrPwCJYJEL1=w>mK&q=AjuI#mUJs~Hff1;m=^*xILk zXgrfo!8uk6R?Yw%T*{k2KU89@CqJUmYJwHi_?VJe!1YRk|6BIvk5g6Yp|1(cod@%FD>|7u_>-vWtr(?R=~etsV@G#wzz`>aD9Y* zII?qx6Zo9(<&Ncydz-NjBrXygO*Xy{F5resJ{8=A5q4&op?YEmiZkO}TllLj!G{&x z+7q4B6M$Jez}06!2`RJM3_$+)`~(4LAubWx99G+dOOr&_yvc=gPsF#OmYWAwwtk0j zw_mOr!1jc|^1!H_3*29LO-d`r0M~|txTq8JZDy9|DZ}d`#%gV}-~yvG!N!ivVrI%a z2e2(ZZvJ)*+}yEodo8yGaE0zTrF4K?8cQxl!s4yTDa>uPThq5=L|Lq#Q=lTc(Yak4 zEogLSR(+nJ42V`}#~-FFod|H1W2H0*%e&G<)rJ{JVGL(Maw<0w6XxYyWk4=X14Y2V zS8uRP)lB@FJAkVUz@e+I&-@iJ8(J1<5hdBR+d%y(8<#IL=K>>jysOx^DQT-Bw6+WY z7cOwCk%6X;CFs)aPal-S;#Nd=8*K09tv&589oBikFekmSxL36Sry#%=tj}D$ z$3KY~L>|F?E!@ZQF=tLRURQ`XZH@F>d#|QtZRSU|)5-|GyEd~~8_!~n+<|7^MXaY0 z!^OS3xSw$&)&S~cLZ|l@zqJRYCca-5+Bmb=mbJGqbX6eiB&5Gxv$R+pohS+-kL;Fa zlM6YgS6(i#_ k8ehMlonw5_Vm&1%O{TSUcX{u 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�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 literal 0 HcmV?d00001 diff --git a/static/logo-40.png b/static/logo-40.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b66c4a11ea1fe08d763dee17450a7a5a509cc1 GIT binary patch literal 2208 zcmV;R2w(S!P)(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM zkN^M(CP_p=RCwCNm}!h%Wf{kR?|as}%$?5d?9+B?XUe`*8WJef1T7|rCMXn*TVjlU zkcc8*8Z~|~E=Z#Af$ak!M2#pAVu?ivVr!5hi)g3CK$l^roqf4;@147y<$e5cr$gyX zr=4L^p5*49ocBHF{Lk|||Nr|xuiCzU7jyA3;QPQ$z$U=r{KpWm7q}mI9YD_wTn9W0 z+zD)64!D{Lsl+uz1ohzob^%`jb^~7ou;;S%C~)C&?j#~qOhAj5!BsXRwH!7YTiL6T z$#&o&V8jOQS}r&vLM(=_b>6^jo!fAf&A#bFJT$O}iV1Mks&q#a@FN@e>~gOxn;P4i zF6KMkpTW^}Fgx3~kqe7FGWa}>wQB9VT>~4IdsQrki&9v_+<7bGadJI+k=}YUe}ui$eMAzoJ$osel5GpJ7)nId z1Vj?AK1o7}NLn73G;AOiLm(m5I3$#a;aZMYXWr#_b%F;6pQAU~&RCEmFcH3X5$eWb zW1^KdcMbiOamH(Tl9qe+%5C4jOO`eUhLWj)2pK!g4Qnr}12iFmpp+&wF%dBtD?!Tg z$vSBooCI&>kFjt15F)}&ty{Tsv`FG(MDeW%V2ulKtB*xb+pKrgG z3sRl5}Erb$rusHC6^L@nua$yli+bbuDuU&?!(>!+KC3;gGgmHAvj5owwmFZ!f-^}F= z-Td&K-?FRcHoE*Q|0^Enf#Z7+WKl&}21)8eu5z%Ib=cq(Ci@J zd;3uY!x|?=J}47OL?|(q(kstkB@XFMwD9wbzD|>!A~;9=@|45g=|1l7-_7yL1ec~a z@Wht8sh9vG24B0>Ou(=DpW)TqJ0vY{WdJ?xFdfeF>tlb$(+=@D091gjZ6<>Pg{aJv zW3TYdbvsDeK1rzqv6Q9~+j!c+h^)NC3WyQPaSai(EZ5^G8_#kO5!U-_u})d~G>WRJ zF&gC0+JpAl9;8vEEq}!MQFjrxru(f*%<=#I!7t+~h z17Z-27-ETu#9)xQa;v(5SnPY?SN!vcY<*vxi*G$N4 zTxBLKF&@k?P?_LxX_zCW5l&PmnTbjmF*wS`(KeRSsHJ*VgsP7(nSU$CO3s+@&Sf6NKu!B%GH5#nM zqDDfaiHV6N##Iikwu!}1i341115(#HRnNCK_oY{isw6BI5F!)fpXLk4gFJo3_jqyg zKd8Wj;+$be>Oird-wp5M$33^xU?&g(trQbMfd>bk!_k_u3CIVt6yplJHr+YWDh|@^xANt#PtcQWU*JV; zXNm1HL2;n)9{2V?gRg8XZE?qjn|Wd4Ek=WBZf)B}Z>j@9xaa88jMj3jOEij3u zr-3)3qvXR`3Q+}sXGZsPq&&j2k{@je*Me0)SfSrFGDV&}gN&w(-LH zda3GV3QWWWsV;UjUpYUw(N1A&i$YXp?{pu&Fax6se6?bqU49@Alw z%QG7}TpHr)#$NVL^crJT$O}_bL-86b}wQhamXc;Rl;;A!&OgOx>AG1O*;D@gjw= z%sRiBstI_vG|bJdTj};&I93^BbE=b!odjTm-%P)kC1v|;OtkWs@i&M>=<*h9rG&t} zO6qp!OTYs__GDH@YB>bKoAYi)1f>)mUK8cGMl6OVCrw}?hN@E}Ess{Okw{`Dg90t? z8fK%)+&vs-q7t26mSR+)9M^EQL(=ld1x0+zrO`>9D*Ykw6W|_1A) literal 0 HcmV?d00001 diff --git a/static/logo-58.png b/static/logo-58.png new file mode 100644 index 0000000000000000000000000000000000000000..af0a7bade7fb03963fb76c7471e7941f4bbbb85a GIT binary patch literal 3679 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 literal 0 HcmV?d00001 diff --git a/static/logo-60.png b/static/logo-60.png new file mode 100644 index 0000000000000000000000000000000000000000..47882fb68db7e2b50ff0b93d682cb95ed7b84ec1 GIT binary patch literal 3581 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 D^%&yx literal 0 HcmV?d00001 diff --git a/static/logo-80.png b/static/logo-80.png new file mode 100644 index 0000000000000000000000000000000000000000..314a0d82144d4b78da8b1c481cc9a52e32ba9f52 GIT binary patch literal 4965 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 literal 0 HcmV?d00001 diff --git a/static/logo-87.png b/static/logo-87.png new file mode 100644 index 0000000000000000000000000000000000000000..2a073a150d5c08a2c41e236fd669bb35f5785839 GIT binary patch literal 4990 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 IM6N<$f>JV%+W-In literal 0 HcmV?d00001 diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d35579f5ad71c23abf0f0989cdf5d8d0377e15 GIT binary patch literal 4186 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 literal 0 HcmV?d00001 diff --git a/static/mine/Add.png b/static/mine/Add.png new file mode 100644 index 0000000000000000000000000000000000000000..da6f25e1a9574ef7201b736a117ad5410222cc2e GIT binary patch literal 15642 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 FV1g=h#u5Mk literal 0 HcmV?d00001 diff --git a/static/mine/auth.png b/static/mine/auth.png new file mode 100644 index 0000000000000000000000000000000000000000..4194edffece37e9e6830f20b9c92d6544fbc0fdc GIT binary patch literal 14014 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 literal 0 HcmV?d00001 diff --git a/static/mine/balance.png b/static/mine/balance.png new file mode 100644 index 0000000000000000000000000000000000000000..6c060cce39bbb26c7da79808000530afd1bf8a41 GIT binary patch literal 100626 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

5IpRSAwwD-C*A3P?%C(X9tlE?jxQ-$<445l1 zUGSPh%iE)(EYf?LpVG>&ezeGM*864$Q(3>4`o-;a2u&MHh} z@g*JC7J$`0xtj#<=j|vPWe-6S({+Z-_>F>PVXIJa+LgusvUQow0?gtl_ebm=JN7i_ zC?{zaF>PrLL-ifJ9b#mHqnwXP-|8+gbPwMb4B1Nf8o^`EmKc)@Un3T%Z0qtm@-#L= zj`4WJJi&bu&xyYAtPS}Z9xw#ko!8?d|5lg{a7MT9;LhOOq6BvmY5~2uXoP=wJS-)-YHI_*{ zC3sxo35ll>A0R$be1rExbR!N#9F8~!dELpNdGTSbq5#{<`5K!f{(`szSO_e0;A@1{ z_9Mh=e)+u*)Ta!5b}m0h9b5Dwnq#^tVgW&%ln9xnH}a<7#&*yU*jE#%MrIa@HKWv93eOo@oB_v zh;FL04&e)}N4$x619{IN9!2~EvD9f^j3#x7F?QzH+U^rNRfR^?VH^z92DQaJ$5T z1@ScwL)?RS5P1hAF6u5i(&6YRuNBV6uQ5tu9^zQr zG)hzW8rA)YhzEe3nl>MnGQWlqT&XIXwpDzMU4Z$(XOhBLh4D3N|K9*a+afk?UU11z3OIsq|&e!^EIBAc-7)4 zj}>&+8AwGhY;cW15;LXJcg_J+b0!z$IJbtc@oYpJAJx+Q8qQ#O_J^e^6<|Uk8rDL- z#^Q)z??EleuaVwSP73%sWqNgwC1%gB@tk0ZV6%iW@-_Mk9=G%`9l$OYzDDu+HPSoE z@yEa(`9|wqEX3N+>jdXX{MwJK7s1yUu4=>}+G#8*zlQ6CojWC9_xwmW+45^l6Wm%b zU!xP~Y}irGl3ycgEX2{FuD@nyF;=3RRk%^&!6xuE21xXebd-zCui?xQcb;7~`2v>C zQQq9!4HnDS=n!;7I?BcJH5_7wUb0157+~pqu0etcO~|jY5wWoVzJ?dWDcpj54nP`B zOV+T>`2m(KzsAK9hZLM&V}r!T0{9w3P!u)I+Yab%&{4L@mfX$yl=(Hf1q%d!@?R{Y z1_($M!J~qELtwrStO9n(nXj?C&kBCba_(`69UF9%ZL&OfPDh6P8iNI=<&Z102 z9QhiqW7xgLvZh*>U*ogDC<`#Z6RdOOYq*qkh>QI+5W#a_M_gLxI71^jIFhONRG zh_yNKHB4`43JYrrn;+(78NWUNZb>uPH6HxUhp&<5eJJ}#e97V{KM&lV6JKLb#Ds_# zwxb7YtjPd zYSyon7}kRKp%BB@m?AN!FQG||={*i{P7ZvHp@_2!aFnM4Pm)1gHEcy%gQI}_8sUc7 z6>&*~qkNH{xT{_G8bSF5FoTTZ3fQ6+=hukhYkbcS$c7vLL&RBra+7x8YxKxW;D3#RCQpODt;P`%vQe8lAw*-aHt! z4Y(O`E@F~>iBMDc8moXwz-8nhPJo?$JsSjNU6T!}as@ngh`&P#^e9OdVMi-CiH z8-exYEb_ec$vyr$g{ur)WW<1qKaTZmO~hvd7!#@s#vE18`7kB`UeCU%ma3KG`Tsaz znpVpz7%s#xr~26oeitl55aTg?1>+rsp}XdLS@wIb+XvPgh(|EYMm!9xPSciMqdSTR z4B&55In;=AE8=(qLlXg0G+4br84FRz)NbkBMuHVAcVV~!+;sHOqdBMUEM7bA|Sh=YyT*@&S=coh=B zGIlMC11ktxFJRGN84QCl-XaXY!mt$MN8sy@^=x2vU>Jz#hoORD6Jitc)?wI^*Xuc& z4p=G86;n1r30Ns5V5O9Rm4KB}0#-^1SP57uC19nLfNeAK{{aBE6g4ydVrr!T0000< KMNUMnLSTZdcd`Kh literal 0 HcmV?d00001 diff --git a/static/mine/shop.png b/static/mine/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebf9155a7b3f7c5d2191faedf5ae9160d7768bf GIT binary patch literal 3187 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 Z0RY&&;fU;rbjbh!002ovPDHLkV1ns{!>9lN literal 0 HcmV?d00001 diff --git a/static/mine/tel.png b/static/mine/tel.png new file mode 100644 index 0000000000000000000000000000000000000000..3822fef75b1b03b9b5583f5ac3d87c490422dbd1 GIT binary patch literal 5514 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

pW(>ZCs@7t&~|ZfLA~ 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 literal 0 HcmV?d00001 diff --git a/static/mine/yijianfank.png b/static/mine/yijianfank.png new file mode 100644 index 0000000000000000000000000000000000000000..d51c0489e692e45374079656cf67b73e40e6dc74 GIT binary patch literal 4166 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 N002ovPDHLkV1mCx+}8jA literal 0 HcmV?d00001 diff --git a/static/tab/dingdan_nor.png b/static/tab/dingdan_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8bd35b7d929d8a1d64c7536f55356054a9c680 GIT binary patch literal 1032 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 AS^xk5 literal 0 HcmV?d00001 diff --git a/static/tab/find_sel.png b/static/tab/find_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..22ef546fe2230426f6324fdad46482689aae08b7 GIT binary patch literal 2275 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 literal 0 HcmV?d00001 diff --git a/static/tab/shouye_nor.png b/static/tab/shouye_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..6726e9b44dd6b72170969bd6fbf4ab0b2223f903 GIT binary patch literal 1539 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 literal 0 HcmV?d00001 diff --git a/static/tab/store_nor.png b/static/tab/store_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed1e3bf9424cf6a54ea0342ecc2c96d7593533d GIT binary patch literal 1260 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 V?7_h2oP_`Y002ovPDHLkV1knvQ%V2; literal 0 HcmV?d00001 diff --git a/static/tab/wode_sel.png b/static/tab/wode_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..767f8600e7b75a494b0042dc90c3f80ef817d4ec GIT binary patch literal 1803 zcmV+m2lV)fP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ?kx4{BRCwClnrm!SMHGO)7AkEmP$^iH3Pp)XvBroLEL226(L{U@qaYH0h_4tc zYEV!hqJjZJfgkk|6XOe%7(x^Q4Ze6(%0pA0r50#QwHOv*X(_GU-Q$lvw@fehZg;m! zshni8bKmpLnK^UjoQ)F^E(VF`B9YEkB`z*5R_{y&t^@`GX~1Pb3Lr7;{5oJIP|-Z1 zM1&X&ugidkfcJsl0gpEPe3tKkgy#0Q5hNQZ0IJ%d;r8MMQmyuPjuK!1@H+4?kmzu| zNwxAfa7vG3HFo3leIElSo6km}k>`Qq4n0%`6atfg!9cedHr`dD8Ct!8RSp0ffO~-C z3t_Dy1<3?TYyiIj_g!eS8wtoYz#le<0wAd)tRLZmqyu{mfJWfSjCcF(4X% zdpp{S9uCM$282&dZAXwxfQ7(1;EvWnGSx;~Ak#aL5^gct^A{MX@*VG%#gE<&veq z+%5fHXo%&0Bn6mYXrnOH!?_g&86vV?L}rLcvNc{KD9QTl`rL|wj97x?0e!W;1~}ph zak!ul!diq;G4N$aA*{_kT+k<0Aa@$|6|QFE(BdQ!Ss^0XQE0)fWQ)j(TMjKwYAZ-r z)d;{pz}66p&@2(jiy?$n@@2Bw0;y29Bvmb#)6nV&ZoH|fawm{#;HZLJt(pn6)JWi;c5JZQ zx2`wpd!5YhaiGX>qc7P6W}q8uMX4b`q=@xbI$u_NJ#tvs$Tk%+D&D_ z_at@?Xrq<7=eq5bK4 z+dvWrT<*lU3Ak%t&Rce0ZyhjB>&t;h%>Z2}5CF5+-vypEFAgext&e^n+tuZ7^x>~- z2!dSN#i{pA*$v#if7si0&-)eN9jzZz%T*N#NTRCGaui=vxMsO->&y(`GhkF37r$SC z$)&^RRol)_1U}XIibgwE+C!#J=GQ*y9tUdl_-&1GHB0I6dDRHx5auJ)M-gRVcdX`KR;f8P-%(-&&}k14OK#T&c^z!hX@Yrnt9aCZv)|_j zHUm>|&e?|r67FPgO)_=m9jm@tx@MM~#IF;-MAwgX1T(}@Nu*XQ66vqjEmJo_)*lCI tbt_$^!SREtp*G1mApdu{X#TJD-vAtVYzB { + modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default +}) + +export default new Vuex.Store({modules}) \ No newline at end of file diff --git a/store/modules/config.js b/store/modules/config.js new file mode 100644 index 0000000..e633b9a --- /dev/null +++ b/store/modules/config.js @@ -0,0 +1,235 @@ +import $util from "@/utils/index.js" +import $api from "@/api/index.js" +export default { + state: { + merchantAuth: 0, // 技-师列表是否显示商家 + old_attendant_name: '技师', + configInfo: { + id: 0, + isIos: uni.getSystemInfoSync().system.includes('iOS'), + navBarHeight: uni.getSystemInfoSync().statusBarHeight * 1 + 44, + curSysHeight: '', + tabbarHeight: '', + methodObj: { + 1: 'call', + 2: 'miniProgram', + 3: 'web', + 4: 'navigateTo' + }, + tabBar: [], + }, + play_method: [{ + method: 'onPlay', + msg: '开始播放', + status: true, + }, { + method: 'onStop', + msg: '结束播放', + status: false, + }, { + method: 'onError', + msg: '报错Error', + status: false, + }, { + method: 'onEnded', + msg: '自然结束播放', + status: false, + }], + audioBg: {}, + audioType: 'countdown_voice', + playBg: false, + isHaveAudio: false + }, + mutations: { + //修改信息 + updateConfigItem(state, item) { + let { + key, + val + } = item + state[key] = val + if (key !== 'configInfo') return + uni.setStorageSync('configInfo', val) + let src = val[state.audioType] + if (state.isHaveAudio) { + state.audioBg.src = src || '' + return + } + if (!val.countdown_voice && !val.service_start_recording && !val.service_end_recording) return + state.audioBg = uni.createInnerAudioContext(); + state.isHaveAudio = true + state.audioBg.src = src + // #ifndef APP-PLUS + state.audioBg.obeyMuteSwitch = false + // #endif + state.play_method.map(item => { + state.audioBg[item.method](() => { + console.log('bg=>', item.msg) + state.playBg = item.status; + }) + }) + } + }, + actions: { + // 获取基本配置 + async getConfigInfo({ + commit, + state + }, param) { + let config = await $api.base.configInfo() + if (!config.primaryColor) { + config.primaryColor = '#A40035' + } + if (!config.subColor) { + config.subColor = '#F1C06B' + } + if (!config.user_image) { + config.user_image = 'https://lbqny.migugu.com/admin/anmo/mine/bg.png' + } + if (!config.coach_image) { + config.coach_image = 'https://lbqny.migugu.com/admin/anmo/mine/bg.png' + } + if (!config.service_btn_color) { + config.service_btn_color = '#282B34' + } + if (!config.service_font_color) { + config.service_font_color = '#EBDDB1' + } + if (!config.user_font_color) { + config.user_font_color = '#ffffff' + } + if (!config.coach_font_color) { + config.coach_font_color = '#ffffff' + } + + let base_config = $util.pick(state.configInfo, ['isIos', 'navBarHeight', 'curSysHeight', + 'tabbarHeight', 'methodObj', 'tabBar' + ]) + + let tabBar = [{ + id: 1, + name: '首页', + default_img: '../static/tab/shouye_nor.png', + selected_img: '../static/tab/shouye_sel.png' + }, { + id: 2, + name: '技师', + default_img: '../static/tab/jishi_nor.png', + selected_img: '../static/tab/jishi_sel.png' + }, { + id: 4, + name: '订单', + default_img: '../static/tab/dingdan_nor.png', + selected_img: '../static/tab/dingdan_sel.png' + }, { + id: 5, + name: '我的', + default_img: '../static/tab/wode_nor.png', + selected_img: '../static/tab/wode_sel.png' + }] + + + let tInd = tabBar.findIndex(item => { + return item.id == 2 + }) + tabBar[tInd].name = config.attendant_name + + // let authArr = ['map', 'dynamic', 'store'] + // let authArr = ['dynamic', 'store'] + let authArr = [] // tabbar 权限 + let authObj = { + dynamic: { + id: 3, + name: '动态', + default_img: '../static/tab/find_nor.png', + selected_img: '../static/tab/find_sel.png', + ind: config.attendant_name + }, + store: { + id: 6, + name: '门店', + default_img: '../static/tab/store_nor.png', + selected_img: '../static/tab/store_sel.png', + ind: '首页' + }, + map: { + id: 7, + name: '地图找人', + default_img: '../static/tab/jishi_nor.png', + selected_img: '../static/tab/jishi_sel.png', + ind: config.attendant_name + } + } + + let plugNum = 0 + let { + plugAuth + } = config + for (let i in plugAuth) { + plugAuth[i] = plugAuth[i] == 1 || plugAuth[i] ? false : true + if (authArr.includes(i)) { + if (plugAuth[i]) { + plugNum++ + } + let addInd = tabBar.findIndex(item => { + return item.name == authObj[i].name + }) + let spliceInd = tabBar.findIndex(item => { + return item.name == authObj[i].ind + }) + if (plugAuth[i] && addInd == -1) { + tabBar.splice(spliceInd + 1, 0, authObj[i]) + } + if (!plugAuth[i] && addInd !== -1) { + tabBar.splice(addInd, 1) + } + } + } + config.plugAuth = plugAuth + + + //if (plugNum > 1) { + //tabBar.splice(tabBar.findIndex(item => { + //return item.name == '订单' + //}), 1) + //} + + base_config.tabBar = tabBar + let data = Object.assign({}, config, base_config) + commit('updateConfigItem', { + key: 'configInfo', + val: data + }) + + }, + toPlayAudio({ + commit, + state + }, param) { + state.audioType = param.key + let src = state.configInfo[param.key] + if (!src) return + if (state.isHaveAudio) { + state.audioBg.src = src + } else { + state.audioBg = uni.createInnerAudioContext(); + state.isHaveAudio = true + state.audioBg.src = src + // #ifndef APP-PLUS + state.audioBg.obeyMuteSwitch = false + // #endif + state.play_method.map(item => { + state.audioBg[item.method](() => { + console.log('bg=>', item.msg) + state.playBg = item.status; + }) + }) + } + + if (state.playBg) { + state.audioBg.stop() + } + state.audioBg.play() + } + } +} \ No newline at end of file diff --git a/store/modules/dynamic.js b/store/modules/dynamic.js new file mode 100644 index 0000000..9bda587 --- /dev/null +++ b/store/modules/dynamic.js @@ -0,0 +1,83 @@ +import $util from "@/utils/index.js" +import $api from "@/api/index.js" +export default { + state: { + pageActive: false, + activeIndex: 0, + haveOperItem: false, + tabList: [{ + title: '推荐', + id: 0, + }, { + title: '关注', + id: 1, + number: 0 + }], + param: { + page: 1, + coach_name: '' + }, + list: { + data: [], + last_page: 1, + current_page: 1 + }, + follow_dynamic_num: 0, + coach_status: -1 + }, + mutations: { + async updateDynamicItem(state, item) { + let { + key, + val + } = item + state[key] = val + } + }, + actions: { + async getDynamicIndex({ + commit, + state + }, param) { + let d = await $api.dynamic.getFollowData(param) + commit('updateDynamicItem', { + key: 'follow_dynamic_num', + val: d.num + }) + commit('updateDynamicItem', { + key: 'coach_status', + val: d.coach_status + }) + let tabList = $util.deepCopy(state.tabList) + tabList[1].number = d.num + commit('updateDynamicItem', { + key: 'tabList', + val: tabList + }) + }, + async getDynamicList({ + commit, + state + }, param) { + let methodModel = state.activeIndex == 0 ? 'dynamicList' : 'followDynamicList' + let d = await $api.dynamic[methodModel](param) + let oldList = state.list; + let newList = d; + let list = {} + if (param.page == 1) { + list = newList; + } else { + newList.data = oldList.data.concat(newList.data) + list = newList; + } + commit('updateDynamicItem', { + key: 'param', + val: param + }) + commit('updateDynamicItem', { + key: 'list', + val: list + }) + } + }, +} diff --git a/store/modules/map.js b/store/modules/map.js new file mode 100644 index 0000000..cf2708a --- /dev/null +++ b/store/modules/map.js @@ -0,0 +1,153 @@ +import $api from "@/api/index.js" +import $store from "@/store/index.js" +export default { + state: { + pageActive: false, + sexList: [{ + id: -1, + title: '全部' + }, { + id: 0, + title: '男' + }, { + id: 1, + title: '女' + }], + yearList: [{ + id: 1, + title: '1-3年', + year: [1, 3] + }, { + id: 2, + title: '3-5年', + year: [3, 5] + }, { + id: 3, + title: '5-10年', + year: [5, 10] + }, { + id: 4, + title: '10年以上', + year: [10, 200] + }], + map: { + latitude: 0, + longitude: 0, + scale: 16, + controls: [] + }, + covers: [], + service_cate: [], + param: { + page: 1, + sex: -1, + year: 1, + cate_id: 0, + activeIndex: 0, + coach_name: '', + service_time: '' + }, + check: { + sex: -1, + year: 1, + coach_name: '', + service_time: '' + }, + mapList: [], + list: { + data: [], + last_page: 1, + current_page: 1 + }, + mapType: 'map' + }, + mutations: { + async updateMapItem(state, item) { + let { + key, + val + } = item + state[key] = val + } + }, + actions: { + async getMapIndex({ + commit, + state + }, param) { + let d = await $api.service.serviceCateList(param) + d.unshift({ + id: 0, + title: '全部' + }) + commit('updateMapItem', { + key: 'service_cate', + val: d + }) + }, + async getMapList({ + commit, + state + }, param) { + let d = await $api.service.mapCoachList(param) + let map = Object.assign({}, state.map, { + latitude: param.lat, + longitude: param.lng, + }) + let arr = [] + d.map((item, index) => { + arr.push({ + id: index, + latitude: item.lat, + longitude: item.lng, + iconPath: item.work_img, + width: 30, + height: 30 + }) + }) + arr.unshift({ + id: '-1', + latitude: param.lat, + longitude: param.lng, + iconPath: 'https://mapapi.qq.com/web/lbs/visualizationApi/demo/img/big.png', + width: 20, + height: 25, + }) + commit('updateMapItem', { + key: 'map', + val: map + }) + commit('updateMapItem', { + key: 'covers', + val: arr + }) + commit('updateMapItem', { + key: 'mapList', + val: d + }) + }, + async getMapCoachList({ + commit, + state + }, param) { + let { + coach_format = 1 + } = $store.state.config.configInfo + let methodModel = coach_format == 1 ? 'serviceCoachList' : 'typeServiceCoachList' + let d = await $api.service[methodModel](param) + let oldList = state.list; + let newList = d; + let list = {} + if (param.page == 1) { + list = newList; + } else { + newList.data = oldList.data.concat(newList.data) + list = newList; + } + commit('updateMapItem', { + key: 'list', + val: list + }) + } + }, +} \ No newline at end of file diff --git a/store/modules/order.js b/store/modules/order.js new file mode 100644 index 0000000..27b52b5 --- /dev/null +++ b/store/modules/order.js @@ -0,0 +1,99 @@ +import $util from "@/utils/index.js" +import $api from "@/api/index.js" +import { + req +} from '@/utils/req.js'; +export default { + state: { + pageActive: false, + // pay_type 1待支付,2待服务,3技-师接单,4技-师出发,5技-师到达,6服务中,7服务完成 + activeIndex: 0, + tabList: [{ + title: '全部', + id: 0 + }, { + title: '待支付', + id: 1, + // number: 10 + }, { + title: '待服务', + id: 5 + }, { + title: '服务中', + id: 6 + }, { + title: '已完成', + id: 7 + }], + param: { + page: 1, + pay_type: 0, + }, + list: { + data: [], + last_page: 1, + current_page: 1 + }, + carList: {}, + haveOperItem: false, + bellOrderParams: {}, + alipayOrderParams: {}, + recorder: null, + recorder_status: false, + recorder_order_id: 0 + }, + mutations: { + updateOrderItem(state, item) { + let { + key, + val + } = item + state[key] = val + } + }, + actions: { + async getOrderList({ + commit, + state + }, param) { + let d = await $api.order.orderList(param) + let oldList = state.list; + let newList = d; + let list = {} + if (param.page == 1) { + let { + current_page = 0 + } = newList + if (!current_page) { + newList = { + data: [], + last_page: 1, + current_page: 1 + } + } + list = newList; + } else { + newList.data = oldList.data.concat(newList.data) + list = newList; + } + commit('updateOrderItem', { + key: 'list', + val: list + }) + }, + // 获取购物车数据 + async getCarList({ + commit, + state + }, param) { + let carList = await $api.order.carInfo(param) + carList.list.map(item => { + item.checked = false + }) + commit('updateOrderItem', { + key: 'carList', + val: carList + }) + }, + } +} \ No newline at end of file diff --git a/store/modules/service.js b/store/modules/service.js new file mode 100644 index 0000000..692e641 --- /dev/null +++ b/store/modules/service.js @@ -0,0 +1,128 @@ +import $api from "@/api/index.js" +import $util from "@/utils/index.js" +import $store from "@/store/index.js" +export default { + state: { + pageActive: false, + activeIndex: 0, + tabList: [{ + title: '全部', + sort: 'top desc', + }, { + title: '价格', + sort: 'price', + sign: 0, + is_sign: 1, + }, { + title: '销量', + sort: 'total_sale', + sign: 0, + is_sign: 1, + }, { + title: '好评度', + sort: 'star', + sign: 0, + is_sign: 1, + }], + param: { + page: 1, + sort: '' + }, + list: { + data: [], + last_page: 1, + current_page: 1 + }, + banner: [], + service_cate: [], + service_all_cate: [], + recommend_list: [], + recommend_style: 1 + }, + mutations: { + async updateServiceItem(state, item) { + let { + key, + val + } = item + state[key] = val + } + }, + actions: { + async getServiceIndex({ + commit, + state + }, param) { + let d = await $api.service.index(param); + let { + banner = [], + service_cate = [], + recommend_list = [], + recommend_style = 1, + coach_apply_show = 0 + } = d + let all_cate = $util.deepCopy(service_cate) + commit('updateServiceItem', { + key: 'service_all_cate', + val: all_cate + }) + let cateLen = all_cate.length + if (coach_apply_show) { + service_cate.splice(cateLen > 4 ? 4 : cateLen - 1, 0, { + id: 0, + title: $store.state.config.configInfo.attendant_name + '入驻', + cover: 'https://lbqny.migugu.com/admin/anmo/technician/default_technician.png', + url: '/technician/pages/apply' + }) + } + let num = ((coach_apply_show && cateLen > 28) || (!coach_apply_show && cateLen > 29)) ? 29 : + coach_apply_show ? cateLen + 1 : cateLen + console.log(coach_apply_show, num, "======num") + service_cate = service_cate.slice(0, num) + if ((cateLen > (coach_apply_show ? 28 : 29))) { + service_cate.push({ + id: 0, + title: '全部分类', + cover: '', + icon: 'iconfenleiyingyongtongzhi2', + url: '/user/pages/service/cate' + }) + } + commit('updateServiceItem', { + key: 'banner', + val: banner + }) + commit('updateServiceItem', { + key: 'service_cate', + val: service_cate + }) + commit('updateServiceItem', { + key: 'recommend_list', + val: recommend_list + }) + commit('updateServiceItem', { + key: 'recommend_style', + val: recommend_style + }) + }, + async getServiceList({ + commit, + state + }, param) { + let d = await $api.service.serviceList(param) + let oldList = state.list; + let newList = d; + let list = {} + if (param.page == 1) { + list = newList; + } else { + newList.data = oldList.data.concat(newList.data) + list = newList; + } + commit('updateServiceItem', { + key: 'list', + val: list + }) + } + }, +} \ No newline at end of file diff --git a/store/modules/shopstore.js b/store/modules/shopstore.js new file mode 100644 index 0000000..2f2c6e7 --- /dev/null +++ b/store/modules/shopstore.js @@ -0,0 +1,51 @@ +import $util from "@/utils/index.js" +import $api from "@/api/index.js" +export default { + state: { + pageActive: false, + haveOperItem: false, + param: { + page: 1, + coach_name: '' + }, + list: { + data: [], + last_page: 1, + current_page: 1 + } + }, + mutations: { + async updateShopstoreItem(state, item) { + let { + key, + val + } = item + state[key] = val + } + }, + actions: { + async getShopstoreList({ + commit, + state + }, param) { + let d = await $api.shopstore.storeList(param) + let oldList = state.list; + let newList = d; + let list = {} + if (param.page == 1) { + list = newList; + } else { + newList.data = oldList.data.concat(newList.data) + list = newList; + } + commit('updateShopstoreItem', { + key: 'param', + val: param + }) + commit('updateShopstoreItem', { + key: 'list', + val: list + }) + } + }, +} diff --git a/store/modules/technician.js b/store/modules/technician.js new file mode 100644 index 0000000..9ce78f2 --- /dev/null +++ b/store/modules/technician.js @@ -0,0 +1,100 @@ +import $api from "@/api/index.js" +import $store from "@/store/index.js" +export default { + state: { + pageActive: false, + activeIndex: 0, + haveOperItem: false, + tabList: [{ + title: '全部', + id: 0, + }, { + title: '可服务', + id: 1, + }, { + title: '服务中', + id: 2 + }, { + title: '可预约', + id: 3 + }], + cityId: 0, + cityIndex: -1, + cityList: [], + param: { + page: 1, + ser_id: 0, + coach_name: '' + }, + list: { + data: [], + last_page: 1, + current_page: 1 + } + }, + mutations: { + async updateTechnicianItem(state, item) { + let { + key, + val + } = item + state[key] = val + } + }, + actions: { + async getCityList({ + commit, + state + }, param) { + let { + change = 0 + } = param + let params = JSON.parse(JSON.stringify(param)) + delete params.change + let d = await $api.base.getCity(params); + let { + cityId = 0 + } = state + let ind = d.findIndex(v => { + return change || !cityId ? v.is_select : v.id == cityId + }) + commit('updateTechnicianItem', { + key: 'cityList', + val: d + }) + let cityIndex = ind + // let cityIndex = ind === -1 ? 0 : ind + commit('updateTechnicianItem', { + key: 'cityIndex', + val: cityIndex + }) + commit('updateTechnicianItem', { + key: 'cityId', + val: d && d.length > 0 && cityIndex !== -1 ? d[cityIndex].id : 0 + }) + }, + async getServiceCoachList({ + commit, + state + }, param) { + let { + coach_format = 1 + } = $store.state.config.configInfo + let methodModel = coach_format == 1 ? 'serviceCoachList' : 'typeServiceCoachList' + let d = await $api.service[methodModel](param) + let oldList = state.list; + let newList = d; + let list = {} + if (param.page == 1) { + list = newList; + } else { + newList.data = oldList.data.concat(newList.data) + list = newList; + } + commit('updateTechnicianItem', { + key: 'list', + val: list + }) + } + }, +} diff --git a/store/modules/user.js b/store/modules/user.js new file mode 100644 index 0000000..5be052e --- /dev/null +++ b/store/modules/user.js @@ -0,0 +1,208 @@ +import $util from "@/utils/index.js" +import $api from "@/api/index.js" +import $store from "@/store/index.js" +import { + req +} from '@/utils/req.js'; +export default { + state: { + autograph: '', + userInfo: {}, + appLogin: '', + loginType: '', + loginPage: '', + isGzhLogin: false, + locationChange: false, + locationChangeUnix: 0, + commonOptions: { + id: 0, + pid: 0, + coupon_atv_id: 0, + admin_id: 0, + coach_id: 0, + channel_id: 0, + }, + location: {}, + isShowAuth: true, + mineInfo: {}, // 用户个人中心 + userPageType: 1, // 1用户,2技-师 + coachInfo: {}, + haveShieldOper: 0, + personVerifyUrl: '', + fddExtsign: '', + }, + mutations: { + //更新内容 + async updateUserItem(state, item) { + let { + key, + val + } = item + if (key == 'userInfo' && val.id) { + let { + phone = '', + create_time, + alipay_number = '' + } = val + if (phone) { + val.split_phone = phone.substring(0, 3) + '****' + phone.substring(7, 11) + } + val.create_date = $util.formatTime(create_time * 1000, 'YY-M-D') + if (alipay_number) { + let len = alipay_number.length + val.split_alipay_number = alipay_number.substring(0, len > 3 ? 3 : 1) + '***' + if (len > 6) { + val.split_alipay_number += alipay_number.substring(len == 6 ? len - 2 : + len - 3, len) + } + } + } + + if (key == 'mineInfo') { + let { + id: mine_id = -1 + } = val + + if (mine_id == -1) { + let stoerArr = ['userInfo', 'location', 'appLogin', 'loginType', 'isShowLogin', + 'isGzhLogin' + ] + stoerArr.map(key => { + state[key] = key == 'isShowLogin' ? true : '' + uni.setStorageSync(key, key == 'isShowLogin' ? true : '') + }) + } + } + + if (['autograph', 'userInfo', 'location', 'appLogin', 'loginType', 'isShowLogin', 'isGzhLogin'] + .includes(key)) { + uni.setStorageSync(key, val) + } + + + if (key === 'locationChange' && val == true) { + let locationChangeUnix = $util.DateToUnix($util.formatTime(new Date(), 'YY-M-D h:m:s')) + state.locationChangeUnix = locationChangeUnix + } + + state[key] = val + } + }, + actions: { + //获取个人信息 + async getUserInfo({ + commit, + state + }, param) { + let data = await $api.user.userInfo() + commit('updateUserItem', { + key: 'userInfo', + val: data + }) + }, + //获取用户个人中心数据 + async getMineInfo({ + commit, + state + }, param) { + let data = await $api.mine.index() + let { + id = 0, + fx_status + } = data + if (!id) { + data = { + id: -1 + } + } + let { + fx_check = 0 + } = $store.state.config.configInfo + data.is_fx = !fx_check || (fx_check && fx_status == 2) + commit('updateUserItem', { + key: 'mineInfo', + val: data + }) + }, + //获取技-师信息 + async getCoachInfo({ + commit, + state + }, param) { + let data = await $api.technician.coachInfo() + commit('updateUserItem', { + key: 'coachInfo', + val: data + }) + }, + // 获取用户信息 + async getAuthUserProfile({ + commit, + state + }, param) { + let { + nickName, + avatarUrl + } = param + await $api.user.userUpdate(param) + let data = Object.assign({}, state.userInfo, { + nickName, + avatarUrl + }) + commit('updateUserItem', { + key: 'userInfo', + val: data + }) + }, + // 获取手机号 + async getAuthPhone({ + commit, + state + }, { + e = { + detail: {} + }, + must = false + } = {}) { + let { + encryptedData = '', iv = '' + } = e.detail; + let phone = '' + if (encryptedData && iv) { + let phone = await $api.user.reportPhone({ + encryptedData, + iv + }) + let data = Object.assign({}, state.userInfo, { + phone + }) + commit('updateUserItem', { + key: 'userInfo', + val: data + }) + return phone; + } + }, + // 更新公共参数 + async updateCommonOptions({ + commit, + state + }, param) { + let target = {} + if (param.scene) { + let res = await $api.base.getWxCodeData({ + code_id: param.scene + }) + target = Object.assign({}, state.commonOptions, res.data) + } else { + target = Object.assign({}, state.commonOptions, param) + } + let data = $util.pick(target, ['id', 'pid', 'coupon_atv_id', 'admin_id', 'channel_id', 'coach_id']) + commit('updateUserItem', { + key: 'commonOptions', + val: data + }) + return target + } + } +} \ No newline at end of file diff --git a/styles/1px.wxss b/styles/1px.wxss new file mode 100644 index 0000000..809cb42 --- /dev/null +++ b/styles/1px.wxss @@ -0,0 +1,102 @@ +/* 1px方案,改变border的颜色即可 */ +.b-1px, .b-1px-t, .b-1px-b, .b-1px-tb, .b-1px-l, .b-1px-r { + position: relative; +} + +.b-1px:before { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 200%; + border: 1px solid #eee; + color: #eee; + height: 200%; + transform-origin: left top; + transform: scale(0.5); + box-sizing: border-box; +} + +.b-1px-t:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1px solid #eee; + color: #eee; + transform-origin: 0 0; + transform: scaley(0.5); + box-sizing: border-box; +} + +.b-1px-b:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1px solid #eee; + color: #eee; + transform-origin: 0 100%; + transform: scaley(0.5); + box-sizing: border-box; +} + +.b-1px-tb:before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1px solid #eee; + color: #eee; + transform-origin: 0 0; + transform: scaley(0.5); + box-sizing: border-box; +} + +.b-1px-tb:after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-bottom: 1px solid #eee; + color: #eee; + transform-origin: 0 100%; + transform: scaley(0.5); + box-sizing: border-box; +} + +.b-1px-l::before { + content: " "; + position: absolute; + left: 0; + top: 0; + width: 1px; + bottom: 0; + border-left: 1px solid #eee; + color: #eee; + transform-origin: 0 0; + transform: scalex(0.5); + box-sizing: border-box; +} + +.b-1px-r::after { + content: " "; + position: absolute; + right: 0; + top: 0; + width: 1px; + bottom: 0; + border-right: 1px solid #eee; + color: #eee; + transform-origin: 100% 0; + transform: scalex(0.5); + box-sizing: border-box; +} \ No newline at end of file diff --git a/styles/avatar.wxss b/styles/avatar.wxss new file mode 100644 index 0000000..84d45dc --- /dev/null +++ b/styles/avatar.wxss @@ -0,0 +1,54 @@ +/* 头像 */ +.avatar { + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + /* background: #f4f6f8; */ + color: #fff; + white-space: nowrap; + position: relative; + width: 120rpx; + height: 120rpx; + background-size: cover; + background-position: center; + vertical-align: middle; +} + +.avatar.lg { + width: 160rpx; + height: 160rpx; +} + +.avatar.md { + width: 100rpx; + height: 100rpx; +} + +.avatar.sm { + width: 80rpx; + height: 80rpx; +} + +.avatar-group { + direction: ltl; + unicode-bidi: bidi-override; + display: inline-block; +} + +.avatar-group .avatar { + width: 48rpx; + height: 48rpx; + font-size: 1em; + border-radius: 50%; + margin-left: -20rpx; + border: 4rpx solid white; + vertical-align: middle; + transform: rotateZ(360deg); +} + +.avatar-group .avatar:nth-child(1) { + margin-left: 0rpx; +} diff --git a/styles/base.wxss b/styles/base.wxss new file mode 100644 index 0000000..8251159 --- /dev/null +++ b/styles/base.wxss @@ -0,0 +1,187 @@ + +/* 字体大小 */ +.f-little{font-size: 18rpx;} +.f-icontext{font-size: 22rpx;}/* 很小的文字,一般和图标一起使用 */ +.f-caption{font-size: 24rpx;}/* 辅助描述性文字 */ +.f-desc{font-size: 26rpx;}/* 段落字体 */ +.f-paragraph{font-size: 28rpx;}/* 段落字体 */ +.f-mini-title{font-size: 30rpx;} +.f-title{font-size: 32rpx;}/* 标题 */ +.f-st-title{font-size: 34rpx;}/* 大点的标题 */ +.f-sm-title{font-size: 36rpx;}/* 大点的标题 */ +.f-md-title{font-size: 40rpx;}/* 大点的标题 */ +.f-lg-title{font-size: 42rpx;}/* 大点的标题 */ +.f-big-title{font-size: 46rpx;}/* 大点的标题 */ + + +/* 字体颜色 */ +.c-base{color:#ffffff;}/* 白色 */ +.c-base-rgba{color:rgba(255, 255, 255, 0.6)}/* 白色 */ +.c-black{color: #000000;}/* 黑色 */ +.c-title{color: #232A24}/* 标题/副标题 */ +.c-desc{color:#3D2C1B;}/* 辅助描述性文字 */ +.c-caption{color:#999999;}/* 辅助描述性文字 */ +.c-disable{color: #c7c7c7;}/* 按钮文字禁用 */ +.c-paragraph{color:#666666;}/* 段落字体 */ +.c-success{color:#1BCA62;}/* 成功/链接文字 */ +.c-alipay{color:#01AAF2;}/* 支付宝支付文字 */ +.c-balance{color:#FA7917;}/* 🈷余额支付文字 */ +.c-tips{color:#ffd753;}/* 失效 */ +.c-warning{color:#E82F21;}/* 警告/非法 */ +.c-nodata{color:#cccccc;}/* 链接文字 */ +.c-orange{color:#ff4a00;}/* 首页价格文字 */ +.c-vip{color:#d9cf9a;}/* 充值文字 */ +.c-grey{color:#b9b9b9;}/* 灰色文字 */ +.c-shadow{text-shadow:2rpx 2rpx 2rpx #808080;}/* 字体阴影 */ + + + +/* 填充色 */ +.fill-base{background:#ffffff;}/* 默认 */ +.fill-black{background:#000000;}/* 默认 */ +.fill-body{background:#F7F8FA;}/* 页面 */ +.fill-primary{background:#19c865;}/* 主题色/主要活动按钮 */ +.fill-caption{background:#ffd753;}/* 辅助色 */ +.fill-warning{background:#f12c20;}/* 警告/非法 */ +.fill-second{background:#efeff4;}/* 区块分割线 */ +.fill-space{background: #FCFCFC;}/* 次要活动按钮 */ + +/* 阴影 */ +.box-shadow{box-shadow: 0px 3px 6px 0px rgba(227, 227, 227, 0.47);} +.box-shadow-mini{box-shadow: 2rpx 0 10rpx rgba(4,0,0,0.08);} + +/* 字体样式 */ +text{vertical-align: middle;}/* 上下居中 */ +.text-left{text-align: left;}/* 左对齐 */ +.text-center { text-align: center}/* 中对齐 */ +.text-right {text-align: right}/* 右对齐 */ +.text-justify{text-align: justify;}/* 两端对齐,谨慎使用 */ +.text-justify::after{content: '';width: 100%;display: inline-block;} +.text-delete {text-decoration: line-through}/* 删除线 */ +.text-underline{text-decoration: underline}/* 下划线 */ +.text-bold{ font-weight:bold;}/* 加粗 */ +.text-normal{ font-weight:normal;} + + +/* 文本溢出省略 */ +.ellipsis{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;} +.ellipsis-2{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp:2;overflow: hidden;} +.ellipsis-3{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp:3;overflow: hidden;} +.ellipsis-4{display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp:4;overflow: hidden;} + +/* 最大宽度 */ +.max-100{max-width: 100rpx;} +.max-150{max-width: 150rpx;} +.max-200{max-width: 200rpx;} +.max-270{max-width: 270rpx;} +.max-280{max-width: 280rpx;} +.max-300{max-width: 300rpx;} +.max-350{max-width: 350rpx;} +.max-380{max-width: 380rpx;} +.max-400{max-width: 400rpx;} +.max-446{max-width: 446rpx;} +.max-450{max-width: 450rpx;} +.max-470{max-width: 470rpx;} +.max-500{max-width: 500rpx;} +.max-510{max-width: 510rpx;} +.max-520{max-width: 520rpx;} +.max-540{max-width: 540rpx;} +.max-550{max-width: 550rpx;} +.max-566{max-width: 566rpx;} +.max-580{max-width: 580rpx;} + +/* 外间距 */ +.mg-sm{margin:10rpx;} +.mg-md{margin:20rpx;} +.mg-lg{margin:30rpx;} + +.mt-sm{margin-top:10rpx;} +.mt-md{margin-top:20rpx;} +.mt-lg{margin-top:30rpx;} + +.mr-sm{margin-right:10rpx;} +.mr-md{margin-right:20rpx;} +.mr-lg{margin-right:30rpx;} + +.mb-sm{margin-bottom:10rpx;} +.mb-md{margin-bottom:20rpx;} +.mb-lg{margin-bottom:30rpx;} + +.ml-sm{margin-left:10rpx;} +.ml-md{margin-left:20rpx;} +.ml-lg{margin-left:30rpx;} + + +/* 内间距 */ +.pd-sm{padding:10rpx;} +.pd-md{padding:20rpx;} +.pd-lg{padding:30rpx;} + +.pt-sm{padding-top:10rpx;} +.pt-md{padding-top:20rpx;} +.pt-lg{padding-top:30rpx;} + +.pr-sm{padding-right:10rpx;} +.pr-md{padding-right:20rpx;} +.pr-lg{padding-right:30rpx;} + +.pb-sm{padding-bottom:10rpx;} +.pb-md{padding-bottom:20rpx;} +.pb-lg{padding-bottom:30rpx;} + +.pl-sm{padding-left:10rpx;} +.pl-md{padding-left:20rpx;} +.pl-lg{padding-left:30rpx;} + + +/* 图标尺寸 */ +.icon-xs{width:32rpx; height:32rpx;display: block;font-size: 32rpx;} +.icon-sm{width:44rpx; height:44rpx;display: block;font-size: 44rpx;} +.icon-md{width:60rpx; height:60rpx;display: block;font-size: 60rpx;} +.icon-lg{width:80rpx; height:80rpx;display: block;font-size: 80rpx;} + + +/* 组件间距 */ +.space-sm{height: 10rpx;} +.space-md{height: 20rpx;} +.space-lg{height: 30rpx;} +.space-ht{height: 190rpx;} +.space-body{height: 150rpx;} +.space-safe{height: calc(env(safe-area-inset-bottom) / 2);padding-bottom: calc( env(safe-area-inset-bottom) / 2);} +.space-footer{height: 30rpx;height: calc(30rpx + env(safe-area-inset-bottom) / 2);padding-bottom: calc( env(safe-area-inset-bottom) / 2);} +.space-tabbar-footer{height: 100rpx;height: calc(100rpx + env(safe-area-inset-bottom) / 2);padding-bottom: calc( env(safe-area-inset-bottom) / 2);} +.space-max-footer{height: 180rpx;height: calc(180rpx + env(safe-area-inset-bottom) / 2);padding-bottom: calc(env(safe-area-inset-bottom) / 2);} +.space{height: 1rpx ;background: rgba(216, 216, 216, 0.5);} + + +/* 圆角 */ +.radius{border-radius: 5000rpx;} +.radius-5 {border-radius: 5rpx;} +.radius-10 {border-radius: 10rpx;} +.radius-16 {border-radius: 16rpx;} +.radius-18 {border-radius: 18rpx;} +.radius-20 {border-radius: 20rpx;} +.radius-24 {border-radius: 24rpx;} +.radius-26 {border-radius: 26rpx;} +.radius-32 {border-radius: 32rpx;} +.radius-34 {border-radius: 34rpx;} + +/* 旋转 */ +.rotate-45{transform: rotate(45deg);} +.rotate-90{transform: rotate(90deg);} +.rotate-180{transform: rotate(180deg);} +.rotate-270{transform: rotate(270deg);} + +/* 定位 */ +.rel{position: relative;} +.abs{position: absolute;} +.fix{position: fixed;width: 100%;z-index: 100;} +.fixed-top{position: fixed;left: 0;right: 0;top: 0;z-index: 100;} +.fixed-bottom{position: fixed;left: 0;right: 0;bottom: 0;z-index: 100;} + +/* 灰度 */ +.grayscale {-webkit-filter: grayscale(100%);filter: grayscale(100%);} + + +/* 字体颜色 */ +.icon-font-color{-webkit-background-clip: text;-webkit-text-fill-color: transparent;} \ No newline at end of file diff --git a/styles/button.wxss b/styles/button.wxss new file mode 100644 index 0000000..1ad5b36 --- /dev/null +++ b/styles/button.wxss @@ -0,0 +1,104 @@ +/* button样式修改 */ +button { + font-size: 30rpx; + border-radius: 15rpx; + /* line-height: 96rpx; */ + padding: 0rpx; + margin: 0rpx; + color: #fff; + background: transparent; +} + +button::after { + border-color: transparent; + border-radius: 30rpx; +} + +button.plain::after { + border-color: currentColor; +} + +button[type='grey'] { + color: #999999; + background: #EEEEEE; +} + +/* 订单按钮 */ +button.order { + min-width: 140rpx; + padding: 0 20rpx; + line-height: 52rpx; + color: #5B5B5B; + background: #fff; + border-radius: 8rpx; + border: 1rpx solid #979797; + transform: rotateZ(360deg); + font-size: 26rpx; + font-weight: bold; + display: inline-flex; + align-items: center; + justify-content: center; + margin-left: 20rpx +} + + +/* 购物车按钮 */ +button.reduce, +button.add { + width: 38rpx; + height: 38rpx; + border-radius: 10rpx; + border: 1rpx solid #EEEEEE; + transform: rotateZ(360deg); + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; +} + +button.reduce .iconfont, +button.add .iconfont { + font-size: 24rpx; + line-height: 24rpx; + overflow: hidden; +} + +button.addreduce, +input.addreduce { + min-width: 60rpx; + padding: 0 10rpx; + height: 38rpx; + color: #666666; + font-size: 28rpx; + display: flex; + align-items: center; + justify-content: center; + margin: 0rpx 10rpx; +} + +input.addreduce { + text-align: center; + max-width: 150rpx; +} + + +/* 按钮按下 */ +.button-hover { + opacity: 0.6; +} + +/* 清除按钮默认样式 */ +.clear-btn { + margin: 0; + padding: 0; + background: transparent; + border-radius: 0rpx; + line-height: 1.5; + border: none; + text-align: left; + color: #333; +} + +.clear-btn::after { + border: none; +} diff --git a/styles/icon.wxss b/styles/icon.wxss new file mode 100644 index 0000000..87980da --- /dev/null +++ b/styles/icon.wxss @@ -0,0 +1,1657 @@ +@font-face { + font-family: 'iconfont'; /* Project id 4110196 */ + src: url('https://at.alicdn.com/t/c/font_4110196_r2eepy29ecm.woff2?t=1690765463726') format('woff2'), + url('https://at.alicdn.com/t/c/font_4110196_r2eepy29ecm.woff?t=1690765463726') format('woff'), + url('https://at.alicdn.com/t/c/font_4110196_r2eepy29ecm.ttf?t=1690765463726') format('truetype'); +} +@font-face { + font-family: "iconfont"; /* Project id 2649930 */ + src: url('https://at.alicdn.com/t/c/font_2649930_kwmue8hcdxj.woff2?t=1685093547270') format('woff2'), + url('https://at.alicdn.com/t/c/font_2649930_kwmue8hcdxj.woff?t=1685093547270') format('woff'), + url('https://at.alicdn.com/t/c/font_2649930_kwmue8hcdxj.ttf?t=1685093547270') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + line-height:1; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-kzz:before { + content: "\e90c"; +} + +.icon-kpk:before { + content: "\e932"; +} + +.icon-kzj:before { + content: "\e819"; +} + +.icon-khz:before { + content: "\e9b1"; +} + +.icon-kpb:before { + content: "\e9c3"; +} + +.icon-kdt:before { + content: "\e9c9"; +} + +.icon-khydj:before { + content: "\e97f"; +} + +.icon-kcpss:before { + content: "\e982"; +} + +.icon-kcfmx:before { + content: "\e90d"; +} + +.icon-ksc1:before { + content: "\e945"; +} + +.icon-ksc:before { + content: "\e9c0"; +} + +.icon-kqh1:before { + content: "\e929"; +} + +.icon-kdd2:before { + content: "\e81d"; +} + +.icon-kqh:before { + content: "\e856"; +} + +.icon-kdqr:before { + content: "\e911"; +} + +.icon-kwd:before { + content: "\e918"; +} + +.icon-ktg:before { + content: "\e919"; +} + +.icon-kfs:before { + content: "\e921"; +} + +.icon-shouyi:before { + content: "\e92a"; +} + +.icon-kefu:before { + content: "\e95c"; +} + +.icon-ksy:before { + content: "\e922"; +} + +.icon-qichuyue:before { + content: "\e66e"; +} + +.icon-kfkjy1:before { + content: "\f917"; +} + +.icon-kdzf:before { + content: "\e9a5"; +} + +.icon-kfkjy:before { + content: "\e937"; +} + +.icon-kye:before { + content: "\faf6"; +} + +.icon-khhr2:before { + content: "\e956"; +} + +.icon-kjs:before { + content: "\e917"; +} + +.icon-kqds1:before { + content: "\e9ef"; +} + +.icon-khhr:before { + content: "\e972"; +} + +.icon-dd:before { + content: "\e97b"; +} + +.icon-kqds:before { + content: "\e850"; +} + +.icon-kyhj:before { + content: "\e889"; +} + +.icon-kll:before { + content: "\e831"; +} + +.icon-kdd:before { + content: "\e80d"; +} + +.icon-kpj:before { + content: "\e66f"; +} + +.icon-dizhi:before { + content: "\e871"; +} + +.icon-shijian:before { + content: "\e909"; +} + +.icon-shuxian:before { + content: "\e908"; +} + +.icon-tech:before { + content: "\e905"; +} + +.icon-tuijian:before { + content: "\e906"; +} + +.icon-tuijian1:before { + content: "\e907"; +} + +.icon-czsg:before { + content: "\e902"; +} + +.icon-csmt:before { + content: "\e901"; +} + +.icon-qcbz:before { + content: "\e904"; +} + +.icon-sybp:before { + content: "\e903"; +} + +.icondianqianhetong:before { + content: "\e7b2"; +} + +.iconduanxinyanzhengma:before { + content: "\e61e"; +} + +.iconshoujitianchong:before { + content: "\e6e3"; +} + +.iconemiyanzhengma:before { + content: "\e61b"; +} + +.iconbiaoqianye-dituzhaoren1:before { + content: "\e7ac"; +} + +.iconbiaoqianye-dituzhaoren2:before { + content: "\e7ae"; +} + +.icondituzhaoren2:before { + content: "\e7a1"; +} + +.iconshimingrenzheng:before { + content: "\e7a3"; +} + +.iconzizhirenzheng:before { + content: "\e7a7"; +} + +.iconshaixuan:before { + content: "\e7a8"; +} + +.iconliebiaomoshi2:before { + content: "\e7aa"; +} + +.iconhetongguanli:before { + content: "\e66d"; +} + +.iconfenleiyingyongtongzhi2:before { + content: "\e6a9"; +} + +.iconjingjirenshuoming:before { + content: "\e79f"; +} + +.iconxiangxiazhankai:before { + content: "\e8f2"; +} + +.iconyinhangqia:before { + content: "\e622"; +} + +.icontixingshixin:before { + content: "\ec72"; +} + +.iconwoyaofabu:before { + content: "\e79e"; +} + +.icondaijiedan1:before { + content: "\e78c"; +} + +.iconyijiedan1:before { + content: "\e792"; +} + +.iconyiwancheng1:before { + content: "\e79d"; +} + +.iconedit-fill:before { + content: "\eb5c"; +} + +.iconbianzu-8_2x:before { + content: "\e606"; +} + +.iconbianzu-8_2x_1_:before { + content: "\e607"; +} + +.iconjinrong_financebeifen-2_2x:before { + content: "\e619"; +} + +.iconshangjia_1:before { + content: "\e78f"; +} + +.iconbangdingqudaoshang:before { + content: "\e767"; +} + +.iconbangdingyewuyuan:before { + content: "\e780"; +} + +.icondaizhuandan:before { + content: "\e791"; +} + +.icondaifuwu4:before { + content: "\e795"; +} + +.iconjujuetuikuan:before { + content: "\e796"; +} + +.iconjishidaoda1:before { + content: "\e799"; +} + +.iconjishichufa1:before { + content: "\e79b"; +} + +.iconjishijiedan1:before { + content: "\e79c"; +} + +.icontixianshenqing1:before { + content: "\e7a0"; +} + +.icontixianjilu1:before { + content: "\e7a2"; +} + +.iconlianxifangshi:before { + content: "\e7a4"; +} + +.icontongyituikuan:before { + content: "\e7a5"; +} + +.iconyongjinxinxi1:before { + content: "\e7a6"; +} + +.iconwodeshouyi2:before { + content: "\e7a9"; +} + +.iconyiwancheng:before { + content: "\e7ab"; +} + +.iconwodeyaoqing1:before { + content: "\e7ad"; +} + +.iconzhanghaoshezhi:before { + content: "\e7b0"; +} + +.iconshenqingzhong:before { + content: "\e7b3"; +} + +.iconpeiwanguan2:before { + content: "\e760"; +} + +.iconpeiwanguan1:before { + content: "\e77f"; +} + +.iconshangcheng2:before { + content: "\e75e"; +} + +.icondaipinglun:before { + content: "\e755"; +} + +.icondaifukuan:before { + content: "\e756"; +} + +.icondaifuwu3:before { + content: "\e758"; +} + +.icondizhi2:before { + content: "\e759"; +} + +.icondituzhaoren1:before { + content: "\e75c"; +} + +.icondingdan11:before { + content: "\e75f"; +} + +.icongexingbiaoqian:before { + content: "\e765"; +} + +.iconhezuohuoban:before { + content: "\e766"; +} + +.icondizhiguanli3:before { + content: "\e768"; +} + +.iconfuwuzhong3:before { + content: "\e76c"; +} + +.iconjishixiangqing:before { + content: "\e772"; +} + +.iconjishi11:before { + content: "\e774"; +} + +.iconlianxikefu3:before { + content: "\e783"; +} + +.icondianpu:before { + content: "\e784"; +} + +.iconpinglun3:before { + content: "\e785"; +} + +.iconqiehuan:before { + content: "\e78b"; +} + +.iconshoucang23:before { + content: "\e78d"; +} + +.iconshenqingjishi3:before { + content: "\e78e"; +} + +.iconwode12:before { + content: "\e793"; +} + +.icontuikuan3:before { + content: "\e794"; +} + +.iconwoshiqudao2:before { + content: "\e797"; +} + +.iconwentifankui4:before { + content: "\e798"; +} + +.iconshoucang13:before { + content: "\e79a"; +} + +.iconbuxihuan-xuanzhong:before { + content: "\e753"; +} + +.iconbuxihuan:before { + content: "\e754"; +} + +.icondizhiguanli2:before { + content: "\e757"; +} + +.iconfaxian-1:before { + content: "\e75b"; +} + +.iconfaxian-2:before { + content: "\e75d"; +} + +.iconhehuoren1:before { + content: "\e762"; +} + +.iconpeiwanguan:before { + content: "\e76a"; +} + +.iconpinglun2:before { + content: "\e76b"; +} + +.iconshangchuantupian:before { + content: "\e76d"; +} + +.iconshezhi:before { + content: "\e76e"; +} + +.iconshenqingfenxiaoyuan:before { + content: "\e76f"; +} + +.iconshouye12:before { + content: "\e770"; +} + +.iconshichang:before { + content: "\e771"; +} + +.iconshouye2:before { + content: "\e777"; +} + +.iconwentifankui3:before { + content: "\e778"; +} + +.iconwode-1:before { + content: "\e77a"; +} + +.iconwode-2:before { + content: "\e781"; +} + +.iconxiaoxi2:before { + content: "\e786"; +} + +.iconwoshiqudaoshang:before { + content: "\e782"; +} + +.iconwoyaoruzhu:before { + content: "\e788"; +} + +.iconxiaoxi1:before { + content: "\e789"; +} + +.iconxiangqing2:before { + content: "\e78a"; +} + +.iconshoucang22:before { + content: "\e72b"; +} + +.iconshoucang12:before { + content: "\e730"; +} + +.icondizhi_1:before { + content: "\e737"; +} + +.icondadianhua_1:before { + content: "\e73d"; +} + +.iconshipin2:before { + content: "\e735"; +} + +.iconbangdingjishi1:before { + content: "\e723"; +} + +.icondaifuwu2:before { + content: "\e72a"; +} + +.icondaipingjia2:before { + content: "\e72c"; +} + +.icondaizhifu2:before { + content: "\e72d"; +} + +.icondizhi1:before { + content: "\e72e"; +} + +.icondizhiguanli1:before { + content: "\e72f"; +} + +.icondingdan1:before { + content: "\e731"; +} + +.icondianming:before { + content: "\e732"; +} + +.iconfuwuzhong2:before { + content: "\e733"; +} + +.icongongsi:before { + content: "\e734"; +} + +.iconjingxiaoshang:before { + content: "\e736"; +} + +.iconjuli3:before { + content: "\e738"; +} + +.iconjishi1:before { + content: "\e739"; +} + +.iconlianxikefu2:before { + content: "\e73a"; +} + +.iconmendian1:before { + content: "\e73b"; +} + +.iconpingjia:before { + content: "\e73c"; +} + +.iconqiehuanjishiduan2:before { + content: "\e740"; +} + +.iconputonghuiyuan:before { + content: "\e741"; +} + +.iconshijian1:before { + content: "\e742"; +} + +.iconshenqingjishi2:before { + content: "\e743"; +} + +.iconshoucang:before { + content: "\e745"; +} + +.iconshouye1:before { + content: "\e746"; +} + +.iconwentifankui2:before { + content: "\e747"; +} + +.icontuiguanghaibao1:before { + content: "\e748"; +} + +.iconwode11:before { + content: "\e749"; +} + +.iconwodeshouyi1:before { + content: "\e74b"; +} + +.iconwodefensi:before { + content: "\e74c"; +} + +.iconwoshiqudao1:before { + content: "\e74d"; +} + +.iconyingyezhizhao:before { + content: "\e74e"; +} + +.iconshenqingfenxiaoshang:before { + content: "\e74f"; +} + +.icontuikuan2:before { + content: "\e750"; +} + +.iconyingyeshijian:before { + content: "\e751"; +} + +.iconzuizaokeyue1:before { + content: "\e752"; +} + +.icon-hezuoguanxi:before { + content: "\e8a9"; +} + +.iconpinglun1:before { + content: "\e70d"; +} + +.iconjuli2:before { + content: "\e70e"; +} + +.iconshoucang11:before { + content: "\e713"; +} + +.iconshoucang21:before { + content: "\e715"; +} + +.iconxiangqing1:before { + content: "\e716"; +} + +.iconcamera-fill:before { + content: "\e711"; +} + +.icondaipingjia1:before { + content: "\e718"; +} + +.icondaifuwu1:before { + content: "\e719"; +} + +.icondaizhifu1:before { + content: "\e71a"; +} + +.icondizhi:before { + content: "\e71b"; +} + +.iconlianxikefu1:before { + content: "\e71c"; +} + +.iconhehuoren:before { + content: "\e71d"; +} + +.iconpingbiyonghu:before { + content: "\e71e"; +} + +.iconshenqingjishi1:before { + content: "\e71f"; +} + +.icontixianjilu:before { + content: "\e720"; +} + +.icontuikuan1:before { + content: "\e721"; +} + +.iconfuwuzhong1:before { + content: "\e722"; +} + +.iconwentifankui1:before { + content: "\e724"; +} + +.iconwodeyaoqing:before { + content: "\e725"; +} + +.iconqiehuanjishiduan1:before { + content: "\e726"; +} + +.iconwodeyouhuiquan:before { + content: "\e727"; +} + +.iconwoshiqudao:before { + content: "\e728"; +} + +.iconyongjinliushui:before { + content: "\e729"; +} + +.icondingdan4:before { + content: "\e709"; +} + +.iconpingfen1:before { + content: "\e70a"; +} + +.iconjuli1:before { + content: "\e70b"; +} + +.iconanmo3:before { + content: "\e70c"; +} + +.iconshangjia:before { + content: "\e70f"; +} + +.iconshijian:before { + content: "\e710"; +} + +.iconshouye31:before { + content: "\e712"; +} + +.iconwode3:before { + content: "\e714"; +} + +.iconzuizaokeyue:before { + content: "\e717"; +} + +.icon-account:before { + content: "\e610"; +} + +.icon-alipay-fill:before { + content: "\e669"; +} + +.iconshipin:before { + content: "\e618"; +} + +.iconshang:before { + content: "\e862"; +} + +.iconxia:before { + content: "\e863"; +} + +.icon-android:before { + content: "\e63d"; +} + +.icon-play-video:before { + content: "\e66e"; +} + +.icon-shield:before { + content: "\e65d"; +} + +.icondingdanguanli:before { + content: "\e700"; +} + +.iconshouhuodepinglun:before { + content: "\e703"; +} + +.iconxinzengguanzhu:before { + content: "\e706"; +} + +.icontixianshenqing:before { + content: "\e707"; +} + +.iconyongjinxinxi:before { + content: "\e708"; +} + +.iconkeyuyue:before { + content: "\e6ff"; +} + +.icon-bofang:before { + content: "\e621"; +} + +.icon-caidan:before { + content: "\e790"; +} + +.icon-edit:before { + content: "\ec7c"; +} + +.icon-kefuwu:before { + content: "\e702"; +} + +.icon-dongtai2:before { + content: "\e6f7"; +} + +.icon-dongtai1:before { + content: "\e6fb"; +} + +.icon-shoucang-fill:before { + content: "\e6fc"; +} + +.icon-shoucang:before { + content: "\e6fd"; +} + +.icon-pinglun:before { + content: "\e6fe"; +} + +.iconshengji:before { + content: "\e6f4"; +} + +.icon-required:before { + content: "\e649"; +} + +.iconchefeitixianjilu:before { + content: "\e6f0"; +} + +.icondengjiguanli:before { + content: "\e6f1"; +} + +.iconyanzhengma:before { + content: "\e624"; +} + +.icondangqianweizhi:before { + content: "\e6de"; +} + +.iconshijianguanli2:before { + content: "\e6df"; +} + +.iconweizhigengxin1:before { + content: "\e6e0"; +} + +.iconyijianbaojing:before { + content: "\e6e1"; +} + +.icontishishuoming:before { + content: "\e64c"; +} + +.iconshuyi_shuoming:before { + content: "\e668"; +} + +.icon-alipay:before { + content: "\e68a"; +} + +.icon-level-line:before { + content: "\e6dd"; +} + +.icon-level-icon:before { + content: "\e6d4"; +} + +.icon-xiuxi:before { + content: "\e667"; +} + +.icon-jiedan:before { + content: "\e625"; +} + +.icon-zaixian:before { + content: "\e89d"; +} + +.icon-caiwuguanli:before { + content: "\e617"; +} + +.icon-guanbi-fill:before { + content: "\e85f"; +} + +.iconwodeshoucang:before { + content: "\e6c8"; +} + +.iconwodekaquan:before { + content: "\e6c9"; +} + +.iconshouye:before { + content: "\e6e2"; +} + +.icontushucxuanzebofangtiaozhuan:before { + content: "\e677"; +} + +.icongengduo1:before { + content: "\e644"; +} + +.iconbianjiziliao:before { + content: "\e6c4"; +} + +.iconchapingshensu:before { + content: "\e6c5"; +} + +.iconchefeimingxi:before { + content: "\e6c6"; +} + +.iconchongzhijine:before { + content: "\e6c7"; +} + +.iconfenchengmingxi:before { + content: "\e6ca"; +} + +.iconfenxiang:before { + content: "\e6cb"; +} + +.iconjifenmingxi:before { + content: "\e6cc"; +} + +.iconguanbi:before { + content: "\e6cd"; +} + +.iconqiehuanyonghuduan:before { + content: "\e6ce"; +} + +.iconjiazhongtongji:before { + content: "\e6cf"; +} + +.iconriqi:before { + content: "\e6d0"; +} + +.iconshangchuanzhaopian:before { + content: "\e6d1"; +} + +.iconsousuo:before { + content: "\e6d2"; +} + +.iconshijianguanli1:before { + content: "\e6d3"; +} + +.iconweizhigengxin:before { + content: "\e6d5"; +} + +.iconwentifankui:before { + content: "\e6d6"; +} + +.iconwuliaoshangcheng:before { + content: "\e6d7"; +} + +.iconyejimingxi:before { + content: "\e6d9"; +} + +.iconzhuxiaozhanghu:before { + content: "\e6db"; +} + +.iconwoyaojieyue:before { + content: "\e6dc"; +} + +.icongengduo:before { + content: "\e6b8"; +} + +.iconguan:before { + content: "\e6bc"; +} + +.iconkai:before { + content: "\e6c1"; +} + +.icon-weixin:before { + content: "\e627"; +} + +.icon-apple:before { + content: "\e60f"; +} + +.icongerenxinxi:before { + content: "\e616"; +} + +.iconzhiweixiangqing:before { + content: "\e6e5"; +} + +.icon-account-line:before { + content: "\e688"; +} + +.icon-person-accounts:before { + content: "\e6ba"; +} + +.icon-chaifenyemian:before { + content: "\e6c0"; +} + +.icon-diy:before { + content: "\e629"; +} + +.icon-zuzhi:before { + content: "\eaaa"; +} + +.icon-qudao:before { + content: "\e63b"; +} + +.iconjishijiedan:before { + content: "\e6b9"; +} + +.iconerweima3:before { + content: "\e84c"; +} + +.iconerweima:before { + content: "\e623"; +} + +.iconjishidaoda:before { + content: "\e6b3"; +} + +.iconjishichufa:before { + content: "\e6b5"; +} + +.iconjishifuwu:before { + content: "\e6b6"; +} + +.iconjishiwancheng:before { + content: "\e6bd"; +} + +.iconyijiedan:before { + content: "\e6be"; +} + +.icondaijiedan:before { + content: "\e6bf"; +} + +.iconjingbao:before { + content: "\e636"; +} + +.iconanmo1:before { + content: "\e857"; +} + +.iconanmo2:before { + content: "\e858"; +} + +.iconchongzhi:before { + content: "\e859"; +} + +.iconbodadianhua:before { + content: "\e85a"; +} + +.icondaipingjia:before { + content: "\e85b"; +} + +.icondizhiguanli:before { + content: "\e85c"; +} + +.icondingdan2:before { + content: "\e85d"; +} + +.iconfuwuzhong:before { + content: "\e85e"; +} + +.iconjifen3:before { + content: "\e860"; +} + +.icondingdan3:before { + content: "\e861"; +} + +.iconjuli:before { + content: "\e867"; +} + +.iconlianxikefu:before { + content: "\e868"; +} + +.iconbangdingjishi:before { + content: "\e869"; +} + +.iconpinglun:before { + content: "\e86a"; +} + +.iconqiehuanjishiduan:before { + content: "\e86b"; +} + +.icondaizhifu:before { + content: "\e86c"; +} + +.icondaifuwu:before { + content: "\e86d"; +} + +.iconshaixuanshang-1:before { + content: "\e870"; +} + +.iconshijianguanli:before { + content: "\e873"; +} + +.iconshipin1:before { + content: "\e875"; +} + +.iconshoucang1:before { + content: "\e876"; +} + +.iconshenqingjishi:before { + content: "\e877"; +} + +.iconshoucangjishi:before { + content: "\e878"; +} + +.iconshouye21:before { + content: "\e879"; +} + +.iconshouye11:before { + content: "\e87a"; +} + +.iconpingfen:before { + content: "\e87b"; +} + +.icontuikuan:before { + content: "\e87c"; +} + +.icontuiguanghaibao:before { + content: "\e87d"; +} + +.iconwodeshouyi:before { + content: "\e87e"; +} + +.iconxiangqing:before { + content: "\e87f"; +} + +.iconwodetuandui1:before { + content: "\e880"; +} + +.iconshaixuanxia-1:before { + content: "\e881"; +} + +.iconsousuo1:before { + content: "\e883"; +} + +.iconshoucang2:before { + content: "\e884"; +} + +.iconwode2:before { + content: "\e885"; +} + +.iconyaoqingyouli:before { + content: "\e886"; +} + +.iconwode1:before { + content: "\e887"; +} + +.icon-down-fill:before { + content: "\e665"; +} + +.icon-up-fill:before { + content: "\e666"; +} + +.iconweixin:before { + content: "\e64f"; +} + +.icon-share:before { + content: "\e638"; +} + +.iconnan-xiaotu:before { + content: "\e7b1"; +} + +.iconnv-xiaotu:before { + content: "\e7b4"; +} + +.icontongzhi:before { + content: "\e64e"; +} + +.iconsanjiao_xia:before { + content: "\e671"; +} + +.iconbalance:before { + content: "\e763"; +} + +.iconweixinzhifu1:before { + content: "\e764"; +} + +.iconqianbao:before { + content: "\e829"; +} + +.iconhuiyuanka:before { + content: "\e7af"; +} + +.icon-liuyanguanli:before { + content: "\e6bb"; +} + +.iconguanzhu:before { + content: "\e68c"; +} + +.iconguanzhuxuanzhong:before { + content: "\e689"; +} + +.iconyduixingxingkongxin:before { + content: "\e779"; +} + +.iconyduixingxingshixin:before { + content: "\e77b"; +} + +.icon-yuyue:before { + content: "\e6da"; +} + +.icon-yingxiao:before { + content: "\e701"; +} + +.icon-gouwuche-fill:before { + content: "\e600"; +} + +.icon-dingwei-fill:before { + content: "\e602"; +} + +.icon-left:before { + content: "\e604"; +} + +.icon-right:before { + content: "\e608"; +} + +.icon-close:before { + content: "\e609"; +} + +.icon-add:before { + content: "\e611"; +} + +.icon-gouwudai:before { + content: "\e73e"; +} + +.icon-caiwu:before { + content: "\e6a7"; +} + +.icon-kehu:before { + content: "\e6ad"; +} + +.icon-member:before { + content: "\e761"; +} + +.icon-shenhe:before { + content: "\e695"; +} + +.icon-xitong:before { + content: "\e6a8"; +} + +.icon-daifukuan:before { + content: "\e787"; +} + +.icon-dingdanguanli:before { + content: "\e632"; +} + +.icon-shangpin:before { + content: "\e63c"; +} + +.icon-dianpu:before { + content: "\e66c"; +} + +.icon-daihexiao:before { + content: "\e6f8"; +} + +.icon-yiwancheng:before { + content: "\e6f9"; +} + +.icon-pingjia:before { + content: "\e77e"; +} + +.icon-home:before { + content: "\e775"; +} + +.icon-home-fill:before { + content: "\e776"; +} + +.icon-dingwei:before { + content: "\e612"; +} + +.icon-shouhouguanli:before { + content: "\e773"; +} + +.icon-jishi:before { + content: "\e652"; +} + +.icon-wodeshouhou:before { + content: "\e60d"; +} + +.icon-tongzhi-fill:before { + content: "\e615"; +} + +.icon-jishi-fill:before { + content: "\e601"; +} + +.icon-tuichu:before { + content: "\e603"; +} + +.icon-camera:before { + content: "\e60e"; +} + +.icon-down:before { + content: "\e60a"; +} + +.icon-xuanze:before { + content: "\e77c"; +} + +.icon-xuanze-fill:before { + content: "\e77d"; +} + +.icon-switch:before { + content: "\e642"; +} + +.icon-switch-on:before { + content: "\e643"; +} + +.icon-jian-fill:before { + content: "\e61f"; +} + +.icon-jian:before { + content: "\e6fa"; +} + +.icon-radio-fill:before { + content: "\e620"; +} + +.icon-gouwudai-fill:before { + content: "\e6d8"; +} + +.icon-eyeclose:before { + content: "\e6ab"; +} + +.icon-eyeopen:before { + content: "\e6ac"; +} + +.icon-mima:before { + content: "\e69e"; +} + +.icon-username:before { + content: "\e6b7"; +} + +.icon-mine:before { + content: "\e6f5"; +} + +.icon-mine-fill:before { + content: "\e6f6"; +} + +.icon-tongzhi:before { + content: "\e60b"; +} + +.icon-jia-bold:before { + content: "\e613"; +} + +.icon-jian-bold:before { + content: "\e614"; +} + +.icon-tianjia:before { + content: "\e653"; +} + +.icon-zhuanhuan:before { + content: "\e6c2"; +} + +.icon-xiaochengxu:before { + content: "\e6c3"; +} + +.icon-warn:before { + content: "\e6a5"; +} + +.icon-weirenzheng:before { + content: "\e63a"; +} + +.icon-biaoqian:before { + content: "\e60c"; +} + +.icon-shuaxin:before { + content: "\e654"; +} diff --git a/styles/index.wxss b/styles/index.wxss new file mode 100644 index 0000000..b9a2929 --- /dev/null +++ b/styles/index.wxss @@ -0,0 +1,9 @@ +@import './1px.wxss'; +@import './avatar.wxss'; +@import './base.wxss'; +@import './button.wxss'; +@import './icon.wxss'; +@import './layout.wxss'; +@import './navbar.wxss'; +@import './popup.wxss'; +@import './pages.wxss'; diff --git a/styles/layout.wxss b/styles/layout.wxss new file mode 100644 index 0000000..b9ecb6d --- /dev/null +++ b/styles/layout.wxss @@ -0,0 +1,60 @@ +/*flex布局,可以自己定义适合自己的*/ +.flex { + display: flex; +} + +.flex-1 { + flex: 1; +} + +.flex-column { + display: flex; + flex-direction: column; +} + +.flex-warp { + display: flex; + flex-wrap: wrap; +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} + +.flex-between { + display: flex; + align-items: center; + justify-content: space-between; +} + +.flex-x-center { + display: flex; + justify-content: center; +} + +.flex-x-between { + display: flex; + justify-content: space-between; +} + +.flex-y-center { + display: flex; + align-items: center; +} + +.flex-y-start { + display: flex; + align-items: flex-start; +} + +.flex-y-end { + display: flex; + align-items: flex-end; +} + +.flex-y-baseline { + display: flex; + align-items: baseline; +} diff --git a/styles/navbar.wxss b/styles/navbar.wxss new file mode 100644 index 0000000..a701bbd --- /dev/null +++ b/styles/navbar.wxss @@ -0,0 +1,100 @@ +/* ios_自定义navBar */ +.back-user-ios { + width: 87px; + height: 32px; + border-radius: 32px; + margin-top: 6px; + display: flex; + align-items: center; + justify-content: center; + background: #fff; + border: 1px solid #eeeeee; + margin-left: 24rpx; + transform: rotateZ(360deg); +} + +.back-user-ios .back-user_avatar { + width: 24px; + height: 24px; + border-radius: 50%; + background: #f4f6f8; +} + +.back-user-ios .back-user_text { + font-size: 11px; + line-height: 44px; + margin-left: 5px; +} + +/* .nav_c_text { + line-height: 44px; + font-size: 16px; +} */ + +/* android_自定义navBar */ +.back-user-android { + /* #ifdef MP-BAIDU */ + width: 74.5px; + height: 28px; + border-radius: 28px; + margin-top: 5px; + /* #endif */ + /* #ifndef MP-BAIDU */ + width: 87px; + height: 32px; + border-radius: 32px; + margin-top: 6px; + /* #endif */ + display: flex; + align-items: center; + justify-content: center; + background: #fff; + border: 1px solid #eeeeee; + margin-left: 24rpx; + transform: rotateZ(360deg); +} + + +.back-user-android .back-user_avatar { + /* #ifdef MP-BAIDU */ + width: 20px; + height: 20px; + /* #endif */ + /* #ifndef MP-BAIDU */ + width: 24px; + height: 24px; + /* #endif */ + border-radius: 50%; + background: #f4f6f8; +} + + +.back-user-android .back-user_text { + /* #ifdef MP-BAIDU */ + font-size: 10px; + line-height: 28px; + margin-left: 3px; + /* #endif */ + /* #ifndef MP-BAIDU */ + font-size: 11px; + line-height: 44px; + margin-left: 5px; + /* #endif */ +} + +.back-user-ios.none, +.back-user-android.none { + color: #fff; + background: none; +} + +.nav_c_text { + /* #ifdef MP-BAIDU */ + line-height: 36px; + font-size: 15px; + /* #endif */ + /* #ifndef MP-BAIDU */ + line-height: 44px; + font-size: 16px; + /* #endif */ +} diff --git a/styles/pages.wxss b/styles/pages.wxss new file mode 100644 index 0000000..55603f1 --- /dev/null +++ b/styles/pages.wxss @@ -0,0 +1,440 @@ +.page-height { + width: 100%; + height: 100vh; + background: #fff; +} + +/* 单选/多选按钮 */ +.pay-icon { + font-size: 40rpx; +} + +/* 分享按钮 */ +.common-share-btn { + right: 30rpx; + bottom: 140rpx; + width: 90rpx; + height: 90rpx; + margin-bottom: calc(env(safe-area-inset-bottom) / 2); + + .iconfont { + font-size: 40rpx; + } +} + +.common-share-btn.detail { + bottom: 170rpx; +} + +.map-info { + .iconjuli { + font-size: 42rpx; + } + + .icon-down { + transform: scale(0.5); + } +} + +/* 海报 */ +.hideCanvasView { + position: relative; + + .hideCanvas { + position: absolute; + left: -9999rpx; + top: -9999rpx + } +} + +/* 技-师页面 */ +.pages-technician { + .fix-info { + height: 225rpx; + + .space-top { + width: 100%; + height: 40rpx; + top: 0; + } + + .search-info { + width: 100%; + top: 0; + + .city-info { + width: 170rpx; + + .iconfont { + font-size: 20rpx; + transform: scale(0.5); + } + } + } + } + + .fix-info.choose { + height: 135rpx; + } + + + .choose-city-popup { + padding: 0 32rpx 0 30rpx; + + .city-img { + width: 688rpx; + height: 364rpx; + } + + .text { + top: 256rpx; + left: 78rpx; + width: 606rpx; + } + + .flex-between { + margin-top: 25rpx; + + .item-btn { + width: 238rpx; + height: 85rpx; + background: #F9F9F9; + } + } + + } +} + + +/* 订单相关页面 */ +.order-pages { + + .service-type-item { + min-width: 143rpx; + height: 59rpx; + padding: 0 10rpx; + background: #F5F5F5; + border-radius: 8rpx + } + + .address-info { + .address-icon { + width: 64rpx; + height: 64rpx; + + .iconfont { + font-size: 38rpx; + } + } + + .username { + font-size: 30rpx; + } + } + + .store-info { + + .item-icon { + width: 40rpx; + height: 40rpx; + + .iconfont { + font-size: 28rpx; + } + + .item-icon { + top: 0; + left: 0; + opacity: 0.1; + } + } + } + + + + .item-child { + .bell-tag { + top: 0; + left: 0; + width: 120rpx; + height: 40rpx; + border-radius: 16rpx 0 16rpx 0; + } + + .grayscale { + + .c-title, + .c-warning { + color: #999; + } + } + + .cover { + width: 155rpx; + height: 155rpx; + } + + .refund-img { + width: 196rpx; + height: 196rpx; + } + + .refund-img:nth-child(3n) { + margin-right: 0 + } + } + + .item-textarea { + width: 570rpx; + height: 300rpx; + } + + .menu-list { + margin-top: -30rpx; + + .menu-title { + height: 90rpx; + + .iconfont { + font-size: 24rpx; + } + } + + .menu-line { + width: 80%; + top: 76rpx; + left: 10%; + } + + .item-child { + width: 20%; + margin: 10rpx 0; + + .item-img { + width: 72rpx; + height: 72rpx; + z-index: 9; + border: 1px solid #666; + + .iconfont { + font-size: 40rpx; + } + } + } + + } + + .add-bell { + .menu-line { + width: 70%; + top: 76rpx; + left: 15%; + } + + .item-child { + width: 33.33%; + } + + } + + .order-agent-info { + color: #4A4A4A; + + .coach-img { + width: 94rpx; + height: 94rpx; + } + + .title { + width: 200rpx; + font-weight: bold; + } + + .text { + color: #777; + font-size: 26rpx; + } + } + + .copy-btn { + width: 60rpx; + height: 32rpx; + border: 1rpx solid #fff; + transform: rotateZ(360deg); + } + + .copy-btn.fill { + color: 333; + borderColor: #eee; + background: #eee; + padding: 2rpx 6rpx; + } + + .copy-btn.span { + padding: 2rpx 6rpx; + } + + .footer-info { + + bottom: 0; + + .item-btn { + min-width: 150rpx; + height: 64rpx; + padding: 0 10rpx; + background: #EEEEEE; + } + + } + +} + + +/* 申请表单相关页面 */ +.apply-pages { + .apply-form { + + .item-text { + width: 200rpx; + height: 30rpx; + line-height: 30rpx; + font-size: 30rpx; + color: #1F1F1F; + } + + .item-input { + min-height: 30rpx; + line-height: 30rpx; + padding: 25rpx 0; + font-size: 26rpx; + color: #A9A9A9; + } + + .item-input.text { + padding: 30rpx 0; + } + + .item-textarea { + width: 630rpx; + height: 400rpx; + color: #A9A9A9; + } + + .icon-switch, + .icon-switch-on { + font-size: 90rpx; + line-height: 46rpx; + } + } +} + +/* 储值明细记录 */ +.stored-record-pages { + .list-time { + z-index: 99999; + + .item-child { + width: 50%; + height: 95rpx; + + .iconfont { + font-size: 28rpx; + } + } + } + + movable-area, + movable-view { + width: 686rpx; + height: 148rpx; + overflow: hidden; + } + + .touch-item { + font-size: 14px; + display: flex; + justify-content: space-between; + width: 686rpx; + height: 100%; + overflow: hidden + } + + .content { + width: 100%; + -webkit-transition: all 0.4s; + transition: all 0.4s; + -webkit-transform: translateX(270rpx); + transform: translateX(270rpx); + margin-left: -270rpx; + } + + .delete-btn { + width: 120rpx; + height: 100%; + color: #fff; + border-radius: 0 15rpx 15rpx 0; + -webkit-transform: translateX(270rpx); + transform: translateX(270rpx); + -webkit-transition: all 0.4s; + transition: all 0.4s; + } + + .touch-move-active .content, + .touch-move-active .delete-btn { + -webkit-transform: translateX(0); + transform: translateX(0); + } + + .popup-choose-time { + .item-child { + width: 50%; + } + } +} + +.container { + width: 100%; +} + +/* 技-师等级 */ +.technician-level { + height: 333rpx; + background: linear-gradient(206deg, #464749 0%, #020202 30%, #000000 100%); + border-radius: 16rpx; + transform: rotateZ(360deg); + overflow: hidden; + + .icon-level-icon { + font-size: 505rpx; + top: -86rpx; + left: 40rpx; + z-index: -1; + } + + .level-icon-img { + top: 22rpx; + right: 41rpx; + width: 111rpx; + height: 111rpx; + } + + .level-title { + font-size: 38rpx; + color: #F9F9F9; + } + + .level-line { + width: 100%; + height: 20rpx; + background: #2D333C; + } + + .level-line.cur { + top: 0; + left: 0; + } + + .f-icontext { + color: rgba(255, 255, 255, 0.7); + } +} \ No newline at end of file diff --git a/styles/popup.wxss b/styles/popup.wxss new file mode 100644 index 0000000..9bfac09 --- /dev/null +++ b/styles/popup.wxss @@ -0,0 +1,72 @@ +.common-popup-content { + width: 620rpx; + height: auto; + padding: 50rpx; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + + .title { + font-size: 40rpx; + font-family: Microsoft YaHei; + font-weight: bold; + color: #333; + } + + .desc, + .name { + font-size: 24rpx; + font-family: Microsoft YaHei; + font-weight: 400; + color: #666; + margin-top: 5rpx; + } + + .name { + color: #999; + margin-top: 15rpx; + } + + .image { + width: 200rpx; + height: 200rpx; + border-radius: 15rpx; + margin-top: 40rpx; + } + + .image.middle { + width: 300rpx; + height: 300rpx; + } + + .input { + width: 480rpx; + height: 110rpx; + background: #F7F7F7; + } + .textarea { + width: 480rpx; + height: 300rpx; + background: #F7F7F7; + } + + .button { + display: flex; + align-items: center; + justify-content: center; + margin-top: 50rpx; + + .item-child { + width: 240rpx; + height: 90rpx; + color: #666; + background: #EEEEEE; + border-radius: 45rpx; + margin: 0 20rpx; + display: flex; + align-items: center; + justify-content: center; + } + } +} diff --git a/technician/pages/apply.vue b/technician/pages/apply.vue new file mode 100644 index 0000000..fc5b116 --- /dev/null +++ b/technician/pages/apply.vue @@ -0,0 +1,704 @@ + + + + + + \ No newline at end of file diff --git a/technician/pages/bad-comments/box.vue b/technician/pages/bad-comments/box.vue new file mode 100644 index 0000000..ef458d8 --- /dev/null +++ b/technician/pages/bad-comments/box.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/technician/pages/bad-comments/choice.vue b/technician/pages/bad-comments/choice.vue new file mode 100644 index 0000000..50fdd89 --- /dev/null +++ b/technician/pages/bad-comments/choice.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/technician/pages/bad-comments/list.vue b/technician/pages/bad-comments/list.vue new file mode 100644 index 0000000..95f2758 --- /dev/null +++ b/technician/pages/bad-comments/list.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/technician/pages/bad-comments/success.vue b/technician/pages/bad-comments/success.vue new file mode 100644 index 0000000..2fb7c1e --- /dev/null +++ b/technician/pages/bad-comments/success.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/technician/pages/car-fare.vue b/technician/pages/car-fare.vue new file mode 100644 index 0000000..e3f8d6e --- /dev/null +++ b/technician/pages/car-fare.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/technician/pages/edit.vue b/technician/pages/edit.vue new file mode 100644 index 0000000..911f566 --- /dev/null +++ b/technician/pages/edit.vue @@ -0,0 +1,700 @@ + + + + + + \ No newline at end of file diff --git a/technician/pages/order/label.vue b/technician/pages/order/label.vue new file mode 100644 index 0000000..33bcb00 --- /dev/null +++ b/technician/pages/order/label.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/technician/pages/order/list.vue b/technician/pages/order/list.vue new file mode 100644 index 0000000..553266d --- /dev/null +++ b/technician/pages/order/list.vue @@ -0,0 +1,914 @@ + + + + + + \ No newline at end of file diff --git a/technician/pages/order/recorder.vue b/technician/pages/order/recorder.vue new file mode 100644 index 0000000..565b190 --- /dev/null +++ b/technician/pages/order/recorder.vue @@ -0,0 +1,184 @@ + + + + + + \ No newline at end of file diff --git a/technician/pages/shield.vue b/technician/pages/shield.vue new file mode 100644 index 0000000..2b3b7b0 --- /dev/null +++ b/technician/pages/shield.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/technician/pages/shop/detail.vue b/technician/pages/shop/detail.vue new file mode 100644 index 0000000..2681297 --- /dev/null +++ b/technician/pages/shop/detail.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/technician/pages/shop/list.vue b/technician/pages/shop/list.vue new file mode 100644 index 0000000..cd796d1 --- /dev/null +++ b/technician/pages/shop/list.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/technician/pages/time-manage.vue b/technician/pages/time-manage.vue new file mode 100644 index 0000000..bbd4f40 --- /dev/null +++ b/technician/pages/time-manage.vue @@ -0,0 +1,294 @@ + + + + + + diff --git a/technician/pages/time-set.vue b/technician/pages/time-set.vue new file mode 100644 index 0000000..12536e3 --- /dev/null +++ b/technician/pages/time-set.vue @@ -0,0 +1,437 @@ + + + + + + \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..b04ded9 --- /dev/null +++ b/uni.scss @@ -0,0 +1,103 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +/* 颜色变量 */ +@mixin bg_color($color) { + background-color: $color; + [data-theme="theme1"] & { + background-color:#F3C149; + } +} + +// 背景 +$-background-main-color:#F8F8F8;//主色 +$-background-deputy-color:#FFFFFF;//副色 +$-background-secondary-color:#373A3F;//次色 +$-background-select-vehicle-color:#1258E6;//车辆 +$-background-select-make-color:linear-gradient(-90deg, #F7B433, #F3C149);//挂号人默认背景 + +// 文本 +$-text-main-color:#3175FE;//主色 +$-text-deputy-color:#999999;//副色 +$-text-secondary-color:#333333;//副色 + +//按钮 +$-button-main-color:#373A3F;//主色 +$-button-deputy-color:#C9CDD4;//副色 + + + + + + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:24rpx; +$uni-font-size-base:28rpx; +$uni-font-size-lg:32rpx; + +/* 图片尺寸 */ +$uni-img-size-sm:40rpx; +$uni-img-size-base:52rpx; +$uni-img-size-lg:80rpx; + +/* Border Radius */ +$uni-border-radius-sm: 4rpx; +$uni-border-radius-base: 6rpx; +$uni-border-radius-lg: 12rpx; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20rpx; +$uni-spacing-row-lg: 30rpx; + +/* 垂直间距 */ +$uni-spacing-col-sm: 8rpx; +$uni-spacing-col-base: 16rpx; +$uni-spacing-col-lg: 24rpx; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:40rpx; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:36rpx; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:30rpx; \ No newline at end of file diff --git a/uni_modules/lime-painter/changelog.md b/uni_modules/lime-painter/changelog.md new file mode 100644 index 0000000..84871a5 --- /dev/null +++ b/uni_modules/lime-painter/changelog.md @@ -0,0 +1,153 @@ +## 1.9.3.4(2022-06-20) +- fix: 修复 因创建节点速度问题导致顺序出错。 +- fix: 修复 微信小程序 PC 无法显示本地图片 +- fix: 修复 flex-box 对齐问题 +- feat: 增加 `text-shadow` +- feat: 重写 `text` 对齐方式 +- chore: 更新文档 +## 1.9.3.3(2022-06-17) +- fix: 修复 支付宝小程序 canvas 2d 存在ctx.draw问题导致报错 +- fix: 修复 支付宝小程序 toDataURL 存在权限问题改用 `toTempFilePath` +- fix: 修复 支付宝小程序 image size 问题导致 `objectFit` 无效 +## 1.9.3.2(2022-06-14) +- fix: 修复 image 设置背景色不生效问题 +- fix: 修复 nvue 环境判断缺少参数问题 +## 1.9.3.1(2022-06-14) +- fix: 修复 bottom 定位不对问题 +- fix: 修复 因小数导致计算出错换行问题 +- feat: 增加 `useCORS` h5端图片跨域 在设置请求头无效果后试一下设置这个值 +- chore: 更新文档 +## 1.9.3(2022-06-13) +- feat: 增加 `zIndex` +- feat: 增加 `flex-box` 该功能处于原始阶段,非常简陋。 +- tips: QQ小程序 vue3 不支持, 为 uni 官方BUG +## 1.9.2.9(2022-06-10) +- fix: 修复`text-align`及`margin`居中问题 +## 1.9.2.8(2022-06-10) +- fix: 修复 Nvue `canvasToTempFilePathSync` 不生效问题 +## 1.9.2.7(2022-06-10) +- fix: 修复 margin及padding的bug +- fix: 修复 Nvue `isCanvasToTempFilePath` 不生效问题 +## 1.9.2.6(2022-06-09) +- fix: 修复 Nvue 不显示 +- feat: 增加支持字体渐变 +```html + +``` +## 1.9.2.5(2022-06-09) +- chore: 更变获取父级宽度的设定 +- chore: `pathType` 在canvas 2d 默认为 `url` +## 1.9.2.4(2022-06-08) +- fix: 修复 `pathType` 不生效问题 +## 1.9.2.3(2022-06-08) +- fix: 修复 `canvasToTempFilePath` 漏写 `success` 参数 +## 1.9.2.2(2022-06-07) +- chore: 更新文档 +## 1.9.2.1(2022-06-07) +- fix: 修复 vue3 赋值给this再传入导致image无法绘制 +- fix: 修复 `canvasToTempFilePathSync` 时机问题 +- feat: canvas 2d 更改图片生成方式 `toDataURL` +## 1.9.2(2022-05-30) +- fix: 修复 `canvasToTempFilePathSync` 在 vue3 下只生成一次 +## 1.9.1.7(2022-05-28) +- fix: 修复 `qrcode`显示不全问题 +## 1.9.1.6(2022-05-28) +- fix: 修复 `canvasToTempFilePathSync` 会重复多次问题 +- fix: 修复 `view` css `backgroundImage` 图片下载失败导致 子节点不渲染 +## 1.9.1.5(2022-05-27) +- fix: 修正支付宝小程序 canvas 2d版本号 2.7.15 +## 1.9.1.4(2022-05-22) +- fix: 修复字节小程序无法使用xml方式 +- fix: 修复字节小程序无法使用base64(非2D情况下工具上无法显示) +- fix: 修复支付宝小程序 `canvasToTempFilePath` 报错 +## 1.9.1.3(2022-04-29) +- fix: 修复vue3打包后uni对象为空后的报错 +## 1.9.1.2(2022-04-25) +- fix: 删除多余文件 +## 1.9.1.1(2022-04-25) +- fix: 修复图片不显示问题 +## 1.9.1(2022-04-12) +- fix: 因四舍五入导致有些机型错位 +- fix: 修复无views报错 +- chore: nvue下因ios无法读取插件内static文件,改由下载方式 +## 1.9.0(2022-03-20) +- fix: 因无法固定尺寸导致生成图片不全 +- fix: 特定情况下text判断无效 +- chore: 本地化APP Nvue webview +## 1.8.9(2022-02-20) +- fix: 修复 小程序下载最多10次并发的问题 +- fix: 修复 APP端无法获取本地图片 +- fix: 修复 APP Nvue端不执行问题 +- chore: 增加图片缓存机制 +## 1.8.8.8(2022-01-27) +- fix: 修复 主动调用尺寸问题 +## 1.8.8.6(2022-01-26) +- fix: 修复 nvue 下无宽度时获取父级宽度 +- fix: 修复 ios app 无法渲染问题 +## 1.8.8(2022-01-23) +- fix: 修复 主动调用时无节点问题 +- fix: 修复 `box-shadow` 颜色问题 +- fix: 修复 `transform:rotate` 角度位置问题 +- feat: 增加 `overflow:hidden` +## 1.8.7(2022-01-07) +- fix: 修复 image 方向为 `right` 时原始宽高问题 +- feat: 支持 view 设置背景图 `background-image: url(xxx)` +- chore: 去掉可选链 +## 1.8.6(2021-11-28) +- feat: 支持`view`对`inline-block`的子集使用`text-align` +## 1.8.5.5(2021-08-17) +- chore: 更新文档,删除 replace +- fix: 修复 text 值为 number时报错 +## 1.8.5.4(2021-08-16) +- fix: 字节小程序兼容 +## 1.8.5.3(2021-08-15) +- fix: 修复线性渐变与css现实效果不一致的问题 +- chore: 更新文档 +## 1.8.5.2(2021-08-13) +- chore: 增加`background-image`、`background-repeat` 能力,主要用于背景纹理的绘制,并不是代替`image`。例如:大面积的重复平铺的水印 +- 注意:这个功能H5暂时无法使用,因为[官方的API有BUG](https://ask.dcloud.net.cn/question/128793),待官方修复!!! +## 1.8.5.1(2021-08-10) +- fix: 修复因`margin`报错问题 +## 1.8.5(2021-08-09) +- chore: 增加margin支持`auto`,以达到居中效果 +## 1.8.4(2021-08-06) +- chore: 增加判断缓存文件条件 +- fix: 修复css 多余空格报错问题 +## 1.8.3(2021-08-04) +- tips: 1.6.x 以下的版本升级到1.8.x后要为每个元素都加上定位:position: 'absolute' +- fix: 修复只有一个view子元素时不计算高度的问题 +## 1.8.2(2021-08-03) +- fix: 修复 path-type 为 `url` 无效问题 +- fix: 修复 qrcode `text` 为空时报错问题 +- fix: 修复 image `src` 动态设置时不生效问题 +- feat: 增加 css 属性 `min-width` `max-width` +## 1.8.1(2021-08-02) +- fix: 修复无法加载本地图片 +## 1.8.0(2021-08-02) +- chore 文档更新 +- 使用旧版的同学不要升级! +## 1.8.0-beta(2021-07-30) +- ## 全新布局方式 不兼容旧版! +- chore: 布局方式变更 +- tips: 微信canvas 2d 不支持真机调试 +## 1.6.6(2021-07-09) +- chore: 统一命名规范,无须主动引入组件 +## 1.6.5(2021-06-08) +- chore: 去掉console +## 1.6.4(2021-06-07) +- fix: 修复 数字 为纯字符串时不转换的BUG +## 1.6.3(2021-06-06) +- fix: 修复 PC 端放大的BUG +## 1.6.2(2021-05-31) +- fix: 修复 报`adaptor is not a function`错误 +- fix: 修复 text 多行高度 +- fix: 优化 默认文字的基准线 +- feat: `@progress`事件,监听绘制进度 +## 1.6.1(2021-02-28) +- 删除多余节点 +## 1.6.0(2021-02-26) +- 调整为uni_modules目录规范 +- 修复:transform的rotate不能为负数问题 +- 新增:`pathType` 指定生成图片返回的路径类型,可选值有 `base64`、`url` diff --git a/uni_modules/lime-painter/components/common/relation.js b/uni_modules/lime-painter/components/common/relation.js new file mode 100644 index 0000000..c68661c --- /dev/null +++ b/uni_modules/lime-painter/components/common/relation.js @@ -0,0 +1,147 @@ +const styles = (v ='') => v.split(';').filter(v => v && !/^[\n\s]+$/.test(v)).map(v => { + const key = v.slice(0, v.indexOf(':')) + const value = v.slice(v.indexOf(':')+1) + return { + [key + .replace(/-([a-z])/g, function() { return arguments[1].toUpperCase()}) + .replace(/\s+/g, '') + ]: value.replace(/^\s+/, '').replace(/\s+$/, '') || '' + } + }) +export function parent(parent) { + return { + provide() { + return { + [parent]: this + } + }, + data() { + return { + el: { + css: {}, + views: [] + }, + } + }, + watch: { + css: { + handler(v) { + if(this.canvasId) { + this.el.css = (typeof v == 'object' ? v : v && Object.assign(...styles(v))) || {} + this.canvasWidth = this.el.css && this.el.css.width || this.canvasWidth + this.canvasHeight = this.el.css && this.el.css.height || this.canvasHeight + } + }, + immediate: true + } + } + } +} +export function children(parent, options = {}) { + const indexKey = options.indexKey || 'index' + return { + inject: { + [parent]: { + default: null + } + }, + watch: { + el: { + handler(v, o) { + if(JSON.stringify(v) != JSON.stringify(o)) + this.bindRelation() + }, + deep: true, + immediate: true + }, + src: { + handler(v, o) { + if(v != o) + this.bindRelation() + }, + immediate: true + }, + text: { + handler(v, o) { + if(v != o) this.bindRelation() + }, + immediate: true + }, + css: { + handler(v, o) { + if(v != o) + this.el.css = (typeof v == 'object' ? v : v && Object.assign(...styles(v))) || {} + }, + immediate: true + }, + replace: { + handler(v, o) { + if(JSON.stringify(v) != JSON.stringify(o)) + this.bindRelation() + }, + deep: true, + immediate: true + } + }, + created() { + if(!this._uid) { + this._uid = this._.uid + } + Object.defineProperty(this, 'parent', { + get: () => this[parent] || [], + }) + Object.defineProperty(this, 'index', { + get: () => { + this.bindRelation(); + const {parent: {el: {views=[]}={}}={}} = this + return views.indexOf(this.el) + }, + }); + this.el.type = this.type + + this.bindRelation() + }, + // #ifdef VUE3 + beforeUnmount() { + this.removeEl() + }, + // #endif + // #ifdef VUE2 + beforeDestroy() { + this.removeEl() + }, + // #endif + methods: { + removeEl() { + if (this.parent) { + this.parent.el.views = this.parent.el.views.filter( + (item) => item._uid !== this._uid + ); + } + }, + bindRelation() { + if(!this.el._uid) { + this.el._uid = this._uid + } + if(['text','qrcode'].includes(this.type)) { + this.el.text = this.$slots && this.$slots.default && this.$slots.default[0].text || `${this.text || ''}`.replace(/\\n/g, '\n') + } + if(this.type == 'image') { + this.el.src = this.src + } + if (!this.parent) { + return; + } + let views = this.parent.el.views || []; + if(views.indexOf(this.el) !== -1) { + this.parent.el.views = views.map(v => v._uid == this._uid ? this.el : v) + } else { + this.parent.el.views = [...views, this.el]; + } + } + }, + mounted() { + // this.bindRelation() + }, + } +} \ No newline at end of file diff --git a/uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue b/uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue new file mode 100644 index 0000000..f1ce13e --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter-image/l-painter-image.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue b/uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue new file mode 100644 index 0000000..4620d3f --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter-qrcode/l-painter-qrcode.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue b/uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue new file mode 100644 index 0000000..1af0484 --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter-text/l-painter-text.vue @@ -0,0 +1,28 @@ + + + + + diff --git a/uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue b/uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue new file mode 100644 index 0000000..4451e23 --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter-view/l-painter-view.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/lime-painter/components/l-painter/l-painter.vue b/uni_modules/lime-painter/components/l-painter/l-painter.vue new file mode 100644 index 0000000..9406fd0 --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter/l-painter.vue @@ -0,0 +1,409 @@ + + + + + diff --git a/uni_modules/lime-painter/components/l-painter/nvue.js b/uni_modules/lime-painter/components/l-painter/nvue.js new file mode 100644 index 0000000..9ce594d --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter/nvue.js @@ -0,0 +1,218 @@ +// #ifdef APP-NVUE +import { sleep, getImageInfo, isBase64, useNvue, networkReg } from './utils'; +const dom = weex.requireModule('dom') +import {version } from '../../package.json' + +export default { + data() { + return { + tempFilePath: [], + isInitFile: false, + osName: uni.getSystemInfoSync().osName + } + }, + created() { + // if (this.hybrid) return + // useNvue('_doc/uni_modules/lime-painter/', version, this.timeout).then(res => { + // this.isInitFile = true + // }) + }, + methods: { + getParentWeith() { + return new Promise(resolve => { + dom.getComponentRect(this.$refs.limepainter, (res) => { + this.parentWidth = Math.ceil(res.size.width) + this.canvasWidth = this.canvasWidth || this.parentWidth ||300 + this.canvasHeight = res.size.height || this.canvasHeight||150 + resolve(res.size) + }) + }) + }, + onPageFinish() { + this.webview = this.$refs.webview + this.webview.evalJS(`init(${this.dpr})`) + }, + onMessage(e) { + const res = e.detail.data[0] || null; + if (res.event) { + if (res.event == 'inited') { + this.inited = true + } + if(res.event == 'fail'){ + this.$emit('fail', res) + } + if (res.event == 'layoutChange') { + const data = typeof res.data == 'string' ? JSON.parse(res.data) : res.data + this.canvasWidth = Math.ceil(data.width); + this.canvasHeight = Math.ceil(data.height); + } + if (res.event == 'progressChange') { + this.progress = res.data * 1 + } + if (res.event == 'file') { + this.tempFilePath.push(res.data) + if (this.tempFilePath.length > 7) { + this.tempFilePath.shift() + } + return + } + if (res.event == 'success') { + if (res.data) { + this.tempFilePath.push(res.data) + if (this.tempFilePath.length > 8) { + this.tempFilePath.shift() + } + if (this.isCanvasToTempFilePath) { + this.setFilePath(this.tempFilePath.join(''), {isEmit:true}) + } + } else { + this.$emit('fail', 'canvas no data') + } + return + } + this.$emit(res.event, JSON.parse(res.data)); + } else if (res.file) { + this.file = res.data; + } else{ + console.info(res[0]) + } + }, + getWebViewInited() { + if (this.inited) return Promise.resolve(this.inited); + return new Promise((resolve) => { + this.$watch( + 'inited', + async val => { + if (val) { + resolve(val) + } + }, { + immediate: true + } + ); + }) + }, + getTempFilePath() { + if (this.tempFilePath.length == 8) return Promise.resolve(this.tempFilePath) + return new Promise((resolve) => { + this.$watch( + 'tempFilePath', + async val => { + if (val.length == 8) { + resolve(val.join('')) + } + } + ); + }) + }, + getWebViewDone() { + if (this.progress == 1) return Promise.resolve(this.progress); + return new Promise((resolve) => { + this.$watch( + 'progress', + async val => { + if (val == 1) { + this.$emit('done') + this.done = true + resolve(val) + } + }, { + immediate: true + } + ); + }) + }, + async render(args) { + try { + await this.getSize(args) + const {width} = args.css || args + if(!width && this.parentWidth) { + Object.assign(args, {width: this.parentWidth}) + } + const newNode = await this.calcImage(args); + await this.getWebViewInited() + this.webview.evalJS(`source(${JSON.stringify(newNode)})`) + await this.getWebViewDone() + await sleep(this.afterDelay) + if (this.isCanvasToTempFilePath) { + const params = { + fileType: this.fileType, + quality: this.quality + } + this.webview.evalJS(`save(${JSON.stringify(params)})`) + } + return Promise.resolve() + } catch (e) { + this.$emit('fail', e) + } + }, + getfile(e){ + let url = plus.io.convertLocalFileSystemURL( e ) + return new Promise((resolve,reject)=>{ + plus.io.resolveLocalFileSystemURL(url, entry => { + var reader = null; + entry.file( file => { + reader = new plus.io.FileReader(); + reader.onloadend = ( read )=> { + resolve(read.target.result) + }; + reader.readAsDataURL( file ); + }, function ( error ) { + alert( error.message ); + } ); + },err=>{ + resolve(e) + }) + }) + }, + async calcImage(args) { + let node = JSON.parse(JSON.stringify(args)) + const urlReg = /url\((.+)\)/ + const {backgroundImage} = node.css||{} + const isBG = backgroundImage && urlReg.exec(backgroundImage)[1] + const url = node.url || node.src || isBG + if(['text', 'qrcode'].includes(node.type)) { + return node + } + if ((node.type === "image" || isBG) && url && !isBase64(url) && (this.osName == 'ios' ? true : !networkReg.test(url))) { + let {path} = await getImageInfo(url) + if(this.osName == 'ios') { + path = await this.getfile(path) + } + if (isBG) { + node.css.backgroundImage = `url(${path})` + } else { + node.src = path + } + } else if (node.views && node.views.length) { + for (let i = 0; i < node.views.length; i++) { + node.views[i] = await this.calcImage(node.views[i]) + } + } + return node + }, + async canvasToTempFilePath(args = {}) { + if (!this.inited) { + return this.$emit('fail', 'no init') + } + this.tempFilePath = [] + if (args.fileType == 'jpg') { + args.fileType = 'jpeg' + } + this.webview.evalJS(`save(${JSON.stringify(args)})`) + try { + let tempFilePath = await this.getTempFilePath() + tempFilePath = await this.setFilePath(tempFilePath) + args.success({ + errMsg: "canvasToTempFilePath:ok", + tempFilePath + }) + } catch (e) { + args.fail({ + error: e + }) + } + } + } +} +// #endif \ No newline at end of file diff --git a/uni_modules/lime-painter/components/l-painter/painter.js b/uni_modules/lime-painter/components/l-painter/painter.js new file mode 100644 index 0000000..b0813bc --- /dev/null +++ b/uni_modules/lime-painter/components/l-painter/painter.js @@ -0,0 +1 @@ +var t=function(){return t=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&r[r.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=360&&(s-=360);s<0&&(s+=360);if(0===(s=Math.round(s)))return{x0:Math.round(e/2)+n,y0:i+r,x1:Math.round(e/2)+n,y1:r};if(180===s)return{x0:Math.round(e/2)+n,y0:r,x1:Math.round(e/2)+n,y1:i+r};if(90===s)return{x0:n,y0:Math.round(i/2)+r,x1:e+n,y1:Math.round(i/2)+r};if(270===s)return{x0:e+n,y0:Math.round(i/2)+r,x1:n,y1:Math.round(i/2)+r};var a=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(s===a)return{x0:n,y0:i+r,x1:e+n,y1:r};if(s===180-a)return{x0:n,y0:r,x1:e+n,y1:i+r};if(s===180+a)return{x0:e+n,y0:r,x1:n,y1:i+r};if(s===360-a)return{x0:e+n,y0:i+r,x1:n,y1:r};var h=0,d=0,c=0,l=0;if(s180-a&&s<180||s>180&&s<180+a||s>360-a){var f=s*Math.PI/180,u=s360-a?i/2:-i/2,p=Math.tan(f)*u,g=s180-a&&s<180?e/2-p:-e/2-p;h=-(c=p+(v=Math.pow(Math.sin(f),2)*g)),d=-(l=u+v/Math.tan(f))}if(s>a&&s<90||s>90&&s<90+a||s>180+a&&s<270||s>270&&s<360-a){var v;f=(90-s)*Math.PI/180,p=s>a&&s<90||s>90&&s<90+a?e/2:-e/2,u=Math.tan(f)*p,g=s>a&&s<90||s>270&&s<360-a?i/2-u:-i/2-u;h=-(c=p+(v=Math.pow(Math.sin(f),2)*g)/Math.tan(f)),d=-(l=u+v)}return h=Math.round(h+e/2)+n,d=Math.round(i/2-d)+r,c=Math.round(c+e/2)+n,l=Math.round(i/2-l)+r,{x0:h,y0:d,x1:c,y1:l}}(r,t,e,i,n),a=s.x0,h=s.y0,d=s.x1,c=s.y1,l=o.createLinearGradient(a,h,d,c),f=r.match(/linear-gradient\((.+)\)/)[1],u=F(f.substring(f.indexOf(",")+1)),p=0;pt.length)&&(e=t.length);for(var i=0,n=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Y(t){return"number"==typeof t}function $(t){return"auto"===t||null===t}function D(t){return/%$/.test(t)}var X,_=0,N=function(){function t(){j(this,"elements",[]),j(this,"afterElements",[]),j(this,"beforeElements",[]),j(this,"ids",[]),j(this,"width",0),j(this,"height",0),j(this,"top",0),j(this,"left",0),j(this,"pre",null),j(this,"offsetX",0),j(this,"offsetY",0),_++,this.id=_}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t)},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)this[this.key.height]&&(this[this.key.height]=t.offsetSize[this.key.height]),this[this.key.width]+=t.offsetSize[this.key.width],(this.container.lineMaxWidth||0)1?0:"flex-end"===t.style.alignSelf?this.container.contentSize[this.key.contentHeight]-t.contentSize[this.key.height]:"center"===t.style.alignSelf?(this.container.contentSize[this.key.contentHeight]-t.contentSize[this.key.height])/2:0},n}(N),q=y,J=v,Q=g,Z=b,K=x,et=m,it=S,nt=z,rt=B,ot=0,st={left:null,top:null,width:null,height:null},at=function(){function t(t,e,i,n){var r=this;j(this,"id",ot++),j(this,"style",{left:null,top:null,width:null,height:null}),j(this,"computedStyle",{}),j(this,"originStyle",{}),j(this,"children",{}),j(this,"layoutBox",C({},st)),j(this,"contentSize",C({},st)),j(this,"clientSize",C({},st)),j(this,"borderSize",C({},st)),j(this,"offsetSize",C({},st)),this.ctx=n,this.root=i,e&&(this.parent=e),this.name=t.name||t.type,this.attributes=this.getAttributes(t);var o=this.getComputedStyle(t,null==e?void 0:e.computedStyle);this.isAbsolute=o.position==nt,this.isFixed=o.position==rt,this.originStyle=o,Object.keys(o).forEach((function(t){Object.defineProperty(r.style,t,{configurable:!0,enumerable:!0,get:function(){return o[t]},set:function(e){o[t]=e}})}));var s={contentSize:C({},this.contentSize),clientSize:C({},this.clientSize),borderSize:C({},this.borderSize),offsetSize:C({},this.offsetSize)};Object.keys(s).forEach((function(t){Object.keys(r[t]).forEach((function(e){Object.defineProperty(r[t],e,{configurable:!0,enumerable:!0,get:function(){return s[t][e]},set:function(i){s[t][e]=i}})}))})),this.computedStyle=this.style}var e=t.prototype;return e.add=function(t){t.parent=this,this.children[t.id]=t},e.getChildren=function(){var t=this;return Object.keys(this.children).map((function(e){return t.children[e]}))},e.getLineRect=function(t,e){var i={width:0,height:0},n=e?e.lines:this.parent&&this.parent.lines;return n&&n.find((function(e){return e.ids.includes(t)}))||i},e.getComputedStyle=function(t,e){var i=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],n=t.css,r=void 0===n?{}:n,o=t.type,s=void 0===o?Q:o,a=C({},M);if([J,q,Z].includes(s)&&!r.display&&(a.display=et),e)for(var h=0;h=0&&l<0,Y=d>=0&&u<0;return i==s[0]&&(this[i].left=t.left+a+v+C+(U?2*-l:0),this[i].top=t.top+d+b+P+(Y?2*-u:0),this[i].width=t.width+(this[i].widthAdd?0:E),this[i].height=t.height+(this[i].heightAdd?0:H),this[i].widthAdd=E,this[i].heightAdd=H),i==s[1]&&(this[i].left=t.left+a+C+(U<0?-l:0),this[i].top=t.top+d+P+(Y?-u:0),this[i].width=t.width+v+m,this[i].height=t.height+b+S),i==s[2]&&(this[i].left=t.left+a+C/2+(U<0?-l:0),this[i].top=t.top+d+P/2+(Y?-u:0),this[i].width=t.width+v+m+C/2+A/2,this[i].height=t.height+b+S+O/2+P/2),i==s[3]&&(this[i].left=t.left+(U<0?-l:0),this[i].top=t.top+(Y?-u:0),this[i].width=t.width+v+m+C+A+a+l,this[i].height=t.height+b+S+O+P+u+d),this[i]},e.layoutBoxUpdate=function(t,e,i,n){var r=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var o=e||{},a=o.border,h=(a=void 0===a?{}:a).borderWidth,d=void 0===h?0:h,c=o.borderTop,l=(c=void 0===c?{}:c).borderTopWidth,f=void 0===l?d:l,u=o.borderBottom,p=(u=void 0===u?{}:u).borderBottomWidth,g=void 0===p?d:p,v=o.borderRight,y=(v=void 0===v?{}:v).borderRightWidth,b=void 0===y?d:y,x=o.borderLeft,m=(x=void 0===x?{}:x).borderLeftWidth,w=void 0===m?d:m,S=o.padding,z=(S=void 0===S?{}:S).paddingTop,B=void 0===z?0:z,M=S.paddingRight,I=void 0===M?0:M,k=S.paddingBottom,P=void 0===k?0:k,W=S.paddingLeft,R=void 0===W?0:W;i||(t.width-=R+I+b+w),1!==i||n||(t.height-=B+P+f+g)}this.layoutBox&&(s.forEach((function(i){return r.layoutBox[i]=r.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition2=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,n=t.left,r=void 0===n?0:n,o=t.top,s=void 0===o?0:o,a=t.padding||{},h=a.paddingBottom,d=void 0===h?0:h,c=a.paddingRight,l=void 0===c?0:c,f=C({},this.contentSize,{left:r,top:s}),u=this.contentSize.top-this.offsetSize.top,p=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var g,v=U(this.root.fixedLine.elements);!(g=v()).done;){var y=g.value;y.setPosition(y,this.root.offsetSize),y.getBoxPosition2()}}if(e)for(var b,x=U(e.elements);!(b=x()).done;){var m=b.value;m.setPosition(m,f),m.style.left+=r+p+l,m.style.top+=s+u+d,m.getBoxPosition2()}if(i)for(var w,S=U(i);!(w=S()).done;){w.value.layout(f.top+u,f.left+p)}return this.layoutBoxUpdate(f,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&t.style.display==K},e.isFlex=function(t){return void 0===t&&(t=this),t&&t.style.display==it},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&(!!t.parent&&(!(!t.parent||t.parent.style.display!==it)||void 0))},e.isInline=function(t){return void 0===t&&(t=this),t&&t.style.display==et},e.contrastSize=function(t,e,i){var n=t;return i&&(n=Math.min(n,i)),e&&(n=Math.max(n,e)),n},e.measureText=function(t,e){var i=this.ctx.measureText(t),n=i.width,r=i.actualBoundingBoxAscent,o=i.actualBoundingBoxDescent;return{ascent:r,descent:o,width:n,fontHeight:r+o||.7*e+1}},e.getBoxWidthHeight=function(){var t,e=this,i=this.name,n=this.computedStyle,r=this.attributes,o=this.parent,s=void 0===o?{}:o,a=this.ctx,h=this.getChildren(),d=n.left,c=void 0===d?0:d,l=n.top,f=void 0===l?0:l,u=n.bottom,p=n.right,g=n.width,v=void 0===g?0:g,y=n.minWidth,b=n.maxWidth,x=n.minHeight,m=n.maxHeight,w=n.height,S=void 0===w?0:w,z=n.fontSize,B=void 0===z?14:z,M=n.fontWeight,I=n.fontFamily,k=n.fontStyle,P=n.position,W=n.lineClamp,R=n.lineHeight,L=n.padding,T=void 0===L?{}:L,A=n.margin,F=void 0===A?{}:A,j=n.border,C=(j=void 0===j?{}:j).borderWidth,E=void 0===C?0:C,H=n.borderRight,U=(H=void 0===H?{}:H).borderRightWidth,Y=void 0===U?E:U,$=n.borderLeft,X=($=void 0===$?{}:$).borderLeftWidth,_=void 0===X?E:X,V=s.contentSize&&s.contentSize.width,Z=s.contentSize&&s.contentSize.height;if(D(v)&&V&&(v=O(v,V)),D(v)&&!V&&(v=null),D(S)&&Z&&(S=O(S,Z)),D(S)&&!Z&&(S=null),D(y)&&V&&(y=O(y,V)),D(b)&&V&&(b=O(b,V)),D(x)&&Z&&(x=O(x,Z)),D(m)&&Z&&(m=O(m,Z)),n.padding&&null!=(t=s.contentSize)&&t.width)for(var K in n.padding)Object.hasOwnProperty.call(n.padding,K)&&(n.padding[K]=O(n.padding[K],V));var tt=T.paddingRight,et=void 0===tt?0:tt,it=T.paddingLeft,rt=void 0===it?0:it;if(n.margin&&[n.margin.marginLeft,n.margin.marginRight].includes("auto"))if(v){var ot=V&&V-v-et-rt-_-Y||0;n.margin.marginLeft==n.margin.marginRight?n.margin.marginLeft=n.margin.marginRight=ot/2:"auto"==n.margin.marginLeft?n.margin.marginLeft=ot:n.margin.marginRight=ot}else n.margin.marginLeft=n.margin.marginRight=0;var st=F.marginRight,at=void 0===st?0:st,ht=F.marginLeft,dt={width:v,height:S,left:0,top:0},ct=rt+et+_+Y+(void 0===ht?0:ht)+at;if(i==J&&!this.attributes.widths){var lt=r.text||"";a.save(),a.setFonts({fontFamily:I,fontSize:B,fontWeight:M,fontStyle:k});var ft=new Map;lt.split("\n").map((function(t){var i=t.split("").map((function(t){var i=ft.get(t);if(i)return i;var n=e.measureText(t,B).width;return ft.set(t,n),n})),n=e.measureText(t,B),r=n.fontHeight,o=n.ascent,s=n.descent;e.attributes.fontHeight=r,e.attributes.ascent=o,e.attributes.descent=s,e.attributes.widths||(e.attributes.widths=[]),e.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e}),0)})})),a.restore()}if(i==q&&null==v){var ut=r.width,pt=r.height;dt.width=this.contrastSize(Math.round(ut*S/pt)||0,y,b),this.layoutBoxUpdate(dt,n,0)}if(i==J&&null==v){var gt=this.attributes.widths,vt=Math.max.apply(Math,gt.map((function(t){return t.total})));if(s&&V>0&&(vt>V||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed)vt=V-ct;dt.width=this.contrastSize(vt,y,b),this.layoutBoxUpdate(dt,n,0)}if(i==J&&!this.attributes.lines){var yt=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e>dt.width?(yt++,e):t+e}),0)})),yt=W&&yt>W?W:yt,this.attributes.lines=yt}if(i==q&&null==S){var bt=r.width,xt=r.height;dt.height=this.contrastSize(O(dt.width*xt/bt)||0,x,m),this.layoutBoxUpdate(dt,n,1)}i==J&&null==S&&(R=O(R,B),dt.height=this.contrastSize(O(this.attributes.lines*R),x,m),this.layoutBoxUpdate(dt,n,1,!0)),s&&s.children&&V&&([Q,J].includes(i)&&this.isFlex()||i==Q&&this.isBlock(this)&&!this.isInFlow())&&(dt.width=this.contrastSize(V-ct,y,b),this.layoutBoxUpdate(dt,n)),v&&!D(v)&&(dt.width=this.contrastSize(v,y,b),this.layoutBoxUpdate(dt,n,0)),S&&!D(S)&&(dt.height=this.contrastSize(dt.height,x,m),this.layoutBoxUpdate(dt,n,1));var mt=0;if(h.length){var wt=null;h.forEach((function(t,i){t.getBoxWidthHeight();var r=h[i+1];if(r&&r.isInFlow()&&(t.next=r),t.isInFlow()&&!t.inFlexBox()){var o=e.getBoxState(wt,t);e.line&&e.line.canIEnter(t)&&!o?e.line.add(t):(new N).bind(t),wt=t}else t.inFlexBox()?e.line&&(e.line.canIEnter(t)||"nowrap"==n.flexWrap)?e.line.add(t):(new G).bind(t):t.isFixed?e.root.fixedLine?e.root.fixedLine.fixedAdd(t):(new N).fixedBind(t):e.fixedLine?e.fixedLine.fixedAdd(t):(new N).fixedBind(t,1)})),this.lines&&(mt=this.lines.reduce((function(t,e){return t+e.height}),0))}var St=0,zt=0;if(!v&&(this.isAbsolute||this.isFixed)&&V){var Bt=P==nt?V:this.root.width,Mt=Bt-(D(c)?O(c,Bt):c)-(D(p)?O(p,Bt):p);St=n.left?Mt:this.lineMaxWidth}if(!S&&(null!=f?f:this.isAbsolute||this.isFixed&&Z)){var It=P==nt?Z:this.root.height,kt=It-(D(f)?O(f,It):f)-(D(u)?O(u,It):u);zt=n.top?kt:0}if(v&&!D(v)||dt.width||(dt.width=St||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?V||s.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,y,b),this.layoutBoxUpdate(dt,n,0)),S||!mt&&!zt||(dt.height=zt||this.contrastSize(mt,x,m),this.layoutBoxUpdate(dt,n)),n.borderRadius&&this.borderSize&&this.borderSize.width)for(var K in n.borderRadius)Object.hasOwnProperty.call(n.borderRadius,K)&&(n.borderRadius[K]=O(n.borderRadius[K],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.getBoxPosition2(),this.offsetSize},t}(),ht=function(){var t,e,i,n,r,o,s=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],a=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177],h=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],d=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],c=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],l=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],f=[],u=[],p=[],g=[],v=[],y=2;function b(t,e){var i;t>e&&(i=t,t=e,e=i),i=e,i*=e,i+=e,i>>=1,g[i+=t]=1}function x(t,i){var n;for(p[t+e*i]=1,n=-2;n<2;n++)p[t+n+e*(i-2)]=1,p[t-2+e*(i+n+1)]=1,p[t+2+e*(i+n)]=1,p[t+n+1+e*(i+2)]=1;for(n=0;n<2;n++)b(t-1,i+n),b(t+1,i-n),b(t-n,i-1),b(t+n,i+1)}function m(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t}var w=[];function S(t,e,i,n){var r,o,s;for(r=0;re&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,g[i+=t]}function B(t){var i,n,r,o;switch(t){case 0:for(n=0;n>1&1,i=0;i=5&&(i+=3+v[e]-5);for(e=3;et||3*v[e-3]>=4*v[e]||3*v[e+3]>=4*v[e])&&(i+=40);return i}function I(){var t,i,n,r,o,s=0,a=0;for(i=0;ie*e;)h-=e*e,d++;for(s+=10*d,t=0;t1)for(W=s[t],k=e-7;;){for(M=e-7;M>W-3&&(x(M,k),!(M6)for(W=a[t-7],P=17,M=0;M<6;M++)for(k=0;k<3;k++,P--)1&(P>11?t>>P-12:W>>P)?(p[5-M+e*(2-k+e-11)]=1,p[2-k+e-11+e*(5-M)]=1):(b(5-M,2-k+e-11),b(2-k+e-11,5-M));for(k=0;k=(M=r*(i+n)+n)-2&&(R=M-2,t>9&&R--),O=R,t>9){for(f[O+2]=0,f[O+3]=0;O--;)W=f[O],f[O+3]|=255&W<<4,f[O+2]=W>>4;f[2]|=255&R<<4,f[1]=R>>4,f[0]=64|R>>12}else{for(f[O+1]=0,f[O+2]=0;O--;)W=f[O],f[O+2]|=255&W<<4,f[O+1]=W>>4;f[1]|=255&R<<4,f[0]=64|R>>4}for(O=R+3-(t<10);O0;L--)w[L]=w[L]?w[L-1]^l[m(c[w[L]]+O)]:w[L-1];w[0]=l[m(c[w[0]]+O)]}for(O=0;O<=o;O++)w[O]=c[w[O]];for(P=M,k=0,O=0;O>=1)1&k&&(p[e-1-P+8*e]=1,P<6?p[8+e*P]=1:p[8+e*(P+1)]=1);for(P=0;P<7;P++,k>>=1)1&k&&(p[8+e*(e-7+P)]=1,P?p[6-P+8*e]=1:p[7+8*e]=1);return p}(v)},utf16to8:function(t){var e,i,n,r;for(e="",n=t.length,i=0;i=1&&r<=127?e+=t.charAt(i):r>2047?(e+=String.fromCharCode(224|r>>12&15),e+=String.fromCharCode(128|r>>6&63),e+=String.fromCharCode(128|r>>0&63)):(e+=String.fromCharCode(192|r>>6&31),e+=String.fromCharCode(128|r>>0&63));return e},draw:function(t,i,n,r,o){i.drawView(n,r);var s=i.ctx,a=n.contentSize,h=a.width,d=a.height,c=a.left,l=a.top;r.borderRadius,r.backgroundColor;var f=r.color,u=void 0===f?"#000000":f;r.border,n.contentSize.left,n.borderSize.left,n.contentSize.top,n.borderSize.top;if(y=o||y,s){s.save(),i.setOpacity(r),i.setTransform(n,r);var p=Math.min(h,d);t=this.utf16to8(t);var g=this.getFrame(t),v=p/e;s.setFillStyle(u);for(var b=0;b=s||"cover"==n&&o=s)&&(a=e.width/i.width);var h=i.width*a,d=i.height*a,c=r||[],l=c[0],f=c[1],u=/^\d+px|rpx$/.test(l)?O(l,e.width):(e.width-h)*(L(l)?O(l,1):{left:0,center:.5,right:1}[l||"center"]),p=/^\d+px|rpx$/.test(f)?O(f,e.height):(e.height-d)*(L(f)?O(f,1):{top:0,center:.5,bottom:1}[f||"center"]),g=function(t,e){return[(t-u)/a,(e-p)/a]},v=g(0,0),y=v[0],b=v[1],x=g(e.width,e.height),m=x[0],w=x[1];return{sx:Math.max(y,0),sy:Math.max(b,0),sw:Math.min(m-y,i.width),sh:Math.min(w-b,i.height),dx:Math.max(u,0),dy:Math.max(p,0),dw:Math.min(h,e.width),dh:Math.min(d,e.height)}}({objectFit:u,objectPosition:v},n.contentSize,t),r=i.sx,s=i.sy,a=i.sh,h=i.sw,d=i.dx,c=i.dy,l=i.dh,f=i.dw;k==o.MP_BAIDU?e.drawImage(t.src,d+w,c+S,f,l,r,s,h,a):e.drawImage(t.src,r,s,h,a,d+w,c+S,f,l)}else e.drawImage(t.src,w,S,x,m)},I=function(){e.restore(),W.drawView(n,r,!1,!0,!1),h(1)},P=function(t){M(t),I()},P(t),[2]}))}))}))];case 1:return h.sent(),[2]}}))}))},n.prototype.drawText=function(t,e,i,n){var r=this.ctx,o=e.borderSize,s=e.contentSize,a=e.left,h=e.top,d=s.width,c=s.height,l=s.left-o.left,f=s.top-o.top,u=i.color,p=void 0===u?"#000000":u,g=i.lineHeight,v=void 0===g?"1.4em":g,y=i.fontSize,b=void 0===y?14:y,x=i.fontWeight,m=i.fontFamily,w=i.fontStyle,S=i.textAlign,z=void 0===S?"left":S,B=i.verticalAlign,M=void 0===B?pt:B,I=i.backgroundColor,k=i.lineClamp,P=i.backgroundClip,W=i.textShadow,R=i.textDecoration;if(this.drawView(e,i,P!=ct),v=O(v,b),t){switch(r.save(),this.setShadow({boxShadow:W}),a+=l,h+=f,r.setFonts({fontFamily:m,fontSize:b,fontWeight:x,fontStyle:w}),r.setTextBaseline(pt),r.setTextAlign(z),P?this.setBackground(I,d,c,a,h):r.setFillStyle(p),z){case vt:break;case yt:a+=.5*d;break;case bt:a+=d}var L=n.lines*v,T=Math.ceil((c-L)/2);switch(T<0&&(T=0),M){case ut:break;case pt:h+=T;break;case gt:h+=2*T}var A=n.fontHeight,F=n.descent,j=(v-A)/2,C=function(t){var e=r.measureText(t),i=e.actualBoundingBoxDescent,n=void 0===i?0:i,o=e.actualBoundingBoxAscent,s=void 0===o?0:o,a=n+s||.7*b+1;return M==ut?{fix:s,height:a,lineY:v-a}:M==pt?{fix:v/2+n/4,height:a,lineY:(v-a)/2}:M==gt?{fix:v-n,height:a,lineY:0}:{fix:0,height:0,lineY:0}},E=function(t,e,i){var o=t;switch(z){case vt:o+=i;break;case yt:o=(t-=i/2)+i;break;case bt:o=t,t-=i}if(R){r.setLineWidth(b/13),r.beginPath();var s=.1*n.fontHeight;/\bunderline\b/.test(R)&&(F||(e+=j/2),r.moveTo(t,e+s),r.lineTo(o,e+s)),/\boverline\b/.test(R)&&(F||(e-=j/2),r.moveTo(t,e-n.fontHeight-s),r.lineTo(o,e-n.fontHeight-s)),/\bline-through\b/.test(R)&&(r.moveTo(t,e-.5*n.fontHeight),r.lineTo(o,e-.5*n.fontHeight)),r.closePath(),r.setStrokeStyle(p),r.stroke()}};if(!n.widths||1==n.widths.length&&n.widths[0].total<=s.width){var H=C(t),U=H.fix,Y=H.lineY;return r.fillText(t,a,h+U),E(a,(h+=v)-Y,n&&n.widths&&n.widths[0].total||n.text),r.restore(),void this.setBorder(e,i)}for(var $=t.split(""),D=h,X=a,_="",N=0,V=0;V<=$.length;V++){var G=$[V]||"",q="\n"===G,J=""==G,Q=_+(G=q?"":G),Z=r.measureText(Q).width;if(N>=k)break;if(X=a,Z>s.width||q||J){if(N++,_=J&&Z<=s.width?Q:_,N===k&&Z>d){for(;r.measureText("".concat(_,"...")).width>s.width&&!(_.length<=1);)_=_.substring(0,_.length-1);_+="..."}var K=C(_);U=K.fix,Y=K.lineY;if(r.fillText(_,X,h+U),E(X,(h+=v)-Y,Z),_=G,h>D+c)break}else _=Q}r.restore()}},n.prototype.source=function(t){var n;return e(this,void 0,void 0,(function(){var e,r,o,s=this;return i(this,(function(i){switch(i.label){case 0:if(this.node=null,e=+new Date,"{}"==JSON.stringify(t))return[2];if(!t.type)for(r in t.type=ft,t.css=t.css||{},t)["views","children","type","css"].includes(r)||(t.css[r]=t[r],delete t[r]);return(null===(n=t.css)||void 0===n?void 0:n.width)||t.css||(t.css={}),[4,this.create(t)];case 1:return o=i.sent(),this.size=(null==o?void 0:o.layout())||{},this.node=o,this.onEffectFinished().then((function(t){return s.lifecycle("onEffectSuccess",t)})).catch((function(t){return s.lifecycle("onEffectFail",t)})),console.log("布局用时:"+(+new Date-e)+"ms"),[2,this.size]}}))}))},n.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},n.prototype.create=function(n,r){var o,s;return e(this,void 0,void 0,(function(){var e,a,h,d,c,l,f,u,p,g,v,y,b,x,m,S,z;return i(this,(function(i){switch(i.label){case 0:if(e=n.type==dt,a=[ct,lt].includes(n.type),h=n.css||{},d=h.backgroundImage,c=h.display,e&&!n.src&&!n.url||a&&!n.text)return[2];if(c==w)return[2];if(a&&(n.text=String(n.text)),!(e||n.type==ft&&d))return[3,4];l=e?n.src:"",f=/url\((.+)\)/,d&&(null===(o=f.exec(d))||void 0===o?void 0:o[1])&&(l=(null===(s=f.exec(d))||void 0===s?void 0:s[1])||""),i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.getImageInfo(l)];case 2:return u=i.sent(),p=u.width,g=u.height,!(v=u.path)&&e?[2]:(v&&(n.attributes=Object.assign(n.attributes||{},{width:p,height:g,path:v,src:v,naturalSrc:l})),[3,4]);case 3:return y=i.sent(),n.type!=ft?[2]:(this.lifecycle("onEffectFail",t(t({},y),{src:l})),[3,4]);case 4:if(this.count+=1,b=new at(n,r,this.root,this.ctx),!(x=n.views||n.children))return[3,8];m=0,i.label=5;case 5:return m /^data:image\/(\w+);base64/.test(path); +export function sleep(delay) { + return new Promise(resolve => setTimeout(resolve, delay)) +} +const isDev = ['devtools'].includes(uni.getSystemInfoSync().platform) +// 缓存图片 +let cache = {} +export function isNumber(value) { + return /^-?\d+(\.\d+)?$/.test(value); +} +export function toPx(value, baseSize, isDecimal = false) { + // 如果是数字 + if (typeof value === 'number') { + return value + } + // 如果是字符串数字 + if (isNumber(value)) { + return value * 1 + } + // 如果有单位 + if (typeof value === 'string') { + const reg = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g + const results = reg.exec(value); + if (!value || !results) { + return 0; + } + const unit = results[3]; + value = parseFloat(value); + let res = 0; + if (unit === 'rpx') { + res = uni.upx2px(value); + } else if (unit === 'px') { + res = value * 1; + } else if (unit === '%') { + res = value * toPx(baseSize) / 100; + } else if (unit === 'em') { + res = value * toPx(baseSize || 14); + } + return isDecimal ? res.toFixed(2) * 1 : Math.round(res); + } + return 0 +} + +// 计算版本 +export function compareVersion(v1, v2) { + v1 = v1.split('.') + v2 = v2.split('.') + const len = Math.max(v1.length, v2.length) + while (v1.length < len) { + v1.push('0') + } + while (v2.length < len) { + v2.push('0') + } + for (let i = 0; i < len; i++) { + const num1 = parseInt(v1[i], 10) + const num2 = parseInt(v2[i], 10) + + if (num1 > num2) { + return 1 + } else if (num1 < num2) { + return -1 + } + } + return 0 +} +// #ifdef MP +export const prefix = () => { + // #ifdef MP-TOUTIAO + return tt + // #endif + // #ifdef MP-WEIXIN + return wx + // #endif + // #ifdef MP-BAIDU + return swan + // #endif + // #ifdef MP-ALIPAY + return my + // #endif + // #ifdef MP-QQ + return qq + // #endif + // #ifdef MP-360 + return qh + // #endif +} +// #endif + + +const base64ToArrayBuffer = (data) => { + // #ifndef MP-WEIXIN || APP-PLUS + /** + * Base64Binary.decode(base64_string); + * Base64Binary.decodeArrayBuffer(base64_string); + */ + const Base64Binary = { + _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + /* will return a Uint8Array type */ + decodeArrayBuffer(input) { + const bytes = (input.length / 4) * 3; + const ab = new ArrayBuffer(bytes); + this.decode(input, ab); + return ab; + }, + removePaddingChars(input) { + const lkey = this._keyStr.indexOf(input.charAt(input.length - 1)); + if (lkey == 64) { + return input.substring(0, input.length - 1); + } + return input; + }, + decode(input, arrayBuffer) { + //get last chars to see if are valid + input = this.removePaddingChars(input); + input = this.removePaddingChars(input); + + const bytes = parseInt((input.length / 4) * 3, 10); + + let uarray; + let chr1, chr2, chr3; + let enc1, enc2, enc3, enc4; + let i = 0; + let j = 0; + + if (arrayBuffer) + uarray = new Uint8Array(arrayBuffer); + else + uarray = new Uint8Array(bytes); + + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); + + for (i = 0; i < bytes; i += 3) { + //get the 3 octects in 4 ascii chars + enc1 = this._keyStr.indexOf(input.charAt(j++)); + enc2 = this._keyStr.indexOf(input.charAt(j++)); + enc3 = this._keyStr.indexOf(input.charAt(j++)); + enc4 = this._keyStr.indexOf(input.charAt(j++)); + + chr1 = (enc1 << 2) | (enc2 >> 4); + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); + chr3 = ((enc3 & 3) << 6) | enc4; + + uarray[i] = chr1; + if (enc3 != 64) uarray[i + 1] = chr2; + if (enc4 != 64) uarray[i + 2] = chr3; + } + return uarray; + } + } + return Base64Binary.decodeArrayBuffer(data) + // #endif + // #ifdef MP-WEIXIN || APP-PLUS + return uni.base64ToArrayBuffer(data) + // #endif +} + + +/** + * base64转路径 + * @param {Object} base64 + */ +export function base64ToPath(base64) { + const [, format] = /^data:image\/(\w+);base64,/.exec(base64) || []; + + return new Promise((resolve, reject) => { + // #ifdef MP + const fs = uni.getFileSystemManager() + //自定义文件名 + if (!format) { + reject(new Error('ERROR_BASE64SRC_PARSE')) + } + const time = new Date().getTime(); + let pre = prefix() + const filePath = `${pre.env.USER_DATA_PATH}/${time}.${format}` + //let buffer = base64ToArrayBuffer(bodyData) + fs.writeFile({ + filePath, + data: base64.split(',')[1], //base64.replace(/^data:\S+\/\S+;base64,/, ''), + encoding: 'base64', + // data: buffer, + // encoding: 'binary', + success() { + resolve(filePath) + }, + fail(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 (!format) { + reject(new Error('ERROR_BASE64SRC_PARSE')) + } + const time = new Date().getTime(); + const filePath = `_doc/uniapp_temp/${time}.${format}` + bitmap.save(filePath, {}, + () => { + bitmap.clear() + resolve(filePath) + }, + (error) => { + bitmap.clear() + reject(error) + }) + }, (error) => { + bitmap.clear() + reject(error) + }) + // #endif + }) +} + +/** + * 路径转base64 + * @param {Object} string + */ +export function pathToBase64(path) { + if (/^data:/.test(path)) return path + return new Promise((resolve, reject) => { + // #ifdef H5 + let image = new Image(); + image.setAttribute("crossOrigin", 'Anonymous'); + image.onload = function() { + let canvas = document.createElement('canvas'); + canvas.width = this.naturalWidth; + canvas.height = this.naturalHeight; + canvas.getContext('2d').drawImage(image, 0, 0); + let result = canvas.toDataURL('image/png') + resolve(result); + canvas.height = canvas.width = 0 + } + image.src = path + '?v=' + Math.random() + image.onerror = (error) => { + reject(error); + }; + // #endif + + // #ifdef MP + if (uni.canIUse('getFileSystemManager')) { + uni.getFileSystemManager().readFile({ + filePath: path, + encoding: 'base64', + success: (res) => { + resolve('data:image/png;base64,' + res.data) + }, + fail: (error) => { + reject(error) + } + }) + } + // #endif + + // #ifdef APP-PLUS + plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), (entry) => { + entry.file((file) => { + const fileReader = new plus.io.FileReader() + fileReader.onload = (data) => { + resolve(data.target.result) + } + fileReader.onerror = (error) => { + reject(error) + } + fileReader.readAsDataURL(file) + }, reject) + }, reject) + // #endif + }) +} + + + +export function getImageInfo(path, useCORS) { + return new Promise(async (resolve, reject) => { + let src = path + if (cache[path] && cache[path].errMsg) { + resolve(cache[path]) + } else { + try { + // if (!isBase64 && PLATFORM == UNI_PLATFORM.PLUS && !/^\/?(static|_doc)\//.test(src)) { + // src = await downloadFile(path) as string + // } else + // #ifdef MP || APP-PLUS + if (isBase64(path)) { + src = await base64ToPath(path) + } + // #endif + // #ifdef H5 + if(useCORS) { + src = await pathToBase64(path) + } + // #endif + + } catch (error) { + reject({ + ...error, + src + }) + } + uni.getImageInfo({ + src, + success: (image) => { + const localReg = /^\.|^\/(?=[^\/])/; + // #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ || MP-TOUTIAO + image.path = localReg.test(src) ? `/${image.path}` : image.path; + // #endif + // #ifdef H5 + image.path = image.path.replace(/^\./, window.location.origin) + // #endif + if (isDev) { + resolve(image) + } else { + cache[path] = image + resolve(cache[path]) + } + }, + fail(err) { + reject({ + err, + path + }) + } + }) + } + }) +} + +export function downloadFile(url) { + if (!url) return Promise.reject({ + err: 'no url' + }) + return new Promise((resolve, reject) => { + if (cache[url]) { + return reject() + } + cache[url] = 1 + uni.downloadFile({ + url, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} + +// #ifdef APP-PLUS +const getLocalFilePath = (path) => { + if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path + .indexOf('_downloads') === 0) { + return path + } + if (path.indexOf('file://') === 0) { + return path + } + if (path.indexOf('/storage/emulated/0/') === 0) { + return path + } + if (path.indexOf('/') === 0) { + const localFilePath = plus.io.convertAbsoluteFileSystem(path) + if (localFilePath !== path) { + return localFilePath + } else { + path = path.substr(1) + } + } + return '_www/' + path +} +const getFile = (url) => { + return new Promise((resolve, rejcet) => { + plus.io.resolveLocalFileSystemURL(url, resolve, (err) => { + resolve(false) + }) + }) +} +const createFile = ({ + fs, + url, + target, + name +}) => { + return new Promise((resolve, reject) => { + plus.io.resolveLocalFileSystemURL(url, res1 => { + fs.root.getDirectory(target, { + create: true + }, fileEntry => { + const success = () => { + res1.remove() + resolve() + } + getFile(target + name).then(res => { + if (res) { + res.remove((res2) => { + res1.moveTo(fileEntry, name, success, reject) + }) + } + res1.moveTo(fileEntry, name, success, reject) + }) + }) + }, reject) + }) +} +export function useNvue(target, version, timeout) { + return new Promise((resolve, reject) => { + plus.io.requestFileSystem(plus.io.PRIVATE_DOC, async (fs) => { + try { + cache['lime-painter'] = 0 + let names = ['uni.webview.1.5.3.js', 'painter.js', 'index.html'] + let urls = ['https://gitee.com/dcloud/uni-app/raw/dev/dist/', + 'https://static-6d65bd90-8508-4d6c-abbc-a4ef5c8e49e7.bspapp.com/lime-painter/' + ] + const oldVersion = plus.storage.getItem('lime-painter') + const isFile = await getFile(`${target}${names[1]}`) + if (isFile && oldVersion && compareVersion(oldVersion, version) >= 0) { + resolve() + } else { + for (var i = 0; i < names.length; i++) { + const name = names[i] + const file = await downloadFile(urls[i >= 1 ? 1 : 0] + name) + await createFile({ + fs, + url: file.tempFilePath, + target, + name: name.includes('uni.webview') ? 'uni.webview.js' : name + }) + } + plus.storage.setItem('lime-painter', version) + cache['lime-painter'] = version + resolve() + } + } catch (e) { + let index = parseInt(timeout / 20) + while (!cache['lime-painter'] && index) { + await sleep(20) + index-- + } + if (cache['lime-painter']) { + resolve() + } else { + reject(e) + } + } + }, reject) + }) +} +// #endif diff --git a/uni_modules/lime-painter/components/lime-painter/index.vue b/uni_modules/lime-painter/components/lime-painter/index.vue new file mode 100644 index 0000000..ba53413 --- /dev/null +++ b/uni_modules/lime-painter/components/lime-painter/index.vue @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/uni_modules/lime-painter/package.json b/uni_modules/lime-painter/package.json new file mode 100644 index 0000000..f973fc3 --- /dev/null +++ b/uni_modules/lime-painter/package.json @@ -0,0 +1,96 @@ +{ + "id": "lime-painter", + "displayName": "海报画板", + "version": "1.9.3.4", + "description": "一款canvas海报组件,更优雅的海报生成方案", + "keywords": [ + "海报", + "canvas", + "生成海报", + "生成二维码", + "JSON" +], + "repository": "https://gitee.com/liangei/lime-painter", + "engines": { + "HBuilderX": "^3.4.14" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "305716444" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "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": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u", + "小红书": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + }, + "name": "lime-painter", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/uni_modules/lime-painter/readme.md b/uni_modules/lime-painter/readme.md new file mode 100644 index 0000000..3bd8e41 --- /dev/null +++ b/uni_modules/lime-painter/readme.md @@ -0,0 +1,910 @@ +# Painter 画板 测试版 + +> uniapp 海报画板,更优雅的海报生成方案 +> [查看更多 站点 1](https://limeui.qcoon.cn/#/painter) +> [查看更多 站点 2](http://liangei.gitee.io/limeui/#/painter) +> Q 群:806744170 + +## 平台兼容 + +| H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 头条小程序 | QQ 小程序 | App | +| --- | ---------- | ------------ | ---------- | ---------- | --------- | --- | +| √ | √ | √ | 未测 | √ | √ | √ | + +## 安装 +在市场导入[海报画板](https://ext.dcloud.net.cn/plugin?id=2389)uni_modules版本的即可,无需`import` + +## 代码演示 + +### 基本用法 + +- 插件提供 JSON 及 XML 的方式绘制海报 +- 参考了 css 块状流布局模拟 css schema 方式。 +- 使用JSON的方式时,请使用驼峰key + + +#### 方式一 XML + +- 提供`l-painter-view`、`l-painter-text`、`l-painter-image`、`l-painter-qrcode`四种类型组件 +- 通过 `css` 属性绘制样式,与 style 使用方式保持一致。 + +```html + + + + + +``` + +#### 方式二 JSON + +- 在 json 里四种类型组件的`type`为`view`、`text`、`image`、`qrcode` +- 通过 `board` 设置海报所需的 JSON 数据进行绘制或`ref`获取组件实例调用组件内的`render(json)` +- 所有类型的 schema 都具有`css`字段,css 的 key 值使用**驼峰**如:`lineHeight` + +```html + +``` + +```js +data() { + return { + poster: { + css: { + // 根节点若无尺寸,自动获取父级节点 + width: '750rpx' + }, + views: [ + { + css: { + background: "#07c160", + height: "120rpx", + width: "120rpx", + display: "inline-block" + }, + type: "view" + }, + { + css: { + background: "#1989fa", + height: "120rpx", + width: "120rpx", + borderTopRightRadius: "60rpx", + borderBottomLeftRadius: "60rpx", + display: "inline-block", + margin: "0 30rpx" + }, + views: [], + type: "view" + }, + { + css: { + background: "#ff9d00", + height: "120rpx", + width: "120rpx", + borderRadius: "50%", + display: "inline-block" + }, + views: [], + type: "view" + }, + ] + } + } +} +``` + +### View 容器 + +- 类似于 `div` 可以嵌套承载更多的 view、text、image,qrcode 共同构建一颗完整的节点树 +- 在 JSON 里具有 `views` 的数组字段,用于嵌套承载节点。 + +#### 方式一 XML + +```html + + + + + + +``` + +#### 方式二 JSON + +```js +{ + css: {}, + views: [ + { + type: 'view', + css: { + background: '#f0f0f0', + paddingTop: '100rpx' + }, + views: [ + { + type: 'view', + css: { + background: '#d9d9d9', + width: '33.33%', + height: '100rpx', + display: 'inline-block' + } + }, + { + type: 'view', + css: { + background: '#bfbfbf', + width: '66.66%', + height: '100rpx', + display: 'inline-block' + } + } + ], + + } + ] +} +``` + +### Text 文本 + +- 通过 `text` 属性填写文本内容。 +- 支持`\n`换行符 +- 支持省略号,使用 css 的`line-clamp`设置行数,当文字内容超过会显示省略号。 +- 支持`text-decoration` + +#### 方式一 XML + +```html + + + + + + + + +``` + +#### 方式二 JSON + +```js +// 基础用法 +{ + type: 'text', + text: '登鹳雀楼\n白日依山尽,黄河入海流\n欲穷千里目,更上一层楼', +}, +{ + type: 'text', + text: '登鹳雀楼\n白日依山尽,黄河入海流\n欲穷千里目,更上一层楼', + css: { + // 设置居中对齐 + textAlign: 'center', + // 设置中划线 + textDecoration: 'line-through' + } +}, +{ + type: 'text', + text: '登鹳雀楼\n白日依山尽,黄河入海流\n欲穷千里目,更上一层楼', + css: { + // 设置右对齐 + textAlign: 'right', + } +}, +{ + type: 'text', + text: '登鹳雀楼\n白日依山尽,黄河入海流\n欲穷千里目,更上一层楼', + css: { + // 设置行数,超出显示省略号 + lineClamp: 3, + // 渐变文字 + background: 'linear-gradient(,#ff971b 0%, #1989fa 100%)', + backgroundClip: 'text' + } +} +``` + +### Image 图片 + +- 通过 `src` 属性填写图片路径。 +- 图片路径支持:网络图片,本地 static 里的图片路径,缓存路径 +- 通过 `css` 的 `object-fit`属性可以设置图片的填充方式,可选值见下方 CSS 表格。 +- 通过 `css` 的 `object-position`配合 `object-fit` 可以设置图片的对齐方式,类似于`background-position`,详情见下方 CSS 表格。 +- 使用网络图片时:小程序需要去公众平台配置 [downloadFile](https://mp.weixin.qq.com/) 域名 +- 使用网络图片时:**H5 和 Nvue 需要决跨域问题** + +#### 方式一 XML + +```html + + + + + + + + + +``` + +#### 方式二 JSON + +```js +// 基础用法 +{ + type: 'image', + src: 'https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg', + css: { + width: '200rpx', + height: '200rpx' + } +}, +// 填充方式 +// css objectFit 设置 填充方式 见下方表格 +{ + type: 'image', + src: 'https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg', + css: { + width: '200rpx', + height: '200rpx', + objectFit: 'contain' + } +}, +// css objectPosition 设置 图片的对齐方式 +{ + type: 'image', + src: 'https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg', + css: { + width: '200rpx', + height: '200rpx', + objectFit: 'contain', + objectPosition: '50% 50%' + } +} +``` + +### Qrcode 二维码 + +- 通过`text`属性填写需要生成二维码的文本。 +- 通过 `css` 里的 `color` 可设置生成码点的颜色。 +- 通过 `css` 里的 `background`可设置背景色。 +- 通过 `css `里的 `width`、`height`设置尺寸。 + +#### 方式一 XML + +```html + + + +``` + +#### 方式二 JSON + +```js +{ + type: 'qrcode', + text: 'limeui.qcoon.cn', + css: { + width: '200rpx', + height: '200rpx', + } +} +``` + +### 生成图片 + +- 1、通过设置`isCanvasToTempFilePath`自动生成图片并在 `@success` 事件里接收海报临时路径 +- 2、通过调用内部方法生成图片: + +```html +...code +``` + +```js +this.$refs.painter.canvasToTempFilePathSync({ + fileType: "jpg", + // 如果返回的是base64是无法使用 saveImageToPhotosAlbum,需要设置 pathType为url + pathType: 'url', + quality: 1, + success: (res) => { + console.log(res.tempFilePath); + // 非H5 保存到相册 + // H5 提示用户长按图另存 + uni.saveImageToPhotosAlbum({ + filePath: res.tempFilePath, + success: function () { + console.log('save success'); + } + }); + }, +}); +``` + +### 主动调用方式 + +- 通过获取组件实例内部的`render`函数 传递`JSON`即可 + +```html + +``` + +```js +// 渲染 +this.$refs.painter.render(jsonSchema); +// 生成图片 +this.$refs.painter.canvasToTempFilePathSync({ + fileType: "jpg", + // 如果返回的是base64是无法使用 saveImageToPhotosAlbum,需要设置 pathType为url + pathType: 'url', + quality: 1, + success: (res) => { + console.log(res.tempFilePath); + // 非H5 保存到相册 + uni.saveImageToPhotosAlbum({ + filePath: res.tempFilePath, + success: function () { + console.log('save success'); + } + }); + }, +}); +``` + + +### H5跨域 +- 一般是需要后端或管理OSS资源的大佬处理 +- 一般OSS的处理方式: + +1、设置来源 +```cmd +* +``` + +2、允许Methods +```html +GET +``` + +3、允许Headers +```html +access-control-allow-origin:* +``` + +4、最后如果还是不行,可试下给插件设置`useCORS` +```html + +``` + + + +### 海报示例 + +- 提供一份示例,只把插件当成生成图片的工具,非必要不要在弹窗里使用。 +- 通过设置`isCanvasToTempFilePath`主动生成图片,再由 `@success` 事件接收海报临时路径 +- 设置`custom-style="position: fixed; left: 200%"`样式把画板移到屏幕之外,达到隐藏画板的效果。 +- **注意**:受平台影响海报画板最好不要隐藏,可能会无法生成图片。 + +#### 方式一 XML + +```html + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +```js +data() { + return { + path: '' + } +} +``` + +#### 方式二 JSON + +```html + + +``` + +```js +data() { + return { + path: '', + poster: { + css: { + width: "750rpx", + paddingBottom: "40rpx", + background: "linear-gradient(,#000 0%, #ff5000 100%)" + }, + views: [ + { + src: "https://fastly.jsdelivr.net/gh/liangei/image@latest/avatar-1.jpeg", + type: "image", + css: { + background: "#fff", + objectFit: "cover", + marginLeft: "40rpx", + marginTop: "40rpx", + width: "84rpx", + border: "2rpx solid #fff", + boxSizing: "border-box", + height: "84rpx", + borderRadius: "50%" + } + }, + { + type: "view", + css: { + marginTop: "40rpx", + paddingLeft: "20rpx", + display: "inline-block" + }, + views: [ + { + text: "隔壁老王", + type: "text", + css: { + display: "block", + paddingBottom: "10rpx", + color: "#fff", + fontSize: "32rpx", + fontWeight: "bold" + } + }, + { + text: "为您挑选了一个好物", + type: "text", + css: { + color: "rgba(255,255,255,.7)", + fontSize: "24rpx" + }, + } + ], + }, + { + css: { + marginLeft: "40rpx", + marginTop: "30rpx", + padding: "32rpx", + boxSizing: "border-box", + background: "#fff", + borderRadius: "16rpx", + width: "670rpx", + boxShadow: "0 20rpx 58rpx rgba(0,0,0,.15)" + }, + views: [ + { + src: "https://m.360buyimg.com/babel/jfs/t1/196317/32/13733/288158/60f4ea39E6fb378ed/d69205b1a8ed3c97.jpg", + type: "image", + css: { + objectFit: "cover", + objectPosition: "50% 50%", + width: "606rpx", + height: "606rpx" + }, + }, { + css: { + marginTop: "32rpx", + color: "#FF0000", + fontWeight: "bold", + fontSize: "28rpx", + lineHeight: "1em" + }, + views: [{ + text: "¥", + type: "text", + css: { + verticalAlign: "bottom" + }, + }, { + text: "39", + type: "text", + css: { + verticalAlign: "bottom", + fontSize: "58rpx" + }, + }, { + text: ".39", + type: "text", + css: { + verticalAlign: "bottom" + }, + }, { + text: "¥59.99", + type: "text", + css: { + verticalAlign: "bottom", + paddingLeft: "10rpx", + fontWeight: "normal", + textDecoration: "line-through", + color: "#999999" + } + }], + + type: "view" + }, { + css: { + marginTop: "32rpx", + fontSize: "26rpx", + color: "#8c5400" + }, + views: [{ + text: "自营", + type: "text", + css: { + color: "#212121", + background: "#ffb400" + }, + }, { + text: "30天最低价", + type: "text", + css: { + marginLeft: "16rpx", + background: "#fff4d9", + textDecoration: "line-through" + }, + }, { + text: "满减优惠", + type: "text", + css: { + marginLeft: "16rpx", + background: "#fff4d9" + }, + }, { + text: "超高好评", + type: "text", + css: { + marginLeft: "16rpx", + background: "#fff4d9" + }, + + }], + + type: "view" + }, { + css: { + marginTop: "30rpx" + }, + views: [ + { + text: "360儿童电话手表9X 智能语音问答定位支付手表 4G全网通20米游泳级防水视频通话拍照手表男女孩星空蓝", + type: "text", + css: { + paddingRight: "32rpx", + boxSizing: "border-box", + lineClamp: 2, + color: "#333333", + lineHeight: "1.8em", + fontSize: "36rpx", + width: "478rpx" + }, + }, { + text: "limeui.qcoon.cn", + type: "qrcode", + css: { + width: "128rpx", + height: "128rpx", + }, + + }], + type: "view" + }], + type: "view" + } + ] + } + } +} +``` + +### Nvue +- 必须为HBX 3.4.11及以上 + + +### 原生小程序 + +- 插件里的`painter.js`支持在原生小程序中使用 +- new Painter 之后在`source`里传入 JSON +- 再调用`render`绘制海报 +- 如需生成图片,请查看微信小程序 cavnas 的[canvasToTempFilePath](https://developers.weixin.qq.com/miniprogram/dev/api/canvas/wx.canvasToTempFilePath.html) + +```html + +``` + +```js +import { Painter } from "./painter"; +page({ + data: { + poster: { + css: { + width: "750rpx", + }, + views: [ + { + type: "view", + css: { + background: "#d2d4c8", + paddingTop: "100rpx", + }, + views: [ + { + type: "view", + css: { + background: "#5f7470", + width: "33.33%", + height: "100rpx", + display: "inline-block", + }, + }, + { + type: "view", + css: { + background: "#889696", + width: "33.33%", + height: "100rpx", + display: "inline-block", + }, + }, + { + type: "view", + css: { + background: "#b8bdb5", + width: "33.33%", + height: "100rpx", + display: "inline-block", + }, + }, + ], + }, + ], + }, + }, + async onLoad() { + const res = await this.getCentext(); + const painter = new Painter(res); + // 返回计算布局后的整个内容尺寸 + const { width, height } = await painter.source(this.data.poster); + // 得到计算后的尺寸后 可给canvas尺寸赋值,达到动态响应效果 + // 渲染 + await painter.render(); + }, + // 获取canvas 2d + // 非2d也可以使用这里只是举个例子 + getCentext() { + return new Promise((resolve) => { + wx.createSelectorQuery() + .select(`#painter`) + .node() + .exec((res) => { + let { node: canvas } = res[0]; + resolve({ + canvas, + context: canvas.getContext("2d"), + width: canvas.width, + height: canvas.height, + pixelRatio: 2, + }); + }); + }); + }, +}); +``` + +### 旧版(1.6.x)更新 + +- 由于 1.8.x 版放弃了以定位的方式,所以 1.6.x 版更新之后要每个样式都加上`position: absolute` +- 旧版的 `image` mode 模式被放弃,使用`object-fit` +- 旧版的 `isRenderImage` 改成 `is-canvas-to-temp-filePath` +- 旧版的 `maxLines` 改成 `line-clamp` + +## API + +### Props + +| 参数 | 说明 | 类型 | 默认值 | +| -------------------------- | ------------------------------------------------------------ | ---------------- | ------------ | +| board | JSON 方式的海报元素对象集 | object | - | +| css | 海报最外层的样式,可以理解为`body` | object | 参数请向下看 | +| custom-style | canvas 自定义样式 | string | | +| is-canvas-to-temp-filePath | 是否生成图片,在`@success`事件接收图片地址 | boolean | `false` | +| after-delay | 生成图片错乱,可延时生成图片 | number | `100` | +| type | canvas 类型,对微信头条支付宝小程序可有效,可选值:`2d`,`''` | string | `2d` | +| file-type | 生成图片的后缀类型, 可选值:`png`、`jpg` | string | `png` | +| path-type | 生成图片路径类型,可选值`url`、`base64` | string | `-` | +| pixel-ratio | 生成图片的像素密度,默认为对应手机的像素密度,`nvue`无效 | number | `-` | +| width | **废弃** 画板的宽度,一般只用于通过内部方法时加上 | number | `` | +| height | **废弃** 画板的高度 ,同上 | number | `` | + +### css +| 属性名 | 支持的值或类型 | 默认值 | +| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | +| (min\max)width | 支持`%`、`rpx`、`px` | - | +| height | 同上 | - | +| color | `string` | - | +| position | 定位,可选值:`absolute`、`fixed` | - | +| ↳ left、top、right、bottom | 配合`position`才生效,支持`%`、`rpx`、`px` | - | +| margin | 可简写或各方向分别写,如:`margin-top`,支持`auto`、`rpx`、`px` | - | +| padding | 可简写或各方向分别写,支持`rpx`、`px` | - | +| border | 可简写或各个值分开写:`border-width`、`border-style` 、`border-color`,简写请按顺序写 | - | +| line-clamp | `number`,超过行数显示省略号 | - | +| vertical-align | 文字垂直对齐,可选值:`bottom`、`top`、`middle` | `middle` | +| line-height | 文字行高,支持`rpx`、`px`、`em` | `1.4em` | +| font-weight | 文字粗细,可选值:`normal`、`bold` | `normal` | +| font-size | 文字大小,`string`,支持`rpx`、`px` | `14px` | +| text-decoration | 文本修饰,可选值:`underline` 、`line-through`、`overline` | - | +| text-align | 文本水平对齐,可选值:`right` 、`center` | `left` | +| display | 框类型,可选值:`block`、`inline-block`、`flex`、`none`,当为`none`时是不渲染该段, `flex`功能简陋。 | - | +| flex | 配合 display: flex; 属性定义了在分配多余空间,目前只用为数值如: flex: 1 | - | +| align-self | 配合 display: flex; 单个项目垂直轴对齐方式: `flex-start` `flex-end` `center` | `flex-start` | +| justify-content | 配合 display: flex; 水平轴对齐方式: `flex-start` `flex-end` `center` | `flex-start` | +| align-items | 配合 display: flex; 垂直轴对齐方式: `flex-start` `flex-end` `center` | `flex-start` | +| border-radius | 圆角边框,支持`%`、`rpx`、`px` | - | +| box-sizing | 可选值:`border-box` | - | +| box-shadow | 投影 | - | +| background(color) | 支持渐变,但必须写百分比!如:`linear-gradient(,#ff971b 0%, #ff5000 100%)`、`radial-gradient(#0ff 15%, #f0f 60%)`,目前 radial-gradient 渐变的圆心为元素中点,半径为最长边,不支持设置 | - | +| background-clip | 文字渐变,配合`background`背景渐变,设置`background-clip: text` 达到文字渐变效果 | - | +| background-image | view 元素背景:`url(src)`,若只是设置背景图,请不要设置`background-repeat` | - | +| background-repeat | 设置是否及如何重复背景纹理,可选值:`repeat`、`repeat-x`、`repeat-y`、`no-repeat` | `repeat` | +| [object-fit](https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-fit/) | 图片元素适应容器方式,类似于`mode`,可选值:`cover`、 `contain`、 `fill`、 `none` | - | +| [object-position](https://developer.mozilla.org/zh-CN/docs/Web/CSS/object-position) | 图片的对齐方式,配合`object-fit`使用 | - | + +### 图片填充模式 object-fit + +| 名称 | 含义 | +| ------- | ------------------------------------------------------ | +| contain | 保持宽高缩放图片,使图片的长边能完全显示出来 | +| cover | 保持宽高缩放图片,使图片的短边能完全显示出来,裁剪长边 | +| fill | 拉伸图片,使图片填满元素 | +| none | 保持图片原有尺寸 | + +### 事件 Events + +| 事件名 | 说明 | 返回值 | +| -------- | ---------------------------------------------------------------- | ------ | +| success | 生成图片成功,若使用`is-canvas-to-temp-filePath` 可以接收图片地址 | path | +| fail | 生成图片失败 | error | +| done | 绘制成功 | | +| progress | 绘制进度 | number | + +### 内部函数 Ref +| 事件名 | 说明 | 返回值 | +| -------- | ---------------------------------------------------------------- | ------ | +| render(object) | 渲染器,传入JSON 绘制海报 | promise | +| [canvasToTempFilePath](https://uniapp.dcloud.io/api/canvas/canvasToTempFilePath.html#canvastotempfilepath)(object) | 把当前画布指定区域的内容导出生成指定大小的图片,并返回文件临时路径。 | | +| canvasToTempFilePathSync(object) | 同步接口,同上 | | + + +## 常见问题 + +- 1、H5 端使用网络图片需要解决跨域问题。 +- 2、小程序使用网络图片需要去公众平台增加下载白名单!二级域名也需要配! +- 3、H5 端生成图片是 base64,有时显示只有一半可以使用原生标签`` +- 4、发生保存图片倾斜变形或提示 native buffer exceed size limit 时,使用 pixel-ratio="2"参数,降分辨率。 +- 5、h5 保存图片不需要调接口,提示用户长按图片保存。 +- 6、画板不能隐藏,包括`v-if`,`v-show`、`display:none`、`opacity:0`,另外也不要把画板放在弹窗里。如果需要隐藏画板请设置 `custom-style="position: fixed; left: 200%"` +- 7、微信小程序 canvas 2d **不支持真机调试**,请使用真机预览方式。 +- 8、微信小程序打开调试时可以生但并闭无法生成时,这种情况一般是没有在公众号配置download域名 +- 9、HBX 3.4.5之前的版本不支持vue3 +- 10、在微信开发工具上 canvas 层级最高无法zindex,并不影响真机 +- 11、请不要导入非uni_modules插件 +- 华为手机 APP 上无法生成图片,请使用 HBX2.9.11++(已过时,忽略这条) +- IOS APP 请勿使用 HBX2.9.3.20201014 的版本!这个版本无法生成图片。(已过时,忽略这条) +- 苹果微信 7.0.20 存在闪退和图片无法 onload 为微信 bug(已过时,忽略这条) + +## 打赏 + +如果你觉得本插件,解决了你的问题,赠人玫瑰,手留余香。 + +![输入图片说明](https://static-6d65bd90-8508-4d6c-abbc-a4ef5c8e49e7.bspapp.com/image/222521_bb543f96_518581.jpeg "微信图片编辑_20201122220352.jpg") +![输入图片说明](https://static-6d65bd90-8508-4d6c-abbc-a4ef5c8e49e7.bspapp.com/image/wxplay.jpg "wxplay.jpg") \ No newline at end of file diff --git a/uni_modules/lime-painter/static/index.html b/uni_modules/lime-painter/static/index.html new file mode 100644 index 0000000..fdf884e --- /dev/null +++ b/uni_modules/lime-painter/static/index.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uni_modules/lime-painter/static/painter.js b/uni_modules/lime-painter/static/painter.js new file mode 100644 index 0000000..2910063 --- /dev/null +++ b/uni_modules/lime-painter/static/painter.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Painter={})}(this,(function(t){"use strict";var e=function(){return e=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0&&o[o.length-1])||6!==r[0]&&2!==r[0])){s=0;continue}if(3===r[0]&&(!o||r[1]>o[0]&&r[1]=360&&(s-=360);s<0&&(s+=360);if(0===(s=Math.round(s)))return{x0:Math.round(e/2)+n,y0:i+o,x1:Math.round(e/2)+n,y1:o};if(180===s)return{x0:Math.round(e/2)+n,y0:o,x1:Math.round(e/2)+n,y1:i+o};if(90===s)return{x0:n,y0:Math.round(i/2)+o,x1:e+n,y1:Math.round(i/2)+o};if(270===s)return{x0:e+n,y0:Math.round(i/2)+o,x1:n,y1:Math.round(i/2)+o};var a=Math.round(180*Math.asin(e/Math.sqrt(Math.pow(e,2)+Math.pow(i,2)))/Math.PI);if(s===a)return{x0:n,y0:i+o,x1:e+n,y1:o};if(s===180-a)return{x0:n,y0:o,x1:e+n,y1:i+o};if(s===180+a)return{x0:e+n,y0:o,x1:n,y1:i+o};if(s===360-a)return{x0:e+n,y0:i+o,x1:n,y1:o};var h=0,d=0,c=0,l=0;if(s180-a&&s<180||s>180&&s<180+a||s>360-a){var f=s*Math.PI/180,u=s360-a?i/2:-i/2,p=Math.tan(f)*u,g=s180-a&&s<180?e/2-p:-e/2-p;h=-(c=p+(v=Math.pow(Math.sin(f),2)*g)),d=-(l=u+v/Math.tan(f))}if(s>a&&s<90||s>90&&s<90+a||s>180+a&&s<270||s>270&&s<360-a){var v;f=(90-s)*Math.PI/180,p=s>a&&s<90||s>90&&s<90+a?e/2:-e/2,u=Math.tan(f)*p,g=s>a&&s<90||s>270&&s<360-a?i/2-u:-i/2-u;h=-(c=p+(v=Math.pow(Math.sin(f),2)*g)/Math.tan(f)),d=-(l=u+v)}return h=Math.round(h+e/2)+n,d=Math.round(i/2-d)+o,c=Math.round(c+e/2)+n,l=Math.round(i/2-l)+o,{x0:h,y0:d,x1:c,y1:l}}(o,t,e,i,n),a=s.x0,h=s.y0,d=s.x1,c=s.y1,l=r.createLinearGradient(a,h,d,c),f=o.match(/linear-gradient\((.+)\)/)[1],u=U(f.substring(f.indexOf(",")+1)),p=0;pt.length)&&(e=t.length);for(var i=0,n=new Array(e);i=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function N(t){return"number"==typeof t}function V(t){return"auto"===t||null===t}function G(t){return/%$/.test(t)}var q,J=0,Q=function(){function t(){Y(this,"elements",[]),Y(this,"afterElements",[]),Y(this,"beforeElements",[]),Y(this,"ids",[]),Y(this,"width",0),Y(this,"height",0),Y(this,"top",0),Y(this,"left",0),Y(this,"pre",null),Y(this,"offsetX",0),Y(this,"offsetY",0),J++,this.id=J}var e=t.prototype;return e.fixedBind=function(t,e){void 0===e&&(e=0),this.container=e?t.parent:t.root,this.container.fixedLine=this,this.fixedAdd(t)},e.fixedAdd=function(t){this.elements.push(t);var e=t.computedStyle.zIndex;(void 0===e?0:e)>=0?this.afterElements.push(t):this.beforeElements.push(t),this.refreshLayout()},e.bind=function(t){this.container=t.parent,this.container.line=null,this.container.lines?(this.container.lines.push(this),this.pre=this.getPreLine(),this.top=this.pre.top+this.pre.height,this.left=this.container.contentSize.left):(this.top=this.container.contentSize.top,this.left=this.container.contentSize.left,this.container.lines=[this]),this.isInline=t.isInline(),this.container.line=this,this.outerWidth=t.parent&&t.parent.contentSize.width?t.parent.contentSize.width:1/0,this.add(t)},e.getPreLine=function(){return this.container.lines[this.container.lines.length-2]},e.canIEnter=function(t){return!((100*t.offsetSize.width+100*this.width)/100>this.outerWidth)||(this.closeLine(),!1)},e.closeLine=function(){delete this.container.line},e.add=function(t){this.ids.push(t.id),this.elements.push(t),this.refreshWidthHeight(t)},e.refreshWidthHeight=function(t){t.offsetSize.height>this.height&&(this.height=t.offsetSize.height),this.width+=t.offsetSize.width||0,(this.container.lineMaxWidth||0)this[this.key.height]&&(this[this.key.height]=t.offsetSize[this.key.height]),this[this.key.width]+=t.offsetSize[this.key.width],(this.container.lineMaxWidth||0)1?0:"flex-end"===t.style.alignSelf?this.container.contentSize[this.key.contentHeight]-t.contentSize[this.key.height]:"center"===t.style.alignSelf?(this.container.contentSize[this.key.contentHeight]-t.contentSize[this.key.height])/2:0},n}(Q),et=b,it=y,nt=v,ot=x,rt=m,st=w,at=z,ht=M,dt=B,ct=0,lt={left:null,top:null,width:null,height:null},ft=function(){function t(t,e,i,n){var o=this;Y(this,"id",ct++),Y(this,"style",{left:null,top:null,width:null,height:null}),Y(this,"computedStyle",{}),Y(this,"originStyle",{}),Y(this,"children",{}),Y(this,"layoutBox",$({},lt)),Y(this,"contentSize",$({},lt)),Y(this,"clientSize",$({},lt)),Y(this,"borderSize",$({},lt)),Y(this,"offsetSize",$({},lt)),this.ctx=n,this.root=i,e&&(this.parent=e),this.name=t.name||t.type,this.attributes=this.getAttributes(t);var r=this.getComputedStyle(t,null==e?void 0:e.computedStyle);this.isAbsolute=r.position==ht,this.isFixed=r.position==dt,this.originStyle=r,Object.keys(r).forEach((function(t){Object.defineProperty(o.style,t,{configurable:!0,enumerable:!0,get:function(){return r[t]},set:function(e){r[t]=e}})}));var s={contentSize:$({},this.contentSize),clientSize:$({},this.clientSize),borderSize:$({},this.borderSize),offsetSize:$({},this.offsetSize)};Object.keys(s).forEach((function(t){Object.keys(o[t]).forEach((function(e){Object.defineProperty(o[t],e,{configurable:!0,enumerable:!0,get:function(){return s[t][e]},set:function(i){s[t][e]=i}})}))})),this.computedStyle=this.style}var e=t.prototype;return e.add=function(t){t.parent=this,this.children[t.id]=t},e.getChildren=function(){var t=this;return Object.keys(this.children).map((function(e){return t.children[e]}))},e.getLineRect=function(t,e){var i={width:0,height:0},n=e?e.lines:this.parent&&this.parent.lines;return n&&n.find((function(e){return e.ids.includes(t)}))||i},e.getComputedStyle=function(t,e){var i=["color","fontSize","lineHeight","verticalAlign","fontWeight","textAlign"],n=t.css,o=void 0===n?{}:n,r=t.type,s=void 0===r?nt:r,a=$({},P);if([it,et,ot].includes(s)&&!o.display&&(a.display=st),e)for(var h=0;h=0&&l<0,Y=d>=0&&u<0;return i==a[0]&&(this[i].left=t.left+s+v+C+(U?2*-l:0),this[i].top=t.top+d+b+P+(Y?2*-u:0),this[i].width=t.width+(this[i].widthAdd?0:E),this[i].height=t.height+(this[i].heightAdd?0:H),this[i].widthAdd=E,this[i].heightAdd=H),i==a[1]&&(this[i].left=t.left+s+C+(U<0?-l:0),this[i].top=t.top+d+P+(Y?-u:0),this[i].width=t.width+v+m,this[i].height=t.height+b+S),i==a[2]&&(this[i].left=t.left+s+C/2+(U<0?-l:0),this[i].top=t.top+d+P/2+(Y?-u:0),this[i].width=t.width+v+m+C/2+A/2,this[i].height=t.height+b+S+O/2+P/2),i==a[3]&&(this[i].left=t.left+(U<0?-l:0),this[i].top=t.top+(Y?-u:0),this[i].width=t.width+v+m+C+A+s+l,this[i].height=t.height+b+S+O+P+u+d),this[i]},e.layoutBoxUpdate=function(t,e,i,n){var o=this;if(void 0===i&&(i=-1),"border-box"==e.boxSizing){var r=e||{},s=r.border,h=(s=void 0===s?{}:s).borderWidth,d=void 0===h?0:h,c=r.borderTop,l=(c=void 0===c?{}:c).borderTopWidth,f=void 0===l?d:l,u=r.borderBottom,p=(u=void 0===u?{}:u).borderBottomWidth,g=void 0===p?d:p,v=r.borderRight,y=(v=void 0===v?{}:v).borderRightWidth,b=void 0===y?d:y,x=r.borderLeft,m=(x=void 0===x?{}:x).borderLeftWidth,w=void 0===m?d:m,S=r.padding,z=(S=void 0===S?{}:S).paddingTop,M=void 0===z?0:z,B=S.paddingRight,I=void 0===B?0:B,k=S.paddingBottom,P=void 0===k?0:k,W=S.paddingLeft,R=void 0===W?0:W;i||(t.width-=R+I+b+w),1!==i||n||(t.height-=M+P+f+g)}this.layoutBox&&(a.forEach((function(i){return o.layoutBox[i]=o.getOffsetSize(t,e,i)})),this.layoutBox=Object.assign({},this.layoutBox,this.layoutBox.borderSize))},e.getBoxPosition2=function(){var t=this.computedStyle,e=this.fixedLine,i=this.lines,n=t.left,o=void 0===n?0:n,r=t.top,s=void 0===r?0:r,a=t.padding||{},h=a.paddingBottom,d=void 0===h?0:h,c=a.paddingRight,l=void 0===c?0:c,f=$({},this.contentSize,{left:o,top:s}),u=this.contentSize.top-this.offsetSize.top,p=this.contentSize.left-this.offsetSize.left;if(this.root.fixedLine&&!this.root.isDone){this.root.isDone=!0;for(var g,v=X(this.root.fixedLine.elements);!(g=v()).done;){var y=g.value;y.setPosition(y,this.root.offsetSize),y.getBoxPosition2()}}if(e)for(var b,x=X(e.elements);!(b=x()).done;){var m=b.value;m.setPosition(m,f),m.style.left+=o+p+l,m.style.top+=s+u+d,m.getBoxPosition2()}if(i)for(var w,S=X(i);!(w=S()).done;){w.value.layout(f.top+u,f.left+p)}return this.layoutBoxUpdate(f,t),this.layoutBox},e.getBoxState=function(t,e){return this.isBlock(t)||this.isBlock(e)},e.isBlock=function(t){return void 0===t&&(t=this),t&&t.style.display==rt},e.isFlex=function(t){return void 0===t&&(t=this),t&&t.style.display==at},e.isInFlow=function(){return!(this.isAbsolute||this.isFixed)},e.inFlexBox=function(t){return void 0===t&&(t=this),!!t.isInFlow()&&(!!t.parent&&(!(!t.parent||t.parent.style.display!==at)||void 0))},e.isInline=function(t){return void 0===t&&(t=this),t&&t.style.display==st},e.contrastSize=function(t,e,i){var n=t;return i&&(n=Math.min(n,i)),e&&(n=Math.max(n,e)),n},e.measureText=function(t,e){var i=this.ctx.measureText(t),n=i.width,o=i.actualBoundingBoxAscent,r=i.actualBoundingBoxDescent;return{ascent:o,descent:r,width:n,fontHeight:o+r||.7*e+1}},e.getBoxWidthHeight=function(){var t,e=this,i=this.name,n=this.computedStyle,o=this.attributes,r=this.parent,s=void 0===r?{}:r,a=this.ctx,h=this.getChildren(),d=n.left,c=void 0===d?0:d,l=n.top,f=void 0===l?0:l,u=n.bottom,p=n.right,g=n.width,v=void 0===g?0:g,y=n.minWidth,b=n.maxWidth,x=n.minHeight,m=n.maxHeight,w=n.height,S=void 0===w?0:w,z=n.fontSize,M=void 0===z?14:z,B=n.fontWeight,I=n.fontFamily,k=n.fontStyle,P=n.position,W=n.lineClamp,R=n.lineHeight,O=n.padding,T=void 0===O?{}:O,L=n.margin,A=void 0===L?{}:L,F=n.border,C=(F=void 0===F?{}:F).borderWidth,E=void 0===C?0:C,H=n.borderRight,U=(H=void 0===H?{}:H).borderRightWidth,Y=void 0===U?E:U,$=n.borderLeft,D=($=void 0===$?{}:$).borderLeftWidth,_=void 0===D?E:D,X=s.contentSize&&s.contentSize.width,N=s.contentSize&&s.contentSize.height;if(G(v)&&X&&(v=j(v,X)),G(v)&&!X&&(v=null),G(S)&&N&&(S=j(S,N)),G(S)&&!N&&(S=null),G(y)&&X&&(y=j(y,X)),G(b)&&X&&(b=j(b,X)),G(x)&&N&&(x=j(x,N)),G(m)&&N&&(m=j(m,N)),n.padding&&null!=(t=s.contentSize)&&t.width)for(var V in n.padding)Object.hasOwnProperty.call(n.padding,V)&&(n.padding[V]=j(n.padding[V],X));var q=T.paddingRight,J=void 0===q?0:q,Z=T.paddingLeft,tt=void 0===Z?0:Z;if(n.margin&&[n.margin.marginLeft,n.margin.marginRight].includes("auto"))if(v){var ot=X&&X-v-J-tt-_-Y||0;n.margin.marginLeft==n.margin.marginRight?n.margin.marginLeft=n.margin.marginRight=ot/2:"auto"==n.margin.marginLeft?n.margin.marginLeft=ot:n.margin.marginRight=ot}else n.margin.marginLeft=n.margin.marginRight=0;var rt=A.marginRight,st=void 0===rt?0:rt,at=A.marginLeft,dt={width:v,height:S,left:0,top:0},ct=tt+J+_+Y+(void 0===at?0:at)+st;if(i==it&&!this.attributes.widths){var lt=o.text||"";a.save(),a.setFonts({fontFamily:I,fontSize:M,fontWeight:B,fontStyle:k});var ft=new Map;lt.split("\n").map((function(t){var i=t.split("").map((function(t){var i=ft.get(t);if(i)return i;var n=e.measureText(t,M).width;return ft.set(t,n),n})),n=e.measureText(t,M),o=n.fontHeight,r=n.ascent,s=n.descent;e.attributes.fontHeight=o,e.attributes.ascent=r,e.attributes.descent=s,e.attributes.widths||(e.attributes.widths=[]),e.attributes.widths.push({widths:i,total:i.reduce((function(t,e){return t+e}),0)})})),a.restore()}if(i==et&&null==v){var ut=o.width,pt=o.height;dt.width=this.contrastSize(Math.round(ut*S/pt)||0,y,b),this.layoutBoxUpdate(dt,n,0)}if(i==it&&null==v){var gt=this.attributes.widths,vt=Math.max.apply(Math,gt.map((function(t){return t.total})));if(s&&X>0&&(vt>X||this.isBlock(this))&&!this.isAbsolute&&!this.isFixed)vt=X-ct;dt.width=this.contrastSize(vt,y,b),this.layoutBoxUpdate(dt,n,0)}if(i==it&&!this.attributes.lines){var yt=this.attributes.widths.length;this.attributes.widths.forEach((function(t){return t.widths.reduce((function(t,e,i){return t+e>dt.width?(yt++,e):t+e}),0)})),yt=W&&yt>W?W:yt,this.attributes.lines=yt}if(i==et&&null==S){var bt=o.width,xt=o.height;dt.height=this.contrastSize(j(dt.width*xt/bt)||0,x,m),this.layoutBoxUpdate(dt,n,1)}i==it&&null==S&&(R=j(R,M),dt.height=this.contrastSize(j(this.attributes.lines*R),x,m),this.layoutBoxUpdate(dt,n,1,!0)),s&&s.children&&X&&([nt,it].includes(i)&&this.isFlex()||i==nt&&this.isBlock(this)&&!this.isInFlow())&&(dt.width=this.contrastSize(X-ct,y,b),this.layoutBoxUpdate(dt,n)),v&&!G(v)&&(dt.width=this.contrastSize(v,y,b),this.layoutBoxUpdate(dt,n,0)),S&&!G(S)&&(dt.height=this.contrastSize(dt.height,x,m),this.layoutBoxUpdate(dt,n,1));var mt=0;if(h.length){var wt=null;h.forEach((function(t,i){t.getBoxWidthHeight();var o=h[i+1];if(o&&o.isInFlow()&&(t.next=o),t.isInFlow()&&!t.inFlexBox()){var r=e.getBoxState(wt,t);e.line&&e.line.canIEnter(t)&&!r?e.line.add(t):(new Q).bind(t),wt=t}else t.inFlexBox()?e.line&&(e.line.canIEnter(t)||"nowrap"==n.flexWrap)?e.line.add(t):(new K).bind(t):t.isFixed?e.root.fixedLine?e.root.fixedLine.fixedAdd(t):(new Q).fixedBind(t):e.fixedLine?e.fixedLine.fixedAdd(t):(new Q).fixedBind(t,1)})),this.lines&&(mt=this.lines.reduce((function(t,e){return t+e.height}),0))}var St=0,zt=0;if(!v&&(this.isAbsolute||this.isFixed)&&X){var Mt=P==ht?X:this.root.width,Bt=Mt-(G(c)?j(c,Mt):c)-(G(p)?j(p,Mt):p);St=n.left?Bt:this.lineMaxWidth}if(!S&&(null!=f?f:this.isAbsolute||this.isFixed&&N)){var It=P==ht?N:this.root.height,kt=It-(G(f)?j(f,It):f)-(G(u)?j(u,It):u);zt=n.top?kt:0}if(v&&!G(v)||dt.width||(dt.width=St||this.contrastSize((this.isBlock(this)&&!this.isInFlow()?X||s.lineMaxWidth:this.lineMaxWidth)||this.lineMaxWidth,y,b),this.layoutBoxUpdate(dt,n,0)),S||!mt&&!zt||(dt.height=zt||this.contrastSize(mt,x,m),this.layoutBoxUpdate(dt,n)),n.borderRadius&&this.borderSize&&this.borderSize.width)for(var V in n.borderRadius)Object.hasOwnProperty.call(n.borderRadius,V)&&(n.borderRadius[V]=j(n.borderRadius[V],this.borderSize.width));return this.layoutBox},e.layout=function(){return this.getBoxWidthHeight(),this.root.offsetSize=this.offsetSize,this.getBoxPosition2(),this.offsetSize},t}(),ut=function(){var t,e,i,n,o,r,s=[0,11,15,19,23,27,31,16,18,20,22,24,26,28,20,22,24,24,26,28,28,22,24,24,26,26,28,28,24,24,26,26,26,28,28,24,26,26,26,28,28],a=[3220,1468,2713,1235,3062,1890,2119,1549,2344,2936,1117,2583,1330,2470,1667,2249,2028,3780,481,4011,142,3098,831,3445,592,2517,1776,2234,1951,2827,1070,2660,1345,3177],h=[30660,29427,32170,30877,26159,25368,27713,26998,21522,20773,24188,23371,17913,16590,20375,19104,13663,12392,16177,14854,9396,8579,11994,11245,5769,5054,7399,6608,1890,597,3340,2107],d=[1,0,19,7,1,0,16,10,1,0,13,13,1,0,9,17,1,0,34,10,1,0,28,16,1,0,22,22,1,0,16,28,1,0,55,15,1,0,44,26,2,0,17,18,2,0,13,22,1,0,80,20,2,0,32,18,2,0,24,26,4,0,9,16,1,0,108,26,2,0,43,24,2,2,15,18,2,2,11,22,2,0,68,18,4,0,27,16,4,0,19,24,4,0,15,28,2,0,78,20,4,0,31,18,2,4,14,18,4,1,13,26,2,0,97,24,2,2,38,22,4,2,18,22,4,2,14,26,2,0,116,30,3,2,36,22,4,4,16,20,4,4,12,24,2,2,68,18,4,1,43,26,6,2,19,24,6,2,15,28,4,0,81,20,1,4,50,30,4,4,22,28,3,8,12,24,2,2,92,24,6,2,36,22,4,6,20,26,7,4,14,28,4,0,107,26,8,1,37,22,8,4,20,24,12,4,11,22,3,1,115,30,4,5,40,24,11,5,16,20,11,5,12,24,5,1,87,22,5,5,41,24,5,7,24,30,11,7,12,24,5,1,98,24,7,3,45,28,15,2,19,24,3,13,15,30,1,5,107,28,10,1,46,28,1,15,22,28,2,17,14,28,5,1,120,30,9,4,43,26,17,1,22,28,2,19,14,28,3,4,113,28,3,11,44,26,17,4,21,26,9,16,13,26,3,5,107,28,3,13,41,26,15,5,24,30,15,10,15,28,4,4,116,28,17,0,42,26,17,6,22,28,19,6,16,30,2,7,111,28,17,0,46,28,7,16,24,30,34,0,13,24,4,5,121,30,4,14,47,28,11,14,24,30,16,14,15,30,6,4,117,30,6,14,45,28,11,16,24,30,30,2,16,30,8,4,106,26,8,13,47,28,7,22,24,30,22,13,15,30,10,2,114,28,19,4,46,28,28,6,22,28,33,4,16,30,8,4,122,30,22,3,45,28,8,26,23,30,12,28,15,30,3,10,117,30,3,23,45,28,4,31,24,30,11,31,15,30,7,7,116,30,21,7,45,28,1,37,23,30,19,26,15,30,5,10,115,30,19,10,47,28,15,25,24,30,23,25,15,30,13,3,115,30,2,29,46,28,42,1,24,30,23,28,15,30,17,0,115,30,10,23,46,28,10,35,24,30,19,35,15,30,17,1,115,30,14,21,46,28,29,19,24,30,11,46,15,30,13,6,115,30,14,23,46,28,44,7,24,30,59,1,16,30,12,7,121,30,12,26,47,28,39,14,24,30,22,41,15,30,6,14,121,30,6,34,47,28,46,10,24,30,2,64,15,30,17,4,122,30,29,14,46,28,49,10,24,30,24,46,15,30,4,18,122,30,13,32,46,28,48,14,24,30,42,32,15,30,20,4,117,30,40,7,47,28,43,22,24,30,10,67,15,30,19,6,118,30,18,31,47,28,34,34,24,30,20,61,15,30],c=[255,0,1,25,2,50,26,198,3,223,51,238,27,104,199,75,4,100,224,14,52,141,239,129,28,193,105,248,200,8,76,113,5,138,101,47,225,36,15,33,53,147,142,218,240,18,130,69,29,181,194,125,106,39,249,185,201,154,9,120,77,228,114,166,6,191,139,98,102,221,48,253,226,152,37,179,16,145,34,136,54,208,148,206,143,150,219,189,241,210,19,92,131,56,70,64,30,66,182,163,195,72,126,110,107,58,40,84,250,133,186,61,202,94,155,159,10,21,121,43,78,212,229,172,115,243,167,87,7,112,192,247,140,128,99,13,103,74,222,237,49,197,254,24,227,165,153,119,38,184,180,124,17,68,146,217,35,32,137,46,55,63,209,91,149,188,207,205,144,135,151,178,220,252,190,97,242,86,211,171,20,42,93,158,132,60,57,83,71,109,65,162,31,45,67,216,183,123,164,118,196,23,73,236,127,12,111,246,108,161,59,82,41,157,85,170,251,96,134,177,187,204,62,90,203,89,95,176,156,169,160,81,11,245,22,235,122,117,44,215,79,174,213,233,230,231,173,232,116,214,244,234,168,80,88,175],l=[1,2,4,8,16,32,64,128,29,58,116,232,205,135,19,38,76,152,45,90,180,117,234,201,143,3,6,12,24,48,96,192,157,39,78,156,37,74,148,53,106,212,181,119,238,193,159,35,70,140,5,10,20,40,80,160,93,186,105,210,185,111,222,161,95,190,97,194,153,47,94,188,101,202,137,15,30,60,120,240,253,231,211,187,107,214,177,127,254,225,223,163,91,182,113,226,217,175,67,134,17,34,68,136,13,26,52,104,208,189,103,206,129,31,62,124,248,237,199,147,59,118,236,197,151,51,102,204,133,23,46,92,184,109,218,169,79,158,33,66,132,21,42,84,168,77,154,41,82,164,85,170,73,146,57,114,228,213,183,115,230,209,191,99,198,145,63,126,252,229,215,179,123,246,241,255,227,219,171,75,150,49,98,196,149,55,110,220,165,87,174,65,130,25,50,100,200,141,7,14,28,56,112,224,221,167,83,166,81,162,89,178,121,242,249,239,195,155,43,86,172,69,138,9,18,36,72,144,61,122,244,245,247,243,251,235,203,139,11,22,44,88,176,125,250,233,207,131,27,54,108,216,173,71,142,0],f=[],u=[],p=[],g=[],v=[],y=2;function b(t,e){var i;t>e&&(i=t,t=e,e=i),i=e,i*=e,i+=e,i>>=1,g[i+=t]=1}function x(t,i){var n;for(p[t+e*i]=1,n=-2;n<2;n++)p[t+n+e*(i-2)]=1,p[t-2+e*(i+n+1)]=1,p[t+2+e*(i+n)]=1,p[t+n+1+e*(i+2)]=1;for(n=0;n<2;n++)b(t-1,i+n),b(t+1,i-n),b(t-n,i-1),b(t+n,i+1)}function m(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t}var w=[];function S(t,e,i,n){var o,r,s;for(o=0;oe&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,g[i+=t]}function M(t){var i,n,o,r;switch(t){case 0:for(n=0;n>1&1,i=0;i=5&&(i+=3+v[e]-5);for(e=3;et||3*v[e-3]>=4*v[e]||3*v[e+3]>=4*v[e])&&(i+=40);return i}function I(){var t,i,n,o,r,s=0,a=0;for(i=0;ie*e;)h-=e*e,d++;for(s+=10*d,t=0;t1)for(W=s[t],k=e-7;;){for(B=e-7;B>W-3&&(x(B,k),!(B6)for(W=a[t-7],P=17,B=0;B<6;B++)for(k=0;k<3;k++,P--)1&(P>11?t>>P-12:W>>P)?(p[5-B+e*(2-k+e-11)]=1,p[2-k+e-11+e*(5-B)]=1):(b(5-B,2-k+e-11),b(2-k+e-11,5-B));for(k=0;k=(B=o*(i+n)+n)-2&&(R=B-2,t>9&&R--),O=R,t>9){for(f[O+2]=0,f[O+3]=0;O--;)W=f[O],f[O+3]|=255&W<<4,f[O+2]=W>>4;f[2]|=255&R<<4,f[1]=R>>4,f[0]=64|R>>12}else{for(f[O+1]=0,f[O+2]=0;O--;)W=f[O],f[O+2]|=255&W<<4,f[O+1]=W>>4;f[1]|=255&R<<4,f[0]=64|R>>4}for(O=R+3-(t<10);O0;T--)w[T]=w[T]?w[T-1]^l[m(c[w[T]]+O)]:w[T-1];w[0]=l[m(c[w[0]]+O)]}for(O=0;O<=r;O++)w[O]=c[w[O]];for(P=B,k=0,O=0;O>=1)1&k&&(p[e-1-P+8*e]=1,P<6?p[8+e*P]=1:p[8+e*(P+1)]=1);for(P=0;P<7;P++,k>>=1)1&k&&(p[8+e*(e-7+P)]=1,P?p[6-P+8*e]=1:p[7+8*e]=1);return p}(v)},utf16to8:function(t){var e,i,n,o;for(e="",n=t.length,i=0;i=1&&o<=127?e+=t.charAt(i):o>2047?(e+=String.fromCharCode(224|o>>12&15),e+=String.fromCharCode(128|o>>6&63),e+=String.fromCharCode(128|o>>0&63)):(e+=String.fromCharCode(192|o>>6&31),e+=String.fromCharCode(128|o>>0&63));return e},draw:function(t,i,n,o,r){i.drawView(n,o);var s=i.ctx,a=n.contentSize,h=a.width,d=a.height,c=a.left,l=a.top;o.borderRadius,o.backgroundColor;var f=o.color,u=void 0===f?"#000000":f;o.border,n.contentSize.left,n.borderSize.left,n.contentSize.top,n.borderSize.top;if(y=r||y,s){s.save(),i.setOpacity(o),i.setTransform(n,o);var p=Math.min(h,d);t=this.utf16to8(t);var g=this.getFrame(t),v=p/e;s.setFillStyle(u);for(var b=0;b=s||"cover"==n&&r=s)&&(a=e.width/i.width);var h=i.width*a,d=i.height*a,c=o||[],l=c[0],f=c[1],u=/^\d+px|rpx$/.test(l)?j(l,e.width):(e.width-h)*(C(l)?j(l,1):{left:0,center:.5,right:1}[l||"center"]),p=/^\d+px|rpx$/.test(f)?j(f,e.height):(e.height-d)*(C(f)?j(f,1):{top:0,center:.5,bottom:1}[f||"center"]),g=function(t,e){return[(t-u)/a,(e-p)/a]},v=g(0,0),y=v[0],b=v[1],x=g(e.width,e.height),m=x[0],w=x[1];return{sx:Math.max(y,0),sy:Math.max(b,0),sw:Math.min(m-y,i.width),sh:Math.min(w-b,i.height),dx:Math.max(u,0),dy:Math.max(p,0),dw:Math.min(h,e.width),dh:Math.min(d,e.height)}}({objectFit:u,objectPosition:v},e.contentSize,t),o=n.sx,r=n.sy,a=n.sh,h=n.sw,d=n.dx,c=n.dy,l=n.dh,f=n.dw;T==s.MP_BAIDU?i.drawImage(t.src,d+w,c+S,f,l,o,r,h,a):i.drawImage(t.src,o,r,h,a,d+w,c+S,f,l)}else i.drawImage(t.src,w,S,x,m)},P=function(){i.restore(),R.drawView(e,o,!1,!0,!1),h(1)},W=function(t){B(t),P()},W(t),[2]}))}))}))];case 1:return h.sent(),[2]}}))}))},t.prototype.drawText=function(t,e,i,n){var o=this.ctx,r=e.borderSize,s=e.contentSize,a=e.left,h=e.top,d=s.width,c=s.height,l=s.left-r.left,f=s.top-r.top,u=i.color,p=void 0===u?"#000000":u,g=i.lineHeight,v=void 0===g?"1.4em":g,y=i.fontSize,b=void 0===y?14:y,x=i.fontWeight,m=i.fontFamily,w=i.fontStyle,S=i.textAlign,z=void 0===S?"left":S,M=i.verticalAlign,B=void 0===M?xt:M,I=i.backgroundColor,k=i.lineClamp,P=i.backgroundClip,W=i.textShadow,R=i.textDecoration;if(this.drawView(e,i,P!=gt),v=j(v,b),t){switch(o.save(),this.setShadow({boxShadow:W}),a+=l,h+=f,o.setFonts({fontFamily:m,fontSize:b,fontWeight:x,fontStyle:w}),o.setTextBaseline(xt),o.setTextAlign(z),P?this.setBackground(I,d,c,a,h):o.setFillStyle(p),z){case wt:break;case St:a+=.5*d;break;case zt:a+=d}var O=n.lines*v,T=Math.ceil((c-O)/2);switch(T<0&&(T=0),B){case bt:break;case xt:h+=T;break;case mt:h+=2*T}var L=n.fontHeight,A=n.descent,F=(v-L)/2,C=function(t){var e=o.measureText(t),i=e.actualBoundingBoxDescent,n=void 0===i?0:i,r=e.actualBoundingBoxAscent,s=void 0===r?0:r,a=n+s||.7*b+1;return B==bt?{fix:s,height:a,lineY:v-a}:B==xt?{fix:v/2+n/4,height:a,lineY:(v-a)/2}:B==mt?{fix:v-n,height:a,lineY:0}:{fix:0,height:0,lineY:0}},E=function(t,e,i){var r=t;switch(z){case wt:r+=i;break;case St:r=(t-=i/2)+i;break;case zt:r=t,t-=i}if(R){o.setLineWidth(b/13),o.beginPath();var s=.1*n.fontHeight;/\bunderline\b/.test(R)&&(A||(e+=F/2),o.moveTo(t,e+s),o.lineTo(r,e+s)),/\boverline\b/.test(R)&&(A||(e-=F/2),o.moveTo(t,e-n.fontHeight-s),o.lineTo(r,e-n.fontHeight-s)),/\bline-through\b/.test(R)&&(o.moveTo(t,e-.5*n.fontHeight),o.lineTo(r,e-.5*n.fontHeight)),o.closePath(),o.setStrokeStyle(p),o.stroke()}};if(!n.widths||1==n.widths.length&&n.widths[0].total<=s.width){var H=C(t),U=H.fix,Y=H.lineY;return o.fillText(t,a,h+U),E(a,(h+=v)-Y,n&&n.widths&&n.widths[0].total||n.text),o.restore(),void this.setBorder(e,i)}for(var $=t.split(""),D=h,_=a,X="",N=0,V=0;V<=$.length;V++){var G=$[V]||"",q="\n"===G,J=""==G,Q=X+(G=q?"":G),Z=o.measureText(Q).width;if(N>=k)break;if(_=a,Z>s.width||q||J){if(N++,X=J&&Z<=s.width?Q:X,N===k&&Z>d){for(;o.measureText("".concat(X,"...")).width>s.width&&!(X.length<=1);)X=X.substring(0,X.length-1);X+="..."}var K=C(X);U=K.fix,Y=K.lineY;if(o.fillText(X,_,h+U),E(_,(h+=v)-Y,Z),X=G,h>D+c)break}else X=Q}o.restore()}},t.prototype.source=function(t){var e;return i(this,void 0,void 0,(function(){var i,o,r,s=this;return n(this,(function(n){switch(n.label){case 0:if(this.node=null,i=+new Date,"{}"==JSON.stringify(t))return[2];if(!t.type)for(o in t.type=yt,t.css=t.css||{},t)["views","children","type","css"].includes(o)||(t.css[o]=t[o],delete t[o]);return(null===(e=t.css)||void 0===e?void 0:e.width)||t.css||(t.css={}),[4,this.create(t)];case 1:return r=n.sent(),this.size=(null==r?void 0:r.layout())||{},this.node=r,this.onEffectFinished().then((function(t){return s.lifecycle("onEffectSuccess",t)})).catch((function(t){return s.lifecycle("onEffectFail",t)})),console.log("布局用时:"+(+new Date-i)+"ms"),[2,this.size]}}))}))},t.prototype.getImageInfo=function(t){return this.imageBus[t]||(this.imageBus[t]=this.createImage(t,this.useCORS)),this.imageBus[t]},t.prototype.create=function(t,o){var r,s;return i(this,void 0,void 0,(function(){var i,a,h,d,c,l,f,u,p,g,v,y,b,x,m,w,z;return n(this,(function(n){switch(n.label){case 0:if(i=t.type==pt,a=[gt,vt].includes(t.type),h=t.css||{},d=h.backgroundImage,c=h.display,i&&!t.src&&!t.url||a&&!t.text)return[2];if(c==S)return[2];if(a&&(t.text=String(t.text)),!(i||t.type==yt&&d))return[3,4];l=i?t.src:"",f=/url\((.+)\)/,d&&(null===(r=f.exec(d))||void 0===r?void 0:r[1])&&(l=(null===(s=f.exec(d))||void 0===s?void 0:s[1])||""),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.getImageInfo(l)];case 2:return u=n.sent(),p=u.width,g=u.height,!(v=u.path)&&i?[2]:(v&&(t.attributes=Object.assign(t.attributes||{},{width:p,height:g,path:v,src:v,naturalSrc:l})),[3,4]);case 3:return y=n.sent(),t.type!=yt?[2]:(this.lifecycle("onEffectFail",e(e({},y),{src:l})),[3,4]);case 4:if(this.count+=1,b=new ft(t,o,this.root,this.ctx),!(x=t.views||t.children))return[3,8];m=0,n.label=5;case 5:return m0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("navigateTo",{url:encodeURI(n)})},navigateBack:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.delta;r("navigateBack",{delta:parseInt(n)||1})},switchTab:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("switchTab",{url:encodeURI(n)})},reLaunch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("reLaunch",{url:encodeURI(n)})},redirectTo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.url;r("redirectTo",{url:encodeURI(n)})},getEnv:function(e){o()?e({nvue:!0}):window.plus?e({plus:!0}):e({h5:!0})},postMessage:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r("postMessage",e.data||{})}},d=/uni-app/i.test(navigator.userAgent),s=/Html5Plus/i.test(navigator.userAgent),w=/complete|loaded|interactive/;var u=window.my&&navigator.userAgent.indexOf("AlipayClient")>-1;var g=window.swan&&window.swan.webView&&/swan/i.test(navigator.userAgent);var c=window.qq&&window.qq.miniProgram&&/QQ/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var v=window.tt&&window.tt.miniProgram&&/toutiaomicroapp/i.test(navigator.userAgent);var m=window.wx&&window.wx.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var p=window.qa&&/quickapp/i.test(navigator.userAgent);var f=window.ks&&window.ks.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);var l=window.tt&&window.tt.miniProgram&&/Lark|Feishu/i.test(navigator.userAgent);var _=window.jd&&window.jd.miniProgram&&/micromessenger/i.test(navigator.userAgent)&&/miniProgram/i.test(navigator.userAgent);for(var E,b=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))},h=[function(e){if(d||s)return window.__dcloud_weex_postMessage||window.__dcloud_weex_?document.addEventListener("DOMContentLoaded",e):window.plus&&w.test(document.readyState)?setTimeout(e,0):document.addEventListener("plusready",e),a},function(e){if(m)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.wx.miniProgram},function(e){if(c)return window.QQJSBridge&&window.QQJSBridge.invoke?setTimeout(e,0):document.addEventListener("QQJSBridgeReady",e),window.qq.miniProgram},function(e){if(u){document.addEventListener("DOMContentLoaded",e);var n=window.my;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(g)return document.addEventListener("DOMContentLoaded",e),window.swan.webView},function(e){if(v)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(p){window.QaJSBridge&&window.QaJSBridge.invoke?setTimeout(e,0):document.addEventListener("QaJSBridgeReady",e);var n=window.qa;return{navigateTo:n.navigateTo,navigateBack:n.navigateBack,switchTab:n.switchTab,reLaunch:n.reLaunch,redirectTo:n.redirectTo,postMessage:n.postMessage,getEnv:n.getEnv}}},function(e){if(f)return window.WeixinJSBridge&&window.WeixinJSBridge.invoke?setTimeout(e,0):document.addEventListener("WeixinJSBridgeReady",e),window.ks.miniProgram},function(e){if(l)return document.addEventListener("DOMContentLoaded",e),window.tt.miniProgram},function(e){if(_)return window.JDJSBridgeReady&&window.JDJSBridgeReady.invoke?setTimeout(e,0):document.addEventListener("JDJSBridgeReady",e),window.jd.miniProgram},function(e){return document.addEventListener("DOMContentLoaded",e),a}],y=0;y + + + + + + \ No newline at end of file diff --git a/uni_modules/mumu-recorder/package.json b/uni_modules/mumu-recorder/package.json new file mode 100644 index 0000000..00d5e90 --- /dev/null +++ b/uni_modules/mumu-recorder/package.json @@ -0,0 +1,87 @@ +{ + "id": "mumu-recorder", + "displayName": "h5录音组件,调用H5原生功能使用麦克风进行录音", + "version": "1.0.1", + "description": "演示案例中模仿了微信的长按发送语音,与普通录音demo。", + "keywords": [ + "录音", + "麦克风", + "模仿微信" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "麦克风" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "n", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "n", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "u", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u", + "小红书": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/mumu-recorder/readme.md b/uni_modules/mumu-recorder/readme.md new file mode 100644 index 0000000..1f888e5 --- /dev/null +++ b/uni_modules/mumu-recorder/readme.md @@ -0,0 +1,117 @@ +## 插件简绍 + +### 实现原理 + +> 通过 navigator.mediaDevices.getUserMedia(需要https环境) 这个api调用麦克风,获取到到音频流数据。 +> +> 通过 MediaRecorder 这个构造函数对音频流进行接收,完成录制后会返回一个存储`Blob`内容的录制数据。 + + +### 使用环境 + +需要https环境才能使用,本地测试可以在 manifest.json 中点击源码展示,找到h5 ,添加:"devServer" : { "https" : true} + +**请勿使用 UC浏览器 与 夸克等阿里旗下的浏览器,发现他们使用的内核都较低,无法正常获取音频流,并且都有对接音频流截取的插件,导致无法正常获取音频流的数据。在微信中可以正常使用,推荐在微信内打开演示案例 ** + +需要https环境才能使用!!! + +需要https环境才能使用!!! + +需要https环境才能使用!!! + +### 插件使用 + +**插件已支持 uni_modules 支持组件easycom,以下代码演示的是普通使用** + +``` html + + + + + {{!status?'开始录音':'结束录音'}} + + + +``` + +``` javascript +// js + import MumuRecorder from '@/uni_modules/mumu-recorder/components/mumu-recorder/mumu-recorder.vue' + export default { + components: { MumuRecorder }, + data() { + return { + status: false, + recorder: null + } + }, + onLoad() { + + }, + methods: { + handlerSave() { + let tag = document.createElement('a') + tag.href = this.recorder.localUrl + tag.download = '录音' + tag.click() + }, + handlerOnCahnger() { + if (this.status) { + this.$refs.recorder.stop() + } else { + this.$refs.recorder.start() + } + this.status = !this.status + }, + handlerSuccess(res) { + console.log(res) + this.recorder = res + }, + handlerError(code) { + switch (code) { + case '101': + uni.showModal({ + content: '当前浏览器版本较低,请更换浏览器使用,推荐在微信中打开。' + }) + break; + case '201': + uni.showModal({ + content: '麦克风权限被拒绝,请刷新页面后授权麦克风权限。' + }) + break + default: + uni.showModal({ + content: '未知错误,请刷新页面重试' + }) + break + } + } + } + } +``` + +### 相关API + +##### 组件内部方法($refs 调用) + +| 方法名 | 说明 | 参数 | +| ------ | -------- | ---- | +| start | 开始录音 | 无 | +| stop | 结束录音 | 无 | + + + +##### 事件(Events) + +| 事件名 | 说明 | 回调参数 | +| ------- | -------------------- | ------------------------------------------------------------ | +| success | 停止录音后调用此事件 | 返回录音数据,是一个对象
{ data: 音频的 blob 数据,上传请使用这个
duration: 当前音频长度
localUrl: 当前音频的本地链接,可直接通过 audio 标签进行播放 } | +| error | 组件内部发生错误 | 错误码:<100 当前不是https环境> <101 浏览器不支持> <201 麦克风权限被拒绝> <500 未知错误> | + +### 案例演示 + +![enter description here](https://h5plugin.mumudev.top/public/recorder/qrcode.png) + +## 支持作者 + +![支持作者](https://student.mumudev.top/wxMP.jpg) \ No newline at end of file diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..b4bfd61 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,78 @@ +## 1.8.8(2024-02-20) +- 修复 uni-popup 在微信小程序下出现文字向上闪动的bug +## 1.8.7(2024-02-02) +- 新增 uni-popup-dialog 新增属性focus:input模式下,是否自动自动聚焦 +## 1.8.6(2024-01-30) +- 新增 uni-popup-dialog 新增属性maxLength:限制输入框字数 +## 1.8.5(2024-01-26) +- 新增 uni-popup-dialog 新增属性showClose:控制关闭按钮的显示 +## 1.8.4(2023-11-15) +- 新增 uni-popup 支持uni-app-x 注意暂时仅支持 `maskClick` `@open` `@close` +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..68a1ce2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..f7e667c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/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/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue new file mode 100644 index 0000000..5eb8d5b --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.uvue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..5d9e9d2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,479 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..6427510 --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.8.8", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..70c1cd4 --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,22 @@ +## 1.3.2(2023-05-04) +- 修复 NVUE 平台报错的问题 +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..bfbba93 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..ea995a2 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.2", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/v-sign/changelog.md b/uni_modules/v-sign/changelog.md new file mode 100644 index 0000000..17deb52 --- /dev/null +++ b/uni_modules/v-sign/changelog.md @@ -0,0 +1,48 @@ +## 0.5.2(2022-06-10) +- canvas 默认设置 disable-scroll 属性为true, 当在 canvas 中移动时且有绑定手势事件时,禁止屏幕滚动以及下拉刷新 +## 0.5.1(2022-05-27) +- 取消属性 width, height 默认值 +## 0.5.0(2022-05-27) +- 新增 v-sgin 组件获取坐标信息数组方法 `getLineData` +- 新增 v-sign 组件事件触发 @clear, @revoke, @end +- 修复撤销操作重设背景色导致线条消失问题 +## 0.4.0(2022-05-15) +- 新增属性 bgColor 设置画布背景色,修复导出图片无背景色问题 +## 0.3.4(2022-03-30) +修复 v-sign-action 子组件 svg 加载报错 +## 0.3.3(2022-03-30) +修复 v-sign-action 子组件 svg 加载报错 +## 0.3.2(2022-01-12) +- 修复多组件共存绘制问题 +## 0.3.1(2021-12-14) +- 【新增】保存 png 图片方法 saveImage; +- 【修改】 控件子组件保存按钮动作由保存为临时文件路径改为保存图片 +## 0.3.0(2021-12-11) +- 添加颜色选择器组件 +## 0.2.0(2021-12-10) +- 修改为 uni_modules 规范 +## 0.1.7 (2021-12-09) + +- 画笔组件优化 + +## 0.1.6 (2021-12-08) + +- 画笔样式优化 + +## 0.1.5 (2021-12-08) + +- 画笔子组件样式修改,支持circle、line 两种样式 + +## 0.1.4 (2021-12-08) + +- 添加画笔子组件 + +## 0.1.3 (2021-12-02) + +- 添加按钮控件子组件 + +## 0.1.0 (2021-11-28) + +- 支持线宽、颜色自定义,自定义画布样式 +- 支持画布清空、撤回、保存图片 +- 事件 init 暴露清空、撤回、保存图片方法 \ No newline at end of file diff --git a/uni_modules/v-sign/components/v-sign-action/v-sign-action.vue b/uni_modules/v-sign/components/v-sign-action/v-sign-action.vue new file mode 100644 index 0000000..e8760d2 --- /dev/null +++ b/uni_modules/v-sign/components/v-sign-action/v-sign-action.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/uni_modules/v-sign/components/v-sign-color/v-sign-color.vue b/uni_modules/v-sign/components/v-sign-color/v-sign-color.vue new file mode 100644 index 0000000..f335349 --- /dev/null +++ b/uni_modules/v-sign/components/v-sign-color/v-sign-color.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/uni_modules/v-sign/components/v-sign-pen/v-sign-pen.vue b/uni_modules/v-sign/components/v-sign-pen/v-sign-pen.vue new file mode 100644 index 0000000..41786a3 --- /dev/null +++ b/uni_modules/v-sign/components/v-sign-pen/v-sign-pen.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/uni_modules/v-sign/components/v-sign/v-sign.vue b/uni_modules/v-sign/components/v-sign/v-sign.vue new file mode 100644 index 0000000..0d2d529 --- /dev/null +++ b/uni_modules/v-sign/components/v-sign/v-sign.vue @@ -0,0 +1,326 @@ + + + + + diff --git a/uni_modules/v-sign/package.json b/uni_modules/v-sign/package.json new file mode 100644 index 0000000..18e537c --- /dev/null +++ b/uni_modules/v-sign/package.json @@ -0,0 +1,84 @@ +{ + "id": "v-sign", + "displayName": "canvas 手写 签名 签字 画板组件", + "version": "0.5.2", + "description": "基于 canvas 实现;1. 支持线条自定义样式;2. 支持撤回、清空、导出图片等功能;3. 内置按钮、画笔等子组件。", + "keywords": [ + "canvas", + "签名", + "签字", + "电子签名", + "signature" +], + "repository": "https://github.com/jizai1125/v-sign", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "n" + }, + "App": { + "app-vue": "u", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/v-sign/readme.md b/uni_modules/v-sign/readme.md new file mode 100644 index 0000000..696e33d --- /dev/null +++ b/uni_modules/v-sign/readme.md @@ -0,0 +1,245 @@ +# v-sign 手写签名 + +**如有问题或者建议,欢迎留言或加群联系我(群号:736123963)!!!将保持维护!!!** + +uniapp 交流群群聊二维码 + +## 快速使用 + +基础示例,具体说明见下方 API,**若需要使用内置子组件,见下方子组件说明。** + +```html + + +``` + +## API + +### 属性 (Props) + +| 属性名 | 类型 | 默认值 | 说明 | +| :---------: | :-----------: | :-----------: | :--------------------------: | +| cid | String | v-sign-时间戳 | canvas id | +| width | String/Number | - | canvas 宽度,Number 单位 rpx | +| height | String/Number | - | canvas 高度,Number 单位 rpx | +| customStyle | Object | - | canvas 自定义样式 | +| lineWidth | Number | 4 | 线宽,单位 px | +| lineColor | String | #333 | 线颜色 | +| bgColor | String | #fff | 画布背景颜色 | + +### 事件(Events) + +| 事件称名 | 说明 | 返回值 | +| :------: | :------------------------------------------------------------: | :--------------------------------: | +| @init | 创建完 canvas 实例后触发,向外提供 canvas 实例,撤回,清空方法 | Object:具体见下方事件回调参数说明 | +| @clear | 清空画布后触发 | - | +| @revoke | 撤销操作后触发 | 坐标信息数组 | +| @end | 每次绘制结束后触发 | 坐标信息数组 | + +### 事件回调参数说明 + +#### **`init(ctx: SignContext)`** + +可以通过该事件回调暴露的 clear、revoke 等方法操作画布。 + +```java +interface SignContext { + // canvas 实例 + ctx: object; + // 清空画布 + clear(): void; + // 撤回 + revoke(): void; + // 保存 png 图片,文件名 filename 配置仅支持 h5 + saveImage(filename: string): Promise; + // 返回图片临时文件路径,config 参数同 uni.canvasToTempFilePath方法,内部只是做了 Promise 化处理而已 + canvasToTempFilePath(config: object): Promise; + // 设置画布背景色 + setBackgroundColor(color: string): void; + setLineWidth(value: number): void; + setLineColor(value: string): void; + // 获取坐标信息数组 + getLineData(): Array; +} +``` + +示例: + +```html + + +``` + +# 子组件 + +子组件需要包裹在 `v-sign` 组件内使用!!! + +## 按钮控件(v-sign-action) + +### 示例 + +```html + + +``` + +### API + +### 属性 (Props) + +| 属性名 | 类型 | 默认值 | 说明 | +| :---------: | :-----------: | :-----------------------: | :----------------------------------------------------: | +| actions | Array | ["clear", "prev", "save"] | 按钮配置;清空(clear), 撤回(prev) 保存图片(save) | +| border | Boolean | true | 按钮是否有边框 | +| space | String/Number | 12 | 按钮间隔,Number 单位 rpx | +| customStyle | Object | - | 根元素自定义样式 | + +### 事件(Events) + +点击对应类型按钮触发对应事件, 例如:配置了清空(clear)按钮,点击则触发 clear 事件。 + +--- + +## 画笔组件(v-sign-pen) + +### 示例 + +```html + + +``` + +### API + +### 属性 (Props) + +| 属性名 | 类型 | 默认值 | 说明 | +| :---------: | :-----: | :--------------: | :--------------------------: | +| type | String | circle | 选项样式,可选 circle \ line | +| label | String | - | 标签 | +| sizes | Array | [2, 4, 6, 8, 10] | 画笔尺寸数组,单位 px | +| color | String | #333 | 选项颜色 | +| activeColor | String | #333 | 选中项颜色 | +| border | Boolean | true | 选中项是否有边框 | +| borderWidth | Number | 4 | 边框大小,单位 rpx | +| space | Number | 20 | 选项间隙,单位 rpx | +| bigger | Number | 2 | 圆点变大变粗倍数 | +| minSize | Number | 4 | 圆点最小尺寸,单位 px | + +### 事件(Events) + +| 事件称名 | 说明 | 返回值 | +| :------: | :----------------: | :----------------: | +| @change | 选择画笔大小时触发 | size:画笔尺寸大小 | + +--- + +## 颜色选择器组件(v-sign-color) + +### 示例 + +```html + + +``` + +### API + +### 属性 (Props) + +| 属性名 | 类型 | 默认值 | 说明 | +| :---------: | :-----------: | :-------------------------------------------------------------: | :-------------------: | +| type | String | square | 选项样式,可选 circle | +| color | String | - | 默认颜色 | +| options | Array | ['#333', '#f44236', '#3f51b5', '#2195f3', '#ffeb3b', '#ff9900'] | 备选色 | +| size | Number/String | 44 | 圆/方形大小,单位 rpx | +| tick | Boolean | true | 是否选中打勾 | +| tickSize | Number/String | 24 | 勾大小 | +| borderColor | String | #fff | 边框颜色 | +| border | Boolean | false | 是否有边框 | +| space | Number/String | 16 | 选项间隙 | + +### 事件(Events) + +| 事件称名 | 说明 | 返回值 | +| :------: | :------------: | :----: | +| @change | 选择颜色时触发 | color | diff --git a/uni_modules/v-sign/static/image/clear.png b/uni_modules/v-sign/static/image/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..032e7aa232545ca6c6554a04b5fa34eee1239f10 GIT binary patch literal 6420 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 literal 0 HcmV?d00001 diff --git a/uni_modules/v-sign/static/image/clear.svg b/uni_modules/v-sign/static/image/clear.svg new file mode 100644 index 0000000..0285fbe --- /dev/null +++ b/uni_modules/v-sign/static/image/clear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/uni_modules/v-sign/static/image/next.png b/uni_modules/v-sign/static/image/next.png new file mode 100644 index 0000000000000000000000000000000000000000..20cbf6c8023a5f96939ad11820457e63bf601302 GIT binary patch literal 7319 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 literal 0 HcmV?d00001 diff --git a/uni_modules/v-sign/static/image/next.svg b/uni_modules/v-sign/static/image/next.svg new file mode 100644 index 0000000..36e2445 --- /dev/null +++ b/uni_modules/v-sign/static/image/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/uni_modules/v-sign/static/image/prev.png b/uni_modules/v-sign/static/image/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..e81d3b9b629775099f4fffbc10347281c1b0f07c GIT binary patch literal 7356 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 MX@D)cbwA>N00B4zL;wH) literal 0 HcmV?d00001 diff --git a/uni_modules/v-sign/static/image/prev.svg b/uni_modules/v-sign/static/image/prev.svg new file mode 100644 index 0000000..5a67586 --- /dev/null +++ b/uni_modules/v-sign/static/image/prev.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/uni_modules/v-sign/static/image/save.png b/uni_modules/v-sign/static/image/save.png new file mode 100644 index 0000000000000000000000000000000000000000..5269210fa987d4b07c2820b7ed4419162a9badb2 GIT binary patch literal 3573 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 literal 0 HcmV?d00001 diff --git a/uni_modules/v-sign/static/image/save.svg b/uni_modules/v-sign/static/image/save.svg new file mode 100644 index 0000000..e97dcf7 --- /dev/null +++ b/uni_modules/v-sign/static/image/save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/uni_modules/v-sign/utils/index.js b/uni_modules/v-sign/utils/index.js new file mode 100644 index 0000000..270dcf7 --- /dev/null +++ b/uni_modules/v-sign/utils/index.js @@ -0,0 +1,15 @@ +/** + * 判断是否未数值 + * @param {Object} val + */ +export function isNumber(val) { + return !isNaN(Number(val)) +} + +/** + * 处理大小单位 + * @param {Object} val + */ +export function formatSize(val, unit = 'rpx') { + return isNumber(val) ? `${val}${unit}` : val +} diff --git a/user/pages/address/edit.vue b/user/pages/address/edit.vue new file mode 100644 index 0000000..423d8e4 --- /dev/null +++ b/user/pages/address/edit.vue @@ -0,0 +1,305 @@ + + + + + + diff --git a/user/pages/address/list.vue b/user/pages/address/list.vue new file mode 100644 index 0000000..a2be3be --- /dev/null +++ b/user/pages/address/list.vue @@ -0,0 +1,252 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/alipay-account.vue b/user/pages/alipay-account.vue new file mode 100644 index 0000000..335c522 --- /dev/null +++ b/user/pages/alipay-account.vue @@ -0,0 +1,188 @@ + + + + + + diff --git a/user/pages/alipay-result.vue b/user/pages/alipay-result.vue new file mode 100644 index 0000000..9a07735 --- /dev/null +++ b/user/pages/alipay-result.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/user/pages/app-download.vue b/user/pages/app-download.vue new file mode 100644 index 0000000..bc56f3c --- /dev/null +++ b/user/pages/app-download.vue @@ -0,0 +1,131 @@ + + + + + + diff --git a/user/pages/apply-result.vue b/user/pages/apply-result.vue new file mode 100644 index 0000000..398d508 --- /dev/null +++ b/user/pages/apply-result.vue @@ -0,0 +1,227 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/article.vue b/user/pages/article.vue new file mode 100644 index 0000000..edb4aa4 --- /dev/null +++ b/user/pages/article.vue @@ -0,0 +1,219 @@ + + + + + + diff --git a/user/pages/bell/list.vue b/user/pages/bell/list.vue new file mode 100644 index 0000000..67fa932 --- /dev/null +++ b/user/pages/bell/list.vue @@ -0,0 +1,610 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/bell/order.vue b/user/pages/bell/order.vue new file mode 100644 index 0000000..10066d6 --- /dev/null +++ b/user/pages/bell/order.vue @@ -0,0 +1,461 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/cash-out.vue b/user/pages/cash-out.vue new file mode 100644 index 0000000..b05e268 --- /dev/null +++ b/user/pages/cash-out.vue @@ -0,0 +1,301 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/channel/apply.vue b/user/pages/channel/apply.vue new file mode 100644 index 0000000..87e6d29 --- /dev/null +++ b/user/pages/channel/apply.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/user/pages/feedback/detail.vue b/user/pages/feedback/detail.vue new file mode 100644 index 0000000..557317a --- /dev/null +++ b/user/pages/feedback/detail.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/user/pages/feedback/list.vue b/user/pages/feedback/list.vue new file mode 100644 index 0000000..a9d3dcf --- /dev/null +++ b/user/pages/feedback/list.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/user/pages/feedback/success.vue b/user/pages/feedback/success.vue new file mode 100644 index 0000000..e047c1c --- /dev/null +++ b/user/pages/feedback/success.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/user/pages/gzh.vue b/user/pages/gzh.vue new file mode 100644 index 0000000..ad7900d --- /dev/null +++ b/user/pages/gzh.vue @@ -0,0 +1,124 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/information.vue b/user/pages/information.vue new file mode 100644 index 0000000..59a3544 --- /dev/null +++ b/user/pages/information.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/user/pages/logout.vue b/user/pages/logout.vue new file mode 100644 index 0000000..0449c9e --- /dev/null +++ b/user/pages/logout.vue @@ -0,0 +1,99 @@ + + + + + + diff --git a/user/pages/merchant-info.vue b/user/pages/merchant-info.vue new file mode 100644 index 0000000..3a9d8d6 --- /dev/null +++ b/user/pages/merchant-info.vue @@ -0,0 +1,109 @@ + + + + + + \ No newline at end of file diff --git a/user/pages/order.vue b/user/pages/order.vue new file mode 100644 index 0000000..50889c6 --- /dev/null +++ b/user/pages/order.vue @@ -0,0 +1,954 @@ + + + + + diff --git a/user/pages/order/refund.vue b/user/pages/order/refund.vue new file mode 100644 index 0000000..03c7125 --- /dev/null +++ b/user/pages/order/refund.vue @@ -0,0 +1,437 @@ +

$;P$~53+5Zg7eZ?}b2DVkPHAt?hgm}3B~86uS% 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 P00000NkvXXu0mjf&Zf5M literal 0 HcmV?d00001 diff --git a/static/mine/bg.jpg b/static/mine/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6381a2b0da8178b0b952c2210ae369cfaff8763 GIT binary patch literal 32789 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 literal 0 HcmV?d00001 diff --git a/static/mine/coupon.png b/static/mine/coupon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb8b0e21f9155889bd9d4f922f1f0ebdba19b42 GIT binary patch literal 24720 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 literal 0 HcmV?d00001 diff --git a/static/mine/default_user.png b/static/mine/default_user.png new file mode 100644 index 0000000000000000000000000000000000000000..0d54c70de791c75c6703d99494f1bb14766ac7ca GIT binary patch literal 6878 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 Y011-!;}d-l%K!iX07*qoM6N<$g4A6zQ~&?~ literal 0 HcmV?d00001 diff --git a/static/mine/dengji.png b/static/mine/dengji.png new file mode 100644 index 0000000000000000000000000000000000000000..c019fb6aa557d3e3311c081c48a135ac6c9dd195 GIT binary patch literal 3948 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 literal 0 HcmV?d00001 diff --git a/static/mine/hetong.png b/static/mine/hetong.png new file mode 100644 index 0000000000000000000000000000000000000000..28d4f3406127f05ed5283c86719d2ca63311d262 GIT binary patch literal 1927 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 b#kKzjy3#rXt2Abb00000NkvXXu0mjfyYKh- literal 0 HcmV?d00001 diff --git a/static/mine/lianxikefu.png b/static/mine/lianxikefu.png new file mode 100644 index 0000000000000000000000000000000000000000..b5cefaf714d915b0e375699674a1493f5a286aab GIT binary patch literal 6595 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 Bp@jed literal 0 HcmV?d00001 diff --git a/static/mine/pingbi.png b/static/mine/pingbi.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd93d1881e3731219ea5cdf978c7b04f1032dae GIT binary patch literal 5576 zcmZu#cQhN``;J}23To3*8nZUFDmF!9?_CrXL~Sub32kYK)~dvA8>2?;J!=+4sXamw z1g%lj&*%L9{r>UZ=Q;PBd+)jL``-JU^CUryb?In0X#fBKoxYxy=`}w6FK$p?kEtG3 zBiBIfuV)ho0MIi37bJk}T=wh9TW)%$MgTy#AOH{(2LPO1UE>x25F`lzY&!!0N|^uv zn_rq!uMPmfYOJpXF%SJocpot)Xc5#K?L*cLEFk5CYH^tJs*UmAGzEjnb(vq%^eMLV zIUABvd!zVYqmymlrl`9B%J1lX?7_MgfuKd?cMF&eq0B6#Aij^*tiz~5%?=Kojf#tL z#QyGgM3djre$JUh70hbkY;QLNgE(IFDX)2y`c%g0-<6n@AF{D?V`$#_$Q}0ie=(;l z_w(Mo<$qJUE?iGL@R;rW!)D<&HYbsO=xl$c>(aQIY|6suaa$%ElA-pJo8UxdIpdgc z$rxHVl3L|QvV=U#-raW}wOG`+RK_FF)eFBI2lw$yzaxvjna!4lFCJpXn-J|+9TS{D z>WpaL!WFuY4GQ_ID^e2;bn)sEslu2?8r_Lv#?%riY~186KR+A%y0z{ukFP33BpLKr|uQVs-GcdiV6cW9>{ucU(_WFCwt=NO`2MtvT@iw+;=f` zW^E1l4J8c={f_s2*T<>)(w_5KsG*Bk>N(_0{hv|i)=gbkakH>d7tIFQ7JG%ipI0bC zpRY)Ex^&DY1R-f-xIk+!m2CPHlk!#eK72voOv5ot4>8>udLp*g8ccdp|HL6T%x#=_ z&A8d{Qfrs2B*~X|5C#)p;vI#0tH;$$?psdn=&m`Yor5dd(~GRI)``!OiZZ4U=riNB zh{ttwg+^yw7EvzkbB55~vS zzXW37?576ZL*xu&+xcP82|v3pxRI`I7X8q|SaMvxz8-6vh3o}9XGlE}C)<>`;`W5R zaYOaKUpZyD5b`NyU3JZD20fsI_KrkV5dRF_w_PS0-TX?Q95#=t@->$XO0Mt`MU1&( zN^YoA*!+2Xv?qFJI}ChZsDI(pqU|P3E_4YWCd{Dh=&wv%ly93}hY6?paDKv)I+7PH z8Qd2egyP8+e{yIR1IT9Yk+fHNe<-TT!4^GlzRx9;v)(#)we67p?WrZ z*Jn3Q+orjvLDHoIK{X^ig^?Cp%5wfDWP+tPR3q3|yx9X?7U+hkclxH3@A)$~3g^Pb=bF85{EuUhnciyw)l%z74pqwDzdrKnN zTj58dcKdfBIx$JfY3KN}N@@-V11^r#yWa-k2lJWF~kmqogZAVg$(R0#CoULKpKTF624Z8i5 zk&!7YjLxmqD|J~9&-sUDu|45maVq*>m<*tBE!PhsU@tuE1-YQ9fR;j|-CZQwne_<* z=WV(xS*{gzzpj-<4|JWAiP7HuW+qoYnlidfraMq$w_2?4`mHoK4>pjfDlX+0d-^YjHz&AoU=o$# zDy-rFlZ1qG3Vn=Cl`j3W4m&4}V3(Ke!E;OPbBkvN(EE_EdBH@Y2uZVrG&ISP7UTNf z6Xt9nL(XD4w7Kl?r=MxS@3PnsW9UYJ{G*#spU@0?DVD)&#lRoww8if;;P~UwRC1v+ z--rCD!C!fPh=XPHp~l5kl*v0FwA~T(M!D=iol>m*pE_^dp%jT>(&889r> z7nvp%zrO+FfTn2|Oi6B$&nrF@C;_2EeAWN{L&8U(YrZm^jsb#B7Ke5sz)JRn3Xzb9 z?s<`+8Fu7&uZB7EUUeHtSg9HkzGxlRCa-CY*+?*;wd(AZ7HLd0`1<4|Gh22_92^o@ zpMX`73z<{H+}+U>HE3<0kU!)dcK!n+ZxEWZ!5>st3PL~dXsL>pdVSQZZUhN? zd;jU{E(^K$6%%cIWQ#AY)fP*D69h)I58UEy^Hg#y=+<}5JQ2+!)sDOM22xOu>t_m< z>LZ24y(`W)J?5F=t48QZ98Br|*4nFMCCA&NME95NilYyf zTwTNh3ioWR)<3~xFKMp&Vyuc=93AIM6_b#eI-Krwm1)>27*kYKKCrNjeQW@^KeX_2 z_i+j~;&P^6Sl;o(+W2rq#!=1{p)+jY(CdEWx8{fN10a%>a1dn_W3$Vq%#E)L$D zOvyr~kRzl%SbVoYRdHe0c?njo(UcdfeP>M+co;Md4>N*77r(OsePSZQsRu7T-j(#K zXWhnT#nFcWQd;^2U8GlFAtbs265TB&7_5Ebuhti_*+^-7`W6TgdgXfSkrU9IOfVG? zN2h}o;1l{zv?dd5?@;5t;33X+4B2^Uq%<3`plje$-(pW_-fz;6)_2SnCt-7Q9F)w8 z9h{XH+ z#BowZno3hU)NrWd_|>XYhb}Ue#0hnQ7Bl)9P(Oe?^qnb1Os_3(}&*J4>l&jVsYH z=cVG5+3!0kx;-r{F4`1v9hKEHc+IfUQI^f!P}jEw$E zDBZLOaj#2RAQ;SrpnXz9bolC2cd5Os)VY92j`b*grj@7223*>&M$o6n42&_x!PAzp z5@0J9R=nmqORxH$-FjNS#D*`mTfrSW>V6t(A2gwhqoEY8e!~OEbh-yxP3-5UvnN3# z5)R>GOg8E!4$%@!o8WLj`pVxGt&_n<7I)Xw!Q;1qMd@QQm<>^fcEexA@i1|cN!p?Y z`d(dX9<3upPdW4ULuhq<(a{^2hEiM9{Eea>L-oYIeBak12aKDL;xQo_=T*z7X&!zy zF!)gc^-}GnHz8ukw-gYaWbIfvm@U~XYXz)r$3Jp?z;;f!ZX9ZMsnU{9-#LX4mKKL!HEWH`i*q^$Ng zoKV;qQO82Y6L+Z~Ux}j`tWlV8CPtzd6e1$GgvUcZ*F>Y9{=vfbj=cz?gFLCEm<3XU zD4Ux!4q_Ke;x!N31<(2D9s!JXT6lI$I0irK5S?`PKhZ6Ze3A$tD)OtvUjCwARcTzI z;sH%*?M;u&B_pUFP>h0)Mqrr?E^pn*@pK*fs3293clUH283pg`Nn3ztlwP`D)nq>(l=lJk62`dtfaq`J@*!s%FQrv8rvW!e&kj4jJP zRE_AGZzOa0nS`;D;wtK1Dr&FqU7>bCatXG~RO?#k33{hDiKTBx(U=J=fK3J@&T^S^ZOc4cRO=9sL58GZ@%H@Ad5^ zHj*SiXXm0^6Y411YcohY=w#N@N|(p36m@%b-;#gyfS&(&%M-2NqaZjU^1$$q3H3cl$7b7c2g5%o%LSYYK#rAQiZlx z*rwMtEnDjO4>`IYCE@Fp4q>W`f8h&xcu51ql4w!GBf2%56ieLisG^$f6BGJUd(9_u z6LETckFGXL0bchf@@oJ*rEZm(DibQyvX7_hX$IvwK&o;E{W`M>@6NVA&NNRRb2wL2 zu#$bD9`td?O!0%Gc>{BYPhC1!XUW+;1nMIz1;)Y&UO5++V4~7*z*}bSYx|r)uY#~vpl}HTYzUV z!)i-ToN>bROpaN=1)OGc4m*EDe1B#i*IaU}b!W#Ts_4qx+kpz9^@D%vsoGg0%}jy_ zFP!~tA4-j7EHi_5ZrXXgqknL(i-7qEZ9{mWYM%AzRd{_qf7TGmsqGprCs3LPewZy9 ze@TR2(P_mEe7QctTjuh4Q$3Q@J)5E?j7tmJp?hhO$fpYI#>Si~>Rm>bXtl5gE968Gh) zDH-H8>JgQB|KvT(Rr9W9LG4|Cb!PvfN)A3N1-yn9m16#~jyB;#e3zql-})cU)2zOG zq)rU>4)DsmQ(eSPahFq?Fn>@=;+xsHnX`Jz}mh9jR-e?A^5Kh{jg| z;PTvV^J`!9(w`j&$CLXI6^hJBe56b{J_3jd_r6&S1K$!Q0`oU zU2cRxe#qwz>3WJx>qjG-?=P(1NMDsl*xqZfcCH4D6<8;%s^Vql@AdNKhc*b15)67? zBth+>#G?1jQfL>|dt^AjL2G-rz%X71&$-RdGtI?MTB&z^n3?A}j%55DXo0Dfsyo~sR5ZK&GY0{i8h87tNd%eZFAoB$P?^I6VQ$@M}NPLi(%c5H4= z6SneguhjcT-Q1FnLuAI(xT-VEJ!1xH=fz7*A4+t!Q82)I4G#{r;@e-R(RJ0xL)h|A?2^d%sy55_ zZ07b>% zdc}CILx}GBXDijT&=TDG%&)oTheYhPH#z(^Q=#+!4azfVg_-}wDu)lF$pG194Wm4s S4oBB6EI?n|SgS(A8To(I0iwJB literal 0 HcmV?d00001 diff --git a/static/mine/pingjia.png b/static/mine/pingjia.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb30c91e5f10a41080c7f91b938231199cb7882 GIT binary patch literal 3019 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 N002ovPDHLkV1lKymmUBB literal 0 HcmV?d00001 diff --git a/static/mine/qiehuan.png b/static/mine/qiehuan.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7f02cb832f37041dc1326a6fb4f5c275bc62f3 GIT binary patch literal 5564 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 E0fq&k>;M1& literal 0 HcmV?d00001 diff --git a/static/mine/qudao.png b/static/mine/qudao.png new file mode 100644 index 0000000000000000000000000000000000000000..13fc599db1ab2fa5c96f234f2e4030289996d347 GIT binary patch literal 4406 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 literal 0 HcmV?d00001 diff --git a/static/mine/setTime2.png b/static/mine/setTime2.png new file mode 100644 index 0000000000000000000000000000000000000000..ce48bd591dc2a2b706ab189da2814cee7ce58901 GIT binary patch literal 3514 zcmV;r4Mp;aP)Px#1am@3R0s$N2z&@+hyVZ$WJyFpRCt{2Tx)bxRhIs~eeSJP5<(IZ9%6WdyoDgT zTBTKVe1JVTb`K9l#u-$gae>m}=qNo_57J6&i>*srXqp+s#~2@|AdT&47-t-3T1dbU zKmrmPR=R-z5kg2(b?=@Zu^>WHb#J8#m|1*T=g+NkzP-#F_@hECu@jn&O*7C3Gi< z=d;>JmQ?l%)u+Tt(it@*`5VnuF8Csdfl250vJ$^lAg!&AKyjQvl@bRC)Hhv1kcy59bOn*#RucposJN@TaNetJ;7AO4rH|hN z;*GY5Meu+EuR!rT6AqWzf+JN&(TIOX)06FLNY^X`!Ykluwy}^?@^}v;_!kAP@!gpC&7rS0{TLJ8 zbi6k470!A6FTNUzJAFF_EK9G;80$r>f<4cqXK$L{3q|9N7vh=`^LD4#WsC)|%(qvH zJM;Qqe6^n@o+GShaVU7CgIx;M0sai=D+eQcrefrhaIAVcrJ)={>p2A{0cr#M2I@X` zDB%3sQyOReG&|4gwoE~PO9ygW`$OSEuXCyA2s@Hv&G0W4R_A7B-yKh^z7@}<39VHM zOlcAe05luqGr3OSC!UOrToTUB%)XnzYCk?gb-L zj()Qn;?+D@TYDYAD_inU)O`%? z$a8JDHL-pV3#z@_2AXX1WA81#?W2cCjw@K+#`z;vFv7cSI07v2lQI^?S^&pd{*_e|+&iRQ7k3=TC4e31%pnX8^)0fcaV;umr$Xrmi zYmy7?MW7ngJxXi&zQGUf_s!J|HnG|TLq3}HIarrg0O0G^D#R2_0w@HT;n|!blDRk2 zS44Cw`$ZqK`Rm^S+V4cT6Cj;`>bmI{Q>%vk{p)`Cnj>>>=H_D;9*cmn``HW`2%r!# z1dBN&jaWkr1zw9#*6$b_f87;D_w9>%+t5!8*zYtxFi3;N1?5ll^~!fDc8s0fAe8lf z`e4Kw5{ol-gb4>yy}xcMxy@_cUL{ZW(8kDGQo6^emIc?E*kjA0Wpte>5z5lNgMV_! zvqJ!km~Di9&ue{c+J$cwG1ah?1N___n^Nn=sexM-UBEPcER>Uxg;pZLu&eEaGlX22 z25jn6{>!=76oxR*lB_P@g$g$3w=%ckYK`sSroNs;I$aYsPRQb zaT9+5*X*z$5sLSf5}^U>>K%W8@6 zAJJ?lir~p%&XBtq*y`1pJ(nKrW`!lohyMV1B-YO{Bg_W(`nx*@bmRwK{MyiWdhv#S zGZt>>I=wD>t)%zNFKw}wecWyW}KH{ zc`B~lxxD)&>lfQOdVIDevhM^ZCBtIlV}AL@7Zn*JW}I*TX-Z@9#+k!dVmGa?{FG7E zBO83J&i|tF<$(clireP}-mD3Bk$}h?TZ~3IjmYiSezn}w10{;;kqv!q$|%47TVzQr z-q=GjEx67S6Y+JIDCrg)&*|*zb}#EqxF1-Q-WGXFmV5m5yt+TWZ7A!SapqV--s_bU z04zAOEK0h+2s05oEx0ZgZ_G5rUsf&7a2hj8L0sg=StXSc7_p{c!p2zj#_WD&5TUE_ zo%A;=UDu3Ojbs}OCDEO21r8qXUeIM7M@Qn>AG^0`xVnuc^tcyr(s67zfx5y~&F0lp z5i`P8b)8;k8T&m;4Ez+ELJQ6dV=C6PdhTNUuA(ls$SO-ruV_0XX1CG6wQGCbR{3G? zDVq$;6DK&ubm+L{K-?GGF%@glEI2RN6#DhsGWL71#EL5z02pGaMR9!3W#APV8MUF- zcwO7Q%ck@`Id{lzi*m!No)dOO>jbFFZ4tNWcW=*;jEvfl4PN1Y?h?lkOXKm!6>Md} zr0uqtcYNP1F|f!7Csn=G;;{k|*S2Vw4+heXYljT1?vAR`u2Z0~xD^n_umG>+f4LGG*V&DeAgQ0K|N?X&G#E1lPRY`G=p! zt?7ksycU^u`vdQ&BEe&iYy|aJJv(JT67n!<`$0&Ht;+r1{2a>r61<@x@qTTm#vi`P z32}FsJU>OI9e96)g8vPTZsq%jDnAa;p7CPGn|4Ou9}|XxGY_oo)2QK>NWCs$9x_bm z_m*@V7jyk}qPidMnFl_22Ed$z9Qzgu92Ibhsy_W|dyuNmOw#(-72KkHCUYeQnZ7MV^*JLCi! zBZUs|HwwKSfbZ9@(?IUZpebC~;d;-9>U^I-oKyY#TgBilP3)*-YdAv6W~lCkK^a}G z0{|6fz`;+9IK3M|bZoh5MF)Uq}bL}+x z{0h$VWT_BVYB+vqph9nH3s=gaSe22UA8LzOK$1THdqIoa z)z@c!K)};p;hBa4p9X`+ZoZeJJ?+fLLehrOvs%_!8X7)QU}&;9lK}!{Zd%&)_jBmJ zB=IE=zpVR1x1g~;1kRc7Cb!l*ksBY#xGe4-rdK3=qF!2G-Z#R=wIDs8d`<~ecUl^_ z>F(g*9m%9k$&>A+`qF;JnD+sHA3`J#+~zpWxEaC1ilj3qn=p#yTHf7>=o+OCPL++8 zKxMhHIQC8s{$on`Q$ZTVZ;zF9wbBA_Dse?B?LQHW#bT|>Xy+bz+NDlMlKzuHGq|E$Tr2J8PG{Gc zTV%;VvYl@c)7iDoe*4Q=qB@sA*w4oXaY|TJ=h|<7IqOV_1)PO{hxM9nyUA7k4S<3+ zQtcJ;p4&NKZ8H4winH><{Hkv00m!SW+R`U~aY6Dkz@0pqgOd6=v=^L_A$ck$bI|Tu z)Q*Pg0)WT8x8!lCE~rKA=(8afaF!x03RUI5qT(_~BQF6Q9;fz3Lu(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ}zDYzuRCwC#oq4bvRTaj6-<_BBL0$|AgvSy{umB4qvV#E$p)@STB3LB~7M4qy zSfC&vB!ED%Xb2d^D%lFq3JRoRSTrt)1WbxWDJW5(fItKU0tq1@8wp9;Kc?S%Jw3O( zZ})W1OhTVmx4P#}_v`8V^||+)bH969p65}@)+45Df)cP&O2A4f0V@G3r39>$60j1m zQcA!|DFNGNq@$6Or%k3ma5!)ZFc#sh7YQwn(fo;$4Zk67wZqmq5n9AAgIf?jz5?XrPGtIs+Jwt`kl1fK8iBKj6#2 zIly6Q&Xr%H_Ip81+7Ep0Y2cb;!pBAw;_3pw4>(O?xx}3kGbG+p;6kdq5!=lLi&yi{ z3+oc6O=c(He&B9bu!0Sa;y=6Y8xjDb@e&3T7!F*B_&abifqSR{ArUOLvt zz(c_CSu`_zAJ`h32oR!l)uhgOuERSu`xz1y&?(LF`?v_tI%r6Ey7Wz!{AgDRJ7B*flz6 zmx&vJ_hPUE&Fu zKvKM+k;+00d^WBYp;DC4Z-i*=viKzv5GE3g7K~wgXC1GIFgi%1T}dE0Xch@=3H5$i zlzCfY%2%~!1Y&S%lfFQ}w$IWB#x<6d-BC`|u7vRl#TzEru3TeO!E|hZYN*ezHp(W?>DxyAYDcY<K!5^E(Q8umt-V~Oj)lrVpu2h