From 609f748248c24bbe8de43117f7cf137d511e1cbf Mon Sep 17 00:00:00 2001 From: itgaojian Date: Sat, 15 Jul 2023 14:25:28 +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 --- .eslintrc.js | 31 + app.js | 51 + app.json | 102 + app.wxss | 10113 ++++++++++++++++ images/home-on.png | Bin 0 -> 675 bytes images/home.png | Bin 0 -> 692 bytes images/ic_address_icon.png | Bin 0 -> 1352 bytes images/ic_audio_play.png | Bin 0 -> 524 bytes images/ic_audio_playing.png | Bin 0 -> 301 bytes images/ic_audio_rewind.png | Bin 0 -> 587 bytes images/ic_audio_speed.png | Bin 0 -> 598 bytes images/ic_call_phone_icon.png | Bin 0 -> 1286 bytes images/ic_code_icon.png | Bin 0 -> 1264 bytes images/ic_column_icon.png | Bin 0 -> 747 bytes images/ic_corner_mark_bg.png | Bin 0 -> 533 bytes images/ic_email_icon.png | Bin 0 -> 1286 bytes images/ic_empty_data.png | Bin 0 -> 13878 bytes images/ic_empty_desc.png | Bin 0 -> 22626 bytes images/ic_empty_map.png | Bin 0 -> 26447 bytes images/ic_empty_text.png | Bin 0 -> 24220 bytes images/ic_empty_voice.png | Bin 0 -> 20472 bytes images/ic_hot_number_bg.png | Bin 0 -> 647 bytes images/ic_phone_icon.png | Bin 0 -> 1092 bytes images/ic_record_start.png | Bin 0 -> 4221 bytes images/ic_share_icon.png | Bin 0 -> 1315 bytes images/ic_share_img.png | Bin 0 -> 1174 bytes images/ic_squareness_del.png | Bin 0 -> 499 bytes images/ic_user_default.png | Bin 0 -> 1222 bytes images/ic_voice_record.gif | Bin 0 -> 99073 bytes images/ic_wechart_icon.png | Bin 0 -> 2005 bytes images/law-on.png | Bin 0 -> 1961 bytes images/law.png | Bin 0 -> 2037 bytes images/my-on.png | Bin 0 -> 868 bytes images/my.png | Bin 0 -> 882 bytes images/neighbor-on.png | Bin 0 -> 848 bytes images/neighbor.png | Bin 0 -> 878 bytes images/share_count.png | Bin 0 -> 1023 bytes images/title-bg.png | Bin 0 -> 2071 bytes images/view-count.png | Bin 0 -> 2303 bytes packagecard/cardDetail/cardDetail.js | 339 + packagecard/cardDetail/cardDetail.json | 25 + packagecard/cardDetail/cardDetail.wxml | 55 + packagecard/cardDetail/cardDetail.wxss | 215 + packagecard/cardList/cardList.js | 152 + packagecard/cardList/cardList.json | 25 + packagecard/cardList/cardList.wxml | 45 + packagecard/cardList/cardList.wxss | 122 + packagecard/common/corpperimg/cropperimg.js | 58 + packagecard/common/corpperimg/cropperimg.json | 26 + packagecard/common/corpperimg/cropperimg.wxml | 1 + packagecard/common/corpperimg/cropperimg.wxss | 0 packagecard/moments/edit/momentedit.js | 846 ++ packagecard/moments/edit/momentedit.json | 24 + packagecard/moments/edit/momentedit.wxml | 222 + packagecard/moments/edit/momentedit.wxss | 41 + packagecard/moments/list/momentslist.js | 268 + packagecard/moments/list/momentslist.json | 25 + packagecard/moments/list/momentslist.wxml | 94 + packagecard/moments/list/momentslist.wxss | 81 + packagecard/moments/list/momentsshowlist.js | 8 + packagecard/moments/list/momentsshowlist.json | 24 + packagecard/moments/list/momentsshowlist.wxml | 1 + packagecard/moments/list/momentsshowlist.wxss | 0 .../moments/momentsdetail/momentsdetail.js | 606 + .../moments/momentsdetail/momentsdetail.json | 25 + .../moments/momentsdetail/momentsdetail.wxml | 211 + .../moments/momentsdetail/momentsdetail.wxss | 665 + packagecard/moments/publish/momentpublish.js | 742 ++ .../moments/publish/momentpublish.json | 24 + .../moments/publish/momentpublish.wxml | 307 + .../moments/publish/momentpublish.wxss | 220 + .../moments/publish/momentpublishline.js | 759 ++ .../moments/publish/momentpublishline.json | 24 + .../moments/publish/momentpublishline.wxml | 225 + .../moments/publish/momentpublishline.wxss | 45 + packagecard/moments/showlist/showlist.js | 320 + packagecard/moments/showlist/showlist.json | 24 + packagecard/moments/showlist/showlist.wxml | 162 + packagecard/moments/showlist/showlist.wxss | 648 + packagecard/sharePage/cardcode.js | 55 + packagecard/sharePage/cardcode.json | 24 + packagecard/sharePage/cardcode.wxml | 11 + packagecard/sharePage/cardcode.wxss | 33 + packagecard/sharePage/sharePage.js | 442 + packagecard/sharePage/sharePage.json | 24 + packagecard/sharePage/sharePage.wxml | 220 + packagecard/sharePage/sharePage.wxss | 585 + pages/card/cardDetail.js | 105 + pages/card/cardDetail.json | 25 + pages/card/cardDetail.wxml | 62 + pages/card/cardDetail.wxss | 142 + pages/card/cardList.js | 17 + pages/card/cardList.json | 25 + pages/card/cardList.wxml | 6 + pages/card/cardList.wxss | 13 + pages/center/case/caseHandle.js | 266 + pages/center/case/caseHandle.json | 25 + pages/center/case/caseHandle.wxml | 117 + pages/center/case/caseHandle.wxss | 360 + pages/center/case/caseList.js | 81 + pages/center/case/caseList.json | 25 + pages/center/case/caseList.wxml | 23 + pages/center/case/caseList.wxss | 127 + pages/center/case/caseLog.js | 34 + pages/center/case/caseLog.json | 24 + pages/center/case/caseLog.wxml | 36 + pages/center/case/caseLog.wxss | 56 + pages/center/center.js | 396 + pages/center/center.json | 25 + pages/center/center.wxml | 188 + pages/center/center.wxss | 729 ++ pages/center/contact.js | 43 + pages/center/contact.json | 25 + pages/center/contact.wxml | 13 + pages/center/contact.wxss | 47 + pages/center/contact/contactDetail.js | 920 ++ pages/center/contact/contactDetail.json | 25 + pages/center/contact/contactDetail.wxml | 271 + pages/center/contact/contactDetail.wxss | 779 ++ pages/checkIn/checkIn.js | 45 + pages/checkIn/checkIn.json | 25 + pages/checkIn/checkIn.wxml | 20 + pages/checkIn/checkIn.wxss | 79 + pages/checkIn/checkInDetail.js | 157 + pages/checkIn/checkInDetail.json | 25 + pages/checkIn/checkInDetail.wxml | 81 + pages/checkIn/checkInDetail.wxss | 78 + pages/columnlist/columnlist.js | 55 + pages/columnlist/columnlist.json | 24 + pages/columnlist/columnlist.wxml | 21 + pages/columnlist/columnlist.wxss | 0 pages/community/changeCommunity.js | 159 + pages/community/changeCommunity.json | 25 + pages/community/changeCommunity.wxml | 29 + pages/community/changeCommunity.wxss | 132 + pages/community/join/joinDetail.js | 123 + pages/community/join/joinDetail.json | 25 + pages/community/join/joinDetail.wxml | 38 + pages/community/join/joinDetail.wxss | 65 + pages/community/join/select.js | 92 + pages/community/join/select.json | 25 + pages/community/join/select.wxml | 25 + pages/community/join/select.wxss | 61 + pages/community/joinCommunity.js | 60 + pages/community/joinCommunity.json | 25 + pages/community/joinCommunity.wxml | 20 + pages/community/joinCommunity.wxss | 80 + pages/community/selectCommunity.js | 107 + pages/community/selectCommunity.json | 25 + pages/community/selectCommunity.wxml | 25 + pages/community/selectCommunity.wxss | 83 + pages/index/index.js | 258 + pages/index/index.json | 25 + pages/index/index.wxml | 65 + pages/index/index.wxss | 312 + pages/law/law.js | 11 + pages/law/law.json | 25 + pages/law/law.wxml | 1 + pages/law/law.wxss | 0 pages/mine/myCard/myCard.js | 190 + pages/mine/myCard/myCard.json | 26 + pages/mine/myCard/myCard.wxml | 58 + pages/mine/myCard/myCard.wxss | 139 + pages/mine/myCardDetail/myCardDetail.js | 330 + pages/mine/myCardDetail/myCardDetail.json | 25 + pages/mine/myCardDetail/myCardDetail.wxml | 48 + pages/mine/myCardDetail/myCardDetail.wxss | 217 + pages/mine/otherCard/othercarddetail.js | 574 + pages/mine/otherCard/othercarddetail.json | 25 + pages/mine/otherCard/othercarddetail.wxml | 295 + pages/mine/otherCard/othercarddetail.wxss | 679 ++ pages/neighbor/circle/circleDetail.js | 227 + pages/neighbor/circle/circleDetail.json | 25 + pages/neighbor/circle/circleDetail.wxml | 54 + pages/neighbor/circle/circleDetail.wxss | 167 + pages/neighbor/circle/circleList.js | 47 + pages/neighbor/circle/circleList.json | 25 + pages/neighbor/circle/circleList.wxml | 22 + pages/neighbor/circle/circleList.wxss | 76 + pages/neighbor/circle/new.js | 161 + pages/neighbor/circle/new.json | 25 + pages/neighbor/circle/new.wxml | 27 + pages/neighbor/circle/new.wxss | 155 + pages/neighbor/help/helpDetail.js | 164 + pages/neighbor/help/helpDetail.json | 25 + pages/neighbor/help/helpDetail.wxml | 49 + pages/neighbor/help/helpDetail.wxss | 166 + pages/neighbor/help/helpList.js | 63 + pages/neighbor/help/helpList.json | 25 + pages/neighbor/help/helpList.wxml | 27 + pages/neighbor/help/helpList.wxss | 120 + pages/neighbor/help/new.js | 187 + pages/neighbor/help/new.json | 25 + pages/neighbor/help/new.wxml | 35 + pages/neighbor/help/new.wxss | 155 + pages/neighbor/neighbor.js | 165 + pages/neighbor/neighbor.json | 25 + pages/neighbor/neighbor.wxml | 81 + pages/neighbor/neighbor.wxss | 211 + pages/news/newsDetail.js | 200 + pages/news/newsDetail.json | 25 + pages/news/newsDetail.wxml | 38 + pages/news/newsDetail.wxss | 130 + pages/news/newsList.js | 86 + pages/news/newsList.json | 25 + pages/news/newsList.wxml | 54 + pages/news/newsList.wxss | 121 + pages/report/report.js | 431 + pages/report/report.json | 25 + pages/report/report.wxml | 75 + pages/report/report.wxss | 197 + pages/serve/newsList.js | 83 + pages/serve/newsList.json | 25 + pages/serve/newsList.wxml | 51 + pages/serve/newsList.wxss | 112 + pages/serve/orgDetail.js | 22 + pages/serve/orgDetail.json | 24 + pages/serve/orgDetail.wxml | 225 + pages/serve/orgDetail.wxss | 157 + pages/serve/orgList.js | 54 + pages/serve/orgList.json | 25 + pages/serve/orgList.wxml | 9 + pages/serve/orgList.wxss | 34 + pages/serve/serve.js | 119 + pages/serve/serve.json | 25 + pages/serve/serve.wxml | 44 + pages/serve/serve.wxss | 255 + pages/serve/serviceDetail.js | 11 + pages/serve/serviceDetail.json | 24 + pages/serve/serviceDetail.wxml | 1 + pages/serve/serviceDetail.wxss | 0 pages/serve/settle.js | 351 + pages/serve/settle.json | 25 + pages/serve/settle.wxml | 120 + pages/serve/settle.wxss | 132 + pages/talk/myTalk.js | 20 + pages/talk/myTalk.json | 25 + pages/talk/myTalk.wxml | 87 + pages/talk/myTalk.wxss | 105 + pages/talk/newTalk.js | 148 + pages/talk/newTalk.json | 25 + pages/talk/newTalk.wxml | 28 + pages/talk/newTalk.wxss | 93 + pages/talk/talk.js | 94 + pages/talk/talk.json | 25 + pages/talk/talk.wxml | 34 + pages/talk/talk.wxss | 144 + pages/talk/talkDetail.js | 226 + pages/talk/talkDetail.json | 25 + pages/talk/talkDetail.wxml | 56 + pages/talk/talkDetail.wxss | 181 + project.config.json | 29 + project.private.config.json | 8 + sitemap.json | 7 + utils/WSCoordinate.js | 67 + utils/api.js | 181 + utils/md5.js | 82 + utils/request.js | 325 + utils/restAjax.js | 239 + utils/util.js | 23 + vant/dist/action-sheet/index.d.ts | 1 + vant/dist/action-sheet/index.js | 70 + vant/dist/action-sheet/index.json | 8 + vant/dist/action-sheet/index.wxml | 69 + vant/dist/action-sheet/index.wxss | 105 + vant/dist/area/index.d.ts | 1 + vant/dist/area/index.js | 232 + vant/dist/area/index.json | 6 + vant/dist/area/index.wxml | 20 + vant/dist/area/index.wxs | 8 + vant/dist/area/index.wxss | 1 + vant/dist/button/index.d.ts | 1 + vant/dist/button/index.js | 58 + vant/dist/button/index.json | 7 + vant/dist/button/index.wxml | 53 + vant/dist/button/index.wxs | 39 + vant/dist/button/index.wxss | 1 + vant/dist/calendar/calendar.wxml | 65 + .../calendar/components/header/index.d.ts | 1 + vant/dist/calendar/components/header/index.js | 16 + .../calendar/components/header/index.json | 3 + .../calendar/components/header/index.wxml | 16 + .../calendar/components/header/index.wxss | 1 + .../dist/calendar/components/month/index.d.ts | 1 + vant/dist/calendar/components/month/index.js | 157 + .../dist/calendar/components/month/index.json | 3 + .../dist/calendar/components/month/index.wxml | 39 + vant/dist/calendar/components/month/index.wxs | 67 + .../dist/calendar/components/month/index.wxss | 1 + vant/dist/calendar/index.d.ts | 1 + vant/dist/calendar/index.js | 297 + vant/dist/calendar/index.json | 10 + vant/dist/calendar/index.wxml | 25 + vant/dist/calendar/index.wxs | 37 + vant/dist/calendar/index.wxss | 1 + vant/dist/calendar/utils.d.ts | 17 + vant/dist/calendar/utils.js | 78 + vant/dist/calendar/utils.wxs | 25 + vant/dist/card/index.d.ts | 1 + vant/dist/card/index.js | 49 + vant/dist/card/index.json | 6 + vant/dist/card/index.wxml | 56 + vant/dist/card/index.wxss | 1 + vant/dist/cell-group/index.d.ts | 1 + vant/dist/cell-group/index.js | 10 + vant/dist/cell-group/index.json | 3 + vant/dist/cell-group/index.wxml | 9 + vant/dist/cell-group/index.wxss | 1 + vant/dist/cell/index.d.ts | 1 + vant/dist/cell/index.js | 38 + vant/dist/cell/index.json | 6 + vant/dist/cell/index.wxml | 46 + vant/dist/cell/index.wxs | 17 + vant/dist/cell/index.wxss | 1 + vant/dist/checkbox-group/index.d.ts | 1 + vant/dist/checkbox-group/index.js | 31 + vant/dist/checkbox-group/index.json | 3 + vant/dist/checkbox-group/index.wxml | 1 + vant/dist/checkbox-group/index.wxss | 1 + vant/dist/checkbox/index.d.ts | 1 + vant/dist/checkbox/index.js | 74 + vant/dist/checkbox/index.json | 6 + vant/dist/checkbox/index.wxml | 31 + vant/dist/checkbox/index.wxs | 20 + vant/dist/checkbox/index.wxss | 1 + vant/dist/circle/canvas.d.ts | 6 + vant/dist/circle/canvas.js | 43 + vant/dist/circle/index.d.ts | 1 + vant/dist/circle/index.js | 186 + vant/dist/circle/index.json | 3 + vant/dist/circle/index.wxml | 9 + vant/dist/circle/index.wxss | 1 + vant/dist/col/index.d.ts | 1 + vant/dist/col/index.js | 9 + vant/dist/col/index.json | 3 + vant/dist/col/index.wxml | 9 + vant/dist/col/index.wxs | 18 + vant/dist/col/index.wxss | 1 + vant/dist/collapse-item/animate.d.ts | 6 + vant/dist/collapse-item/animate.js | 70 + vant/dist/collapse-item/index.d.ts | 1 + vant/dist/collapse-item/index.js | 59 + vant/dist/collapse-item/index.json | 6 + vant/dist/collapse-item/index.wxml | 44 + vant/dist/collapse-item/index.wxss | 1 + vant/dist/collapse/index.d.ts | 1 + vant/dist/collapse/index.js | 44 + vant/dist/collapse/index.json | 3 + vant/dist/collapse/index.wxml | 3 + vant/dist/collapse/index.wxss | 1 + vant/dist/common/color.d.ts | 7 + vant/dist/common/color.js | 7 + vant/dist/common/component.d.ts | 8 + vant/dist/common/component.js | 45 + vant/dist/common/index.wxss | 83 + vant/dist/common/relation.d.ts | 21 + vant/dist/common/relation.js | 64 + vant/dist/common/style/clearfix.wxss | 1 + vant/dist/common/style/ellipsis.wxss | 1 + vant/dist/common/style/hairline.wxss | 55 + vant/dist/common/style/mixins/clearfix.wxss | 0 vant/dist/common/style/mixins/ellipsis.wxss | 0 vant/dist/common/style/mixins/hairline.wxss | 0 vant/dist/common/style/theme.wxss | 0 vant/dist/common/style/var.wxss | 0 vant/dist/common/utils.d.ts | 30 + vant/dist/common/utils.js | 89 + vant/dist/common/validator.d.ts | 11 + vant/dist/common/validator.js | 30 + vant/dist/common/version.d.ts | 6 + vant/dist/common/version.js | 45 + vant/dist/count-down/index.d.ts | 1 + vant/dist/count-down/index.js | 99 + vant/dist/count-down/index.json | 3 + vant/dist/count-down/index.wxml | 4 + vant/dist/count-down/index.wxss | 1 + vant/dist/count-down/utils.d.ts | 10 + vant/dist/count-down/utils.js | 53 + vant/dist/cropper/index.js | 381 + vant/dist/cropper/index.json | 3 + vant/dist/cropper/index.wxml | 44 + vant/dist/cropper/index.wxss | 296 + vant/dist/datetime-picker/index.d.ts | 1 + vant/dist/datetime-picker/index.js | 324 + vant/dist/datetime-picker/index.json | 6 + vant/dist/datetime-picker/index.wxml | 16 + vant/dist/datetime-picker/index.wxss | 1 + vant/dist/definitions/index.d.ts | 43 + vant/dist/definitions/index.js | 1 + vant/dist/dialog/dialog.d.ts | 80 + vant/dist/dialog/dialog.js | 84 + vant/dist/dialog/index.d.ts | 1 + vant/dist/dialog/index.js | 122 + vant/dist/dialog/index.json | 9 + vant/dist/dialog/index.wxml | 113 + vant/dist/dialog/index.wxss | 1 + vant/dist/divider/index.d.ts | 1 + vant/dist/divider/index.js | 12 + vant/dist/divider/index.json | 4 + vant/dist/divider/index.wxml | 9 + vant/dist/divider/index.wxs | 18 + vant/dist/divider/index.wxss | 1 + vant/dist/dropdown-item/index.d.ts | 1 + vant/dist/dropdown-item/index.js | 111 + vant/dist/dropdown-item/index.json | 8 + vant/dist/dropdown-item/index.wxml | 48 + vant/dist/dropdown-item/index.wxss | 1 + vant/dist/dropdown-item/shared.d.ts | 5 + vant/dist/dropdown-item/shared.js | 1 + vant/dist/dropdown-menu/index.d.ts | 1 + vant/dist/dropdown-menu/index.js | 112 + vant/dist/dropdown-menu/index.json | 3 + vant/dist/dropdown-menu/index.wxml | 17 + vant/dist/dropdown-menu/index.wxs | 16 + vant/dist/dropdown-menu/index.wxss | 77 + vant/dist/empty/index.d.ts | 1 + vant/dist/empty/index.js | 10 + vant/dist/empty/index.json | 4 + vant/dist/empty/index.wxml | 22 + vant/dist/empty/index.wxs | 14 + vant/dist/empty/index.wxss | 49 + vant/dist/field/index.d.ts | 1 + vant/dist/field/index.js | 126 + vant/dist/field/index.json | 7 + vant/dist/field/index.wxml | 56 + vant/dist/field/index.wxs | 18 + vant/dist/field/index.wxss | 1 + vant/dist/field/input.wxml | 27 + vant/dist/field/props.d.ts | 4 + vant/dist/field/props.js | 63 + vant/dist/field/textarea.wxml | 29 + vant/dist/goods-action-button/index.d.ts | 1 + vant/dist/goods-action-button/index.js | 37 + vant/dist/goods-action-button/index.json | 6 + vant/dist/goods-action-button/index.wxml | 30 + vant/dist/goods-action-button/index.wxss | 1 + vant/dist/goods-action-icon/index.d.ts | 1 + vant/dist/goods-action-icon/index.js | 22 + vant/dist/goods-action-icon/index.json | 7 + vant/dist/goods-action-icon/index.wxml | 35 + vant/dist/goods-action-icon/index.wxss | 1 + vant/dist/goods-action/index.d.ts | 1 + vant/dist/goods-action/index.js | 15 + vant/dist/goods-action/index.json | 3 + vant/dist/goods-action/index.wxml | 5 + vant/dist/goods-action/index.wxss | 1 + vant/dist/grid-item/index.d.ts | 1 + vant/dist/grid-item/index.js | 56 + vant/dist/grid-item/index.json | 6 + vant/dist/grid-item/index.wxml | 27 + vant/dist/grid-item/index.wxs | 32 + vant/dist/grid-item/index.wxss | 1 + vant/dist/grid/index.d.ts | 1 + vant/dist/grid/index.js | 50 + vant/dist/grid/index.json | 3 + vant/dist/grid/index.wxml | 8 + vant/dist/grid/index.wxs | 13 + vant/dist/grid/index.wxss | 1 + vant/dist/icon/index.d.ts | 1 + vant/dist/icon/index.js | 20 + vant/dist/icon/index.json | 6 + vant/dist/icon/index.wxml | 20 + vant/dist/icon/index.wxs | 39 + vant/dist/icon/index.wxss | 1001 ++ vant/dist/image/index.d.ts | 1 + vant/dist/image/index.js | 61 + vant/dist/image/index.json | 7 + vant/dist/image/index.wxml | 34 + vant/dist/image/index.wxs | 32 + vant/dist/image/index.wxss | 1 + vant/dist/index-anchor/index.d.ts | 1 + vant/dist/index-anchor/index.js | 25 + vant/dist/index-anchor/index.json | 3 + vant/dist/index-anchor/index.wxml | 14 + vant/dist/index-anchor/index.wxss | 1 + vant/dist/index-bar/index.d.ts | 1 + vant/dist/index-bar/index.js | 245 + vant/dist/index-bar/index.json | 3 + vant/dist/index-bar/index.wxml | 22 + vant/dist/index-bar/index.wxss | 1 + vant/dist/info/index.d.ts | 1 + vant/dist/info/index.js | 8 + vant/dist/info/index.json | 3 + vant/dist/info/index.wxml | 7 + vant/dist/info/index.wxss | 1 + vant/dist/loading/index.d.ts | 1 + vant/dist/loading/index.js | 16 + vant/dist/loading/index.json | 3 + vant/dist/loading/index.wxml | 19 + vant/dist/loading/index.wxs | 22 + vant/dist/loading/index.wxss | 1 + vant/dist/mixins/basic.d.ts | 1 + vant/dist/mixins/basic.js | 11 + vant/dist/mixins/button.d.ts | 1 + vant/dist/mixins/button.js | 15 + vant/dist/mixins/link.d.ts | 1 + vant/dist/mixins/link.js | 24 + vant/dist/mixins/open-type.d.ts | 1 + vant/dist/mixins/open-type.js | 26 + vant/dist/mixins/page-scroll.d.ts | 8 + vant/dist/mixins/page-scroll.js | 33 + vant/dist/mixins/touch.d.ts | 1 + vant/dist/mixins/touch.js | 37 + vant/dist/mixins/transition.d.ts | 1 + vant/dist/mixins/transition.js | 115 + vant/dist/nav-bar/index.d.ts | 1 + vant/dist/nav-bar/index.js | 65 + vant/dist/nav-bar/index.json | 6 + vant/dist/nav-bar/index.wxml | 42 + vant/dist/nav-bar/index.wxs | 13 + vant/dist/nav-bar/index.wxss | 1 + vant/dist/notice-bar/index.d.ts | 1 + vant/dist/notice-bar/index.js | 124 + vant/dist/notice-bar/index.json | 6 + vant/dist/notice-bar/index.wxml | 39 + vant/dist/notice-bar/index.wxs | 15 + vant/dist/notice-bar/index.wxss | 1 + vant/dist/notify/index.d.ts | 1 + vant/dist/notify/index.js | 65 + vant/dist/notify/index.json | 6 + vant/dist/notify/index.wxml | 21 + vant/dist/notify/index.wxs | 22 + vant/dist/notify/index.wxss | 1 + vant/dist/notify/notify.d.ts | 20 + vant/dist/notify/notify.js | 52 + vant/dist/overlay/index.d.ts | 1 + vant/dist/overlay/index.js | 22 + vant/dist/overlay/index.json | 6 + vant/dist/overlay/index.wxml | 10 + vant/dist/overlay/index.wxss | 1 + vant/dist/panel/index.d.ts | 1 + vant/dist/panel/index.js | 10 + vant/dist/panel/index.json | 6 + vant/dist/panel/index.wxml | 19 + vant/dist/panel/index.wxss | 1 + vant/dist/picker-column/index.d.ts | 1 + vant/dist/picker-column/index.js | 124 + vant/dist/picker-column/index.json | 3 + vant/dist/picker-column/index.wxml | 23 + vant/dist/picker-column/index.wxs | 36 + vant/dist/picker-column/index.wxss | 1 + vant/dist/picker/index.d.ts | 1 + vant/dist/picker/index.js | 146 + vant/dist/picker/index.json | 7 + vant/dist/picker/index.wxml | 37 + vant/dist/picker/index.wxs | 42 + vant/dist/picker/index.wxss | 1 + vant/dist/picker/shared.d.ts | 21 + vant/dist/picker/shared.js | 21 + vant/dist/picker/toolbar.wxml | 23 + vant/dist/popup/index.d.ts | 1 + vant/dist/popup/index.js | 84 + vant/dist/popup/index.json | 7 + vant/dist/popup/index.wxml | 25 + vant/dist/popup/index.wxs | 18 + vant/dist/popup/index.wxss | 1 + vant/dist/progress/index.d.ts | 1 + vant/dist/progress/index.js | 51 + vant/dist/progress/index.json | 3 + vant/dist/progress/index.wxml | 20 + vant/dist/progress/index.wxs | 36 + vant/dist/progress/index.wxss | 1 + vant/dist/radio-group/index.d.ts | 1 + vant/dist/radio-group/index.js | 32 + vant/dist/radio-group/index.json | 3 + vant/dist/radio-group/index.wxml | 5 + vant/dist/radio-group/index.wxss | 1 + vant/dist/radio/index.d.ts | 1 + vant/dist/radio/index.js | 45 + vant/dist/radio/index.json | 6 + vant/dist/radio/index.wxml | 29 + vant/dist/radio/index.wxss | 1 + vant/dist/rate/index.d.ts | 1 + vant/dist/rate/index.js | 88 + vant/dist/rate/index.json | 6 + vant/dist/rate/index.wxml | 34 + vant/dist/rate/index.wxss | 1 + vant/dist/row/index.d.ts | 1 + vant/dist/row/index.js | 23 + vant/dist/row/index.json | 3 + vant/dist/row/index.wxml | 5 + vant/dist/row/index.wxs | 18 + vant/dist/row/index.wxss | 1 + vant/dist/search/index.d.ts | 1 + vant/dist/search/index.js | 78 + vant/dist/search/index.json | 6 + vant/dist/search/index.wxml | 50 + vant/dist/search/index.wxss | 1 + vant/dist/share-sheet/index.d.ts | 1 + vant/dist/share-sheet/index.js | 55 + vant/dist/share-sheet/index.json | 7 + vant/dist/share-sheet/index.wxml | 46 + vant/dist/share-sheet/index.wxs | 12 + vant/dist/share-sheet/index.wxss | 1 + vant/dist/share-sheet/options.d.ts | 1 + vant/dist/share-sheet/options.js | 14 + vant/dist/share-sheet/options.json | 3 + vant/dist/share-sheet/options.wxml | 20 + vant/dist/share-sheet/options.wxs | 14 + vant/dist/share-sheet/options.wxss | 1 + vant/dist/sidebar-item/index.d.ts | 1 + vant/dist/sidebar-item/index.js | 29 + vant/dist/sidebar-item/index.json | 6 + vant/dist/sidebar-item/index.wxml | 18 + vant/dist/sidebar-item/index.wxss | 1 + vant/dist/sidebar/index.d.ts | 1 + vant/dist/sidebar/index.js | 34 + vant/dist/sidebar/index.json | 3 + vant/dist/sidebar/index.wxml | 3 + vant/dist/sidebar/index.wxss | 1 + vant/dist/skeleton/index.d.ts | 1 + vant/dist/skeleton/index.js | 46 + vant/dist/skeleton/index.json | 4 + vant/dist/skeleton/index.wxml | 29 + vant/dist/skeleton/index.wxss | 1 + vant/dist/slider/index.d.ts | 1 + vant/dist/slider/index.js | 107 + vant/dist/slider/index.json | 3 + vant/dist/slider/index.wxml | 30 + vant/dist/slider/index.wxs | 14 + vant/dist/slider/index.wxss | 1 + vant/dist/stepper/index.d.ts | 1 + vant/dist/stepper/index.js | 194 + vant/dist/stepper/index.json | 3 + vant/dist/stepper/index.wxml | 42 + vant/dist/stepper/index.wxs | 22 + vant/dist/stepper/index.wxss | 154 + vant/dist/steps/index.d.ts | 1 + vant/dist/steps/index.js | 33 + vant/dist/steps/index.json | 6 + vant/dist/steps/index.wxml | 54 + vant/dist/steps/index.wxss | 1 + vant/dist/sticky/index.d.ts | 1 + vant/dist/sticky/index.js | 113 + vant/dist/sticky/index.json | 3 + vant/dist/sticky/index.wxml | 8 + vant/dist/sticky/index.wxs | 25 + vant/dist/sticky/index.wxss | 1 + vant/dist/submit-bar/index.d.ts | 1 + vant/dist/submit-bar/index.js | 57 + vant/dist/submit-bar/index.json | 7 + vant/dist/submit-bar/index.wxml | 44 + vant/dist/submit-bar/index.wxss | 1 + vant/dist/swipe-cell/index.d.ts | 1 + vant/dist/swipe-cell/index.js | 132 + vant/dist/swipe-cell/index.json | 3 + vant/dist/swipe-cell/index.wxml | 20 + vant/dist/swipe-cell/index.wxss | 1 + vant/dist/switch/index.d.ts | 1 + vant/dist/switch/index.js | 36 + vant/dist/switch/index.json | 6 + vant/dist/switch/index.wxml | 16 + vant/dist/switch/index.wxs | 26 + vant/dist/switch/index.wxss | 1 + vant/dist/tab/index.d.ts | 1 + vant/dist/tab/index.js | 56 + vant/dist/tab/index.json | 3 + vant/dist/tab/index.wxml | 8 + vant/dist/tab/index.wxss | 1 + vant/dist/tabbar-item/index.d.ts | 1 + vant/dist/tabbar-item/index.js | 56 + vant/dist/tabbar-item/index.json | 7 + vant/dist/tabbar-item/index.wxml | 28 + vant/dist/tabbar-item/index.wxss | 46 + vant/dist/tabbar/index.d.ts | 1 + vant/dist/tabbar/index.js | 65 + vant/dist/tabbar/index.json | 3 + vant/dist/tabbar/index.wxml | 10 + vant/dist/tabbar/index.wxss | 1 + vant/dist/tabs/index.d.ts | 1 + vant/dist/tabs/index.js | 271 + vant/dist/tabs/index.json | 7 + vant/dist/tabs/index.wxml | 63 + vant/dist/tabs/index.wxs | 82 + vant/dist/tabs/index.wxss | 1 + vant/dist/tag/index.d.ts | 1 + vant/dist/tag/index.js | 21 + vant/dist/tag/index.json | 6 + vant/dist/tag/index.wxml | 15 + vant/dist/tag/index.wxs | 13 + vant/dist/tag/index.wxss | 1 + vant/dist/toast/index.d.ts | 1 + vant/dist/toast/index.js | 29 + vant/dist/toast/index.json | 9 + vant/dist/toast/index.wxml | 33 + vant/dist/toast/index.wxss | 1 + vant/dist/toast/toast.d.ts | 68 + vant/dist/toast/toast.js | 70 + vant/dist/transition/index.d.ts | 1 + vant/dist/transition/index.js | 13 + vant/dist/transition/index.json | 3 + vant/dist/transition/index.wxml | 10 + vant/dist/transition/index.wxs | 17 + vant/dist/transition/index.wxss | 1 + vant/dist/tree-select/index.d.ts | 1 + vant/dist/tree-select/index.js | 68 + vant/dist/tree-select/index.json | 8 + vant/dist/tree-select/index.wxml | 41 + vant/dist/tree-select/index.wxs | 12 + vant/dist/tree-select/index.wxss | 1 + vant/dist/uploader/index.d.ts | 1 + vant/dist/uploader/index.js | 201 + vant/dist/uploader/index.json | 7 + vant/dist/uploader/index.wxml | 83 + vant/dist/uploader/index.wxs | 14 + vant/dist/uploader/index.wxss | 1 + vant/dist/uploader/shared.d.ts | 28 + vant/dist/uploader/shared.js | 30 + vant/dist/uploader/utils.d.ts | 31 + vant/dist/uploader/utils.js | 122 + vant/dist/wxs/add-unit.wxs | 12 + vant/dist/wxs/array.wxs | 5 + vant/dist/wxs/bem.wxs | 39 + vant/dist/wxs/memoize.wxs | 55 + vant/dist/wxs/object.wxs | 13 + vant/dist/wxs/style.wxs | 32 + vant/dist/wxs/utils.wxs | 10 + 717 files changed, 50652 insertions(+) create mode 100644 .eslintrc.js create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 images/home-on.png create mode 100644 images/home.png create mode 100644 images/ic_address_icon.png create mode 100644 images/ic_audio_play.png create mode 100644 images/ic_audio_playing.png create mode 100644 images/ic_audio_rewind.png create mode 100644 images/ic_audio_speed.png create mode 100644 images/ic_call_phone_icon.png create mode 100644 images/ic_code_icon.png create mode 100644 images/ic_column_icon.png create mode 100644 images/ic_corner_mark_bg.png create mode 100644 images/ic_email_icon.png create mode 100644 images/ic_empty_data.png create mode 100644 images/ic_empty_desc.png create mode 100644 images/ic_empty_map.png create mode 100644 images/ic_empty_text.png create mode 100644 images/ic_empty_voice.png create mode 100644 images/ic_hot_number_bg.png create mode 100644 images/ic_phone_icon.png create mode 100644 images/ic_record_start.png create mode 100644 images/ic_share_icon.png create mode 100644 images/ic_share_img.png create mode 100644 images/ic_squareness_del.png create mode 100644 images/ic_user_default.png create mode 100644 images/ic_voice_record.gif create mode 100644 images/ic_wechart_icon.png create mode 100644 images/law-on.png create mode 100644 images/law.png create mode 100644 images/my-on.png create mode 100644 images/my.png create mode 100644 images/neighbor-on.png create mode 100644 images/neighbor.png create mode 100644 images/share_count.png create mode 100644 images/title-bg.png create mode 100644 images/view-count.png create mode 100755 packagecard/cardDetail/cardDetail.js create mode 100644 packagecard/cardDetail/cardDetail.json create mode 100755 packagecard/cardDetail/cardDetail.wxml create mode 100755 packagecard/cardDetail/cardDetail.wxss create mode 100755 packagecard/cardList/cardList.js create mode 100644 packagecard/cardList/cardList.json create mode 100755 packagecard/cardList/cardList.wxml create mode 100755 packagecard/cardList/cardList.wxss create mode 100755 packagecard/common/corpperimg/cropperimg.js create mode 100644 packagecard/common/corpperimg/cropperimg.json create mode 100755 packagecard/common/corpperimg/cropperimg.wxml create mode 100755 packagecard/common/corpperimg/cropperimg.wxss create mode 100755 packagecard/moments/edit/momentedit.js create mode 100644 packagecard/moments/edit/momentedit.json create mode 100755 packagecard/moments/edit/momentedit.wxml create mode 100755 packagecard/moments/edit/momentedit.wxss create mode 100755 packagecard/moments/list/momentslist.js create mode 100644 packagecard/moments/list/momentslist.json create mode 100755 packagecard/moments/list/momentslist.wxml create mode 100755 packagecard/moments/list/momentslist.wxss create mode 100755 packagecard/moments/list/momentsshowlist.js create mode 100644 packagecard/moments/list/momentsshowlist.json create mode 100755 packagecard/moments/list/momentsshowlist.wxml create mode 100755 packagecard/moments/list/momentsshowlist.wxss create mode 100755 packagecard/moments/momentsdetail/momentsdetail.js create mode 100644 packagecard/moments/momentsdetail/momentsdetail.json create mode 100755 packagecard/moments/momentsdetail/momentsdetail.wxml create mode 100755 packagecard/moments/momentsdetail/momentsdetail.wxss create mode 100755 packagecard/moments/publish/momentpublish.js create mode 100644 packagecard/moments/publish/momentpublish.json create mode 100755 packagecard/moments/publish/momentpublish.wxml create mode 100755 packagecard/moments/publish/momentpublish.wxss create mode 100755 packagecard/moments/publish/momentpublishline.js create mode 100644 packagecard/moments/publish/momentpublishline.json create mode 100755 packagecard/moments/publish/momentpublishline.wxml create mode 100755 packagecard/moments/publish/momentpublishline.wxss create mode 100755 packagecard/moments/showlist/showlist.js create mode 100644 packagecard/moments/showlist/showlist.json create mode 100755 packagecard/moments/showlist/showlist.wxml create mode 100755 packagecard/moments/showlist/showlist.wxss create mode 100755 packagecard/sharePage/cardcode.js create mode 100644 packagecard/sharePage/cardcode.json create mode 100755 packagecard/sharePage/cardcode.wxml create mode 100755 packagecard/sharePage/cardcode.wxss create mode 100755 packagecard/sharePage/sharePage.js create mode 100644 packagecard/sharePage/sharePage.json create mode 100755 packagecard/sharePage/sharePage.wxml create mode 100755 packagecard/sharePage/sharePage.wxss create mode 100644 pages/card/cardDetail.js create mode 100644 pages/card/cardDetail.json create mode 100644 pages/card/cardDetail.wxml create mode 100644 pages/card/cardDetail.wxss create mode 100644 pages/card/cardList.js create mode 100644 pages/card/cardList.json create mode 100644 pages/card/cardList.wxml create mode 100644 pages/card/cardList.wxss create mode 100644 pages/center/case/caseHandle.js create mode 100644 pages/center/case/caseHandle.json create mode 100644 pages/center/case/caseHandle.wxml create mode 100644 pages/center/case/caseHandle.wxss create mode 100644 pages/center/case/caseList.js create mode 100644 pages/center/case/caseList.json create mode 100644 pages/center/case/caseList.wxml create mode 100644 pages/center/case/caseList.wxss create mode 100644 pages/center/case/caseLog.js create mode 100644 pages/center/case/caseLog.json create mode 100644 pages/center/case/caseLog.wxml create mode 100644 pages/center/case/caseLog.wxss create mode 100644 pages/center/center.js create mode 100644 pages/center/center.json create mode 100644 pages/center/center.wxml create mode 100644 pages/center/center.wxss create mode 100644 pages/center/contact.js create mode 100644 pages/center/contact.json create mode 100644 pages/center/contact.wxml create mode 100644 pages/center/contact.wxss create mode 100644 pages/center/contact/contactDetail.js create mode 100644 pages/center/contact/contactDetail.json create mode 100644 pages/center/contact/contactDetail.wxml create mode 100644 pages/center/contact/contactDetail.wxss create mode 100644 pages/checkIn/checkIn.js create mode 100644 pages/checkIn/checkIn.json create mode 100644 pages/checkIn/checkIn.wxml create mode 100644 pages/checkIn/checkIn.wxss create mode 100644 pages/checkIn/checkInDetail.js create mode 100644 pages/checkIn/checkInDetail.json create mode 100644 pages/checkIn/checkInDetail.wxml create mode 100644 pages/checkIn/checkInDetail.wxss create mode 100644 pages/columnlist/columnlist.js create mode 100644 pages/columnlist/columnlist.json create mode 100644 pages/columnlist/columnlist.wxml create mode 100644 pages/columnlist/columnlist.wxss create mode 100644 pages/community/changeCommunity.js create mode 100644 pages/community/changeCommunity.json create mode 100644 pages/community/changeCommunity.wxml create mode 100644 pages/community/changeCommunity.wxss create mode 100644 pages/community/join/joinDetail.js create mode 100644 pages/community/join/joinDetail.json create mode 100644 pages/community/join/joinDetail.wxml create mode 100644 pages/community/join/joinDetail.wxss create mode 100644 pages/community/join/select.js create mode 100644 pages/community/join/select.json create mode 100644 pages/community/join/select.wxml create mode 100644 pages/community/join/select.wxss create mode 100644 pages/community/joinCommunity.js create mode 100644 pages/community/joinCommunity.json create mode 100644 pages/community/joinCommunity.wxml create mode 100644 pages/community/joinCommunity.wxss create mode 100644 pages/community/selectCommunity.js create mode 100644 pages/community/selectCommunity.json create mode 100644 pages/community/selectCommunity.wxml create mode 100644 pages/community/selectCommunity.wxss create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/law/law.js create mode 100644 pages/law/law.json create mode 100644 pages/law/law.wxml create mode 100644 pages/law/law.wxss create mode 100644 pages/mine/myCard/myCard.js create mode 100644 pages/mine/myCard/myCard.json create mode 100644 pages/mine/myCard/myCard.wxml create mode 100644 pages/mine/myCard/myCard.wxss create mode 100644 pages/mine/myCardDetail/myCardDetail.js create mode 100644 pages/mine/myCardDetail/myCardDetail.json create mode 100644 pages/mine/myCardDetail/myCardDetail.wxml create mode 100644 pages/mine/myCardDetail/myCardDetail.wxss create mode 100644 pages/mine/otherCard/othercarddetail.js create mode 100644 pages/mine/otherCard/othercarddetail.json create mode 100644 pages/mine/otherCard/othercarddetail.wxml create mode 100644 pages/mine/otherCard/othercarddetail.wxss create mode 100644 pages/neighbor/circle/circleDetail.js create mode 100644 pages/neighbor/circle/circleDetail.json create mode 100644 pages/neighbor/circle/circleDetail.wxml create mode 100644 pages/neighbor/circle/circleDetail.wxss create mode 100644 pages/neighbor/circle/circleList.js create mode 100644 pages/neighbor/circle/circleList.json create mode 100644 pages/neighbor/circle/circleList.wxml create mode 100644 pages/neighbor/circle/circleList.wxss create mode 100644 pages/neighbor/circle/new.js create mode 100644 pages/neighbor/circle/new.json create mode 100644 pages/neighbor/circle/new.wxml create mode 100644 pages/neighbor/circle/new.wxss create mode 100644 pages/neighbor/help/helpDetail.js create mode 100644 pages/neighbor/help/helpDetail.json create mode 100644 pages/neighbor/help/helpDetail.wxml create mode 100644 pages/neighbor/help/helpDetail.wxss create mode 100644 pages/neighbor/help/helpList.js create mode 100644 pages/neighbor/help/helpList.json create mode 100644 pages/neighbor/help/helpList.wxml create mode 100644 pages/neighbor/help/helpList.wxss create mode 100644 pages/neighbor/help/new.js create mode 100644 pages/neighbor/help/new.json create mode 100644 pages/neighbor/help/new.wxml create mode 100644 pages/neighbor/help/new.wxss create mode 100644 pages/neighbor/neighbor.js create mode 100644 pages/neighbor/neighbor.json create mode 100644 pages/neighbor/neighbor.wxml create mode 100644 pages/neighbor/neighbor.wxss create mode 100644 pages/news/newsDetail.js create mode 100644 pages/news/newsDetail.json create mode 100644 pages/news/newsDetail.wxml create mode 100644 pages/news/newsDetail.wxss create mode 100644 pages/news/newsList.js create mode 100644 pages/news/newsList.json create mode 100644 pages/news/newsList.wxml create mode 100644 pages/news/newsList.wxss create mode 100644 pages/report/report.js create mode 100644 pages/report/report.json create mode 100644 pages/report/report.wxml create mode 100644 pages/report/report.wxss create mode 100644 pages/serve/newsList.js create mode 100644 pages/serve/newsList.json create mode 100644 pages/serve/newsList.wxml create mode 100644 pages/serve/newsList.wxss create mode 100644 pages/serve/orgDetail.js create mode 100644 pages/serve/orgDetail.json create mode 100644 pages/serve/orgDetail.wxml create mode 100644 pages/serve/orgDetail.wxss create mode 100644 pages/serve/orgList.js create mode 100644 pages/serve/orgList.json create mode 100644 pages/serve/orgList.wxml create mode 100644 pages/serve/orgList.wxss create mode 100644 pages/serve/serve.js create mode 100644 pages/serve/serve.json create mode 100644 pages/serve/serve.wxml create mode 100644 pages/serve/serve.wxss create mode 100644 pages/serve/serviceDetail.js create mode 100644 pages/serve/serviceDetail.json create mode 100644 pages/serve/serviceDetail.wxml create mode 100644 pages/serve/serviceDetail.wxss create mode 100644 pages/serve/settle.js create mode 100644 pages/serve/settle.json create mode 100644 pages/serve/settle.wxml create mode 100644 pages/serve/settle.wxss create mode 100644 pages/talk/myTalk.js create mode 100644 pages/talk/myTalk.json create mode 100644 pages/talk/myTalk.wxml create mode 100644 pages/talk/myTalk.wxss create mode 100644 pages/talk/newTalk.js create mode 100644 pages/talk/newTalk.json create mode 100644 pages/talk/newTalk.wxml create mode 100644 pages/talk/newTalk.wxss create mode 100644 pages/talk/talk.js create mode 100644 pages/talk/talk.json create mode 100644 pages/talk/talk.wxml create mode 100644 pages/talk/talk.wxss create mode 100644 pages/talk/talkDetail.js create mode 100644 pages/talk/talkDetail.json create mode 100644 pages/talk/talkDetail.wxml create mode 100644 pages/talk/talkDetail.wxss create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 sitemap.json create mode 100644 utils/WSCoordinate.js create mode 100644 utils/api.js create mode 100644 utils/md5.js create mode 100644 utils/request.js create mode 100644 utils/restAjax.js create mode 100644 utils/util.js create mode 100755 vant/dist/action-sheet/index.d.ts create mode 100755 vant/dist/action-sheet/index.js create mode 100755 vant/dist/action-sheet/index.json create mode 100755 vant/dist/action-sheet/index.wxml create mode 100755 vant/dist/action-sheet/index.wxss create mode 100755 vant/dist/area/index.d.ts create mode 100755 vant/dist/area/index.js create mode 100755 vant/dist/area/index.json create mode 100755 vant/dist/area/index.wxml create mode 100755 vant/dist/area/index.wxs create mode 100755 vant/dist/area/index.wxss create mode 100755 vant/dist/button/index.d.ts create mode 100755 vant/dist/button/index.js create mode 100755 vant/dist/button/index.json create mode 100755 vant/dist/button/index.wxml create mode 100755 vant/dist/button/index.wxs create mode 100755 vant/dist/button/index.wxss create mode 100755 vant/dist/calendar/calendar.wxml create mode 100755 vant/dist/calendar/components/header/index.d.ts create mode 100755 vant/dist/calendar/components/header/index.js create mode 100755 vant/dist/calendar/components/header/index.json create mode 100755 vant/dist/calendar/components/header/index.wxml create mode 100755 vant/dist/calendar/components/header/index.wxss create mode 100755 vant/dist/calendar/components/month/index.d.ts create mode 100755 vant/dist/calendar/components/month/index.js create mode 100755 vant/dist/calendar/components/month/index.json create mode 100755 vant/dist/calendar/components/month/index.wxml create mode 100755 vant/dist/calendar/components/month/index.wxs create mode 100755 vant/dist/calendar/components/month/index.wxss create mode 100755 vant/dist/calendar/index.d.ts create mode 100755 vant/dist/calendar/index.js create mode 100755 vant/dist/calendar/index.json create mode 100755 vant/dist/calendar/index.wxml create mode 100755 vant/dist/calendar/index.wxs create mode 100755 vant/dist/calendar/index.wxss create mode 100755 vant/dist/calendar/utils.d.ts create mode 100755 vant/dist/calendar/utils.js create mode 100755 vant/dist/calendar/utils.wxs create mode 100755 vant/dist/card/index.d.ts create mode 100755 vant/dist/card/index.js create mode 100755 vant/dist/card/index.json create mode 100755 vant/dist/card/index.wxml create mode 100755 vant/dist/card/index.wxss create mode 100755 vant/dist/cell-group/index.d.ts create mode 100755 vant/dist/cell-group/index.js create mode 100755 vant/dist/cell-group/index.json create mode 100755 vant/dist/cell-group/index.wxml create mode 100755 vant/dist/cell-group/index.wxss create mode 100755 vant/dist/cell/index.d.ts create mode 100755 vant/dist/cell/index.js create mode 100755 vant/dist/cell/index.json create mode 100755 vant/dist/cell/index.wxml create mode 100755 vant/dist/cell/index.wxs create mode 100755 vant/dist/cell/index.wxss create mode 100755 vant/dist/checkbox-group/index.d.ts create mode 100755 vant/dist/checkbox-group/index.js create mode 100755 vant/dist/checkbox-group/index.json create mode 100755 vant/dist/checkbox-group/index.wxml create mode 100755 vant/dist/checkbox-group/index.wxss create mode 100755 vant/dist/checkbox/index.d.ts create mode 100755 vant/dist/checkbox/index.js create mode 100755 vant/dist/checkbox/index.json create mode 100755 vant/dist/checkbox/index.wxml create mode 100755 vant/dist/checkbox/index.wxs create mode 100755 vant/dist/checkbox/index.wxss create mode 100755 vant/dist/circle/canvas.d.ts create mode 100755 vant/dist/circle/canvas.js create mode 100755 vant/dist/circle/index.d.ts create mode 100755 vant/dist/circle/index.js create mode 100755 vant/dist/circle/index.json create mode 100755 vant/dist/circle/index.wxml create mode 100755 vant/dist/circle/index.wxss create mode 100755 vant/dist/col/index.d.ts create mode 100755 vant/dist/col/index.js create mode 100755 vant/dist/col/index.json create mode 100755 vant/dist/col/index.wxml create mode 100755 vant/dist/col/index.wxs create mode 100755 vant/dist/col/index.wxss create mode 100755 vant/dist/collapse-item/animate.d.ts create mode 100755 vant/dist/collapse-item/animate.js create mode 100755 vant/dist/collapse-item/index.d.ts create mode 100755 vant/dist/collapse-item/index.js create mode 100755 vant/dist/collapse-item/index.json create mode 100755 vant/dist/collapse-item/index.wxml create mode 100755 vant/dist/collapse-item/index.wxss create mode 100755 vant/dist/collapse/index.d.ts create mode 100755 vant/dist/collapse/index.js create mode 100755 vant/dist/collapse/index.json create mode 100755 vant/dist/collapse/index.wxml create mode 100755 vant/dist/collapse/index.wxss create mode 100755 vant/dist/common/color.d.ts create mode 100755 vant/dist/common/color.js create mode 100755 vant/dist/common/component.d.ts create mode 100755 vant/dist/common/component.js create mode 100755 vant/dist/common/index.wxss create mode 100755 vant/dist/common/relation.d.ts create mode 100755 vant/dist/common/relation.js create mode 100755 vant/dist/common/style/clearfix.wxss create mode 100755 vant/dist/common/style/ellipsis.wxss create mode 100755 vant/dist/common/style/hairline.wxss create mode 100755 vant/dist/common/style/mixins/clearfix.wxss create mode 100755 vant/dist/common/style/mixins/ellipsis.wxss create mode 100755 vant/dist/common/style/mixins/hairline.wxss create mode 100755 vant/dist/common/style/theme.wxss create mode 100755 vant/dist/common/style/var.wxss create mode 100755 vant/dist/common/utils.d.ts create mode 100755 vant/dist/common/utils.js create mode 100755 vant/dist/common/validator.d.ts create mode 100755 vant/dist/common/validator.js create mode 100755 vant/dist/common/version.d.ts create mode 100755 vant/dist/common/version.js create mode 100755 vant/dist/count-down/index.d.ts create mode 100755 vant/dist/count-down/index.js create mode 100755 vant/dist/count-down/index.json create mode 100755 vant/dist/count-down/index.wxml create mode 100755 vant/dist/count-down/index.wxss create mode 100755 vant/dist/count-down/utils.d.ts create mode 100755 vant/dist/count-down/utils.js create mode 100755 vant/dist/cropper/index.js create mode 100755 vant/dist/cropper/index.json create mode 100755 vant/dist/cropper/index.wxml create mode 100755 vant/dist/cropper/index.wxss create mode 100755 vant/dist/datetime-picker/index.d.ts create mode 100755 vant/dist/datetime-picker/index.js create mode 100755 vant/dist/datetime-picker/index.json create mode 100755 vant/dist/datetime-picker/index.wxml create mode 100755 vant/dist/datetime-picker/index.wxss create mode 100755 vant/dist/definitions/index.d.ts create mode 100755 vant/dist/definitions/index.js create mode 100755 vant/dist/dialog/dialog.d.ts create mode 100755 vant/dist/dialog/dialog.js create mode 100755 vant/dist/dialog/index.d.ts create mode 100755 vant/dist/dialog/index.js create mode 100755 vant/dist/dialog/index.json create mode 100755 vant/dist/dialog/index.wxml create mode 100755 vant/dist/dialog/index.wxss create mode 100755 vant/dist/divider/index.d.ts create mode 100755 vant/dist/divider/index.js create mode 100755 vant/dist/divider/index.json create mode 100755 vant/dist/divider/index.wxml create mode 100755 vant/dist/divider/index.wxs create mode 100755 vant/dist/divider/index.wxss create mode 100755 vant/dist/dropdown-item/index.d.ts create mode 100755 vant/dist/dropdown-item/index.js create mode 100755 vant/dist/dropdown-item/index.json create mode 100755 vant/dist/dropdown-item/index.wxml create mode 100755 vant/dist/dropdown-item/index.wxss create mode 100755 vant/dist/dropdown-item/shared.d.ts create mode 100755 vant/dist/dropdown-item/shared.js create mode 100755 vant/dist/dropdown-menu/index.d.ts create mode 100755 vant/dist/dropdown-menu/index.js create mode 100755 vant/dist/dropdown-menu/index.json create mode 100755 vant/dist/dropdown-menu/index.wxml create mode 100755 vant/dist/dropdown-menu/index.wxs create mode 100755 vant/dist/dropdown-menu/index.wxss create mode 100755 vant/dist/empty/index.d.ts create mode 100755 vant/dist/empty/index.js create mode 100755 vant/dist/empty/index.json create mode 100755 vant/dist/empty/index.wxml create mode 100755 vant/dist/empty/index.wxs create mode 100755 vant/dist/empty/index.wxss create mode 100755 vant/dist/field/index.d.ts create mode 100755 vant/dist/field/index.js create mode 100755 vant/dist/field/index.json create mode 100755 vant/dist/field/index.wxml create mode 100755 vant/dist/field/index.wxs create mode 100755 vant/dist/field/index.wxss create mode 100755 vant/dist/field/input.wxml create mode 100755 vant/dist/field/props.d.ts create mode 100755 vant/dist/field/props.js create mode 100755 vant/dist/field/textarea.wxml create mode 100755 vant/dist/goods-action-button/index.d.ts create mode 100755 vant/dist/goods-action-button/index.js create mode 100755 vant/dist/goods-action-button/index.json create mode 100755 vant/dist/goods-action-button/index.wxml create mode 100755 vant/dist/goods-action-button/index.wxss create mode 100755 vant/dist/goods-action-icon/index.d.ts create mode 100755 vant/dist/goods-action-icon/index.js create mode 100755 vant/dist/goods-action-icon/index.json create mode 100755 vant/dist/goods-action-icon/index.wxml create mode 100755 vant/dist/goods-action-icon/index.wxss create mode 100755 vant/dist/goods-action/index.d.ts create mode 100755 vant/dist/goods-action/index.js create mode 100755 vant/dist/goods-action/index.json create mode 100755 vant/dist/goods-action/index.wxml create mode 100755 vant/dist/goods-action/index.wxss create mode 100755 vant/dist/grid-item/index.d.ts create mode 100755 vant/dist/grid-item/index.js create mode 100755 vant/dist/grid-item/index.json create mode 100755 vant/dist/grid-item/index.wxml create mode 100755 vant/dist/grid-item/index.wxs create mode 100755 vant/dist/grid-item/index.wxss create mode 100755 vant/dist/grid/index.d.ts create mode 100755 vant/dist/grid/index.js create mode 100755 vant/dist/grid/index.json create mode 100755 vant/dist/grid/index.wxml create mode 100755 vant/dist/grid/index.wxs create mode 100755 vant/dist/grid/index.wxss create mode 100755 vant/dist/icon/index.d.ts create mode 100755 vant/dist/icon/index.js create mode 100755 vant/dist/icon/index.json create mode 100755 vant/dist/icon/index.wxml create mode 100755 vant/dist/icon/index.wxs create mode 100755 vant/dist/icon/index.wxss create mode 100755 vant/dist/image/index.d.ts create mode 100755 vant/dist/image/index.js create mode 100755 vant/dist/image/index.json create mode 100755 vant/dist/image/index.wxml create mode 100755 vant/dist/image/index.wxs create mode 100755 vant/dist/image/index.wxss create mode 100755 vant/dist/index-anchor/index.d.ts create mode 100755 vant/dist/index-anchor/index.js create mode 100755 vant/dist/index-anchor/index.json create mode 100755 vant/dist/index-anchor/index.wxml create mode 100755 vant/dist/index-anchor/index.wxss create mode 100755 vant/dist/index-bar/index.d.ts create mode 100755 vant/dist/index-bar/index.js create mode 100755 vant/dist/index-bar/index.json create mode 100755 vant/dist/index-bar/index.wxml create mode 100755 vant/dist/index-bar/index.wxss create mode 100755 vant/dist/info/index.d.ts create mode 100755 vant/dist/info/index.js create mode 100755 vant/dist/info/index.json create mode 100755 vant/dist/info/index.wxml create mode 100755 vant/dist/info/index.wxss create mode 100755 vant/dist/loading/index.d.ts create mode 100755 vant/dist/loading/index.js create mode 100755 vant/dist/loading/index.json create mode 100755 vant/dist/loading/index.wxml create mode 100755 vant/dist/loading/index.wxs create mode 100755 vant/dist/loading/index.wxss create mode 100755 vant/dist/mixins/basic.d.ts create mode 100755 vant/dist/mixins/basic.js create mode 100755 vant/dist/mixins/button.d.ts create mode 100755 vant/dist/mixins/button.js create mode 100755 vant/dist/mixins/link.d.ts create mode 100755 vant/dist/mixins/link.js create mode 100755 vant/dist/mixins/open-type.d.ts create mode 100755 vant/dist/mixins/open-type.js create mode 100755 vant/dist/mixins/page-scroll.d.ts create mode 100755 vant/dist/mixins/page-scroll.js create mode 100755 vant/dist/mixins/touch.d.ts create mode 100755 vant/dist/mixins/touch.js create mode 100755 vant/dist/mixins/transition.d.ts create mode 100755 vant/dist/mixins/transition.js create mode 100755 vant/dist/nav-bar/index.d.ts create mode 100755 vant/dist/nav-bar/index.js create mode 100755 vant/dist/nav-bar/index.json create mode 100755 vant/dist/nav-bar/index.wxml create mode 100755 vant/dist/nav-bar/index.wxs create mode 100755 vant/dist/nav-bar/index.wxss create mode 100755 vant/dist/notice-bar/index.d.ts create mode 100755 vant/dist/notice-bar/index.js create mode 100755 vant/dist/notice-bar/index.json create mode 100755 vant/dist/notice-bar/index.wxml create mode 100755 vant/dist/notice-bar/index.wxs create mode 100755 vant/dist/notice-bar/index.wxss create mode 100755 vant/dist/notify/index.d.ts create mode 100755 vant/dist/notify/index.js create mode 100755 vant/dist/notify/index.json create mode 100755 vant/dist/notify/index.wxml create mode 100755 vant/dist/notify/index.wxs create mode 100755 vant/dist/notify/index.wxss create mode 100755 vant/dist/notify/notify.d.ts create mode 100755 vant/dist/notify/notify.js create mode 100755 vant/dist/overlay/index.d.ts create mode 100755 vant/dist/overlay/index.js create mode 100755 vant/dist/overlay/index.json create mode 100755 vant/dist/overlay/index.wxml create mode 100755 vant/dist/overlay/index.wxss create mode 100755 vant/dist/panel/index.d.ts create mode 100755 vant/dist/panel/index.js create mode 100755 vant/dist/panel/index.json create mode 100755 vant/dist/panel/index.wxml create mode 100755 vant/dist/panel/index.wxss create mode 100755 vant/dist/picker-column/index.d.ts create mode 100755 vant/dist/picker-column/index.js create mode 100755 vant/dist/picker-column/index.json create mode 100755 vant/dist/picker-column/index.wxml create mode 100755 vant/dist/picker-column/index.wxs create mode 100755 vant/dist/picker-column/index.wxss create mode 100755 vant/dist/picker/index.d.ts create mode 100755 vant/dist/picker/index.js create mode 100755 vant/dist/picker/index.json create mode 100755 vant/dist/picker/index.wxml create mode 100755 vant/dist/picker/index.wxs create mode 100755 vant/dist/picker/index.wxss create mode 100755 vant/dist/picker/shared.d.ts create mode 100755 vant/dist/picker/shared.js create mode 100755 vant/dist/picker/toolbar.wxml create mode 100755 vant/dist/popup/index.d.ts create mode 100755 vant/dist/popup/index.js create mode 100755 vant/dist/popup/index.json create mode 100755 vant/dist/popup/index.wxml create mode 100755 vant/dist/popup/index.wxs create mode 100755 vant/dist/popup/index.wxss create mode 100755 vant/dist/progress/index.d.ts create mode 100755 vant/dist/progress/index.js create mode 100755 vant/dist/progress/index.json create mode 100755 vant/dist/progress/index.wxml create mode 100755 vant/dist/progress/index.wxs create mode 100755 vant/dist/progress/index.wxss create mode 100755 vant/dist/radio-group/index.d.ts create mode 100755 vant/dist/radio-group/index.js create mode 100755 vant/dist/radio-group/index.json create mode 100755 vant/dist/radio-group/index.wxml create mode 100755 vant/dist/radio-group/index.wxss create mode 100755 vant/dist/radio/index.d.ts create mode 100755 vant/dist/radio/index.js create mode 100755 vant/dist/radio/index.json create mode 100755 vant/dist/radio/index.wxml create mode 100755 vant/dist/radio/index.wxss create mode 100755 vant/dist/rate/index.d.ts create mode 100755 vant/dist/rate/index.js create mode 100755 vant/dist/rate/index.json create mode 100755 vant/dist/rate/index.wxml create mode 100755 vant/dist/rate/index.wxss create mode 100755 vant/dist/row/index.d.ts create mode 100755 vant/dist/row/index.js create mode 100755 vant/dist/row/index.json create mode 100755 vant/dist/row/index.wxml create mode 100755 vant/dist/row/index.wxs create mode 100755 vant/dist/row/index.wxss create mode 100755 vant/dist/search/index.d.ts create mode 100755 vant/dist/search/index.js create mode 100755 vant/dist/search/index.json create mode 100755 vant/dist/search/index.wxml create mode 100755 vant/dist/search/index.wxss create mode 100755 vant/dist/share-sheet/index.d.ts create mode 100755 vant/dist/share-sheet/index.js create mode 100755 vant/dist/share-sheet/index.json create mode 100755 vant/dist/share-sheet/index.wxml create mode 100755 vant/dist/share-sheet/index.wxs create mode 100755 vant/dist/share-sheet/index.wxss create mode 100755 vant/dist/share-sheet/options.d.ts create mode 100755 vant/dist/share-sheet/options.js create mode 100755 vant/dist/share-sheet/options.json create mode 100755 vant/dist/share-sheet/options.wxml create mode 100755 vant/dist/share-sheet/options.wxs create mode 100755 vant/dist/share-sheet/options.wxss create mode 100755 vant/dist/sidebar-item/index.d.ts create mode 100755 vant/dist/sidebar-item/index.js create mode 100755 vant/dist/sidebar-item/index.json create mode 100755 vant/dist/sidebar-item/index.wxml create mode 100755 vant/dist/sidebar-item/index.wxss create mode 100755 vant/dist/sidebar/index.d.ts create mode 100755 vant/dist/sidebar/index.js create mode 100755 vant/dist/sidebar/index.json create mode 100755 vant/dist/sidebar/index.wxml create mode 100755 vant/dist/sidebar/index.wxss create mode 100755 vant/dist/skeleton/index.d.ts create mode 100755 vant/dist/skeleton/index.js create mode 100755 vant/dist/skeleton/index.json create mode 100755 vant/dist/skeleton/index.wxml create mode 100755 vant/dist/skeleton/index.wxss create mode 100755 vant/dist/slider/index.d.ts create mode 100755 vant/dist/slider/index.js create mode 100755 vant/dist/slider/index.json create mode 100755 vant/dist/slider/index.wxml create mode 100755 vant/dist/slider/index.wxs create mode 100755 vant/dist/slider/index.wxss create mode 100755 vant/dist/stepper/index.d.ts create mode 100755 vant/dist/stepper/index.js create mode 100755 vant/dist/stepper/index.json create mode 100755 vant/dist/stepper/index.wxml create mode 100755 vant/dist/stepper/index.wxs create mode 100755 vant/dist/stepper/index.wxss create mode 100755 vant/dist/steps/index.d.ts create mode 100755 vant/dist/steps/index.js create mode 100755 vant/dist/steps/index.json create mode 100755 vant/dist/steps/index.wxml create mode 100755 vant/dist/steps/index.wxss create mode 100755 vant/dist/sticky/index.d.ts create mode 100755 vant/dist/sticky/index.js create mode 100755 vant/dist/sticky/index.json create mode 100755 vant/dist/sticky/index.wxml create mode 100755 vant/dist/sticky/index.wxs create mode 100755 vant/dist/sticky/index.wxss create mode 100755 vant/dist/submit-bar/index.d.ts create mode 100755 vant/dist/submit-bar/index.js create mode 100755 vant/dist/submit-bar/index.json create mode 100755 vant/dist/submit-bar/index.wxml create mode 100755 vant/dist/submit-bar/index.wxss create mode 100755 vant/dist/swipe-cell/index.d.ts create mode 100755 vant/dist/swipe-cell/index.js create mode 100755 vant/dist/swipe-cell/index.json create mode 100755 vant/dist/swipe-cell/index.wxml create mode 100755 vant/dist/swipe-cell/index.wxss create mode 100755 vant/dist/switch/index.d.ts create mode 100755 vant/dist/switch/index.js create mode 100755 vant/dist/switch/index.json create mode 100755 vant/dist/switch/index.wxml create mode 100755 vant/dist/switch/index.wxs create mode 100755 vant/dist/switch/index.wxss create mode 100755 vant/dist/tab/index.d.ts create mode 100755 vant/dist/tab/index.js create mode 100755 vant/dist/tab/index.json create mode 100755 vant/dist/tab/index.wxml create mode 100755 vant/dist/tab/index.wxss create mode 100755 vant/dist/tabbar-item/index.d.ts create mode 100755 vant/dist/tabbar-item/index.js create mode 100755 vant/dist/tabbar-item/index.json create mode 100755 vant/dist/tabbar-item/index.wxml create mode 100755 vant/dist/tabbar-item/index.wxss create mode 100755 vant/dist/tabbar/index.d.ts create mode 100755 vant/dist/tabbar/index.js create mode 100755 vant/dist/tabbar/index.json create mode 100755 vant/dist/tabbar/index.wxml create mode 100755 vant/dist/tabbar/index.wxss create mode 100755 vant/dist/tabs/index.d.ts create mode 100755 vant/dist/tabs/index.js create mode 100755 vant/dist/tabs/index.json create mode 100755 vant/dist/tabs/index.wxml create mode 100755 vant/dist/tabs/index.wxs create mode 100755 vant/dist/tabs/index.wxss create mode 100755 vant/dist/tag/index.d.ts create mode 100755 vant/dist/tag/index.js create mode 100755 vant/dist/tag/index.json create mode 100755 vant/dist/tag/index.wxml create mode 100755 vant/dist/tag/index.wxs create mode 100755 vant/dist/tag/index.wxss create mode 100755 vant/dist/toast/index.d.ts create mode 100755 vant/dist/toast/index.js create mode 100755 vant/dist/toast/index.json create mode 100755 vant/dist/toast/index.wxml create mode 100755 vant/dist/toast/index.wxss create mode 100755 vant/dist/toast/toast.d.ts create mode 100755 vant/dist/toast/toast.js create mode 100755 vant/dist/transition/index.d.ts create mode 100755 vant/dist/transition/index.js create mode 100755 vant/dist/transition/index.json create mode 100755 vant/dist/transition/index.wxml create mode 100755 vant/dist/transition/index.wxs create mode 100755 vant/dist/transition/index.wxss create mode 100755 vant/dist/tree-select/index.d.ts create mode 100755 vant/dist/tree-select/index.js create mode 100755 vant/dist/tree-select/index.json create mode 100755 vant/dist/tree-select/index.wxml create mode 100755 vant/dist/tree-select/index.wxs create mode 100755 vant/dist/tree-select/index.wxss create mode 100755 vant/dist/uploader/index.d.ts create mode 100755 vant/dist/uploader/index.js create mode 100755 vant/dist/uploader/index.json create mode 100755 vant/dist/uploader/index.wxml create mode 100755 vant/dist/uploader/index.wxs create mode 100755 vant/dist/uploader/index.wxss create mode 100755 vant/dist/uploader/shared.d.ts create mode 100755 vant/dist/uploader/shared.js create mode 100755 vant/dist/uploader/utils.d.ts create mode 100755 vant/dist/uploader/utils.js create mode 100755 vant/dist/wxs/add-unit.wxs create mode 100755 vant/dist/wxs/array.wxs create mode 100755 vant/dist/wxs/bem.wxs create mode 100755 vant/dist/wxs/memoize.wxs create mode 100755 vant/dist/wxs/object.wxs create mode 100755 vant/dist/wxs/style.wxs create mode 100755 vant/dist/wxs/utils.wxs diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..115cc02 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,31 @@ +/* + * Eslint config file + * Documentation: https://eslint.org/docs/user-guide/configuring/ + * Install the Eslint extension before using this feature. + */ +module.exports = { + env: { + es6: true, + browser: true, + node: true, + }, + ecmaFeatures: { + modules: true, + }, + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + }, + globals: { + wx: true, + App: true, + Page: true, + getCurrentPages: true, + getApp: true, + Component: true, + requirePlugin: true, + requireMiniProgram: true, + }, + // extends: 'eslint:recommended', + rules: {}, +} diff --git a/app.js b/app.js new file mode 100644 index 0000000..155a395 --- /dev/null +++ b/app.js @@ -0,0 +1,51 @@ +// app.js +var restAjax = require('./utils/restAjax.js'); +var request = require('./utils/request.js'); +App({ + restAjax: restAjax, + http: request, + apis: restAjax.apis, + urls:request.apis, + baseUrls: restAjax.baseUrl, + onLaunch() { + this.globalData.windowHeight = wx.getSystemInfoSync().windowHeight + //设置状态栏 + wx.getSystemInfo({ + success: e => { + this.globalData.StatusBar = e.statusBarHeight; + let capsule = wx.getMenuButtonBoundingClientRect(); + if (capsule) { + this.globalData.Custom = capsule; + this.globalData.CustomBar = capsule.bottom + capsule.top - e.statusBarHeight; + } else { + this.globalData.CustomBar = e.statusBarHeight + 50; + } + } + }) + + }, + + // 获取用户信息 + getUserInfo: function () { + var self = this + app.restAjax.get(app.restAjax.path('{loginUrl}app/user/get-app-user', [app.personIntroUrl]), {}, { + headers: { + token: app.globalData.token + } + }, function (code, data) { + app.globalData.userInfo = data + }, function (code, data) { + app.dialog.msg(data.msg); + }); + }, + + globalData: { + userIcon: '', + userInfo: {}, + currentCommunity: { + communityId: '', + communityName: '切换社区' + }, + token: '' + } +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..e867308 --- /dev/null +++ b/app.json @@ -0,0 +1,102 @@ +{ + "style": "v2", + "sitemapLocation": "sitemap.json", + "pages": [ + "pages/index/index", + "pages/center/contact/contactDetail", + "pages/center/case/caseList", + "pages/center/case/caseLog", + "pages/center/case/caseHandle", + "pages/center/contact", + "pages/card/cardDetail", + "pages/card/cardList", + "pages/center/center", + "pages/neighbor/neighbor", + "pages/neighbor/circle/new", + "pages/neighbor/help/new", + "pages/neighbor/circle/circleList", + "pages/neighbor/circle/circleDetail", + "pages/neighbor/help/helpList", + "pages/neighbor/help/helpDetail", + "pages/law/law", + "pages/news/newsDetail", + "pages/news/newsList", + "pages/serve/orgDetail", + "pages/serve/serve", + "pages/serve/orgList", + "pages/serve/settle", + "pages/serve/newsList", + "pages/report/report", + "pages/talk/talkDetail", + "pages/talk/myTalk", + "pages/talk/talk", + "pages/talk/newTalk", + "pages/community/join/joinDetail", + "pages/community/join/select", + "pages/community/joinCommunity", + "pages/community/selectCommunity", + "pages/community/changeCommunity", + "pages/checkIn/checkInDetail", + "pages/checkIn/checkIn", + "pages/mine/myCard/myCard", + "pages/mine/myCardDetail/myCardDetail", + "pages/mine/otherCard/othercarddetail", + "pages/columnlist/columnlist", + "pages/serve/serviceDetail" + ], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#FF4949", + "navigationBarTitleText": "市域自治与互助", + "navigationBarTextStyle": "white" + }, + "tabBar": { + "color": "#000000", + "selectedColor": "#f55054", + "borderStyle": "black", + "list": [{ + "text": "城市社区", + "pagePath": "pages/index/index", + "iconPath": "images/home.png", + "selectedIconPath": "images/home-on.png" + }, + { + "text": "便民知识", + "pagePath": "pages/law/law", + "iconPath": "images/law.png", + "selectedIconPath": "images/law-on.png" + }, + { + "text": "热点推送", + "pagePath": "pages/neighbor/neighbor", + "iconPath": "images/neighbor.png", + "selectedIconPath": "images/neighbor-on.png" + }, + { + "text": "我的", + "pagePath": "pages/center/center", + "iconPath": "images/my.png", + "selectedIconPath": "images/my-on.png" + } + ] + }, + "subPackages": [{ + "root": "packagecard/", + "pages": [ + "cardList/cardList", + "cardDetail/cardDetail", + "moments/publish/momentpublish", + "moments/edit/momentedit", + "moments/list/momentslist", + "moments/publish/momentpublishline", + "sharePage/sharePage", + "moments/list/momentsshowlist", + "moments/momentsdetail/momentsdetail", + "moments/showlist/showlist", + "sharePage/cardcode", + "common/corpperimg/cropperimg" + ] + }] + + +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..449a061 --- /dev/null +++ b/app.wxss @@ -0,0 +1,10113 @@ +[is="vant/dist/icon/index"] { + align-items: center; + display: inline-flex; + justify-content: center; +} + +[is="vant/dist/loading/index"] { + font-size: 0; + line-height: 1; +} + +[is="vant/dist/tab/index"] { + flex-shrink: 0; + width: 100%; +} + +[is="vant/dist/tabbar-item/index"] { + flex: 1; +} + +page { + --red: #e54d42; + --orange: #f37b1d; + --yellow: #fbbd08; + --olive: #8dc63f; + --green: #39b54a; + --cyan: #1cbbb4; + --blue: #0054bd; + --purple: #6739b6; + --mauve: #9c26b0; + --pink: #e03997; + --brown: #a5673f; + --grey: #8799a3; + --black: #333; + --darkGray: #666; + --gray: #999; + --ghostWhite: #f1f1f1; + --white: #fff; + --depBlack: #000; + --redLight: #fadbd9; + --orangeLight: #fde6d2; + --yellowLight: #e6b980; + --oliveLight: #e8f4d9; + --greenLight: #d7f0db; + --cyanLight: #d2f1f0; + --blueLight: #cce6ff; + --purpleLight: #e1d7f0; + --mauveLight: #ebd4ef; + --pinkLight: #f9d7ea; + --brownLight: #ede1d9; + --greyLight: #e7ebed; + --gradualRed: linear-gradient(45deg, #f43f3b, #ec008c); + --gradualRed2: linear-gradient(85deg, #f08482, #ff4949); + --gradualRed3: linear-gradient(45deg, #f74e4b, #e90e0e); + --gradualOrange: linear-gradient(45deg, #ff9700, #ed1c24); + --gradualGreen: linear-gradient(45deg, #39b54a, #8dc63f); + --gradualPurple: linear-gradient(45deg, #9000ff, #5e00ff); + --gradualPink: linear-gradient(45deg, #ec008c, #6739b6); + --gradualBlue: linear-gradient(45deg, #0081ff, #1cbbb4); + --gradualWhite: linear-gradient(45deg, #fff, #f8f8f8); + --gradualGray: linear-gradient(85deg, #faf9f9, #f5f2f2); + --gradualYellow: linear-gradient(85deg, #f4dbb8, #e6b980); + --gradualYellow2: linear-gradient(0deg, #ffb957, #e6b980); + --ShadowSize: 6rpx 6rpx 8rpx; + --redShadow: rgba(204, 69, 59, .2); + --orangeShadow: rgba(217, 109, 26, .2); + --yellowShadow: rgba(224, 170, 7, .2); + --oliveShadow: rgba(124, 173, 55, .2); + --greenShadow: rgba(48, 156, 63, .2); + --cyanShadow: rgba(28, 187, 180, .2); + --blueShadow: rgba(0, 102, 204, .2); + --purpleShadow: rgba(88, 48, 156, .2); + --mauveShadow: rgba(133, 33, 150, .2); + --pinkShadow: rgba(199, 50, 134, .2); + --brownShadow: rgba(140, 88, 53, .2); + --greyShadow: rgba(114, 130, 138, .2); + --grayShadow: rgba(114, 130, 138, .2); + --blackShadow: rgba(26, 26, 26, .2); + background-color: var(--ghostWhite); + color: var(--black); + font-family: Helvetica Neue, Helvetica, sans-serif; + font-size: 28rpx; +} + +button, +image, +input, +label, +navigator, +scroll-view, +swiper, +textarea, +view { + box-sizing: border-box; +} + +.round { + border-radius: 5000rpx; +} + +.radius { + border-radius: 6rpx; +} + +image { + display: inline-block; + max-width: 100%; + position: relative; + z-index: 0; +} + +image.loading::before { + background-color: #f5f5f5; + content: ""; + display: block; + height: 100%; + position: absolute; + width: 100%; + z-index: -2; +} + +image.loading::after { + animation: cuIcon-spin 2s linear infinite; + bottom: 0; + color: #ccc; + content: "\e7f1"; + display: block; + font-family: cuIcon; + font-size: 32rpx; + height: 32rpx; + left: 0; + line-height: 32rpx; + margin: auto; + position: absolute; + right: 0; + top: 0; + width: 32rpx; + z-index: -1; +} + +.response { + width: 100%; +} + +checkbox, +radio, +switch { + position: relative; +} + +switch::after, +switch::before { + bottom: 0; + color: var(--white) !important; + content: "\e645"; + font-family: cuIcon; + font-size: 26rpx; + height: 26px; + left: 0rpx; + line-height: 26px; + margin: auto; + pointer-events: none; + position: absolute; + text-align: center; + top: 0; + transform: scale(0, 0); + transition: all .3s ease-in-out 0s; + width: 50%; + z-index: 9; +} + +switch::before { + content: "\e646"; + left: auto; + right: 0; +} + +switch.checked::after, +switch::before, +switch[checked]::after { + transform: scale(1, 1); +} + +switch.checked::before, +switch[checked]::before { + transform: scale(0, 0); +} + +checkbox::before, +radio::before { + color: var(--white) !important; + content: "\e645"; + font-family: cuIcon; + font-size: 32rpx; + line-height: 16px; + margin-top: -8px; + pointer-events: none; + position: absolute; + right: 5px; + top: 50%; + transform: scale(1, 1); + transition: all .3s ease-in-out 0s; + z-index: 9; +} + +checkbox .wx-checkbox-input, +radio .wx-radio-input { + height: 20px; + margin: 0; + width: 20px; +} + +checkbox.round .wx-checkbox-input { + border-radius: 100rpx; +} + +switch .wx-switch-input { + border: none; + border-radius: 100rpx; + height: 26px; + margin: 0; + padding: 0 24px; + width: 48px; +} + +switch .wx-switch-input:not([class*="bg-"]) { + background: var(--grey) !important; +} + +switch .wx-switch-input::after { + border-radius: 100rpx; + bottom: 0rpx; + height: 26px; + left: 0rpx; + margin: auto; + position: absolute; + top: 0rpx; + transform: scale(.9, .9); + transition: all .1s ease-in-out 0s; + width: 26px; +} + +switch .wx-switch-input.wx-switch-input-checked::after { + box-shadow: none; + left: 22px; + margin: auto; + transform: scale(.9, .9); +} + +radio-group { + display: inline-block; +} + +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input::before { + border-radius: 10rpx; +} + +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +radio.radio::before, +switch .wx-switch-input::before { + display: none; +} + +radio.radio[checked]::after { + background-color: initial; + border: 8px solid var(--white) !important; + border-radius: 200rpx; + bottom: 0; + content: ""; + display: block; + height: 8px; + left: 0rpx; + margin: auto; + position: absolute; + right: 0; + top: 0rpx; + width: 8px; + z-index: 999; +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input { + background: var(--red) !important; + border-color: var(--red) !important; +} + +.switch-sex[checked] .wx-switch-input { + background: var(--blue) !important; + border-color: var(--blue) !important; +} + +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red[checked] .wx-switch-input { + border-color: var(--red) !important; +} + +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange[checked] .wx-switch-input { + border-color: var(--orange) !important; +} + +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow[checked] .wx-switch-input { + border-color: var(--yellow) !important; +} + +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive[checked] .wx-switch-input { + border-color: var(--olive) !important; +} + +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +switch.green[checked] .wx-switch-input { + border-color: var(--green) !important; +} + +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan[checked] .wx-switch-input { + border-color: var(--cyan) !important; +} + +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue[checked] .wx-switch-input { + border-color: var(--blue) !important; +} + +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple[checked] .wx-switch-input { + border-color: var(--purple) !important; +} + +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve[checked] .wx-switch-input { + border-color: var(--mauve) !important; +} + +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink[checked] .wx-switch-input { + border-color: var(--pink) !important; +} + +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown[checked] .wx-switch-input { + border-color: var(--brown) !important; +} + +checkbox.gray[checked] .wx-checkbox-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +radio.grey[checked] .wx-radio-input, +switch.gray[checked] .wx-switch-input, +switch.grey[checked] .wx-switch-input { + border-color: var(--grey) !important; +} + +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black[checked] .wx-switch-input { + border-color: var(--black) !important; +} + +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white[checked] .wx-switch-input { + border-color: var(--white) !important; +} + +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red[checked] .wx-switch-input.wx-switch-input-checked { + background-color: var(--red) !important; + color: var(--white) !important; +} + +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange[checked] .wx-switch-input { + background-color: var(--orange) !important; + color: var(--white) !important; +} + +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow[checked] .wx-switch-input { + background-color: var(--yellow) !important; + color: var(--black) !important; +} + +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive[checked] .wx-switch-input { + background-color: var(--olive) !important; + color: var(--white) !important; +} + +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input, +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input { + background-color: var(--green) !important; + color: var(--white) !important; +} + +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan[checked] .wx-switch-input { + background-color: var(--cyan) !important; + color: var(--white) !important; +} + +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue[checked] .wx-switch-input { + background-color: var(--blue) !important; + color: var(--white) !important; +} + +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple[checked] .wx-switch-input { + background-color: var(--purple) !important; + color: var(--white) !important; +} + +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve[checked] .wx-switch-input { + background-color: var(--mauve) !important; + color: var(--white) !important; +} + +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink[checked] .wx-switch-input { + background-color: var(--pink) !important; + color: var(--white) !important; +} + +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown[checked] .wx-switch-input { + background-color: var(--brown) !important; + color: var(--white) !important; +} + +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input, +switch.grey[checked] .wx-switch-input { + background-color: var(--grey) !important; + color: var(--white) !important; +} + +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +switch.gray[checked] .wx-switch-input { + background-color: #f0f0f0 !important; + color: var(--black) !important; +} + +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black[checked] .wx-switch-input { + background-color: var(--black) !important; + color: var(--white) !important; +} + +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white[checked] .wx-switch-input { + background-color: var(--white) !important; + color: var(--black) !important; +} + +.dashed, +.dashed-bottom, +.dashed-left, +.dashed-right, +.dashed-top, +.solid, +.solid-bottom, +.solid-left, +.solid-right, +.solid-top, +.solids, +.solids-bottom, +.solids-left, +.solids-right, +.solids-top { + position: relative; +} + +.dashed-bottom::after, +.dashed-left::after, +.dashed-right::after, +.dashed-top::after, +.dashed::after, +.solid-bottom::after, +.solid-left::after, +.solid-right::after, +.solid-top::after, +.solid::after, +.solids-bottom::after, +.solids-left::after, +.solids-right::after, +.solids-top::after, +.solids::after { + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; +} + +.solid::after { + border: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-top::after { + border-top: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-right::after { + border-right: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-bottom::after { + border-bottom: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-left::after { + border-left: 1rpx solid rgba(0, 0, 0, .1); +} + +.solids::after { + border: 8rpx solid #eee; +} + +.solids-top::after { + border-top: 8rpx solid #eee; +} + +.solids-right::after { + border-right: 8rpx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8rpx solid #eee; +} + +.solids-left::after { + border-left: 8rpx solid #eee; +} + +.dashed::after { + border: 1rpx dashed #ddd; +} + +.dashed-top::after { + border-top: 1rpx dashed #ddd; +} + +.dashed-right::after { + border-right: 1rpx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1rpx dashed #ddd; +} + +.dashed-left::after { + border-left: 1rpx dashed #ddd; +} + +.shadow[class*="white"] { + --ShadowSize: 0 1rpx 6rpx; +} + +.shadow-lg { + --ShadowSize: 0rpx 40rpx 100rpx 0rpx; +} + +.shadow-warp { + box-shadow: 0 0 10rpx rgba(0, 0, 0, .1); + position: relative; +} + +.shadow-warp:after, +.shadow-warp:before { + bottom: 30rpx; + box-shadow: 0 30rpx 20rpx rgba(0, 0, 0, .2); + content: ""; + left: 20rpx; + position: absolute; + top: 20rpx; + transform: rotate(-3deg); + width: 50%; + z-index: -1; +} + +.shadow-warp:after { + left: auto; + right: 20rpx; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + background: inherit; + border-radius: inherit; + content: ""; + display: block; + filter: blur(10rpx); + height: 100%; + left: 10rpx; + opacity: .4; + position: absolute; + top: 10rpx; + transform: scale(1, 1); + transform-origin: 0 0; + width: 100%; + z-index: -1; +} + +.cu-btn { + align-items: center; + border: 0rpx; + box-sizing: border-box; + display: inline-flex; + font-size: 28rpx; + height: 90rpx; + justify-content: center; + line-height: 1; + margin-left: 0; + margin-right: 0; + overflow: visible; + padding: 20rpx 30rpx; + position: relative; + text-align: center; + text-decoration: none; + transform: translate(0rpx, 0rpx); +} + +.cu-btn::after { + background-color: #f5f5f5; + display: none; +} + +.cu-btn:active, +.cu-btn:focus { + background-color: #f5f5f5; + color: #000; +} + +.cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} + +.cu-btn[class*="line"] { + background-color: initial; +} + +.cu-btn[class*="line"]::after { + border: 1rpx solid; + border-radius: 12rpx; + box-sizing: border-box; + content: " "; + display: block; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; + z-index: 1; +} + +.cu-btn.foot { + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, .1); + z-index: 1024; +} + +.cu-btn.foot, +.foot { + bottom: 0; + position: fixed; + width: 100%; +} + +.foot { + z-index: 10; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000rpx; +} + +.cu-btn.radius[class*="line"]::after { + border-radius: 10rpx; +} + +.cu-btn[class*="lines"]::after { + border: 6rpx solid; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + font-size: 20rpx; + height: 48rpx; + padding: 0 20rpx; +} + +.cu-btn.lg { + font-size: 32rpx; + height: 80rpx; + padding: 0 40rpx; +} + +.cu-btn.icon.sm { + height: 48rpx; + width: 48rpx; +} + +.cu-btn.icon { + border-radius: 500rpx; + height: 64rpx; + padding: 0; + width: 64rpx; +} + +button.icon.lg { + height: 80rpx; + width: 80rpx; +} + +.image-32 { + height: 64rpx; + width: 64rpx; +} + +.image-64 { + height: 128rpx; + width: 128rpx; +} + +.cu-btn.shadow-blur::before { + filter: blur(6rpx); + left: 4rpx; + opacity: .6; + top: 4rpx; +} + +.cu-btn.button-hover { + transform: translate(1rpx, 1rpx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + color: var(--white); + opacity: .6; +} + +.cu-tag { + align-items: center; + box-sizing: border-box; + display: inline-flex; + font-family: Helvetica Neue, Helvetica, sans-serif; + height: 48rpx; + justify-content: center; + padding: 0rpx 16rpx; + position: relative; + vertical-align: middle; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: var(--ghostWhite); +} + +.cu-tag[class*="line-"]::after { + border: 1rpx solid; + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; + z-index: 1; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12rpx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000rpx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10rpx; +} + +.cu-tag.sm { + font-size: 20rpx; + height: 32rpx; + padding: 0rpx 12rpx; +} + +.cu-tag.lg { + font-size: 24rpx; + height: 20px; + padding: 0rpx 12rpx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 0rpx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0rpx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0rpx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-bottom-left-radius: 6rpx; + border-top-left-radius: 6rpx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-bottom-right-radius: 12rpx; + border-top-right-radius: 12rpx; +} + +.cu-capsule.round .cu-tag:first-child { + border-bottom-left-radius: 200rpx; + border-top-left-radius: 200rpx; + text-indent: 4rpx; +} + +.cu-capsule.round .cu-tag:last-child, +.cu-capsule.round .cu-tag:last-child::after { + border-bottom-right-radius: 200rpx; + border-top-right-radius: 200rpx; + text-indent: -4rpx; +} + +.cu-tag.badge { + border-radius: 200rpx; + color: var(--white); + font-size: 20rpx; + height: 28rpx; + padding: 0rpx 10rpx; + position: absolute; + right: -10rpx; + top: -10rpx; +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag.badgegray { + border-radius: 200rpx; + color: var(--white); + font-size: 20rpx; + height: 28rpx; + padding: 0rpx 10rpx; + position: absolute; + right: -10rpx; + top: -10rpx; +} + +.cu-tag.badgegray:not([class*="bg-"]) { + background-color: #555; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + height: 16rpx; + padding: 0rpx; + right: -4rpx; + top: -4rpx; + width: 16rpx; +} + +.cu-tag[class*="cuIcon-"] { + height: 32rpx; + right: -4rpx; + top: -4rpx; + width: 32rpx; +} + +.cu-avatar { + align-items: center; + background-color: #ccc; + background-position: 50%; + background-size: cover; + color: var(--white); + display: inline-flex; + font-size: 1.5em; + font-variant: small-caps; + height: 64rpx; + justify-content: center; + margin: 0; + padding: 0; + position: relative; + text-align: center; + vertical-align: middle; + white-space: nowrap; + width: 64rpx; +} + +.cu-avatar.sm { + font-size: 1em; + height: 48rpx; + width: 48rpx; +} + +.cu-avatar.lg { + font-size: 2em; + height: 96rpx; + width: 96rpx; +} + +.cu-avatar.xl { + font-size: 2.5em; + height: 128rpx; + width: 128rpx; +} + +.cu-avatar .avatar-text { + font-size: .4em; +} + +.cu-avatar-group { + direction: rtl; + display: inline-block; + padding: 0 10rpx 0 40rpx; + unicode-bidi: bidi-override; +} + +.cu-avatar-group .cu-avatar { + border: 4rpx solid var(--ghostWhite); + margin-left: -30rpx; + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + border: 1rpx solid var(--ghostWhite); + margin-left: -20rpx; +} + +.cu-progress { + align-items: center; + background-color: #ebeef5; + display: inline-flex; + height: 28rpx; + overflow: hidden; + width: 100%; +} + +.cu-progress+text, +.cu-progress+view { + line-height: 1; +} + +.cu-progress.xs { + height: 10rpx; +} + +.cu-progress.sm { + height: 20rpx; +} + +.cu-progress view { + color: var(--white); + height: 100%; + justify-content: space-around; + justify-items: flex-end; + transition: width .6s ease; + width: 0; +} + +.cu-progress text, +.cu-progress view { + align-items: center; + display: flex; + font-size: 20rpx; +} + +.cu-progress text { + color: var(--black); + text-indent: 10rpx; +} + +.cu-progress.text-progress { + padding-right: 60rpx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, hsla(0, 0%, 100%, .15) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, .15) 0, hsla(0, 0%, 100%, .15) 75%, transparent 0, transparent); + background-size: 72rpx 72rpx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@-webkit-keyframes progress-stripes { + from { + background-position: 72rpx 0; + } + + to { + background-position: 0 0; + } +} + +@keyframes progress-stripes { + from { + background-position: 72rpx 0; + } + + to { + background-position: 0 0; + } +} + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + display: inline-block; + font-family: cuIcon; + margin-right: 6rpx; +} + +.cu-load.loading::before { + animation: cuIcon-spin 2s linear infinite; + content: "\e67a"; +} + +.cu-load.loading::after { + content: "加载中..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "没有更多了"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "加载失败"; +} + +.cu-load.load-icon::before { + font-size: 32rpx; +} + +.cu-load.load-icon.over, +.cu-load.load-icon::after { + display: none; +} + +.cu-load.load-modal { + align-items: center; + background-color: var(--white); + border-radius: 10rpx; + bottom: 140rpx; + box-shadow: 0 0 0rpx 2000rpx rgba(0, 0, 0, .5); + display: flex; + flex-direction: column; + font-size: 28rpx; + height: 260rpx; + justify-content: center; + left: 0; + line-height: 2.4em; + margin: auto; + position: fixed; + right: 0; + top: 0; + width: 260rpx; + z-index: 9999; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60rpx; +} + +.cu-load.load-modal image { + height: 70rpx; + width: 70rpx; +} + +.cu-load.load-modal::after { + animation: cuIcon-spin 1s linear infinite; + background-color: var(--white); + border: 6rpx solid rgba(0, 0, 0, .05); + border-left: 6rpx solid var(--orange); + border-radius: 50%; + content: ""; + font-size: 10px; + height: 200rpx; + position: absolute; + width: 200rpx; + z-index: -1; +} + +.load-progress { + left: 0; + pointer-events: none; + position: fixed; + top: 0; + width: 100%; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + height: 4rpx; + overflow: hidden; + position: relative; + transition: all .2s ease 0s; + width: 100%; +} + +.load-progress .load-progress-spinner { + display: block; + position: absolute; + right: 10rpx; + top: 10rpx; + z-index: 2000; +} + +.load-progress .load-progress-spinner::after { + animation: load-progress-spinner .4s linear infinite; + border: 4rpx solid transparent; + border-left-color: inherit; + border-radius: 50%; + border-top-color: inherit; + box-sizing: border-box; + content: ""; + display: block; + height: 24rpx; + width: 24rpx; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(1turn); + } +} + +@keyframes load-progress-spinner { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(1turn); + } +} + +.grayscale { + filter: grayscale(1); +} + +.cu-list>.cu-item { + transform: translateX(0rpx); + transition: all .6s ease-in-out 0s; +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-260rpx); +} + +.cu-list>.cu-item .move { + display: flex; + height: 100%; + position: absolute; + right: 0; + transform: translateX(100%); + width: 260rpx; +} + +.cu-list>.cu-item .move view { + align-items: center; + display: flex; + flex: 1; + justify-content: center; +} + +.cu-list.menu-avatar { + overflow: hidden; +} + +.cu-list.menu-avatar>.cu-item { + align-items: center; + background-color: var(--white); + display: flex; + height: 160rpx; + justify-content: flex-end; + padding-right: 10rpx; + position: relative; +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + left: 30rpx; + position: absolute; +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510rpx; +} + +.cu-list.menu-avatar>.cu-item .content { + left: 165rpx; + line-height: 1.6em; + position: absolute; + width: calc(100% - 96rpx - 60rpx - 120rpx - 20rpx); +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96rpx - 60rpx - 20rpx); +} + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + align-items: center; + display: flex; + font-size: 30rpx; +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + font-size: 16rpx; + height: 28rpx; + line-height: 32rpx; + margin-left: 10rpx; +} + +.cu-list.menu-avatar>.cu-item .action { + text-align: center; + width: 120rpx; +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10rpx; +} + +.cu-list.menu-avatar.comment>.cu-item .content { + flex: 1; + left: 0; + position: relative; + width: auto; +} + +.cu-list.menu-avatar.comment>.cu-item { + height: auto; + padding: 30rpx 30rpx 30rpx 120rpx; +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start; +} + +.cu-list.menu>.cu-item { + align-items: center; + background-color: var(--white); + display: flex; + justify-content: space-between; + min-height: 100rpx; + padding: 0 30rpx; + position: relative; +} + +.cu-list.menu>.cu-item:last-child:after { + border: none; +} + +.border-line { + border: 1rpx solid #ddd; + border-radius: 10rpx; +} + +.cu-list.menu>.cu-item:after { + border-bottom: 1rpx solid #ddd; + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5; +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9; +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90rpx; +} + +.cu-list.menu>.cu-item.arrow:before { + bottom: 0; + color: var(--grey); + content: "\e6a3"; + display: block; + font-family: cuIcon; + font-size: 34rpx; + height: 30rpx; + line-height: 30rpx; + margin: auto; + position: absolute; + right: 30rpx; + text-align: center; + top: 0; + width: 30rpx; +} + +.cu-list.menu>.cu-item button.content { + background-color: initial; + justify-content: flex-start; + padding: 0; +} + +.cu-list.menu>.cu-item button.content:after { + display: none; +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: var(--white); +} + +.cu-list.menu>.cu-item .content>view:first-child { + align-items: center; + display: flex; +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10rpx; + text-align: center; + width: 1.6em; +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + height: 1.6em; + margin-right: 10rpx; + vertical-align: middle; + width: 1.6em; +} + +.cu-list.menu>.cu-item .content { + flex: 1; + font-size: 30rpx; + line-height: 1.6em; +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + font-size: 16rpx; + height: 28rpx; + line-height: 32rpx; + margin-left: 10rpx; +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10rpx; +} + +.cu-list.menu { + display: block; + overflow: hidden; +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30rpx; + width: calc(200% - 120rpx); +} + +.cu-list.grid>.cu-item { + display: flex; + flex-direction: column; + padding: 20rpx 0 30rpx; + position: relative; + transition-duration: 0s; +} + +.cu-list.grid>.cu-item:after { + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + border-right: 1px solid rgba(0, 0, 0, .1); + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; +} + +.cu-list.grid>.cu-item text { + color: #888; + display: block; + font-size: 26rpx; + line-height: 40rpx; + margin-top: 10rpx; +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + display: block; + font-size: 48rpx; + margin-top: 20rpx; + position: relative; + width: 100%; +} + +.cu-list.grid>.cu-item .cu-tag { + left: 50%; + margin-left: 20rpx; + right: auto; +} + +.cu-list.grid { + background-color: var(--white); + text-align: center; +} + +.cu-list.grid.no-border>.cu-item { + padding-bottom: 20rpx; + padding-top: 10rpx; +} + +.cu-list.grid.no-border>.cu-item:after { + border: none; +} + +.cu-list.grid.no-border { + padding: 0rpx 20rpx; +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0; +} + +.cu-list.card-menu { + border-radius: 5rpx; + margin-left: 15rpx; + margin-right: 15rpx; + overflow: hidden; +} + +.cu-bar { + justify-content: space-between; + min-height: 60rpx; + position: relative; +} + +.cu-bar, +.cu-bar .action { + align-items: center; + display: flex; +} + +.cu-bar .action { + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10rpx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + bottom: -.5rem; + height: 6rpx; + left: 0; + min-width: 2rem; + position: absolute; +} + +.cu-bar .action.sub-title { + position: relative; + top: -.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + border-radius: 6rpx; + bottom: -.2rem; + display: inline-block; + height: .6rem; + left: .6rem; + opacity: .3; + position: absolute; + width: 100%; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + bottom: -.7rem; + display: inline-block; + font-size: 36rpx; + font-weight: 900; + left: .5rem; + opacity: .2; + position: absolute; + text-align: right; + z-index: 0; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + margin: auto; + right: 0; + text-align: center; +} + +.cu-bar .action:first-child { + font-size: 30rpx; + margin-left: 20rpx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20rpx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -.3em; + margin-right: .3em; +} + +.cu-bar .action:last-child { + margin-right: 30rpx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36rpx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: .5em; +} + +.cu-bar .content { + bottom: 0; + cursor: none; + font-size: 32rpx; + height: 60rpx; + left: 0; + line-height: 60rpx; + margin: auto; + overflow: hidden; + position: absolute; + right: 0; + text-align: center; + text-overflow: ellipsis; + top: 0; + white-space: nowrap; + width: calc(100% - 340rpx); +} + +.cu-bar.ios .content { + bottom: 7px; + font-size: 32rpx; + height: 30px; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20rpx; + max-width: 50%; + padding: 20rpx 32rpx; +} + +.cu-bar .search-form { + align-items: center; + background-color: #f5f5f5; + color: var(--black); + display: flex; + flex: 1; + font-size: 24rpx; + height: 64rpx; + line-height: 64rpx; + margin: 0 30rpx; +} + +.cu-bar .search-form+.action { + margin-right: 30rpx; +} + +.cu-bar .search-form input { + background-color: initial; + flex: 1; + font-size: 26rpx; + height: 64rpx; + line-height: 64rpx; + padding-right: 30rpx; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 .5em 0 .8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0rpx; +} + +.cu-bar.fixed, +.nav.fixed { + box-shadow: 0 1rpx 6rpx rgba(0, 0, 0, .1); + position: fixed; + top: 0; + width: 100%; + z-index: 1024; +} + +.cu-bar.foot { + bottom: 0; + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, .1); + position: fixed; + width: 100%; + z-index: 1024; +} + +.cu-bar.tabbar { + padding: 0 0 calc(env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar, +.cu-tabbar-height { + height: calc(100rpx + env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100rpx; +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, .1); +} + +.cu-bar.tabbar .action { + display: block; + flex: 1; + font-size: 22rpx; + height: auto; + line-height: 1; + margin: 0; + overflow: initial; + padding: 0; + position: relative; + text-align: center; +} + +.cu-bar.tabbar.shop .action { + flex: initial; + width: 140rpx; +} + +.cu-bar.tabbar .action.add-action { + background-color: inherit; + padding-top: 50rpx; + position: relative; + z-index: 2; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + border-radius: 50%; + font-size: 50rpx; + height: 70rpx; + left: 0; + line-height: 70rpx; + margin: auto; + padding: 0; + position: absolute; + right: 0; + top: -35rpx; + width: 70rpx; + z-index: 2; +} + +.cu-bar.tabbar .action.add-action::after { + border-radius: 50rpx; + box-shadow: 0 -3rpx 8rpx rgba(0, 0, 0, .08); + height: 100rpx; + top: -50rpx; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::after, +.cu-bar.tabbar .action.add-action::before { + background-color: inherit; + content: ""; + left: 0; + margin: auto; + position: absolute; + right: 0; + width: 100rpx; +} + +.cu-bar.tabbar .action.add-action::before { + bottom: 30rpx; + height: 30rpx; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + align-items: center; + display: flex; + flex: 1; + justify-content: space-around; + padding: 0 10rpx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + display: block; + font-size: 40rpx; + height: auto; + margin: 0 auto 10rpx; + position: relative; + text-align: center; + width: 100rpx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + display: inline-block; + height: 50rpx; + width: 50rpx; +} + +.cu-bar.tabbar .submit { + align-items: center; + align-self: stretch; + display: flex; + flex: 2; + justify-content: center; + position: relative; + text-align: center; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + border-right: 1rpx solid rgba(0, 0, 0, .1); + content: " "; + height: 200%; + left: 0; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + background-color: var(--white); + padding-right: 20rpx; +} + +.cu-bar.input input { + flex: 1; + font-size: 30rpx; + height: 64rpx; + line-height: 64rpx; + margin: 0 20rpx; + min-height: 64rpx; + overflow: initial; +} + +.cu-bar.input .action { + margin-left: 20rpx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48rpx; +} + +.cu-bar.input input+.action { + margin-left: 0rpx; + margin-right: 20rpx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0rpx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + width: calc(100% - 440rpx); +} + +.cu-custom .cu-bar .content image { + height: 60rpx; + width: 240rpx; +} + +.cu-custom .cu-bar { + box-shadow: 0rpx 0rpx 0rpx; + min-height: 0; + padding-right: 220rpx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + background: rgba(0, 0, 0, .15); + border-radius: 1000rpx; + height: 30px; + position: relative; +} + +.cu-custom .cu-bar .border-custom::after { + border: 1rpx solid var(--white); + border-radius: inherit; + height: 200%; + opacity: .5; + top: 0; + width: 200%; +} + +.cu-custom .cu-bar .border-custom::after, +.cu-custom .cu-bar .border-custom::before { + box-sizing: border-box; + content: " "; + left: 0; + pointer-events: none; + position: absolute; + transform: scale(.5); + transform-origin: 0 0; +} + +.cu-custom .cu-bar .border-custom::before { + background-color: var(--white); + height: 110%; + margin: auto; + opacity: .6; + right: 0; + top: 22.5%; + width: 1rpx; +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + font-size: 34rpx; + margin: auto !important; + text-align: center; +} + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + display: inline-block; + height: 90rpx; + line-height: 90rpx; + margin: 0 10rpx; + padding: 0 20rpx; +} + +.nav .cu-item.cur { + border-bottom: 4rpx solid; +} + +.cu-timeline { + background-color: var(--white); + display: block; +} + +.cu-timeline .cu-time { + color: #888; + display: block; + font-size: 26rpx; + padding: 20rpx 0; + text-align: center; + width: 120rpx; +} + +.cu-timeline>.cu-item { + display: block; + padding: 30rpx 30rpx 30rpx 120rpx; + position: relative; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + background-color: #ddd; + content: ""; + display: block; + height: 100%; + left: 60rpx; + position: absolute; + top: 0; + width: 1rpx; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + background-color: var(--white); + border: none; + display: block; + font-family: cuIcon; + height: 50rpx; + left: 36rpx; + line-height: 50rpx; + position: absolute; + text-align: center; + top: 36rpx; + width: 50rpx; + z-index: 9; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: var(--white); + border: none; + height: 50rpx; + left: 36rpx; + line-height: 50rpx; + text-align: center; + width: 50rpx; +} + +.cu-timeline>.cu-item>.content { + border-radius: 6rpx; + display: block; + line-height: 1.6; + padding: 30rpx; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: var(--ghostWhite); + color: var(--black); +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20rpx; +} + +.cu-chat { + flex-direction: column; +} + +.cu-chat, +.cu-chat .cu-item { + display: flex; +} + +.cu-chat .cu-item { + padding: 30rpx 30rpx 70rpx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + height: 80rpx; + width: 80rpx; +} + +.cu-chat .cu-item>.main { + align-items: center; + display: flex; + margin: 0 40rpx; + max-width: calc(100% - 260rpx); +} + +.cu-chat .cu-item>image { + height: 320rpx; +} + +.cu-chat .cu-item>.main .content { + align-items: center; + border-radius: 6rpx; + display: inline-flex; + font-size: 30rpx; + line-height: 40rpx; + max-width: 100%; + min-height: 80rpx; + padding: 20rpx; + position: relative; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: var(--white); + color: var(--black); +} + +.cu-chat .cu-item .date { + bottom: 20rpx; + color: var(--grey); + font-size: 24rpx; + left: 160rpx; + position: absolute; + width: calc(100% - 320rpx); +} + +.cu-chat .cu-item .action { + align-items: center; + display: flex; + padding: 0 30rpx; +} + +.cu-chat .cu-item>.main .content::after { + background-color: inherit; + content: ""; + display: inline-block; + height: 24rpx; + left: -12rpx; + overflow: hidden; + position: absolute; + right: auto; + top: 27rpx; + transform: rotate(45deg); + width: 24rpx; + z-index: 100; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12rpx; +} + +.cu-chat .cu-item>.main .content::before { + background-color: inherit; + content: ""; + display: inline-block; + filter: blur(5rpx); + height: 24rpx; + left: -12rpx; + opacity: .3; + overflow: hidden; + position: absolute; + right: auto; + top: 30rpx; + transform: rotate(45deg); + width: 24rpx; + z-index: -1; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: var(--black); + opacity: .1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12rpx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + background-color: rgba(0, 0, 0, .2); + border-radius: 6rpx; + color: var(--white); + display: inline-block; + font-size: 24rpx; + line-height: 1.4; + margin: 20rpx auto; + max-width: 400rpx; + padding: 8rpx 12rpx; +} + +.cu-card, +.cu-card>.cu-item { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + background-color: var(--white); + border-radius: 10rpx; + margin: 10rpx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + border-radius: 0rpx; + margin: 0rpx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20rpx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + left: 0; + position: absolute; + top: 0; +} + +.cu-card.case .image .cu-bar { + background-color: initial; + bottom: 0; + padding: 0rpx 30rpx; + position: absolute; + width: 100%; +} + +.cu-card.case.no-card .image { + border-radius: 10rpx; + margin: 30rpx 30rpx 0; + overflow: hidden; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + background-color: var(--white); + display: block; + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + font-size: 30rpx; + margin-bottom: 20rpx; + max-height: 6.4em; + overflow: hidden; + padding: 0 30rpx; +} + +.cu-card.dynamic>.cu-item .square-img { + border-radius: 6rpx; + height: 200rpx; + width: 100%; +} + +.cu-card.dynamic>.cu-item .only-img { + border-radius: 6rpx; + height: 320rpx; + width: 100%; +} + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30rpx; +} + +.cu-card.article>.cu-item .title { + color: var(--black); + font-size: 30rpx; + font-weight: 900; + line-height: 100rpx; + padding: 0 30rpx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30rpx; +} + +.cu-card.article>.cu-item .content>image { + border-radius: 6rpx; + height: 8.4em; + margin-right: 20rpx; + width: 240rpx; +} + +.cu-card.article>.cu-item .content .desc { + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + color: #888; + font-size: 28rpx; + height: 4.8em; + overflow: hidden; +} + +.cu-form-group { + align-items: center; + background-color: var(--white); + display: flex; + justify-content: space-between; + width: 100%; +} + +.cu-form-group+.cu-form-group { + border-top: 1rpx solid #eee; +} + +.cu-form-group .title { + font-size: 32rpx; + padding-right: 20rpx; + position: relative; + text-align: justify; +} + +.cu-form-group .title-right { + text-align: right; +} + +.cu-form-group .title-left, +.cu-form-group .title-right { + font-size: 30rpx; + height: 60rpx; + line-height: 60rpx; + padding-right: 20rpx; + position: relative; +} + +.cu-form-group .title-left { + text-align: left; +} + +.cu-form-group input { + color: #555; + flex: 1; + font-size: 30rpx; + padding-right: 20rpx; +} + +.cu-form-group .content { + color: #000; +} + +.cu-form-group .content, +.cu-form-group .content-red { + flex: 1; + font-size: 30rpx; + padding-right: 20rpx; + text-align: right; +} + +.cu-form-group .content-red { + color: red; +} + +.cu-form-group .content-left { + color: #000; + flex: 1; + font-size: 30rpx; + padding-right: 20rpx; + text-align: left; +} + +.cu-form-group>text[class*="cuIcon-"] { + box-sizing: border-box; + font-size: 36rpx; + padding: 0; +} + +.cu-form-group textarea { + flex: 1; + font-size: 28rpx; + height: 10em; + line-height: 1.2em; + margin: 0rpx; + padding: 15rpx; + width: 100%; +} + +.cu-form-group.align-start .title { + height: 1em; + line-height: 1em; + margin-top: 32rpx; +} + +.cu-form-group picker { + flex: 1; + overflow: hidden; + padding-right: 40rpx; + position: relative; +} + +.cu-form-group picker .picker { + font-size: 32rpx; + text-align: right; +} + +.cu-form-group picker .picker, +.cu-form-group picker .picker-left { + line-height: 60rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} + +.cu-form-group picker .picker-left { + font-size: 28rpx; + text-align: left; +} + +.cu-form-group picker::after { + bottom: 0; + color: var(--grey); + content: "\e6a3"; + display: block; + font-family: cuIcon; + font-size: 34rpx; + line-height: 60rpx; + margin: auto; + position: absolute; + right: -20rpx; + text-align: center; + top: 0; + width: 60rpx; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +.cu-modal { + backface-visibility: hidden; + background: rgba(0, 0, 0, .6); + bottom: 0; + left: 0; + opacity: 0; + outline: 0; + perspective: 2000rpx; + pointer-events: none; + position: fixed; + right: 0; + text-align: center; + top: 0; + transform: scale(1.185); + transition: all .3s ease-in-out 0s; + z-index: 1110; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; + transform: scale(1); + transition-duration: .3s; +} + +.cu-dialog { + background-color: #f8f8f8; + border-radius: 10rpx; + display: inline-block; + margin-left: auto; + margin-right: auto; + max-width: 100%; + overflow: hidden; + position: relative; + vertical-align: middle; + width: 680rpx; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + border-radius: 0; + width: 100%; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000rpx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + display: flex; + transform: scale(1); +} + +.cu-modal.drawer-modal .cu-dialog { + border-radius: 0; + height: 100%; + margin: initial; + min-width: 200rpx; + transition-duration: .3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0); +} + +.cu-modal .cu-dialog>.cu-bar:first-child .action { + margin-right: 0; + min-height: 100rpx; + min-width: 100rpx; +} + +swiper .a-swiper-dot { + background: rgba(0, 0, 0, .3); + border-radius: 50%; + display: inline-block; + height: 16rpx; + vertical-align: middle; + width: 16rpx; +} + +swiper[class*="-dot"] .wx-swiper-dots { + align-items: center; + display: flex; + justify-content: center; + width: 100%; +} + +swiper.square-dot .wx-swiper-dot { + background-color: var(--white); + border-radius: 20rpx; + height: 10rpx; + margin: 0 8rpx !important; + opacity: .4; + width: 10rpx; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active { + opacity: 1; + width: 30rpx; +} + +swiper.round-dot .wx-swiper-dot { + height: 10rpx; + margin: 4rpx 8rpx !important; + position: relative; + width: 10rpx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after { + background-color: var(--white); + border-radius: 20rpx; + bottom: 0; + content: ""; + height: 10rpx; + left: 0rpx; + margin: auto; + position: absolute; + right: 0; + top: 0rpx; + width: 10rpx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active { + height: 18rpx; + width: 18rpx; +} + +.screen-swiper { + min-height: 375rpx; +} + +.screen-swiper-lg { + min-height: 245rpx; +} + +.screen-swiper.xl { + height: 600rpx; +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + display: block; + height: 100%; + margin: 0; + pointer-events: none; + width: 100%; +} + +.card-swiper { + height: 420rpx !important; +} + +.card-swiper swiper-item { + box-sizing: border-box; + left: 70rpx; + overflow: initial; + padding: 40rpx 0rpx 70rpx; + width: 610rpx !important; +} + +.card-swiper swiper-item .swiper-item { + border-radius: 10rpx; + display: block; + height: 100%; + overflow: hidden; + transform: scale(.9); + transition: all .2s ease-in 0s; + width: 100%; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all .2s ease-in 0s; +} + +.tower-swiper { + height: 420rpx; + max-width: 750rpx; + overflow: hidden; + position: relative; +} + +.tower-swiper .tower-item { + bottom: 0; + height: 380rpx; + left: 50%; + margin: auto; + opacity: 1; + position: absolute; + top: 0; + transition: all .2s ease-in 0s; + width: 300rpx; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + border-radius: 6rpx; + height: 100%; + overflow: hidden; + width: 100%; +} + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + min-width: 100rpx; + position: relative; + text-align: center; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: var(--grey); +} + +.cu-steps .cu-item .num, +.cu-steps .cu-item [class*="cuIcon-"] { + display: block; + font-size: 40rpx; + line-height: 80rpx; +} + +.cu-steps .cu-item::after, +.cu-steps .cu-item::before, +.cu-steps.steps-arrow .cu-item::after, +.cu-steps.steps-arrow .cu-item::before { + border-bottom: 1px solid #ccc; + content: ""; + display: block; + height: 0; + left: calc(0px - (100% - 80rpx) / 2); + position: absolute; + top: 40rpx; + width: calc(100% - 80rpx); + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::after, +.cu-steps.steps-arrow .cu-item::before { + border-bottom-width: 0; + bottom: 0; + color: #ccc; + content: "\e6a3"; + font-family: cuIcon; + height: 30rpx; + line-height: 30rpx; + margin: auto; + top: 0; +} + +.cu-steps.steps-bottom .cu-item::after, +.cu-steps.steps-bottom .cu-item::before { + bottom: 40rpx; + top: auto; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid; + transition: all .3s ease-in-out 0s; + width: 0; +} + +.cu-steps .cu-item[class*="text-"]::after { + color: currentColor; + width: calc(100% - 80rpx); +} + +.cu-steps .cu-item:first-child::after, +.cu-steps .cu-item:first-child::before { + display: none; +} + +.cu-steps .cu-item .num { + border: 1px solid; + border-radius: 50%; + font-size: 24rpx; + height: 40rpx; + line-height: 40rpx; + margin: 20rpx auto; + overflow: hidden; + position: relative; + width: 40rpx; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::after, +.cu-steps .cu-item .num::before { + bottom: 0; + content: attr(data-index); + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + transform: translateY(0rpx); + transition: all .3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::before { + color: var(--white); + transform: translateY(-40rpx); +} + +.cu-steps .cu-item .num::after { + color: var(--white); + transform: translateY(40rpx); + transition: all .3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + color: var(--white); + content: "\e645"; + font-family: cuIcon; + transform: translateY(0rpx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.selfcenter { + align-self: center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + background-color: rgba(0, 0, 0, .5); + border-bottom-left-radius: 6rpx; + height: auto; + padding: 6rpx 12rpx; + position: absolute; + right: 0; + top: 0; +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + align-items: center; + bottom: 0; + color: var(--grey); + display: flex; + flex-direction: column; + font-size: 52rpx; + justify-content: center; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; +} + +.grid.grid-square>view { + border-radius: 6rpx; + margin-right: 15rpx; + overflow: hidden; + position: relative; +} + +.grid.grid-square>view.bg-img image { + height: 100%; + position: absolute; + width: 100%; +} + +.grid.col-1.grid-square>view { + height: 0; + margin-right: 0; + padding-bottom: 100%; +} + +.grid.col-2.grid-square>view { + height: 0; + padding-bottom: calc((100% - 20rpx)/2); + width: calc((100% - 20rpx)/2); +} + +.grid.col-3.grid-square>view { + height: 0; + padding-bottom: calc((100% - 30rpx)/3); + width: calc((100% - 30rpx)/3); +} + +.grid.col-4.grid-square>view { + height: 0; + padding-bottom: calc((100% - 60rpx)/4); + width: calc((100% - 60rpx)/4); +} + +.grid.col-5.grid-square>view { + height: 0; + padding-bottom: calc((100% - 80rpx)/5); + width: calc((100% - 80rpx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10rpx; +} + +.margin-sm { + margin: 20rpx; +} + +.margin { + margin: 30rpx; +} + +.margin-lg { + margin: 40rpx; +} + +.margin-xl { + margin: 50rpx; +} + +.margin-top-ls { + margin-top: 2rpx; +} + +.margin-top-xs { + margin-top: 10rpx; +} + +.margin-top-sm { + margin-top: 20rpx; +} + +.margin-top { + margin-top: 30rpx; +} + +.margin-top-lg { + margin-top: 40rpx; +} + +.margin-top-xl { + margin-top: 50rpx; +} + +.margin-right-xs { + margin-right: 10rpx; +} + +.margin-right-sm { + margin-right: 20rpx; +} + +.margin-right { + margin-right: 30rpx; +} + +.margin-right-lg { + margin-right: 40rpx; +} + +.margin-right-xl { + margin-right: 50rpx; +} + +.margin-bottom-xs { + margin-bottom: 10rpx; +} + +.margin-bottom-sm { + margin-bottom: 20rpx; +} + +.margin-bottom { + margin-bottom: 30rpx; +} + +.margin-bottom-lg { + margin-bottom: 40rpx; +} + +.margin-bottom-xl { + margin-bottom: 50rpx; +} + +.margin-bottom-xxl { + margin-bottom: 80rpx; +} + +.margin-bottom-xxxl { + margin-bottom: 130rpx; +} + +.margin-left-xs { + margin-left: 10rpx; +} + +.margin-left-sm { + margin-left: 20rpx; +} + +.margin-left { + margin-left: 30rpx; +} + +.margin-left-lg { + margin-left: 40rpx; +} + +.margin-left-xl { + margin-left: 50rpx; +} + +.margin-lr-xs { + margin-left: 10rpx; + margin-right: 10rpx; +} + +.margin-lr-sm { + margin-left: 20rpx; + margin-right: 20rpx; +} + +.margin-lr { + margin-left: 30rpx; + margin-right: 30rpx; +} + +.margin-lr-lg { + margin-left: 40rpx; + margin-right: 40rpx; +} + +.margin-lr-xl { + margin-left: 50rpx; + margin-right: 50rpx; +} + +.margin-tb-xs { + margin-bottom: 10rpx; + margin-top: 10rpx; +} + +.margin-tb-sm { + margin-bottom: 20rpx; + margin-top: 20rpx; +} + +.margin-tb { + margin-bottom: 30rpx; + margin-top: 30rpx; +} + +.margin-tb-lg { + margin-bottom: 40rpx; + margin-top: 40rpx; +} + +.margin-tb-xl { + margin-bottom: 50rpx; + margin-top: 50rpx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10rpx; +} + +.padding-sm { + padding: 20rpx; +} + +.padding { + padding: 30rpx; +} + +.padding-lg { + padding: 40rpx; +} + +.padding-xl { + padding: 50rpx; +} + +.padding-top-xs { + padding-top: 10rpx; +} + +.padding-top-sm { + padding-top: 20rpx; +} + +.padding-top { + padding-top: 30rpx; +} + +.padding-top-lg { + padding-top: 40rpx; +} + +.padding-top-xl { + padding-top: 50rpx; +} + +.padding-right-xs { + padding-right: 10rpx; +} + +.padding-right-sm { + padding-right: 20rpx; +} + +.padding-right { + padding-right: 30rpx; +} + +.padding-right-lg { + padding-right: 40rpx; +} + +.padding-right-xl { + padding-right: 50rpx; +} + +.padding-bottom-xs { + padding-bottom: 10rpx; +} + +.padding-bottom-sm { + padding-bottom: 20rpx; +} + +.padding-bottom { + padding-bottom: 30rpx; +} + +.padding-bottom-lg { + padding-bottom: 40rpx; +} + +.padding-bottom-xl { + padding-bottom: 50rpx; +} + +.padding-bottom-xxl { + padding-bottom: 80rpx; +} + +.padding-left-xs { + padding-left: 10rpx; +} + +.padding-left-sm { + padding-left: 20rpx; +} + +.padding-left { + padding-left: 30rpx; +} + +.padding-left-lg { + padding-left: 40rpx; +} + +.padding-left-xl { + padding-left: 50rpx; +} + +.padding-lr-xs { + padding-left: 10rpx; + padding-right: 10rpx; +} + +.padding-lr-sm { + padding-left: 20rpx; + padding-right: 20rpx; +} + +.padding-lr { + padding-left: 30rpx; + padding-right: 30rpx; +} + +.padding-lr-lg { + padding-left: 40rpx; + padding-right: 40rpx; +} + +.padding-lr-xl { + padding-left: 50rpx; + padding-right: 50rpx; +} + +.padding-tb-xs { + padding-bottom: 10rpx; + padding-top: 10rpx; +} + +.padding-tb-sm { + padding-bottom: 20rpx; + padding-top: 20rpx; +} + +.padding-tb { + padding-bottom: 30rpx; + padding-top: 30rpx; +} + +.padding-tb-lg { + padding-bottom: 40rpx; + padding-top: 40rpx; +} + +.padding-tb-xl { + padding-bottom: 50rpx; + padding-top: 50rpx; +} + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.line-red::after, +.lines-red::after { + border-color: var(--red); +} + +.line-orange::after, +.lines-orange::after { + border-color: var(--orange); +} + +.line-yellow::after, +.lines-yellow::after { + border-color: var(--yellow); +} + +.line-olive::after, +.lines-olive::after { + border-color: var(--olive); +} + +.line-green::after, +.lines-green::after { + border-color: var(--green); +} + +.line-cyan::after, +.lines-cyan::after { + border-color: var(--cyan); +} + +.line-blue::after, +.lines-blue::after { + border-color: var(--blue); +} + +.line-purple::after, +.lines-purple::after { + border-color: var(--purple); +} + +.line-mauve::after, +.lines-mauve::after { + border-color: var(--mauve); +} + +.line-pink::after, +.lines-pink::after { + border-color: var(--pink); +} + +.line-brown::after, +.lines-brown::after { + border-color: var(--brown); +} + +.line-grey::after, +.lines-grey::after { + border-color: var(--grey); +} + +.line-gray::after, +.lines-gray::after { + border-color: var(--gray); +} + +.line-black::after, +.lines-black::after { + border-color: var(--black); +} + +.line-white::after, +.lines-white::after { + border-color: var(--white); +} + +.bg-red { + background-color: var(--red); + color: var(--white); +} + +.bg-yellowlight { + background-color: var(--yellowLight); + color: var(--white); +} + +.line-yellowlight2 { + color: var(--yellowLight); +} + +.bg-orange { + background-color: var(--orange); + color: var(--white); +} + +.bg-yellow { + background-color: var(--yellow); + color: var(--black); +} + +.bg-yellow-light { + color: var(--yellowLight); +} + +.bg-yellow-light-2 { + background-image: var(--gradualYellow2); + color: var(--white); +} + +.bg-yellow-light-1 { + background-color: var(--yellowLight); + color: var(--white); +} + +.bg-yellow-light-3 { + color: var(--yellowLight); +} + +.bg-olive { + background-color: var(--olive); + color: var(--white); +} + +.bg-green { + background-color: var(--green); + color: var(--white); +} + +.bg-cyan { + background-color: var(--cyan); +} + +.bg-blue, +.bg-cyan { + color: var(--white); +} + +.bg-blue { + background-color: var(--yellowLight); +} + +.bg-purple { + background-color: var(--purple); + color: var(--white); +} + +.bg-mauve { + background-color: var(--mauve); + color: var(--white); +} + +.bg-pink { + background-color: var(--pink); + color: var(--white); +} + +.bg-brown { + background-color: var(--brown); + color: var(--white); +} + +.bg-grey { + background-color: var(--grey); +} + +.bg-grey, +.text-color { + color: var(--white); +} + +.bg-gray { + background-color: #f0f0f0; + color: var(--black); +} + +.bg-trgray { + background-color: #f8f8f8; + color: var(--black); +} + +.bg-black { + background-color: var(--black); + color: var(--white); +} + +.bg-black-tr { + background: rgba(0, 0, 0, .4); + color: var(--white); +} + +.bg-white { + background-color: var(--white); + color: var(--darkGray); +} + +.bg-shadeTop { + background-image: linear-gradient(#000, rgba(0, 0, 0, .01)); + color: var(--white); +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, .01), #000); + color: var(--white); +} + +.bg-red.light { + background-color: var(--redLight); + color: var(--red); +} + +.bg-orange.light { + background-color: var(--orangeLight); + color: var(--orange); +} + +.bg-yellow.light { + background-color: var(--yellowLight); + color: var(--yellow); +} + +.bg-olive.light { + background-color: var(--oliveLight); + color: var(--olive); +} + +.bg-green.light { + background-color: var(--greenLight); + color: var(--green); +} + +.bg-cyan.light { + background-color: var(--cyanLight); + color: var(--cyan); +} + +.bg-blue.light { + background-color: var(--blueLight); + color: var(--blue); +} + +.bg-purple.light { + background-color: var(--purpleLight); + color: var(--purple); +} + +.bg-mauve.light { + background-color: var(--mauveLight); + color: var(--mauve); +} + +.bg-pink.light { + background-color: var(--pinkLight); + color: var(--pink); +} + +.bg-brown.light { + background-color: var(--brownLight); + color: var(--brown); +} + +.bg-grey.light { + background-color: var(--greyLight); + color: var(--grey); +} + +.bg-gradual-red { + background-image: var(--gradualRed); + color: var(--white); +} + +.bg-gradual-red-3 { + background-image: var(--gradualRed3); + color: var(--white); +} + +.bg-gradual-orange { + background-image: var(--gradualOrange); + color: var(--white); +} + +.bg-gradual-green { + background-image: var(--gradualGreen); + color: var(--white); +} + +.bg-gradual-purple { + background-image: var(--gradualPurple); + color: var(--white); +} + +.bg-gradual-pink { + background-image: var(--gradualPink); + color: var(--white); +} + +.bg-yellow-yellow { + background-image: var(--gradualYellow); + color: var(--white); +} + +.bg-red-red { + background-image: var(--gradualRed2); + color: var(--white); +} + +.bg-gradual-blue { + background-image: var(--gradualBlue); + color: var(--white); +} + +.bg-gradual-gray { + background-image: var(--gradualGray); + color: var(--white); +} + +.shadow[class*="-red"] { + box-shadow: var(--ShadowSize) var(--redShadow); +} + +.shadow[class*="-orange"] { + box-shadow: var(--ShadowSize) var(--orangeShadow); +} + +.shadow[class*="-yellow"] { + box-shadow: var(--ShadowSize) var(--yellowShadow); +} + +.shadow[class*="-olive"] { + box-shadow: var(--ShadowSize) var(--oliveShadow); +} + +.shadow[class*="-green"] { + box-shadow: var(--ShadowSize) var(--greenShadow); +} + +.shadow[class*="-cyan"] { + box-shadow: var(--ShadowSize) var(--cyanShadow); +} + +.shadow[class*="-blue"] { + box-shadow: var(--ShadowSize) var(--blueShadow); +} + +.shadow[class*="-purple"] { + box-shadow: var(--ShadowSize) var(--purpleShadow); +} + +.shadow[class*="-mauve"] { + box-shadow: var(--ShadowSize) var(--mauveShadow); +} + +.shadow[class*="-pink"] { + box-shadow: var(--ShadowSize) var(--pinkShadow); +} + +.shadow[class*="-brown"] { + box-shadow: var(--ShadowSize) var(--brownShadow); +} + +.shadow[class*="-grey"] { + box-shadow: var(--ShadowSize) var(--greyShadow); +} + +.shadow[class*="-gray"] { + box-shadow: var(--ShadowSize) var(--grayShadow); +} + +.shadow[class*="-black"], +.shadow[class*="-white"] { + box-shadow: var(--ShadowSize) var(--blackShadow); +} + +.text-shadow[class*="-red"] { + text-shadow: var(--ShadowSize) var(--redShadow); +} + +.text-shadow[class*="-orange"] { + text-shadow: var(--ShadowSize) var(--orangeShadow); +} + +.text-shadow[class*="-yellow"] { + text-shadow: var(--ShadowSize) var(--yellowShadow); +} + +.text-shadow[class*="-olive"] { + text-shadow: var(--ShadowSize) var(--oliveShadow); +} + +.text-shadow[class*="-green"] { + text-shadow: var(--ShadowSize) var(--greenShadow); +} + +.text-shadow[class*="-cyan"] { + text-shadow: var(--ShadowSize) var(--cyanShadow); +} + +.text-shadow[class*="-blue"] { + text-shadow: var(--ShadowSize) var(--blueShadow); +} + +.text-shadow[class*="-purple"] { + text-shadow: var(--ShadowSize) var(--purpleShadow); +} + +.text-shadow[class*="-mauve"] { + text-shadow: var(--ShadowSize) var(--mauveShadow); +} + +.text-shadow[class*="-pink"] { + text-shadow: var(--ShadowSize) var(--pinkShadow); +} + +.text-shadow[class*="-brown"] { + text-shadow: var(--ShadowSize) var(--brownShadow); +} + +.text-shadow[class*="-grey"] { + text-shadow: var(--ShadowSize) var(--greyShadow); +} + +.text-shadow[class*="-gray"] { + text-shadow: var(--ShadowSize) var(--grayShadow); +} + +.text-shadow[class*="-black"] { + text-shadow: var(--ShadowSize) var(--blackShadow); +} + +.bg-img { + background-position: 50%; + background-repeat: no-repeat; + background-size: cover; + margin-bottom: 15rpx; +} + +.bg-mask { + background-color: var(--black); + position: relative; +} + +.bg-mask::after { + background-color: rgba(0, 0, 0, .4); + border-radius: inherit; + bottom: 0; + content: ""; + display: block; + height: 100%; + left: 0; + position: absolute; + right: 0; + top: 0; + width: 100%; +} + +.bg-mask cover-view, +.bg-mask view { + position: relative; + z-index: 5; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + object-fit: cover; + pointer-events: none; + position: absolute; + top: 0; + width: 100%; + z-index: 0; +} + +.text-xs { + font-size: 20rpx; +} + +.text-sm { + font-size: 24rpx; +} + +.text-df { + font-size: 28rpx; +} + +.text-lg { + font-size: 32rpx; +} + +.text-xl { + font-size: 36rpx; +} + +.text-xxl { + font-size: 44rpx; +} + +.text-sl { + font-size: 80rpx; +} + +.text-xsl { + font-size: 120rpx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "¥"; + font-size: 80%; + margin-right: 4rpx; +} + +.text-cut, +.text-cut-width { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-cut-width { + width: 370rpx; +} + +.text-bold { + font-weight: 700; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.line-red, +.lines-red, +.text-red { + color: var(--red); +} + +.line-orange, +.lines-orange, +.text-orange { + color: var(--orange); +} + +.line-yellow, +.lines-yellow, +.text-yellow { + color: var(--yellow); +} + +.line-olive, +.lines-olive, +.text-olive { + color: var(--olive); +} + +.line-green, +.lines-green, +.text-green { + color: var(--green); +} + +.line-cyan, +.lines-cyan, +.text-cyan { + color: var(--cyan); +} + +.line-blue, +.lines-blue, +.text-blue { + color: var(--blue); +} + +.line-purple, +.lines-purple, +.text-purple { + color: var(--purple); +} + +.line-mauve, +.lines-mauve, +.text-mauve { + color: var(--mauve); +} + +.line-pink, +.lines-pink, +.text-pink { + color: var(--pink); +} + +.line-brown, +.lines-brown, +.text-brown { + color: var(--brown); +} + +.line-grey, +.lines-grey, +.text-grey { + color: var(--grey); +} + +.line-gray, +.lines-gray, +.text-gray { + color: var(--gray); +} + +.text-gray2 { + color: #333; +} + +.line-black, +.lines-black, +.text-black { + color: var(--black); +} + +.line-depblack, +.lines-depblack, +l .text-depblack { + color: var(--depBlack); +} + +.line-white, +.lines-white, +.text-white { + color: var(--white); +} + +.comment-line-box { + justify-content: space-around; +} + +.comment-line-box, +.comment-line-input-box { + align-items: center; + background-color: #fff; + display: flex; + flex-direction: row; + padding: 15rpx; + width: 100%; +} + +.comment-line-input-box { + border-radius: 5rpx; + color: #000; + justify-content: center; +} + +.comment-line-input-box text { + word-wrap: break-word; + color: #000; + display: block; + font-size: 28rpx; + visibility: hidden; + word-break: break-all; +} + +.comment-line-input-box .weui-textarea { + background-color: #f2f2f2; + border-radius: 10rpx; + height: 180rpx; + padding: 15rpx; + text-align: left; + width: 80%; +} + +.comment-line-input { + background-color: #f0f0f0; + flex-grow: 0.8; + font-size: 28rpx; + height: 70rpx; + line-height: 70rpx; + padding: 15rpx; + text-align: left; +} + +.comment-line-btn { + background-color: #e6b980; + border-radius: 5rpx; + color: #fff; + font-size: 28rpx; + margin-left: 15rpx; + padding: 15rpx; + text-align: center; + width: 20%; +} + +.comment-box { + background-color: #fff; + justify-content: space-around; + width: 100%; +} + +.comment-box, +.comment-box .input { + align-items: center; + display: flex; + flex-direction: row; +} + +.comment-box .input { + background-color: #f0f0f0; + border-radius: 15rpx; + flex: 6; + justify-content: center; + padding: 15rpx 0rpx; +} + +.click-white { + background-color: #fff; +} + +.comment-content-box { + align-items: flex-end; + display: flex; + flex-direction: row; + justify-content: center; + padding: 15rpx; + width: 100%; +} + +.comment-content-box .btn { + color: red; + flex-grow: 0.1; + font-size: 32rpx; + text-align: center; +} + +.comment-content-input { + align-items: flex-start; + background-color: #f0f0f0; + border-radius: 10rpx; + display: flex; + flex-direction: column; + flex-grow: 0.9; + font-size: 28rpx; + justify-content: center; + min-height: 200rpx; + padding: 15rpx; +} + +.comment-content-input textarea { + font-size: 28rpx; + height: 180rpx; + width: 100%; +} + +.comment-content-funcs { + align-items: center; + display: flex; + flex-direction: row; + justify-content: flex-end; + padding: 0rpx 15rpx 15rpx; + width: 100%; +} + +.comment-comment-funcs .icons { + font-size: 50rpx; + padding: 0rpx 15rpx; +} + +.icon-comment { + flex: 2; + font-size: 50rpx; + text-align: center; +} + +.icon-comment:nth-child(1) { + margin-left: 15rpx; +} + +.comment-list-box { + align-items: center; + background-color: #fff; + display: flex; + flex-direction: column; + justify-content: flex-start; + margin-bottom: 100rpx; + margin-top: 15rpx; + min-height: 1000rpx; + padding: 15rpx; + width: 100%; +} + +.comment-list-title { + color: #000; + font-size: 32rpx; +} + +.comment-list-item-box, +.comment-list-title { + align-items: flex-start; + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; +} + +.comment-list-item-box { + margin: 15rpx 0rpx; +} + +.comment-list-item-box:nth-child(1) { + margin: 25rpx 0rpx 15rpx; +} + +.comment-list-item-content { + font-size: 28rpx; + margin-left: 64rpx; + padding: 15rpx 0rpx; + width: 90%; +} + +.comment-count { + background-color: #f0f0f0; + border-radius: 10rpx; + font-size: 24rpx; + padding: 0rpx 15rpx; +} + +.restore-content-box { + align-items: flex-start; + border-bottom: 1rpx solid #f3f3f3; + display: flex; + flex-direction: column; + justify-content: center; + padding: 0rpx 15rpx 15rpx; +} + +.line { + background-color: #f3f3f3; + height: 1rpx; + padding: 0rpx 15rpx; + width: 100%; +} + +.restore-content-title { + align-items: center; + display: flex; + flex-direction: row; + justify-content: flex-start; + width: 100%; +} + +.restore-content-title text { + color: #000; + font-size: 32rpx; + margin: 0rpx 0rpx 0rpx 15rpx; +} + +.restore-content-title image { + border-radius: 50%; + height: 64rpx; + width: 64rpx; +} + +.dialog-content { + height: 50%; + width: 100%; +} + +.restore-content { + font-size: 28rpx; + margin-left: 75rpx; + padding: 15rpx 0rpx; + width: 90%; +} + +.item-title-box { + padding-right: 30rpx; +} + +.item-title-box, +.restore-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-between; + width: 100%; +} + +.restore-box { + padding: 15rpx 30rpx 15rpx 64rpx; +} + +.comment-input { + background-color: #f3f3f3; + border-radius: 5rpx; + height: 70rpx; + line-height: 70rpx; + padding: 0rpx 15rpx; + text-align: left; + width: 80%; +} + +.comment-item-title { + align-items: center; + display: flex; + flex-direction: row; + justify-content: flex-start; + width: 100%; +} + +.comment-item-title image { + border-radius: 50%; + height: 48rpx; + width: 48rpx; +} + +.comment-item-title .comment-user-name { + color: #000; + font-size: 28rpx; + line-height: 48rpx; + margin-left: 15rpx; + text-align: center; +} + +.func-items { + justify-content: space-between; + padding: 15rpx; + width: 100%; +} + +.func-item, +.func-items { + align-items: center; + display: flex; + flex-direction: row; +} + +.func-item { + border-right: 1rpx solid #f8f8f8; + color: #000; + flex: 1; + justify-content: center; + width: 23%; +} + +.func-item:last-child { + border-right: 0rpx; +} + +.func-item:active { + background-color: #f3f3f3; + color: #dfdfdf; +} + +.func-item image { + height: 48rpx; + width: 48rpx; +} + +.func-item text { + margin-left: 10rpx; + text-align: center; +} + +.options-box { + box-shadow: 0rpx 2rpx 2rpx rgba(4, 0, 0, .2); + flex-direction: column; + flex-wrap: wrap; + justify-content: flex-start; + padding: 15rpx; + width: 100%; +} + +.options-box, +.options-box .item { + display: flex; +} + +.options-box .item { + align-items: center; + border-radius: 20rpx; + flex-direction: row; + font-size: 28rpx; + justify-content: space-between; + min-width: 20%; + padding: 7.5rpx 0rpx; +} + +.options-box .item:nth-child(1) { + padding: 0rpx 0rpx 7.5rpx; +} + +.loading-box { + display: flex; + justify-content: center; + width: 100%; +} + +.play-box { + margin-left: 20rpx; + padding: 10rpx 0rpx; +} + +.play-box, +.play-box-shadow { + align-items: center; + background-color: #fff; + border-radius: 15rpx; + display: flex; + flex-direction: column; + justify-content: center; + width: 80%; +} + +.play-box-shadow { + box-shadow: 0 4rpx 8rpx 0 rgba(0, 0, 0, .2), 0 6rpx 20rpx 0 rgba(0, 0, 0, .19); + margin-bottom: 15rpx; + padding: 15rpx; + position: relative; +} + +.play-box-shadow-little { + background-color: #fff; + border-radius: 15rpx; + box-shadow: 0 0 4rpx 0 rgba(0, 0, 0, .2), 0 0 10rpx 0 rgba(0, 0, 0, .04); + justify-content: center; + margin-bottom: 15rpx; + position: relative; +} + +.page-box, +.play-box-shadow-little { + align-items: center; + display: flex; + flex-direction: column; + padding: 15rpx; + width: 100%; +} + +.page-box { + background: #f7f7f7; +} + +.play-box-arrow-flex { + align-items: center; + display: flex; + justify-content: center; + position: absolute; + width: 100%; +} + +.play-box-arrow-pos { + height: 100%; + left: 40rpx; + position: absolute; + top: 40rpx; + width: 100%; +} + +.shadow-box { + border: 1rpx solid #f9f9f9; + border-radius: 10rpx; + width: 100%; +} + +.border-blue-radius { + border: 1rpx solid #0054bd; + border-radius: 20rpx; + color: #0054bd; +} + +.border-blue-radius:active { + border: 1rpx solid #9b9c9c; + border-radius: 20rpx; + color: #000; +} + +.play-box image { + height: 60rpx; + width: 60rpx; +} + +.play-box image:active { + background-color: #cccaca; + border-radius: 50%; +} + +.play-box-shadow image { + height: 60rpx; + width: 60rpx; +} + +.play-box-shadow image:active { + background-color: #cccaca; + border-radius: 50%; +} + +.play-box-shadow-little image { + height: 60rpx; + width: 60rpx; +} + +.play-box-shadow-little image:active { + background-color: #cccaca; + border-radius: 50%; +} + +.text-left input { + text-align: right; +} + +.text-length-hint-right { + font-size: 32rpx; + margin-top: 10rpx; + padding-right: 20rpx; + text-align: right; + width: 100%; +} + +.line-gray-sm { + background-color: var(--gray); + height: 10rpx; +} + +.line-gray-ssm { + align-self: center; + background-color: #f8f8f8; + height: 2rpx; + width: 95%; +} + +.line-gray-xs { + height: 20rpx; +} + +.line-gray-lg, +.line-gray-xs { + background-color: var(--gray); +} + +.line-gray-lg { + height: 30rpx; +} + +.line-gray-xl { + background-color: var(--gray); + height: 40rpx; +} + +.hint-title { + align-items: center; + color: #000; + display: flex; + flex-direction: row; + font-size: 32rpx; + height: 90rpx; + justify-content: center; +} + +.hint-title image { + height: 48rpx; + width: 48rpx; +} + +.hint-title text { + left: -30rpx; + position: relative; + top: 1px; +} + +.cardTitle { + background-color: #fff; + border: 1px dashed gray; + color: #fff; + font-size: 80rpx; + font-weight: 300; + padding: 20rpx 40rpx; + position: relative; + text-align: center; + text-shadow: 0 0 6rpx rgba(0, 0, 0, .3); +} + +.border-bottom-sm { + border-bottom: 1rpx solid #eee; +} + +.card-title-sm { + background-color: #fff; + border: 1px dashed gray; + color: #fff; + font-size: 60rpx; + font-weight: 300; + margin: 10rpx; + padding: 0rpx 20rpx; + position: relative; + text-align: center; +} + +.cardTitle::before { + border-radius: 20rpx; + display: block; + height: 6rpx; + position: absolute; + transform: skew(10deg, 0deg); + width: 60rpx; +} + +.cardTitle::after { + border-radius: 6rpx; + bottom: 76rpx; + display: block; + height: 24rpx; + left: 90rpx; + opacity: .1; + position: absolute; + width: 140rpx; +} + +@font-face { + font-display: swap; + font-family: iconfont; + font-style: normal; + font-weight: 400; + src: url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAAL0AA0AAAAABuAAAAKeAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GVgCCQhEICoFIgUsLCgABNgIkAxAEIAWFCAc7G/EFyI7CtuUTYyoihNONcXgQEVRrZM/uPqJC9R9w0UQSwQIK9+ACqNiRAwSbikMy4vzv/ctzs6kgViBK4/2V3m7glqriKpOmpCuok+pM3Exrgwaysdw21XlCXbQtisOAogDTae0fEzfw24P9u77x786VNuXwyeFSiMvjICscjo1CwPvVkXr4sLDtwZ6b0IxekIQsCwUJUcQRNaS96QAchtfHf5FRT1KTWceSTTktSP/lghbRRDVhgwNchgBkZPQhMJ1IoI+pIVAUwS+X/wqWuL6AgKglAJFAuJ+HoJ43qgoJFFCPwHywCkABQMzvbGi83DBxfd/dKasq55m43zjwNvpPRXXJ6ut9d6P/0ermpr0rb93/ZnJpVf9JXfisafAKE91rytdv4eEfTJyfNueJmqipKfDaOeU29Orq7Twm1WjvFnrp7ayKsR51Tkn9eqdWhr2Fet0UeZpk8UsLg0KCNkPLBMKpx9qLE/bq7Gff8/Xv787eyuRLAAJBx5fpxfXWyX/1TcWgdquqJvJaVgHqJRAM199QAPmcAACUAigorEMo5iOQ0KgRFYBOtyBAj2AEQr0VCCR1diKQ1dstQFHvtAA1mjwDgVr1voJAo6kxFwSadMVRWZQGTIFAhnaZZNJqI5m1M4AFHSNr9Fona7U7Jhut8lzeZDh2wcw8Okwj7tgtfDRpF0o1U1MRcjgzGt/m4voS5dXjkWUg3g4sw4gZKDTSgTha1PToRrgKo6MnDfuIECoczqr0EaHhpeCibBVG1+cmekZikThO4EOgo6bkI7fGJxgFBTUfGjpqMkwzLhSu8na9URzJuXCIif+nIiNShXrfB2zBcRqJwoQRGodDNVNTAlPWhWJx02hTLYlGqikIKVJ7o54zXmOGRIRsMAAA) format("woff2"), url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAS0AA0AAAAABuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEmAAAABoAAAAcjuL8y0dERUYAAAR4AAAAHgAAAB4AKQAKT1MvMgAAAaAAAABCAAAAVjyGSApjbWFwAAAB9AAAAD4AAAFCAA/pw2dhc3AAAARwAAAACAAAAAj//wADZ2x5ZgAAAkAAAAC3AAAAyKXtiRxoZWFkAAABMAAAADAAAAA2HF0Zv2hoZWEAAAFgAAAAHQAAACQHgwOFaG10eAAAAeQAAAAPAAAAEAwAAFpsb2NhAAACNAAAAAoAAAAKAGQAAG1heHAAAAGAAAAAHwAAACABDwBQbmFtZQAAAvgAAAFJAAACiCnmEVVwb3N0AAAERAAAACkAAAA7epyHrHjaY2BkYGAAYsUHE+Lj+W2+MnCzMIDAnflZD+F01P9JzEuZ84BcDgYmkCgATbQMO3jaY2BkYGBu+N/AEMPCAALMSxkYGVABCwBTNQMRAAAAeNpjYGRgYGBhcGEA0QwMTEDMBYQMDP/BfAYAD3EBYAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PJJ5JMDf8b2CIYW5gaAAKM4LkAN59DAsAAHjaY2GAABYIjgIAANoAZwB42mNgYGBmgGAZBkYGELAB8hjBfBYGBSDNAoRA/jOJ//8hpORrqEoGRjYGGJOBkQlIMDGgAkaGYQ8AVqkHuAAAAAAAAAAAAAAAZAAAeNodirENwjAURP2xFGjASA75EhK2FJBT+VsC4jRACkpKOlr3DMMODJIdsgE9BQMYHHTFPd07Buz2ffAnv7MzYzAFBYs8K40DWawgz9alqfe+luMZ/KmxQJB6W2jg+2HZbYfjmDcnSJhnfBMjjIIiIvX2E9LYTE4fbJyjK/AY/cWSx79xOhntUFcKXiEYi0eB2McO5ZKMroVCaPu5UpQSQlFZY5KHttBC+SOWUsSu14IO5gdbfykbAHjafZA9TgMxEIWf8wckEkIgqF1RANr8lCkTKfQIpaNINt6QaNdeeZ1IOQEtFQeg5RgcgBsg0XIKXpZJkyJr7ejzm5nnsQGc4xsK/98l7oQVjvEoXMERMuEq9RfhGvlduI4WPoUb1H+Em7hVA+EWLtQbHVTthLub0m3LCmcYCFdwiifhKvWVcI38KlzHFT6EG9S/hJsY41e4hWtlqQzhYTBBYJxBY4oN4wIxHCySMgbWoTn0ZhLMTE83ehE7mzgbKO9XYpcDHmg554Ap7T23Zr5KJ/5gy4HUmG4eBUu2KY0uInQoG18snNXdqHOw/Z7ttrTYv2uBNcfsUQ1s1Pw92zPSSGwMr5CSNfIyt6QSU49oa6zxu2cp1vNeCIlOvMv0iMeaNHU6925p4sDi5/KMHH20uZI996gcPmNZCHm/3U7EIIpdhj+T2HEZAAAAeNpjYGKAAC4wyciADljAokyMTAKJxSWpRZnF2cW6hrrJ+QWVADoqBkcAAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwADAAEABAAAAAIAAAAAeNpjYGBgZACCq0vUOUD0nflZD2E0AER/BzYAAA==) format("woff"), url(iconfont.ttf-do-not-use-local-path-./class/main.wxss&1&70816) format("truetype"); +} + +.iconfont { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: iconfont !important; + font-size: 12rpx; + font-style: normal; +} + +.icon-star-red:before { + color: red; + content: "\e618"; +} + +.tab-bar { + background: #fff; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + z-index: 100; +} + +.tab-bar, +.tab-bar-box { + display: flex; + width: 100%; +} + +.tab-bar-box { + align-items: center; + flex-direction: row; + justify-content: space-between; +} + +@-webkit-keyframes cuIcon-spin { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(359deg); + } +} + +@keyframes cuIcon-spin { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(359deg); + } +} + +.iconfont-spin { + animation: cuIcon-spin 2s linear infinite; + display: inline-block; +} + +.iconfont-pulse { + animation: cuIcon-spin 1s steps(8) infinite; + display: inline-block; +} + +[class*="cuIcon-"] { + font-family: cuIcon; + font-size: inherit; + font-style: normal; +} + +@font-face { + font-family: cuIcon; + src: url("//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831"); + src: url("//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831#iefix") format("embedded-opentype"), url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff"), url("//at.alicdn.com/t/font_533566_yfq2d9wdij.ttf?t=1545239985831") format("truetype"), url("//at.alicdn.com/t/font_533566_yfq2d9wdij.svg?t=1545239985831#iconfont") format("svg"); +} + +.cuIcon-appreciate:before { + content: "\e644"; +} + +.cuIcon-check:before { + content: "\e645"; +} + +.cuIcon-close:before { + content: "\e646"; +} + +.cuIcon-edit:before { + content: "\e649"; +} + +.cuIcon-emoji:before { + content: "\e64a"; +} + +.cuIcon-favorfill:before { + content: "\e64b"; +} + +.cuIcon-favor:before { + content: "\e64c"; +} + +.cuIcon-loading:before { + content: "\e64f"; +} + +.cuIcon-locationfill:before { + content: "\e650"; +} + +.cuIcon-location:before { + content: "\e651"; +} + +.cuIcon-phone:before { + content: "\e652"; +} + +.cuIcon-roundcheckfill:before { + content: "\e656"; +} + +.cuIcon-roundcheck:before { + content: "\e657"; +} + +.cuIcon-roundclosefill:before { + content: "\e658"; +} + +.cuIcon-roundclose:before { + content: "\e659"; +} + +.cuIcon-roundrightfill:before { + content: "\e65a"; +} + +.cuIcon-roundright:before { + content: "\e65b"; +} + +.cuIcon-search:before { + content: "\e65c"; +} + +.cuIcon-taxi:before { + content: "\e65d"; +} + +.cuIcon-timefill:before { + content: "\e65e"; +} + +.cuIcon-time:before { + content: "\e65f"; +} + +.cuIcon-unfold:before { + content: "\e661"; +} + +.cuIcon-warnfill:before { + content: "\e662"; +} + +.cuIcon-warn:before { + content: "\e663"; +} + +.cuIcon-camerafill:before { + content: "\e664"; +} + +.cuIcon-camera:before { + content: "\e665"; +} + +.cuIcon-commentfill:before { + content: "\e666"; +} + +.cuIcon-comment:before { + content: "\e667"; +} + +.cuIcon-likefill:before { + content: "\e668"; +} + +.cuIcon-like:before { + content: "\e669"; +} + +.cuIcon-notificationfill:before { + content: "\e66a"; +} + +.cuIcon-notification:before { + content: "\e66b"; +} + +.cuIcon-order:before { + content: "\e66c"; +} + +.cuIcon-samefill:before { + content: "\e66d"; +} + +.cuIcon-same:before { + content: "\e66e"; +} + +.cuIcon-deliver:before { + content: "\e671"; +} + +.cuIcon-evaluate:before { + content: "\e672"; +} + +.cuIcon-pay:before { + content: "\e673"; +} + +.cuIcon-send:before { + content: "\e675"; +} + +.cuIcon-shop:before { + content: "\e676"; +} + +.cuIcon-ticket:before { + content: "\e677"; +} + +.cuIcon-back:before { + content: "\e679"; +} + +.cuIcon-cascades:before { + content: "\e67c"; +} + +.cuIcon-discover:before { + content: "\e67e"; +} + +.cuIcon-list:before { + content: "\e682"; +} + +.cuIcon-more:before { + content: "\e684"; +} + +.cuIcon-scan:before { + content: "\e689"; +} + +.cuIcon-settings:before { + content: "\e68a"; +} + +.cuIcon-questionfill:before { + content: "\e690"; +} + +.cuIcon-question:before { + content: "\e691"; +} + +.cuIcon-shopfill:before { + content: "\e697"; +} + +.cuIcon-form:before { + content: "\e699"; +} + +.cuIcon-pic:before { + content: "\e69b"; +} + +.cuIcon-filter:before { + content: "\e69c"; +} + +.cuIcon-footprint:before { + content: "\e69d"; +} + +.cuIcon-top:before { + content: "\e69e"; +} + +.cuIcon-pulldown:before { + content: "\e69f"; +} + +.cuIcon-pullup:before { + content: "\e6a0"; +} + +.cuIcon-right:before { + content: "\e6a3"; +} + +.cuIcon-refresh:before { + content: "\e6a4"; +} + +.cuIcon-moreandroid:before { + content: "\e6a5"; +} + +.cuIcon-deletefill:before { + content: "\e6a6"; +} + +.cuIcon-refund:before { + content: "\e6ac"; +} + +.cuIcon-cart:before { + content: "\e6af"; +} + +.cuIcon-qrcode:before { + content: "\e6b0"; +} + +.cuIcon-remind:before { + content: "\e6b2"; +} + +.cuIcon-delete:before { + content: "\e6b4"; +} + +.cuIcon-profile:before { + content: "\e6b7"; +} + +.cuIcon-home:before { + content: "\e6b8"; +} + +.cuIcon-cartfill:before { + content: "\e6b9"; +} + +.cuIcon-discoverfill:before { + content: "\e6ba"; +} + +.cuIcon-homefill:before { + content: "\e6bb"; +} + +.cuIcon-message:before { + content: "\e6bc"; +} + +.cuIcon-addressbook:before { + content: "\e6bd"; +} + +.cuIcon-link:before { + content: "\e6bf"; +} + +.cuIcon-lock:before { + content: "\e6c0"; +} + +.cuIcon-unlock:before { + content: "\e6c2"; +} + +.cuIcon-vip:before { + content: "\e6c3"; +} + +.cuIcon-weibo:before { + content: "\e6c4"; +} + +.cuIcon-activity:before { + content: "\e6c5"; +} + +.cuIcon-friendaddfill:before { + content: "\e6c9"; +} + +.cuIcon-friendadd:before { + content: "\e6ca"; +} + +.cuIcon-friendfamous:before { + content: "\e6cb"; +} + +.cuIcon-friend:before { + content: "\e6cc"; +} + +.cuIcon-goods:before { + content: "\e6cd"; +} + +.cuIcon-selection:before { + content: "\e6ce"; +} + +.cuIcon-explore:before { + content: "\e6d2"; +} + +.cuIcon-present:before { + content: "\e6d3"; +} + +.cuIcon-squarecheckfill:before { + content: "\e6d4"; +} + +.cuIcon-square:before { + content: "\e6d5"; +} + +.cuIcon-squarecheck:before { + content: "\e6d6"; +} + +.cuIcon-round:before { + content: "\e6d7"; +} + +.cuIcon-roundaddfill:before { + content: "\e6d8"; +} + +.cuIcon-roundadd:before { + content: "\e6d9"; +} + +.cuIcon-add:before { + content: "\e6da"; +} + +.cuIcon-notificationforbidfill:before { + content: "\e6db"; +} + +.cuIcon-explorefill:before { + content: "\e6dd"; +} + +.cuIcon-fold:before { + content: "\e6de"; +} + +.cuIcon-game:before { + content: "\e6df"; +} + +.cuIcon-redpacket:before { + content: "\e6e0"; +} + +.cuIcon-selectionfill:before { + content: "\e6e1"; +} + +.cuIcon-similar:before { + content: "\e6e2"; +} + +.cuIcon-appreciatefill:before { + content: "\e6e3"; +} + +.cuIcon-infofill:before { + content: "\e6e4"; +} + +.cuIcon-info:before { + content: "\e6e5"; +} + +.cuIcon-forwardfill:before { + content: "\e6ea"; +} + +.cuIcon-forward:before { + content: "\e6eb"; +} + +.cuIcon-rechargefill:before { + content: "\e6ec"; +} + +.cuIcon-recharge:before { + content: "\e6ed"; +} + +.cuIcon-vipcard:before { + content: "\e6ee"; +} + +.cuIcon-voice:before { + content: "\e6ef"; +} + +.cuIcon-voicefill:before { + content: "\e6f0"; +} + +.cuIcon-friendfavor:before { + content: "\e6f1"; +} + +.cuIcon-wifi:before { + content: "\e6f2"; +} + +.cuIcon-share:before { + content: "\e6f3"; +} + +.cuIcon-wefill:before { + content: "\e6f4"; +} + +.cuIcon-we:before { + content: "\e6f5"; +} + +.cuIcon-lightauto:before { + content: "\e6f6"; +} + +.cuIcon-lightforbid:before { + content: "\e6f7"; +} + +.cuIcon-lightfill:before { + content: "\e6f8"; +} + +.cuIcon-camerarotate:before { + content: "\e6f9"; +} + +.cuIcon-light:before { + content: "\e6fa"; +} + +.cuIcon-barcode:before { + content: "\e6fb"; +} + +.cuIcon-flashlightclose:before { + content: "\e6fc"; +} + +.cuIcon-flashlightopen:before { + content: "\e6fd"; +} + +.cuIcon-searchlist:before { + content: "\e6fe"; +} + +.cuIcon-service:before { + content: "\e6ff"; +} + +.cuIcon-sort:before { + content: "\e700"; +} + +.cuIcon-down:before { + content: "\e703"; +} + +.cuIcon-mobile:before { + content: "\e704"; +} + +.cuIcon-mobilefill:before { + content: "\e705"; +} + +.cuIcon-copy:before { + content: "\e706"; +} + +.cuIcon-countdownfill:before { + content: "\e707"; +} + +.cuIcon-countdown:before { + content: "\e708"; +} + +.cuIcon-noticefill:before { + content: "\e709"; +} + +.cuIcon-notice:before { + content: "\e70a"; +} + +.cuIcon-upstagefill:before { + content: "\e70e"; +} + +.cuIcon-upstage:before { + content: "\e70f"; +} + +.cuIcon-babyfill:before { + content: "\e710"; +} + +.cuIcon-baby:before { + content: "\e711"; +} + +.cuIcon-brandfill:before { + content: "\e712"; +} + +.cuIcon-brand:before { + content: "\e713"; +} + +.cuIcon-choicenessfill:before { + content: "\e714"; +} + +.cuIcon-choiceness:before { + content: "\e715"; +} + +.cuIcon-clothesfill:before { + content: "\e716"; +} + +.cuIcon-clothes:before { + content: "\e717"; +} + +.cuIcon-creativefill:before { + content: "\e718"; +} + +.cuIcon-creative:before { + content: "\e719"; +} + +.cuIcon-female:before { + content: "\e71a"; +} + +.cuIcon-keyboard:before { + content: "\e71b"; +} + +.cuIcon-male:before { + content: "\e71c"; +} + +.cuIcon-newfill:before { + content: "\e71d"; +} + +.cuIcon-new:before { + content: "\e71e"; +} + +.cuIcon-pullleft:before { + content: "\e71f"; +} + +.cuIcon-pullright:before { + content: "\e720"; +} + +.cuIcon-rankfill:before { + content: "\e721"; +} + +.cuIcon-rank:before { + content: "\e722"; +} + +.cuIcon-bad:before { + content: "\e723"; +} + +.cuIcon-cameraadd:before { + content: "\e724"; +} + +.cuIcon-focus:before { + content: "\e725"; +} + +.cuIcon-friendfill:before { + content: "\e726"; +} + +.cuIcon-cameraaddfill:before { + content: "\e727"; +} + +.cuIcon-apps:before { + content: "\e729"; +} + +.cuIcon-paintfill:before { + content: "\e72a"; +} + +.cuIcon-paint:before { + content: "\e72b"; +} + +.cuIcon-picfill:before { + content: "\e72c"; +} + +.cuIcon-refresharrow:before { + content: "\e72d"; +} + +.cuIcon-colorlens:before { + content: "\e6e6"; +} + +.cuIcon-markfill:before { + content: "\e730"; +} + +.cuIcon-mark:before { + content: "\e731"; +} + +.cuIcon-presentfill:before { + content: "\e732"; +} + +.cuIcon-repeal:before { + content: "\e733"; +} + +.cuIcon-album:before { + content: "\e734"; +} + +.cuIcon-peoplefill:before { + content: "\e735"; +} + +.cuIcon-people:before { + content: "\e736"; +} + +.cuIcon-servicefill:before { + content: "\e737"; +} + +.cuIcon-repair:before { + content: "\e738"; +} + +.cuIcon-file:before { + content: "\e739"; +} + +.cuIcon-repairfill:before { + content: "\e73a"; +} + +.cuIcon-taoxiaopu:before { + content: "\e73b"; +} + +.cuIcon-weixin:before { + content: "\e612"; +} + +.cuIcon-attentionfill:before { + content: "\e73c"; +} + +.cuIcon-attention:before { + content: "\e73d"; +} + +.cuIcon-commandfill:before { + content: "\e73e"; +} + +.cuIcon-command:before { + content: "\e73f"; +} + +.cuIcon-communityfill:before { + content: "\e740"; +} + +.cuIcon-community:before { + content: "\e741"; +} + +.cuIcon-read:before { + content: "\e742"; +} + +.cuIcon-calendar:before { + content: "\e74a"; +} + +.cuIcon-cut:before { + content: "\e74b"; +} + +.cuIcon-magic:before { + content: "\e74c"; +} + +.cuIcon-backwardfill:before { + content: "\e74d"; +} + +.cuIcon-playfill:before { + content: "\e74f"; +} + +.cuIcon-stop:before { + content: "\e750"; +} + +.cuIcon-tagfill:before { + content: "\e751"; +} + +.cuIcon-tag:before { + content: "\e752"; +} + +.cuIcon-group:before { + content: "\e753"; +} + +.cuIcon-all:before { + content: "\e755"; +} + +.cuIcon-backdelete:before { + content: "\e756"; +} + +.cuIcon-hotfill:before { + content: "\e757"; +} + +.cuIcon-hot:before { + content: "\e758"; +} + +.cuIcon-post:before { + content: "\e759"; +} + +.cuIcon-radiobox:before { + content: "\e75b"; +} + +.cuIcon-rounddown:before { + content: "\e75c"; +} + +.cuIcon-upload:before { + content: "\e75d"; +} + +.cuIcon-writefill:before { + content: "\e760"; +} + +.cuIcon-write:before { + content: "\e761"; +} + +.cuIcon-radioboxfill:before { + content: "\e763"; +} + +.cuIcon-punch:before { + content: "\e764"; +} + +.cuIcon-shake:before { + content: "\e765"; +} + +.cuIcon-move:before { + content: "\e768"; +} + +.cuIcon-safe:before { + content: "\e769"; +} + +.cuIcon-activityfill:before { + content: "\e775"; +} + +.cuIcon-crownfill:before { + content: "\e776"; +} + +.cuIcon-crown:before { + content: "\e777"; +} + +.cuIcon-goodsfill:before { + content: "\e778"; +} + +.cuIcon-messagefill:before { + content: "\e779"; +} + +.cuIcon-profilefill:before { + content: "\e77a"; +} + +.cuIcon-sound:before { + content: "\e77b"; +} + +.cuIcon-sponsorfill:before { + content: "\e77c"; +} + +.cuIcon-sponsor:before { + content: "\e77d"; +} + +.cuIcon-upblock:before { + content: "\e77e"; +} + +.cuIcon-weblock:before { + content: "\e77f"; +} + +.cuIcon-weunblock:before { + content: "\e780"; +} + +.cuIcon-my:before { + content: "\e78b"; +} + +.cuIcon-myfill:before { + content: "\e78c"; +} + +.cuIcon-emojifill:before { + content: "\e78d"; +} + +.cuIcon-emojiflashfill:before { + content: "\e78e"; +} + +.cuIcon-flashbuyfill:before { + content: "\e78f"; +} + +.cuIcon-text:before { + content: "\e791"; +} + +.cuIcon-goodsfavor:before { + content: "\e794"; +} + +.cuIcon-musicfill:before { + content: "\e795"; +} + +.cuIcon-musicforbidfill:before { + content: "\e796"; +} + +.cuIcon-card:before { + content: "\e624"; +} + +.cuIcon-triangledownfill:before { + content: "\e79b"; +} + +.cuIcon-triangleupfill:before { + content: "\e79c"; +} + +.cuIcon-roundleftfill-copy:before { + content: "\e79e"; +} + +.cuIcon-font:before { + content: "\e76a"; +} + +.cuIcon-title:before { + content: "\e82f"; +} + +.cuIcon-recordfill:before { + content: "\e7a4"; +} + +.cuIcon-record:before { + content: "\e7a6"; +} + +.cuIcon-cardboardfill:before { + content: "\e7a9"; +} + +.cuIcon-cardboard:before { + content: "\e7aa"; +} + +.cuIcon-formfill:before { + content: "\e7ab"; +} + +.cuIcon-coin:before { + content: "\e7ac"; +} + +.cuIcon-cardboardforbid:before { + content: "\e7af"; +} + +.cuIcon-circlefill:before { + content: "\e7b0"; +} + +.cuIcon-circle:before { + content: "\e7b1"; +} + +.cuIcon-attentionforbid:before { + content: "\e7b2"; +} + +.cuIcon-attentionforbidfill:before { + content: "\e7b3"; +} + +.cuIcon-attentionfavorfill:before { + content: "\e7b4"; +} + +.cuIcon-attentionfavor:before { + content: "\e7b5"; +} + +.cuIcon-titles:before { + content: "\e701"; +} + +.cuIcon-icloading:before { + content: "\e67a"; +} + +.cuIcon-full:before { + content: "\e7bc"; +} + +.cuIcon-mail:before { + content: "\e7bd"; +} + +.cuIcon-peoplelist:before { + content: "\e7be"; +} + +.cuIcon-goodsnewfill:before { + content: "\e7bf"; +} + +.cuIcon-goodsnew:before { + content: "\e7c0"; +} + +.cuIcon-medalfill:before { + content: "\e7c1"; +} + +.cuIcon-medal:before { + content: "\e7c2"; +} + +.cuIcon-newsfill:before { + content: "\e7c3"; +} + +.cuIcon-newshotfill:before { + content: "\e7c4"; +} + +.cuIcon-newshot:before { + content: "\e7c5"; +} + +.cuIcon-news:before { + content: "\e7c6"; +} + +.cuIcon-videofill:before { + content: "\e7c7"; +} + +.cuIcon-video:before { + content: "\e7c8"; +} + +.cuIcon-exit:before { + content: "\e7cb"; +} + +.cuIcon-skinfill:before { + content: "\e7cc"; +} + +.cuIcon-skin:before { + content: "\e7cd"; +} + +.cuIcon-moneybagfill:before { + content: "\e7ce"; +} + +.cuIcon-usefullfill:before { + content: "\e7cf"; +} + +.cuIcon-usefull:before { + content: "\e7d0"; +} + +.cuIcon-moneybag:before { + content: "\e7d1"; +} + +.cuIcon-redpacket_fill:before { + content: "\e7d3"; +} + +.cuIcon-subscription:before { + content: "\e7d4"; +} + +.cuIcon-loading1:before { + content: "\e633"; +} + +.cuIcon-github:before { + content: "\e692"; +} + +.cuIcon-global:before { + content: "\e7eb"; +} + +.cuIcon-settingsfill:before { + content: "\e6ab"; +} + +.cuIcon-back_android:before { + content: "\e7ed"; +} + +.cuIcon-expressman:before { + content: "\e7ef"; +} + +.cuIcon-evaluate_fill:before { + content: "\e7f0"; +} + +.cuIcon-group_fill:before { + content: "\e7f5"; +} + +.cuIcon-play_forward_fill:before { + content: "\e7f6"; +} + +.cuIcon-deliver_fill:before { + content: "\e7f7"; +} + +.cuIcon-notice_forbid_fill:before { + content: "\e7f8"; +} + +.cuIcon-fork:before { + content: "\e60c"; +} + +.cuIcon-pick:before { + content: "\e7fa"; +} + +.cuIcon-wenzi:before { + content: "\e6a7"; +} + +.cuIcon-ellipse:before { + content: "\e600"; +} + +.cuIcon-qr_code:before { + content: "\e61b"; +} + +.cuIcon-dianhua:before { + content: "\e64d"; +} + +.cuIcon-icon:before { + content: "\e602"; +} + +.cuIcon-loading2:before { + content: "\e7f1"; +} + +.cuIcon-btn:before { + content: "\e601"; +} + +page { + --red: #e54d42; + --orange: #f37b1d; + --yellow: #fbbd08; + --olive: #8dc63f; + --green: #39b54a; + --cyan: #1cbbb4; + --blue: #0054bd; + --purple: #6739b6; + --mauve: #9c26b0; + --pink: #e03997; + --brown: #a5673f; + --grey: #8799a3; + --black: #333; + --darkGray: #666; + --gray: #aaa; + --ghostWhite: #f4f4f4; + --white: #fff; + --depBlack: #000; + --redLight: #fadbd9; + --orangeLight: #fde6d2; + --yellowLight: #ff4949; + --oliveLight: #e8f4d9; + --greenLight: #d7f0db; + --cyanLight: #d2f1f0; + --blueLight: #cce6ff; + --purpleLight: #e1d7f0; + --mauveLight: #ebd4ef; + --pinkLight: #f9d7ea; + --brownLight: #ede1d9; + --greyLight: #e7ebed; + --gradualRed: linear-gradient(45deg, #f43f3b, #ec008c); + --gradualOrange: linear-gradient(45deg, #ff9700, #ed1c24); + --gradualGreen: linear-gradient(45deg, #39b54a, #8dc63f); + --gradualPurple: linear-gradient(45deg, #9000ff, #5e00ff); + --gradualPink: linear-gradient(45deg, #ec008c, #6739b6); + --gradualBlue: linear-gradient(45deg, #0081ff, #1cbbb4); + --gradualWhite: linear-gradient(45deg, #fff, #f8f8f8); + --gradualGray: linear-gradient(85deg, #faf9f9, #f5f2f2); + --gradualYellow: linear-gradient(85deg, #f4dbb8, #e6b980); + --ShadowSize: 6rpx 6rpx 8rpx; + --redShadow: rgba(204, 69, 59, .2); + --orangeShadow: rgba(217, 109, 26, .2); + --yellowShadow: rgba(224, 170, 7, .2); + --oliveShadow: rgba(124, 173, 55, .2); + --greenShadow: rgba(48, 156, 63, .2); + --cyanShadow: rgba(28, 187, 180, .2); + --blueShadow: rgba(0, 102, 204, .2); + --purpleShadow: rgba(88, 48, 156, .2); + --mauveShadow: rgba(133, 33, 150, .2); + --pinkShadow: rgba(199, 50, 134, .2); + --brownShadow: rgba(140, 88, 53, .2); + --greyShadow: rgba(114, 130, 138, .2); + --grayShadow: rgba(114, 130, 138, .2); + --blackShadow: rgba(26, 26, 26, .2); + background-color: var(--ghostWhite); + color: var(--black); + font-family: Helvetica Neue, Helvetica, sans-serif; + font-size: 28rpx; +} + +button, +image, +input, +label, +navigator, +scroll-view, +swiper, +textarea, +view { + box-sizing: border-box; +} + +.round { + border-radius: 5000rpx; +} + +.radius { + border-radius: 6rpx; +} + +image { + display: inline-block; + max-width: 100%; + position: relative; + z-index: 0; +} + +image.loading::before { + background-color: #f5f5f5; + content: ""; + display: block; + height: 100%; + position: absolute; + width: 100%; + z-index: -2; +} + +image.loading::after { + animation: cuIcon-spin 2s linear infinite; + bottom: 0; + color: #ccc; + content: "\e7f1"; + display: block; + font-family: cuIcon; + font-size: 32rpx; + height: 32rpx; + left: 0; + line-height: 32rpx; + margin: auto; + position: absolute; + right: 0; + top: 0; + width: 32rpx; + z-index: -1; +} + +.response { + width: 100%; +} + +checkbox, +radio, +switch { + position: relative; +} + +switch::after, +switch::before { + bottom: 0; + color: var(--white) !important; + content: "\e645"; + font-family: cuIcon; + font-size: 26rpx; + height: 26px; + left: 0rpx; + line-height: 26px; + margin: auto; + pointer-events: none; + position: absolute; + text-align: center; + top: 0; + transform: scale(0, 0); + transition: all .3s ease-in-out 0s; + width: 50%; + z-index: 9; +} + +switch::before { + content: "\e646"; + left: auto; + right: 0; +} + +switch.checked::after, +switch::before, +switch[checked]::after { + transform: scale(1, 1); +} + +switch.checked::before, +switch[checked]::before { + transform: scale(0, 0); +} + +checkbox::before, +radio::before { + color: var(--white) !important; + content: "\e645"; + font-family: cuIcon; + font-size: 32rpx; + line-height: 16px; + margin-top: -8px; + pointer-events: none; + position: absolute; + right: 5px; + top: 50%; + transform: scale(1, 1); + transition: all .3s ease-in-out 0s; + z-index: 9; +} + +checkbox .wx-checkbox-input, +radio .wx-radio-input { + height: 20px; + margin: 0; + width: 20px; +} + +checkbox.round .wx-checkbox-input { + border-radius: 100rpx; +} + +switch .wx-switch-input { + border: none; + border-radius: 100rpx; + height: 26px; + margin: 0; + padding: 0 24px; + width: 48px; +} + +switch .wx-switch-input:not([class*="bg-"]) { + background: var(--grey) !important; +} + +switch .wx-switch-input::after { + border-radius: 100rpx; + bottom: 0rpx; + height: 26px; + left: 0rpx; + margin: auto; + position: absolute; + top: 0rpx; + transform: scale(.9, .9); + transition: all .1s ease-in-out 0s; + width: 26px; +} + +switch .wx-switch-input.wx-switch-input-checked::after { + box-shadow: none; + left: 22px; + margin: auto; + transform: scale(.9, .9); +} + +radio-group { + display: inline-block; +} + +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input::before { + border-radius: 10rpx; +} + +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +radio.radio::before, +switch .wx-switch-input::before { + display: none; +} + +radio.radio[checked]::after { + background-color: initial; + border: 8px solid var(--white) !important; + border-radius: 200rpx; + bottom: 0; + content: ""; + display: block; + height: 8px; + left: 0rpx; + margin: auto; + position: absolute; + right: 0; + top: 0rpx; + width: 8px; + z-index: 999; +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input { + background: var(--red) !important; + border-color: var(--red) !important; +} + +.switch-sex[checked] .wx-switch-input { + background: var(--blue) !important; + border-color: var(--blue) !important; +} + +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red[checked] .wx-switch-input { + border-color: var(--red) !important; +} + +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange[checked] .wx-switch-input { + border-color: var(--orange) !important; +} + +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow[checked] .wx-switch-input { + border-color: var(--yellow) !important; +} + +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive[checked] .wx-switch-input { + border-color: var(--olive) !important; +} + +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +switch.green[checked] .wx-switch-input { + border-color: var(--green) !important; +} + +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan[checked] .wx-switch-input { + border-color: var(--cyan) !important; +} + +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue[checked] .wx-switch-input { + border-color: var(--blue) !important; +} + +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple[checked] .wx-switch-input { + border-color: var(--purple) !important; +} + +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve[checked] .wx-switch-input { + border-color: var(--mauve) !important; +} + +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink[checked] .wx-switch-input { + border-color: var(--pink) !important; +} + +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown[checked] .wx-switch-input { + border-color: var(--brown) !important; +} + +checkbox.gray[checked] .wx-checkbox-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +radio.grey[checked] .wx-radio-input, +switch.gray[checked] .wx-switch-input, +switch.grey[checked] .wx-switch-input { + border-color: var(--grey) !important; +} + +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black[checked] .wx-switch-input { + border-color: var(--black) !important; +} + +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white[checked] .wx-switch-input { + border-color: var(--white) !important; +} + +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red[checked] .wx-switch-input.wx-switch-input-checked { + background-color: var(--red) !important; + color: var(--white) !important; +} + +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange[checked] .wx-switch-input { + background-color: var(--orange) !important; + color: var(--white) !important; +} + +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow[checked] .wx-switch-input { + background-color: var(--yellow) !important; + color: var(--black) !important; +} + +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive[checked] .wx-switch-input { + background-color: var(--olive) !important; + color: var(--white) !important; +} + +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input, +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input { + background-color: var(--green) !important; + color: var(--white) !important; +} + +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan[checked] .wx-switch-input { + background-color: var(--cyan) !important; + color: var(--white) !important; +} + +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue[checked] .wx-switch-input { + background-color: var(--blue) !important; + color: var(--white) !important; +} + +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple[checked] .wx-switch-input { + background-color: var(--purple) !important; + color: var(--white) !important; +} + +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve[checked] .wx-switch-input { + background-color: var(--mauve) !important; + color: var(--white) !important; +} + +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink[checked] .wx-switch-input { + background-color: var(--pink) !important; + color: var(--white) !important; +} + +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown[checked] .wx-switch-input { + background-color: var(--brown) !important; + color: var(--white) !important; +} + +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input, +switch.grey[checked] .wx-switch-input { + background-color: var(--grey) !important; + color: var(--white) !important; +} + +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +switch.gray[checked] .wx-switch-input { + background-color: #f0f0f0 !important; + color: var(--black) !important; +} + +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black[checked] .wx-switch-input { + background-color: var(--black) !important; + color: var(--white) !important; +} + +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white[checked] .wx-switch-input { + background-color: var(--white) !important; + color: var(--black) !important; +} + +.dashed, +.dashed-bottom, +.dashed-left, +.dashed-right, +.dashed-top, +.solid, +.solid-bottom, +.solid-left, +.solid-right, +.solid-top, +.solids, +.solids-bottom, +.solids-left, +.solids-right, +.solids-top { + position: relative; +} + +.dashed-bottom::after, +.dashed-left::after, +.dashed-right::after, +.dashed-top::after, +.dashed::after, +.solid-bottom::after, +.solid-left::after, +.solid-right::after, +.solid-top::after, +.solid::after, +.solids-bottom::after, +.solids-left::after, +.solids-right::after, +.solids-top::after, +.solids::after { + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; +} + +.solid::after { + border: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-top::after { + border-top: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-right::after { + border-right: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-bottom::after { + border-bottom: 1rpx solid rgba(0, 0, 0, .1); +} + +.solid-left::after { + border-left: 1rpx solid rgba(0, 0, 0, .1); +} + +.solids::after { + border: 8rpx solid #eee; +} + +.solids-top::after { + border-top: 8rpx solid #eee; +} + +.solids-right::after { + border-right: 8rpx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8rpx solid #eee; +} + +.solids-left::after { + border-left: 8rpx solid #eee; +} + +.dashed::after { + border: 1rpx dashed #ddd; +} + +.dashed-top::after { + border-top: 1rpx dashed #ddd; +} + +.dashed-right::after { + border-right: 1rpx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1rpx dashed #ddd; +} + +.dashed-left::after { + border-left: 1rpx dashed #ddd; +} + +.shadow[class*="white"] { + --ShadowSize: 0 1rpx 6rpx; +} + +.shadow-lg { + --ShadowSize: 0rpx 40rpx 100rpx 0rpx; +} + +.shadow-warp { + box-shadow: 0 0 10rpx rgba(0, 0, 0, .1); + position: relative; +} + +.shadow-warp:after, +.shadow-warp:before { + bottom: 30rpx; + box-shadow: 0 30rpx 20rpx rgba(0, 0, 0, .2); + content: ""; + left: 20rpx; + position: absolute; + top: 20rpx; + transform: rotate(-3deg); + width: 50%; + z-index: -1; +} + +.shadow-warp:after { + left: auto; + right: 20rpx; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + background: inherit; + border-radius: inherit; + content: ""; + display: block; + filter: blur(10rpx); + height: 100%; + left: 10rpx; + opacity: .4; + position: absolute; + top: 10rpx; + transform: scale(1, 1); + transform-origin: 0 0; + width: 100%; + z-index: -1; +} + +.cu-btn { + align-items: center; + border: 0rpx; + box-sizing: border-box; + display: inline-flex; + font-size: 28rpx; + height: 90rpx; + justify-content: center; + line-height: 1; + margin-left: 0; + margin-right: 0; + overflow: visible; + padding: 20rpx 30rpx; + position: relative; + text-align: center; + text-decoration: none; + transform: translate(0rpx, 0rpx); +} + +.cu-btn::after { + background-color: #f5f5f5; + display: none; +} + +.cu-btn:active, +.cu-btn:focus { + background-color: #f5f5f5; + color: #000; +} + +.cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} + +.cu-btn[class*="line"] { + background-color: initial; +} + +.cu-btn[class*="line"]::after { + border: 1rpx solid; + border-radius: 12rpx; + box-sizing: border-box; + content: " "; + display: block; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; + z-index: 1; +} + +.cu-btn.foot { + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, .1); + z-index: 1024; +} + +.cu-btn.foot, +.foot { + bottom: 0; + position: fixed; + width: 100%; +} + +.foot { + z-index: 10; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000rpx; +} + +.cu-btn.radius[class*="line"]::after { + border-radius: 10rpx; +} + +.cu-btn[class*="lines"]::after { + border: 6rpx solid; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + font-size: 20rpx; + height: 48rpx; + padding: 0 20rpx; +} + +.cu-btn.lg { + font-size: 32rpx; + height: 80rpx; + padding: 0 40rpx; +} + +.cu-btn.icon.sm { + height: 48rpx; + width: 48rpx; +} + +.cu-btn.icon { + border-radius: 500rpx; + height: 64rpx; + padding: 0; + width: 64rpx; +} + +button.icon.lg { + height: 80rpx; + width: 80rpx; +} + +.image-32 { + height: 64rpx; + width: 64rpx; +} + +.image-64 { + height: 128rpx; + width: 128rpx; +} + +.cu-btn.shadow-blur::before { + filter: blur(6rpx); + left: 4rpx; + opacity: .6; + top: 4rpx; +} + +.cu-btn.button-hover { + transform: translate(1rpx, 1rpx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + color: var(--white); + opacity: .6; +} + +.cu-tag { + align-items: center; + box-sizing: border-box; + display: inline-flex; + font-family: Helvetica Neue, Helvetica, sans-serif; + height: 48rpx; + justify-content: center; + padding: 0rpx 16rpx; + position: relative; + vertical-align: middle; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: var(--ghostWhite); +} + +.cu-tag[class*="line-"]::after { + border: 1rpx solid; + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; + z-index: 1; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12rpx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000rpx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10rpx; +} + +.cu-tag.sm { + font-size: 20rpx; + height: 32rpx; + padding: 0rpx 12rpx; +} + +.cu-tag.lg { + font-size: 24rpx; + height: 20px; + padding: 0rpx 12rpx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 0rpx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0rpx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0rpx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-bottom-left-radius: 6rpx; + border-top-left-radius: 6rpx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-bottom-right-radius: 12rpx; + border-top-right-radius: 12rpx; +} + +.cu-capsule.round .cu-tag:first-child { + border-bottom-left-radius: 200rpx; + border-top-left-radius: 200rpx; + text-indent: 4rpx; +} + +.cu-capsule.round .cu-tag:last-child, +.cu-capsule.round .cu-tag:last-child::after { + border-bottom-right-radius: 200rpx; + border-top-right-radius: 200rpx; + text-indent: -4rpx; +} + +.cu-tag.badge { + border-radius: 200rpx; + color: var(--white); + font-size: 20rpx; + height: 28rpx; + padding: 0rpx 10rpx; + position: absolute; + right: -10rpx; + top: -10rpx; +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag.badgegray { + border-radius: 200rpx; + color: var(--white); + font-size: 20rpx; + height: 28rpx; + padding: 0rpx 10rpx; + position: absolute; + right: -10rpx; + top: -10rpx; +} + +.cu-tag.badgegray:not([class*="bg-"]) { + background-color: #555; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + height: 16rpx; + padding: 0rpx; + right: -4rpx; + top: -4rpx; + width: 16rpx; +} + +.cu-tag[class*="cuIcon-"] { + height: 32rpx; + right: -4rpx; + top: -4rpx; + width: 32rpx; +} + +.cu-avatar { + align-items: center; + background-color: #ccc; + background-position: 50%; + background-size: cover; + color: var(--white); + display: inline-flex; + font-size: 1.5em; + font-variant: small-caps; + height: 64rpx; + justify-content: center; + margin: 0; + padding: 0; + position: relative; + text-align: center; + vertical-align: middle; + white-space: nowrap; + width: 64rpx; +} + +.cu-avatar.sm { + font-size: 1em; + height: 48rpx; + width: 48rpx; +} + +.cu-avatar.lg { + font-size: 2em; + height: 96rpx; + width: 96rpx; +} + +.cu-avatar.xl { + font-size: 2.5em; + height: 128rpx; + width: 128rpx; +} + +.cu-avatar .avatar-text { + font-size: .4em; +} + +.cu-avatar-group { + direction: rtl; + display: inline-block; + padding: 0 10rpx 0 40rpx; + unicode-bidi: bidi-override; +} + +.cu-avatar-group .cu-avatar { + border: 4rpx solid var(--ghostWhite); + margin-left: -30rpx; + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + border: 1rpx solid var(--ghostWhite); + margin-left: -20rpx; +} + +.cu-progress { + align-items: center; + background-color: #ebeef5; + display: inline-flex; + height: 28rpx; + overflow: hidden; + width: 100%; +} + +.cu-progress+text, +.cu-progress+view { + line-height: 1; +} + +.cu-progress.xs { + height: 10rpx; +} + +.cu-progress.sm { + height: 20rpx; +} + +.cu-progress view { + color: var(--white); + height: 100%; + justify-content: space-around; + justify-items: flex-end; + transition: width .6s ease; + width: 0; +} + +.cu-progress text, +.cu-progress view { + align-items: center; + display: flex; + font-size: 20rpx; +} + +.cu-progress text { + color: var(--black); + text-indent: 10rpx; +} + +.cu-progress.text-progress { + padding-right: 60rpx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, hsla(0, 0%, 100%, .15) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, .15) 0, hsla(0, 0%, 100%, .15) 75%, transparent 0, transparent); + background-size: 72rpx 72rpx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@-webkit-keyframes progress-stripes { + from { + background-position: 72rpx 0; + } + + to { + background-position: 0 0; + } +} + +@keyframes progress-stripes { + from { + background-position: 72rpx 0; + } + + to { + background-position: 0 0; + } +} + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + display: inline-block; + font-family: cuIcon; + margin-right: 6rpx; +} + +.cu-load.loading::before { + animation: cuIcon-spin 2s linear infinite; + content: "\e67a"; +} + +.cu-load.loading::after { + content: "加载中..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "没有更多了"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "加载失败"; +} + +.cu-load.load-icon::before { + font-size: 32rpx; +} + +.cu-load.load-icon.over, +.cu-load.load-icon::after { + display: none; +} + +.cu-load.load-modal { + align-items: center; + background-color: var(--white); + border-radius: 10rpx; + bottom: 140rpx; + box-shadow: 0 0 0rpx 2000rpx rgba(0, 0, 0, .5); + display: flex; + flex-direction: column; + font-size: 28rpx; + height: 260rpx; + justify-content: center; + left: 0; + line-height: 2.4em; + margin: auto; + position: fixed; + right: 0; + top: 0; + width: 260rpx; + z-index: 9999; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60rpx; +} + +.cu-load.load-modal image { + height: 70rpx; + width: 70rpx; +} + +.cu-load.load-modal::after { + animation: cuIcon-spin 1s linear infinite; + background-color: var(--white); + border: 6rpx solid rgba(0, 0, 0, .05); + border-left: 6rpx solid var(--orange); + border-radius: 50%; + content: ""; + font-size: 10px; + height: 200rpx; + position: absolute; + width: 200rpx; + z-index: -1; +} + +.load-progress { + left: 0; + pointer-events: none; + position: fixed; + top: 0; + width: 100%; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + height: 4rpx; + overflow: hidden; + position: relative; + transition: all .2s ease 0s; + width: 100%; +} + +.load-progress .load-progress-spinner { + display: block; + position: absolute; + right: 10rpx; + top: 10rpx; + z-index: 2000; +} + +.load-progress .load-progress-spinner::after { + animation: load-progress-spinner .4s linear infinite; + border: 4rpx solid transparent; + border-left-color: inherit; + border-radius: 50%; + border-top-color: inherit; + box-sizing: border-box; + content: ""; + display: block; + height: 24rpx; + width: 24rpx; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(1turn); + } +} + +@keyframes load-progress-spinner { + 0% { + transform: rotate(0); + } + + 100% { + transform: rotate(1turn); + } +} + +.grayscale { + filter: grayscale(1); +} + +.cu-list+.cu-list { + margin-top: 30rpx; +} + +.cu-list>.cu-item { + transform: translateX(0rpx); + transition: all .6s ease-in-out 0s; +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-260rpx); +} + +.cu-list>.cu-item .move { + display: flex; + height: 100%; + position: absolute; + right: 0; + transform: translateX(100%); + width: 260rpx; +} + +.cu-list>.cu-item .move view { + align-items: center; + display: flex; + flex: 1; + justify-content: center; +} + +.cu-list.menu-avatar { + overflow: hidden; +} + +.cu-list.menu-avatar>.cu-item { + align-items: center; + background-color: var(--white); + display: flex; + height: 160rpx; + justify-content: flex-end; + padding-right: 10rpx; + position: relative; +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + left: 30rpx; + position: absolute; +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510rpx; +} + +.cu-list.menu-avatar>.cu-item .content { + left: 165rpx; + line-height: 1.6em; + position: absolute; + width: calc(100% - 96rpx - 60rpx - 120rpx - 20rpx); +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96rpx - 60rpx - 20rpx); +} + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + align-items: center; + display: flex; + font-size: 30rpx; +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + font-size: 16rpx; + height: 28rpx; + line-height: 32rpx; + margin-left: 10rpx; +} + +.cu-list.menu-avatar>.cu-item .action { + text-align: center; + width: 120rpx; +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10rpx; +} + +.cu-list.menu-avatar.comment>.cu-item .content { + flex: 1; + left: 0; + position: relative; + width: auto; +} + +.cu-list.menu-avatar.comment>.cu-item { + height: auto; + padding: 30rpx 30rpx 30rpx 120rpx; +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start; +} + +.cu-list.menu>.cu-item { + align-items: center; + background-color: var(--white); + display: flex; + justify-content: space-between; + min-height: 100rpx; + padding: 0 30rpx; + position: relative; +} + +.cu-list.menu>.cu-item:last-child:after { + border: none; +} + +.border-line { + border: 1rpx solid #ddd; + border-radius: 10rpx; +} + +.cu-list.menu>.cu-item:after { + border-bottom: 1rpx solid #ddd; + border-radius: inherit; + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5; +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9; +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90rpx; +} + +.cu-list.menu>.cu-item.arrow:before { + bottom: 0; + color: var(--grey); + content: "\e6a3"; + display: block; + font-family: cuIcon; + font-size: 34rpx; + height: 30rpx; + line-height: 30rpx; + margin: auto; + position: absolute; + right: 30rpx; + text-align: center; + top: 0; + width: 30rpx; +} + +.cu-list.menu>.cu-item button.content { + background-color: initial; + justify-content: flex-start; + padding: 0; +} + +.cu-list.menu>.cu-item button.content:after { + display: none; +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: var(--white); +} + +.cu-list.menu>.cu-item .content>view:first-child { + align-items: center; + display: flex; +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10rpx; + text-align: center; + width: 1.6em; +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + height: 1.6em; + margin-right: 10rpx; + vertical-align: middle; + width: 1.6em; +} + +.cu-list.menu>.cu-item .content { + flex: 1; + font-size: 30rpx; + line-height: 1.6em; +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + font-size: 16rpx; + height: 28rpx; + line-height: 32rpx; + margin-left: 10rpx; +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10rpx; +} + +.cu-list.menu { + display: block; + overflow: hidden; +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30rpx; + width: calc(200% - 120rpx); +} + +.cu-list.grid>.cu-item { + display: flex; + flex-direction: column; + padding: 20rpx 0 30rpx; + position: relative; + transition-duration: 0s; +} + +.cu-list.grid>.cu-item:after { + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + border-right: 1px solid rgba(0, 0, 0, .1); + box-sizing: border-box; + content: " "; + height: 200%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; +} + +.cu-list.grid>.cu-item text { + color: #888; + display: block; + font-size: 26rpx; + line-height: 40rpx; + margin-top: 10rpx; +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + display: block; + font-size: 48rpx; + margin-top: 20rpx; + position: relative; + width: 100%; +} + +.cu-list.grid>.cu-item .cu-tag { + left: 50%; + margin-left: 20rpx; + right: auto; +} + +.cu-list.grid { + background-color: var(--white); + text-align: center; +} + +.cu-list.grid.no-border>.cu-item { + padding-bottom: 20rpx; + padding-top: 10rpx; +} + +.cu-list.grid.no-border>.cu-item:after { + border: none; +} + +.cu-list.grid.no-border { + padding: 0rpx 20rpx; +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0; +} + +.cu-list.card-menu { + border-radius: 20rpx; + margin-left: 30rpx; + margin-right: 30rpx; + overflow: hidden; +} + +.cu-bar { + justify-content: space-between; + min-height: 60rpx; + position: relative; +} + +.cu-bar, +.cu-bar .action { + align-items: center; + display: flex; +} + +.cu-bar .action { + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10rpx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + bottom: -.5rem; + height: 6rpx; + left: 0; + min-width: 2rem; + position: absolute; +} + +.cu-bar .action.sub-title { + position: relative; + top: -.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + border-radius: 6rpx; + bottom: -.2rem; + display: inline-block; + height: .6rem; + left: .6rem; + opacity: .3; + position: absolute; + width: 100%; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + bottom: -.7rem; + display: inline-block; + font-size: 36rpx; + font-weight: 900; + left: .5rem; + opacity: .2; + position: absolute; + text-align: right; + z-index: 0; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + margin: auto; + right: 0; + text-align: center; +} + +.cu-bar .action:first-child { + font-size: 30rpx; + margin-left: 20rpx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20rpx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -.3em; + margin-right: .3em; +} + +.cu-bar .action:last-child { + margin-right: 30rpx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36rpx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: .5em; +} + +.cu-bar .content { + bottom: 0; + cursor: none; + font-size: 32rpx; + height: 60rpx; + left: 0; + line-height: 60rpx; + margin: auto; + overflow: hidden; + position: absolute; + right: 0; + text-align: center; + text-overflow: ellipsis; + top: 0; + white-space: nowrap; + width: calc(100% - 340rpx); +} + +.cu-bar.ios .content { + bottom: 7px; + font-size: 32rpx; + height: 30px; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20rpx; + max-width: 50%; + padding: 20rpx 32rpx; +} + +.cu-bar .search-form { + align-items: center; + background-color: #f5f5f5; + color: var(--black); + display: flex; + flex: 1; + font-size: 24rpx; + height: 64rpx; + line-height: 64rpx; + margin: 0 30rpx; +} + +.cu-bar .search-form+.action { + margin-right: 30rpx; +} + +.cu-bar .search-form input { + background-color: initial; + flex: 1; + font-size: 26rpx; + height: 64rpx; + line-height: 64rpx; + padding-right: 30rpx; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 .5em 0 .8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0rpx; +} + +.cu-bar.fixed, +.nav.fixed { + box-shadow: 0 1rpx 6rpx rgba(0, 0, 0, .1); + position: fixed; + top: 0; + width: 100%; + z-index: 1024; +} + +.cu-bar.foot { + bottom: 0; + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, .1); + position: fixed; + width: 100%; + z-index: 1024; +} + +.cu-bar.tabbar { + padding: 0 0 calc(env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar, +.cu-tabbar-height { + height: calc(100rpx + env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100rpx; +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, .1); +} + +.cu-bar.tabbar .action { + display: block; + flex: 1; + font-size: 22rpx; + height: auto; + line-height: 1; + margin: 0; + overflow: initial; + padding: 0; + position: relative; + text-align: center; +} + +.cu-bar.tabbar.shop .action { + flex: initial; + width: 140rpx; +} + +.cu-bar.tabbar .action.add-action { + background-color: inherit; + padding-top: 50rpx; + position: relative; + z-index: 2; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + border-radius: 50%; + font-size: 50rpx; + height: 70rpx; + left: 0; + line-height: 70rpx; + margin: auto; + padding: 0; + position: absolute; + right: 0; + top: -35rpx; + width: 70rpx; + z-index: 2; +} + +.cu-bar.tabbar .action.add-action::after { + border-radius: 50rpx; + box-shadow: 0 -3rpx 8rpx rgba(0, 0, 0, .08); + height: 100rpx; + top: -50rpx; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::after, +.cu-bar.tabbar .action.add-action::before { + background-color: inherit; + content: ""; + left: 0; + margin: auto; + position: absolute; + right: 0; + width: 100rpx; +} + +.cu-bar.tabbar .action.add-action::before { + bottom: 30rpx; + height: 30rpx; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + align-items: center; + display: flex; + flex: 1; + justify-content: space-around; + padding: 0 10rpx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + display: block; + font-size: 40rpx; + height: auto; + margin: 0 auto 10rpx; + position: relative; + text-align: center; + width: 100rpx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + display: inline-block; + height: 50rpx; + width: 50rpx; +} + +.cu-bar.tabbar .submit { + align-items: center; + align-self: stretch; + display: flex; + flex: 2; + justify-content: center; + position: relative; + text-align: center; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + border-right: 1rpx solid rgba(0, 0, 0, .1); + content: " "; + height: 200%; + left: 0; + position: absolute; + top: 0; + transform: scale(.5); + transform-origin: 0 0; + width: 200%; + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + background-color: var(--white); + padding-right: 20rpx; +} + +.cu-bar.input input { + flex: 1; + font-size: 30rpx; + height: 64rpx; + line-height: 64rpx; + margin: 0 20rpx; + min-height: 64rpx; + overflow: initial; +} + +.cu-bar.input .action { + margin-left: 20rpx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48rpx; +} + +.cu-bar.input input+.action { + margin-left: 0rpx; + margin-right: 20rpx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0rpx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + width: calc(100% - 440rpx); +} + +.cu-custom .cu-bar .content image { + height: 60rpx; + width: 240rpx; +} + +.cu-custom .cu-bar { + box-shadow: 0rpx 0rpx 0rpx; + min-height: 0; + padding-right: 220rpx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + background: rgba(0, 0, 0, .15); + border-radius: 1000rpx; + height: 30px; + position: relative; +} + +.cu-custom .cu-bar .border-custom::after { + border: 1rpx solid var(--white); + border-radius: inherit; + height: 200%; + opacity: .5; + top: 0; + width: 200%; +} + +.cu-custom .cu-bar .border-custom::after, +.cu-custom .cu-bar .border-custom::before { + box-sizing: border-box; + content: " "; + left: 0; + pointer-events: none; + position: absolute; + transform: scale(.5); + transform-origin: 0 0; +} + +.cu-custom .cu-bar .border-custom::before { + background-color: var(--white); + height: 110%; + margin: auto; + opacity: .6; + right: 0; + top: 22.5%; + width: 1rpx; +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + font-size: 34rpx; + margin: auto !important; + text-align: center; +} + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + display: inline-block; + height: 90rpx; + line-height: 90rpx; + margin: 0 10rpx; + padding: 0 20rpx; +} + +.nav .cu-item.cur { + border-bottom: 4rpx solid; +} + +.cu-timeline { + background-color: var(--white); + display: block; +} + +.cu-timeline .cu-time { + color: #888; + display: block; + font-size: 26rpx; + padding: 20rpx 0; + text-align: center; + width: 120rpx; +} + +.cu-timeline>.cu-item { + display: block; + padding: 30rpx 30rpx 30rpx 120rpx; + position: relative; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + background-color: #ddd; + content: ""; + display: block; + height: 100%; + left: 60rpx; + position: absolute; + top: 0; + width: 1rpx; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + background-color: var(--white); + border: none; + display: block; + font-family: cuIcon; + height: 50rpx; + left: 36rpx; + line-height: 50rpx; + position: absolute; + text-align: center; + top: 36rpx; + width: 50rpx; + z-index: 9; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: var(--white); + border: none; + height: 50rpx; + left: 36rpx; + line-height: 50rpx; + text-align: center; + width: 50rpx; +} + +.cu-timeline>.cu-item>.content { + border-radius: 6rpx; + display: block; + line-height: 1.6; + padding: 30rpx; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: var(--ghostWhite); + color: var(--black); +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20rpx; +} + +.cu-chat { + flex-direction: column; +} + +.cu-chat, +.cu-chat .cu-item { + display: flex; +} + +.cu-chat .cu-item { + padding: 30rpx 30rpx 70rpx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + height: 80rpx; + width: 80rpx; +} + +.cu-chat .cu-item>.main { + align-items: center; + display: flex; + margin: 0 40rpx; + max-width: calc(100% - 260rpx); +} + +.cu-chat .cu-item>image { + height: 320rpx; +} + +.cu-chat .cu-item>.main .content { + align-items: center; + border-radius: 6rpx; + display: inline-flex; + font-size: 30rpx; + line-height: 40rpx; + max-width: 100%; + min-height: 80rpx; + padding: 20rpx; + position: relative; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: var(--white); + color: var(--black); +} + +.cu-chat .cu-item .date { + bottom: 20rpx; + color: var(--grey); + font-size: 24rpx; + left: 160rpx; + position: absolute; + width: calc(100% - 320rpx); +} + +.cu-chat .cu-item .action { + align-items: center; + display: flex; + padding: 0 30rpx; +} + +.cu-chat .cu-item>.main .content::after { + background-color: inherit; + content: ""; + display: inline-block; + height: 24rpx; + left: -12rpx; + overflow: hidden; + position: absolute; + right: auto; + top: 27rpx; + transform: rotate(45deg); + width: 24rpx; + z-index: 100; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12rpx; +} + +.cu-chat .cu-item>.main .content::before { + background-color: inherit; + content: ""; + display: inline-block; + filter: blur(5rpx); + height: 24rpx; + left: -12rpx; + opacity: .3; + overflow: hidden; + position: absolute; + right: auto; + top: 30rpx; + transform: rotate(45deg); + width: 24rpx; + z-index: -1; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: var(--black); + opacity: .1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12rpx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + background-color: rgba(0, 0, 0, .2); + border-radius: 6rpx; + color: var(--white); + display: inline-block; + font-size: 24rpx; + line-height: 1.4; + margin: 20rpx auto; + max-width: 400rpx; + padding: 8rpx 12rpx; +} + +.cu-card, +.cu-card>.cu-item { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + background-color: var(--white); + border-radius: 10rpx; + margin: 10rpx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + border-radius: 0rpx; + margin: 0rpx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20rpx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + left: 0; + position: absolute; + top: 0; +} + +.cu-card.case .image .cu-bar { + background-color: initial; + bottom: 0; + padding: 0rpx 30rpx; + position: absolute; + width: 100%; +} + +.cu-card.case.no-card .image { + border-radius: 10rpx; + margin: 30rpx 30rpx 0; + overflow: hidden; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + background-color: var(--white); + display: block; + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + font-size: 30rpx; + margin-bottom: 20rpx; + max-height: 6.4em; + overflow: hidden; + padding: 0 30rpx; +} + +.cu-card.dynamic>.cu-item .square-img { + border-radius: 6rpx; + height: 200rpx; + width: 100%; +} + +.cu-card.dynamic>.cu-item .only-img { + border-radius: 6rpx; + height: 320rpx; + width: 100%; +} + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30rpx; +} + +.cu-card.article>.cu-item .title { + color: var(--black); + font-size: 30rpx; + font-weight: 900; + line-height: 100rpx; + padding: 0 30rpx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30rpx; +} + +.cu-card.article>.cu-item .content>image { + border-radius: 6rpx; + height: 8.4em; + margin-right: 20rpx; + width: 240rpx; +} + +.cu-card.article>.cu-item .content .desc { + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + color: #888; + font-size: 28rpx; + height: 4.8em; + overflow: hidden; +} + +.cu-form-group { + align-items: center; + background-color: var(--white); + display: flex; + justify-content: space-between; + min-height: 80rpx; +} + +.cu-form-group+.cu-form-group { + border-top: 1rpx solid #eee; +} + +.cu-form-group .title { + font-size: 32rpx; + line-height: 80rpx; + padding-right: 20rpx; + position: relative; + text-align: justify; +} + +.cu-form-group .title-right { + text-align: right; +} + +.cu-form-group .title-left, +.cu-form-group .title-right { + font-size: 30rpx; + height: 60rpx; + line-height: 60rpx; + padding-right: 20rpx; + position: relative; +} + +.cu-form-group .title-left { + text-align: left; +} + +.cu-form-group input { + color: #555; + flex: 1; + font-size: 30rpx; + padding-right: 20rpx; +} + +.cu-form-group .content { + color: #000; +} + +.cu-form-group .content, +.cu-form-group .content-red { + flex: 1; + font-size: 30rpx; + padding-right: 20rpx; + text-align: right; +} + +.cu-form-group .content-red { + color: red; +} + +.cu-form-group .content-left { + color: #000; + flex: 1; + font-size: 30rpx; + padding-right: 20rpx; + text-align: left; +} + +.cu-form-group>text[class*="cuIcon-"] { + box-sizing: border-box; + font-size: 36rpx; + padding: 0; +} + +.cu-form-group textarea { + flex: 1; + font-size: 28rpx; + height: 6em; + line-height: 1.2em; + margin: 0 0 30rpx; + padding: 10rpx; + width: 100%; +} + +.cu-form-group.align-start .title { + height: 1em; + line-height: 1em; + margin-top: 32rpx; +} + +.cu-form-group picker { + flex: 1; + overflow: hidden; + padding-right: 40rpx; + position: relative; +} + +.cu-form-group picker .picker { + font-size: 32rpx; + text-align: right; +} + +.cu-form-group picker .picker, +.cu-form-group picker .picker-left { + line-height: 60rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 100%; +} + +.cu-form-group picker .picker-left { + font-size: 28rpx; + text-align: left; +} + +.cu-form-group picker::after { + bottom: 0; + color: var(--grey); + content: "\e6a3"; + display: block; + font-family: cuIcon; + font-size: 34rpx; + line-height: 60rpx; + margin: auto; + position: absolute; + right: -20rpx; + text-align: center; + top: 0; + width: 60rpx; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +.cu-modal { + backface-visibility: hidden; + background: rgba(0, 0, 0, .6); + bottom: 0; + left: 0; + opacity: 0; + outline: 0; + perspective: 2000rpx; + pointer-events: none; + position: fixed; + right: 0; + text-align: center; + top: 0; + transform: scale(1.185); + transition: all .3s ease-in-out 0s; + z-index: 1110; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; + transform: scale(1); + transition-duration: .3s; +} + +.cu-dialog { + background-color: #f8f8f8; + border-radius: 10rpx; + display: inline-block; + margin-left: auto; + margin-right: auto; + max-width: 100%; + overflow: hidden; + position: relative; + vertical-align: middle; + width: 680rpx; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + border-radius: 0; + width: 100%; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000rpx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + display: flex; + transform: scale(1); +} + +.cu-modal.drawer-modal .cu-dialog { + border-radius: 0; + height: 100%; + margin: initial; + min-width: 200rpx; + transition-duration: .3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0); +} + +.cu-modal .cu-dialog>.cu-bar:first-child .action { + margin-right: 0; + min-height: 100rpx; + min-width: 100rpx; +} + +swiper .a-swiper-dot { + background: rgba(0, 0, 0, .3); + border-radius: 50%; + display: inline-block; + height: 16rpx; + vertical-align: middle; + width: 16rpx; +} + +swiper[class*="-dot"] .wx-swiper-dots { + align-items: center; + display: flex; + justify-content: center; + width: 100%; +} + +swiper.square-dot .wx-swiper-dot { + background-color: var(--white); + border-radius: 20rpx; + height: 10rpx; + margin: 0 8rpx !important; + opacity: .4; + width: 10rpx; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active { + opacity: 1; + width: 30rpx; +} + +swiper.round-dot .wx-swiper-dot { + height: 10rpx; + margin: 4rpx 8rpx !important; + position: relative; + width: 10rpx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after { + background-color: var(--white); + border-radius: 20rpx; + bottom: 0; + content: ""; + height: 10rpx; + left: 0rpx; + margin: auto; + position: absolute; + right: 0; + top: 0rpx; + width: 10rpx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active { + height: 18rpx; + width: 18rpx; +} + +.screen-swiper { + min-height: 375rpx; +} + +.screen-swiper-lg { + min-height: 245rpx; +} + +.screen-swiper.xl { + height: 600rpx; +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + display: block; + height: 100%; + margin: 0; + pointer-events: none; + width: 100%; +} + +.card-swiper { + height: 420rpx !important; +} + +.card-swiper swiper-item { + box-sizing: border-box; + left: 70rpx; + overflow: initial; + padding: 40rpx 0rpx 70rpx; + width: 610rpx !important; +} + +.card-swiper swiper-item .swiper-item { + border-radius: 10rpx; + display: block; + height: 100%; + overflow: hidden; + transform: scale(.9); + transition: all .2s ease-in 0s; + width: 100%; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all .2s ease-in 0s; +} + +.tower-swiper { + height: 420rpx; + max-width: 750rpx; + overflow: hidden; + position: relative; +} + +.tower-swiper .tower-item { + bottom: 0; + height: 380rpx; + left: 50%; + margin: auto; + opacity: 1; + position: absolute; + top: 0; + transition: all .2s ease-in 0s; + width: 300rpx; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + border-radius: 6rpx; + height: 100%; + overflow: hidden; + width: 100%; +} + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + min-width: 100rpx; + position: relative; + text-align: center; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: var(--grey); +} + +.cu-steps .cu-item .num, +.cu-steps .cu-item [class*="cuIcon-"] { + display: block; + font-size: 40rpx; + line-height: 80rpx; +} + +.cu-steps .cu-item::after, +.cu-steps .cu-item::before, +.cu-steps.steps-arrow .cu-item::after, +.cu-steps.steps-arrow .cu-item::before { + border-bottom: 1px solid #ccc; + content: ""; + display: block; + height: 0; + left: calc(0px - (100% - 80rpx) / 2); + position: absolute; + top: 40rpx; + width: calc(100% - 80rpx); + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::after, +.cu-steps.steps-arrow .cu-item::before { + border-bottom-width: 0; + bottom: 0; + color: #ccc; + content: "\e6a3"; + font-family: cuIcon; + height: 30rpx; + line-height: 30rpx; + margin: auto; + top: 0; +} + +.cu-steps.steps-bottom .cu-item::after, +.cu-steps.steps-bottom .cu-item::before { + bottom: 40rpx; + top: auto; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid; + transition: all .3s ease-in-out 0s; + width: 0; +} + +.cu-steps .cu-item[class*="text-"]::after { + color: currentColor; + width: calc(100% - 80rpx); +} + +.cu-steps .cu-item:first-child::after, +.cu-steps .cu-item:first-child::before { + display: none; +} + +.cu-steps .cu-item .num { + border: 1px solid; + border-radius: 50%; + font-size: 24rpx; + height: 40rpx; + line-height: 40rpx; + margin: 20rpx auto; + overflow: hidden; + position: relative; + width: 40rpx; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::after, +.cu-steps .cu-item .num::before { + bottom: 0; + content: attr(data-index); + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + transform: translateY(0rpx); + transition: all .3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::before { + color: var(--white); + transform: translateY(-40rpx); +} + +.cu-steps .cu-item .num::after { + color: var(--white); + transform: translateY(40rpx); + transition: all .3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + color: var(--white); + content: "\e645"; + font-family: cuIcon; + transform: translateY(0rpx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-nowrap { + flex-wrap: nowrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.selfcenter { + align-self: center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + background-color: rgba(0, 0, 0, .5); + border-bottom-left-radius: 6rpx; + height: auto; + padding: 6rpx 12rpx; + position: absolute; + right: 0; + top: 0; +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + align-items: center; + bottom: 0; + color: var(--grey); + display: flex; + flex-direction: column; + font-size: 52rpx; + justify-content: center; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; +} + +.grid.grid-square>view { + border-radius: 6rpx; + margin-bottom: 20rpx; + margin-right: 20rpx; + overflow: hidden; + position: relative; +} + +.grid.grid-square>view.bg-img image { + height: 100%; + position: absolute; + width: 100%; +} + +.grid.col-1.grid-square>view { + height: 0; + margin-right: 0; + padding-bottom: 100%; +} + +.grid.col-2.grid-square>view { + height: 0; + padding-bottom: calc((100% - 20rpx)/2); + width: calc((100% - 20rpx)/2); +} + +.grid.col-3.grid-square>view { + height: 0; + padding-bottom: calc((100% - 40rpx)/3); + width: calc((100% - 40rpx)/3); +} + +.grid.col-4.grid-square>view { + height: 0; + padding-bottom: calc((100% - 60rpx)/4); + width: calc((100% - 60rpx)/4); +} + +.grid.col-5.grid-square>view { + height: 0; + padding-bottom: calc((100% - 80rpx)/5); + width: calc((100% - 80rpx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10rpx; +} + +.margin-sm { + margin: 20rpx; +} + +.margin { + margin: 30rpx; +} + +.margin-lg { + margin: 40rpx; +} + +.margin-xl { + margin: 50rpx; +} + +.margin-top-ls { + margin-top: 2rpx; +} + +.margin-top-xs { + margin-top: 10rpx; +} + +.margin-top-sm { + margin-top: 20rpx; +} + +.margin-top { + margin-top: 30rpx; +} + +.margin-top-lg { + margin-top: 40rpx; +} + +.margin-top-xl { + margin-top: 50rpx; +} + +.margin-right-xs { + margin-right: 10rpx; +} + +.margin-right-sm { + margin-right: 20rpx; +} + +.margin-right { + margin-right: 30rpx; +} + +.margin-right-lg { + margin-right: 40rpx; +} + +.margin-right-xl { + margin-right: 50rpx; +} + +.margin-bottom-xs { + margin-bottom: 10rpx; +} + +.margin-bottom-sm { + margin-bottom: 20rpx; +} + +.margin-bottom { + margin-bottom: 30rpx; +} + +.margin-bottom-lg { + margin-bottom: 40rpx; +} + +.margin-bottom-xl { + margin-bottom: 50rpx; +} + +.margin-bottom-xxl { + margin-bottom: 80rpx; +} + +.margin-bottom-xxxl { + margin-bottom: 130rpx; +} + +.margin-left-xs { + margin-left: 10rpx; +} + +.margin-left-sm { + margin-left: 20rpx; +} + +.margin-left { + margin-left: 30rpx; +} + +.margin-left-lg { + margin-left: 40rpx; +} + +.margin-left-xl { + margin-left: 50rpx; +} + +.margin-lr-xs { + margin-left: 10rpx; + margin-right: 10rpx; +} + +.margin-lr-sm { + margin-left: 20rpx; + margin-right: 20rpx; +} + +.margin-lr { + margin-left: 30rpx; + margin-right: 30rpx; +} + +.margin-lr-lg { + margin-left: 40rpx; + margin-right: 40rpx; +} + +.margin-lr-xl { + margin-left: 50rpx; + margin-right: 50rpx; +} + +.margin-tb-xs { + margin-bottom: 10rpx; + margin-top: 10rpx; +} + +.margin-tb-sm { + margin-bottom: 20rpx; + margin-top: 20rpx; +} + +.margin-tb { + margin-bottom: 30rpx; + margin-top: 30rpx; +} + +.margin-tb-lg { + margin-bottom: 40rpx; + margin-top: 40rpx; +} + +.margin-tb-xl { + margin-bottom: 50rpx; + margin-top: 50rpx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10rpx; +} + +.padding-sm { + padding: 20rpx; +} + +.padding { + padding: 30rpx; +} + +.padding-lg { + padding: 40rpx; +} + +.padding-xl { + padding: 50rpx; +} + +.padding-top-xs { + padding-top: 10rpx; +} + +.padding-top-sm { + padding-top: 20rpx; +} + +.padding-top { + padding-top: 30rpx; +} + +.padding-top-lg { + padding-top: 40rpx; +} + +.padding-top-xl { + padding-top: 50rpx; +} + +.padding-right-xs { + padding-right: 10rpx; +} + +.padding-right-sm { + padding-right: 20rpx; +} + +.padding-right { + padding-right: 30rpx; +} + +.padding-right-lg { + padding-right: 40rpx; +} + +.padding-right-xl { + padding-right: 50rpx; +} + +.padding-bottom-xs { + padding-bottom: 10rpx; +} + +.padding-bottom-sm { + padding-bottom: 20rpx; +} + +.padding-bottom { + padding-bottom: 30rpx; +} + +.padding-bottom-lg { + padding-bottom: 40rpx; +} + +.padding-bottom-xl { + padding-bottom: 50rpx; +} + +.padding-bottom-xxl { + padding-bottom: 80rpx; +} + +.padding-left-xs { + padding-left: 10rpx; +} + +.padding-left-sm { + padding-left: 20rpx; +} + +.padding-left { + padding-left: 30rpx; +} + +.padding-left-lg { + padding-left: 40rpx; +} + +.padding-left-xl { + padding-left: 50rpx; +} + +.padding-lr-xs { + padding-left: 10rpx; + padding-right: 10rpx; +} + +.padding-lr-sm { + padding-left: 20rpx; + padding-right: 20rpx; +} + +.padding-lr { + padding-left: 30rpx; + padding-right: 30rpx; +} + +.padding-lr-lg { + padding-left: 40rpx; + padding-right: 40rpx; +} + +.padding-lr-xl { + padding-left: 50rpx; + padding-right: 50rpx; +} + +.padding-tb-xs { + padding-bottom: 10rpx; + padding-top: 10rpx; +} + +.padding-tb-sm { + padding-bottom: 20rpx; + padding-top: 20rpx; +} + +.padding-tb { + padding-bottom: 30rpx; + padding-top: 30rpx; +} + +.padding-tb-lg { + padding-bottom: 40rpx; + padding-top: 40rpx; +} + +.padding-tb-xl { + padding-bottom: 50rpx; + padding-top: 50rpx; +} + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.line-red::after, +.lines-red::after { + border-color: var(--red); +} + +.line-orange::after, +.lines-orange::after { + border-color: var(--orange); +} + +.line-yellow::after, +.lines-yellow::after { + border-color: var(--yellow); +} + +.line-olive::after, +.lines-olive::after { + border-color: var(--olive); +} + +.line-green::after, +.lines-green::after { + border-color: var(--green); +} + +.line-cyan::after, +.lines-cyan::after { + border-color: var(--cyan); +} + +.line-blue::after, +.lines-blue::after { + border-color: var(--blue); +} + +.line-purple::after, +.lines-purple::after { + border-color: var(--purple); +} + +.line-mauve::after, +.lines-mauve::after { + border-color: var(--mauve); +} + +.line-pink::after, +.lines-pink::after { + border-color: var(--pink); +} + +.line-brown::after, +.lines-brown::after { + border-color: var(--brown); +} + +.line-grey::after, +.lines-grey::after { + border-color: var(--grey); +} + +.line-gray::after, +.lines-gray::after { + border-color: var(--gray); +} + +.line-black::after, +.lines-black::after { + border-color: var(--black); +} + +.line-white::after, +.lines-white::after { + border-color: var(--white); +} + +.bg-red { + background-color: var(--red); + color: var(--white); +} + +.bg-orange { + background-color: var(--orange); + color: var(--white); +} + +.bg-yellow { + background-color: var(--yellow); + color: var(--black); +} + +.bg-yellow-light { + color: var(--yellowLight); +} + +.bg-yellow-light-1 { + background-color: var(--yellowLight); + color: var(--white); +} + +.bg-olive { + background-color: var(--olive); + color: var(--white); +} + +.bg-green { + background-color: var(--green); + color: var(--white); +} + +.bg-cyan { + background-color: var(--cyan); +} + +.bg-blue, +.bg-cyan { + color: var(--white); +} + +.bg-blue { + background-color: var(--yellowLight); +} + +.bg-purple { + background-color: var(--purple); + color: var(--white); +} + +.bg-mauve { + background-color: var(--mauve); + color: var(--white); +} + +.bg-pink { + background-color: var(--pink); + color: var(--white); +} + +.bg-brown { + background-color: var(--brown); + color: var(--white); +} + +.bg-grey { + background-color: var(--grey); +} + +.bg-grey, +.text-color { + color: var(--white); +} + +.bg-gray { + background-color: #f0f0f0; + color: var(--black); +} + +.bg-trgray { + background-color: #f8f8f8; + color: var(--black); +} + +.bg-black { + background-color: var(--black); + color: var(--white); +} + +.bg-black-tr { + background: rgba(0, 0, 0, .4); + color: var(--white); +} + +.bg-white { + background-color: var(--white); + color: var(--darkGray); +} + +.bg-shadeTop { + background-image: linear-gradient(#000, rgba(0, 0, 0, .01)); + color: var(--white); +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, .01), #000); + color: var(--white); +} + +.bg-red.light { + background-color: var(--redLight); + color: var(--red); +} + +.bg-orange.light { + background-color: var(--orangeLight); + color: var(--orange); +} + +.bg-yellow.light { + background-color: var(--yellowLight); + color: var(--yellow); +} + +.bg-olive.light { + background-color: var(--oliveLight); + color: var(--olive); +} + +.bg-green.light { + background-color: var(--greenLight); + color: var(--green); +} + +.bg-cyan.light { + background-color: var(--cyanLight); + color: var(--cyan); +} + +.bg-blue.light { + background-color: var(--blueLight); + color: var(--blue); +} + +.bg-purple.light { + background-color: var(--purpleLight); + color: var(--purple); +} + +.bg-mauve.light { + background-color: var(--mauveLight); + color: var(--mauve); +} + +.bg-pink.light { + background-color: var(--pinkLight); + color: var(--pink); +} + +.bg-brown.light { + background-color: var(--brownLight); + color: var(--brown); +} + +.bg-grey.light { + background-color: var(--greyLight); + color: var(--grey); +} + +.bg-gradual-red { + background-image: var(--gradualRed); + color: var(--white); +} + +.bg-gradual-orange { + background-image: var(--gradualOrange); + color: var(--white); +} + +.bg-gradual-green { + background-image: var(--gradualGreen); + color: var(--white); +} + +.bg-gradual-purple { + background-image: var(--gradualPurple); + color: var(--white); +} + +.bg-gradual-pink { + background-image: var(--gradualPink); + color: var(--white); +} + +.bg-yellow-yellow { + background-image: var(--gradualYellow); + color: var(--white); +} + +.bg-gradual-blue { + background-image: var(--gradualBlue); + color: var(--white); +} + +.bg-gradual-gray { + background-image: var(--gradualGray); + color: var(--white); +} + +.shadow[class*="-red"] { + box-shadow: var(--ShadowSize) var(--redShadow); +} + +.shadow[class*="-orange"] { + box-shadow: var(--ShadowSize) var(--orangeShadow); +} + +.shadow[class*="-yellow"] { + box-shadow: var(--ShadowSize) var(--yellowShadow); +} + +.shadow[class*="-olive"] { + box-shadow: var(--ShadowSize) var(--oliveShadow); +} + +.shadow[class*="-green"] { + box-shadow: var(--ShadowSize) var(--greenShadow); +} + +.shadow[class*="-cyan"] { + box-shadow: var(--ShadowSize) var(--cyanShadow); +} + +.shadow[class*="-blue"] { + box-shadow: var(--ShadowSize) var(--blueShadow); +} + +.shadow[class*="-purple"] { + box-shadow: var(--ShadowSize) var(--purpleShadow); +} + +.shadow[class*="-mauve"] { + box-shadow: var(--ShadowSize) var(--mauveShadow); +} + +.shadow[class*="-pink"] { + box-shadow: var(--ShadowSize) var(--pinkShadow); +} + +.shadow[class*="-brown"] { + box-shadow: var(--ShadowSize) var(--brownShadow); +} + +.shadow[class*="-grey"] { + box-shadow: var(--ShadowSize) var(--greyShadow); +} + +.shadow[class*="-gray"] { + box-shadow: var(--ShadowSize) var(--grayShadow); +} + +.shadow[class*="-black"], +.shadow[class*="-white"] { + box-shadow: var(--ShadowSize) var(--blackShadow); +} + +.text-shadow[class*="-red"] { + text-shadow: var(--ShadowSize) var(--redShadow); +} + +.text-shadow[class*="-orange"] { + text-shadow: var(--ShadowSize) var(--orangeShadow); +} + +.text-shadow[class*="-yellow"] { + text-shadow: var(--ShadowSize) var(--yellowShadow); +} + +.text-shadow[class*="-olive"] { + text-shadow: var(--ShadowSize) var(--oliveShadow); +} + +.text-shadow[class*="-green"] { + text-shadow: var(--ShadowSize) var(--greenShadow); +} + +.text-shadow[class*="-cyan"] { + text-shadow: var(--ShadowSize) var(--cyanShadow); +} + +.text-shadow[class*="-blue"] { + text-shadow: var(--ShadowSize) var(--blueShadow); +} + +.text-shadow[class*="-purple"] { + text-shadow: var(--ShadowSize) var(--purpleShadow); +} + +.text-shadow[class*="-mauve"] { + text-shadow: var(--ShadowSize) var(--mauveShadow); +} + +.text-shadow[class*="-pink"] { + text-shadow: var(--ShadowSize) var(--pinkShadow); +} + +.text-shadow[class*="-brown"] { + text-shadow: var(--ShadowSize) var(--brownShadow); +} + +.text-shadow[class*="-grey"] { + text-shadow: var(--ShadowSize) var(--greyShadow); +} + +.text-shadow[class*="-gray"] { + text-shadow: var(--ShadowSize) var(--grayShadow); +} + +.text-shadow[class*="-black"] { + text-shadow: var(--ShadowSize) var(--blackShadow); +} + +.bg-img { + background-position: 50%; + background-repeat: no-repeat; + background-size: cover; +} + +.bg-mask { + background-color: var(--black); + position: relative; +} + +.bg-mask::after { + background-color: rgba(0, 0, 0, .4); + border-radius: inherit; + bottom: 0; + content: ""; + display: block; + height: 100%; + left: 0; + position: absolute; + right: 0; + top: 0; + width: 100%; +} + +.bg-mask cover-view, +.bg-mask view { + position: relative; + z-index: 5; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + object-fit: cover; + pointer-events: none; + position: absolute; + top: 0; + width: 100%; + z-index: 0; +} + +.text-xs { + font-size: 20rpx; +} + +.text-sm { + font-size: 24rpx; +} + +.text-df { + font-size: 28rpx; +} + +.text-lg { + font-size: 32rpx; +} + +.text-xl { + font-size: 36rpx; +} + +.text-xxl { + font-size: 44rpx; +} + +.text-sl { + font-size: 80rpx; +} + +.text-xsl { + font-size: 120rpx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "¥"; + font-size: 80%; + margin-right: 4rpx; +} + +.text-cut, +.text-cut-width { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-cut-width { + width: 370rpx; +} + +.text-bold { + font-weight: 700; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.line-red, +.lines-red, +.text-red { + color: var(--red); +} + +.line-orange, +.lines-orange, +.text-orange { + color: var(--orange); +} + +.line-yellow, +.lines-yellow, +.text-yellow { + color: var(--yellow); +} + +.line-olive, +.lines-olive, +.text-olive { + color: var(--olive); +} + +.line-green, +.lines-green, +.text-green { + color: var(--green); +} + +.line-cyan, +.lines-cyan, +.text-cyan { + color: var(--cyan); +} + +.line-blue, +.lines-blue, +.text-blue { + color: var(--blue); +} + +.line-purple, +.lines-purple, +.text-purple { + color: var(--purple); +} + +.line-mauve, +.lines-mauve, +.text-mauve { + color: var(--mauve); +} + +.line-pink, +.lines-pink, +.text-pink { + color: var(--pink); +} + +.line-brown, +.lines-brown, +.text-brown { + color: var(--brown); +} + +.line-grey, +.lines-grey, +.text-grey { + color: var(--grey); +} + +.line-gray, +.lines-gray, +.text-gray { + color: var(--gray); +} + +.text-gray2 { + color: #333; +} + +.line-black, +.lines-black, +.text-black { + color: var(--black); +} + +.line-depblack, +.lines-depblack, +l .text-depblack { + color: var(--depBlack); +} + +.line-white, +.lines-white, +.text-white { + color: var(--white); +} + +.play-box { + background-color: #fff; + border-radius: 15rpx; + flex-direction: column; + margin-left: 20rpx; + padding: 10rpx 0rpx; + width: 80%; +} + +.play-box, +.play-box-arrow-flex { + align-items: center; + display: flex; + justify-content: center; +} + +.play-box-arrow-flex, +.play-box-arrow-pos { + height: 100%; + position: absolute; + width: 100%; +} + +.play-box-arrow-pos { + left: 40rpx; + top: 40rpx; +} + +.shadow-box { + border: 1rpx solid #f9f9f9; + border-radius: 10rpx; + width: 100%; +} + +.border-blue-radius { + border: 1rpx solid #0054bd; + border-radius: 20rpx; + color: #0054bd; +} + +.border-blue-radius:active { + border: 1rpx solid #9b9c9c; + border-radius: 20rpx; + color: #000; +} + +.play-box image { + height: 60rpx; + width: 60rpx; +} + +.play-box image:active { + background-color: #cccaca; + border-radius: 50%; +} + +.text-left input { + text-align: right; +} + +.text-length-hint-right { + font-size: 32rpx; + margin-top: 10rpx; + padding-right: 20rpx; + text-align: right; + width: 100%; +} + +.line-gray-sm { + background-color: var(--gray); + height: 10rpx; +} + +.line-gray-ssm { + align-self: center; + background-color: #f3f3f3; + height: 2rpx; + width: 95%; +} + +.line-gray-xs { + height: 20rpx; +} + +.line-gray-lg, +.line-gray-xs { + background-color: var(--gray); +} + +.line-gray-lg { + height: 30rpx; +} + +.line-gray-xl { + background-color: var(--gray); + height: 40rpx; +} + +.hint-title { + align-items: center; + color: #000; + display: flex; + flex-direction: row; + font-size: 32rpx; + height: 90rpx; + justify-content: center; +} + +.hint-title image { + height: 48rpx; + width: 48rpx; +} + +.hint-title text { + left: -30rpx; + position: relative; + top: 1px; +} + +.cardTitle { + background-color: #fff; + border: 1px dashed gray; + color: #fff; + font-size: 80rpx; + font-weight: 300; + padding: 20rpx 40rpx; + position: relative; + text-align: center; + text-shadow: 0 0 6rpx rgba(0, 0, 0, .3); +} + +.border-bottom-sm { + border-bottom: 1rpx solid #eee; +} + +.card-title-sm { + background-color: #fff; + border: 1px dashed gray; + color: #fff; + font-size: 60rpx; + font-weight: 300; + margin: 10rpx; + padding: 0rpx 20rpx; + position: relative; + text-align: center; +} + +.cardTitle::before { + border-radius: 20rpx; + display: block; + height: 6rpx; + position: absolute; + transform: skew(10deg, 0deg); + width: 60rpx; +} + +.cardTitle::after { + border-radius: 6rpx; + bottom: 76rpx; + display: block; + height: 24rpx; + left: 90rpx; + opacity: .1; + position: absolute; + width: 140rpx; +} + +@font-face { + font-display: swap; + font-family: iconfont; + font-style: normal; + font-weight: 400; + src: url(data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAAL0AA0AAAAABuAAAAKeAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GVgCCQhEICoFIgUsLCgABNgIkAxAEIAWFCAc7G/EFyI7CtuUTYyoihNONcXgQEVRrZM/uPqJC9R9w0UQSwQIK9+ACqNiRAwSbikMy4vzv/ctzs6kgViBK4/2V3m7glqriKpOmpCuok+pM3Exrgwaysdw21XlCXbQtisOAogDTae0fEzfw24P9u77x786VNuXwyeFSiMvjICscjo1CwPvVkXr4sLDtwZ6b0IxekIQsCwUJUcQRNaS96QAchtfHf5FRT1KTWceSTTktSP/lghbRRDVhgwNchgBkZPQhMJ1IoI+pIVAUwS+X/wqWuL6AgKglAJFAuJ+HoJ43qgoJFFCPwHywCkABQMzvbGi83DBxfd/dKasq55m43zjwNvpPRXXJ6ut9d6P/0ermpr0rb93/ZnJpVf9JXfisafAKE91rytdv4eEfTJyfNueJmqipKfDaOeU29Orq7Twm1WjvFnrp7ayKsR51Tkn9eqdWhr2Fet0UeZpk8UsLg0KCNkPLBMKpx9qLE/bq7Gff8/Xv787eyuRLAAJBx5fpxfXWyX/1TcWgdquqJvJaVgHqJRAM199QAPmcAACUAigorEMo5iOQ0KgRFYBOtyBAj2AEQr0VCCR1diKQ1dstQFHvtAA1mjwDgVr1voJAo6kxFwSadMVRWZQGTIFAhnaZZNJqI5m1M4AFHSNr9Fona7U7Jhut8lzeZDh2wcw8Okwj7tgtfDRpF0o1U1MRcjgzGt/m4voS5dXjkWUg3g4sw4gZKDTSgTha1PToRrgKo6MnDfuIECoczqr0EaHhpeCibBVG1+cmekZikThO4EOgo6bkI7fGJxgFBTUfGjpqMkwzLhSu8na9URzJuXCIif+nIiNShXrfB2zBcRqJwoQRGodDNVNTAlPWhWJx02hTLYlGqikIKVJ7o54zXmOGRIRsMAAA) format("woff2"), url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAS0AA0AAAAABuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEmAAAABoAAAAcjuL8y0dERUYAAAR4AAAAHgAAAB4AKQAKT1MvMgAAAaAAAABCAAAAVjyGSApjbWFwAAAB9AAAAD4AAAFCAA/pw2dhc3AAAARwAAAACAAAAAj//wADZ2x5ZgAAAkAAAAC3AAAAyKXtiRxoZWFkAAABMAAAADAAAAA2HF0Zv2hoZWEAAAFgAAAAHQAAACQHgwOFaG10eAAAAeQAAAAPAAAAEAwAAFpsb2NhAAACNAAAAAoAAAAKAGQAAG1heHAAAAGAAAAAHwAAACABDwBQbmFtZQAAAvgAAAFJAAACiCnmEVVwb3N0AAAERAAAACkAAAA7epyHrHjaY2BkYGAAYsUHE+Lj+W2+MnCzMIDAnflZD+F01P9JzEuZ84BcDgYmkCgATbQMO3jaY2BkYGBu+N/AEMPCAALMSxkYGVABCwBTNQMRAAAAeNpjYGRgYGBhcGEA0QwMTEDMBYQMDP/BfAYAD3EBYAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PJJ5JMDf8b2CIYW5gaAAKM4LkAN59DAsAAHjaY2GAABYIjgIAANoAZwB42mNgYGBmgGAZBkYGELAB8hjBfBYGBSDNAoRA/jOJ//8hpORrqEoGRjYGGJOBkQlIMDGgAkaGYQ8AVqkHuAAAAAAAAAAAAAAAZAAAeNodirENwjAURP2xFGjASA75EhK2FJBT+VsC4jRACkpKOlr3DMMODJIdsgE9BQMYHHTFPd07Buz2ffAnv7MzYzAFBYs8K40DWawgz9alqfe+luMZ/KmxQJB6W2jg+2HZbYfjmDcnSJhnfBMjjIIiIvX2E9LYTE4fbJyjK/AY/cWSx79xOhntUFcKXiEYi0eB2McO5ZKMroVCaPu5UpQSQlFZY5KHttBC+SOWUsSu14IO5gdbfykbAHjafZA9TgMxEIWf8wckEkIgqF1RANr8lCkTKfQIpaNINt6QaNdeeZ1IOQEtFQeg5RgcgBsg0XIKXpZJkyJr7ejzm5nnsQGc4xsK/98l7oQVjvEoXMERMuEq9RfhGvlduI4WPoUb1H+Em7hVA+EWLtQbHVTthLub0m3LCmcYCFdwiifhKvWVcI38KlzHFT6EG9S/hJsY41e4hWtlqQzhYTBBYJxBY4oN4wIxHCySMgbWoTn0ZhLMTE83ehE7mzgbKO9XYpcDHmg554Ap7T23Zr5KJ/5gy4HUmG4eBUu2KY0uInQoG18snNXdqHOw/Z7ttrTYv2uBNcfsUQ1s1Pw92zPSSGwMr5CSNfIyt6QSU49oa6zxu2cp1vNeCIlOvMv0iMeaNHU6925p4sDi5/KMHH20uZI996gcPmNZCHm/3U7EIIpdhj+T2HEZAAAAeNpjYGKAAC4wyciADljAokyMTAKJxSWpRZnF2cW6hrrJ+QWVADoqBkcAAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwADAAEABAAAAAIAAAAAeNpjYGBgZACCq0vUOUD0nflZD2E0AER/BzYAAA==) format("woff"), url(iconfont.ttf-do-not-use-local-path-./app.wxss&1&62897) format("truetype"); +} + +.iconfont { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: iconfont !important; + font-size: 12rpx; + font-style: normal; +} + +.icon-star-red:before { + color: #f55054; + content: "\e618"; +} + +.container { + padding: 20rpx; +} + +.join-btn { + background-color: #f55054; + border-radius: 25rpx; + color: #fff; +} + +.border-btn, +.join-btn { + font-size: 32rpx; + height: 50rpx; + line-height: 50rpx; + margin-top: 25rpx; + padding: 0 15rpx; +} + +.border-btn { + border: 1px solid #f55054; + border-radius: 25rpx; + color: #f55054; +} + +.cut-text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} \ No newline at end of file diff --git a/images/home-on.png b/images/home-on.png new file mode 100644 index 0000000000000000000000000000000000000000..98670f22f2151329c8dda39128526aa43aadb3ce GIT binary patch literal 675 zcmV;U0$lxxP)Px%T}ebiRA@u(S-)!(K@|SJO)nyXjUW~_u}WjDAh~@6uMjTU1T3@*2o@?@sGx-y zh>bRCp$Ha9Ww@Qa2!j7X5WyyhAlhhWBZTae3yI$9-ObMK%tFXs{oeO;xgB&h9>_GJwfEA|coe*JpH=xtgM-fE}AkY3Icm+{(jot1?pGLeI&^T^`TmW!v zgvhT@z0Nd!>C1#S11fS8z}-T^$VDc}l|r+Yp~?nSAK>gOBTIMo+am*B#(;j6*izEHvrr#3S4n+nZ|UAU|0=kt91Yq z69%d$iU4|?`Gn2QlU!Z>G7fXB0iBsSg)DpPQItDWmR(}6_jJ_aNCPVJ5Wr=3#sC}S z5|d%==~Kx-iOMnPk?v^NI4Md}FDG~gJR_wl9y z?~ytJ?(qgx!@RM{!nlIwH7fCn_D z|M5A0N2Vf^P%U(^;7LpwnCDE>&pV6O3yv}jb?!6<>P&kW*KcH>>@lFq$Xx&c002ov JPDHLkV1fasB*p*$ literal 0 HcmV?d00001 diff --git a/images/home.png b/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf1860dc6cad143cc362ebc7561932ed648eba5 GIT binary patch literal 692 zcmV;l0!#ggP)Px%Zb?KzRA@u(Sv_kMQ4~FQmT5&quo1+&bXkWg$i28 zhMjp2w9yobU=b@*SO|juAV|O_h#=Z%XJfIvD;rGMjk}vWGw%gLX6tj$Js&eW!#u(+ z|Isejk6;FjG53h5Eh2vaEHm?i5Mg;Y(ChV%#&NtrL>IOQUUtsi%ChXUPa|Fp6h(2K zh!y}Gn z6duiQ~B4>2%i0@Rl-Qtvw?m@5?NxfF0f!PqcGt14U8XA)-fG;+nWO%-q&+ zY-^z3?;mKjTJHdy)DU{ad>IS|r@Gzlw^^Js4H#oi1Nh)kR28ag%=~=X;8X*~m;wM- z+30(Qh?bHhnV-b_p8;#_J`wo@;D~P_HTixK(Oi-wKSz1S3>afB0eD?=QP6P_xjgzV zwP|4Z`U~KG(CwbcMPxor)1@KZrU7g1s)!u-v?C~uh^(b)y8gyH+JFSz>Y1FG*R?kW zJO`_$YZ_2T6$scg5GYtR?VfKS)Dv6HTdRSMVRhe1pfN`MFx}e*lz|3?)oLK9G9`Iq zKp9jpSkpkTXqCiG1InO+!I}nwMXMxk8c+rm3^u8Ox4sW8f~f~qnEAxmXO%q9uS8Ll z1K1yMu@CAW&beNeWy6op<7Z^n+Bp$X9W3}zQia1g_ae)(uN$-59&l7yvXe87ft^fy a(yqVv;sQXji&ba<0000e zf!I)RZu`7fB7u$KSyK=Qv*M70VS7Oc4?LH?`$y7VC}0pEMuzb19mPnss5MV9@^WE< z3im&gbUXwO^d?i@TMF_@Zk=+pRyEcj?IMZW?@PK!BKF_Vn=D|JBQIq=#qi(@;H$UBDe zMlO>|=jT674Rv?WKd-t+srbuhkD=;+!6OjJH8^ZQSYXGq(Q_vzLL98(2+i8+YonOg zTK<9h^4|{awzsQxTN`L@9=(-f7{zG$XL*RlR+a9yV@skgr5MRdP&a7QLHs4_YiSL% zzGTu>-H-MwSJ+MQ`9?GE`u;e3(?Z}UP8O9)JuVPa7iiHn`BpO82dS&UyXlJO?h0%B zt0oGKyDLn3)VFF-XCUmm$*f=BcuMLOf0NO714^LO4l|}|@jo4GcEj$}M>Ml(=W3Mm z!F>`>cWh4^f#Z85XxaVvC7PZ{l8o$JXGexL{jhD4Y}}(eOuVQ7Z>U|j%LSOGFANB7p>{nIc?Zu z*r(159-P(-xIukhOhGEvc~kQfAl!V`I zHD#V7B0ENElfpZ^BQeH_1DA5MP6t2nny$z~S6Z=(PT8Mp!nHtKlyYPd^iMdZxFU-Pt@)I0Ex^Uc>n+a literal 0 HcmV?d00001 diff --git a/images/ic_audio_play.png b/images/ic_audio_play.png new file mode 100644 index 0000000000000000000000000000000000000000..d2960407051e5391b7c6adfab5fb7a1edcdbc844 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sbpbvhu0UFF+AX1Jw;3kg7MglT zWb!p28;E$pf)KXQRG<`4@D7kGIPH$`v^#>+Z;Q^nD>CywvI3x#(6n1XQe^sF(WxNC zVD-0wih+6sr`;Bwa#sLIPP-`t5&JjV)pV4YpXMETBl^BD$XGcgm@LlDV*pt!m!l?|q`s#0m4RXv49Sql4J?_X% zV0!VaL9AhUgY0h=or3%O?aK}}{T2&8>3irv8}r#HjR&Wf@>(+H?OiL#cue@8xG76c zlYz})>2%|+w{ve~-fnU!?`8a^-O7~Pw(_rr6Vu+Cf3%#MId0zM=KYc>@6Wi8YejnF iSv|XsGs>UdmD;OcQ_HHZcUTP!R0dC1KbLh*2~7ZhfZ}2R literal 0 HcmV?d00001 diff --git a/images/ic_audio_playing.png b/images/ic_audio_playing.png new file mode 100644 index 0000000000000000000000000000000000000000..c67cf014a6eb697c11fc6b16c4a7f975a397a138 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s9sxcfu0UFF+HD~ax+668w#c+Q z5U${~I|5K~kgUk`yZqBZ4B=^agh3>TEjaC#=+yh--4}uE(^dJifM$u81o;Is#9TX6 zXuPLGTmI{-%c=sua+g*XWk_%SS@>|(O->g_*QFK^P-Vt4aqsKDi$yfLnR Zccw=ur=HYga|Aks!PC{xWt~$(69CG`dP@KR literal 0 HcmV?d00001 diff --git a/images/ic_audio_rewind.png b/images/ic_audio_rewind.png new file mode 100644 index 0000000000000000000000000000000000000000..b8fb0f5047927382b7453f6574683c715ff2ba0e GIT binary patch literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEdf3uu0UF7+HK*fw}2$yv|Iek zZZgcd4`f4-@YFkk({2M1NX@i6AaeRmq3O3pr(B1N3xdUgT!E<|1wvphoB>ic^{&XY zTS7qDska4Z+yzR34ZI@^v*n??$U&exv`d2gf*Bra{t#qi{;;FBI>Y;mlcBmY_uW&6 zCbgBxzuvuZ)r`C-Ystn$*(-~JOjpF8SDM4X!07Gi;uzv_{O#nMMNJL@uKJ0S8ydJc zb~NsO`Tzg^2eLw5*~c!GpOcQQ)$={yFmYo4j@aOu13KapyT1qAexG>gw(nCviz#>1 zgimS}+uU4mTvJ!9=mm$QypF3{t;0j_{n%D+```s0%C)*niHG(_vTO zbnAe*=;L literal 0 HcmV?d00001 diff --git a/images/ic_audio_speed.png b/images/ic_audio_speed.png new file mode 100644 index 0000000000000000000000000000000000000000..e4809412a0fa36c08c5c80a678dd9b96b7404e3e GIT binary patch literal 598 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sT>(BJu0UFF+8x1Zw;3jV5t?>K zXxeQE5}AGr$N)<5ff*pdsdt2?+!mjF6D$sr5}JNncsiH?HUXj@q!NsPW&#xmO$V9@ zG9N-p&UhdUW&_pmPrd6LX!fy+-WVl}W zdN`Z$-P*Tf_|0_RsrbnZd!e9Y@Y@wNOfuZSK6| zv}WI=jRK2QG8)r!7pHvwP?Fkxyo{F z)9aQ9xEVZLJ>hRPQ>)3P4#|Tjc8VKqo>1}V`>&0!T2H9BSRYv>asAN$1#O?2o-aD0 zRl4x^lxISw(ISeXs-F%p&dUuH($Np{O&Agr`FtAnX5&26}j#@CH>(^ wzopr0G5RlivR!s literal 0 HcmV?d00001 diff --git a/images/ic_call_phone_icon.png b/images/ic_call_phone_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c8e2f4b575631eb9abcc55cca2fc75e55fe61c GIT binary patch literal 1286 zcmX9-X;70_6phf3f~K;$fFe?CCyp(#DjFpqV3>#^n;=l7rD|m=qap|-#R4)Z0cnXW zl|WOdj(`hLA)=WAVbg?F2%882fk^g*s1_uO;Noi{HpG?@T0Ym zn+q`T+h_8wLck9)>b?p<2&#%##ZoREl%y>=0Hf}&fF~LOv!sOv2$lR&?P#rb^oe@l z@3mwz?V}bQ7z5HERJ<$#cz}c_n}8*Cf2FFI1@LCG88`>M(3^(E!3QAu(Mcf?0@eRp zK<}D=Zmxn?vT9fY(}8wb$L~N?*TuVFMk#gqPB@{Yp$}H5+ zBqSv}2sZ9mMZ758uuq&+o%g&zA7##p&@*0~nXc|C{sn`liRBJMM~68XhU{^rg0?kc~dBev1(=KRA5>3%wIvCo+j zJkIg?iyI||Q-qWXb6`#8V1pI>8{5;i-|d{}LLycqJIq>DxedbaIhokGm8mJkm4c0j zO14&NAe}BrGIubYU+HY&e;;KR&_VD>pzdg!h`n+m18IBKGjRJD`_<7f=SVHRg81z&s0T~z=u)%GB8TMuGqJwBsN^evY z`JTqD$D8UV+I{hpj+kRcxh3v~HeQ6M7>0+vaHCM#EIuoZ@W9F@gu}LW#MNYEn0y>7 zpm+ydRvKb-_85i8O8nl>GO!_XF@uTEogbrgW?o(L{o&5h^WTIf5)iC0n!GojT$}Lt zvhRWIv3FZ?(B^?WWI;JnUq-G?c%psgZqqCd@H%MA~;P zv@O7gg|SYnx1ZDR?A>yBT^oibb?$v({?@LzhBoTpA~>X)+q38E2ewom5_W>U zzdBDj@3e0q$S?9%vng^H33B2!lUbz(aI=$BY)?%U68B+lLJFX2zSUqY|j0#SLT zifR1qgLF8po#)U-bV=I((zT(>J7H%flO9%*oYoGz5Ob>D<0iCa|ih0_5CZb;5qoPBElCIn-`fNz8f3}3_y8r6c`vV7#ZrHHp#*Mpc)~xUColsg@o|~Jua^>2I6Q@K+$3#R# z-n;jB`}RFkrc6J1@@#c=?d{tSu3o)$?AYl|o3^J2f@U$H#ZclI1gJ&TVh+Y-wq0XlPooV)dd$OViTQ zV`Jl8TwGVISo>$%`lrA!(kcn^3udro{|DXXz#Qu7;uzv_d~ewGvRe)Uy#^g|O@|NmXXT#kknSnPSS??A@)tg^IqY2Ob2cW2qTr}x=rhLq12Z+okJdViMn z$-gHSWwE`>89a`zzP|DCeagB()G7<}Y`+)(Q^ua@{UeQkJB2D=KhW7@f5yUl zzo)ts_j`Whq!+7C?62)zc0g{)B9DXRA8ZS`zCAJt{Kox3b^1;J6Hm_Vou#b0J#NNH z(=36mW6TG#yFTwvoZS+AkmZrkyY6@18V6^1PcoS;Epxcw*l8Xq{Wgc4r;k>fw@hC0 z`^cR0BGXd0rruqUxp?1|1q;tSTef?SO=nJbqfE8tQu#J3*Ff7{&9ANQEv&w9p`Cxr z^jpa()hkX*eBkU=`=cl!GvB9RP9fj@oF6O#&VlU()v^LpbQ_Npo<3Aq3t$am!v zfkol#Z9d%2k*rwVDlO6QAii>i+hRUNd3L=Yzp9)PByLVQa?oMQER{CF$)$6@Uwiy> zkMoINn*u(b3#gkUe(H3AiPSy~?hGF59j{I+&o1RSz<#pxuGJCcJmHpJdn>o_CmsS1 zbQ=|p=khsaPnux6jWu%GRz}Yjj+-e7-;Yg8eVJS&y({aI$=&p(t0`u`%`y(<*!wQO z{G8Rg$x8C;%zd6;Lc2IvWtU8ylx{DtSm(vWsI%_u_IktIyoT0GQX+XOo!%Prza{N^ zXt>TSS95ON*@{I@t=vlv+ON@RJE##SRJz7iH0t%vT``3z9#ZRmG@|IuSfs@ literal 0 HcmV?d00001 diff --git a/images/ic_column_icon.png b/images/ic_column_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a4bfec225460bce92818ac0ee235d93b6041ff GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s2LgOTT!FL{>EQqW|L@+td;R+L z)2B}#Jb3Wo!-wC$e}Dh}{p;7SEiEm_jvd>!ZQIP5GynemTV7tCoSeLIOQ*doYBCUL@N{s^?w_jdIwedm|MlJ7 z@BfFTP7#{KQ25IH@cx>UX*Y8g#qd|XFf&;4!0kJurcu=Q0|ob2&D~SY%w&G|RH_Nj z(g(Lcy__B3DLl33y#uf8!5xPKxc5DNc3gpR@vMp`fu;|cX0_HFa=kMxCt+%Y&c`Cn zJm*#!{gQ|`FGY&3uo+RPL&ntD|_Ag5V4<}kylokFEHWTA_c~L= zX1eH2xPI`VX0m9kQpDy``(zQWrX4Tm`5)^~Ki2YL_A!&So1zwFhOTCre`8^4m%ZO= zp$8n{2Az=Eb_z(Mx*c+c>*_v$$R5 zLZxHNHBYU-%QYctQG)1IJK2(i3(;LXOIFtR3x_(Ny84GHIJxeNXy2Tbz!+!nboFyt I=akR{0FS$23jhEB literal 0 HcmV?d00001 diff --git a/images/ic_corner_mark_bg.png b/images/ic_corner_mark_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcbb7fcafa3fdff18486ea4ce5b061003b0de76 GIT binary patch literal 533 zcmV+w0_y#VP)Px$&q+iM16aV12C#x33_yWLz-^WBsGB+# zd&i(Pd~X6Q;x7TL;?DsrZ~$%ipa2L^S3-}v$)CmNd>7D)pEUuR@mB+A z$4>_E9^Tyd;i1%(l7;g XP!wiRI-Gl<00000NkvXXu0mjfr5)ug literal 0 HcmV?d00001 diff --git a/images/ic_email_icon.png b/images/ic_email_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..661ffabb5b447f0efd59420b05b5d475698e4bd2 GIT binary patch literal 1286 zcmXAo4>Z(S6vv0LJ4Wm()wWrc9mmG0Wp}NLNEtDN2}Qg8nJr6ge~>a|2N9#O*67b{ zIK%R-^d(ujMa0)RWy|3Kc#fEsgV1^>dYuWE!WMQ6!0_b<4m zK+(lSMr)y0G#UT;OkcT1_yXck;pV?V3eWDHIRjjJ_i~g0Cj*1HRXZ`#L1O?>_}CE_;8J~`;N3R8^o18rJ%*^P!&j54^_p&=AOL02)GC!>?n~o<|wNJMoaHe-jAFSKi`@loZw zgp+JW{2ac;-%h}mZE3N^MvMROT*TQ+^^t|x31BqhI; zkr@xuJ?eugf!>jaqpeo>m&Md-pmZi0<5@ImqB_y0?LGFo8nHMZ3$JP#I=tA^CDipF zK?H#h)jPTz4x#gXC8mWwwXN;GVaADDQ)esphhXFCVU~u&*|1jWmV!wN9Ypw9`7Uc1 zXIU^m-I`KrXTD6nuXXT*sQgGA_5ty&hiYjula#pJWHIl0F<>w!*f$_3wKGprmO69X z*8J&ciF8QL2;nq2`R#XG7PZ5RnZxyHKqIcqC&o(GY*}p9o01WXgAwty+#VN?TYcV_ zD>XalB8ga44Eu`hR+7lX_Ml)I9sjLXJW>0LGwz-ze!-!X>)~y$JL--5YAD#LetpG_ zyt8KvyPVn#g&CJzIll#3XP!>9_F)XzT%|Ohu5PMDR+}?Nm;0k|_EgLDPJZV;s7g;d z+{HPYSz+IM#)w6SvbdIpd=D#P+JbfHu`Iak_-k(F6f-oD8yG@YMklk;U+2KeonO?@ z(teyc<#inw>%NT;xml!G=S+u^WmogCH*alvwsG{#L_?+vCRZ1>zM^_F5q54vx1Ic^ ztQ>tVg(vTcG}R5I?#RnbIh2ZK=bc%!V z`@Rw09z-pOPwE{|vkNfqytmmG@SUeJ%L!G>kNxz*GbTawhyLgh#qZ}Q!Yh-=?mrmI untHg^mm4tg(oR3Ofj=?(y>5?R)?prRSsfJJB&Cc)ixk>C!&0xY|@%i=7s z$lbhO)xCB9ep9nm-F>>B?(>}KnXOYZQ6JS5@Np<{(9qEEl@#A;qM>2H|NWjnL0JZR zEw9ng(4T)))s{!8Z{lZ^GNFRsrbQBGHS*S^Q|1i{Htovy-D{66N_Kr3&OnXl!Oa)3 zUC6}lyX2nx|2YGj5GWz6?KZ0Y`rGfjfdAB_?mNq(8;hcAl#ukFXG-tARq+kVnB09I z+ljO)zO^j6Mp+`jDES7Z#&q0$E=Gl1S(jW{m0a4CUMKv%Lk*#f)+N_ve;!e>)+IM6 zq4d8qq~)q;;=!*TnfUt-as4k5%Ax$vqg~mpZ#~kb^7i!dI;i$+P#yvZKCFC2ed+`XCEx*1))XgJ8wq@i$x8D@H?--4xMw}ij>Hv5@*ZXFC6QYuTKE`3eM6=G2pK^J9FTZPYm5D&8db1(DJj8L1#{`#MO!l8cpQ1fuPSPD%}sj)zgP5 ztWLJ9*qRv}6$WrGU)KhPi&7^#*VAO~s>S>3+`Be*oVfO0+2<3Gb#|Raw!^xfm(P<^ z-`1()?Iiu|mb-p>v;5GmyFn)rrlz@kyKVAT$e&%vT;_?4<@8pb9oHEFx~2Vy+FEC4 zdLUHm7P9&2w_Hu<#g+Gu3rLhZ@-)d3oiHS+V5zIf?cGaRri_cNWBOwvx^88Wbd{Ow z^@xp_E)W<9gQ}|DNfgU0(@VTPI{!05cTDt3*FZ!7{{r|trod>DRbiQ)uD%F1d`igr zJc3sk_&wXh?4BTmsN$>@1@~M@|E*L^yBylnMZG>r@Fj36Q4=Rym&8P+X2e8}Vo!Er zEaI&|gxiRu&kL6HKL3Zcb2a1X)Vjq>F=~g@Ns0P*S&^-+4PEh)hBm9G+~*N)SB@E} zyc{4gfa^TuTxkuu$jixcU|7XNJ7H<%x1QW}Sn)jXI&@J{e6e1@z`1D0NBxoC)5jUT6*bP<6f>4JPC_+=S!x8^GZAV zLtzNS^xSEZ|C<$Ibv0FZ?)9oxKDgHhnjhBEdt$+&{1s5a1{Z}Bgu1OT^T|RLDv+A2 zZUX_$hLS)s&4R)5I`?%j{>2#*`hM5V!xAL7KmA^F6lb;e6Z*CYUH)w5P zorId8ZYV#ZL!Ff z`#n>@-smyuc87P)5Gd`77Ne`!nrT*~53kxfFxS9c5>R&i0M{)A$SXuClHa zo?9z_%W;DT+s6fP^L9Z98^J1QLGz{X(_QbGElmSk`Y%QtyqEF-UWnWNMfdTe-B{t1 zlFA>OO^fG-l5s7U-8Vp+`e7EaSilsGD?n7TVE@Hmbw{6OEK)JqB!@L--ogcq{4a>xD?#x+ z5H~>|il>_n{#Z$ZKltV5H<{0;AA%;T>=_>O<#X2wq+bpehk~P069puPDQyDXMUIY{ z9kY0Bgwk?op)Jz!-}gw(vwVVnK* zpl2)X#>BkM%jj183-a|Vfv+CbwX0wh2p z?>EZvYR%6W`_~DerSdAF&y))6q0Hrf%X0N%^m^->C!G}(Z29tJ_WN^iz?4E+YuE90 zr5B?Biq?Z+*xeZ$3xV~a`=SK60(p-hRt?e(?r_V&LElT_!52oogZw{dHwb#l z7Dxt57vlA@)6Z^MgS;!+7u_bCb-B_WLBk(M+#-n<(Iz<9&1Lggy?0|tuLlkvnBhQw zmFZneHTKlp)jUECGz{%esk6KxWTxk86OiQYfjS`rSjJP>xPp+kbK}Ja%NFxGRe{qm zp+W23W%_(%0nzZEiSX|MloC~PhVHz}c?gYiyiK2nKUEmeyA(q+)wJHqaAY0-45jn< zaglVq0*MmXZq<{e>xWrQ+!aGC7+_<_OgXMP@VxiJn@>2B&l|dem2TttVns*CKrlt4 zXO2R$j}&OY_IjUf{iG_qWt|{A=_e7@@+FZT)ULMTl~MMTtg0K9J_l!EST)DIjFB5p z+AFQ!Ee>?KExl3hZafxHAtEiPx=sw}#k{pAO2n1#PvM1&e`SRWs(xgzh)fAZ_RUO% z9&gV}8@cHbE|Zpq_^bzNY7-6^KN*mSXz5jwkrV~aqjiCzkYVqzY-J?Lf%rq;m(H7c z-dHoqatu)K@Kd6Rxx@{^2cu#I;l=yiEeB{L$v5}zBT6Z&7Y#o?^?E6OKzsLqW-BVD zgRcfleCsyYO?@x&gSD)?C7&?@*!VGflrA6w*j^AFkFL$0;a#8(J?#)u%x|}ZOeIRw zKc#m%QzM#YKK@Vm$R(|;|1I0&1@S~7)(TdfCRWlUBy`JNjJ7joymIHZosmDqhi-L# ze9HOeyt;P<3n5lzY5kDkK9o5|R#|lr_;7ard;vY%KD0m~G*W3!t6wTQ9(3 zfLLa9#@7LQAo(^3WYAxIbP4qZvyG6PMW=QjX$SI5o8;KHSU}uIrPV~2-Ivo_Iw7lU-{oO zDMPmK;ri0p^`!TWI|nlyZiHl_0SZwZs<$12mlGP~-*&b^83%pM7Jb zGSED|J=^7%VJ`*l$@}gPIGD+S7dU7f0ogH%jfQ&z_sL(;($S&2X~an%mXZOJ{g+M+ z%dIGTuhY}2CuEo9WxtnRYGXaimvn5s4_sNXnT`F69Q52+j*V~D-`{TPJ?TlEw)L&q zjYsAWRaGr4X#IUbY;s6%Q-i>i!COSkCLdTzSlK z?59HeAkF5z>Xo;G|4JoDU(GSHeC`9BojeY8(+5A{vfG6K0FQNIb1%0Hj4fJSViVqO zWWLg`E?x=p@8|^8TCXu@0A7#B6W0Eq-#?t55A3&4}#^jK^G4t zb&oeydHiFB?n?)V+q3C+`i@T?t!kOFkhV<;dpQ||JH?6BCQMm?*FilOYGYX{U7j{m zOxZ|28r>){@YfuRo>uiMQ*`#3mC&tDizo`}wbxjEcy5>L_VLg)d2$BC<=yrT9p6w+ z_E0Nm^llpxTpX6W3_lupugm2r!6*l|NZu-KD8NM_G{J!NmMd8w6ffX^tqn*CD#m? zYo9lick6yR5g?P(YUt!cidVg5aggoiuPG?;2Tj#(ks1|I1uZ;j#5#mM{>j82nx~1F z27(mePrWwba@b4YPY;WC)2=QnP8ysv&S9V72v;y8A^lsy1+HE~LKqC7p{A(dw zgGZI4eU~Lsiu+JbOFUF1SAG@Ys7jK|_x^s65ieMTv~}ihF1W%M)6hNyYUeO%tWDuq zF6drdDT(O$Tr)1Zsb=T^*JMNp$ z!Sz~w24+4)-75701)BE{RQ(?)>pxIp6zF{v3iK_TCS_v;bV&}L5Jsgm+?tZoP(jn$ z90{exO8ioqSp|qc5Rb2ND0?G%U+c5EOyeGe_YTMWfU~!5yKsKK*IqxOv|LtEybbfe z7&Lm#k}C6Y)2{E6_C<$b{1TgEb=yuXQ5Zf8?ut1A&I_m)UIM?Z&I?VpF-9 zD1>C;NAw6JL(-nk;k^D|O%)?-+oafn@J+V1mxp_RV;9&l3=f40!FD zMBHb_67Nxb`n-cU>w~?PJa+FRDB`r2mwV|>q8WJ>uJr|fq9`MbD=#{IU1TmUOxu{e zY5p<$978JaA6r}u+Vgip&9LwYuKGWmohLmKEdSiU;y777beGL3@=plMhknTY=SszJ zk?QO7U^v#RSq{uJy}OZ>``pP+8EzPb;va24Yiu8<*`UfjC|j|!;HRG8*&U1=wK|=1 zjR1Jw{Vc#ZcMeWHCl%@?n+R~H#Yk*|d-inxMKZmyU-L_}it)N$LY~$V-U;cOqFSufP+6R`%X#kn_Y2Lz zb1^!{*|_uz6!cBz84b9K90nwr6GcG*@@jHP z(Oen^)|0ID=yM*39(DD4W&SEcgas0H>4V5BJ-Asa3Tj4TMBnpd{2F^zXhJ#0&9!5F zWTM)XNBiQ?GH}JM!L)wI;=bbDB=m+rX6828{Nm{trf8a z>Tg@A$bPJHlUV(gKHe_6WIC^wQ&dNtm}F`Ihf%2Nvye7M~_I;(*Zf9d>2cO38Z1cPP6`L!Ms1;MF?~fBxfX`xes< z(-?k;(NUWHtRmc|MDqK3@ztm7fev43B_XI(wY*qBmwuTBV=F6UvWE9O@K*-|eC3@| zz(cKeK8t&?uDVoj+u9#)A3KxZiaJm!mv=9%5e5p2`lzR1PV2E-;BR=VfH9+zP9;p9 zy|UI@YN_P!6i6~aJy7amnwFsV0pu@wwEIpH`POqi=sw<=mufK?bZi;KhkLJ!l6 z$Es`_n)CfUuE}p_iN;?rfvlF7B&=1Llk`p;^5h`0!P3 zvJTtwnP(^vK|~ruUK1wDlwLG(5h#O=vM~Xz{=qWm@B0)#g?4wa&w$_mOOv0;pn<~G zY%yg!K}T%8guWK&(87SPE)yN6ymU4F0>aiHVNmZ00K?|;k4T{;S8BNtNch3N9JN6J z%&FU0=QvCP9|4G5iCr-_g6;-v-y|BOK)1FsF($%3O4q-a_{<`!)ySxtaIvrCub{-1Og zAi&i{mLE!d4Ak@5g_9!T9KUKQfglC z+1kNhCACMt0WFV->(J89lXq^*471NM5dP5~%|*oA(HqMZ3PdeCT3G;msN29&Gue6g z5iLOrfj49KJzHa|p;qqrmh)zq?(Uc)4?y^U=qbE)cAI9RKDCXyfsHw(?xZF&;mMcZ zlIajAk8z@~cYOdk>1U7-{2QI?WT7zPJL~kF;wXW=fN6p63z^ki6(_hxlOr~6x~Rv$ zplRryB2>gaQO=+*$Yby?9;%Q`kPG*;kLRY}epJIJ*5^>dxo`kF(Df0d>|qnxAFJD* z(d{I#nyYRHZ&lF=rJ8mt#ew&ijt8V2)u<2uG;ew>#qb>Jfih$q)$pihO14nifKRnh z$@DIvrnV_b(Kw{*ol39x>k=rY-a(sPQCt|MdIX)@^P1^I&FA;NvA`|vC9luEVFHkv zTVg^J%5ssTo#uEi&nhs^GB-Tj@^%LDr`Ws+ApuyEz+j}?oJUaZ1w^&aP?girAGjIC z1^>`qJ4Bgq(njGbRp|$hLIifX6s?akO=1AK2;6dK;Ft?uScv4Z?T1^hM=wqOix0hu z=|WbC#g4n~8m|z=Z=ifn;H)|mlI+BJNzI?^URK&NL}$jHlnp&be*r@a_wC+C;ok6` zwTccWoG{I7f8*7h`Tdr7a<9+ME@&%zF#S26JFIOz>zhaSIvzU3soMl^0}Nirq00C0X;k~ z>S69-(Y_%g#J*>`Ko(wItbq{pdf%=&>OkM`bFUXqAwVo)5kLGisxQ1cO&FVR^0yaH zDahQlWG%--`B@Zo&gUwSv8TexD^v7>qp!Gt`3{q|V&+__la4Qa@m4!+^J+k*cBX8^ zx<){cr#NB8#OnvCA7(3wzrCvW%NNhO7^5(hPPIL|b#=TXGFqwx-nAsx+5=n8T8oNh zi|RaJoKyGpMmUg|AjVJoecwNz_S6M?c~xW0ZAWG)42|K)t)5)sDiAxYux?0lRI_$J z+C2VN0ZlO|&eLhXO!)C^x;`;yggY5OyfIl1;cm_{XlH$#Uj`N+{9bi1< zXeSHxp=y^R)H;jFXTz*d`bf3g zMZ=R; z?bIc157q;>l5PC(s*t_iXK>Dl2^K8KU%!`=C`@Dnqyb}gkeD@^W7!70pEx0~geENB z1cy%-umb58!C!pjF(0dt)o-58(>+`|xxIchV?4mwz0K$$PWLRg0Ej^s`V5aiEaJZQ zZ+5X2?dR$!_=~6W^ou;sp|Wi%Y31bkbk9}$8@28uSqdbUf+8Ort@7~=##f0T z4*5s|qo`ds6zmjrkQO`LE`%3f(DGQ@+q*!fP*PQ~_+IfzIfxRHcqD862jTh0*q2~) z4#oIkJ&$2tBt$~G@7?uY-^>2oe62-0g)^>3))(V^Tq)M7I*EtxAP{W?kAo|9=Zdj+ zGZhmkdqj=gElA^F~HWh3->z|(OF{@glz@@b||@?GrTSgM(tQPt1U(eEqEkoJ#O`nhcF6ieqi zKv1l^YWB+ls=&Qyhth$lW4Zt2?*bte}r#mXqrSr@ilLbUlq zs{W}ef*|j)JM))2Oyy%CeBI@0qN>=59H$qTvEVa!3I8QDSeG0R;`HOl0+JH`YS0@? zpR4xqQQbScUewfCZlkUshZcy=p(i_1uQ$l5meG07<}?{jxGp$P9r;Ule2hGOUSsM? zctB+4#d_Cb6=|Hus=Z@#8$uQgPxh#Qc&xR4+lw#pE*Q8L`!Gk@n3}v%ey=f*rgQQq zU{?1?7eQk?e}6fjd8COjkaDjowXXRlvy^9c*MB)x@_T8KbS)>1xooZj>!L0H=(zKR z=9%$c{Fr@RZx{6HT@@rU$M zE0Lfk(gxBZnsu1K;RD~U{zMOv44RFeg9Qui6M#M!9BBwG7s90%5eA(ba-VI(WFB9w z4bIPKkOZA`UR!l|mxJ!n zlHylr&_n2<=b^VUkMZKMZK@4zS^ES{L6eTGBr8f(tly8qk9B4lNMzQQZuu3E<63)2 z_%>#{$ExpxRNuaH5wd(3e0+@E7C+4ivnyCPo(Zy{a?)#%3b6L?kUI17$=V0UUd`3C zy*8@?G<`-RO~s{@T~GP4zxZ|J<^iFog??(f^zqLx53&drG_SAS|>y68S_#|<_U8HdeBujBDe21S;fR?uA|8O{R7`u>m})w zy9cWZz%~F!eTG+~jdNpkk(+S*{+Jx@QxcBsL*#x1Y+}%iTm_zJAbR0#QkczBO`(QY zKJz*VWgrXSJyVpNGRG-_;*z|qtAMK{%<%U3#OM2TlwmyAswv(pwk2ebHUb>EnBcT_ zwbq#hzw}qYpl6G+-->O>NgB8U21sgYJ=_i%J_BZS0wf{MRiJB2(DR^5IfVbCDxGHR zjiQXJ)~ALOc+q0pvIf!P*LmFqj!rmAC;1Vh_>ZDjDeU=gL(tk zqn|e`hgK;Cd4QN^;1Kxl`=$#RE%*|qv1$!sAz_!9$6b;i^Tp|_4L)9bJ>mO}S2Lh} zLG`@ZQEfsE(UD4#c09rBh^Qhs($Q%zv;T(r-;MdBcC|#DJi#UGX9^XU!sLw6o#2ny zcLJYfq|VOHXAy0@+0@VEYGJBC?Z6Ezi!^w{Y#iRYAU(w{;6uIi&Z6gg{#9b7p2Bl> zb;W`y$spnG{l_wsnH_FUez9A!c3*u`?Y*h>A2BhA-u_VeE6K@d;GCxhxW-cCw!6JmrW3 z#%6)gA)pPJBjSO;>l1&j%dZazq1_4I^;9^2C3Y`N;3;A_<#W2W^LET9G!M}jPxK)7 zo3+NJ8@wkSrmpVZu;?Rc?@w1*;Bxh_DdDLi@K1P@GJ;{*j;_WtJ&HhsR(T0`B@5{A zgz0Pe^RFx`YgGjEt9ZS;mtT@cybJDwN+UgT?S9P#P`Bwpjs@|>QtO^9xY#TdmGbl8 zN=1gDnw+xDl!`VEN59O*he8y~=ICMv0IA|5jKmbOnTr}qiV}v+7lOZ_hY-<;{w_GW z4rN(pv_iFmEv1LS{Qcp~kQab8a|98Xs}YrpE1U-WA%47T0Qw>!bT-E9Pn>=$yKqT4Ue$sO!Q*wIS!b&~C2anWR#0%KEmV z9YC*X{*0Qa5EMAQtC9z1{;}`zpvTakO>wMtWczc; zc#frzB;D6An?sSO4i!2LyS6;CNQp%R-3H7~*~662o0NV1JpHRJIiZCxYG2a> zVfsykTQzp4%*6L0Sn+GPT084p7@Jo1^tq~%tzL`D#soz>R{hMi0J*~XVr(lQ-L~l( znGe}9UgFYR`a5}7T;7wW*+TZh+6TJhql}(UjRXG*a7tCKW<3n>s4jfJ!WT0))1DsT z9S%ZoneiuKRQ*ajRYy6T1faD^8pRH?ahRWUtT#J~1&%Lty<}2ehimVt6|N}?u~p=RE79gTGVY3_Ds>nXIZoyckv12rTYb6tfST12JjKTK zi+I8Sk*%!A4rE=<3N6c3 z@kSgjCGa#l^;UEZAp>WsT+{mlIvHpTRn{;#5}`@8A3#BPC+*LDRwAvsZp^B^{l;VR zfLDJL1&!alMintEOx#IvWOj)DQi^p}1gKJ2e-jpCquT!aiw_yd2FRtH|1}6(AReA$RvlzkI}8RuTN5 z(?XUClN1DMH(Xusf9T`qJ3F~?}xcON&+Q;hp*AR z86dKjFi`(ZKe-49{CWle=VmYJV}L66@v07v-XD1K_tUOz3*2Ak3{qGg=g0OKQv&%B zd}>-U?Og(uu6cZ`dA1@UnJe|Pbl@Ss`l&B~-4({8jU{z)yTNvc)O!(NI9LMy8U9m5 z{p{^hi2}pLmq6lCxN|k~5N{(Jzbf+bYR}I95uVStyT5UI?pAGEm~Xsh@*GY-P2-CV zB|e(-3StGZuENac{dGgA&-|)QUFh~km&p1W5={2}NdIRZ{i`&XvEJy%0^R!*RcKwg zHfmHJ4#QJT4x&O%(nh9J@X25OrPK}-2EH6{9K8dKrr-U9Q5mdW!NXTOf7@}q$y2%oVfeJyU>{_56+Z*k zLqaOzOPXJIiQd%vWR8vH3>=G3kpDGTT;q-dk-s>)CcOq=Oy*U*S;+n!UdaEq$n$)+ zWob_|J=BA)!wYBKEKef1v0Bj2(n_b04$=)JTvtIw0^Waj^$N7)F?aVD`OWz8Zd07QrPlc(+4E`3eDe% zBQ7{@z$M`5?ase0?pQ_fQ_t|JrKP%Peih=16;lx#0@zzXR`iDyPeWtA9>2d+rw)4s zcW<%OVR=r>IgsH4+=)IOr5qoD!5*vz-LmV+JvZCEMs_^S<7FIJVePe*68tz{`LP(o z!B62Bkey$!eztDnW2iON$=kilnqBvi3kR_4B_lC2B3+kTr(yaXML23MilA3Gf1eP; zzub;Jdy+fhcy_P!g!qRanUJgVanyn#RD=sG3j7IT~m zfT!n?pl-#%$jjB5Rn<(18cjfP))JwvnoexpJBm@wmeEy$28Ett$*@acw7`nr%071u z97&;6ylyF*-+aRwLsH4KT?IA9L41@3$V{f&>^eHd^1@GU3t*X>W&vk4d~$^m_8-1r z$Z(k>3IiwBa3UC76*-1tOK(B3*1- zw@a~D!ofx`$ux5BG+Xk6mjiGq)noQLT$0%3&Sci^AuD(!%bZRsw!jOmuP<8x5gCzp z73z1J7uwokvu}Kf@Qxlu5X$ncU~T%OS4`!C-z29lFyyUG-_~}U(cZKWHL=bx>V2Dq@e7u4F|-=@2m?0TBOpIp^nth z1YUhw`VSy({1Z+os1mROz<^9X9ejAd82<6E=VHV5#`BDOLzk8=E-?bUXhPur*s2f% zQe?|3sPWK35ElI){+8{E(S;B%=4#P-5GwYv;@Y*?b8tG~b^>DZ2J9Xc`0~E*`iJdi zw~r$bwb8&u{t6bx1e@{_Y4(@YQS%1%fZl<*6Wp}0rkzOP{$A}(gSBEb6&J3oFg`EZ zw!`(b#p)u5@kcFs+Chgf$HuO$&UITOlH*uUp4?!#Q~tv`qbb6~8#f-?GCUHn7hedj zt;6+Sl%GMqPP#l#%I^vGWaa+T;Z&eZ2j0Is0(RVYtPlMzY?^#^TNeEjtfV;@YlzeC z2wWi-cP)kcr%5RzL}A6^n6$v>ODZ}%X}jXQY~ufD^KyCpUDkW;@0*)iPG+&*{u>kb z7Ol3yeP{9SY>>FOQdfW!{snQPB0$!g6u3rP)?Y8ksYXs0qX5l-iEG+ZwwAP?o(a>i z_n?=H;r5pgRCC;kN8tx*do=lAr?*AYH(5u;Z&V%9qQ5v$C?m*WOH55Ma<4PJs!jiL zQG9f6Nrv;ai7c;JlKuhHZ>4n}jp_=}vg>m^A2|x1IVZdE5(K0yp+`1ek@|9NQep75z_A8XLidj)aOt)cQy??=V}m;IUKTTYE@%24 z-WFr`neLrVH62#}zS>@V6(F!UVC3qU>g;35Q3@P5XFTlOhRg4W#H`aOf};$x#?)=| z8xI!yrr%;Ty^1}%(%}~0V9AHM38fB0icw8kZ7V83bE`c2E8aGf&4wIL))P;%<1$gPxl1I7B-osYZl=1ZydZZ1V2--K}#!0WB%$o$%;z+vFx@L@U zn_8SaO-O{-PolV?1tFHQ1Yh;LWsf`|=1Z2U^!6Bw&f102id1TT!CU<6RURzJyZi_^ zZOAD5qvrf`E%yvbo}R(=_IBF`-hWt>gS0xiNb2fiDuwamGz=^9!*1l@>^o|flKzCB zG8VZU4))cCA!0(sbO>z^#7aCK4TVa{lz$=T%-H7zs|BrZAj;NA7gHeAHC(BoiOkL^ z-KMQNK$PbOcXX_-6&G3^Gw*CWGZlXtznA;*wpCrdXss>RKat(;%T%EhY^RgRD%CXQ z;^Dn2f@CLf?|8pk?l|SvUA4TivbwTdHQpOKR>6i)X>(wba)y8L*gK<|;cuYY{00u5 z_2>d$0lI!ERNo)+@@ zPpmxp%4kap!!|r)D zyv6!AcIZy{9z-BJWQJbdC?fgxR1BV9jpPDIrOE{u%QE@JGvJy z#M!t9)}-(a1st^^YsqQ{-^su+K5aS+-#y|-4AWq@;(n6?&Ljk=&v+31Q{DpG{Iv5n z;CwXhWOQC|wO)J5tvCK<7et%f(#uflpeT*JJ&OBN(lc53!B7s|0*CGX5mkVgM=@wn zw>3B};Kh(}uxD!)zQKawzOaEQ5eh~J9=NYN%C_dpfriS!4D=A6i_F)|RvQ_~EE6_;(?N}2ljk^suKXBa)lxIF8L((ch zmJU9^n?kM}2F}aFq5WHG2Y7yuF_Hy3n5`aU$$(Q9#)}8_qoJIR7HE_RIpW2gXClRi zYy$Tk9%10RH>kI>W3PY7JIH6{QhZ4A$+`z?)yz>`X<7tWjJ{l=hVu_%#$-{{;2=2>!p9tuV!IqM^wzTe%L^Desp=*rq6SZV6W>A^o9s{_pc|4)ysQQMa=^xtonRQ?4h$*aAqk~RDCe*gf@x-h6)FfA2Z>oV#at&a~&9ciwsDnc3ZWZm6%xM9)o6MMcG=g;O`C zqM`x*dtfw_oR#7|3o0t=MMGT^4N7wN;COxe;P3MGztvqzWa97o`u5Sm(P;(w&-UK& z?9w)+!uZ@eB|JSlUs&DQ-a8tb+c-En+1x!kKR-V^J73>Eq=Y;BCzK@RTH8K6JU*pF zC>2&V_9;bE3tOjWXA}RnCg(T)ugdxS>TctY8A?q`vZ;Uef0>kUU~+kN>tJ$zb7gaX zedlm^W_|4M=Gi$#_|f>^&5_v+O6m0C_Wt2Xeed+gnjaKwW>sHt^DqTVQEX{re`Dw9 zpl9KNPVw-BXQy)8q4-6yg07%fnNvtv_e0I>+08&A0#hTk!o?W_91Ey8f1dIf??G z>j!ch2aB7BzP62iA&q=%|NUoSn>6@$bZ$eBxOCoXeBO|7`^^gW`3xtI?eyZ#LAm5n zrNT+QhH2{BZk~|!=WW;W1N)*~%dAcB`s4lL%l{S^muJUX#&(a|vv)~^jb9&L)NK}Z zt-ov93@%#qVYRz;QzKITyo-%m zoNkpxI!D?tCMV&lw`WO&E{?jvvY<@%L+mh*ixpePo`-$?bQ~1KC!|DO5 z_~qc9{llYfbS_)<{F8d?^!u|^(zVM)`{%Dwyn5(m3Aq!5BDmp~k+E&#Kj@z@( z(m3KfUUmH~t6EzA7Omx6Vb1aXR=7*{`{vzUbCRItgP6WNvwJ z04ZvHx--7@sdMSu+84RpD_5PkGP0HklQT1nOD4Ddq^uK(%+%t!dx2JPP1uFOv>R^| zC8_hBHtzAgkjQs>eB_zlnQsxUeYj&HqQdcKw6=CW8!yKA9cnqo_!~&avSMJgP)IIs zX2h=BB^LF|KNqijyph?G);OsvOHa#Ab`t11mWaw}xpOHBb?hIZQLuM|-opz9;H-9A zn+vUAtRE%0_LT6zrJbPD2J&|t4E%h6O+tsN$>%p)cXo@-!XCI5oh4Rba zNOQ4AhX8zbqMP*r~8hj359qF(4c-j%La-zz1ZJ%rRBF(~tVIjBHO?SQdZ&2s-d7V}NQCET+a*}b@G>}Ltlrl*auGw)`-K(8e*ou@b< z6G25M?bC^(oo#wQ;<$OIK&Yd`B=mxa_U%`F>SssO?Jb1;1uH(=Ku40F3grozq5o;Hm);Bhv5k5++A*3{@KJh=oNW^fU4f1G*5KnwUh5X*9|!nrfa1A_46VY6}%mA z>&oPxo{Ho@m$pP%c0fIy@Ac+m$X`?UB)>gzAHK`ZDoH1Q$$y>C{cne&Zhl1iZ!6C_>oe`u$>de;BtD4 zU4G)0&z96-nbXv@xytY%FOtUAeDC#9$&blW8+_Zh7xqclf}0)`RvlVVmCAV3k=hGB z*cj^tbIdIKjC=6=1-xcZA$Je_y0Hr3ESlcnIa;g)=0nz>V2 zD3A4i{%vtf&cOTfjGo;NznDR#z2u6)q0MpCtkjO|V4teZ_z=03cKmDf+mRhWCJb3a&r zf7$Khe);)&<%z``n;#glv>ffn(#Otnqf05*`lx}I(6k; zz4Q`O@YwBS;lf|ieGZ(LA5OA)NcNDhoI{Eq_T*dc*NC!+Xh+&G@jpoo0X8r?WuJ)r zwebs^d#`NbE;DG=PggPz2u*JEut&a-cx`iKDf;^OQQ#-3#>It3i??kdXO=PFKN=<+ zUJ|??pQ#a~tfJrS25v^0dQgAP&U-8U%T`FMcl(bom?ztv>6(zKj@SLhQnX)gq}14x zo5&ZEiK$bd7XvwQ$mCP<3_q#~@qJSPB=H`*-6wPYt zk*8Qwpd2HDG^oGuQM%K6mUb zu}|6FYg5{nW%{^9Do7x6jUIYGxt+q^Yl(wj>Fytzy@eAHnMW?IZ1$36flm_K|U9^9$Y7F`uh2PwN zUGEq2fSZ2SyWGM{-8+U;{fBGo7}RT_QXs;RPUTYG&y-&lp9Ahbia$Ijc>S5XuYdO= z!?n+%pBqJA#KiI^Dxd5n>q}bKo~M@0krgCo+fEDmywdBUcmLnkGQ8&1_h+!{g!F&P0!Vd z+Ux6+2(RaoUX7unV`C#1*F$*1c)|{F?NR<&jg#vob)?2Z=n}bKiqV>728tAna0w*} zG>#xPZ!!vyn9*}x!}Tg#_R1nReM3p7@(q8f4X=ODJxR7g+*PN|Z^XiKXXQ&{NRX8wm`6|TO-sgiLug1H2&1)X0-e((+zWuTx5I8 zwL{ws?96ikW@Re3){g-$`PgVqJ}UniV!pA1bC!1wHoEqp@gq;uy51VU z!ut<_b7^XCpRKY{uCOB4Ko?<8xiw6to8w3x$BEqufuSWYZfw1G>Vzu^EgML^7{PP*Zatq~d6aJ>VGwoC&_n*Ze*hl&|MDN!FjYYkzzER5Ts zY2(f%<=ARD9K!5WZV^Ee7Ku@X;)y8e4ze4O83%+aBIAa*VW-w#>L*^QTt zYye34(-5sLLOktgHUWHiHy@iM(kLo&$`@f4o34A4#AXEG(0nvMnX(qvu6ht{UCOZm zG2D@&+3Ex$fJBf&6Cm;3VxB|?wQe~WCpn`E`>Z7P8d=|#fUvBlSYN;2FbirV0h5** z2k_h{pRmv3`yt2+a=%OK;piX1$rQptS)|Py0N+F&D4&-_2R++pSi)wxUfoe<2Bs99PA+Wrjrov zYn13KHGhV(@r{d2ik3UGcaLTrbuKzwIo8!$I~os>3?5Go4Lka`+oup3dZx7^RjX7> z3g{HG4Pe@;%A$3hdH&IGIzska`U7%$T@h26NW>R@51c*%J0x&i=bCo1@H3ObEr{Bm z5#3*~dJYv5PB`*%+o;&9RN9cN+5NX|r`5fQ~saN!67$#O8`Cbg-Md_MX zX{r|@^h0*K8RC7Z2Bi{00+;qhgV^dyoT5x%Cl3|}A8v5OU`!p*eg=@GWyzTr!3;Az z99PH@vM_Mog`q3a%S>hW@BpVp(U8oWDZDwu08`C<)o-+mZVUm;H*>|1Nyy*YqQ^4;A4=2#j3-gowPIa(+^2 zBS`xk`!EuXRF@{OGvj1ZA&6D+;}E&qB1M)VDU4ZH2-!=|e2CBUQ!_C7QLyL^z}}fi zI=2p2SN%ohIv^G9GN@gB&uT|w`q`y3Yfjge#4ny`+!-Spr>V&A7A`Afe(Sf%CiD(V z@F$)dF-#ykG&va=iRRZcysaue%zd-+7_EQMr-ZiB9Z3wmWw+=?&waL>%^Qbpj24mPxDP$y-t@$%* zhlqUCWGrs8U3P$)ZomNzqt4Qg@*xHftOL4R$+zGbUC5%V-dlo=rj;ub`C;X^2de-i!=vGbuFAcoM{x00}ST;A1 zv{DY+Sig#e&%2PtZ2bU_|zR+@Y}bmT>;A(^&yXouM-O6ueZA& zXdHH&>xZKPHe}h3AFF+X6!;MDg`+~PHNvH+5!1=z;S1dW_JPje?P68QTyDg2Y519&`Sa4Z2cG+>$DoyqU zG3Hn#X*6cLwDs_DOt80_o0LQ7K=cV%BQzrTUZiJ4_&uw&R-2*m90Tper3X61~a>Kt4xJX;ZF4pV@!`sT$Ryl7t`8FN zWFByNku-sEx}^mSD&a-b{c)YTh{?fPP?z3fpzeQzhtT=w+#nEn`ey0C)O1(J zHbN?xfZG|aAe0{jA8us`q5j5PB0-R?6T{!*iTvZEbi%ul|9~o`s@M;*NX6=goC{oI z1RX7RqN53P+5HBqV6~!+5mX{djul17 zH-Rv(!kHI>8l0GfF-c%d(n~@&3NV+!1?dP7GRhr@uNoL5f~B}`vXNOpWnZ@gKK~>$ zM*9#KX|hL+`F^9x6q)$j5==-3O?wCyjk5!}8iDZc;0kJDrPqy6<%V=BR80=G_`h%; z3>Or9*PA*{F8n1Ejv&380*bCF-^KELV>BjY3J~i0-(nZ!e3~C!-ob!$0bU&N_!(_* zDqleQxSk?x77lvj_k$+V2WlHZkeUVTX(HB*lT!E*4?>6;WX1u7{&!dx6f4eB7f=cd zQ&v$?4&FZIZ^OoLD!|UBE)SoCFVu2$U6CR@G>~;dU{4Ipo`WNTGw?iXkNONkU(!UV zVK8KB%6O__vS<^jQEv%98h>8y{Xba2cHtMsvZ8GZiKaMS0em?;3k-sn5yGkXk0&Nx zzZRu|H&+obe|Zjg5TP-`@-P{ALOWLQmht7D#SQ=yZD|Nm7_8=>a}r9ZgO)LchvQQt z@DCqNf4d!QkyLq9I;c`>kcX#)Z%U`X_XA zxCK1GzfrgmvwkiWp6f<`3^df_OgETK)X%KF5QeJD;a5J;@Iw%CdL@KhH^sFV->gSM zO6S5~;sE|jlrkz{o%OTX1w*s9nO89rku`Mw)Jwh;C9|@jb>H^tv4^2mS- zko<#9g_w=6<3Es*Y|IfTOeOFEhAfEOR37;udEC3TLIwYltJEY{##hfAwgjjn4?FF- z(PXPfTS$@)3NbC-nigjSqNc$QAGV<3z88+>OQVeaiS+d^Hb(e-6B!ZydYX_$ePsfX zVu(}lmi7WZnr_bEMI?J<3+OpdqJk1E8V6^jA$wmb3G(OZgbzT$d}B9XCD6=V)_;wa z=TG2+ZDCaq+JFtvhJCoa_imQ@qWmW~$m@>Bt#J8xLUj9F0A;O^2L|}a`h`&6EoLMv zk0($e<&5?J+%}Sy=tIo*RJrv}tP`8)h>lh%ghm95p%9=*%GCSc{EMUum!gS28IO6! zNW{{?1*rsa^f(QyjtIdU6UhhLXre~y0zpO~X?T{=qv2~rdY^j=z(&AJ4ypkuB*}+j zz%D!=IZqZ(rY_C=&5H5piZ;pgD^TOjZW^R=O=h&K)jz0@p;M`cszKDsVhJxxN*2fS z&7iJQe{IpQjcG+8R&s*`KD^V2J2HmHBr}VEDG~&}M1)V3wqc)G)NB2_+X>G?(P9Q2 z(KxR@FA{VQLjwE0OTfs}N=XpO)F99WUUd|781m44wL;FTW?QC=IEt-v$?4RAM&{|g z#(LHiSFx!SL4Ebr}BuAc*-F!>E}G)myV?(sxxQbgb40o z0s@)U2Vyk;BLI{4k^;aCsDp!g6Z8I2VPJghzq=H~#kR<*|9nF%uDTDnUhknod|QAZwrz_h z_cVbA^z{HQZB`7s@FT>asj&OroeTALf?=%@PoK@C9y4wwixL;aHMD_2n&-mA-d|L# zryj};jy*N`yGG(vh&w$YkVDm^AD>KZwV_Uq@>?I^MlPi^4BGKzdO-D-JLK&i5EeR~8R0 z-vuG;2yM-rLo4}9AW+`zHK15Xw+VZ%2^;CJ09<$@Y2pV_u#^(#^qTw_5{q^OitUiknpYTC1eF6#gKdX1^N!_AA%ySrtjD49`2(k>PFPoVy(Bw+w6JVpe z$s3dPN7hgQdKF6g3kO}s!A*R!cVy`I{T+z4%&n1= ztm_vvA*==fE7Ye2+k1b8XC##utd7#;VF4~}4c#qF8OWwGKm5B5O+Vjpkz)Xk(74j{ z*9}ENgptG_(s;&I{0akI_MN`Jz$X)^*7|#MnNP~$k2m6^1fRz}b-X+vNtAA}R5*Qd zg8`^P;|y2+Wmoz+BGAOgpz6du%nwYBKN1l0^_-*1?|F+r*kTi@aQO{oPTI3HGd`?G zU)k&FK3uU=|G88!?j`_eN>+MR#|$K6BkXR7))xs7MhGgzVct@xuksHX*AA-ZlXSVM zG;tItMj4J#Xjyi>haD7&e>s{i=<7QaY5wt~I~7(0|9Yd^e@q|NNm z=*ct34N?<-!$SN(SdpqMRxEcUKFLHn+|Yy=830kGU}J_T>bZBIGF*6MBNd^hjIwpG zc^S}$WW;=sIQsO8;GN(t5hL_ z;q?sF$RorOWbo-(1hqp}cr-i<0IUBAB@TU!K$G{(&)iFg%62g)?@TJ*Vq z(WqBfyX6)$R*JP6FMFG2K?gBaH_f6@j0opqOCcwpe)wV*?|{bD>=%Wc@B}VI>ARde zwAiHkNcAZ5sxUJl>4((CTKqdQjgmubQE^;!b8mHq)UL5ARrZUO`-TM zRl*?FST1v(s+k9T_eazn)*?R&WQu3)g@5I=0kG{3Gzzi8K>ypay@bIicO~AGnw$kk z*V@pZsnpttlds236VqS0?*Pg9;!zHphJPzVo;U`P<;P< zh8vBYWT`xq#axmHr2tsd zV47R^x{TMwO#?cRNcC@ypk`-8%U>W!1CsI{YxNb3F2bkMiXvXr@`IAD(F9SGg}o6_ z#3Xj_>P^TZ^B#26iRk|88N!0bHtNfn9Vms^jJ@VN4aD?ei{G|r(A85R!HKSr(WVO= z)-(#s;TqQ;ecbNx83t*_|Rtq|SQ0OSkG{yMI8j@te==j8IQm;+(F_S}| zKA^}%vB@VNgf--li-yQR#2!(a~vSiG!rQuBQgoj>i6J5B@$DqjbEABwmw1>!v%f)5pg;2EE@>Y2ae9{w`gQ6 zV>6_YHe({a!8DkDq;67p>BoEPJ&hfWng_;)!E>Ygq!|lh2jl2V8SV7`R9y4raS;0< zR%8pQj?aKZKv-!Ig1@6^idYoFS*Yd8I5HM$Yv z`(z>1?%yLLT2QkRRRV?<$nahIXlC`u|COE3x7T`Sauo#G&zhw#ODF#>12zIi7A1^Z zgK3zP&zoi3Wa%NyOBYpo3>r*Y2jGBU^-R!(w^$1p&N2$otQ2izD)hTe`9UMu6%v>( zfk))usss@k-fF>_Q*E$OE25;lm}u|rPP_zA?|_UUl<3L#ioE~V_5hs$oH5d zp&$KOk8BMI++K0|`{X0_<8D^+=qSDf(##608)Gq=MW98q->zyjC(+XL4|M(4X?FfD z+Q_sQzvL`dOZ~ZY9-+zqdZgZ5!BptHnK1Rzt&FU5Bzgt${!FaXc-R0z&$|Kbk4viJ zxpgcVKwG&cPXccvhM9;P0gi`o!AsAEknZ21|A6#sYULsI7O!uFTPHVMos%Ry{LaZH zOccr=nk|1yReij|d%~V!q{-qvdC=$!!-4sA9wM64UpOw$ej8Yew3phN_9yoX3kzj z61X&1!{<=A?YzB5H+lGaSJBnXgXB`(4fITLN2`8@4CJ-neu7cokq%Jl+%dyX38QZ4 zNHjlhbJwAc%pgc%4iw2>j^5CXO4*BlMxtc#-~EkmCSe*Z%hLua@3LV!U@&FMxY4LR z_;1QgogbBDJ>~(U66zFTzVR7X)&SjPY%m<{k!Ni*XmMNEWQlPg-a%iF=%9m5=?%(o zT5qan@Dm72psqU-y(AMIL5HFc6rc)3T0Ed3`Gtpnj}G6M`y%p%fjbb|-_4^Gt?ja+ z??W+3MR$$gszshjjr5sW8MsUPreiAiIs7RJ?c0mSyTPw!|nf=LW zCm69Rc35q83&TX3as#?CQ}^K)@`eCuYODYN%u(H00H3>k9^ za{%@Yr*jBpn!|14Ksd??r`^GD95p=4Qhn|xHkbQji?W|mv$T=N~gke@kVnequLZ%Gjn+?tz1seR=JTTX=Lyw_t?NX|dn*uN6 zZ0lOC)p?_z$dIvaU*2q}NQRRVBzpW1s~?$Q!m_TM&UhYb*UPWUx`9>66jjms*J6a1 zYHZ}Z>-YujWVbs(C0GmZIiSb7(oM<^LW60ywq2aL|J6^uJBLB z0sRE*k(@Qt+;>ZwMI|{Ro3OUAo(V6e@Xuu*QR584fz|tqm@HwPZ65FyFtwJT1gOS8 z!__(Fql64@T_*=g!X;pzG;qUuabZkzV0YjhtEMkuBs_bX&<8Bf0`aWEuAz{A(MmRI zJInSPUi|(+@>hS~c0fq~WGqVu2rI*CZh$^$)ZW>)b<%*96!4J99t(Cx^j#kAz;YWC z2@9V_!flpd#L?9Xc1`mkZ1(v|+Qh5Z7_MjaG+s>%8{gRsVxi#=KGTq`KmFzyK004- z6N%-H8(-q~pKUvLsWWLjv~kFgDJLdnf0R_}ifHZ8Ki=Bfd7oK?Cbw`ivL?YuB`AbO zc<%E#_TIXpu_JAWbh#e!SM_gUamaK15?4eQ3fyazKW|Mx${ofK#1yyrPwqEoMZ?bD zM>P`;5_cOlAk|hM;b?R}P_7QVMady}o<2P_`dpo3G$s%tN7y-^24^mT6~4a0dOyBU zT40g-*h6Knr2zP|?|q)X_dqp0tg^9X-+nxR`(nu{rS0Yq0sh&e!5dlw$1w0H5#6Z+&soF0KV}LhT$#d{Cmg zw4b_Yd6c&5D$7rL@B-WHF4tzKr+bGfl8uZKMZget*YDNb4J%Tpv5C8S;x7(qGCF;& zHE@~^JOwLQKOn+u?9*D~HXUCaQvco`lArHV9+n=Pm3_y|`tE@gPCj3be=ffq;_I4% z;SBoXv$W(3 zHSmX>U*(QmbypNsDXl#jczy+tzUZRQDcb{CVICaW^I&d0Ki?=hPms;bC~0n*{Px6e zKvcgJG9v?O3jGIeb_e#k@XBs0aA{3(juu^}nS^|BlgSI+dR7PFkJq&jA9&p>+K+7| z=A)q8ru;2E0%oX+G>(7SAB!_9q(mo72Qg(qt#9ZYi2Hi8L#_RdTTTznOpPrZh*d;j z*qnJf*g;76C`=Sv;|9SJBmz5|g@&xCFfoVJ+$Hk!j~lYRC?^s92E3FM@XCCqzc6dk zpg@zQw0VUrGILViJS%~e0Jg1QDjV+UVB>a4TQaP?8(}7rC(Jw%e?;^2jEZ2QZAY}9 zDfhRQD2KXO?ze8ebqBipv_S$FUtdazd)yBS!*QYFrC@tZ_>+UTTqF}2Si=k9yB2zt zPG!eFJUOh}EniocW*h#t9V8Yt67R0RpcOrSFu}Q8Ayk5o2BSOa=D7Dda=7Jm*v6zW z4vYz6taF`{jcDH4&pocKu<_z)v^Tk3oh+hJN5*h$uy6k&2DeN$m zfMxvH;=bWCVP~Ruh8@v%!wZFLeEmT#(H{{yN!6O268Wga275$iRJ*G<*CTPk$}t4b z`(*t6KHUlJeLN<(k;1#N9(wm*^z_L|&=PXl=FqA4<+O+~C*Nlf_ul}+>Di*M$U=Ig zQ~WPK5!J(_!l9Q8ActO_B^MvB$s-XZNv zRpX^_g0=`NtT2-UXFk6R0;HotI60yndm@E1K_TLXF-dfDS4D|e3JPq92kH6<33vy^ ztz=*Ux*uVIb?J>kcRHEh!j1xTV-%DBKB1xD$nqt4We!-Rwaw}q7z$;{c}EJza|!7X zDP*!E6`lHHH0X~n1ewbfnRW{Exqp&h+Q!#@A~q1kz@RE(soHb1A&qzMmK1C(K+cAk z5rfGA;gz-NNIl06mhM?LM3k`zE;}TG>#k-KKtoIEEFpb+xv*a#;lz7lhS1p4IIH-l zT1+IGgV9b1Z>WF|zoA`;uGSt`Je^oMl>W<@pso!;?qlAeqJz)4vhyRb5I0CQx_mR0 zrl^-Yv@E`l;gDKf8Iq&PJ8Ll#w&A}iA_MbOQtAWZ%OP1PVpm|?)P7MR-5V*Kf5ewe zaSKu0pEAlYm`IVO9%_ATP5P^OXtZsRAk+jzMQLhkLN~rb80|`oXs}`9&eXo`kF+kn zxa3H5$hRZrem008I}>-W2ot~;7|}ek!H{Uw4VO`Y_U%7inhgq1j%Hf7|Mh*4yvM}l zkRd|EsR3{A4|L9GBj*N8-T+CrAn|?u*CqakW*mPesI1}}X1K&rp4<~AF`h7~8uE^N z?w9k(??8xvIOr17Y%5hY4fQ}m4J(A2AjTEBBa4m}#11mD-jT+U=rRMouC}X%8g4*O z=9}#&yXPAlIO3G3!n_G}_f}L1U|LZ8WFDRkrsNrU`s0=iEd&{Ka@y@Gp@&EaX^Y^a z=z=Y_A&OBRmCDlSWd04E%|!$la(L($FcmX%h9T7XPuzD#B(O!Nv5`L+|F?!*>3g6# zc&Uyfn7=j=iP9tHeg{~zPBZ-@?wQEo*iEI#d_qwn+34Im8E0N3l47lHDxvK-3;fDBCOjy~b9BCJVi zebJ8iBH?ZmphZgnU!C|KL2-^Xy~}*iLp~V7lW1x~G`%|U08%ZIhbK`e3QWF_Lj3NG zI1~GYg-{38J`=`CF*(?mMz7J?|@il|x`4_=`MxMmC8@mZ>@`NdM zHCuKL2+UXtg3E*W4!gJW=g^8ba?}CzDOkIWsE4ZLAJyL2_uzOf6%O}zCQ{M$DJQr) zljj#oO5q24Gp-!~#U4U9GAOK1oRMwg@F+i;z@-kGP3qRcwy~`=P+=N3S-)m&?DY=B1&M!KT*aqA3ttG z?OXDRiWazq6$sbOUcd%%f#5O0|2V#tcWcl4no=j@ z)`|kR!&{_-pb$~rm?khBT&6i@)GjU+?ZseUO7-KWe}wV?2|$PK=+TScdvp{S0j7sM zcVV#THe}Fd9zB9Ffqwf#s&D7wN04|_D>v?#Is(FiM8W-NG=E~G-#sE{KgTAW_AeXe zuo6)A4hScN0s*zE>}>t>$+V!Kb`zk~4ZI!@lW?TCHBP6@P>mPGHxkxvaw0_MJFS+9 zjOLv{6JFAkBm@1dgq5ccx1XGzoks1iwz>e4y@;Vc5jHg+9UDRN2?McsP zRlC4~Q)bOnHK`Lgif9(HN28a`_SQU7Nf$*u#0BYvea1}6pX0a{a!PrP?__4Z$=}kd z_8Xo}n@I7wU$Q*WvyK+@wW~z#A9Qb~nV-L`{Zfc!Cduq#BJtzm<}z8)Z12Gc7C%cT@xU%2Y5fD&2$7V zOVI~m@nRvw8tXVE*tTQ|;RI+gHN_cyrB;$@ELZ==a|Tl$gdF<`8SyDj-%ZbnL&?lKk-xy3ZDZu_=~?D z?4Pl2MZ+T9WMDnPkm?7tM_eAW8X;V)aNBw3jeF=nD+seI=;;6LEqdI z@FN^)_ooX!t^Ka^zw!Or>ipmR59ycZKJbUH)4c)W=ZSa3HTUeKli9Wd5jHRMpH5m0 zVo^1G!PY_uZGU9skC)Cw%ez&voX*IS3!f2^ji=)h+pFb>eoS<0ai5hxRC z9*~;zPr?F}O?Ye{K%ioCBwCv6VA`~S#sTw>JwVkWd0%gM{(fcdRBar6bq)^uFWyLf zPBq%uR0A>%a@B^IsEOf7_EK=iV}xxLHfjgdpM+5(u(U@aAkrL2#KG8^O!A10HeV?}uB!GscMM z7aniKKf(S|F^8%!4=8`W;Kurd^}|nf4S_v`$OiR~p{o=+G}lBy)iw|!=e4&~ zC8HQfBQ(`Fotcef$P3#*EIQVEw?$3=FdUSR8B~pK9~T$@Z(7R$^T1DYyR=nGgAmp? zWF0MjuTH>3O8&Ea-BO8qU@m+3WsSKc4)LdNgPP%p$=AS&&H>X~tHmCaS_< z4sS$0f8|spA0p!xneFPTu7^VCN0QH?biZ zYFV$ElXU4wL&8KQSzeeC8b10aa^@(U;3D<(yqvTCSPwaK7`7Kt}QrOk(bn7BK6K z$Q_i4PQ`S3E#Mt`FfJEDOTAiP}H@+(y z@;wOwB-if8FwR_w$1ywD0G`PhZUVS@*QYDfJnI@Bv(WtSY4`S|Y2+)3*+4`l!l~}s zdgqfFPK5%7CBzouNS?S2rC0w6tp)!G<&-mhImFVZspI7_C0zPf89KfVVasBWz1J_yU@uzp!TOCz9Y9s?Tz%F2 zd}9N)>w}uhTxvU;TboAvXcr zro`NQOU3DUPT*hO-to91oO&?Ij(-H580eqLhFe49^z;FWN8GK0`o5s8`m|$eD(@{h zq`qIDGU{hCT>PrQch;HxNDL7IDb>8;bi5<5k;~i2OX^oqe2@`*PftGcGrGcvoEiA2OyMA6M%`#@tW02fAPbkM4a%(ewRW%Ny}W77G} z7y;^cB>E2vg1)Nl_21N|`yNZvir+Ha6}VEuSa-B9Si^bw5t4L41>vR6JlETojNxjB zcNP(Mn%JH?7^6pIP7-ygzRAL~oDgHk4lI2Lqex7Cq%sB~M?7l*DHPRL% z2GoYcxEF>cR+bp@{d1mBCGeL;!%Kb=W(8uD_m0%tG6OpRrcY2iZGir2$zOV{ICOXW zt*0nE0k$hG)do0F0=@bjGHoUCJZmEECgN7fPh-B(?AK?b)f=w~p0Vn=#nq0Aw;A#ru7%6k-iM*jlZfSthRz3{#!G-0^Fn z=Mq6Un=m`5IqhX1sQ3W ztfYr*ZDNMLFg;ZeY!fM=whWHU;QOIz_oWO6XfvxTiav#8xjA6!)dsQ{d*A&~8!#o0 zi|RPU+}XoxCun}>@>NTkbUe&p_{Pqi6?t_=xU`6)jN#iQ`Vm&z12+K=v#PA0`xrz1 zWXzCIbqjAzR7RaT$L&iXkn5YlL(!%S$o8P(0V~HVy8D0l=(EccO#~bk)9xzlz-40m zaNPZZCepu^GEk9M9k@!u-$~=cF`@OR3?I}@%K}rm1$6QT&*##xaX+OHPia5`0-nGW z6^Ks1UZ6_AvsCV`gOc{OF%I?2D*(~v(cw8~s;lm}|Gfm8&sGPwgy^H$6GB3ejmdvq z1bj=(J_rQ%KH>Z8@2hSVs49Ayoovk~e6p)79n!MOONMqS>FNc432E7bt1D?TuOH|w zhSDz=9fbuiD-}v^d#+-TN{(~j<@mVm>G zL)ZqK?Y0nau+khaM1EAL?cN#P*dDyc!T`7n@!k8&urzDub#>jwXjqN>5fhVT#xnZd zS0G?5b4pHqZ^q^M^v|O|Q{Rk$$J#S%fhBpf#77VB5aj$B_uzWJ^nq+ zQu3=#c{@IVAfuy^vjaTDcg+`G#6pPavIp+E2%tD)x_9CPI0Q>XHK$4w0hLEWh+W04 zGZzKT^XirW_^;&62fqgzGW{-$T{lUu_|~p9k)M=?B-1X<9uMyq1w9OE=i_gc?v-K5 zA_t0)dR5B9fR{2u`|@$GJF2hHgo7?Qo_ujBgF{8-Uc6$Qn;6ySw;pU0gTC<87W^E= z5WC9%Qd%&`S1BbqND_5W;wFlSZcHk5;C)+v(^QDK`@0*{5Hj{5?IWgwrtYR`>*pJN z>OfK0#?TG+>~$ZjaUGGrO^ld`{abjG-Q|(@!O^JYALaC}DVA)}15kPgzsE~o*awJu z!5_4oj-&FJZ$066-vd$-h7sVC`9_8+`b4X;S6&~#!lNFg+Fb9JbOhEVdw*am?hg6< zP%;$IDUA63ka+LmG4$t|krK{Ygo!a-jcY4Ef5;tVO8urXWckyPf1ks@0dp{wYFKgch88}RDq zQ%+)hnecq0+WUv;y`mxiv99-fjj~^zd(4yH5fR@Jo~YLw4v=Ybm%q7__XUKJ1Mk(4 z?q#b5y1AXxfC8SmlVCsZdiskDuBkM6UrN>fICa#S72T}}19X?|BQZ_}36~zz3b1^N zz;Y%a=vaId#g`A}<(9n(|4$oN9u9T)zO!VDv6Pa0ELkgg3E^Wm7?dq!m&qE^SjH|y zMrg96Z0{h-K6cp(jf^eEHe=tj%~&G)_VfPp`|JDfbDnda`<&-~&UMapopawh@cwU> zs6+X2OhYB)7cBDg8={U`VJ|gajq8Xf^_&Y)cqpr!Mtl9Wu0 zzd`2u^H5B5suE&og8EiAZ~84cs3Fw4>bfFQrbzOZLR3UHSn?Ma8OG0=OqihNuB)sR zlO8nLpYoB{6Sy*0;Bi<2{rKAb3BD7h&9`B2=mb~sw%`%>6RKB>>;vEcR4mDqc_Muz=Et$9$ENso+W+Jr={+MUdYQI4*%Y+;#{c=IA-NwY3by z+|2#nIeA*~f{#PSm#a#M-*81pO+d3U}uf+a^3 zOpV5&3wNOV!%J8&Jy^V6;VCh~;s{i70&4x=KVNGtkh@TJKy{YzA&hx1LGE1=TT|ZU z3pV_ylgKtfHmkM-qzv~T3^G-k{*hmj$qU5Cu#sJavDcb;nRSVCyP;@o$EVObgIAYjI~*N`ZmX*ad)Ws0BFz zi$k+t?1wH>2!rMvJOnDSHxmz=wt3$1l!r4K%Zx4e8vp9!NaLMU^z9!E6Cm#o2Bka@ zxL8{>K_bzA-Njh1)K5k-Ywm2f$w@1D);SlTr~14;6>1NRHe--H8suEDdxj+108Hb6 zx+rc+Pz`e`|5-h*jADDi^NgQkAXgD)y&a}ZUZypRm^4)nnS9`TNUxJ07M~i<8!VR~ zqmM&=ul({3dMe;_vh-<%qUQv3t6QROlwP7)U&-Wv9nMBUUcO6np-Jmer63X3d}`re zq=x4PTTd3u?~vswfYzj$CouMU6BMsp0+@SxWHNK*+Br*Ex7|6VS^A()Q;B>6Mg zD(zgHk=>Z(oBz(UE_zy*O!u=Q==WdN@DZUOXQ&dI-$qZ7{Ju^Jhg64$_&T|!c_~f9 z$eZ-%g)pC_^LomQvkG1GgqV{L!Kt&sKbDP)^T!+~hsAT|HOrrvabF=EF3<9n3xbyg z@O_{PT_4!+%rs)M#e`2y{!HyghaJ*V-rPlsIBmvrf6Oq}#C3DKY)Zx4x8u@l}x}L z0kj14!TZozM&r*-5K3vaOG8JjEW=vgNC!=hyTSB(^E6)s3Cy~rWe_xjj7nwq5eIpk zEh+S)?lWNStYB8!uRq5+Yxqw}JSt@bB3LeYfWlY8d*e$FSExAD*o zACV;tXJMGe%!A*J>mcDh$O~V{T$S@PnA~yM?4`(6$vcWEe1z*+Or38{{8j&qDunKE z_P|EilR{e?A!gTR!M`#sD8dO}WRl>m%o&pdU%8MtNM5^bhvxzNQ21tP75PF_BSh>r zDQ6oRrsTZ+^)}_u(b+lmm*}=+2&1=_(?sxkfUt|sxbNxntE4~54@nh!|M;lLj9lzu zVmWyu&ds^?COEtN1OjG{^u06cbNKTsYz_p6593pW73uWWsYRfYc#Dq+$fbg{T^fTY zwwkXtpR6wx%fvOJ`yg1HDF7MGY2|ZfQD>hCEXmLGS;--<)+zUiPlkC)PDagxSI~RN z%r&qz_Q}Bf#;0q?mL-_70Meh(baFUm0R-hpaDc_$ z=l%Q3{AMm~jIaD(e-(bAoU)*mzMDIn%120Bc&=t<_l0cq4vo!~7J-u3)AhB=4Ju#6 zJ;*v8evvy}qOP}6BTYKK5OAhIwX;!E4+%BB7{*hH%cE*GBZP#pYBMalKiy~w-8eCO z%z9v)Ct8NH47qu_;_XSI(*F&HU&i9@UxQjci*`$Yzi`yeYTFlgkiJo2&9;&;B&B*m z0y@9lWkY{Fc#kjtnYO7=+|M^pXgl;f1XqCkql6r2CaYyxH!{_FYdeXC@I8I@p-!C0)Qi63XRbrAXLH zs8JnwwX#<-wj$NM_q_qh>kdWVC?omI9+L=O+u8wtpRdOwS~@rEeB4MmcYH}y4sd5Y z@8?yI16gj__RrHc3koi;1#RdyPm~E6CZk@runxgk@<Jd!0{IHT=;D9*YC7AMHsy zJ{Oy?9}N7W@IHSM+uenBOgqGEo@neL0^xreNj#H(t z=|K&?GK^^UWjlngP20(H!R4Zq+iuZ*Q@--FgFQbe>bxv=FcoI5D%sX0>QD)qcNCN6=? zMQ0gh9{zU~_vkzkXhdHg%@LvHy_%Mw=m8q~ zuwOFy%ty*8rzoQ5`jDxeIlN>Q#of-lGufcn`rLDgi#BavxhisaG=1|PZ9^mEati0I zh3HQHQ(`ltG{F{@pQJx4+(5?Rg=Z~v4S-Q(GqGwwmC57)<~s3 zEsuvUlShI*-x%9@4iM0klW)XfI*{x+EvM1ugC!Z;)FW(QluS61lOs+9jjsEk|?p zeCtxo@3tAzqkka99-r^AlGm>WOfw}O%}7B7wivE@dI90ZL330ZQ z=8@ZGz;HO@&a0#7L>VSsMlM*x;*=Ge3_A3q=RJ8_1*ITh%(M5n{7yZgAmO(j_;5sQoES&dD5{2QPl zhz2E(j9^iPT>U3uSlkG5M8uI#s=J}dIe=F*Q2f;x7uI3*;5HXJ8Jk5f+1CrMEhdpfxc84l8$9Ii}sBwNr9$J?U5G-{HJO&TE5 zip*oSi7p*1+O2Cs8dP7WNmQ9j;QeB6pdE`#Wm8*Vy!G`u<3Gs^7vCB%lMjlXFJp5t zIArESh=A6(V2tR3aPBOeBPaYtm^KNH1Vo-s3(_K^l^ivj^lx4<31O1Apef`Ip$I$}FE9;9{9 zM!8;H(e%z=j~;1(cU;#E&tcp>ryp?zL_5>}iBfX%oiMy9lxKj&%`)97!_sUnfWCgr zP7h&EXa&8q*u6#H81b`VanlfCl;8gsdK*GG@E3QDGUp(B`$Ov z@#-bc1oT+MCv0})lI7Px@s{{_UABS?Z`ij`-;T!hZ$!_@zpTp$YK^i2HR&1j-TpBe z?^bDHOw~#g+c>*-W3@>(jNdDS#~^cBboEkoCC`z&9QWFZHA;9Cgfv*;T}1YDSQ4%? z2HPjt6TtK}^Av4e_M?DoLxiJoGGGOpuNPDeTPV+xdNVE=6JXvCLdLA|`Fq72yEOuV z#kV4(95+h^Pf`_Etx%y%Bh$WGR1^1N_ERzx2%ya(1jpfdD@K%#@ePz*o@tHGu_cd? z-2g4|xi>$!q+<3DJds2Ya^eQSwNbL4crq=AM1sFIxC2KG#0t_VDE>h@-$KPGx&mQdYF~ZnJ_sCgHBPa) z0VvE@$Pukf{sV-Yaavn5(nIhWaMrG4WH^)}g^gyA%(u)PC&H1FAjRZ0v=1QqKKz&+ zU6345gPt>|4juz36YNvz;NQsB>0R>-qSvM?pqNPXdhZVGGH%chw`$mCh;I=SiPh*q zL-WO<3OTwL<5cGnedpgc+*dc=`&d807+;9Y#7Nu~9jcdtoNG9;Rv~?rHSF4bFIKtG z8RDsGAvoJ$OuyNLubv5#4 z?Xkh?Lj=D3+m%x2z<89*59OWRq!Zp!XjkU@!ykl4V{ycs(8c}D*Fz1YBkMtlKOR7* zq%|zfxaM2jFY#N2ABc(Rw?k7EP6>6PDSK;)IVpMPR5B>V#a19q1CF)F;DuA@L{9)e zVhwvU_glfh`Jmh8G4N*Zxp#M-@>E%uG4gOVY4lE{VkB{P$?RZjzL`-ae@Z)=I6JTI z0<;O=mZB@om6iRNo6bEe+dXMqj^uIh1f0qQSFblY*GszsrGF_qT~;&bm}1jUNYg%m zy#}4MgrV4RzWq~SXzmK!RYDh*A%gmiV~MjmJELtuf;PF{$vMb6%Uw^TT{#?)@ChkD zYP138@EWimHYR~VJIy}Inv$XR9A3@@kURG2VT;gQPcBlv7nsJ<6joGn(3R;pT=|7^uKU18PS#{3Pr@Qd>$n`m8Q8M6yZ zBXS`WXdi3xh@!D-9&OA3F12~y_;KdK9!AV^YoMx>$N#*lHsX`fiLNgUPiCu z$C%?Xg`c+gOKp)c$0kL}c>lIYyM?=qy~QuH_x9h;#1hMrN`XON-9YahIpIFrvzx!h zr1U+d&!Va%od)-*nyg>dIHa%nWsQY4B`A^{VUKy^o zum7SJEESUNK~9rhRSi?W$gH-@Rq5|&&plu5$l?)kj6XUf95oTTf~ud#e2m z{o~KyP7umBtQ=Hk9nkL+zYPFy6`W|Vyu+I$TOiDY%?sr?J<*I zS$TKzNUouV)8+PYt3q6_=<$zd8@4@Mb92+C34v}>E1?oJ4!4`Kx;{OaC49ENCjBX5 zeCYG2yF&d{7Lx(gJjCF0Vq>9b19ISf$Pubhkq6rU`(>_rzsg1|Vxf|OcP+b8ufchu zt-qM>hG_9ac4l$xcafiqYvm0Ef1w%U?h>x|%IRu2zSKE84Q>Aws^Tpx6pQD-YEhAV z8_KDeA@_2Kwe;>c-q7T6iN`sn)srKiaHOUf`&cnWvV=YvufBH@2FoGgmd6+8JVYJf zulCa!#+WF?9F>1lzz?650B5b_Kxwxi>q4)^Q(KruYThv zmp2c_30u1dCuirEjs5cr>-)qpM<-{*{)@{?Vq4xgI6gf;Kfl;HI3W`Mbzc0}&Mz+J z*Y++iFQ=Av{-=jX6IS<#^!WVN=-ejpYAzRo$DA~s_&m$**YAV-Rv4$ZXTR(8C)pun5yZS9huuAihXc& zR@pgS+BP{x*lHVDB2FYqetLGXwtYy{bZ7sBD9PB|=Ely^(aCwo$kNu{(ZTUq@Ayj7 z!2Hz0&d|*I%Wq2{|)?GUEbQ?-aox;)}NT)zN|^S9x{7W zdXt6I;;2aMv{L1~7PX%%pom@M_UQxPtqKMY9hb`9d_BIfv?TpzO7r7}bo7Gur!9l8 z+a~#YqOS=rejR1u*O%}Z`|6W_LwL`|vu%97(TCZExsk>Gx_b{Jw%fhD3l=UK%{Tu% zeN(kM{%@+ZZ|$PSM?%7JsrOSyuA684uZ6#b6IEGmemFl%ui}c1r1U>2neo4p64{>X zzafUmLl1o&0}|B`wUCfH>6+%+x|(*jTA*By@ry8R?JH+PGaZfBK^~tzwc8eCr*scI zlbD}N45qlbo)9}d**khvyxp^F2EKLL`IlX>f}L1hTmN1i-MrdbKSV-e6|bcM8v2Z_ z)rS%pk%VNP|6ut+_8<9wyPhAcrO1Lplq6e{#e?6AinP2VG+{3$uyiaek2NiRsG@7l z1ir==-3tF4x~aG^NhA5bgW`Y1=^|;}(*0^7b0KMY$v<3kJbwl>Q(XD#VO*6f$tzbQ zC504Tm)|K@kIfVE$!N{eR6UCeBt=%2up9BlA2g!vzB}$zw|}x$pciA>70S=K?ku4g zdmH6+xS0A>gB3IHWFFY@vE#xgx6D}YeQU{wKNPGXu100*`SKq(zJCe&uycBysy8^d z$Gt<2VyS9rBEvjl?;jz+j=O~9&pXqCDc@7m{PzY`3V(iAB_o^o*_Rppgl<(8PsNh$ zb(F95cT|b17xG(|sc19Qj8q+F;j^j9(`g025QJ+Av)q@+Wexsxnlw*xp4laH z%3b8)^qZ|pvYSHFSr@UqCY0`8(lQ^PnBHu=Vh}0=sOQk^dI@AOWvuHCtLK-6TRk&_ zi@K*j&V<_8YQ3AzCVxvNA-b!BA*XfP`<*5t?{znX(#F@-HDOiigwB|`R-~h?zvT5s zKB7Ca88N&~8Pn8%FnW1U)BQqI_Xbe1W9@607yVMK>9H#7U9_rkvTnrMVO@%;lDBq0 zJ8w!H;weE^v0kXUdzQ_;Il5Et$E|mhh{y4?1ALW>kG`b{nFZBk@x4$Ne_hT_f_4#L z9FNNRb_IjV2v^s~j7znfnFXusP3SPWI?UZ|{$y~eS+A6=F2}D@LLURt-F5wwlaP54 ztG=9g#3qHe6ZW?J^R91cWt*L#=t}V<12w@)5W!senEdTkhSR5iOY{$7Kby=p1J2uH z2A$;`bh`x^p>(K#y)d4?UsHArx(fW!jIbWsos;&3INV6w4ObF1huet@(3qX44J;Pj z&dHmxuFA>3q@RHw9Yvw25-D|qbK1!{Hnjf>T>1v z*SBk9|;*(bx7 zp3Nt*UA`};gzOjo9I1I7?|bMh)vibKY)f0T2`;1bRb1&7GP> z_$eMfIaiVmJ8=HxtK2?#OY2uvRY^&N<+6|0W#-n#z&Oi`YPbI01=m;~hr6F@6MIno zaa=cl-IZtD9J4feHkX`tuRSH6f8q86JoT7%>+Y$E$tVZkz=z1DGv5NC+!r~nv||hR zCWUTOSrp!AA9#RxQ&x1R+ls)KZG@2K7GmybE*W)DQB;(GjujmfX3Yhot$X+Jd9f6Mg@*oa%YPvXPC-M!& z#ddb$`r*deVeyPx)IH|1?e1@B%m-{5JNB*Uz(YkF{wE!_P<@(R31`2Hw?j;ZgZk*q z02S`3x{&7)rVn$6p7yx*-#Ps~Gx0}nczro77rc`%O)1F#u`56G_wV6{(gp)v+o>}j z{d1+`1Oe%z5Yb3>K zrhORLd3iRC_~SqBB{)@DTKBP78pDpwzuF1gQEQGc-ppiPPAP$>3i7K&?D?kjN}&^k zOwd-Au=cU-xqtVC=H`hLD4{s))T1jBi?6AFM;M!sWsTPeUxV&fJm{N+XSqq^+b=%P zo?|H5i(_ydLqH1FRNqK@^g5k`PwF-+L_bL-3Jp)6tXOQ)NX`Ylip#y8t4zk#SG15> z+hf&dfNz5QbK&hzT<_YXEU&?`PQz)JN>pI}h_?kG;pp?qoRq1pU#T`-7QfYlw!4CJ zVQ+rjDn4Mvbf4l^OTlzs&f(a8X;iVx_X2L`&%B`$(x{nC?EAs+&eYG0%nPUfwEb0= zwJW}Y$SQ?xlC8I9YQ1AK2@KzRQK{@W7Z-%VW2_^$A%7D)@_|j=#OStemrKuBTh?Cr z_}4i;eb4fj$pxUy+cEM*n(rgg|A9Zh@q^z=Q4jXkXDj+o)v6sYrhz0NCZ$E_>W^ZI zrzUH#C#cuF5NSt)D@8mh9)3j+v@@R>kltZRYVkN6R!sl#G@abeJJPCDUbo>t0JoQQjZ^XN*eQ`;zxWR?0dG_-&dI*T%WW{x#S|)jWgJ6Vapw7DX*#i-BF}8 z=Rww}9~Hb{Zb4kN8UA%XA3Blw$fHA)l*D~$Etlz=W_ioQ(p9Pwu_A>bu$+bqFdtv{ z7mG8!ea)R_+5_eI{SPmhdNuAWS$41dR!-(ZWN*^3D~Zb53uO4II0`%9McN|v_?2zR zi-qmic8urFQON^aCWPi%RpXgTUzhmLamvEfDjG%bhCn8&*@;M35owR2hCTWlzck-t z-p18oM)29lT^^2Wf~<`S_)(XjM-=8cPhc}o(GYo0#w$}`O3V7_j}nA&P~zMRVF#;^ zraJixJKMPW0n>@V2>Bfx^^u{TBIRPnHi?~L_YKzj`mI#`O8RgRac#n7R1U^|`=P45^PyUxY5omsf{>rSEX%;geAE-3f8*1-{9p23+t!F*zwN)E@zK#CVqa?^ z(j-*vItu3ckFQ82&2h`#%FpWRIB$RP+QmU_W9p zFS<9Mt}RX#%paYau0MKR-w%;KRKzxv&`IyiMfTyY0%kmkrpXMZu3d(qK$+hTK{>yL zH+XV(m$HN+29zsb(&M0^gULjnxIot)t6`SSBnMNkIfBnu@4;qj+V18Jt6^sT1N@q1 z(G>>u6aeMKn~T}rA}lLK4AOo26?>=C`@!;eC`1)Wc#7lc2R5UtQr|79cAh1Bl+uN# ztX~XPEx|IIYx+Tr`(^ScQj+5T3dX>+8QN9EFFC_2O;xOhh>z=JJenrYbKYGWREuWs z2fMAq#41}fI+^=?;WUr+7{lEwt8tQ=n|i>@`x1jJx;bIYk8o(8Yzc7b4t0}5l>J7Q zb11V3(RQ_P#-^7Z!|^Hkb%rb%OyoB$QLt?tC{+WiV>qJ3IswjGL(vc__ylI>=@@4n zib%RCG5EFA5%D9=1N%-Jq0n=`(+fs){*KDz^9^1kj*l$-AE~;wOrv4JwIve(1zX0% zb-xTjBv}{Ab>!|d(5wP7%9aTTA+bRlU9ty$D46_mKT~u#Nh!UX(ge(y{^PfB)XrOAyU zS`zVT%`5a*tl&=FFGF{tAXlp{(gn*hYAi}rryc_#L`(TSt5DB!F-X*%>Ls5LJ?Q@a z+fInKu}@P2X&{57txkMK8|ff1(#%=;V^G+j?EzURLCRX$@q^U*leaf(Cq);dJANo? zCCT*tO1lR6_3oJNBtup=u{5z_binDhI$>>t^o)*dXLWeEr(_s!({~DP@f$tbgpH1> z_Tpwx?bB*o8G8&0c+`M65R+<8Fq{TRA&{UG|F2{j4o-8MJmkeFDZ`9w_ntjzlZ(Cc zn;(!I#@p-eWq3GXBkzqmI5gK{9k3L)rG41%JwpVRR)xYDpPHgOP5G`B)PWIjdu-rW z(+t%ILG*0cW->DMSf4@zwbEaERYhb4AXZGol<&dJqUCak(Z;`x!$WgBhGLL8u~G&f zcysQlLIo1xQ~fYDuaXGW-3NNLUy1iWJG9b*87mp0^~n#PO5-EmxeDNRAFHXi?0bf? z`>s-RHhKO8lii+7`QgN^&?2`y9TD?tE;s*06@DFWfKnBPR!h4rP_g5>RIc71zja?J zar7%%B`X$v z>YsjN4Pi0?#N@8#E)((Ia5mM^EPredP^$7qoTvD_Tn1=j+tV8*R<2<8^Bo_AU*)~| z8QpYD^6fAF!zyufJ;#HMPGPP^zi1@$5&+@Jggnhb>zOpII<@HM7K!BqxLwRB!oG^ixwt zhx{=CfZjSgOg0`lz6d3OlL+!5t&G1Lp!1xRoy21(bExcIqf|S<5C$=*%D;kye*i)r zPg!gB>fP|>$^ygJ8t!Wv3V6oP`nC9PhAopFjYB^@>vuw_`kGgruQkEtySxw%*dp13 z>IJLVv=I<+!`6#T1%@QuU0*SHN52eoynZUg{Z<+^H}{^$rCu82S`f7yiI;-aL$`U4 z*p1Nvl*p!r-?f=x6URq_If`%Sc#&44-*2PW)`FHi6mCDy0x>S<6wnc#0VIS2;-Y-0 z8=DtgysowcKx>LOnXk~x+>pU|Ux8gF7OYO+jVapb3dyfR@IYj9rwLV14<6piA8#7IR`&R_8=Y9|! zO4lGy**~b?8;fXL1VU&aA#^x7Jc8UU#d)V&tnIEIY&%wqNh?qfhR-(d{QRmt_isBAet`T^jz$nO4ixC6 zkyRW9!tJpH`Fm8;GgWq$DkPz3!0*-Tr4uf~kE#|8iLl{%rL#Xs2%F zh060uW2A-*p7%3jhUSiKKM?+fcDr0EK?S=2P(HYcn4X|bNP}CJeF?$IqY$F!JtcyR z3&`#nped#N^;0OWTa78et>hYA0|o!_VFmfl#*snKTJy13wgSdAV-_IE8%P)TLZvi< zWL0#eTHaU{SCaGRqJeHslk&*$9sKRQr(YN|*01tcZfA8t@jLwWFS?GpZ3alT zB})vKJJ-W#yCS~Fn{lAL5nnotF3zR4rxl!oU^AN}Z%Kd1UKb9RxZ-o9Vq4}f!t*V4 z0Hn>yR-`0+Sv?Z0X%!m>*Uad56IK8j9*22n%4?B7lA`XrAXJe0{i_drN!ys|ee6m} zJMTKdKI=rF<**3#7%mO|0dTF<*O!X4%?%O#6FO>iv9NyEX~B(CgUj+JqcsJ;i4s(X zK+b`~pzGev18P>95!PR#>%2O^uuwKqy2N>atNH!GLVjDt(2X82r<~m5nqO@;Cv-9qf&p6y!EKaPf+>*2@lo`+Lq%esruy5vIbXg zGlYGXrLwz2Wk+Y>smo}2kgbS<4F}C#>)f3?>U2*seLMp^`?U2@sVPVD)i27aHB+=l z1yn2J3&HwkMX=W`*yoyzR?zZkU2`+G<1QDhD9`~5x5vP^I3}Ri-LSV(wJ{D@c7sRg zyynB6?o~j=(@hSO35uXlIpV7DUc*_O04@N+0RBB@dy{Q{_loQ&tHYsj3e+on4Cpu6szPs@Z(*`ba1=7lA#)tJSq{Z2|H#-u0o?mWewno zD|Xm+X$&+>scZL?o&z2h$g<*&Jz{;7V$oW|=8lzWYo1}Z>W1ha|C|H9BOKv7OoMd# zGj=VU{DHS>4jx{`wo^cCZLwaIi5aDdw^SP6pq~%hxnpBC*Cb!GaB4h88%8aXv~y^% z*0^kr*(12h=78sgZ6JJKM5`%89@bVRM2(tdhb%cF%*(y!rGLenxMP+22mss5P;{nR zr#$9c2!8?Sfxz(w`4{#AWL}(*wcm26`b7+@*aA>VmRKHQ`+SrG`$$(!M2>PK2?{%| zo>NqO*@;7Ak7^=m@YM+p2orc%Y<4|(Po*uc=&}wpRg=?Xw;CM)4mcsCdK*CY!eDK+ z*cZ6E?-<*pp&14Evz|ceGcVsMg@0uP4@=LU04-JSdRasuA%up{naWQmxD6iu1NdXs z{eGLx`9!WBcI`h6h){;L9pXknc!2jNwU_uhU}sYv(wP#XA7#-8hCGEG`z`n@zGP{H ztN#eG$NHk732e+rh>#~X(Ro91=*1Y=f2$riglHU@PEu%iqEW8Rl-Pz|OoCR7jC(b|$BWxcO6|K%dc+SyguD=HI6P5o=gpsov5J@v z(Cu9dvL5l(5L*|7+AB_iaPH!pcCr+21eK{8zt8s&TUW$b5+h7_H8qQMReS>o`EGKB zk34aKoM`Pc@~knCB!L|>H%#6>jx_&%!(<1ip&+iXLg?t3u)u1(H@2QNo~51bHfFKlAZBg;(_B6CNGLRoG4`#+@h-L;!8juMq%!$;S1 z9fg9jAoLOKDV$7DfwE%-+V+#(1kU@P+AkOq*S4UPX4C<_1RzZq?lw*4+M;a43E7I7 z@}!l*|0@rPaYl@avtm)x*|%V%Nt}egtdK^(Jb6r$3u#d+Z?d%<(E1&jDgz_E!bvb} z**6uqu$}}7dW_hwi>ye*N(}SN$s|;s`t0utFk=g|2=H!w()B_P&;9ZAt@&<5e^sPC zwvY7l&&H1wHt5y$teGjgox}kuj1G*du?Vi;mfN=oJmuieG;}M6ruG7V*@k<- zEquGZ?WaK&tPM@MyhJ{nF=CDrCv@zvw(R0Z2?NzmYU=0Maj;l;KMUgIE_#A!Z8IXI zE77r5w5z_fu+O!S@K^6Ttks^Qcc~Y><(w&}tMj<)j*){zCOdr0&+a;_9qmFn2wrLX z3Y7088$ecB4C89iB2cc?%YmRrY`MZe^mv|+!?2vw>{cIeml05o@CbHXP8f&EiYH=A zYYe=#A7Fe|ozd!vt%X>Pav+8Q!JwvDS_=Lj0S2|v6h2SP)2xx}Kzvwn z$nzIx42UjxSjZU$$BCg6l*7~O2H0G5y;bdS?9GwDX)$NT|O;3cX z0A`ah+;Ym~K`#URYhZ>yEEG^xOjSg2P^#YB1T^no<@ePkPZt5jjKiKwfMUL3Tkh$A z08Q3WD5R|xeFpgwL*>?R1xGHj1n4nYPv!t;cka+X-+|OyQS~DhdfOltip0LmO6nFa{V-fgjE)c8s~iZkr(Q}uJjj{J#R_I_~(7G)cTQk62V$bK?U z2HILUH0h-|+EdtZz27p+`$XmV4E8xF#--4F$@|597*9fdKb2c!tt-0w`b)Z9s+Ye> z#g0ikujybPZ4I>5+zXS6e*{vm0@EuwC32vShEV|9te&$jj7Klo*B;V_xnd;^GTtuE z`%1;T{i_bnORJ}dXOOj!!Uc^CfH90sRQg;h?v2xtGN2*#I)EU&ns~%Wz)ZPE9$P$s zeWtQhYo^jyS~19rd1J+bdt?i%AZtV)!`;N#uLaTOuK@hr)xW5UDVFjqCYu7HjFafA zJ;JPJjjWFi@;Dj)8*gFC_4NwD&{X#BIf;=c)@L80XWmTB{O8S8IZ)zf;QJ*C9zl~E zsN2T*VTzPz<&~U=HpE~sc&>CtD(|og2vTKHCz>W?B~gX7nJqM1g*|rzk1BMq0!kxP zQD#`Vd(NSLCJyPq9>a}wqdp`g!qiMB-Y4vr;+h^@`8#*1Cw7n#B7^6uW6J=F*=HFC#W_-tUVAddu|Hp8LmMgp97IrcfiCO`mE|$ z3=J@-u{ML;*MWQAJ3I_A;4`!4c{0wKYHoTkKoV2~ zu7y`qL58oPaQ$vb{%p9umYFUtiAr4~43PlvYavAT4@ZKg&x4hk+;iKk>bui`B9Hsc zYKUQQ2ZgX8XW;rT|0{q7PK8t=&qs*j(@(-~*$o*cse+W4q?>Jw_sd>f0igwGk!8T* z;45`vbp|RM5q=Hhpi|eA51Zaj1FjUGj+{D=)F>Lq8DW2Miw}j#X^BWM5`|H}ypIJ} z?F)}Zy|LJEi63w|MSO=(TXh8+yOGCUPJDxeS9<@m}k^qM<$vLi|8X zG1S)s3zpGi@7 zLIbi}D*wzo5iPlzFI@Z%biJ^>B#*EZJ?ObnLpY|8AAC8CUokoS^T5W&5(~&vG2V|3 zc;-&5w)M=kmhpo+Jd|Vj`cc&pP@Q~73;XxQ+=KbJveA)Lz2_KmN^2K;a~V*EKrHA2R3}~pjL@`&!NcY(O7mHo$Tfnl z-d90jeg8rjR*xN>-HUiZw*XOQr!8~k^l_8`}a41$ky1FJN$dk!`9X%Rpoe6 zI}n^bHPk3X(T0=%$0%eNO6l2S*yk%PwuQJ)4?(|d0WWO*;>(kPf~=*U$DhRr1KGO% zeWqcoSc5PTOM|P%Uw}uS+}}U*WjuQXlQ%Vh&2ZlG6&+e)g{hQvtN{6DXm^HZQhxoO zSeoJ<$nnwk?VRZFQ~w#Wp+AX$BC!B!&~zvhKed)_?7XT$@_Mvc(2EMIM%hG8#xqU9 zrDkakp`Z4-pC;#JDr&bf{qA>Oj^R6&AQE*MSViYiu8Qm49U&aWEc;t!R)+BSb6 zc(}X$*njqbWacg>b^)G<&=0yfq$mkk-n_gD>%0Bn&6h6f9yIf_}hd7v@Y;`bcjp|buo&)ZXJWz%sAoaPdzl#CAMva(Sk zYxtxR>AP^1{@FtpI=$Wr zaMqvR$e6y^rc0z_BnLebM53aG;V>#^wwF_zg)_Xu#*qlCI(r>c{JD1yWt)}ma1hqw z7EH|W(|Hqr_cjziTM-%Y(QXNdiCaX!Yig?TVz=J7|D&LXeTJ*?x?5D6x&+;@T>*kHdV$I)E91{)(lGg6 z^z#U4>hjydX3KEAqBt;k@&$p#b+l=d*8kUd>Nv?IwBseI@z(ns{GX(OBfsSPChtNdLK}qR+;dQk3SS9)Q zFLdHds8Hw7QI|*@s2}2RL_ta@05J4L+KpR}9wz+zpg`H#NPlMt_tD4f*Hzf|o)~3) z?W z^IzgDafd~D1gNt5rSAhP&$rs2kNg5>y-9d>^HZD~wBJuGaQlSQ;9=HZoI}#oVVbZI z9J0w^kWTG`9Euey4TOD)mKGS=(QJiVUSX_rGIV}WsZKe{mivH=J!i2RyvQfkKi7fD z1-1g?Ko}1-txC8mOGm_SxpW1LmJ1NPR%zcqPfDq`q@M7G=mv2po!~oh8y$0&fOi}O zG<|znPKc75e8>6GiEyXXosbDX-4^g~Z0Cw1hKmII@XWnv!4`|Yg=~5;m9#!+o>Txg z^Q8!<;rBMsrVlJQiMf~95P8i zO;TY;sC|g}IO4BXg_L~j(P`K(Za^v4ny5l_-xx4|9vV9gcpm$hC-%e1)V@_!wTO|U zp27OaSt#^ZOMF>AZ;DpBVVgsBEM?D3^LXsAn&A^tTnqB$l#&$uy4~|B125=M!rY5= z#bn_bC5R~@zz#+Vl=EdKk>U!_Pp0{{>;q*sb5-6f#yW8}S@HYCsj zJ0bpSf_EQCV=BkGozUNxF#WOPz}&W2Nj?%{UWnvBbE%{pF^I13n6f+p{+`wxHX?Ik#t!ZGUarM z9BsNqe+k)7Di+1mQqUTm;1l$ksKKdxeg=Ap{pjaPkj$pUUSJ^&Y+H!xASxM8NFdcSw3C0Su^S>GeX~(X@qK8yIdT0Bh zzl+0C*Z^1JySx?ATHVuvboz;AGN|RH9MB_>cvNb%|L`pOE1JIRm0K{vD`qeU&AMk} zZ}#z1*SHqiRPZnGvx)x5WRrxHe4e8g{M%UyC3=grP377+U{(p5Ir!W($_z#P=~JeD zaCZI61DLq2K}!B4w}#^gz@I0CEeBbF3Ro|YnkI{vVb^$|h)MOr+6=s}idMvkhSJxz zDN~P%57h_x!!0#1e{2sgfE@L89@Kj38!co31q z|KTTkY5I1_hsiJ4v`w$4?g+He>%N_H&~WFl`e29}_}a>GZjY@D!SV@i$CA!QHi4Z@ zpx3z?ipakq7kRi~Q>fcpUij6}EVf5%E@b z49b5j{ElTgV!4au$1d=t?G-8vZh3#{^+STnvOfh~80*pNmseoo2ND6lg5w+9)pWWp z%fXf(_C?IkUpV2q(Q7xpJmLpot^!(auQ!rv9!~@Kj5rYvIZS;NTN{+Xt zOy#Z*P+fR0rkWT${ncGA-ZDDJarOKsw4~@Laz~@CBq4MT;*>y-(p4%OC50f z=3f2R>mFqDU;j!tk8;E3>|px~nNTW1B!cyJI6pyD_zpgYa6>sDe7=p@!F* zKCEr4F9Q8syAP-|9tXYHs&?Zxk|sG36lm9wRI;#Cvf@`%5(aAB9E7P?h%UO=*N&_i zGdNDdG2v;RHHnI?VOPd3vWdnU|Li=E(ykeF`CUb-?(pRsT5e6zeP!|*a=8>_Vs9sH zAkq6T1$Kg^w?-U$lp=u5KXq)D!Srh_V*n+1VMjE@Bg#|d{@Y*5@X%$&vbFTA74wOh_~&1o(U$GgUMk~ z3;OTkK+4;{UYi3de-_U|Vct?UEAqe%wOcU*mT1UlC%I|9KrX_9=f>zA&S&2OfTXCr z<(J)HFIRCj`k@LjkD3Hi-zZ{=sxGfvct4%tdL3DNIeT_Ix4pf+nFW`yRVVHO^u8h{ zQB+ZsJT$r+;s8s&d#b*?uUhhi4?*JH>GuBp6ubT&dddeeK z;VTEs%WKH~+mFeS)8yetgp?X(;tz;F;qWI?59YcRsfHHGo%pgPnz=1~R98!ZwEFf( zaM(HFB*d17Q5FU1-d;>NrNJcPWPmrpU?Abq3*%+3*XG=XyZgh=QF16mqHQ7FTQK%7lyD9_kw!JK zTUq!lh9t|PViU~hXFHR2fsRMP+J3_f(+gYTTU zu>@qQz0>?k^!YvuiPoJaFib2-EpbrmkdAleS-Tu1pN23>bi*x|(pu=g(|4^hvuo5S zdAqpV*`#f#x6(IEW52s7V`h#EnzAS=9R*jxr^FhBGG0jmSe19toRfm3>K09|(jkhY zxvd^m=qfDX2`oG?s{Gg)%T3U%X(t~6>BGwZ3=V!R@jh+q&spXzFV{R3x3N?t)reRqgLUGc|tKPoN;pS8g}>-G69_P&8RF+AhWR_1U0O-LYJuD{piRBUuvsq(Zo+re4M5 zmXBN!f;_4hf#D>KQm8=KjI7p2x-45xm@6Se1|_Xxc#^XeMGOchTT1*^fqk2~$v;<* zT(L_!nDHmAyUMKg>JlN?O_ycD5ZX|lerI@-iT({H6Wy8jCNzmjnv&`UHNO)AirOHR z!e7s6am7|BwPkaM7}_I*@zRvz&PoF$h(|4#$vz;Sq`tc1{4pmnqnOp6*ZNZ<$}vgi z^!jZeYAP_5WG6ZWjUE0z%Z$1$FbpIq=t;++f5 zex@*bSqD0F-kF=OodbAR!Rv~YHB(7nJZl);5jPNAiFtXXY=f-VhrttSJWl=j%VxMl z@CH~9WxH3><=rLGMc%D=GUbM-mtKBb(0q^FjduYEePq*g$IT}HZKVzIiRb>ShXerQ zPELW#TJB(6RNiIz)?Hiy%YrT?7lEm3ApycGfF~>lXNK0M<|I^u5$rwS zf-XYsdYTOmW^|_UlBwyl@>Qto#Qzln3fkFj{S#0O+MmA^~0 zio@bqx5}vAm8}!lAt3~gaMQS#IW|ARa`=u2Y54uS^9(DKezm%daYZLffceGtoYoNd zkej=JXA1hwmRshbK#FWx%7iP zB%>aP!aA_7mE*LZ%^q=_ybIW67#e@1x)WcWb+L7G2nck?UNLp|^hox?IzI^wIP0^4 zV0G_s;-bqx4!7Qzn}v$gQ*%I~lfl;Ss&sBELd5LV_(oh|%MTlqrLEFJl_&n7Ih}?< z63U&xS-?D?oQyEgLkXB0dLbN#^rVd2nDIVxB5sJ15pXN@s@o@aLh{^=N0Y*?SlC9@ zMhng8g=IL!{A^M5DIf0clW`ZUcj-F7e=Q0fkVLY>KuW;nph>U=iGvA!DFgq7(Hi#( zAMRR6vR9-8u8?{d90_XtJD+fU*#68X{?quB!HX20e~NfTq&%igo?cz|LvY0c8$~gc zU_gd1B!l-`n;L7y{d|LLnwH1ch_mm11@WK4tA1>op*Mlt;pW~p`=>8VHaGW~xIe#! zgjUhPe6thKm_nFu65~$u%IUchJ$~^mQiHG1{QXBMPCYdrI?F9i!d9$gACNTjs<7S@ z(EvMb3R8Ap7-I8E5PiZ^Lg7sV-_f}XFD4Ygj>8xld@j7m5u`9zMegEzOyP3?bQpx6 zlH)NS+fp{95jWQXy#wkrt5%D@elQQ6;7)|n#ib`!I9M646_7md`*6>>wo3uOIEcjg ztBBz~w>u&V(0i1Kpx~HMGrmngZ<2VD%rs{4G`j?93(FFf|Ky&>Bb#OlwQRC3zDAzy z&Ghw^rGByuyfqDM7)6K>OMZI>i~gi|42z%J_d2jz9X86R2=B>fP%X>WJ!x#-JSDQX zZu_t&IustTOI|P=OM1NYLLBB=mWr4{EvZP;0eY20;)* z#I{n)XPlWQ4H~sz3L6y&*!u#?sm=(fp5F38B&`BI&rI_tNq`!z;)^HT<~&Z`aLXPo z*(Q!xR?+ZcF<0!{wz6_&8jPVkwwEt`Um=3cc7r*>bPY&o^hA^#(q+Z9a>9&VkdW}D zTN$P=N<6r=);L?IM2JD=6tbxOkZ-ee1<;8?150s+BZF@qaW*N4&Aw0&+d26d&QrGf z;JOo{XGQ@drRGPD>N{ce>?EEAR{JdN_6L%td=+b-2S=;{%0?!6uAiaqs>V55u6spr5bYtcPsz9(%f~ncYV_H6>&Gh z_+cQ>i71XkGq~mBhNZY`6Oyb**~Is9d;fTKHAOQ26qN>@k;jZ*Q-j{Q&E}45+9F~c zWdB`-az zggOK#c@t0whR5oVs9{VQhk37L`k2kQib1+`bHSy1i;>${+Iq(2#p$Y&yUYR0Rr$L! z@4#Ex?Ie!s@q4X6im#}c$`~7@ZtmW7eGljgy?l6=0RH$>Ep-CcDhy+gYlXNS_DhU1 z<7y<;?5CSARmD{Ap&3&LyG7+Z*BAHBg$<(Nqm(8I!#B;4R%778yu;9 zoi_13EgAGPE99)`9`v*7+_oVN8kGo&fy`x;-zQ$$B3Nh{t+v13>fh+C{40qL!9iX~ z(dt`ZCF_56Bd^9Yt&H=a$DZYheCMZJ+?QT%HNpc}7Q>r(fF%HC`BfF#4!~LY-`p&| ztq6g#)|f-1_}QDV0I1;t8{&3Dm9RuFHcEi}N_vyk(ewFnU|hdM4;rUOgLavEeJ_{^ zdi)HUF#CQwledla2>3_DjPrcv6Of3Xz0o)5BjHgl8QE;-0xJ38(UQJN;7+2 z3`qMaE3h38*!^t)*mjYI%k(`qwQYcY%v$m7Yzk(j+}uCnm}G7tG!vCXb(`Hr-3L2r zfgZ8iZ0e|e0Blc!(DF(qB>s8wIKJ==7{_k4)_m^^GnDP5rYFcbQ5{f1~)|8nD z?RQdp_6!4Rz@WZ5Y=psM3zhX`*G;0w0^i_Dthcnvx9z0 z?`EvbhqX|~@2|E#ZUvshZU%%~SRxWq+4wCBezT&r=kAo>Rz&ww=Fmew)9rLgC}ye| z3-%OqF@@os%!HFADp_b~c^~6}WG$UkRt+mnDBCBCPGmTf35^&^u;8g145JP2MZMRj zr`?H?z?V2pe7-RtO(7gvPLB|SN#HAv%|w2jfrpmDk(fbo%Buj+3n-K!H33YVO;bRO zHN69Q#l0GkOYv_eBq$xR-bSMd4@%U3ihF+Isd@YWOIR}%WoDTu7ex9o7_|aj5czJk zw-+CGQ-Fykfa=8tW7F{6VoR(LvSJS23IE%iU;_1hz}}>ynE8$2?}K4ZGK`r8!W>>i zRKoHpeQ_8xbwE5mw3-?XsgD7DQURrWF?{pxSH+R6#@77NQVKM#$Y4VZ^@mOF1-2|1 z-0*6L&(o%JKFmZtGMreqhTnZ+gB8iXqVboFP+67*m0uSBdPN$l<#t}p}v!$iYueyS6nd1OyjB%T~$wvKP*ACY^V~ci*{)B#~N>(gL{^DltKm) zqYcyF8e%1vw_}Rexz9(Li~V3wQg4xV2mTpTsl4csfFgD!U?pGeN@Xd&4k z!7LIC%Nf)OuYxHPF1Tskb|3>g>aUbhf^Lpj(_{2nb7h2V@fz3fH8w)ScN%Zg^P3yr ztzon*w27{+A7${eH#XEPBFgV$ul!X)3Hp%S+xHjnL4SZ%l>0&DyL-6_eu!IH4L|~d zZ8Vxfp@%ak9jrqJzf=4fq=}+I;~Z%l9%T=@qrr?(*SmKZ+pQyfEKqxv;7fu6_}Bj{ zum~RIuo045@6o9vD!4Q(Qc;pTa?>HsWGJ#9u`CB9Lg_{9Zzmy=uADnZI}Q&m)N0 zPaTQ#5Pj!`YB7Cdh4q;b^)}_NApd%4B9P!j8>U?82rZg}CyRJqk-%-5B=;T0#BYU|DNAm^X}B`ZO_hn6w^pG)g^WyM>>xO_IogJi{xeX+N~QhSeB zw?25bAwghn1~SzY!$0~JxqbWP*zv*o@l6%AYpcpIW2z<_7P1X7|7#Cd$@9|Lr%7rb2q4^ zIj(&1QBKp3QKRj+wlIb~mV$?|8kR9tRw}2v7kka=>Q;}u+(pxXK3)YMEvFvBPjZef zuBPuA6m}AmFUg;MpbI@N6mpf+;nhdH2uovG@@rGWvydX^L_oD#cWuPLV_QSBAZZ;% zyErNz3zNN`MR){9@X7AQ+0n4x+|S_0(0*K_T?$ZjEC8m!vSI28?OgkQap6K`8d2=r zg#X4X;C!m8Ib3VBVd~{1HPn{I5$fI1@6Ziq_+tx`uPq5&?Jf7>R2#;|1DBvKbsd>N z*8>%^55t))lmdd}zi;09y{Uf7^f$KbRf;j&Vd9;vL0>u{@l@)BqUtA#S`=aGZzPl0 z$UkUbNrFaA?J|R0m1_93Bb}n}v>f+nc1OeDg}AhnMR&ZYW+CZs^1NI2<7uKQE&hW~ zTvo%SCYfz?FlQ;;Y#L$Ch$L!m(k`y4ZFA@YIw~qWQR5QQ&)o>~_;K-r#{ua`+XQ&7 z&w9KZZ4`ws$uvC-)B+k7zYQT3-mW!e9>1}I4D&GanvuVh))6hTEB&uJV5TMJ(zPcp z6B5sD@ZRI*7e#qpa+bwP_D>5Ft&JTjaF-!2r37LAx9*YNzI@=dF71L)u^RonX-J^L;m**EdG@R zX&*9H)F1eWYA^0rG}^i50Pi?4q0(;JT|8}TgRe?c?_r2t+#!CXMCvrxK>G8j6aH*@ z*iWT@9Wi`6VhW4842ZK#>idK;$FMb&_Xmf<#m(QLlku3)K+~r$Jn3xWyzvbd%gFu- zTw!VgfyS>;jpE(3cg5F+j9PG1e7J#wH}0$I_4L%ChnVQU<-%Ye(0&ul^-N_Pw;Sbp zjmax82*bq7Rp*N)sjjQ{aWx)TWn7-J~rbqlHr4uARpvf z&Z(lqV4}U$w+KPh6^FgRomZD@v2e9&m6G)X$TKi|U^9pf>_K9F8_mOm4QkYxrjOdv zgU!zrm7{Nyle4%Wn5PhyN}C6ZbnCcm#wU@V;c85n-yaku;grN3_X+w4rGO`oH$vb> zq2(&<35BmdL>xZiIFTfrI5+6|i%t@*#d6`%a*^Oh8J) zN`R$eaaEYe1CsH}DjSY7#<%@r{#b9A18h}H3d~j~JPssq9L~{q_4RXEay7CnRT&(- z%Sm4YECP*L357}UTuKkflLWZ@CVhv%u=#zagcm%MXp}2{O@A4hSgTM+PP=fUsP69i ziA-7YV%y1aJsZVcE(wHZNG5faBlO2xnwZh-kz)4&K%ppq5)=R21c@akD^(`RRwKD* zB_OOti1PfMczxwNb6LVD>u+vVrhc2b7nwoz_nAm{UA6RO=-lRmI2N1`q&CL&R8t8vk-5Pim>)zDOsISpTq&TVKoD=)SBd-3CID zVF@}C(TX8nT7nj!S;yV@X^B*f4Xj}Kf8TkvRbljuSu6iX?PoXF#~P6 z1~#dd%_K7pA27dv$HB{O@a9fsAsplTWL0Dz>|XCN-db6PHp_z)|0-96o<`Y_^n2Ca zLTvmkVm0D=KEn($wP?ObNw&wUts14lt2{gf3S$=>QqUb{8GEeyoYnuVM<};{j9;%j zQ=ngYgK}EkWOR!N`kLC^7Y14~^#gLITp+Kb#p_VXf2@0Uri%tkePUW~YVx&UQQQ&K zlrn>A@-1?gLYs6ZAIFFTX4tK08W;8cr6rGIes}nqcEFqw^+KG4v^U(hKkq)`p-7VB521G(No<0ofE!%2FJ5_b zboM&S&Ma-kytp0LWzGqE`Wr(W<*O|zk_*&)NO-OOXKdtTPIqeOvkG-Ntw!hR z%Qv0df+hwd#1Ch9?WI62ku12Me80;p<{egQQZ!tHp+`#+?D2<8X|pkWxxtgJJq$zA zMqCm%7>9Q|X1S7h35$!3Z z=f)`H61zQ26*~{9h?)AY{?@~}ft&g*nkpdI>+r%qObktOf;)dz)=1O>-L%dWCX2HI zS0@OlMm5*yd;it{hPw;^7KAwEXuPuJoYec5%^hnZ4`aZGD>ptn_W&&`$9hVg+cTk@ zlA-cJa+8qHn;nc>tL>qtv$)?o*rgkJrqvT-{QzqVi3daz3wJY7nCdwli%Bcn_t7TI zTEdjC`5sZB11ojnyg>YgP-@lW?0HqRE9ad){{S7WckXbodQiLyRU3gXd1xP|hZY?G z3*Db2Ww7+E3oZV)H+ldmm86cDT}l{qpIUkFoJ8%4Iqt07?UDbp+NzGQRpU7v^v4ih z?(bw*IZN7vju)XY`+w&e&_d$!i97)ix!M>1H`x5h#a$ad2R~MsJDOdtBk>Bmb>%jD zb|l1zCs>v|fWDdm;W%K#hrCj7YiSv2XxEr;mJY8ff!E#3-le?L-B;0)QCa7DEiP*3 z4eWnbt2dhTUCB}#A*X23to-2ZuG;pC37;QFZDjhlLuu$r-evl^N1h)z?mSyggO9+u zSE5z11IeM`1lxAKMjpXopw#xbnU{MkIm8mIhe{5EahkIo{3(d0}0JLBXxN_+?W zJRpMk?)aYUewTAu$8;G}?A11MueXz>>6&}#dVw{drHPSI+D)mv&HUwTX)p$~yNa84 zeLiKZYO{{`;j1R{0yfz+iFs$>g;zVxc%-n1sodSxd^kKF4|l|d8XHj@pw@gxRH=E; zs`g}0%#2h$dq>SfUuI;J9kGg!{{9Td7Y+eFqTuO1V@2(G{BAGAu#gY*thA*z+fDxd zzBi|T^>TsX6v8zHitRChm0(5d1A`EIP6&CY=gv;C&$}&0+SPJ9DGfSEiB$yVH&Y)F@@uBF;BXHqw?``g_d{ON^IYgI z;;<=ihAN*{zk2=J5!Q>gZ#Zu`{d8nZ{I%az>+*qvPlmfr$)wI zWerk}q+Anto;-^Lbu9sFJpWFPjtIe#0kbF0?+OBj_MdiY@p|bjL&qOf5#6M{d86X_ zKh8I!s?HIm#lEukbJO~#upcOjpZXsVi-ip$d8sZiqa1jMG+}Ld1sXIa(F5cJD+fm@ z9XIzI&gNF=~#b{k3VhDE)Rl2bTc7~s1X5mI`fe{m z)^5ypi1Yv<_Sar1o~B1UIF`j)PKC>bCvs)6(W&;+v!gu=`n75{n{?5hWBv)_iXqp% zDW(dRLRHYdg`|Qd3LihJ^Nd@S^PJ_il~_jp+0Il2gf{5%{BRBK2T_bn$AtFyM*X_z z5Moo-4mAGfqt6Bz4zt}9Oc~E?lh~#W`FG?ZrYQ+>-EUk(UYjPV%Sg{@M_zj49^Neu z?`NFHA8^q|_?~ajcuZ(qLuVa}`jvTRAXz@A#Z?IZ^V7-qnF#Er5TtJKUpDExvh<+a zw=?rAF~5h0fkOK07x=eM4%@^(=bb6Uo3}!;1MqI79uN)c1r)2$9&I{-vr724H}5O9 zeJlNVaSpW3aK|qm7OxBOqrM6jin96iP*x8J6J_V25qGR=`u*$B$EnZd!QSfCGL+LJ zl2G$ofzn-@GK>#*#xRw=dJ5q{*%lYB!L*hR*Airpw^wwxH>MN0qaeQsYkz8xY>BQ_ zy5Gu<+44CUmZ!5;=dABdyS?y1A^gMBxpP3~fk1-B5)ypGqyC8@*+;<$2P;yahaPC-sZ` z3@m&HjSy>0CmSDQE6x`-&LU}K#^B6#$Q>;G94z_mLGou#CCLr`W(6B*R>c%;F~7a} zL$A!YjG?wlQmBp_PTB=v+Vrmr`d}BX`%!P=Im^$FXE}1b{7e0(ZERJxqV}Nt#hOWr z#k2!fHtc*#7yL}xVkxh(A@$`QzNj;+F!z?IeWVi(7{1Yh2>P@S6(20WpK@4zvlTTK zaI(KJc27B~>VK$ASesqc!c~1b-@Qx7+B0XZ9eEY}Mxa8rby;4K) z6)bL^e>y74E(Y&}vX4%;Yy7sq?S~egg+K7tk-2z9@Rd8?XXokt*}To25&;q)?;?IC z=5mSTfNtJeKL+kx^=!l_q+2!GUm-c&&?QWc?vN8sKU z^k+4Q?IUeD3@mx)Gi-icq1%12;YPtTJnlN5E7D0?R#0zG^gGz{g5VQB4`A5yoWS!_ z*X4br2{GY?;&ZJw_CULq=FTrDsEtCFP$ip(^PSZrT2&a299c95gOCgjoSt z@zlZI+y8k^!>yS1pzjmyRI$G`ACm=_UT_ z9<_jU_gfGz2^I_InS%$AW3=TSfV9HLrc&cHDOkFZnUDZG&h3~E9gQhzu<&ufAf@(3A4#YY6em|Ylj_Z`!ew1J9)P+ zx_A{B7MqO!3s0*zCI)WRfOKdN*py8cg+p|Cj)1D-^10|oimB(Xnz8zlHDz?qIn-SuHTmOc*9$^{E@Oy2mR z6%n9$p+;4{habcVGIsnETPvqJN(j~doFa6Csl2c0DAUZ^S0(y}-lX&hd|%@H(#w~S z27Chx8>n|ywNI7ZxMRO)z8rU1whVNLp(R(p6~OqTB=Z`r4peh~97u}8Qyd|MbHFs& zc@oq~d=Tx@?|p5f^zI;XEhn62U62Iv<0dQXPdmsU`YR;ZQs*C;Ix`2OAzW-zhsP@o z?J@v;V-~oM3{L8vDvE7rI|10cfn69vCQCUb&%xWPdG2ZcfKfisL4IEs$Wv-?!z&-H zM*4)e-S!yT_z5>;$w{ayLT;r9jmoAs@(k~tx9Tp+>MFEW%sMat$sjKM}t4SIvpdks}-3Eg_M4fsrT=NkELxLA)(EQ#&n&9 z%^P=wSH!RsyW`_5@Xc$@`RGXtB5E7Toe$FWVr}TKu(S()9c9*2Qlc7-`&_>c7lvp# zh{}9ShN}Cl^^^%|5l(3Cqs-*K>n&D`mA>0dAeM`o)kM#EOvS!P0JWP3>19-*qH0mo z(LY-d#XWmS2S-BM$`N!Dd5oJ^uBI4)&T*xgsgDZy4Xf!N7~8k4m^rLOUa<&Y1^y!5 zv&7N|n>Mz9oC`*~8SoFMiWAw-2=unWV;>0iE) zlt<7ysLIr$9GwO}W8QK`@%C(n^w%rCe(bZ=`Kv6~`1cgP=%yA>auoZkmam6Z^d#Qs zLy18-iJA!f%Wi%|U<`}Dwy}4Cf8(auK9s(Z_EV;z8KOBYyrh-pt&M%f%Jg&yIEb2eN*=RRS06s>hakDaw6Uj@+6PV zS(6C!Ra^08N>BwOFyIbSXli_fzI6oF&VKt?3+>ePryH_V2f&bxfr{n&;yUVRBF-e zI)K`;SH~>;SDA^vuj-$##4gu;TD0O`vEnYrM)}9D{os5}3JLNIE*A zmRLKcY!!y@8q*5^1;-*J%H~--LyBKoI)02=nAZBDJLSm|UXgaWW5dV`xzN92isx&8 zz1On~1p~@Q;VsAhkoFD0{ao{#R6v&?9gSDG`w?AH^iSze`d77ng&qwk#0y{a$~nsJ zBgrY9Z#UtdoeIpjU0y!kh(x*_E_usWTW59NS9=31rG5~q2K6EPQbG|Y4tea=qV$J9 z)8vhgcM4;-79%#aRy}lyx%DqQq=k&w%loOq9qWL#j4x!-+;g01`vgY2OLp%W>%j(YRPAqB1PO8iF&b#1A+)^9zKvO=SV#q zP~$lQaMR0?A*h@?M^d+;w!IgQiPwN|fXcU19b@jdWRa;Mo?@C$v-gpK7g(tmhFNyZ zf3OSdz|hdbCNNf&e=u>Y5hjm8JYYafz~id-p(f}Z=onm4vQivqBl)$!sy4;VJ?=Cd5zCKg_|FY)XzJ-K3e1U<8xu6`T;2HoFkNhc`AaRkR05WB+!kx;xd_ zGF{jMzp#}Gw1l{56i@ic-!;1lSTkRm<%pbW^<+@wWTt*{H$2D`52QCm*0n79bp1N_ zi9A3mn!m+iDaC1tuY?9V>{>fzgD30q_{8fr{UG_^_O+GN@v8?1cyHzwZ?|*8_o}mR zicjGJDU2ibOX^~hGah1hN-n1X$Ax>ePu_f*KmGB5&l{)M*BmwoM?ZoQk-YpnfL8m@ z$>Qq{(puf4ui6()?=9vWyeF^njDsRZ8}|o@9XtCQHpo^Yoi#C2x4!aUPk-wtkhj5! z3k~0<{|D?}8nO^wl&w|f@Az>aTduQG9S>rGt$Q?@Hbg3x*LQ4Q<%iKqmzi&R6foI> ztuRpXdyH|3F9S!mc+I5kUz4g#q zY+j%rn#hr^En2tqTg46jGnvV&{7d;agxn)2`SfoTnA;2{aaymPqy7ZDrTTF|gEvrN@U*efK!O$k#a&M6K7kw|YjU8VAt) zDXh)@I9&9sl>C6IJxxeGG&tZb4d!Lb-8fA`p(CUc9Iv+1v4+Lv=ou}+{36+WQ}(!Vh22lP zi#^QOIE*w4)qz#y-T>YPKO05#1|)YW<9c0ALnaaXP(*8gUluTnw4DEq7IUN4n_spRz+~+tfb1H^J$;JTUr6c8 zHLxZet>6;BvTQ9ljwanZHU=kv1%u?=zP`y{KB#;Y zI8WghxdZjvHn~}B@Ce1zUjWjH=H8Leqg%KR4E%ZK2f3i0UGmdj_o74{my()@qY$xh zd2W9ug`OT1BFO2*G1jJAI{=mMNgMdNRam{2#eg9B`Pa& zRV|&{)9B z|3~EuhLS?4#<=LxbPi2N$mu>bf~N=BP9xuAGuhED=noNQT=YX1k;x`DS}|?A zInAq0hd%d%)XR8kT3m*ZKhgYSo`G|2z8j}Yh;oT7A0tigrP{Ex&oH1y*-?{xaU?IZ zzZ(vr#=_nAZjQtM%{oo|V-a6#zGbZV9xK&Kk@z^ADd@88~Mlf z;**=jqUPR9HvZ_sl~Uw+OBhvi!hc>pZp~X2pm}1x9U+RaHC?_k^5LPwPHr_$8m0Mt z7Op3=4Kup~eS;cCO4fsas!0atJ{%%P0Z+a}l+p|ISm_!n|M-Ex^}zahUBfrN8t4c(ip)IJ~I+&TE`n8*wuVrf}mo<0uO=m4NGvdky5b_A1Na_gvK;i)Qy!s+2qiZ@@Y-@7Q{q73735qvl%Gx$hA9i z;4oofCU+m2$bPeRZlQ+go_$xGPR=x3_MVYr0Iv*}OLj;+oKI(H6DX^{{fUs}E>Yk1 z5ocNOYvy=+4M1+|IPy>7p=l?(|J}U7J3G5zNzkbU*#|){n)O( z+_!{6CF8Bu>tpqg&EX<{qIC}Y3ceVqe@TvR4Pw5nkUDPm9rwc<+KWWJ6*Yrw1&JnY zFHXRDn)(G+&FSe+j#G-~&Me%UCn%jQio`IOegy zY8&OH!D1H4Yetux%Mn7%E<+lc%yJO&WHiX~EOD}?zvJ0ALyV~bGWrBva`QGi- z-sz!s?r*M({2iOoGDbGfmyJCxEqavcl?st^;{7Zi=iflh%zo+&Rl9vpyjwrS8NYqW zjUR3D@jj4{iaq}482?|Q`ZIdbBKMys$4|S*)Y4wp9FESD@T%fpq+lCS37@G`CwHvp zqG!9!J~-APHx=R5q85GS@>!w!iq?kS5`S-TH{^Qxmxa?2FH{=k-IuuWu|(w7;72Bv zO!D?c2}eZ|)q|Ni#B2!z2z{45@D4#$wMJcGQgZd}uZsu7#rV>Y6f~EympcTkN|-UXh^l zEpljv?WcslsFr7`bWOy9zVkHpM)7> z4Ioly!uK|<^`Z4sbBhoyX{w?QJKf1j zEh4wVi+XtpDYVdZs2RnyB%g(mb)rJ%?UI!4K;oym!waQb|HZpkUjI!MC$;959mn@- zSB{PC_Vz)doOk0lubh(DkDsI>Bil=(q7q6@J&iost$6grS7>ZWI0u_w%Ktl+oJe10L}Q&h&Ck6Q#O(On>EguWMb)FYx+B_G_-@p2USS*lWJLP&hC5n8PxzX|cXo zC~4kXl*3R!PcB*0!R(5Ig*cx^H0#krGlH0viGso7SJLj}t>cFF?mvX{*^8TGK65$D z7qxTAXeJtp3<}MCt6}*>sbN~U{Y;nLzRG#iCBU~dvs+l0Dt|XkgHj|ZoZIXPXkct` zaUyhDsh3eFxnU4KaQq_ixnS5s-RGVTS*B-|!SWrMr|+!4dW}J!6^q`1eYjz$TW2F0 zb}rVRl+^9~oLY0L_Vr2mNm0O5-E%qWh{F`f_s4APJjf0%VI$n4HldPLV_g$LV(~b65L%D zcX#;sz3+GbfP3f6_Svba>gTDc>gt|3{Xt7pi4cz(4-E~CP(@im2MrAq`0oeCe3a}~ zoSUGbVQ^`w>nZ+sd3Z6ucCd4Jet2?uaB{i6dvbPhgW5hhIltaMI9uL4-aEdyxVqik zKfk%TyScsJK03dRi`%>VT2&WWZ(%uZ}sPW%&@6=}V;L2m$F^U?Q-B{Q-9$DD^-M92; z_~^?c%Ff}%V^@1e7YC=8Lv!0lr`L}h9-Ug+I$7O5K0d!*-#r^&+Pl2In_k&p**e+S zKm9kewRLc|xPG*Ea@9S){^&kx=d@>X;}QL_^NHpCM`s@q8wZwKhgUnt*4jr=^?i#C z{Y!(hTl4G3?Zc?0&BKMY!};~Ylk=O0PMwG5|bACi7nHfATk4KlZg zO-K&vuXi*1P*ocX*ZV-D{g^JQZ*??v(PU*>LRwlvLLOV%7E)OjeD~vL{%>A3C$f+cLq%|0UMLtBK-guO^%5NA0Q!TfS)MoV{8M zKD}%Nw-}qBEtdGAY1aJwTRe@G(WEgC2@EdNC%3elFxEy*d(sT#jx5`2gi!Sm+0riP zj(3WOSH-ovmtppId@fxv)Ys{dnPTi$Fz-@R2j{TxCmdz5p?`MEPB@y`#ZaGhYiyNn zDgNGlo-P{2=W6Sp;%UK<)!qO4lcUM6i)yDvJ^?8We;G)pcngjH#Z9ULvsYH}UOrJm%iH zUwB_=_l#KbIh^!);zlXTvijiU%(uYFOPNJBj}rzjaAgTinw>ElsnHd=FO2=y^L#P1 zLMHYura=b^5cKE8%~caFYF6|Z0w=D;B7Z7J0&gVQ(ZqapvMrpwL2TOq`^&FvSdmb~ z@ZOAj;4G#*7|Aj2Amk)hv(AFn^X-DV4Flg8$Ue)Jtpm$G<+_my9d2nhNA&#)EU5ZU zQB3S|o~04`K?SV5=BE2i9|I9JvGq2K$?FpuDrpmZo?1chv3vQ=l4SE-VOqje{nMSs z1fAujsf)H*Zr-fa2|LBAa{e&Vc2N7MHgY+VPi+21?+K0J>*W0@s{0M=1X;Q2mtkdp z`^(cJb@!HFYI4sY#zkbA(mFX`_;Qxf^chhkGNkIi_8JFlc%fhvt@x)msY++d4lg40 zZ}!GFD(Ug!CySvkf!j)9>(}fm3Oy$~BIH%uT$v8~-$Xg(x#G9&*VKMrW49UoOYRGt zaDZTc{-{@Nbl1i2gx06%{Oc=^N7(==3tz<#%9kuR0k8>OECJkKaRzEeUyrkf$mpN- z!+*vZ?BmQC{(DPL!z8Iy9DIorP{J2u=B+6o!chk6gNXLo zQ^pOyP3P2mCJQP70f)=hjAovQ@AMIIxIqxQ(c7-#(y%`M z>9>1EivtRGF9wpAmk%x9Co`z2*?j59-15I2WAN+@UMK7&Nt-CYf8#n9E_>I78{p1{ zkN6&NAMLSQJt=Q5+Qh%A&|f(bHjaB|QaRxet)h6oVumrj>>$uaU-NO_l(524D55s~ z%^yS3fLg1Ztz1zNT=Fym3cM>%=`Sa#;RuZt=LN6W<}#VAg4?+ zPd6vqsIP`ehm7k5U*b)rQ{&Qj0~zCErcZ2PT`Xpixe&tDe!l>vDW%>$66uw_lx>Aol3ImbY&+Z zU^a8Uh;yNFwosAf{Hje6ZDh<{ujF>ZQGAC^aIa}m_yKboXU8tlx|s!098?rmcTake zFmSP;xQ^wU$6v2x2}9PSZGY*n{pJ6*pouB7W@ef2AorUxW#Od?|IDAF-@9%}xISEs z%Uy?{I_e$=Am=+T+sO59lT-HQ4^KL>CL_TRWuEJf!&X=5?{5Dnj&-1Pk%K-v z=YfxmisVM=s_PYo^Jz3cA>P<0!GK#)0V*#DQ&RiWMXkNyl=md>YKNqFlWl%LPWU$f z;~yq+L&vV-#ihs2?$dnz&q!nv+u72e7za1|>a&~M zR;ZU_Fi*V1fysnU!c^48qqbCSjxEXS_pb*X?LWNqO|(_8wn{{&F-Tu^^~q^9r52ZN zUd@1J#)268H3$%R&p$0v+J&Eb|9u`6Xc&2F{mshA){??I;HyLwyR!|^g=Fx zG_?6oeVv)}yU1u}0z9)Yr_OfIE7*s1NJlODZe-6&5RXROjnkMp)pwFj;%@uin2f7ri2h;GQtZBCfo}IF zA=YcOb4&%PvyRX@Stl5$tLRYQ09({A$r=ss>aCfwo>t%BvL6ZPoN^qYy9$aYcQYc$ zN*Qlj3>gN!l~6l%C$rvM?)e;N zl0%t2NoKt?L!Dbg0aY_}Nn4#~uK3mxEqZ?Y=7kz?g@u2d=jT-GtBwk66qAeSUEU!* zso4j1)68OO;Y-2;N*5a}Urc#CDSz^%TJPuh?@_WG^QavbU5RSQ2t)J|?Ai49c|xK$ zK0x~&q{Z*w7SKw?xtKJ_{!JQ!KC`I7dX|-#K$BKfJ#j9DRa^RVHmdi@GZIEh4STvD zT13{kMw>TGx-)y()JjwfhQm>nNALg89}m z$$QQ4C66H-GESDbf2I8C=Xyp%%$ zE-R){o>+ETA60|Zx3qcX6as`8cBTqEixo|v@@0J`1`ID(*IracyW}Lk>mcccl`_Dx zc+zyPDM3RoNf@oN<`iBf=yND(P*EqRk83yZ)30jZ|KqhPyfRYyVIrGUV%)T+^htjk z>2xYX!dQ6a`6B_H6H6MY!^w*z`IxqdJXfl2lY0Nwn zyH0=p94RXw0;K^fxFv~m>Q9{=2=cuN{>es2Dsgslu1ngh!Xgv63f75_W;(0>Sx-yG zDWnt~S`5z-vSR@A4cOLcd-F&rwUk=x(!YlkHL zD$TZVc~KSOw(UR!?iAz>TUM311c+KBulhDih4(L1z8{-Wk@z;`w+#WI5FT?8@Jyx- z1tMe$3*}Sq#ldCpqwQKCdc2YMXv0g+6Mmg!c+e^jY%$YYTi{SfBxypY0=da!=h;pk z-cNNre?3BDuf8Z$B9x5V=ELv@8>Or<+98=n%d+K8&~>Vz`;_@3uz6!ek=}pUKgHc* z_u$+&Mdoh41<0IqE1|IA79{M3x zi?1r7p7Xw@u+mVEy5r-0*JwN-Z*&|RAC>#PdN1AWFv*xmvn8Y1QS}u_ya*!tzG$+nvi{+&?M@e*t)5 z$I8g0_dm%ML@|FEGdzS^_=-N+ty&#YBeNaINJIZC?Eo7qs>JclwiWsl_|4L3fUO1G zR^HxWF0P?#+ih=fG?TCJ6Zjg+l!UolIs_1w{<^N8hv0dt+d=dBY~oZNxB|Mx?Bm*; zxl|SK3n?AwaD5|G7mn>qSDN17IF(6n@^G%9u|eIUT$A56fcP){xlPu~$rX6Cev*}@ zUFVD7(n^YFe(D!(l$jG%@wb@f=|qQZ$^>DVK+{5SJ`~1(A%vOh0_B*OW<-`>4jb2(a+OP!Fd|J`u#33leV)s?69!bll5C8k z<<}Gdb{xh_4T?R>!mHw-`jnG97H6iuJ}MR0Iu#ScSEN&{EP+p>PUBz#dXDYkn$lb$ zvi0x4#|2@p5oq+nDlb>qyMHdD|01n)COn!odC~!9gY%pw&Y9t)B0JGH+e=I0?DY~= z9UPPqzw)MeQZFp}a-2@s1p52;HUB~A|Ns288A1aCOwbR?U2?>$BG3H>D2pbmG3Eih zkepu#%p(UL<&zsaY82rs?Q%*_KZ0d-*@P?Wr5xkiUlueny|E53797Qd|51#7gVPWk z`0Z;)cLbf_Rhd+=0cK;@hvVzHc%5%Rw%>hZvn!T}w*b_2g5=-A zZ*30({IjuEM9u9+goKZh5(Adh_#6wnfnT?{tvDo~;x*jRJ}GaMg%S&A)jE|UntCu}VsE$-ytP`nIiT*GFHvtBTCLikrQ zVwY~$1&kr{t3|s#gDj>l8{ak*V8#)zk>*9{W2jtlTPDs)+bS ziektIQd|PKay#&jS+BBspDdz(!1FvHR44f=qxG`25iiu;g77KHD@9oyiI@*qOdQBQ zAHH^c0AQQ4Ymz{#OCt=Y}2DSdJ?o|aOd*8S(he;LInIp!3O>_ z$ps!avPjnv*Y_OR2jPpVa4J3eG@})QNr&8kJy)Da|Br~xy?r#EoZA6bLAM4v%*`_Q z+2Z$m;^*MJt5p~o_cTBwJ_?j$_aB{6OmmceS*3SE$dq^2z-FSXJ{N>R9pG9DSjN+Q zmnA|k*fT1X;OI6aWhF#E&jm>B#4s~CVJsfV>^QgisvV4(asjmTz6`)q$ zc7wW#B&PBV7S5{nhtpG#g}*^3IUJnbq3`C{O)R(6*G3?iu*;fYSWGO+RsZHfJ$^b5 zt-dGf=+9y0(uW~XS?D#e?H5n}bftsUD7^z}(3y!V?A{-m}YBtznCvdY4tYr(8M{7S=z#^nZ zu=}hYmidTKg8h5WlmQ0249Y)>KDGfI^MKI5A4{+$tF=Tjaxf~@JW2tIAg$l9gn{?} z-IRuxw7B6}i`1hHT~<(lBcbk@Hw0KTsQ1MH>+mnLTu7aIp=o=@#i^(vB86KzHUeGp z%^QT~{8EwP#X-LUJ0mZf@ijNWt6BV)P#gN^H89npt-@tI41r5^m))bxz|U^9>qV2S z1We!~%*9J}f{B|fe#~W zYK`EkH0JR8k<>F%kQ_nm?IGbO^e-@>6XavqSiw>tMgr?xdQy}P{$H5Gz53-MF5?jjx$#6f(BMcJE_KNO1Vu;bD?k1iMzelI?tWIHht%!-H?_%-%av zcoqXOhZ{d1iJ2qLf?UEZ_`C*+b`ABhnvM*hAN*TQ$*f-(hzh#E)Q1T`$$nVBO?99v z?cy@Ri6z=dJ+kGLVK%eLCC}FzFaVpe-lTzvhKiM9{~l*dt>;jFVaNI9~9v zs4A(Z%-pJ+tGp^=4(H#@CiCF1du8K0BJSpr!ob75I8>%PAh@J(9(IB^iM8EV@R#91 zA!*WuyL4fOmwEr}u965x070pbdhq^I;Pm}#xDf%29E3smkxY#YL&%(#J`L0BDb|D7 zPo~F#-(_(=@J`7QAZX{=JLg5-p`%&a^zR>k;;t^p{)^8LhMrrs_*2LM# z;w6bId?36qC5N)ujOc(@#1mEvLA-uTg#a(!N+GZ^^8)de&pHMxQ}fHQ-xpZ!(@kpJ z5tR$P2F3+N?hqv-#_Y>OP0Zc}zVjO=YE=Fbi$fJ2R_6J{$$rs`Nb?4AD;A{Svw71Y zLQOU%k!V8%?fx%GAsf#z!WB0MC;>4n*lR;V15=#dtvf(uKV4lN!aYo(tw?+lZ*R>r4R;95<(y;8`dhFw@H z<&EIlM8uKz12HUb^2C?J_#Dgrg9)XRdZUFn`#*54N*W8Zx#82<8no_Tim5)S+mVFu zPV>RvJF_r6ccezWWVVUqB<-+(Jj_j+)-Vp9f}qZPC*GJ1PtFQ^Xk8G;R0>w#t|awH zQM9`o)G%*Md<|V7x{^=ftal|Bjuas(Mh_CyFVD*@@2pbsx@-49iYUjYK+nEEol8(hA<<; z_(;PG#QrB9;a#M7p5E~nY^VjiJfbC>kwJ$8k(NY`kz5$+9=wp9KM$xusyHZx!MZ|V zXKEA#+95WZ9J+W^eNXL|E7F$cRL>s0{_h>NMG{BC9*}c_kns8;Pgn|ieKVWNz zUx)tmhsxj;Yj+!Tj|yuI@#^1V_LB%3sTiEsahcy=ATaSgXFLY-(oce1(mUvVGxkT~ z4LiOtyMI)1L_u(*v2K?bV(*8tU^-f`PX$|oe9YnDBRbEcs~PtU+C#Cm`GmXf&pJg= zZjvAof&2G{_(-;Uv?I_Ia4iU)(XNWL)@3S`WsK(3fZsBQy^&X--N)Jeqps?oAQ2*J z8TG>fI!~ogU(M((AZ+)U9eFH8=sMNOP2^8A@5>zdcIqg^Vpa%gS79b|<^#rv+{Jtr z8}N~zf|C2qsU0-cS}&}CVV$s$T;bgiSf}mRjfWWr7+1rf8rb*iQi;Gicc=?pq2xoz zhuooW{sTCoUS&ag>g7I%8!4FJ!Q^mY5V=!80k)(-+rmrK@hcvnsUJ>2pU3f?%Jrhf za7B6e!t3#pS*WrrTh4d2=kcv(nJZ;ZrfDfcafWkY4qfwAuJL4ge=f?*;n6<)g&;;h zXyo42lPr=#u@h$+SWNvr2M!)KV?k^iEIOHxKVh9ZjDgFn*lLS6@hZ>*;h$v{r9ZyE9fW)62C+IK6-4kAb^<^Lw09U-LO zvH0a-YdR*0(#ClCet88S*65@E0a-KWQCTEdzJ#K5RKI}8QW~t^4-6chq#w08q7}a_ zPCTK{SxPij_V+cP0`QJaz`JBG#@H(nyh`BWdW|k~{!|&v38ebOeT8Wy^?eV{ zDbnoW;@-nC#%p8vh0x_P%m5RQk=#C=&#S(iF1N>*0W71=304#W?_Tg7B$^aH2Kw0v zE8AJDCmif%;e0oGh_mHp7V%$(CQ)PYJ0bw^u{b%U90)ZoD0>XdmZG3FjBaR15Q$Mk_u$@Z?g1o$F^RXy-MY0_5tVOlNv5Hsv?D7d9gdsoel zdF8PYV!$BWr!8{-TMYU`1D`*Ag>375vs`0U#HfOvZI$-jkMZf!tAH#k3Pi zW3?LW^wlxsg)%HQZ(vW3MFhc(CSpKx(5czYgoyQiNHLWzCwQcJ>{6-*%c63d^3H9yn!$JiDsHPnKG@ zQ%FP%f01R3x_F^67Sd`Jg}8!|@0S`JLdY<|!OxpLCQZ;;pCEb|Tmccb;GZzCayV3} zLQhOZKzaHFone;di)IhM7@RL(y7RP1dNg|IirZF~#K{rPD`=qcjdZL;X<7Q=b8|!{U_+hhpkX!a_ESU1&JuQD|uFj;A>4n4JD{n@{fVDbG4d) z6`-u&0%M~J?58lkoE)bP7>(vfP#L}?4dFSS3%QEzbk{n*&B zM(MaeXAK4#36cc?6!%M)FBqs1n2o5ipFX{R8vJ{_PJ3#D(;A0D7tqQ% z;AR{k{)!GgD^MowI&0lTsW7=HIM)Vov9P#UUKNf?k(u(oORukLUMuG2@;l|dQtk=B z5o1~$aFvb^58?PK?uj6r(jiKXe*&Bk6(-z_z`}_!1ekH4Lnz5;aaLh?Mt!>|()>>c za`&ycn9t(H9r<6(_uUeXrtK-+3@N|HTyVthu$cUUP96s@jR#R-oB2shDgFjvNYHLH zXOCecZ~J@=pzF6oNaN2^Cot_ZqCI;hsmcrZ18Z35{As*Di{DKtwQOF7}75% zn9`F@AqSRgVQrIT7j-+?^Dfq(rwu$iRsKnl?M_S<%pcdv0e_1Q=~dG7GJXo!u-bzE zScaIXktf8OvH?%CVb{7;s0mKlbQZ&`KrO~=5_H_cmoF0%G=XHOSx90+W{M4F4bkkG z8VLP6CMG{C8B`cv?}FpI!)Cx%iuq|VJxEG1TEby+z|4+oY`>1-AF^aHchIbNTqmqy zRI7jkgtOL?AJU>MiZ+X&ovI-dLl*j|4Ws=Q7A|7PvAI>E$<>0T$jr37L%@e%W^C|X zN_~U%kq)R;Z3+0yq+me;hvM~Hm-RALV(Atbfqn^XOFDG~KSsEG0`=J`vD%cPsnz%H zimLFCVzM28Tn^p42V1>}phgPo>9%(Et5GwZ)lUXSQezWqsqv-~ug^4JY9=JU)YN=g z7J(9l{3aqMG80$6eA=Nx5A6CvU5o?kMlXs4x7Nhlkt3HOT|Dof)rr@-&DP8u_YA%* z+5lT4^JD@t7bTyLV`0cf|BrW+Vqp8n2^JZ4_F`G?xlA|5Vi?Hi&k7K=KpWd)_CPyUKUfi*qfSrdBm|#JjjpKhxq8zEM@}kVR-+`~0zW55I95VL6$oF5y;wU%5m9fI@ z5U(lFaIdA*X^YA1pcqIyh3H?BgpxdUauW)?xQsUOwrfQlL>P)iFFw48C;kWU5filt z(}wVvK9-9W76??I${sqV)B#hUJNU%}nvS!1$K%WyFZr^sTI-CIxNBMG?XAxd{u`rb(Ye zvF}wnMO@xadApXyy3j|q9=B>jqPA54D_nly8+^|1tSR67JEvKag*eg}y+En@8+k_5 z>~SW+@wQ2EOU<`i2}-{!{NaroPb{RN*gr*;b%2$r7xuwZtB|OT%JSWK`?L6pI3bBC z+NU3hh%u3K+g=#p06O%x1$a~8kW;8%{~6$4xk%iDm#*co$x{Ty%lk)-ek`x~LtA(U zHwHuQet12blE^J=kB2{ma*zm@0Sk&uxNG*o1&`y5`^CZ4D^x^eQ=CT#4f=hdeiXqVy4tfPrVF5hy_hR$K=AH_$Y*^9YP>KsMU>YbUl%Q7UYQ7NlaV zI|)BE**yaexUvskr2X*Gl1?8VljmTxxP3;~L4=MjEz8JI;rt4t1`JI`>WKJDDOYyp zfTr~q=*o+QP677d@UVQzikXlsUkTj=D)Z09?urPOPh z1nHmZL#CCDK|j=G&1o@@HRn0%Lh+wD)%^WeZD=5)D~B3%>?_4Y!Gkg^!fS{uO5Z;mlOoRvnFp}=2kc*`i-#mv5HW#T8QrUuOdL%N}++gQQ zR9Ugkm#V}4Uy}tM3i$AqUm<$l{dCdKhzWQpeTU2r^8)?u!80&UMaH(7 zWZM>>uH~zWmFmb^ve1UOilUjC*nY}}1^m^~0{!M>WU$>XCxzB5zF+kf3o#3HFSqq& zD##%(&!6 zvx`oO0RkjlffrOZazTKOrK*9el7Z+1cU!R1@{h~dA~usPkLsT-E{ zV=VXQJslVQ()TH^JDBH_YT8{m23oSBt2Pc5IT^wUqwHNtt|ta<#nW=L0@IWd_7$;G|Qq34d}v=NMe3=m%Y=$t!k1jkn3Xru51OpQ^i+1>nM5aWm7 zkgy}lYAC1cyEk8c)YyGA`n#LZ?4x`}_8Y?gM9hn|()75N#z{_+nh1@lANc<1)BOD2 ztG@b-M>aM-jKB-UNn)pH4Z#(-8LK8pQtUaOL`LfG!uu2J7r_w^&r--HK8iNFs$@Ak zO`AIHVzZQ}{vHO1n0f&$glqkR>n#1<{822HvV0EA#7Z_!RiZP2J3k;qP8wQh?MZ4` zNMxRQZ;5_|Npkl_IijpTluZTXNE5(<%di9#5)fm^fqfSn-y+07Wrp?*dS%m~8Ccu7 z7W)b_5P$_9=08LTUbJ+SPq^=DbE}_rF^)st7q+DESzI@K-j8HN70tM$heADY7{hmo zLFlsQ+P^fnSI~4+GGVG3?DPBc#Q{d-XAmZhEbc}>exhSF29iLs?^R5hxwTJ+NmwMu z)9gw{GWvk`(r_0N*>f(aF;Gj2gYZ-5VgeO}jFr2TB?KZqw@9(wzt*_LB;2a^o(S9) ztAZ3-Fv-3tZLeNv`4%SVj|>frbo!`v^6_Umo+vT^r?rvbSQ>35aRK+Dl1x^GR)Ng+ zvEY9!Df;H@{k7(e{R)EuEJV&Xi>Cx5K>GCLnJz9W``I)ZIhXF}Zd&?i&hMeGUpX|) zaa!jd7w@~F5v1L)ZGL@y3Q?rmg zG0h9Syn4AxHnA(kFFu-M%QvEBEK8ucY=@ARfujL-p|mV^fh7i(m5c*GWz%hM zd1bq{T>Y1oDJq*xz4^xtXzh>|n5;dDxrO&OFE{btJ|OPn-2J}%5I9L>{lGal9zr$3 zRe}q|v<(6k9Pr%(b5fA@mbv^UaQbeGA$8AX+w-oS#?OW)@P(t@V&}f^mdwNb&A}q% z;m(z&`F_1UNjmCBc;ijjhi~T3ZGVo1v0}-<>kA2L>L@;+7K$o2@owsP{hV}oCJGrT zyopb@wNEDdbZ2?o4Wd_;SZ#*BzA)R08g}%$+>ReaCyGH{@EU%$%fn2I=L-W1M0526 z{_%cI93jznn3_as*0kY)uc|&NMoanAAM=B+h9tAam1ie@{IqM>P+bgo7~N1<3~WC} zCx(VS`J{H8US{&cTnCG)nEkOE&8B8!sO&aVT47Vy?v`#B%)5{d1TEZgoXyUWf^1$p zZ9bt32@by){;?G>-7T^xzX{!>F$8o6IcC#mG_-M!BB)SIqRP1E)RLgq90Iw?T)WTD z$%k4`AWQO)Q7Z|xOt*u%F?+Nqqs0#lAGAOJo=skh7KnZ}0GMV+_(0RXNr+Klc?p2u zO}LuAw8$DS*p6nu9VW4Oyi*$-x@OwT9y}V?w+;^Zs1(BuT{PuIT$D(&$fmh5CaeXF}rOozd%OYh3wt ztRI;l&A593x28=ZD~=crxaDh{>BXI-dBezw&1tU*nUF+8vflCaz3)h(M@YZ{yH;Jg zD(ZRKtcDxTR&5mrd@4J;(*wHyx9B@Z8$nnnm5sYZIb7ksp!yzNU#-ZkPsZ@fHz$V+xQT&V@M9SaT@t!QsnwT*nBkSOjzT&+`5jFzNA1nr^ZAN!AM~Y}1k7=Uh$3Kg92ireP zf71QUcAed5S2mw${BYQ~JJ@*kd*%4wN}w&~vNN%ZB2eRIH#*@9g@RXLjRv?160r4r zdX{%;lE}Tk3$wjGGBtnx_&y*w3cjhdh{X4jkz3Hz{b`o%U;TGyu}Mzfu~D`FH=>wf zf$qhv*@DghN0Swp+rvAW1GyUx@4*s5P@7A2Rmr)B^N$**h_iQGlYh3xn>yOy{omR4 zO`Q1AF|_GejE$Tv{tP`0-8|J^hmDY40GGt&;u1qLpZA$Zl{jix4eAZB>Mqw6*Q6GB zUj2LZgFN!1QAkr&R@K~XQ%$8fI6m1IBCwnC$o_#UkwP0HH%bfhJE4yfwHZn(`~6nL81{h%Fob_* zrDqWy8nAr;3kHI(L`lb=91edcjC+cI?AB-awz5*2a1{UBLa*^R;CSs$T{Cd9B&T8@ zJ}16NA8Iz_Nq+{UroTrNgdRlg(uaghrY9;IkxkAI+Z~tnhQ-wq)P3D~JrxeMKjTgx zoX^gbz0QZs8-E*Ks|BN~?sb1YE20k{A%@6FEc|`6&xbJ8C>4}~cP1QaGLJN$4auo=HbEWAVJ9c{5|!{x>hFG|Z}1H4a|%+WW(ihLF+m*e zxJsQEl}#5RyHLP(msfEhSV(ABbB$Ul1Xa)d>6DBn1&gN;AtrE(hg6=;eleW^d3?9h zkMcznM`NYi^6?A5JTK;!?~Rp5r;yd;gv~24B^QqJWr6URF(r@knh+9Qua>>V*bI=goGf~UX3=A z4rZy~jxpyB5m!YAYNcRuuIPFu*g0&!-Rr{DS=txmk?t(8158p3SlQwgY)XQmQR`2< zU+__iAnGc$g5oq_C&V9ygs{Y7^*O?sZh&^EXrP_xY7!kvG9^NvQ%&FiCO*+-%>D5M zD-V=}bk5MUx^PK~qv?5R2Do>3MSstoXMR4mFgyS^Qe`BSh_ziCl&SVHZ5IpJ3j1M1 zGHZMa(EXM0d8`SNof|Ng$+dUt>_5Jv$2BI>WXLcSH9o%*=j5+|oCSRdkd7V$d6PTq zNj|uYW+Pv}VX$I!vG0MuEq%TN=m3}Me$AJp&#{`M+#FJIJ2ttF+<4Ls#E=_s<)Va~ zPHG?fL75pBc25&-YY8r&YU00#fGRM05pN5@Fe)TZzVsGM!tniy4@J7dLrg15P6;wW z+H?vVu&&7t+Ak1SXYSdTxQuO`Z$nA~5xgaxjtkOyC7S^51~tS}(Y!mrd$nip#qkMe z3@lV#=i_I`C8|n^{0ksc_U8%E?yNQ``ulsq?h|T1E;=kHIbXzI*Lp3oHCR5IIAnzE zYzY!sG)ssI2HPm>e#kzTD8$+2@kNZ0^ySPne-GVVWX)jnOK@Wd_pGarRlHjX&zgY0 z4;v@J-KAc1GN-w^y5%H}#3EK2)A-_1nJ`0QRp|%iM36z+V1?==f9jqm2-=^GBj^>p z$YYN=s>0-eim@m=1}t!9DZBWQEOB=`Zm)6|ZC&q5x+<1=hYa*+bI&Wa?#T-sGTlve z8Zns0nLXllPNOu`vuGSGxSi0K`ZUj?w{}w0pdGp z<$i@%Pf!@f1U&7=>Y2!~4hL`+^;26|*vgqI#{2Yo&q8AbM6yokkPUTO@zdhTH@e92 zH$P5oA(b+c1HQrd!4IcLu7oQsM3FFB6gN4xD^{7=dpq_qL?HCzIEd%;iTqO`rk;)3 z=jt&z>XAl+=yqR+TC`K8(|sSXA_h`QIYzr_d2K#}316Kv)bmP!XYu@NpGR6xQYFAY zbtd;c%}g2t)k3VQuMgS00_C@`4ruTi-TN_KC2~&e(}?Fhq4Wu)CW*YN^*cjvJzlL`Zs7Jq{t zf=)Nj{DR~ect0lxkq1Rp`4!)oe z;tp`c-~L)$a=s$WVNn4D=@|ozy4~v$(M)dwl`DGu#xo3yWoz#n;}?Y_AHSc_905)` zc^5}NjHF+mbu|T_(Ok|i5=b-L9^Bwy$=Y^g$S!0Y(!|_z<8gN>$9otO!EZZHyj{-k z7CzY!LLr50XJYqPz>~61&7L&bTO#*-UUrX5zt@x%G`!IqG3M{L;=xa!UOr<>!6U>~ z$tuQo#K*Jhj|lTw8CeaR<$S*;bC%sxoH9Wrp<+KGnOC%>y&>zh(Clk(s>fM)v7)R2 z=ur?J<4kr7H^&kXr_^CS&mV=Mcrgs8=3Owlh(SsFpv+_G{$EMcjr?J?AKeMc1RMw* zZk1X=qsfO{&2`Z?R|E0w zsjbtDP_2l_#%h&CW<{ZuCWWr57idl|lz|1jD_bj(NJrnaqD6Y-iA-%W2*TrZpLOyak1U40l%m(qrJbK2eAx%Uy z`RDMI$bI{YOmnr?Td1pV(Lq|8oa>SV5=$M3cfX$JYO3%c881NsPg1~nTsc?GO6Z?R zZ_uyFosukPMa&Ny87~N1Mai@VMabvG$cJiQSqGMJKtK5wnPhh;i7l}fJNEWzg$3b+933unQF>$vd-}78G{*Z_0wS7*2KkK44jjK{pL!R7yOk;Sm0Qj zL!yO^M`KzGM#vMKzp2LoUWJD=rSPNIC8;7hX^o8IAo&BHRgCHK#m%5fuDKURFSSDn zpwe%zTv726-0o-+6Q2z?M969S)Kve!07xCT;&lM4eSO0dDa7aHvj)W4?}5Jn2K)8V zmE#=lVvMk!MwYtgTR3DsouXyk{dc)KKtd#P`mPnL*Lx2@(z6WE^ zo6W2}`?=HW0(TMCRwE!s_~7Ll${P!nydmZJx~d~nZ%cUq)8z-s+YfKwu5{-OUjEGY zSfeipj^=xi&Agc(?%B)D-r>26H8KJ$+yN}Ai2A-UHRKzBZ12WWn~epXZI;dpFd518AH#o{QI0Enls3#~UJ$ zx0E+jAadXENaF?U&KuPiYq&%#gmn`6K#2F^@Cvz$brOvLA9sOpw7pjxnwY7Eys>ld zhI~EMlBomu)IWa9^zr7+Di!;NdfuoCVFm@ips}wCvWVqkodl#yybT(M&SVlsYHB=m z4!MoBGVYE*aQ+lfUrnXkH>!CYxt7=+~X! zs6u^%DnbFv&k)u}IG}5Fi=Dn9F9|6V z$Q$x(b)2Tl!ak@#y!v^AU(Q$w5co!w0BgGgW9ZJsNi@j^g+A!>)r9&-7=~lTejXiS zZSM^OKaqt%65NqOLv`N(3ElKZ2JNqr&5U=pbHsU zr0pIAR-U_A95a150r8IsxCbRdiv67Fway6>KatJ|7~-TW6->?M4Sp7G^SvAWXFQkx zO4DzJI)G!LZ}=*C1DZIrSRH2?X)oYhC2{uqP7Ef`~oqAr&H#RQ`M$V>!s>0L(#xeEMUrZn0zyFk{jm;OcCV4~7 zOIiWa@a{(r@sBtg1R1f92@N2He~d$VE|+>=?H;;#J265|54A};gtL3MxBz2$qssc_ zccKqU>Ul?09fUvfyy5vOX@g^N)bs(w<77`zkb^$rL6!~J)0M;hV;lhp1foov(;*j< z#KtC?@6EiKORl@pEYaCi65kMD{A?E=Z05U(-JNp9yEhh!zG41sDsNTh@|6dC1$9u4M0tY=Lq1Mr z?dKc32pMYjo}&rKqwtSG78I+mpi2LU3jY8wuG4Q@$7P+d&4GzPtiq7HMmLh#Tj0#-?FMm2APBGTA;kp2ltP_nNUK?I9mG$ zVAtb8&o~z!Ke3G#CZA&N#@BE-Dc9jZx#)@AZpCZkIC$O=t)==!)dBqUfnQ6?$B)Bu zpOb*OV3bOeZ)89`;FS%cI`6gplIjEcELSJ4{lne%j|AIw@1^+|a`y=c(P#_jWCm!5E5ggFn>XSed1Jtf5|rg6>TXT_19~X^1Ae(qW%iusb27V8`(8f2)HBJoHhvxx zx(lFqwhGE|aDeWUp&uoY-LgUkLjh`gH_V?+m9kXM#;uq>zRE_a8t098J8#H+gX@EV z6yIr_=Q-_<`3IPXVD^Lg2k4`|LT>j=a;lY|#|Z8Wq!8rNXIQ=thd+rXZ7alA@eT85 z;fgnGEWcD^`46IwuU|h4)>1Xh8?oFsVu^3?qBy}=(W~=f_M@`;%7qGnXzd@E`$q$X zm^{Vd`V;sLEi^Ju6gg}hgAIgltm8!F-?iEBb8*^W8c{?(E3TL~IMtJ>zAlU0(f0|j zzfyke-J`N7>PZCN5;3sYKm%HP-qToLf=7(Y0S6Rz!>4JKdRSz;Z@g$2Y^#@w5bQL@Zf(QRT zlbLDXq$ZP2CNmlRJR)0RK_-3k%{MQ3`WF3$xo$j=9Wi{C%ejv0OO`YpK*V2l{>!!rU?=n|D$^6F4SG%0omEDG4THO%+#*Wf$h#@l8Kj&T#^+R6$K>ff`Z7y$Z zG{Y_02Eq1XA3S@L$n?Ww3DP>-cdGdfC5FAJ)cvX6WVZZS_UYqp${UmFhTd-=8r_gG z7-^sKihf9{A1EKD8ggo*2@X@BwCNFS`}sb`Y8|zxADMzsXm|Jqe#35Ws=M;q##@#i z45k@8?(A|VZ#3&E4Acy3enXNPe6R>K&v{hX)kn`+sGdvpBdj);r<>?#%_9sIMHB>Y{4n$gR$ z0^#`~$qGe|40PH*Sk$}})pL{&a|LO{r(Xrya0COq1<<=EJBKq|+#?G-N}=@_YE;8w zFI-VMICs@|#eZ;D{wiNoO}{^zOymiocN-GFvBRRG+YlLuF^I$RZ^5GGg`P8?bG3ei zmA?(wH*9l;HcZg>eI_4|v)!v+5A`EgTCtK!U9hF8ZW#8$HSbNuV>+K_wmeITdGc+- zd1=LO=-q~%?KCftVfp06{5QnA=PLVw(288yu+0q$jYjNer#SHzS*Ek%P6ob9fVzmy z;(7`-qd~u+zbpPVneV2gDKSlwpOeYn-rh@zYWND>F!vkkwUihs!$o+dPkAi%E-BFu z993u1`d04&3XR4f&5y^aeqbF{t{(woM8QSG8oy!Q3)j3i)#oJHP5GE6$cyCH9_J(G zhcmyiq8!<#6d!Tvn#dFNL#Tczs63OlFQ{Ju+GO-mKYGRL`9QXlk>0cf>LhkFZo^J5 z+`HP|RAPd>Pi^_fG$Zzt-z+^QdtcV7ZZzySI72b=w_WKwKlEgCzC4{+!-HVhm5|HO zDCzo&A-RRD*vSA_Y_8tjDE{oE7w$C4UB`W&^OYqC=lhCo;2B)o)eR)C=n7y~AY&Gq zDGYgUV-Rfo+rq| zR4+cgnD24s>bn~@bz@LPH}Z(n2=vby^P^lpLX){XZgUF@8YNij2cu9&6;`6+NgN8U z=u3K23A)jCFWkrb+?G%Fo=wyB)bvBL$4RDText|z24cf+=yih!Bj&;IG?Pfz)(;8> zT(MdMX_R5sLr;DBD*pRjLPKzbue$T+s2A?m*UXl`&K6bd<7@sY`7ZSvJxjVVFw~7j zcBFGUf-*w!^p#paC>UX{#mO;fmV5c>EAj5R>K+*b-y04HBvo0Mg*Nhdo$}=Wv930H`1ME&&E< zfAkf);i?zzr}^)1j9>F~O~pR`;-8W^-W5mX=(+J5@tBPij}Hv5WDaTZ^c7X>hw)rm zyE%2U;qTnm)|0&Yf%?I~E_$k)08a7)h<{g#t6sR%&q>Pn>=Nwk(~E@j8F#66Eb7K~ zHQk6My1|FHc{IO~Nw`}`qE zUhL2ErPOS;KcCOP&g$IWKqPL%z;DPSB~(9W;qJLGtb7M<*(wr}h8g4Cb3BKm(2r1n z5+@9$y5X)D?u;|VZ7TNZ)6A{kSVhPRkpPGsz$q_-7<1f?MJEJEqho~nfp^c#^aBU* z-*10xp-9N;8xP#|!tG($^cw>szab4=T?Ksbpo-@_;*L|>3yvDkqaB-mmNX4r>W89w z?gh9O?SzDc8r^W$3)h`)px;2Rff=D7;1L8W72x`z2Z$l3H*9c}G|rgK8g@aF+#^%( zWe_)vOX?e(2QBx){YU%;Cn$y{Ljd)oWB@V6Mvtr$q|?d+8iQnFkVAHI;9}Q!%9a+r+VQwsT(os zhJoKuLlu4xq1N}Yu36Z_Y6TdI`Vo5?{lN97EBc!vjr77r|s0e@4VW4&U*jhh{c`aHwqs zxwKK2^Q0}PhyMqi?jAA@;*LPnjn4JLRe6m{ej~2pH_&Tn{6?M^7-2f}c0&F=0Aft- z_9nMUdqDOqV}`u?(V04kY?0NyUbsp>uDUCZjQJRw`Hg^&K&Kl4>PCeLrIr<>_Ia!` z5otLnR?qeNK_MdUg7`(h(ZOE0Rs6*q9Bk+ZM!ibN@u+p^`u-#80OPgqZty_b>xHYYZj8-q8|Hq4@=#MUxk7E7L^Zip z?;uvxIiCQSC4fY>z+fz?aTb=mZ8JXm#_V= z9_d-QtNcdLG~~y-8NU%TH*VsxuiqQaU0!r0FFN02mKKH#LKMQw4)Dy}5hKZXS zME)6a!8r_qWpJijgh3hTzAMCK;U22;8UXIKd5&7v9NPzL+Z5;bJuZs9k~ z62GBCk#wjrT>cJG@!Y~e0Hj^EgFZV)bWhcGg%p8=MW^S(32 zdxv1AW{5+OA^r9H&)T!8lKTxm?>8oKH{~$r+A($t&k+#>)Z_?p<*#k1?$dwiH#+Xz z@X>Q4h{(8h4^%Xl#ow8aa#J1zvG}!J>rhb^?os{k|+feRvMOnBrXE&z(hFLNfQ84Us`LvGxIXefSV zBvXsu*iX%kZmHie%lw9p@f!npQ$3JNtOk+7s0%S5ijP%g;R^E`e}O?K074F!4T3`C z$L?Xtxx8Lqs>;G0?%mSl=;Zi~UKk2aW=DnvXEn$rh{1J#p+OkFt}I-x-|(Rb>JQEJ z8w8N|$OXrwpUZiR1}%MlTxnld7Ve;q<2Rz+2F;Cmzi|cj$}vOW9cQCZ4ETo)@gR|J zm1W^Z_znK<#*Evb4j~Zo!PzK$3B~W84i#{o=DrqiMI)tCX5k+4X5p?qyJ5DT8#f?Z=B%tDXEZ{{))q@CfL4ZTVS@F%X za66XY@LTzf>qkQk*b}AWgNo-pG*+VP%fg-6-PqP`^iRjIK?Ee@f|KnYuB+9m>gvnF z{ny^c=6)kEIX9?5cFET44kxq$8msvzBAbfkH~fs>NHsU+u|X3+8qO7i4`7>C3KxEs zN>mmu!*8U#Pc=I?PLyW79x4V;Ei|o_sWA)ppJ)Cg&5d2qK$7)(s~DUYf3?-9eT`YT z#(T!xa9QU@C=!vRLmnswXST5(tTPL@mbr0)WpiIKcpt8~)!OovX5lhUZ)EZtq$#*- zb)h)iwv8C}m1g1AGB*;=kW0nlg>6Ithg!366Z#Ffo*VS+hz&)uGk(KnZILs@;?g!^ z(6wgaiklnsFi(fPQmVQ10(3&MaD73)G4pw<)1H`_8@XBp6pwed5e0l~eq-(2Am~Z% z4tb=QJh8i`80kEI!;EI(mOm?=#BYSJvDi4hR7_rnzoAt`nW9;^zLL2?!-7lPI^9)F zp4;N@#g)qL>&?Pl?l$QA%loUii(eVhU@^riz#w$nYD-v2>Pa)KzZthnvA)9!r6gnLu}oo+k4N8N>6#5E&wQ|2lo+87jDXVB~s+d8@^58QDVkl zP&buF(+;kqgS|X7H@x|?MhFi^Y$$K|@`7Jb*&++g4Nry$Wo5*I@`e`^1k=;?DJz;A z9`q4VrWImK3!_mQb1UZC@#>3yoC=?B@D*1PSF45$LJQL9UnT>8mPtM#Q@( z_W1E-pf@7o+p>pvbaVh-u9Mv54?SiHpNJl>KE3EGM5Iz14wqEv>9x9e@fyqS)v3v= z5oy|r@of8by2|QOswHO=mDMG%QGDtA*jh*6r8zUiPeVlhv3F-VuEIbRhFJh&u&}@a zgc&Um61-&(dF}o0-!Jbv6~}e-gzN_?mI{>=kg% z0;j8w^jwO7)73|Eo;|^1jD5YUf0B&B<9_Ahxx%Lu!JRtWi;v&UT&?2{#ksdW9f}_^y z6^goiM@h?O)tL?42=1=eEa;w7M%U^|7R5jDoJ}cNgLdc~A zagn%}vRzmVv_MqzCD~j?IIQC5)FfLeMvhfh3eq;?38AlPjF>%GY!-&|)oG~ctk6`2>ty?@p9EG`5V|DnXtW9aOm}Y{3 zmx!Z&67A8VvNq+QWxXWKh~O~%WXVOVhO&D}Sk|V>jFxrUM-&)1xFG76Tu7~ktm-c7 zbq__;m7~$EsHZUT2?fq84x*%Aro0xi)yfQGR#sipT#EHpcGjY}G+kAd**F-bTPf-( z4d;kJz!h;E1itS_?|lCm1VKy)006+Z_TYd70000$(Er!%2vh(7000000000000000 o0000000000000000001f0uf8)WqP&oX8-^I07*qoM6N<$f^nWS{{R30 literal 0 HcmV?d00001 diff --git a/images/ic_empty_voice.png b/images/ic_empty_voice.png new file mode 100644 index 0000000000000000000000000000000000000000..e9dac8ff01cd61daa8f9dda55c99a8eabbf7991d GIT binary patch literal 20472 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 literal 0 HcmV?d00001 diff --git a/images/ic_phone_icon.png b/images/ic_phone_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..097f6012c10efe379c6ca60cef09a7e8fca43d4c GIT binary patch literal 1092 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-s#{zspT!Hj|`hsuIFaP`Z=iQ|> zUml(M_vhE&AD{kwd-wIp**9kv{{H;($D7+<9vppra?Zcs-#=X4^!CDvx966Ax_jW` zjqUHRtpEG-%dd}5zrVcx=j-dA@9w`kI_1-?-7gOH2^4MtdW1o>B*-tA;qS9U-~GfN zv;SH>VJ$!N8B?jG&$kMkZC>o|UQ``(^U8^~*0<4#6VG-sFfem?x;Tb-9A6riUcA^q zU@PkkiROc*>pbMN()a&X7psy`+dmtC53UHZZEOY*&evyS_#9{B#- z*J=NG=FIh5Zrb--6rMOEnW|AV`}uPB;#5na_Fwe|BJSQxJp;Fxt}kzh&-OZeuxRhA za=~A#zfRgIaryV>GyCQq?4OtYtLMmTJ1%Zxm$f2=i|<^S>$CIW)q5(1PItbY*!l9w zD~HJkug`n+u$dXsb#+`s+Tt3je4?4;Y;1$ zs@?1N>U^8vs2@L5L+7F8xjP(_n*?{b zePZEWp=Qp{ciL7qce0J+7Yll5N7)!o?E|OT>*{Io-6`Q&zrm$qzrncY5D-5~AMi zzZ_6^de*14)3zq+cAFmMWxq9BDZzImW2)Bn?Xi`swv>PC+?JpHraJe~mzo7UdW)IA zYpv5;eAuhz>5Uf`4ClPrw*6ts?!|{s`hOH(vf}du*^7?Rpj_nX>gTe~DWM4fyqIQ| literal 0 HcmV?d00001 diff --git a/images/ic_record_start.png b/images/ic_record_start.png new file mode 100644 index 0000000000000000000000000000000000000000..a13d65f772fb2d4d559309bb0a6846b014e86a94 GIT binary patch literal 4221 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 ZT&3~SRL{1}b38MUsgaf8TYXf_{{cd^fJFcR literal 0 HcmV?d00001 diff --git a/images/ic_share_icon.png b/images/ic_share_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2990e538c98d7e3f0bf7918ae9ed32dff8f5f2cd GIT binary patch literal 1315 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 literal 0 HcmV?d00001 diff --git a/images/ic_user_default.png b/images/ic_user_default.png new file mode 100644 index 0000000000000000000000000000000000000000..ef30c1ed0b6ed7af440479c4de5ecdef5b6dfc9c GIT binary patch literal 1222 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&%?a=caRt)1Z{NOk>lToNfIDCS z<00sK_wGG@{1~q0?%lgUHc%~G1w`XbFhCYWW<%6N^dgHx*bozdB*dbkL#u88-Dg}9 z! zHtO)1Y1_^wF6zp>%l2#2gm0xhpAJsZ8>qUOG0pY*f~6E4iH=yp?$ zJvICH`Wb$u7ZL@V&d9Uf4qFJ zGt^5yUD&G|A=0#XO2myOJ5$~O^9lI}KRHkF6DsVN3J6xvUUdJXgNN_L4ZXb!OqMO{ z+tR(?6!JzsRM<{mPrQa)!@>Z+@O?5rNTq`7g>>SWdWdgd%}wZK z#Peluj;qW(vv{KXsUQVUR`G{Fe)uStzf9S_hF49)x>fFMPu6;+n=6zj_Le!9Y^jd=u31S%`ZE5kD^9mv5ocQaK5^n6*MOC2 zKaYM9o4tI~jra!}Up)!*zOZTGr&Fp@XD&Ov7P>n3M#`<$zR$Vm*{+Ly?%W~o7%lKA zxK<-Y)^1Dn+*AXhpU#h$89iY>y32{%xSzj7Yw@yA%(-hQO-fUzh}jU&9V+1$Jedd?ZISlo8jvU{cSQ19sWAW*WT!| zUoidKz3?tW--^tP>~)72t{A&DcR%pdc$F}DiXN}FNo2{3fQB^nU6Y;N``1-SmZZqJ zKH0xm^34kuhFHef7tZ&4zo{Bb404-y(fQPg+p{h_{S`ltuWeC~+H{WYl{J62`N>9Y zaH?)*UTUT4@@vY>9z~Pc8}=^R-*V^exoOLiBLsbK9!p`#eir=ssdt3wi_(k-22G{6 zzfP^PS|7XPqVM~h5{tbD<`&Q7|9PW&licB*t6r-Y)=n@wd75?KxuW7%-{Y1af8VZh jHvHe4p5;I=t&VXchtsLpHz!Si8J@w@)z4*}Q$iB}+q{gv literal 0 HcmV?d00001 diff --git a/images/ic_voice_record.gif b/images/ic_voice_record.gif new file mode 100644 index 0000000000000000000000000000000000000000..5cf6cd6595219fed0380aac496b532742f5855f7 GIT binary patch literal 99073 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 literal 0 HcmV?d00001 diff --git a/images/law-on.png b/images/law-on.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc6c1cc9d1e74e629e7f62227127f65d635a267 GIT binary patch literal 1961 zcmV;a2UhrrP)Px+V@X6oRA@uZT5D_^)fN7}-C`pM52?J>R-zO{14s}cq#>bk9>CGnG~_fYm1%T$PjhVS?>VMU z49&z5F$2Vyy8!&Kjr*Sf>;N#0AlQX{`({`!AB+i~xmzwoi0j@8k)J25_5ehttHc1W zf}EkXe@uvx+C6h3#BoMIZc1HIbKv`RVqOC*91h)PE$mNF*~tjNe?$~o=u9`F%i<&cO;5M9SN5tO`eOtNDqC#oD{orB8+(s zz;H<7{{UE~Gr#oq9)qr~)eu<)k<}nqCM`69{|U7A9|`u!R`NJP%vC>Dn~KK|zpYDzX)iZNdV z@H~KHI!)RT|2BXr0F&6ie+MTg=TD?EJbWzn@88&lgbx7p(AwQu)Dvq&$iTqas8q&4 zo|;9{HW+%g*a<*)i)#U#8|f?3OW&Uq$GHyV4*+}sk$dU;o72>|C=t@%e=-V%F#s2& zNsvnnc_lrsdax5?d;tCRJnzxk)6?W^ON1DshbJYWFAaDuG30IZybW~{J_X<}jd^J8 zqW|2my4n-rx=%vn>RetZ9q8S(_P)8$5Z&W-T6Y zvifxZ4>tVv0IgMNFtLRaA;#Pb;GV>2`2{>jYcFes7uUTUBF{AZZfUKXri=wdi0gg} zA`hei%O!?<1Iw2$0~Jb z11k{(B>+p()SOF<$eHy0--Tg|F{+TOQhvzD$LM+2r>Uj-X~>#2OK|w%rJQwwWc3va z7jt4_dngHE=N*yXf*ho^s)Ho98WE0j2gsi$j?OE99HQrqhmz3W--|-wg_dXUBM1gr zD(RLzmDPwaW*2}9Qz2v@^bK13P{ikO8pszQ(zw+>h#GOa!%S@yV|3T3bHo3GMeYM+ zWTc2ad$d(Bx1FA=_hwofR~CqTM+inM&!)J{M$UArL{-2Awea$r<(-ruV(|W1ZEqwA;fZ!RZLxQPT;4*)D1BdbiI2_1aoqa-ibFX?Cg}V6Y2|8jTWoFOYBRUlM0}9i zgDA69(#=(FCdMoU(0W#QQ|A|M+t#E@=267FFw?e|S<77OL1=TPSe)X-#J{pCsNNI~ zn=@9?+E=p5(+;Oep%P=XpQ*awCl*Pr&6O#TWdy+#egDl)iWOsYnf%=Ua-Lc!)j5uy zLT?9oMeLUo(K}7G(Q?>fWp3U2-?*{jI9otApD{%4r0=($f8s)>@{3lnjX4iw4@7zZ zdlr;&m z>j6(cp~tG^v|13H5~o9+AYW|PR75nQOJCm!C=_)4Usoq4-Sxs^@gk0o=ek74UNvIV z*TzvCNAE*vlcf*j`7trSNoyNBRx!h}bL)6Sv@50FN!M#XHDa1ilC{tbuKi>|N3KLH vm|JR>O_Ug2g_eSRgq|0EAuWryOMvkaM4GWr)OPdd00000NkvXXu0mjf3{0BD literal 0 HcmV?d00001 diff --git a/images/law.png b/images/law.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8f863de55f007f64be72e2481aa8c46278bef2 GIT binary patch literal 2037 zcmVPx+uSrBfRA@uRS`Ca`RTVzx&9o#1q#G55s0k_tQ4^>FRSHtA7_g12rdCWe{zauz z@40WZkOINl zp)s>ZN(XE0Z2<6<5$68@fI}im5Clg~o;*1dMNvB?eBoxL2w|=LGyv?*$o7A|Yyp6W zf*_btO8q?}MsD-Mg=jPy8@>0_xfv~VJTBq@z{B4A8333G!|>k)VK0CwR0wPB+W}xd z0Gw3@Spe`oVF2JLB1+agQber6goxw#vLFcV1Aq&PAeI5+NfCsZXT0}!hhg}y48HTG zg$QAcc?BX$CcHimi2{8NcRHQ5^?H3aE9Tfj?AWp6?B&asOD0^KHFz2J-uty-7#_@u zJ+=_Wn7xQNIUw*eh`35-{;8>{^JZsfuK|EHh$!E0$x1Y>JtCg3lzKX?ea~(zA*{9E z0)USX2zr=^Ru3aHH8r*3^y$;9gCKY_Ghc&zMh5C2*#RXj7h8xrc_e_7ec`%``y~@tAC(nfZ|S{(*YE zo;pkV@vXHyBHn>&wK`d=)t*hmX_!r>p<%6k4*>iuZ@``~h}i6OI=@Y`<~!%6nR(-o zm`9m;QfvK0UQU@a!a4U=0JxW#&l@-Bd~n2L-uq^yQaRA+bPn~ONaHwOS*cX+9wq`a zp9+Ftty1b}5qwf*gtb;SO8Wrdq9THhz&MVGhXLS8W|r;xWg~3Y5z&D-jz1Cv!Iu&7 zl=ps{*80bJI4&tf9LE<_DwTcA{H8nsO7hu6L~{o_=iL3w{7(6snIG3$Uz{iANFkha zXEC#6!u5H;OY*syi1u_vco{SQvp)_IE&1aP;zf?-yn1{w9A*{6o045JuNj{IXTCG)46iHELK{Li|M8pNvutMet zYwd>s;JYO~P#)N45%HD7PLtN!?*qUG3!N;jwQ|t;6#$%*hjAG`%zTN~`Y(g9t+i4i zmrD73L&STOQXkF3Wo~Hf+O_MPcDpSilvXFmLGEfI`oj^*jJ&_%QPZt@SSkVLRvKH2UjA-|nse?|T@m`X`f@3>fr#!OhX*?6u4iT$7SDTQW}~$pxDS|~p01oYabkaOJKZD8 z%%9X+rz#7KdO)<+ehvV3B#eFv07ty{N2F>50P7L)>N1r=#C=MscMpqUjM;;TpX%>t z<}YcjzgPq>5#omc@PR(Cf%Qf?7RzMR73Ez8uP%QgqBjhCAm`kz%$%%`r2H*#ZFTvXHA*tLF|Yvl(NqLPWXyoNtKuSi9ZckhknNjN2k1 zI-Sl7>-GA{EDzIfD@S+lz04`SY_WA#(yFxVc@=Gm*_x_?V z4CNNOkmj7bl9}g(Vdhm`(5DeGR7%Mfd0?~F9+E0{qVvN<^u0oeB|s!2b^*ZV-v7th zrY=RW(P&)QZnt04Znq!Wx^=7ky2C_RbaBMYw`r}vx>St3{W4izi-->-0B$0p6HnGh={hO0V&GHS}U~#xmE9P`-w;<;Zob25OEw& z20^fQKqT3=HWBflQcAYrr8Vc=rOcc>D?D1QR@c{RwFPy_GDyr9W=7p*O5iTZW)K9; zYPH(jym@o0C_+&bt(cgYSTtvN@7IK3`1_*bjKWz^p)$tYfrwHUtd4X-JSCaJ%mx@e;vlmIk%meKi}Wa z%-_~pOX1}?ZK*CpcJAEyqGijL$=10iOzPVtM3gZ;H;h`XR?fU#r TRp4q800000NkvXXu0mjfFgfj4 literal 0 HcmV?d00001 diff --git a/images/my-on.png b/images/my-on.png new file mode 100644 index 0000000000000000000000000000000000000000..99cb0c39a86d700dbfe6072a08f925b78c93ca09 GIT binary patch literal 868 zcmV-q1DpJbP)Px&9!W$&RA@u(nLlV$K@i5jxguC-VH&|UVxeH;KZq#tU+(S21TC}_v526Jf~An8 zw$LhI1O-bG42fj+3_?&0L`)+n2&S+Rf)EP@F~yDSD%!Fv;0VK)W7}tC&WE6n( zZbNi0q@&uHSOB?n-@#@MAjb3qC~G?zs*eG18^Fy_L)y6P0g~i3h65f$O{H>-%H>x+dAtE!GRb2jC$dP^9`G@r-mQFvRe<=L zIgu-5?S!u{6+rYUD7&woKnmc_!N61B4k>l#hIqnj4I>f%TGA zPi?0m(%bNA(aDz~vJ9em0JFsWJhbDjahU>SWlEFhKY*rNF|_~o1Y~GvCstS8leq^( z+ac1O{sg)kJ_91(K(qp2rT*Fd4p>50*Cb6%eF>e8dIFLp`v9B-(GY;X(84Woa}b#V z@Pe#;r^)FJP<^d<8NgvpfdK6SL>~A)BQ^wx@!uCOD9?x8x&UI#9*8^&-X?gt^bk1^ zqKm}*p`E%dKx!U%3}CNEi996l0bFPYu?FA|G+%2_TZpv)rP4!)T*{-Z0X3cw^ZCZO zCIA^2IE6}OHXw1HA;ZLczgDmrz!-Ng9?a8CK&{UJ4ifX%rt?6iC#(Qhst}QDWbJq} zz~9mR8s{7_A8!Tt2w=CW6PqWlzx=JQ0Wsz$fGwNnNmcn5F{fS|0se*sT%(*OX1AGa u07#NP5RGKG!&J3YA$B|0F|u~f#ry^yPai-wTjHqz0000Px&EJ;K`RA@u(m_29|K@`W|yK5}8&_=LTEEH_~0!4{msZ5B4mLe7rl$$pTmO_%+ zVs|DW7(u~O1cR~BAOyvL;x&STUT+vDEH|MzBg zX5JzM{AjI@F!ON$7zTi?`L)p}1rec*pOw*Cfs|6?0AQ}YYuVcVUkN~(ren2Q?OI6T z1z>alt+iz4)V89oc2NPcEIW;ebFQLX?4to_tq(BsOBXRdw$T8TQmBnE9q+=96%{`9RRNS3Uc*}0q_C<4!H{PwT}Vt0RXo9 z3Uc*}0q_j~ybflr;-fsoN~tOVz7x?V8*uB>s8XuRDYQgHJ3<3g`4BG>(c#bl696!2 z6EuL$BoR&7#Ic@2dAIe;1ZG~Ly+U@q4BuQpne4M6G5jaLajEIR4B6AV%H3CI~kbN;T zk4PyWxr#3ZV4U;*_(q8qvx$h8g%GcN#Fqvrl6t(@Y68HF%W5+S(CZl(6fE!BPUU?= z@oLeSf6lK(M4T5wJn^mgYQLZWp+vdF`48Yytr)id_6ST*Pj73rT4RW4dgaXku%+v} zxHpAg27s^mRopK#^HRNDpKUZ6pL|Ehc?7a7+XDb6YPH%ZGY|PD?)F2(g?79B5CEP^ zDc`unv<5J1Ju_cK#DgvgTy4#ZV??}dyGN`E;IT=$Y93^7wb=~>&|2?e=DQ`13Bf=R z@w^b?UB7^R0gQM6xW~-9L#Zee2NB-_z`1@9e*pY#;tTLW5d8q|F!O~n6^rP5pNP)( ztYFp^zO`T>Svd zd__uW8mZp^>!kWCwJ|%l5aL)5fY$mwGw+ODy+H9hFMm5zNNfFrnKuMV5If9IB3jYf z0a#B{2mt1YXtW0)P1B)zy*?4@gc)lH%=~Y)T2o1qESMa>0DoLGKr2&)mjD0&07*qo IM6N<$f*4POv;Y7A literal 0 HcmV?d00001 diff --git a/images/neighbor-on.png b/images/neighbor-on.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5b25491d2e93f9392285d8090d80a6dee777fb GIT binary patch literal 848 zcmV-W1F!svP)Px&3Q0skRA@u(nLTI}K@`XT@8TUCf{0cYf*>e|C z`y1Y*ZI52D)ucJ>@lP0%8kuaNIA zH0p~6QtBCi(H@1V$s)Q#o_DcbAns|Hnz#khdbkhN!;$JoC`oV@0b~K}1+b%Tp`Rf7 z4(1$yLrEOisG;Y`WM+`fzN4Xp}tf zMGR4a2|LaW5S4}YsR2bUEEES;>LmbIV3!gQ^YGe<9sDiIK@fdLf_h@5z6u&d zx{<=(loVKQVytA2dPqdn*=6^u2RIU_rF!X{!`wShS%V+m%b3?zi&QfUt| z83S`728<=3Hlesw+7-eK#e}g4v4XJn`?@PhPEM}H!z*J zfUyh|Mhd`v^8ICYoRc8B1mJX%u+-Uh0qC#yk1^WvX53u`+Du%W?|q;+yJpko|BjHk zsK0D;yT!g*{A#tjtUm?dI)H-MkqrZ)dtjad&i~z`Vo@unCPx&C`m*?RA@u(nLlV0K@`Tnw|53a5TliaAP9%1eZTqM z&b-?tY_cD1G9F|CDWwiE^ZB9y6VXZ-h6|qOHPf`E0tG>E$#I+jz>cB;#d?;aDDphd zTU@U%6-Y|?1i)B9VG>!lgb-IufwAfiRrbw>t3MRjW6P>0Se5z!WA-UDEJORk>) zz5^HnaIljay>RF$5#0{M@O|qYp|5~asdSN_N&!u+lGdQ9swBL zC`>SwcX4kQD0kb0A#QORt_np0%oolQs{T_2I1JIM)Fj@2BFd+C+3$ z|J86^_w)LgwjaELAV?ie9LIS9U~3!L6=s&q{9nN?Y|yH{*D_&k3n-;7F!O_qb-#&d zdTnh@R;$%twz<0zZ~aM9DRq;Xucj2ABO;mB2Hg;9n!_4MO8F7Mk(L54qbRC*p7++Y zXr6IaK#fLYe;9^eVnNFQri2h#?U$$S%-mK$@!QQ=W}a*|o72AUM}1M5g@gGG4N%U9&6&0dY*8r&KE)5(SIMm}E*mN!T2cR95K$h(c!~g&Q07*qoM6N<$ Ef`CkohX4Qo literal 0 HcmV?d00001 diff --git a/images/share_count.png b/images/share_count.png new file mode 100644 index 0000000000000000000000000000000000000000..6e2c3dcf325894a05bbf7f662fd93d835220e393 GIT binary patch literal 1023 zcmVfx>z`ROv-a$$D9=3e%(HNq-|rt}S=KDL4woU1|0Rah z7?sl?6LOX54v{)pFa}}_`%Hvo&<5Xez6J_ls8i=xz;UR9dgY!&>b3q+NHr0`GYPN= z-or2GfGbdhh~Z8IT!Rnr1{&cpJaI^)iZ~1@IMAm6o{97Me94q6p%vc3BQ3AOM%ox* zD&UhkzgHV9(2;S<0u875o*b5$!Koa|LYyy!U2uWl?eG)=Z~~q~Ezg!xjuL_i_@L(@2)2y37U&cRJ}xEWfsJP+A8EsOd9JcGNiO$gRWy9!tb=CK#t`E*#N4&BmN zf1zDJa8QLdK&2270o0AQ?42b?op=dNIDfjlynF-YIEed4XwF}=Q3NM7q-4g# zQiMneka*A4k$wmDjPiDzp3=+ngDv|U_-xr{L8FFQEo_pIGVR#40GyOlH5<-C2fuI2 znvyUHBDm19w{STJIxYKDE~38qVdhqVgbp1}hCTfK6Q`RfSM$5i5mW(kh<D zWoTyJ=L^Qr~)JzlQeiUEJT2L-1gpPg=N1BNJ^4vTFK2Kj?qOI8w`t4k=tnbKJXg$Lz^E(n_)#vuxYqyx002ovPDHLkV1l9z$>jh5 literal 0 HcmV?d00001 diff --git a/images/title-bg.png b/images/title-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e94e28e83358fb82376ba480b1ef9ce1a6540b GIT binary patch literal 2071 zcmaJ?dpMMN8y<}$QusQc#cLc|T61CsZ^mH`m}MAD%NJ$F%!`RRn1dNMvL)$U4lUb? z&!HKlbj1)W8!Pf{Y|`P9T9sOCLn*t3>U*b6`~C6x-s^qe-{HFN`+1(WJm_YLy3GL2{ql;fdcqE5-N(o zz%s-XD2X4GA%P+@LRs95WUdzvgHb3HXoVYEBuT{Jyu7@08hE@bjBu5v3uPRot59mcs6d6J zTnS$+d1A=~Y5)=M zNh5d?iHlsSh$|OBLfImh_cs@}Bv)qzff$ZVg(Unmh!-Fc34jkJgZw3PA<~xA`^e=j znF}#sNiGIX2BT~2e>Hk>3wDog`pLHN;*;?qA?$VuY-|5Lw__0q{X=xBKTA1W6&;+s z4!5?So=_nq+ZyKw)KgqvC9 z(qbB;Up@3C?Lu=_VgladSiz-stJgsZ`6avFNF@Cw|1u8SUBj|l*0)VDeCijQK`JF_ zO+~x$_~r{|34S|miV0N-*eT1Yw`0GVbOe4&h^x#@3R{2u)Gf0?pPKcPsYCm5;bq!2 z#|yf6TbQ;#dD?Uw{(Y1BeD=>VPS8qz)&ZvMV94@%%_FFwyN|zi{9@g?a$}z3Dg$g^ zvXj@rxgy+7^V!>vvTpoZRM;?M#tu!ky5a!Fl};U3_a1kwjK$N+YI=9F^?6UTE7L;q zSxsB5<%UMFw6D$k-0M+b&0$B1H6D#q+1_E8milF``?LG)&2#uCKZT612Cp6z7_!WY z=mj;JzLq;)SH;s04uvH<;bnElxp%+iWN$*YCsMDrsA|=8nyPcM zCLS>1jw;omNxwMD@dLR*Ex#SDn;W?NcF^VpePU86>}t99ZfsBZo#7)c+T5IZ^^uV^ zBXiH2+S^gfDgAGk8^p%j7ZzRMsb8WhfA}MJD0M!wlQ9~vW*J+Y)VS7tWqW?4?6CR0 zu~%D!WY6|4X1* z8kb7bC$ped6HU$Zvuhp}erS@HoxR8&4I&s*|P zf#@^W9DDFMUKQ*h%coZy1u(aC>zA zp<}^!*CO=3>NCt)8=x;=O)I)*Jh>9e4g1yICi)7}1f!pq_V{Zp7+5_2J@8&}G_&?B z;^t>1QU1@uFRwe}W8a(eJ!x12#9Fr7$y3tx&ki06+pV0fUuX;6GV!8gUtUFh#Sa}D zEzttDsj@Qoo)YODlxcOq8Sgk`c36qbY4PTf(|u+$Qm?yQG?{I4IkIwygPKvbZa`&h z?KwI92$E~i*g@r!l}~|hq}u5Vb(FBF=QI}>^-u$bGGUAUblr2i+tvI}-BnGeg;LLv*?ay2y!TiC literal 0 HcmV?d00001 diff --git a/images/view-count.png b/images/view-count.png new file mode 100644 index 0000000000000000000000000000000000000000..23bc6a3ce9fd4c438656a034991ec95e7ee0d099 GIT binary patch literal 2303 zcmaJ@dpwi-AD=od(T%f+a?DcEF|%RWSTftPGMCXYbZE9`%xurvCUdEzqf;pyDYqm_ zBzAN;>Es%4NStC!OCPzkc7>^E}_n>-~OzKHtyh{l|0E+jHA8 zT@zgx47QBsPG&%}1@xNfXhGl9D)2ot8A~ZlsV~TtMzh2K%#{O%0tlLb6$UT>7AIy; z6W|PkEk^SEm{KO)gTMv_HmrG!jZ7ed*f5y0i%i5~^8qO$6bR!9iO4s1s*wmDhluod zpxe?#Za_HCJys0(#(Mg(WBF`62kEi};VdIS0s=tFLdXP>LJ2`eM1ImGKZv}M?{88r6K|v9UUEQ6K!V$io?(tJRU!2v~3D3P*+Y=A~4A|VAE9*;w?BT*emST_ubf_K1RC?rQ)TP(#5 zPp0BrG5F1n)CDdXWJd`Ap>%=E`G<@BDtF!r0udCM42XGq0S;9R3J{;JOyGSr7ZUZW zdY`$RujgX>RW2Gz20h={|7!HY5#*lvL=?e z%iI_F!WVwOyVxtl9-z>f9?VTY(RR`>9BdwKwRzo~L5sD1M2X;WB*(q0!i8&@$Fb{< zG{^36XxMN*FW^yZOJs8WPeAL{@`yk|e&;~YK<8ll#G_-m@%fVcxOU>yb4fdXYUb+j z(9l&J`Xxr8G_KdB^c|5o7p9DK?dq)7D~IX5 z&bN#SE;!NaH5{VZdGJb8#`s2RV`f@J#lbNXtF)!R>~&)5j*lGBJJ?awJ9dWA>sk4b zjx*eGF{9g^8>q!i=vjC3Wl&A*#$jTkVC3nV-_mkCWM-tDBDX}q)9`Xga=-GMQe6}RpB z&9j2c%W2jk{j4VSM1fJ_H6KfttIitB6Mj`}d5cq#3rAMHE(*zPP9GDQ7MdsvXJ%$x zn|)Wx(3;6vzhYZ1@O3YZX*HE;<(sQ{bHa;%4opq#&(6)APE9J*oqYeEJ2^Q?554<< zWViY1n2#zNqeiKYs=M5u`ZwP!+x$QfxFn}FqCKIq_RLCTbQY;D@~k`jJhQyY=LK>+ zb<{fe=X0qF1)|mEUKxr?U7z(!W@a=>GSKz$sNt>3#QQZ<>hWt9R=<~CzRcG)EZsA= z2i_W{s8@5aZz`HL-q@-)s-c&XC=xoAc#Zcv9Bgf3FRz-gLul>Cp8>4RNL&xyM7adh897Rh4Z|Jr$MkazzX;#5_*-ot3|7 zV{8y$g`bpWz1iDWXOJYrCNtM)C!U;3Z;jPKSJcw2dL6^fR@;zog=6C5jDuZ6W&qV_ zqGMOPcw@xYX^M^7g6|9X41<*3C|YU4l13ip?B4#Clcvl0@`or)H6!EJrH@v7as_%D zrhbz*YyWKMziL-)e1NQt@@nkn^K)HIk(2&I!{KYD(}byG{SA%Z-bw6iF2!DJ|6ZZ( zo~{x1t|2=iwBKcsWYEid(FJt1-du@Me8AiCa4ydJ#`hiZ#VPO8<9g-0E1HsKl}+)2 zLuu>fwoa6Xi)XcNn|et68D5^K8y8@uZ)LjsBzzJ~A2 zkLSBL7?oQ0Jyx#CMr-E%kO?0AcV|v*ZLRD6Fw;}=iIEe_k?#|Ui6!+oVc$mpVkjK6=<$nIdOuPzufRmuSK7-PspSV?@K;? zXU4oW|1dDpd-s8+oHb(l7S9gO_EK0Vvo39QYN(w)<)iQ1y?up1jDN+~nT~nydhWx% zA56d7JUlot=%IIvAzJM0i`=hTryb*#ouek6{~&%c^=x}a3Gmn2DNV+PtT)S;H1Qup z1qL|Z;FjdmRhwGfF_*^_ADF}5rD2vG#n%naZFy-jQcxA(^BQ~xH_fFU9)C_9f2y_i zZrf0KnYz?FTzlp1UB7F>17f$x9~*r$i_}Y4>$J5pAhP&WS=(O`*nN2=v+HYM)fI-t T?AP8U^S>lCiYHl4+MW0x{pjVd literal 0 HcmV?d00001 diff --git a/packagecard/cardDetail/cardDetail.js b/packagecard/cardDetail/cardDetail.js new file mode 100755 index 0000000..05dd1b1 --- /dev/null +++ b/packagecard/cardDetail/cardDetail.js @@ -0,0 +1,339 @@ +var e = require("../../@babel/runtime/helpers/defineProperty"), t = getApp(); + +require("../../utils/util.js"); + +Page({ + data: { + preview: "", + showHide: !1, + isLoading: !1, + isMain: "", + cardPersonId: "", + choose_index: 0, + active: 0, + cardUrl: t.baseUrls.baseCardUrl, + areaList: [], + cardInfo: {}, + bgImg: "", + fontFamilyList: [], + useFontFamily: "", + cardId: "", + cardHeight: "", + shareTicket: "", + encryptedData: "", + iv: "", + isFromOut: !1, + token: "", + oldToken: "", + fromMine: !1, + imgTempSrc: "", + currentIndex: 0, + windowWidth: t.globalData.windowWidth, + scale: 1, + pageType: null + }, + tabChange: function(e) { + this.setData({ + active: e.detail + }), 0 == this.data.active || (1 == this.data.active ? 1 == t.globalData.servicePageType ? wx.redirectTo({ + url: "/pages/shop/catalog/bannerlist/bannerlist" + }) : 2 == t.globalData.servicePageType ? wx.redirectTo({ + url: "/pages/shop/catalog/column/column" + }) : 3 == t.globalData.servicePageType ? wx.redirectTo({ + url: "/pages/shop/catalog/list/list" + }) : 4 == t.globalData.servicePageType && wx.redirectTo({ + url: "/pages/shop/bespeak/bespeak" + }) : wx.redirectTo({ + url: "/pages/mine/index/index" + })); + }, + createMyCard: function() { + var e = this; + wx.showLoading({ + title: "生成中...", + success: function() { + e.setData({ + isLoading: !0 + }); + } + }); + for (var a = { + pictureTemplateId: e.data.cardId, + cardTemplateUseAreaList: [] + }, r = 0; r < e.data.areaList.length; r++) if ("1" != e.data.areaList[r].templateAreaType) { + var o = { + cardTemplateUseId: "", + picturesTemplateAreaId: e.data.areaList[r].picturesTemplateAreaId, + templateAreaFile: e.data.areaList[r].templateAreaFile, + templateAreaFontValue: e.data.areaList[r].templateAreaFontValue + }; + a.cardTemplateUseAreaList.push(o); + } + t.http.post(t.urls.creatCard, { + data: a, + header: { + token: t.globalData.token + } + }).then(function(t) { + console.log(t), "200" == t.statusCode && e.getMineCardList(); + }).catch(function(t) { + e.setData({ + isLoading: !1, + showHide: !1 + }); + }); + }, + getMineCardList: function() { + var e = this; + t.http.get(t.urls.getMyCard, { + header: { + token: t.globalData.token + }, + data: {} + }).then(function(t) { + e.setData({ + cardList: t.data + }), t.data.length > 0 && (e.setDefaultCard(t.data[0].cardTemplateUseId), console.log(e.data.pageType), + "org" == e.data.pageType ? e.saveOrgCard(t.data[0].cardTemplateUseId) : e.saveCardIdToSyzl(t.data[0].cardTemplateUseId)); + }).catch(function(t) { + wx.hideLoading({}), e.setData({ + isLoading: !1, + showHide: !1 + }); + }); + }, + saveCardIdToSyzl: function(e) { + console.log("设置网格员名片" + e); + var a = this; + t.restAjax.put(t.restAjax.path(t.apis.doUpdateCard, [ t.baseUrls.requestUrl, a.data.id ]), { + cardSysId: e + }, { + headers: { + token: t.globalData.token + } + }, function(e, t) { + console.log(e), console.log(t), "200" == e && a.onShowHintDialog(); + }, function(e, t) { + wx.hideLoading({}), wx.showToast({ + icon: "none", + title: "设置名片失败" + }), console.log(e), console.log(t); + }); + }, + saveOrgCard: function(e) { + var a = this; + t.restAjax.put(t.restAjax.path(t.apis.doUpdateOrg, [ t.baseUrls.requestUrl, a.data.id ]), { + cardSysId: e + }, { + headers: { + token: t.globalData.token + } + }, function(e, t) { + "200" == e && a.onShowHintDialog(); + }, function(e, t) { + wx.hideLoading({}), wx.showToast({ + icon: "none", + title: "设置名片失败" + }), console.log(t); + }); + }, + setDefaultCard: function(e) { + t.http.put(t.urls.setDefaultCard.format({ + cardTemplateUseId: e + }), { + header: { + token: t.globalData.token + } + }).then(function(e) {}).catch(function(e) {}); + }, + onShowHintDialog: function() { + var e = this; + wx.hideLoading({ + success: function(t) { + e.setData({ + isLoading: !1 + }), wx.showModal({ + content: "恭喜您名片创建成功,如需查看请到(我的 → 我的卡包)", + cancelText: "继续创建", + confirmText: "返回列表", + cancelColor: "#333333", + confirmColor: "#333333", + success: function(t) { + t.confirm ? e.backList() : e.continueCreate(); + } + }); + } + }); + }, + inputBlur: function(e) { + var t = e.detail.value, a = e.currentTarget.dataset.num, r = e.currentTarget.dataset.item, o = r.templateAreaFontLength; + "" != t && o > 0 && (t = t.substr(0, o), this.data.areaList[a].templateAreaFontValue = t, + this.data.areaList[a].focus = !1, this.setData({ + areaList: this.data.areaList + })), "1" != r.templateAreaServerLink && this.getFileId(a); + }, + choosePhoto: function(e) { + var t = e.currentTarget.dataset.cur, a = e.currentTarget.dataset.item; + console.log(t), this.setData({ + currentIndex: t + }); + var r = a.templateAreaWidth / a.templateAreaHeight; + wx.chooseImage({ + count: 1, + sourceType: [ "album", "camera" ], + success: function(e) { + wx.navigateTo({ + url: "/packagecard/common/corpperimg/cropperimg?imgSrc=" + e.tempFiles[0].path + "&scale=" + r + }); + } + }); + }, + doUploadImg: function(a) { + var r = this; + wx.showLoading({ + title: "上传中..." + }), t.http.upload(t.urls.doUploadImg, { + path: a, + name: "image", + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), t = JSON.parse(t); + var a = "areaList[" + r.data.currentIndex + "].templateAreaFile"; + r.setData(e({}, a, t.data)), wx.showToast({ + title: "上传成功", + duration: 1500 + }), r.setData({ + imgTempSrc: "", + currentIndex: 0 + }); + }).catch(function(e) { + r.setData({ + imgTempSrc: "", + currentIndex: 0 + }); + }); + }, + getNameCard: function() { + var e = this; + e.data.fromMine && e.data.cardPersonId, t.http.get(t.urls.getCardDetail.format({ + cardTemplateId: e.data.cardId + }), { + header: { + token: t.globalData.token + }, + data: {} + }).then(function(t) { + var a = t.data.areaList, r = t.data.picturesTemplateWidth / e.data.windowWidth; + t.data.picturesTemplateWidth = t.data.picturesTemplateWidth / r, t.data.picturesTemplateHeight = t.data.picturesTemplateHeight / r; + for (var o = 0; o < a.length; o++) "1" == a[o].templateAreaFontCenter ? a[o].templateAreaFontCenter = "left" : "2" == a[o].templateAreaFontCenter ? a[o].templateAreaFontCenter = "center" : a[o].templateAreaFontCenter = "right", + "0" == a[o].templateAreaFontBold ? a[o].templateAreaFontBold = "normal" : "1" == a[o].templateAreaFontBold ? a[o].templateAreaFontBold = "bold" : a[o].templateAreaFontStyle = "italic", + a[o].templateAreaFontSize = a[o].templateAreaFontSize / r + "px", a[o].templateAreaHeight = a[o].templateAreaHeight / r, + a[o].templateAreaWidth = a[o].templateAreaWidth / r, a[o].templateAreaDown = a[o].templateAreaDown / r, + a[o].templateAreaTop = a[o].templateAreaTop / r, a[o].templateAreaRight = a[o].templateAreaRight / r, + a[o].templateAreaLeft = a[o].templateAreaLeft / r; + e.setData({ + cardInfo: t.data, + areaList: a + }); + }).catch(function(e) {}); + }, + getNameCradArea: function() { + var e = this, a = []; + t.restAjax.get(t.restAjax.path("{cardUrl}app/cardtemplatearea/listcardtemplateareabytemplateid/" + e.data.cardId, [ t.tradeUrl ]), {}, { + headers: { + token: t.globalData.token + } + }, function(t, r) { + for (var o = 0; o < r.length; o++) if (r[o].focus = !1, "1" != r[o].templateAreaType) a.push(r[o]); else { + var n = parseInt(r[o].templateAreaFontSize.replace("px", "")); + n = Math.floor(750 * n / wx.getSystemInfoSync().windowWidth) + "rpx", r[o].templateAreaFontSize = n, + a.push(r[o]); + } + e.setData({ + areaList: a + }); + }, function(e, a) { + t.dialog.msg(a.msg); + }); + }, + editInfo: function(t) { + var a = t.currentTarget.dataset.num, r = t.detail.value, o = "areaList[" + a + "].templateAreaFontValue"; + this.setData(e({}, o, r)); + }, + giveFocus: function(t) { + console.log(t.currentTarget.dataset.cur); + var a = "areaList[" + t.currentTarget.dataset.cur + "].focus"; + this.setData(e({}, a, !0)); + }, + continueCreate: function() { + this.setData({ + showHide: !1 + }); + }, + backList: function() { + wx.navigateBack({ + delta: 1 + }); + }, + getUserInfo: function() { + t.restAjax.get(t.restAjax.path("{loginUrl}app/user/get-app-user", [ t.personIntroUrl ]), {}, { + headers: { + token: t.globalData.token + } + }, function(e, a) { + t.globalData.userInfo = a; + }, function(e, a) { + t.dialog.msg(a.msg); + }); + }, + getFileId: function(a) { + var r = this, o = a, n = r.data.areaList[o].templateAreaFontValue; + console.log(n); + var i = r.data.areaList[o].picturesTemplateAreaId; + t.http.get(t.urls.getFileId.format({ + picturesTemplateAreaId: i + }), { + header: { + token: t.globalData.token + }, + data: { + content: n + } + }).then(function(t) { + console.log(t.data); + var a = "areaList[" + o + "].templateAreaFile"; + r.setData(e({}, a, t.data.data)); + }).catch(function(e) {}); + }, + onLoad: function(e) { + this.setData({ + cardId: e.id, + token: t.globalData.token, + pageType: e.type, + id: e.taskId + }), this.getNameCard(); + }, + postRecord: function(e) { + t.restAjax.post(t.restAjax.path("{loginUrl}app/cardtemplateforwardingrecord/savecardtemplateforwardingrecord", [ t.tradeUrl ]), { + encryptedData: e.encryptedData, + iv: e.iv, + templateUseId: this.data.cardId, + templateFromUserId: this.data.oldToken, + templateToUserId: this.data.token + }, { + headers: { + token: this.data.token + } + }, function(e, t) { + console.log("1" + t); + }, function(e, a) { + t.dialog.msg(a.msg); + }); + }, + openPage: function() {}, + onShow: function() { + console.log(this.data.imgTempSrc), "" != this.data.imgTempSrc && this.doUploadImg(this.data.imgTempSrc); + } +}); \ No newline at end of file diff --git a/packagecard/cardDetail/cardDetail.json b/packagecard/cardDetail/cardDetail.json new file mode 100644 index 0000000..df4a807 --- /dev/null +++ b/packagecard/cardDetail/cardDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "创建名片" +} \ No newline at end of file diff --git a/packagecard/cardDetail/cardDetail.wxml b/packagecard/cardDetail/cardDetail.wxml new file mode 100755 index 0000000..bc72bbc --- /dev/null +++ b/packagecard/cardDetail/cardDetail.wxml @@ -0,0 +1,55 @@ + + + + {{item.templateAreaFontValue}} + + + + + {{item.templateAreaFontValue}} + + + + + + 适用行业:{{cardInfo.templateIndustryName}} + + + + + + {{item.templateAreaName}} + 最多输入{{item.templateAreaFontLength}}个字符 + + + + + + + + + + {{item.templateAreaName}} + 最多输入1张图片 + + + + + + + + + + + + + + + 创建成功 + 恭喜您名片创建成功,如需查看请到(我的 → 我的卡包) + + 继续创建 + 返回模板 + + + diff --git a/packagecard/cardDetail/cardDetail.wxss b/packagecard/cardDetail/cardDetail.wxss new file mode 100755 index 0000000..4f9bee1 --- /dev/null +++ b/packagecard/cardDetail/cardDetail.wxss @@ -0,0 +1,215 @@ +.card { + box-sizing: border-box; + height: 0; + position: relative; + width: 100%; + z-index: 100; +} + +.card-bgImg { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.area-box { + background: none!important; + white-space: nowrap; + z-index: 111; +} + +.area-box image { + height: 100%; + width: 100%; +} + +.card-info { + margin-top: 15rpx; + padding-bottom: 100rpx; + width: 100%; +} + +.card-title { + background: #fff; + font-size: 30rpx; + padding: 15rpx; + width: 100%; +} + +.row { + background: #fff; +} + +.row,.row-ver { + border-bottom: 1rpx solid #f5f5f5; + display: flex; +} + +.row-ver { + background-color: #fff; + flex-direction: column; + padding: 15rpx; +} + +.row-ver:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.row-ver:last-child { + padding: 7.5rpx 15rpx 15rpx; +} + +.item-title { + color: grey; + flex: 1; + font-size: 32rpx; + line-height: 50rpx; +} + +.item-title-box { + flex-direction: row; + justify-content: space-between; + margin-top: 7.5rpx; +} + +.item-input,.item-title-box { + align-items: center; + display: flex; +} + +.item-input { + box-sizing: border-box; + flex: 4; + margin-top: 15rpx; +} + +.item-input input { + color: #333; + font-size: 32rpx; + height: 50rpx; + text-align: left; + width: 100%; +} + +.item-input image { + max-width: 70%; +} + +.item-code-input image { + max-height: 160rpx; + max-width: 35%; +} + +.hide-link { + background: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1000; +} + +.hide { + background: #fff; + border-radius: 10rpx; + flex-direction: column; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 60%; +} + +.hide,.hide-btn { + align-items: center; + display: flex; + justify-content: center; +} + +.hide-btn { + background: #1d7ff0; + border-bottom-left-radius: 10rpx; + border-bottom-right-radius: 10rpx; + color: #fff; + font-size: 30rpx; + height: 60rpx; + width: 50%; +} + +.hide-btn:nth-child(1) { + background: #e6b980; + border-bottom-left-radius: 10rpx; + border-bottom-right-radius: 0rpx; +} + +.hide-btn:last-child { + border-bottom-left-radius: 0rpx; + border-bottom-right-radius: 10rpx; +} + +.hide-text { + color: #000; + font-size: 36rpx; + padding: 50rpx 30rpx; +} + +.hide-title { + color: #ffc107; + font-size: 43rpx; + padding: 10rpx; +} + +.hide-btn-box { + display: flex; + justify-content: space-between; + width: 100%; +} + +.input-box { + width: 100%; +} + +.content-box { + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + padding: 15rpx; + width: 100%; +} + +.cuIcon-cameraadd { + font-size: 60rpx; +} + +.card-img-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-between; + margin-right: 40rpx; +} + +.card-img-box image { + height: 200rpx; + width: 200rpx; +} + +.hint-txt { + color: #fd9494; + font-size: 24rpx; + text-align: right; +} + +.wrap-line { + white-space: pre-line; +} + +.wrap-center { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} \ No newline at end of file diff --git a/packagecard/cardList/cardList.js b/packagecard/cardList/cardList.js new file mode 100755 index 0000000..bba00b7 --- /dev/null +++ b/packagecard/cardList/cardList.js @@ -0,0 +1,152 @@ +var e = getApp(); + +Page({ + data: { + imgUrl: e.baseUrls.baseCardUrl, + cardList: [], + currentIndex: 0, + optionsList: [], + isNeedPay: !1, + needPayPrice: 0, + needPayTeamPrice: 0, + curTypeId: "", + isRefreshing: !1, + isRefresh: !1, + isShowCodeInput: !1, + code: "", + contentHeight: e.globalData.windowHeight, + pageType: null, + id: "" + }, + onLoad: function(e) { + this.setData({ + pageType: e.type, + id: e.id + }); + }, + onShow: function() { + this.dorefreshList(); + }, + dorefreshList: function() { + this.setData({ + isRefresh: !1, + isRefreshing: !0, + cardList: [] + }), this.getPayState(); + }, + getOptionsList: function() { + var t = this; + wx.showLoading({ + title: "加载中..." + }), e.http.get(e.urls.getDictionaryList.format({ + dataParentId: "4bf68c60-eac5-480d-b5e1-15203d0282f9" + }), { + header: { + token: e.globalData.token + } + }).then(function(e) { + wx.hideLoading({}), e.data.length > 0 && (t.setData({ + optionsList: e.data, + curTypeId: e.data[t.data.currentIndex].dataId + }), t.getList()); + }).catch(function(e) { + console.log(e), t.setData({ + isRefreshing: !1 + }); + }); + }, + getList: function() { + var t = this; + wx.showLoading({ + title: "加载中..." + }), e.http.get(e.urls.getCardList, { + header: { + token: e.globalData.token + }, + data: { + templateType: t.data.curTypeId, + page: "1", + rows: "2" + } + }).then(function(e) { + wx.hideLoading({}), e.data.forEach(function(e) { + e.picturesTemplateNumber > 1e3 && e.picturesTemplateNumber < 1e4 ? e.number = e.picturesTemplateNumber / 1e3 + "K+" : e.picturesTemplateNumber > 1e4 && e.picturesTemplateNumber < 1e6 ? e.number = e.picturesTemplateNumber / 1e4 + "W+" : e.number = e.picturesTemplateNumber; + }), t.setData({ + cardList: e.data, + isRefreshing: !1 + }); + }).catch(function(e) { + wx.hideLoading({}), t.setData({ + isRefreshing: !1 + }); + }); + }, + goDetail: function(e) { + var t = e.currentTarget.dataset.id, a = e.currentTarget.dataset.ispay, i = e.currentTarget.dataset.price, n = e.currentTarget.dataset.paystate; + this.data.isNeedPay ? wx.navigateTo({ + url: "/packagecard/paypage/paypage?price=" + this.data.needPayPrice + "&teamprice=" + this.data.needPayTeamPrice + "&displayTreaty=1&type=1" + }) : "1" == a ? n ? wx.navigateTo({ + url: "../cardDetail/cardDetail?id=" + t + "&type=" + this.data.pageType + "&taskId=" + this.data.id + }) : wx.navigateTo({ + url: "/packagecard/paypage/paypage?price=" + i + "&type=2" + }) : wx.navigateTo({ + url: "../cardDetail/cardDetail?id=" + t + "&type=" + this.data.pageType + "&taskId=" + this.data.id + }); + }, + onChange: function(e) { + this.setData({ + currentIndex: e.detail.index, + curTypeId: this.data.optionsList[e.detail.index].dataId, + cardList: [] + }), this.getList(); + }, + getPayState: function() { + var t = this; + wx.showLoading({ + title: "加载中..." + }), e.http.get(e.urls.getPayState, { + header: { + token: e.globalData.token + } + }).then(function(e) { + wx.hideLoading({}), console.log(e.data), t.setData({ + isNeedPay: !1, + needPayPrice: e.data.cardChargePrice, + needPayTeamPrice: e.data.cardChargeDepartmentPrice + }), t.getOptionsList(); + }).catch(function(e) { + t.setData({ + isRefreshing: !1 + }); + }); + }, + onPullDownRefresh: function() { + this.getList(); + }, + onClose: function(e) { + this.setData({ + isShowCodeInput: !1 + }); + }, + inpuWatch: function(e) { + this.setData({ + code: e.detail.value + }); + }, + codeCreate: function(e) { + "" == this.data.code ? wx.showToast({ + title: "请输入邀请码", + icon: "none" + }) : wx.navigateTo({ + url: "/packagecard/paypage/paypage?price=" + this.data.needPayPrice + "&teamprice=" + this.data.needPayTeamPrice + "&displayTreaty=1&type=1&code=" + this.data.code + }); + }, + noCodeCreate: function(e) { + wx.navigateTo({ + url: "/packagecard/paypage/paypage?price=" + _self.data.needPayPrice + "&teamprice=" + _self.data.needPayTeamPrice + "&displayTreaty=1&type=1" + }); + }, + loadMore: function() { + console.log("触底了"); + } +}); \ No newline at end of file diff --git a/packagecard/cardList/cardList.json b/packagecard/cardList/cardList.json new file mode 100644 index 0000000..d9c0bcc --- /dev/null +++ b/packagecard/cardList/cardList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "模板选择" +} \ No newline at end of file diff --git a/packagecard/cardList/cardList.wxml b/packagecard/cardList/cardList.wxml new file mode 100755 index 0000000..e82c4a7 --- /dev/null +++ b/packagecard/cardList/cardList.wxml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + ¥ {{item.templatePrice}} + + + 免费 + + + + + + 使用次数:{{item.number}} + + + + + + + + + + + + + 邀请码 + + + + + + + + diff --git a/packagecard/cardList/cardList.wxss b/packagecard/cardList/cardList.wxss new file mode 100755 index 0000000..9d7b63e --- /dev/null +++ b/packagecard/cardList/cardList.wxss @@ -0,0 +1,122 @@ +.card { + background: #fff; + border-radius: 10rpx; + box-shadow: 0 0 20rpx #eee; + margin: 0rpx 0rpx 15rpx; + padding: 15rpx; + width: 100%; +} + +.card:nth-child(1) { + padding: 0rpx 0rpx 7.5rpx; +} + +.card:last-child { + padding: 7.5rpx 0rpx 15rpx; +} + +.card-img { + border-radius: 10rpx; + height: 400rpx; + margin-top: 15rpx; + position: relative; + width: 100%; +} + +.card-name { + font-size: 36rpx; + padding: 15rpx 0rpx 0rpx 15rpx; +} + +.price-box { + left: 0rpx; + position: absolute; + top: 0rpx; + z-index: 3; +} + +.price-box,.price-box image { + height: 128rpx; + width: 128rpx; +} + +.price-text { + color: #fff; + left: 45%; + top: 25%; + transform: rotate(45deg); +} + +.price,.price-text { + font-size: 32rpx; + position: absolute; + z-index: 3; +} + +.price { + color: #ff0; + left: 65rpx; + top: -20rpx; + transform: rotate(-45deg) translate(-50%,-50%); + width: 100%; +} + +.number-box { + bottom: 0rpx; + height: 128rpx; + position: absolute; + right: 0rpx; + width: 128rpx; +} + +.number-box image { + border-radius: 0rpx; + height: 100%; + margin-top: 0rpx; + width: 100%; +} + +.number-content { + color: #fff; + font-size: 18rpx; + position: absolute; + right: -70rpx; + text-align: center; + top: 30rpx; + transform: rotate(-45deg) translate(-50%,-50%); + width: 100%; +} + +.code-box { + display: flex; + flex-direction: column; + height: 100%; + justify-content: space-between; + width: 100%; +} + +.code-box input { + background-color: #f2f2f2; + border: 1rpx solid #f2f2f2; + border-radius: 10rpx; + font-size: 28rpx; + height: 80rpx; + line-height: 80rpx; + text-align: center; + width: 95%; +} + +.code-box .code-title { + color: var(--yellowLight); + font-size: 38rpx; + margin-top: 15rpx; + padding-bottom: 15rpx; + text-align: center; +} + +.code-box .btns { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-between; +} \ No newline at end of file diff --git a/packagecard/common/corpperimg/cropperimg.js b/packagecard/common/corpperimg/cropperimg.js new file mode 100755 index 0000000..9cf3273 --- /dev/null +++ b/packagecard/common/corpperimg/cropperimg.js @@ -0,0 +1,58 @@ +getApp(); + +Page({ + data: { + imgSrc: "", + scale: 1, + src: "", + width: 250, + height: 250 + }, + onLoad: function(e) { + wx.setNavigationBarTitle({ + title: "图片裁剪" + }), this.cropper = this.selectComponent("#image-cropper"), this.setData({ + src: e.imgSrc + }), wx.showLoading({ + title: "加载中" + }); + }, + cropperload: function(e) { + console.log("cropper初始化完成"); + }, + loadimage: function(e) { + console.log("图片加载完成", e.detail), wx.hideLoading(), this.cropper.imgReset(); + }, + clickcut: function(e) { + console.log(e.detail); + var t = getCurrentPages(); + (t.length >= 2 ? t[t.length - 2] : void 0).setData({ + imgTempSrc: e.detail.url + }), wx.navigateBack({}); + }, + cropperDone: function(e) { + var t = e.detail, o = t.src, a = (t.cropperData, getCurrentPages()); + (a.length >= 2 ? a[a.length - 2] : void 0).setData({ + imgTempSrc: o + }); + }, + cropperCancel: function() { + wx.navigateBack({}); + }, + doCropperDone: function(e) { + var t = getCurrentPages(); + (t.length >= 2 ? t[t.length - 2] : void 0).setData({ + imgTempSrc: e + }), wx.navigateBack({}); + }, + cropperFail: function(e) { + e.detail; + console.log(e), wx.showToast({ + title: "裁剪失败,请重试", + icon: "none", + success: function() { + wx.navigateBack({}); + } + }); + } +}); \ No newline at end of file diff --git a/packagecard/common/corpperimg/cropperimg.json b/packagecard/common/corpperimg/cropperimg.json new file mode 100644 index 0000000..804c9e6 --- /dev/null +++ b/packagecard/common/corpperimg/cropperimg.json @@ -0,0 +1,26 @@ +{ + "usingComponents": { + "image-cropper": "/vant/dist/cropper/index", + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "disableScroll": true +} \ No newline at end of file diff --git a/packagecard/common/corpperimg/cropperimg.wxml b/packagecard/common/corpperimg/cropperimg.wxml new file mode 100755 index 0000000..4c3739d --- /dev/null +++ b/packagecard/common/corpperimg/cropperimg.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packagecard/common/corpperimg/cropperimg.wxss b/packagecard/common/corpperimg/cropperimg.wxss new file mode 100755 index 0000000..e69de29 diff --git a/packagecard/moments/edit/momentedit.js b/packagecard/moments/edit/momentedit.js new file mode 100755 index 0000000..6481a00 --- /dev/null +++ b/packagecard/moments/edit/momentedit.js @@ -0,0 +1,846 @@ +var t = require("../../../@babel/runtime/helpers/defineProperty"), a = getApp(), e = wx.getRecorderManager(), i = wx.createInnerAudioContext(), s = requirePlugin("chooseLocation"), n = { + latitude: 39.89631551, + longitude: 116.323459711 +}; + +Page({ + data: { + uploadCount: 0, + uploadVideoCount: 0, + currentIndex: 0, + columnId: "", + uId: "", + fieldList: [], + textList: [], + textareaList: [], + audioList: [], + videoList: [], + photoList: [], + linkList: [], + locationList: [], + isShowText: !1, + isShowDesc: !1, + isShowPhoto: !1, + isShowLink: !1, + isShowAudio: !1, + isShowVideo: !1, + isShowTags: !1, + isShowType: !1, + tempText: "", + tempDesc: "", + linkStr: "", + map: null, + waitFlag: !1, + isStartRecord: !1, + speck_time: 0, + speedStep: 5, + setInter: "", + currentItem: void 0, + isAuthAudio: !1, + title: "栏目内容修改", + curLat: 0, + curLng: 0, + isRecording: !1, + maxDuration: 60, + displayType: [ { + name: "九宫格", + id: 1 + }, { + name: "轮播", + id: 2 + }, { + name: "轮播(自动)", + id: 3 + }, { + name: "平铺", + id: 4 + } ], + selDisplayType: 1, + displayTypeStr: "九宫格" + }, + onLoad: function(t) { + this.setData({ + columnId: t.id, + uId: t.uid, + title: t.title + "修改" + }), wx.setNavigationBarTitle({ + title: t.title + "修改" + }); + this.checkPermission(), this.getMomentContent(); + }, + getMomentContent: function() { + wx.showLoading({ + title: "加载中..." + }); + var t = this; + a.http.get(a.urls.getMomentsContent.format({ + configColumnId: t.data.columnId, + uid: t.data.uId + }), { + header: { + token: a.globalData.token + } + }).then(function(a) { + wx.hideLoading({}), t.buildDetail(a.data); + }).catch(function(t) { + wx.hideLoading({}), console.log(t); + }); + }, + buildDetail: function(t) { + var e = this; + t.list.forEach(function(t) { + switch (t.dataType) { + case "2": + var i = t.value.split("@"), s = i[0].split(","); + if (i.length > 1) switch (i[1]) { + case "1": + e.setData({ + selDisplayType: "1", + displayTypeStr: "九宫格" + }); + break; + + case "2": + e.setData({ + selDisplayType: "2", + displayTypeStr: "轮播" + }); + break; + + case "3": + e.setData({ + selDisplayType: "3", + displayTypeStr: "轮播(自动)" + }); + break; + + case "4": + e.setData({ + selDisplayType: "4", + displayTypeStr: "平铺" + }); + } + var n = []; + s.forEach(function(t) { + if (t.length > 0) { + var e = { + id: t, + path: a.baseUrls.baseCardUrl + t + }; + n.push(e); + } + }), t.valueList = n; + break; + + case "4": + s = t.value.split(","), n = []; + for (var o = 0; o < s.length; o++) if (s[o].length > 0) { + var d = s[o].split("&"), r = a.baseUrls.baseCardUrl + d[0], l = a.baseUrls.baseCardUrl + d[1], u = { + id: d[0], + thumbId: d[1], + path: r, + imgPath: l + }; + n.push(u); + } + t.valueList = n; + break; + + case "3": + s = t.value.split(","), n = []; + s.forEach(function(t) { + if (t.length > 0) { + var e = t.split("&"), i = "00:00", s = 100; + if (e.length > 1) { + var o = e[1]; + s = o; + var d = parseInt(o / 60), r = parseInt(o % 60); + i = (d > 9 ? d : "0" + d) + ":" + (+r > 9 ? r : "0" + r); + } + var l = { + id: e[0], + path: a.baseUrls.baseCardUrl + e[0], + isPlay: !1, + duration: s, + curDuation: 0, + curDurationStr: "00:00", + totalDurationStr: i + }; + n.push(l); + } + }), t.valueList = n; + break; + + case "6": + s = t.value.split("-"), n = []; + s.forEach(function(t) { + if (t.length > 0) { + var a = t.split(","), e = { + name: "", + address: "", + latitude: a[0], + longitude: a[1] + }; + n.push(e); + } + }), t.valueList = n; + break; + + case "8": + t.dictionariesList.forEach(function(a) { + -1 != t.value.indexOf(a.dataId) && (t.selValue = a.dataName); + }); + break; + + case "9": + var c = ""; + t.dictionariesList.forEach(function(a) { + -1 != t.value.indexOf(a.dataId) ? (c += a.dataName + ",", a.isSel = !0) : a.isSel = !1; + }), c = c.substr(0, c.length - 1), t.selValue = c; + } + }), e.setData({ + fieldList: t.list + }); + }, + showMutliSel: function(t) { + this.setData({ + isShowTags: !0, + currentIndex: t.currentTarget.dataset.index + }); + }, + pickerChange: function(t) { + var a = t.currentTarget.dataset.index, e = t.detail.value; + this.data.fieldList[a].index = e, this.data.fieldList[a].value = this.data.fieldList[a].dictionariesList[e].dataId, + this.data.fieldList[a].selValue = this.data.fieldList[a].dictionariesList[e].dataName, + this.setData({ + fieldList: this.data.fieldList + }); + }, + inputText: function(t) { + var a = t.currentTarget.dataset.index; + this.data.fieldList[a].value = t.detail.value, this.setData({ + fieldList: this.data.fieldList + }); + }, + checkPermission: function() { + var t = this; + wx.getSetting({ + success: function(a) { + var e = a.authSetting["scope.record"]; + void 0 === e ? wx.authorize({ + scope: "scope.record", + success: function() { + t.setData({ + isAuthAudio: !0 + }); + }, + fail: function() { + t.setData({ + isAuthAudio: !1 + }); + } + }) : e || t.openSetting(); + } + }); + }, + openSetting: function() { + wx.showModal({ + title: "提示", + content: "发布内容需要您授权录音权限.", + success: function(t) { + t.confirm && wx.openSetting({ + withSubscriptions: !0 + }); + } + }); + }, + onShow: function() { + if (null != s.getLocation()) { + var t = this.data.fieldList[this.data.curMapIndex]; + t.valueList.length < t.maxCount && (this.data.fieldList[this.data.curMapIndex].valueList.push(s.getLocation()), + this.setData({ + fieldList: this.data.fieldList + })); + } + var a = this; + wx.getSetting({ + withSubscriptions: !0, + success: function(t) { + var e = t.authSetting["scope.record"]; + a.setData({ + isAuthAudio: e + }); + } + }); + }, + onUnload: function() { + s.setLocation(null), this.setData({ + map: null + }); + }, + chooseVideo: function(t) { + var a = this, e = t.currentTarget.dataset.item, i = e.maxCount - e.valueList.length, s = t.currentTarget.dataset.index; + wx.chooseMedia({ + count: Number.parseInt(i), + mediaType: [ "video" ], + sourceType: [ "camera", "album" ], + maxDuration: 60, + success: function(t) { + t.tempFiles.length > 0 && (t.tempFiles[0].duration <= a.data.maxDuration ? a.doUploadVideo(s, t.tempFiles, a.data.uploadVideoCount) : wx.showToast({ + title: "视频最长60秒", + icon: "none" + })); + }, + fail: function(t) {} + }); + }, + doUploadVideo: function(t, e, i) { + wx.showLoading({ + title: "上传中..." + }); + var s = this, n = e.length; + s.data.uploadVideoCount < n ? a.http.upload(a.urls.doUploadVideo, { + path: e[s.data.uploadVideoCount].tempFilePath, + name: "video", + header: { + token: a.globalData.token + } + }).then(function(a) { + wx.hideLoading({}); + var i = JSON.parse(a).data; + s.doUploadVideoImg(t, i, e, s.data.uploadVideoCount); + }).catch(function(a) { + wx.hideLoading({}), s.setData({ + uploadVideoCount: ++s.data.uploadVideoCount + }), s.doUploadVideo(t, e, s.data.uploadVideoCount); + }) : (wx.hideLoading({}), s.setData({ + uploadVideoCount: 0 + })); + }, + doUploadVideoImg: function(t, e, i, s) { + wx.showLoading({ + title: "上传中..." + }); + var n = this; + a.http.upload(a.urls.doUploadImg, { + path: i[n.data.uploadVideoCount].thumbTempFilePath, + name: "image", + header: { + token: a.globalData.token + } + }).then(function(s) { + console.log(s), wx.hideLoading({}); + var o = a.baseUrls.baseCardUrl + e, d = a.baseUrls.baseCardUrl + JSON.parse(s).data, r = JSON.parse(s).data, l = { + id: e, + thumbId: r, + path: o, + imgPath: d + }; + n.data.fieldList[t].valueList.push(l), n.setData({ + fieldList: n.data.fieldList + }), n.setData({ + uploadVideoCount: ++n.data.uploadVideoCount + }), n.doUploadVideo(t, i, n.data.uploadVideoCount); + }).catch(function(a) { + console.log(a), wx.hideLoading({}), n.setData({ + uploadVideoCount: ++n.data.uploadVideoCount + }), n.doUploadVideo(t, i, n.data.uploadVideoCount); + }); + }, + viewVideo: function(t) { + var a = [ { + url: t.currentTarget.dataset.url, + type: "video" + } ]; + wx.previewMedia({ + sources: a, + current: 0, + showmenu: !1 + }); + }, + delVideo: function(t) { + var a = this, e = t.currentTarget.dataset.index, i = t.currentTarget.dataset.idx; + wx.showModal({ + title: "提示", + content: "确定要删除该视频吗?", + cancelText: "取消", + confirmText: "确定", + success: function(t) { + t.confirm && (a.data.fieldList[e].valueList.splice(i, 1), a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + addLink: function() { + for (var t = null, a = 0; a < this.data.items.length; a++) if ("LINK" == this.data.items[a].type) { + t = this.data.items[a]; + break; + } + if (this.data.linkList.length < t.count) { + if ("" == this.data.linkStr) return void wx.showToast({ + title: "请输入文字内容", + icon: "error" + }); + this.data.linkList.push(this.data.linkStr), this.setData({ + linkList: this.data.linkList, + linkStr: "" + }), this.data.linkList.length == t.count && this.setData({ + isShowLink: !1 + }); + } + }, + addDesc: function() { + for (var t = null, a = 0; a < this.data.items.length; a++) if ("TEXTAREA" == this.data.items[a].type) { + t = this.data.items[a]; + break; + } + if (this.data.textareaList.length < t.count) { + if ("" == this.data.tempDesc) return void wx.showToast({ + title: "请输入文字内容", + icon: "error" + }); + this.data.textareaList.push(this.data.tempDesc), this.setData({ + textareaList: this.data.textareaList, + tempDesc: "" + }), this.data.textareaList.length == t.count && this.setData({ + isShowDesc: !1 + }); + } + }, + addStr: function() { + for (var t = null, a = 0; a < this.data.items.length; a++) if ("TEXT" == this.data.items[a].type) { + t = this.data.items[a]; + break; + } + if (this.data.textList.length < t.count) { + if ("" == this.data.tempText) return void wx.showToast({ + title: "请输入文字内容", + icon: "error" + }); + this.data.textList.push(this.data.tempText), this.setData({ + textList: this.data.textList, + tempText: "" + }), this.data.textList.length == t.count && this.setData({ + isShowText: !1 + }); + } + }, + delText: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.textList.splice(t.currentTarget.dataset.index, 1), a.setData({ + textList: a.data.textList + })); + } + }); + }, + delLink: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.linkList.splice(t.currentTarget.dataset.index, 1), a.setData({ + linkList: a.data.linkList + })); + } + }); + }, + delDesc: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.textareaList.splice(t.currentTarget.dataset.index, 1), a.setData({ + textareaList: a.data.textareaList + })); + } + }); + }, + confirmSel: function(t) { + var a = t.detail, e = (a.piacker, a.value); + this.setData({ + selDisplayType: e.id, + displayTypeStr: e.name, + isShowType: !1 + }); + }, + cancelSel: function(t) { + this.setData({ + isShowType: !1 + }); + }, + textInput: function(a) { + this.setData(t({}, a.currentTarget.id, a.detail.value)); + }, + onHide: function(t) { + this.setData({ + isShowText: !1, + isShowDesc: !1, + isShowPhoto: !1, + isShowLink: !1, + isShowAudio: !1, + isShowVideo: !1, + isShowTags: !1 + }); + }, + chooseTags: function(t) { + var a = t.currentTarget.dataset.idx; + this.data.fieldList[this.data.currentIndex].dictionariesList[a].isSel = !this.data.fieldList[this.data.currentIndex].dictionariesList[a].isSel, + this.setData({ + fieldList: this.data.fieldList + }); + var e = "", i = ""; + this.data.fieldList[this.data.currentIndex].dictionariesList.forEach(function(t) { + t.isSel && (e += t.dataName + ",", i += t.dataId + ","); + }), e = e.substr(0, e.length - 1), i = i.substr(0, i.length - 1), this.data.fieldList[this.data.currentIndex].selValue = e, + this.data.fieldList[this.data.currentIndex].value = i, this.setData({ + fieldList: this.data.fieldList + }); + }, + selTags: function() { + this.setData({ + isShowTags: !1 + }); + }, + choosePhoto: function(t) { + var a = this, e = t.currentTarget.dataset.item, i = t.currentTarget.dataset.index, s = e.maxCount - e.valueList.length; + wx.chooseImage({ + count: Number.parseInt(s), + sourceType: [ "album", "camera" ], + success: function(t) { + a.doUploadImg(i, t.tempFilePaths, a.data.uploadCount); + }, + fail: function(t) {} + }); + }, + delImg: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该图片吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.fieldList[t.currentTarget.dataset.itemindex].valueList.splice(t.currentTarget.dataset.index, 1), + a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + viewImg: function(t) { + var a = [ t.currentTarget.dataset.url ]; + wx.previewImage({ + urls: a, + current: t.currentTarget.dataset.url + }); + }, + doUploadImg: function(t, e, i) { + wx.showLoading({ + title: "上传中..." + }); + var s = this, n = e.length; + s.data.uploadCount < n ? a.http.upload(a.urls.doUploadImg, { + path: e[s.data.uploadCount], + name: "image", + header: { + token: a.globalData.token + } + }).then(function(i) { + wx.hideLoading({}); + var n = JSON.parse(i).data, o = { + id: n, + path: a.baseUrls.baseCardUrl + n + }; + s.data.fieldList[t].valueList.push(o), s.setData({ + fieldList: s.data.fieldList + }), s.setData({ + uploadCount: ++s.data.uploadCount + }), s.doUploadImg(t, e, s.data.uploadCount); + }).catch(function(a) { + wx.hideLoading({}), s.setData({ + uploadCount: ++s.data.uploadCount + }), s.doUploadImg(t, e, s.data.uploadCount); + }) : (wx.hideLoading({}), s.setData({ + uploadCount: 0 + })); + }, + chooseLocation: function(t) { + var a = t.currentTarget.dataset.index; + this.setData({ + curMapIndex: a + }); + var e = JSON.stringify(n); + wx.navigateTo({ + url: "plugin://chooseLocation/index?key=".concat("HVDBZ-KJGKF-DNMJR-JHEWI-H2HN7-23BMS", "&referer=").concat("市域自治与互助", "&location=").concat(e, "&category=").concat("生活服务,娱乐休闲") + }); + }, + delMap: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.fieldList[t.currentTarget.dataset.index].valueList.splice(t.currentTarget.dataset.idx, 1), + a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + delAudio: function(t) { + console.log(t); + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该音频吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.fieldList[t.currentTarget.dataset.index].valueList.splice(t.currentTarget.dataset.idx, 1), + a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + doStartRecord: function() { + var t = this; + wx.getSetting({ + success: function(a) { + a.authSetting["scope.record"] ? t.startRecord() : wx.authorize({ + scope: "scope.record", + success: function() { + t.startRecord(); + } + }); + } + }); + }, + startRecord: function() { + var t = this; + t.data.setInter = setInterval(function() { + var a = parseInt(t.data.speck_time + 1); + t.setData({ + speck_time: parseInt(a), + isStartRecord: !0 + }), t.data.speck_time > 0 && t.data.speck_time <= 59 ? t.start() : (clearInterval(t.data.setInter), + t.stop(), wx.showToast({ + title: "录音最长60S哦!", + duration: 2e3, + icon: "none" + })); + }, 1e3); + }, + doEndRecord: function() { + clearInterval(this.data.setInter), this.data.speck_time > 3 ? (clearInterval(this.data.setInter), + this.stop(!0), this.setData({ + speck_time: "0", + isStartRecord: !1 + })) : (clearInterval(this.data.setInter), this.stop(!1), wx.showToast({ + title: "录制时间过短", + duration: 2e3, + icon: "none" + }), this.setData({ + speck_time: "0", + isStartRecord: !1 + })); + }, + start: function() { + e.start({ + duration: 6e4, + format: "mp3" + }), e.onStart(function() { + console.log("recorder start"); + }), e.onError(function(t) { + console.log(t), _self.stop(!1); + }); + }, + stop: function(t) { + var a = this; + e.stop(), e.onStop(function(e) { + t && a.doUploadAudio(e); + }); + }, + doUploadAudio: function(t) { + wx.showLoading({ + title: "上传中..." + }); + var e = this; + a.http.upload(a.urls.doUploadAudio, { + path: t.tempFilePath, + name: "audio", + header: { + token: a.globalData.token + } + }).then(function(i) { + if (wx.hideLoading({}), e.data.fieldList[e.data.currentIndex].valueList.length < e.data.currentItem.maxCount) { + wx.hideLoading({}); + var s = JSON.parse(i).data, n = a.baseUrls.baseCardUrl + s, o = parseInt(t.duration / 1e3), d = parseInt(o / 60), r = parseInt(o % 60), l = { + id: s, + path: n, + isPlay: !1, + duration: o, + curDuation: 0, + curDurationStr: "00:00", + totalDurationStr: (d > 9 ? d : "0" + d) + ":" + (+r > 9 ? r : "0" + r) + }; + e.data.fieldList[e.data.currentIndex].valueList.push(l), e.setData({ + fieldList: e.data.fieldList + }), e.data.fieldList[e.data.currentIndex].valueList.length == e.data.currentItem.maxCount && e.setData({ + isShowAudio: !1 + }); + } + }).catch(function(t) {}); + }, + play: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.idx, s = t.currentTarget.dataset.item, n = this; + n.data.fieldList[a].valueList.forEach(function(t) { + t.isPlay && i.stop(), t.isPlay = !1, t.curDuation = 0, t.curDuationStr = "00:00"; + }), s.isPlay || ((i = wx.createInnerAudioContext()).src = n.data.fieldList[a].valueList[e].path, + i.autoplay = !0), i.onPlay(function() { + n.data.fieldList[a].valueList[e].isPlay = !0, n.setData({ + fieldList: n.data.fieldList + }); + }), i.onCanplay(function(t) {}), i.onStop(function(t) { + n.data.fieldList[a].valueList[e].isPlay = !1, n.data.fieldList[a].valueList[e].curDuration = 0, + n.data.fieldList[a].valueList[e].curDurationStr = "00:00", n.setData({ + fieldList: n.data.fieldList + }); + }), i.onEnded(function(t) { + n.data.fieldList[a].valueList[e].isPlay = !1, n.data.fieldList[a].valueList[e].curDuration = 0, + n.data.fieldList[a].valueList[e].curDurationStr = "00:00", n.setData({ + fieldList: n.data.fieldList + }); + }), i.onError(function(t) { + n.data.fieldList[a].valueList[e].isPlay = !1, n.data.fieldList[a].valueList[e].curDuration = 0, + n.data.fieldList[a].valueList[e].curDurationStr = "00:00", n.setData({ + fieldList: n.data.fieldList + }); + }), i.onSeeking(function() { + console.log(i.currentTime); + }), i.onWaiting(function() {}), i.onTimeUpdate(function() { + if (i.duration != 1 / 0) { + n.data.fieldList[a].valueList[e].curDuration = parseInt(i.currentTime), n.data.fieldList[a].valueList[e].duration = parseInt(i.duration), + console.log(i.duration); + var t = parseInt(i.currentTime / 60), s = parseInt(i.currentTime % 60), o = parseInt(i.duration / 60), d = parseInt(i.duration % 60), r = t > 9 ? t : "0" + t, l = s > 9 ? s : "0" + s, u = o > 9 ? o : "0" + o, c = +d > 9 ? d : "0" + d; + n.data.fieldList[a].valueList[e].curDurationStr = r + ":" + l, n.data.fieldList[a].valueList[e].totalDurationStr = u + ":" + c, + n.setData({ + fieldList: n.data.fieldList + }); + } + }); + }, + rewind: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.idx; + t.currentTarget.dataset.item.isPlay && (this.data.fieldList[a].valueList[e].curDuration = this.data.fieldList[a].valueList[e].curDuration - this.data.speedStep, + i.seek(this.data.fieldList[a].valueList[e].curDuration), this.setData({ + fieldList: this.data.fieldList + })); + }, + speed: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.idx; + t.currentTarget.dataset.item.isPlay && (this.data.fieldList[a].valueList[e].curDuration = this.data.fieldList[a].valueList[e].curDuration + this.data.speedStep, + i.seek(this.data.fieldList[a].valueList[e].curDuration), this.setData({ + fieldList: this.data.fieldList + })); + }, + slider4change: function(t) { + t.currentTarget.dataset.item.isPlay && i.seek(t.detail.value); + }, + showDialog: function(t) { + console.log(t), this.setData({ + isShowAudio: !0, + currentItem: t.currentTarget.dataset.item, + currentIndex: t.currentTarget.dataset.index + }); + }, + doPublish: function() { + if (this.checkParams()) { + wx.showToast({ + title: "保存中..." + }); + var t = this.buildParams(); + console.log(t), a.http.post(a.urls.doSaveMoments.format({ + configColumnId: this.data.columnId + }), { + data: t, + header: { + token: a.globalData.token + } + }).then(function(t) { + wx.hideLoading({}); + var a = getCurrentPages(); + a[a.length - 2].setData({ + isRefresh: !0 + }), wx.navigateBack({ + delta: 1 + }); + }).catch(function(t) { + console.log(t); + }); + } + }, + checkParams: function() { + for (var t = !0, a = 0; a < this.data.fieldList.length; a++) { + var e = this.data.fieldList[a]; + if (e.must) if ("1" == e.dataType || "7" == e.dataType || "8" == e.dataType || "9" == e.dataType) { + if (e.value.length <= 0) { + wx.showToast({ + title: "请输入或选择" + e.comment, + icon: "none" + }), t = !1; + break; + } + } else if (e.valueList.length <= 0) { + wx.showToast({ + title: "请上传" + e.comment, + icon: "none" + }), t = !1; + break; + } + } + return t; + }, + buildParams: function() { + for (var t = { + uid: this.data.uId + }, a = 0; a < this.data.fieldList.length; a++) { + var e = this.data.fieldList[a]; + if ("1" == e.dataType || "7" == e.dataType || "8" == e.dataType || "9" == e.dataType) e.value.length > 0 && (t[e.name] = e.value); else if (e.valueList.length > 0) { + var i = ""; + "6" == e.dataType ? e.valueList.forEach(function(t) { + i += t.latitude + "," + t.longitude + "-"; + }) : "4" == e.dataType ? e.valueList.forEach(function(t) { + i += t.id + "&" + t.thumbId + ","; + }) : "3" == e.dataType ? e.valueList.forEach(function(t) { + i += t.id + "&" + t.duration + ","; + }) : "2" == e.dataType ? (e.valueList.forEach(function(t) { + i += t.id + ","; + }), i = i.substr(0, i.length - 1), i += "@" + this.data.selDisplayType) : e.valueList.forEach(function(t) { + i += t.id + ","; + }), "2" != e.dataType && (i = i.substr(0, i.length - 1)), t[e.name] = i; + } + } + return t; + }, + showDisplayType: function(t) { + this.setData({ + isShowType: !0 + }); + } +}); \ No newline at end of file diff --git a/packagecard/moments/edit/momentedit.json b/packagecard/moments/edit/momentedit.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/moments/edit/momentedit.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/moments/edit/momentedit.wxml b/packagecard/moments/edit/momentedit.wxml new file mode 100755 index 0000000..2078efb --- /dev/null +++ b/packagecard/moments/edit/momentedit.wxml @@ -0,0 +1,222 @@ + + + + + + {{item.comment}} + + + + + + + {{item.comment}} + + + + + + + + + + + + {{item.comment}}{{item.valueList.length}}/{{item.maxCount}} + + + + {{displayTypeStr}} + + + + + + + + + + + + + + + + + + + + + + {{item.comment}} + + {{item.valueList.length}}/{{item.maxCount}} + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + 语音,可以给名片访客留下更深的印象 + + + 点击添加 + + + + + {{item.comment}} + {{item.valueList.length}}/{{item.maxCount}} + + + + + + + + + + + + + + + + + + {{item.comment}} + + + + + + + {{item.comment}} + + + + + + + + {{m.name}}-{{m.address}} + + + + + + + + + + + + + 在地图上选取一个地点 + + + 点击添加 + + + + + {{item.comment}} + + {{item.selValue}} + + + + + + {{item.comment}} + + {{item.selValue}} + + + + + + + + + + + + + + + + + 00:{{speck_time>9?speck_time:'0'+speck_time}} + 长按录音 + + + + {{audioFile.isPlay?'播放中:'+speck_time+'秒':'时长:'+audioFile.duration+'秒'}} + + 点击播放 + 删除 + + + + + + + 点击添加 + + + + + + 点击添加 + + + + + 相册 + 相机 + + + + + 相册 + 相机 + + + + + + 点击添加 + + + + + + + {{item.dataName}} + + + + + + + diff --git a/packagecard/moments/edit/momentedit.wxss b/packagecard/moments/edit/momentedit.wxss new file mode 100755 index 0000000..06e17cb --- /dev/null +++ b/packagecard/moments/edit/momentedit.wxss @@ -0,0 +1,41 @@ +van-action-sheet input { + height: 60rpx; + line-height: 60rpx; + padding-left: 10rpx; +} + +van-action-sheet input,van-action-sheet textarea { + border: 1px solid #c2c2c2; + border-radius: 10rpx; + margin-top: 9rpx; +} + +van-action-sheet textarea { + padding: 10rpx; +} + +van-action-sheet .line { + border-bottom: 1rpx solid #f5f5f5; + border-top: 1rpx solid #f5f5f5; +} + +van-action-sheet .line,van-action-sheet .noline { + height: 90rpx; + line-height: 90rpx; + text-align: center; + width: 90%; +} + +van-action-sheet .line:active,van-action-sheet .noline:active { + background-color: #f5f5f5; + color: #000; +} + +.item-bottom-margin { + margin-bottom: 15rpx; + width: 100%; +} + +.item-padding { + padding: 15rpx; +} \ No newline at end of file diff --git a/packagecard/moments/list/momentslist.js b/packagecard/moments/list/momentslist.js new file mode 100755 index 0000000..c1fb657 --- /dev/null +++ b/packagecard/moments/list/momentslist.js @@ -0,0 +1,268 @@ +var t = getApp(), a = wx.createInnerAudioContext(); + +Page({ + data: { + columnId: "", + type: "", + speedStep: 5, + waitFlag: !1, + configMode: "2", + dataList: [], + count: 2, + isLoadMore: !1, + imgUrl: t.baseUrls.baseCardUrl, + isRefresh: !1, + title: "栏目内容" + }, + onLoad: function(t) { + console.log(t.mode), this.setData({ + columnId: t.id, + configMode: t.mode, + type: t.type, + title: t.title + }), wx.setNavigationBarTitle({ + title: t.title + }), this.getList(); + }, + onShow: function() { + this.data.isRefresh && (wx.startPullDownRefresh({}), this.setData({ + isRefresh: !1 + })); + }, + getList: function() { + var a = this; + wx.showLoading({ + title: "加载中..." + }), t.http.get(t.urls.getMomentsList.format({ + configColumnId: a.data.columnId + }), { + header: { + token: t.globalData.token + }, + data: { + backSystem: "backSystem" + } + }).then(function(i) { + wx.hideLoading({}), i.data.forEach(function(i) { + i.list.forEach(function(i) { + switch (i.dataType) { + case "2": + var e = i.value.split("@"), s = e[0].split(","); + e.length > 1 ? i.dataMode = e[1] : i.dataMode = "1"; + for (var n = [], r = 0; r < s.length; r++) if ("" != s[r]) { + var d = { + path: a.data.imgUrl + s[r], + imgPath: "../../../images/ic_temp.png" + }; + n.push(d); + } + i.valueList = n; + break; + + case "4": + for (s = i.value.split(","), n = [], r = 0; r < s.length; r++) if ("" != s[r]) { + var o = s[r].split("&"); + d = { + path: t.baseUrls.baseCardUrl + o[0], + imgPath: t.baseUrls.baseCardUrl + o[1] + }; + n.push(d); + } + i.valueList = n; + break; + + case "6": + for (s = i.value.split("-"), n = [], r = 0; r < s.length; r++) if ("" != s[r]) { + var u = s[r].split(","); + d = { + latitude: u[0], + longitude: u[1] + }; + n.push(d); + } + i.valueList = n; + break; + + case "3": + for (s = i.value.split(","), n = [], r = 0; r < s.length; r++) if ("" != s[r]) { + var l = "00:00"; + if ((o = s[r].split("&")).length > 1) { + var c = o[1], h = parseInt(c / 60), L = parseInt(c % 60); + l = (h > 9 ? h : "0" + h) + ":" + (+L > 9 ? L : "0" + L); + } + d = { + path: a.data.imgUrl + o[0], + isPlay: !1, + duration: 100, + curDuation: 0, + curDurationStr: "00:00", + totalDurationStr: l + }; + n.push(d); + } + i.valueList = n; + break; + + case "8": + i.dictionariesList.forEach(function(t) { + -1 != i.value.indexOf(t.dataId) && (i.selValue = t.dataName); + }); + break; + + case "9": + i.dictionariesList.forEach(function(t) { + -1 != i.value.indexOf(t.dataId) ? t.isSel = !0 : t.isSel = !1; + }); + } + }); + }), a.setData({ + dataList: i.data + }), wx.stopPullDownRefresh({}); + }).catch(function(t) { + console.log(t), wx.stopPullDownRefresh({}); + }); + }, + toggleHandler: function(t) { + for (var a = t.currentTarget.dataset.index, i = 0; i < this.data.trendsList.length; i++) a == i && (this.data.trendsList[a].auto = !0, + this.data.trendsList[a].seeMore = !1); + this.setData({ + trendsList: this.data.trendsList + }); + }, + toggleContent: function(t) { + for (var a = t.currentTarget.dataset.index, i = 0; i < this.data.trendsList.length; i++) a == i && (this.data.trendsList[a].auto = !0, + this.data.trendsList[a].seeMore = !0); + this.setData({ + trendsList: this.data.trendsList + }); + }, + viewImg: function(t) { + wx.previewImage({ + urls: [ t.currentTarget.dataset.url ] + }); + }, + viewVideo: function(t) { + var a = t.currentTarget.dataset.url; + wx.previewMedia({ + sources: [ { + url: a, + type: "video" + } ] + }); + }, + onPullDownRefresh: function() { + this.getList(); + }, + onReachBottom: function() { + console.log("触底了"); + }, + play: function(t) { + var i = t.currentTarget.dataset.index, e = t.currentTarget.dataset.item, s = t.currentTarget.dataset.idx, n = t.currentTarget.dataset.i, r = this; + r.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + t.valueList && t.valueList.forEach(function(t) { + t.isPlay && a.stop(), t.isPlay = !1, t.curDuation = 0, t.curDuationStr = "00:00"; + }); + }); + }), e.isPlay || ((a = wx.createInnerAudioContext()).src = r.data.dataList[i].list[s].valueList[n].path, + a.autoplay = !0), a.onPlay(function() { + r.data.dataList[i].list[s].valueList[n].isPlay = !0, r.setData({ + dataList: r.data.dataList + }); + }), a.onCanplay(function(t) {}), a.onStop(function(t) { + r.data.dataList[i].list[s].valueList[n].isPlay = !1, r.data.dataList[i].list[s].valueList[n].curDuration = 0, + r.data.dataList[i].list[s].valueList[n].curDurationStr = "00:00", r.setData({ + dataList: r.data.dataList + }); + }), a.onEnded(function(t) { + r.data.dataList[i].list[s].valueList[n].isPlay = !1, r.data.dataList[i].list[s].valueList[n].curDuration = 0, + r.data.dataList[i].list[s].valueList[n].curDurationStr = "00:00", r.setData({ + dataList: r.data.dataList + }); + }), a.onError(function(t) { + r.data.dataList[i].list[s].valueList[n].isPlay = !1, r.data.dataList[i].list[s].valueList[n].curDuration = 0, + r.data.dataList[i].list[s].valueList[n].curDurationStr = "00:00", r.setData({ + dataList: r.data.dataList + }); + }), a.onSeeking(function() { + console.log(a.currentTime); + }), a.onWaiting(function() {}), a.onTimeUpdate(function() { + if (a.duration != 1 / 0) { + r.data.dataList[i].list[s].valueList[n].curDuration = parseInt(a.currentTime), r.data.dataList[i].list[s].valueList[n].duration = parseInt(a.duration); + var t = parseInt(a.currentTime / 60), e = parseInt(a.currentTime % 60), d = parseInt(a.duration / 60), o = parseInt(a.duration % 60), u = t > 9 ? t : "0" + t, l = e > 9 ? e : "0" + e, c = d > 9 ? d : "0" + d, h = +o > 9 ? o : "0" + o; + r.data.dataList[i].list[s].valueList[n].curDurationStr = u + ":" + l, r.data.dataList[i].list[s].valueList[n].totalDurationStr = c + ":" + h, + r.setData({ + dataList: r.data.dataList + }); + } + }); + }, + rewind: function(t) { + var i = t.currentTarget.dataset.index, e = t.currentTarget.dataset.item, s = t.currentTarget.dataset.idx, n = t.currentTarget.dataset.i; + e.isPlay && (this.data.dataList[i].list[s].valueList[n].curDuration = this.data.dataList[i].list[s].valueList[n].curDuration - this.data.speedStep, + a.seek(this.data.dataList[i].list[s].valueList[n].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + speed: function(t) { + var i = t.currentTarget.dataset.index, e = t.currentTarget.dataset.item, s = t.currentTarget.dataset.idx, n = t.currentTarget.dataset.i; + e.isPlay && (this.data.dataList[i].list[s].valueList[n].curDuration = this.data.dataList[i].list[s].valueList[n].curDuration + this.data.speedStep, + a.seek(this.data.dataList[i].list[s].valueList[n].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + slider4change: function(t) { + t.currentTarget.dataset.index; + t.currentTarget.dataset.item.isPlay && a.seek(t.detail.value); + }, + delItem: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(i) { + i.confirm && a.doDelMoment(t.currentTarget.dataset.index); + } + }); + }, + doDelMoment: function(a) { + var i = this; + wx.showLoading({ + title: "删除中..." + }); + var e = this.data.dataList[a]; + t.http.delete(t.urls.doDelMoment.format({ + configColumnId: this.data.columnId, + uid: e.uid + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), wx.showToast({ + title: "删除成功", + icon: "success" + }), i.data.dataList.splice(a, 1), i.setData({ + dataList: i.data.dataList + }), wx.startPullDownRefresh({}); + }).catch(function(t) { + console.log(t), wx.hideLoading({}); + }); + }, + doPublish: function() { + wx.navigateTo({ + url: "../publish/momentpublishline?id=" + this.data.columnId + "&title=" + this.data.title + }); + }, + editMoment: function(t) { + var a = this.data.dataList[t.currentTarget.dataset.index]; + wx.navigateTo({ + url: "../edit/momentedit?id=" + this.data.columnId + "&uid=" + a.uid + "&title=" + this.data.title + }); + }, + onUnload: function(t) { + a && a.stop(); + } +}); \ No newline at end of file diff --git a/packagecard/moments/list/momentslist.json b/packagecard/moments/list/momentslist.json new file mode 100644 index 0000000..2015974 --- /dev/null +++ b/packagecard/moments/list/momentslist.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/packagecard/moments/list/momentslist.wxml b/packagecard/moments/list/momentslist.wxml new file mode 100755 index 0000000..6a6a978 --- /dev/null +++ b/packagecard/moments/list/momentslist.wxml @@ -0,0 +1,94 @@ + + + + 发表时间:{{item.gmtCreate}} + + + + + 该条数据存在违规内容,请修改后重新发布. + 违规描述:{{item.checkRemark}} + + + + + + + {{columnId=='de7b5e22-64f9-4c60-a1f9-6ac004dfb9a8'?child.comment+':':''}}{{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + {{child.selValue}} + + + + + + {{item.dataName}} + + + + + + + + + + + + + 加载中... + diff --git a/packagecard/moments/list/momentslist.wxss b/packagecard/moments/list/momentslist.wxss new file mode 100755 index 0000000..bd34275 --- /dev/null +++ b/packagecard/moments/list/momentslist.wxss @@ -0,0 +1,81 @@ +.box { + margin: 0rpx 10rpx; +} + +.text_box { + line-height: 48rpx; +} + +.textFour_box,.text_box { + font-size: 30rpx; + font-weight: 400; + width: 100%; +} + +.textFour_box { + line-height: 26px; + text-align: justify; +} + +.toggle-icon { + height: 25rpx; + width: 25rpx; +} + +.text_toggloe_box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: left; + margin: 10rpx 0; +} + +.text_toggle_text { + color: #000; + font-size: 30rpx; + line-height: 32rpx; + margin-right: 10rpx; +} + +.three { + line-clamp: 3; + -webkit-box-orient: vertical; + display: -webkit-box; + overflow: hidden; + text-overflow: -o-ellipsis-lastline; + text-overflow: ellipsis; +} + +.item-box { + margin: 7.5rpx 15rpx; +} + +.item-box:nth-child(1) { + margin: 15rpx 15rpx 7.5rpx; +} + +.movie-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: center; +} + +.movie-box,.movie-box image { + border-radius: 10rpx; + height: 350rpx; + width: 100%; +} + +.column-item { + margin: 0rpx; + padding: 7.5rpx 15rpx; +} + +.column-item:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.column-item:last-child { + padding: 7.5rpx 15rpx 15rpx; +} \ No newline at end of file diff --git a/packagecard/moments/list/momentsshowlist.js b/packagecard/moments/list/momentsshowlist.js new file mode 100755 index 0000000..c6eba5f --- /dev/null +++ b/packagecard/moments/list/momentsshowlist.js @@ -0,0 +1,8 @@ +var a = getApp(); + +Page({ + data: { + url: "https://cbc.wgink.ink/systemcard/app/cardconfigarticle/listrelease?token=" + a.globalData.token + }, + onLoad: function(a) {} +}); \ No newline at end of file diff --git a/packagecard/moments/list/momentsshowlist.json b/packagecard/moments/list/momentsshowlist.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/moments/list/momentsshowlist.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/moments/list/momentsshowlist.wxml b/packagecard/moments/list/momentsshowlist.wxml new file mode 100755 index 0000000..34c346a --- /dev/null +++ b/packagecard/moments/list/momentsshowlist.wxml @@ -0,0 +1 @@ + diff --git a/packagecard/moments/list/momentsshowlist.wxss b/packagecard/moments/list/momentsshowlist.wxss new file mode 100755 index 0000000..e69de29 diff --git a/packagecard/moments/momentsdetail/momentsdetail.js b/packagecard/moments/momentsdetail/momentsdetail.js new file mode 100755 index 0000000..8a1ff5f --- /dev/null +++ b/packagecard/moments/momentsdetail/momentsdetail.js @@ -0,0 +1,606 @@ +var t = getApp(), a = wx.createInnerAudioContext(); + +Page({ + data: { + actions: [ { + className: "dialog-content" + } ], + dataList: [], + isShowCommentInput: !1, + collectSwitch: "1", + likeSwitch: "1", + commentSwitch: "1", + shareSwitch: "1", + speedStep: 5, + waitFlag: !1, + avatarUrl: t.globalData.userInfo.avatarUrl, + imgUrl: t.baseUrls.baseCardUrl, + uId: "", + columnId: "", + publishTime: "", + isShowComment: !1, + maxVideo: 1, + maxPhoto: 1, + commentValue: "", + mediaBean: null, + uploadCount: 0, + uploadVideoCount: 0, + maxDuration: 60, + dataId: "", + commentList: [], + commentCount: 0, + currentPage: 1, + curUserId: t.globalData.currentUserId, + isShowRestore: !1, + restoreList: [], + currentCommentItem: void 0, + currentType: 2, + restorePage: 1, + restoreCount: 0, + likeStatus: !1, + collectStatus: !1, + restoreLikeStatus: !1, + contentHeight: t.globalData.windowHeight + }, + onLoad: function(t) { + this.setData({ + uId: t.uId, + columnId: t.cId, + dataId: t.uId, + collectSwitch: t.collectSwitch, + likeSwitch: t.likeSwitch, + commentSwitch: t.commentSwitch, + shareSwitch: t.shareSwitch + }), wx.setNavigationBarTitle({ + title: "详情" + }), "3" == t.collectSwitch || "4" == t.collectSwitch || "3" == t.likeSwitch && "4" == t.likeSwitch || "3" == t.shareSwitch || "4" == t.shareSwitch || "3" == t.commentSwitch || "4" == t.commentSwitch ? this.setData({ + isShowCommentInput: !0 + }) : this.setData({ + isShowCommentInput: !1 + }), this.getMainMoment(), this.getCommentList(), this.getColumnContentHandle(this.data.uId, 2); + }, + getMainMoment: function() { + wx.showLoading({ + title: "加载中..." + }); + var a = this; + t.http.get(t.urls.getMomentsContent.format({ + configColumnId: a.data.columnId, + uid: a.data.uId + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), a.buildDetail(t.data); + }).catch(function(t) { + wx.hideLoading({}), console.log(t); + }); + }, + getColumnContentHandle: function(a, e) { + var n = this; + wx.showLoading({ + title: "加载中..." + }), t.http.get(t.urls.getColumnContentHandle.format({ + projectId: "column", + businessIds: a + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), t.data.length > 0 && (2 == e ? n.setData({ + likeStatus: t.data[0].likeStatus, + collectStatus: t.data[0].collectStatus + }) : 2 == n.data.currentType ? (n.data.commentList.forEach(function(a) { + t.data.forEach(function(t) { + a.contentCommentId == t.businessId && (a.likeStatus = t.likeStatus, a.contentCommentLike = t.likeCount, + a.contentCommentSubCount = t.commentCount); + }); + }), n.setData({ + commentList: n.data.commentList + })) : (n.data.restoreList.forEach(function(a) { + t.data.forEach(function(t) { + a.contentCommentId == t.businessId && (a.likeStatus = t.likeStatus, a.contentCommentLike = t.likeCount, + a.contentCommentSubCount = t.commentCount); + }); + }), n.setData({ + restoreList: n.data.restoreList + }))); + }).catch(function(t) {}); + }, + buildDetail: function(a) { + this.setData({ + publishTime: a.gmtCreate + }), a.list.forEach(function(a) { + switch (a.dataType) { + case "2": + var e = a.value.split("@"); + e.length > 1 ? a.dataMode = e[1] : a.dataMode = "1"; + var n = e[0].split(","), o = []; + n.forEach(function(a) { + if (a.length > 0) { + var e = { + id: a, + path: t.baseUrls.baseCardUrl + a + }; + o.push(e); + } + }), a.valueList = o; + break; + + case "4": + n = a.value.split(","), o = []; + for (var i = 0; i < n.length; i++) if (n[i].length > 0) { + var s = n[i].split("&"), r = { + path: t.baseUrls.baseCardUrl + s[0], + imgPath: t.baseUrls.baseCardUrl + s[1] + }; + o.push(r); + } + a.valueList = o; + break; + + case "3": + n = a.value.split(","), o = []; + n.forEach(function(a) { + if (a.length > 0) { + var e = a.split("&"), n = "00:00"; + if (e.length > 1) { + var i = e[1], s = parseInt(i / 60), r = parseInt(i % 60); + n = (s > 9 ? s : "0" + s) + ":" + (+r > 9 ? r : "0" + r); + } + var d = { + id: e[0], + path: t.baseUrls.baseCardUrl + e[0], + isPlay: !1, + duration: 100, + curDuation: 0, + curDurationStr: "00:00", + totalDurationStr: n + }; + o.push(d); + } + }), a.valueList = o; + break; + + case "6": + n = a.value.split("-"), o = []; + n.forEach(function(t) { + if (t.length > 0) { + var a = t.split(","), e = { + name: "", + address: "", + latitude: a[0], + longitude: a[1] + }; + o.push(e); + } + }), a.valueList = o; + break; + + case "8": + a.dictionariesList.forEach(function(t) { + -1 != a.value.indexOf(t.dataId) && (a.selValue = t.dataName); + }); + break; + + case "9": + var d = ""; + a.dictionariesList.forEach(function(t) { + -1 != a.value.indexOf(t.dataId) ? (d += t.dataName + ",", t.isSel = !0) : t.isSel = !1; + }), d = d.substr(0, d.length - 1), a.selValue = d; + } + }), this.setData({ + dataList: a.list + }); + }, + getCommentList: function() { + var a = this; + t.http.get(t.urls.getCommentList.format({ + projectId: "column", + businessId: a.data.dataId + }), { + header: { + token: t.globalData.token + }, + data: { + page: a.data.currentPage + } + }).then(function(t) { + wx.hideLoading({}); + var e = ""; + t.data.rows.forEach(function(t) { + t.likeStatus = !1, e += t.contentCommentId + ","; + }), a.data.commentList = a.data.commentList.concat(t.data.rows), a.setData({ + commentList: a.data.commentList, + commentCount: t.data.total + }), e.length > 0 && a.getColumnContentHandle(e, 3); + }).catch(function(t) { + console.log(res); + }); + }, + getRestoreList: function() { + var a = this; + t.http.get(t.urls.getCommentList.format({ + projectId: "column", + businessId: a.data.dataId + }), { + header: { + token: t.globalData.token + }, + data: { + page: a.data.restorePage + } + }).then(function(t) { + wx.hideLoading({}); + var e = ""; + t.data.rows.forEach(function(t) { + t.likeStatus = !1, e += t.contentCommentId + ","; + }), a.data.restoreList = a.data.restoreList.concat(t.data.rows), a.setData({ + restoreList: a.data.restoreList, + restoreCount: t.data.total, + isShowRestore: !0 + }), e.length > 0 && a.getColumnContentHandle(e, 3); + }).catch(function(t) { + console.log(res); + }); + }, + viewImg: function(t) { + var a = []; + t.currentTarget.dataset.values.forEach(function(t) { + a.push(t.path); + }), wx.previewImage({ + urls: a, + current: t.currentTarget.dataset.cur + }); + }, + viewVideo: function(t) { + var a = t.currentTarget.dataset.url; + wx.previewMedia({ + sources: [ { + url: a, + type: "video" + } ] + }); + }, + play: function(t) { + var e = this, n = t.currentTarget.dataset.index, o = t.currentTarget.dataset.i, i = t.currentTarget.dataset.a, s = t.currentTarget.dataset.item; + e.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + "3" == t.dataType && t.valueList && t.valueList.forEach(function(t) { + t.isPlay && a.stop(), t.isPlay = !1, t.curDuration = 0, t.curDuationStr = "00:00"; + }); + }); + }), s.isPlay ? a.stop() : ((a = wx.createInnerAudioContext()).src = e.data.dataList[n].list[o].valueList[i].path + ".mp3", + a.autoplay = !0, console.log(e.data.dataList[n].list[o].valueList[i].path)), a.onPlay(function() { + console.log("onPlay"), e.data.dataList[n].list[o].valueList[i].isPlay = !0, e.setData({ + dataList: e.data.dataList + }); + }), a.onCanplay(function(t) {}), a.onStop(function(t) { + console.log("停止播放"), e.data.dataList[n].list[o].valueList[i].isPlay = !1, e.data.dataList[n].list[o].valueList[i].curDuration = 0, + e.data.dataList[n].list[o].valueList[i].curDurationStr = "00:00", e.setData({ + dataList: e.data.dataList + }), a.destroy(); + }), a.onEnded(function(t) { + console.log(t), console.log("播放完毕"), e.data.dataList[n].list[o].valueList[i].isPlay = !1, + e.data.dataList[n].list[o].valueList[i].curDuration = 0, e.data.dataList[n].list[o].valueList[i].curDurationStr = "00:00", + e.setData({ + dataList: e.data.dataList + }), a.destroy(); + }), a.onError(function(t) { + console.log("播放错误"), console.log(t), e.data.dataList[n].list[o].valueList[i].isPlay = !1, + e.data.dataList[n].list[o].valueList[i].curDuration = 0, e.data.dataList[n].list[o].valueList[i].curDurationStr = "00:00", + e.setData({ + dataList: e.data.dataList + }), a.destroy(); + }), a.onSeeking(function() {}), a.onWaiting(function() {}), a.onTimeUpdate(function() { + if (a.duration != 1 / 0) { + e.data.dataList[n].list[o].valueList[i].curDuration = parseInt(a.currentTime), e.data.dataList[n].list[o].valueList[i].duration = parseInt(a.duration); + var t = parseInt(a.currentTime / 60), s = parseInt(a.currentTime % 60), r = parseInt(a.duration / 60), d = parseInt(a.duration % 60), c = t > 9 ? t : "0" + t, u = s > 9 ? s : "0" + s, l = r > 9 ? r : "0" + r, m = +d > 9 ? d : "0" + d; + e.data.dataList[n].list[o].valueList[i].curDurationStr = c + ":" + u, e.data.dataList[n].list[o].valueList[i].totalDurationStr = l + ":" + m, + e.setData({ + dataList: e.data.dataList + }); + } + }); + }, + rewind: function(t) { + var e = t.currentTarget.dataset.index, n = t.currentTarget.dataset.item, o = (t.currentTarget.dataset.idx, + t.currentTarget.dataset.a), i = t.currentTarget.dataset.i; + n.isPlay && (this.data.dataList[e].list[i].valueList[o].curDuration = this.data.dataList[e].list[i].valueList[o].curDuration - this.data.speedStep, + a.seek(this.data.dataList[e].list[i].valueList[o].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + speed: function(t) { + var e = t.currentTarget.dataset.index, n = t.currentTarget.dataset.item, o = (t.currentTarget.dataset.idx, + t.currentTarget.dataset.a), i = t.currentTarget.dataset.i; + n.isPlay && (this.data.dataList[e].list[i].valueList[o].curDuration = this.data.dataList[e].list[i].valueList[o].curDuration + this.data.speedStep, + a.seek(this.data.dataList[e].list[i].valueList[o].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + slider4change: function(t) { + t.currentTarget.dataset.index; + t.currentTarget.dataset.item.isPlay && a.seek(t.detail.value); + }, + shareRecord: function(a) { + var e = this; + t.http.post(t.urls.shareRecord, { + header: { + token: t.globalData.token + }, + data: { + cardTemplateUseId: e.data.cardInfo.cardTemplateUseId, + cardTemplateDispatchParentId: "", + cardTemplateDispatchId: a + } + }).then(function(t) { + console.log(t.data), e.setData({ + shareRecordId: t.data.data + }); + }); + }, + inputWatch: function(t) { + this.setData({ + commentValue: t.detail.value + }); + }, + delMedia: function() { + var t = this; + wx.showModal({ + title: "警告", + content: "确定要删除该数据吗?", + success: function(a) { + a.confirm && t.setData({ + mediaBean: null + }); + } + }); + }, + delComment: function(t) { + var a = this, e = t.currentTarget.dataset.id, n = t.currentTarget.dataset.idx; + wx.showModal({ + title: "提示", + content: "确定要删除该评论吗?", + success: function(t) { + t.confirm && a.doDelComment(e, n); + } + }); + }, + doDelComment: function(a, e) { + var n = this; + wx.showLoading({ + title: "删除中..." + }), t.http.delete(t.urls.doDelComment.format({ + ids: a + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), wx.showToast({ + title: "删除成功" + }), 2 == n.data.currentType ? (n.data.commentList.splice(e, 1), n.setData({ + commentList: n.data.commentList + })) : (n.data.restoreList.splice(e, 1), n.data.commentList.forEach(function(t) { + t.contentCommentId == n.data.dataId && t.contentCommentSubCount--; + }), n.setData({ + restoreList: n.data.restoreList, + commentList: n.data.commentList + })); + }).catch(function(t) {}); + }, + doCommentToComment: function(t) { + var a = t.currentTarget.dataset.id, e = t.currentTarget.dataset.item; + this.setData({ + dataId: a, + currentPage: 1, + restoreList: [], + currentCommentItem: e, + currentType: 3 + }), this.getRestoreList(); + }, + showComment: function() { + this.setData({ + isShowComment: !0 + }); + }, + onCloseDialog: function(t) { + this.setData({ + isShowComment: !1 + }); + }, + onCloseRestore: function(t) { + this.setData({ + isShowRestore: !1, + currentType: 2, + dataId: this.data.uId, + restoreList: [], + currentCommentItem: void 0 + }); + }, + chooseImg: function() { + var t = this; + wx.chooseImage({ + count: t.data.maxPhoto, + sourceType: [ "album", "camera" ], + success: function(a) { + a.tempFilePaths.length > 0 && t.doUploadImg(a.tempFilePaths); + }, + fail: function(t) {} + }); + }, + doUploadImg: function(a) { + wx.showLoading({ + title: "上传中..." + }); + var e = this; + t.http.upload(t.urls.doUploadImg, { + path: a[0], + name: "image", + header: { + token: t.globalData.token + } + }).then(function(a) { + wx.hideLoading({}); + var n = JSON.parse(a).data, o = t.baseUrls.baseCardUrl + n, i = { + id: n, + type: "image", + coverPath: o, + path: o + }; + e.setData({ + mediaBean: i + }); + }).catch(function(t) { + wx.hideLoading({}), e.setData({ + mediaBean: null + }); + }); + }, + chooseVideo: function() { + var t = this; + wx.chooseMedia({ + count: t.data.maxVideo, + mediaType: [ "video" ], + sourceType: [ "camera", "album" ], + maxDuration: 60, + success: function(a) { + console.log(a), a.tempFiles.length > 0 && (a.tempFiles[0].duration <= t.data.maxDuration ? t.doUploadVideo(a.tempFiles) : wx.showToast({ + title: "视频最长60秒", + icon: "none" + })); + }, + fail: function(t) {} + }); + }, + doUploadVideo: function(a) { + wx.showLoading({ + title: "上传中..." + }); + var e = this; + t.http.upload(t.urls.doUploadVideo, { + path: a[0].tempFilePath, + name: "video", + header: { + token: t.globalData.token + } + }).then(function(n) { + wx.hideLoading({}); + var o = JSON.parse(n).data, i = t.baseUrls.baseCardUrl + o, s = { + id: o, + type: "video", + coverPath: a[0].thumbTempFilePath, + path: i + }; + e.setData({ + mediaBean: s + }); + }).catch(function(t) { + wx.hideLoading({}), e.setData({ + mediaBean: null + }); + }); + }, + doSubmitComment: function(t) { + console.log(t); + var a = t.currentTarget.dataset.id; + this.data.commentValue.length > 0 ? this.doSaveComment(a) : wx.showToast({ + title: "请输入要发布的内容", + icon: "none" + }); + }, + doSaveComment: function(a) { + var e = this; + wx.showLoading({ + title: "保存中..." + }), t.http.post(t.urls.doSaveComment, { + header: { + token: t.globalData.token + }, + data: { + businessId: a, + projectId: "column", + contentCommentContent: e.data.commentValue + } + }).then(function(t) { + wx.hideLoading({}), wx.showToast({ + title: "评论成功" + }), 2 == e.data.currentType ? (e.setData({ + commentValue: "", + isShowComment: !1, + currentPage: 1, + commentList: [], + commentCount: 0 + }), e.getCommentList()) : (e.data.commentList.forEach(function(t) { + t.contentCommentId == a && t.contentCommentSubCount++; + }), e.setData({ + commentValue: "", + isShowComment: !1, + restorePage: 1, + restoreList: [], + restoreCount: 0, + commentList: e.data.commentList + }), e.getRestoreList()); + }).catch(function(t) { + wx.hideLoading({}), e.setData({ + isShowComment: !1 + }); + }); + }, + doLike: function(a) { + var e = this, n = a.currentTarget.dataset.type, o = "2" == n ? e.data.uId : a.currentTarget.dataset.id, i = -1; + "4" == n ? e.data.commentList.forEach(function(t, a) { + t.contentCommentId == o && (i = a); + }) : i = a.currentTarget.dataset.idx; + var s = "2" == n ? e.data.likeStatus : a.currentTarget.dataset.like, r = ""; + r = s ? "取消中..." : "保存中...", wx.showLoading({ + title: r + }), t.http.post(t.urls.doSaveLike, { + header: { + token: t.globalData.token + }, + data: { + businessId: o, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), "2" == n ? e.setData({ + likeStatus: !s + }) : 2 == e.data.currentType ? (s ? (e.data.commentList[i].contentCommentLike--, + e.data.commentList[i].likeStatus = !1) : (e.data.commentList[i].contentCommentLike++, + e.data.commentList[i].likeStatus = !0), e.setData({ + commentList: e.data.commentList + })) : "4" == n ? (s ? (e.data.commentList[i].contentCommentLike--, e.data.commentList[i].likeStatus = !1, + e.data.currentCommentItem.likeStatus = !1) : (e.data.commentList[i].contentCommentLike++, + e.data.commentList[i].likeStatus = !0, e.data.currentCommentItem.likeStatus = !0), + e.setData({ + commentList: e.data.commentList, + currentCommentItem: e.data.currentCommentItem + })) : (s ? (e.data.restoreList[i].contentCommentLike--, e.data.restoreList[i].likeStatus = !1) : (e.data.restoreList[i].contentCommentLike++, + e.data.restoreList[i].likeStatus = !0), e.setData({ + restoreList: e.data.restoreList + })); + }).catch(function(t) {}); + }, + doCollect: function(a) { + var e = this, n = ""; + n = e.data.collectStatus ? "取消收藏..." : "收藏中...", wx.showLoading({ + title: n + }), t.http.post(t.urls.doSaveCollect, { + header: { + token: t.globalData.token + }, + data: { + businessId: e.data.uId, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), e.data.collectStatus = !e.data.collectStatus, e.setData({ + collectStatus: e.data.collectStatus + }); + }).catch(function(t) {}); + } +}); \ No newline at end of file diff --git a/packagecard/moments/momentsdetail/momentsdetail.json b/packagecard/moments/momentsdetail/momentsdetail.json new file mode 100644 index 0000000..1eeb0ee --- /dev/null +++ b/packagecard/moments/momentsdetail/momentsdetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "详情" +} \ No newline at end of file diff --git a/packagecard/moments/momentsdetail/momentsdetail.wxml b/packagecard/moments/momentsdetail/momentsdetail.wxml new file mode 100755 index 0000000..5ca39e7 --- /dev/null +++ b/packagecard/moments/momentsdetail/momentsdetail.wxml @@ -0,0 +1,211 @@ + + + + + + + + + + {{child.value}} + + 来源:网络 + 发布时间:{{publishTime}} + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + {{child.comment}}: + {{child.selValue}} + + + + + + + + + {{child.comment}} + + + + {{ss.dataName}} + + + + + + + + + + + + 评论{{commentCount}} + + + + + + + {{item.contentCommentUserName}} + + + {{item.contentCommentLike}} + + + + {{item.contentCommentContent}} + + {{item.contentCommentSubCount}} 回复 + + + + + + + + + + + + + 写评论... + + + + + + + + + + + 写评论... + + + + + + + + + + 发布 + + + + + + + {{currentCommentItem.contentCommentUserName}} + + {{currentCommentItem.contentCommentContent}} + + + 全部回复 + + + + + + {{item.contentCommentUserName}} + + + {{item.contentCommentLike}} + + + + {{item.contentCommentContent}} + + + + + + + + + + + diff --git a/packagecard/moments/momentsdetail/momentsdetail.wxss b/packagecard/moments/momentsdetail/momentsdetail.wxss new file mode 100755 index 0000000..ecdc8a4 --- /dev/null +++ b/packagecard/moments/momentsdetail/momentsdetail.wxss @@ -0,0 +1,665 @@ +.card-container { + box-sizing: border-box; + height: 0; +} + +.share-btn { + background: #eee; +} + +.card { + background: #fff; + box-sizing: border-box; + height: 0; + overflow: hidden; + position: relative; + width: 100%; +} + +.area-box { + white-space: nowrap; + word-break: break-all; +} + +.card-bgImg { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.person { + padding: 20rpx; +} + +.dynamic-container { + background-color: #fff; + border-radius: 20rpx; + margin-top: -50rpx; + padding: 20rpx; + position: relative; +} + +.dynamic-title image { + height: 30rpx; + margin-top: -4rpx; + vertical-align: middle; + width: 30rpx; +} + +.catelog-title { + justify-content: space-between; + position: relative; +} + +.catelog-title,.catelog-title .action { + align-items: center; + display: flex; +} + +.catelog-title .action { + justify-content: center; + max-width: 100%; + padding-right: 30rpx; +} + +.title { + background: #0054bd; + border-top-left-radius: 48rpx; + border-top-right-radius: 48rpx; + color: #fff; + display: inline-block; + font-size: 30rpx; + margin-bottom: -50rpx; + padding: 10rpx 60rpx 60rpx 10rpx; + position: relative; +} + +.title text { + margin-left: 20rpx; +} + +.column-box,.column-content { + background-color: #fff; + display: flex; + flex-direction: column; + width: 100%; +} + +.column-content { + border-radius: 48rpx; + box-shadow: 0 2px 2px #f0f0f0; + padding: 10rpx 20rpx 40rpx; + z-index: 2; +} + +.intro-title image,.serve-title image { + height: 30rpx; + margin-top: -4px; + vertical-align: middle; + width: 28rpx; +} + +.person-content { + background: #fff; + border-radius: 20rpx; + color: #000; + font-size: 30rpx; + letter-spacing: 2rpx; + line-height: 40rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; + word-break: break-all; +} + +.company-title { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.company-title image { + height: 140rpx; + width: 140rpx; +} + +.company-name { + align-items: center; + display: flex; + font-size: 34rpx; + height: 140rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 520rpx; +} + +.company-content { + background: #fff; + border-radius: 20rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; +} + +.company-content image { + border-radius: 20rpx; + height: 300rpx; + width: 100%; +} + +.company .person-content { + margin-top: 0; +} + +.dynamic-title { + display: block; + margin: 0 auto; + width: 710rpx; +} + +.dynamic-box { + background: #fff; + border-radius: 20rpx; + height: 400rpx; + margin-bottom: 20rpx; + overflow: hidden; + position: relative; +} + +.dynamic-box image { + height: 400rpx; + width: 100%; +} + +.dynamic-text { + background: rgba(0,0,0,.6); + bottom: 0; + color: #fff; + font-size: 30rpx; + left: 0; + line-height: 60rpx; + padding: 0 10rpx; + position: absolute; + right: 0; +} + +.person-info { + border-bottom: 1px solid #eee; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; +} + +.avatar { + border-radius: 50%; + height: 120rpx; + overflow: hidden; + width: 120rpx; +} + +.avatar image { + height: 100%; + width: 100%; +} + +.person-name { + width: 530rpx; +} + +.name { + color: #000; + font-size: 32rpx; + margin: 15rpx 0 10rpx; +} + +.time { + color: #b2b2b2; +} + +.dynamic-content { + margin: 20rpx 0; +} + +.dynamic-img { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + position: relative; +} + +.dynamic-img image { + height: 160rpx; + margin-bottom: 10rpx; + margin-right: 2%; + width: 32%; +} + +.dynamic-img image:nth-child(3n) { + margin-right: 0; +} + +.dynamic-img-text { + background: rgba(0,0,0,.6); + bottom: 3rpx; + color: #fff; + font-size: 32rpx; + left: 0; + line-height: 70rpx; + padding: 0 20rpx; + position: absolute; + right: 0; +} + +.dynamic-good { + display: flex; + justify-content: space-between; + margin: 10rpx 0; +} + +.good-count { + color: #333; + font-size: 28rpx; +} + +.good-btn image { + height: 40rpx; + vertical-align: top; + width: 40rpx; +} + +.dynamic-reply { + background: #eee; + margin-top: 15rpx; + padding: 15rpx; +} + +.reply { + color: #000; + font-size: 32rpx; + margin-bottom: 5rpx; +} + +.reply-name { + display: inline; + font-weight: 700; +} + +.dynamic-reply-input { + margin-top: 10rpx; +} + +.dynamic-reply-input input { + border-bottom: 1px solid #eee; + height: 60rpx; + width: 100%; +} + +.creat-card { + align-items: center; + background: #0054bd; + border-radius: 50%; + bottom: 20rpx; + box-sizing: border-box; + flex-direction: column; + height: 140rpx; + justify-content: center; + padding: 20rpx; + position: fixed; + right: 20rpx; + width: 140rpx; + z-index: 100; +} + +.creat-card image { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 80rpx; +} + +.share-save { + display: flex; + justify-content: space-between; + text-align: center; +} + +.share-btn { + background: none; + color: #1296db; +} + +.save-btn,.share-btn { + border: 1px solid #1296db; + font-weight: 400; +} + +.save-btn { + background: #1296db; + color: #fff; +} + +.bottom-btn { + margin-top: 20rpx; + padding: 0 20rpx; + white-space: nowrap; + width: 100%; +} + +.phone-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.wechate-box .icon { + height: 30rpx; + vertical-align: top; + width: 35rpx; +} + +.email-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.bottom-btn-box { + border: 1px solid #ddd; + border-radius: 10rpx; + box-sizing: border-box; + display: inline-block; + line-height: 30rpx; + margin-right: 10rpx; + min-width: 32%; + padding: 20rpx; +} + +.bottom-text { + margin-top: 10rpx; +} + +.top-box { + width: 100%; +} + +.good { + background-color: #fff; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; + padding-left: 20rpx; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.column-item { + margin: 0rpx; + padding: 7.5rpx 15rpx; +} + +.column-item:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.column-item:last-child { + padding: 7.5rpx 15rpx 15rpx; +} + +.good-click { + display: flex; +} + +.view-count { + border-right: 1px solid grey; +} + +.view-count,.view-count-no { + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; + margin-right: 30rpx; + padding-right: 30rpx; +} + +.view-count-no { + align-items: center; +} + +.good-avatar image { + height: 100%; + width: 100%; +} + +.good-click image { + height: 38rpx; + width: 38rpx; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.avatar-list { + display: inline-block; + height: 45rpx; + margin-right: 10rpx; + vertical-align: top; + width: 45rpx; +} + +.mid { + background: #0054bd; + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; + margin-top: -20rpx; + padding: 40rpx 0 80rpx; + position: relative; +} + +.mid,.mid-box { + display: flex; +} + +.mid-box { + align-items: center; + background: none; + border-right: 1px solid #2f82ea; + flex: 1; + flex-direction: column; + font-weight: 400; + justify-content: center; + padding: 0!important; + width: auto!important; +} + +.mid-box:last-child { + border: none; +} + +.mid-box image { + height: 60rpx; + margin-bottom: 20rpx; + width: 60rpx; +} + +.mid-box-text { + color: #fff; + font-size: 30rpx; +} + +.mid-btn { + background: #fff; + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; + flex-wrap: wrap; + margin-top: -60rpx; + padding: 30rpx; + position: relative; +} + +.mid-btn,.mid-btn-box { + display: flex; + justify-content: space-between; +} + +.mid-btn-box { + background: #eee; + border-radius: 20rpx; + box-sizing: border-box; + flex-shrink: 0; + margin-bottom: 20rpx; + padding: 15rpx; + width: 49%; +} + +.mid-btn-box:nth-child(3),.mid-btn-box:nth-child(4) { + margin-bottom: 0; +} + +.mid-btn-box image { + height: 80rpx; + width: 80rpx; +} + +.mid-btn-text { + width: 200rpx; +} + +.text-top { + color: #000; + font-size: 30rpx; + line-height: 45rpx; +} + +.text-bottom { + color: #898989; + font-size: 26rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.bar-code { + background: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} + +.bar-code .content { + align-items: center; + background: #fff; + border-radius: 10rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + left: 50%; + max-width: 96%; + min-height: 50%; + min-width: 80%; + padding: 20rpx; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.code-title { + font-weight: 700; +} + +.code-title,.code-txt { + color: #000; + font-size: 32rpx; +} + +.bar-code image { + height: 300rpx; + width: 300rpx; +} + +.news-title { + background: #fff; + flex-direction: column; + padding: 20rpx; + width: 100%; +} + +.news-title,.news-title-desc-box { + display: flex; +} + +.news-title-desc-box { + flex-direction: row; + justify-content: space-between; + margin-top: 15rpx; +} + +.news-title-desc { + color: #9e9a9a; + font-size: 28rpx; + text-align: right; +} + +.news-title-text { + color: #000; + font-size: 36rpx; + text-align: center; +} + +.news-content { + color: #333; + font-size: 30rpx; + line-height: 50rpx; +} + +.movie-item { + height: 280rpx; + padding-bottom: 0; + width: 100%; +} + +.movie-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: center; +} + +.movie-box,.movie-box image { + border-radius: 10rpx; + height: 350rpx; + width: 100%; +} + +.comment-item { + align-items: center; + display: flex; + flex-direction: column; + justify-content: space-between; + width: 100%; +} + +.comment-item image { + height: 128rpx; + width: 128rpx; +} + +.comment-content { + align-items: flex-start; + display: flex; + flex-direction: row; + justify-content: left; +} \ No newline at end of file diff --git a/packagecard/moments/publish/momentpublish.js b/packagecard/moments/publish/momentpublish.js new file mode 100755 index 0000000..6959ac7 --- /dev/null +++ b/packagecard/moments/publish/momentpublish.js @@ -0,0 +1,742 @@ +var t = getApp(), a = wx.getRecorderManager(), e = wx.createInnerAudioContext(), i = requirePlugin("chooseLocation"), s = { + latitude: 39.90877, + longitude: 116.39695 +}; + +Page({ + data: { + maringHeight: t.globalData.CustomBar, + fieldList: [ { + type: "text" + }, { + type: "video" + }, { + type: "audio" + }, { + type: "map" + }, { + type: "select" + }, { + type: "textarea" + }, { + type: "link" + }, { + type: "photo" + } ], + valueList: [], + isShowInput: !1, + isShowPhoto: !1, + isShowVideo: !1, + isShowLink: !1, + isShowSelect: !1, + isShowAudio: !1, + curTextValue: "", + curLinkText: "", + isShowEdit: !1, + currentIndex: -1, + photoList: [], + videoList: [], + curSelPhotoDisplay: "1", + curVideoDisplay: "1", + curTextAlign: "1", + curFieldTypeIndex: 0, + curFieldType: "text", + selDirection: "1", + isInsert: !1, + topBoxHeight: 100, + audioFile: null, + audioDuration: 0, + isRecording: !1, + speedStep: 5, + sourceType: "add", + insertIndex: -1, + optionsList: [ { + id: "1", + name: "选项一", + isSel: !1 + }, { + id: "2", + name: "选项二", + isSel: !1 + }, { + id: "3", + name: "选项三", + isSel: !1 + }, { + id: "4", + name: "选项四", + isSel: !1 + }, { + id: "5", + name: "选项五", + isSel: !1 + } ] + }, + onLoad: function(t) { + this.setData({ + columnId: t.id + }), this.checkPermission(), this.countBoxHeight(); + }, + countBoxHeight: function() { + var t = this, a = wx.createSelectorQuery(); + a.select("#top-box").boundingClientRect(), a.exec(function(a) { + t.setData({ + topBoxHeight: a[0].height + 7 + }); + }); + }, + onShow: function() { + var t = this; + if (null != i.getLocation()) { + var a = i.getLocation(), e = { + type: "map" + }; + e.value = a, "add" == t.data.sourceType ? t.data.valueList.push(e) : t.data.valueList.splice(t.data.currentIndex, "edit" == t.data.sourceType ? 1 : 0, e), + t.setData({ + valueList: t.data.valueList + }); + } + wx.getSetting({ + withSubscriptions: !0, + success: function(a) { + var e = a.authSetting["scope.record"]; + t.setData({ + isAuthAudio: e + }); + } + }); + }, + showType: function(t) { + switch (t.currentTarget.dataset.type) { + case "text": + case "textarea": + this.setData({ + isShowInput: !0 + }); + break; + + case "video": + this.chooseVideo(); + break; + + case "audio": + this.checkRecordPermission(); + break; + + case "photo": + this.chooseImg(); + break; + + case "map": + this.doChooseLocation(); + break; + + case "select": + this.setData({ + isShowSelect: !0 + }); + break; + + case "link": + this.setData({ + isShowLink: !0 + }); + } + }, + chooseImg: function() { + var t = this; + wx.chooseImage({ + count: 9, + sourceType: [ "album", "camera" ], + success: function(a) { + console.log(a), a.tempFilePaths.forEach(function(a) { + var e = {}; + e.path = a, t.data.photoList.push(e); + }), t.setData({ + photoList: t.data.photoList, + isShowPhoto: !0 + }); + }, + fail: function(t) { + -1 == t.errMsg.indexOf("fail cancel") && wx.showToast({ + title: "请重新选择", + icon: "error" + }); + } + }); + }, + chooseVideo: function() { + var t = this; + wx.chooseMedia({ + count: 9, + mediaType: [ "video" ], + sourceType: [ "album", "camera" ], + maxDuration: 60, + success: function(a) { + a.tempFiles.forEach(function(a) { + var e = {}; + e.path = a.tempFilePath, e.coverPath = a.thumbTempFilePath, t.data.videoList.push(e); + }), t.setData({ + videoList: t.data.videoList, + isShowVideo: !0 + }); + }, + fail: function(t) { + -1 == t.errMsg.indexOf("fail cancel") && wx.showToast({ + title: "请重新选择", + icon: "error" + }); + } + }); + }, + showEditBox: function(t) { + var a = t.currentTarget.dataset.idx; + this.data.currentIndex == a ? this.setData({ + currentIndex: -1 + }) : this.setData({ + currentIndex: a + }); + }, + chooseDirection: function(t) { + var a = t.currentTarget.dataset.idx; + this.setData({ + selDirection: a + }); + }, + choosePhotoDisplay: function(t) { + var a = t.currentTarget.dataset.type; + this.setData({ + curSelPhotoDisplay: a + }); + }, + chooseVideoDisplay: function(t) { + var a = t.currentTarget.dataset.type; + this.setData({ + curVideoDisplay: a + }); + }, + chooseTextAlign: function(t) { + var a = t.currentTarget.dataset.type; + this.setData({ + curTextAlign: a + }); + }, + chooseFieldType: function(t) { + var a = t.currentTarget.dataset.idx, e = t.currentTarget.dataset.type; + this.setData({ + curFieldTypeIndex: a, + curFieldType: e + }); + }, + confirmPhoto: function() { + if (this.data.photoList.length > 0) { + var t = []; + this.data.photoList.forEach(function(a) { + var e = {}; + e.path = a.path, t.push(e); + }); + var a = { + type: "photo" + }; + a.valueList = t, a.displayType = this.data.curSelPhotoDisplay, "add" == this.data.sourceType ? this.data.valueList.push(a) : this.data.valueList.splice(this.data.currentIndex, "edit" == this.data.sourceType ? 1 : 0, a), + this.setData({ + valueList: this.data.valueList, + photoList: [], + curSelPhotoDisplay: 1, + isShowPhoto: !1 + }); + } else wx.showToast({ + title: "请选择图片", + icon: "error" + }); + }, + confirmVideo: function() { + if (this.data.videoList.length > 0) { + var t = []; + this.data.videoList.forEach(function(a) { + var e = {}; + e.path = a.path, e.coverPath = a.coverPath, t.push(e); + }); + var a = { + type: "video" + }; + a.valueList = t, a.displayType = this.data.curVideoDisplay, "add" == this.data.sourceType ? this.data.valueList.push(a) : this.data.valueList.splice(this.data.currentIndex, "edit" == this.data.sourceType ? 1 : 0, a), + this.setData({ + valueList: this.data.valueList, + videoList: [], + curVideoDisplay: 1, + isShowVideo: !1, + currentIndex: -1, + sourceType: "add" + }); + } else wx.showToast({ + title: "请选择视频", + icon: "error" + }); + }, + doInsert: function() { + var t = -1; + switch (t = 1 == this.data.selDirection ? this.data.currentIndex : ++this.data.currentIndex, + this.setData({ + insertIndex: t, + sourceType: "insert", + isInsert: !1 + }), this.data.curFieldType) { + case "text": + case "textarea": + this.setData({ + isShowInput: !0 + }); + break; + + case "video": + this.chooseVideo(); + break; + + case "audio": + this.checkRecordPermission(); + break; + + case "photo": + this.chooseImg(); + break; + + case "map": + this.doChooseLocation(); + break; + + case "select": + this.setData({ + isShowSelect: !0 + }); + break; + + case "link": + this.setData({ + isShowLink: !0 + }); + } + }, + hideEditBox: function() { + this.setData({ + currentIndex: -1 + }); + }, + onClose: function() { + this.setData({ + isShowInput: !1, + isShowLink: !1, + isShowSelect: !1, + sourceType: "add" + }); + }, + inputWatch: function(t) { + this.setData({ + curTextValue: t.detail.value + }); + }, + inputLink: function(t) { + this.setData({ + curLinkText: t.detail.value + }); + }, + doConfirmLink: function() { + if ("" == this.data.curLinkText) wx.showToast({ + title: "请输入链接", + icon: "error" + }); else { + var t = { + type: "link" + }; + t.value = this.data.curLinkText, "add" == this.data.sourceType ? this.data.valueList.push(t) : this.data.valueList.splice(this.data.currentIndex, "edit" == this.data.sourceType ? 1 : 0, t), + this.setData({ + valueList: this.data.valueList, + curLinkText: "", + isShowLink: !1 + }); + } + }, + doConfirmInput: function() { + if ("" == this.data.curTextValue) wx.showToast({ + title: "请输入内容", + icon: "error" + }); else { + var t = { + type: "text" + }; + t.value = this.data.curTextValue; + var a = "left"; + switch (this.data.curTextAlign) { + case "1": + a = "left"; + break; + + case "2": + a = "center"; + break; + + case "3": + a = "right"; + } + t.textAlign = a, "add" == this.data.sourceType ? this.data.valueList.push(t) : this.data.valueList.splice(this.data.currentIndex, "edit" == this.data.sourceType ? 1 : 0, t), + this.setData({ + valueList: this.data.valueList, + curTextValue: "", + isShowInput: !1, + curTextAlign: "1" + }); + } + }, + checkPermission: function() { + var t = this; + wx.getSetting({ + success: function(a) { + var e = a.authSetting["scope.record"]; + void 0 === e ? wx.authorize({ + scope: "scope.record", + success: function() { + t.setData({ + isAuthAudio: !0 + }); + }, + fail: function() { + t.setData({ + isAuthAudio: !1 + }); + } + }) : e || t.openSetting(); + } + }); + }, + openSetting: function() { + wx.showModal({ + title: "提示", + content: "发布内容需要您授权录音权限.", + success: function(t) { + t.confirm && wx.openSetting({ + withSubscriptions: !0 + }); + } + }); + }, + viewPhoto: function(t) { + var a = t.currentTarget.dataset.url; + wx.previewImage({ + urls: [ a ] + }); + }, + delPhoto: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该图片吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.photoList.splice(t.currentTarget.dataset.index, 1), a.setData({ + photoList: a.data.photoList + })); + } + }); + }, + viewVideo: function(t) { + var a = t.currentTarget.dataset.idx, e = t.currentTarget.dataset.index, i = this.data.valueList[e].valueList[a].path, s = {}; + s.url = i, s.type = "video", wx.previewMedia({ + sources: [ s ] + }); + }, + delVideo: function(t) { + var a = this, e = t.currentTarget.dataset.index; + wx.showModal({ + title: "提示", + content: "确定要删除该视频吗?", + success: function(t) { + t.confirm && (a.data.videoList.splice(e, 1), a.setData({ + videoList: a.data.videoList + })); + } + }); + }, + doChooseLocation: function(t) { + var a = JSON.stringify(s); + wx.navigateTo({ + url: "plugin://chooseLocation/index?key=".concat("HVDBZ-KJGKF-DNMJR-JHEWI-H2HN7-23BMS", "&referer=").concat("市域自治与互助", "&location=").concat(a, "&category=").concat("生活服务,娱乐休闲") + }); + }, + editItem: function(t) { + var a = t.currentTarget.dataset.index; + switch (this.setData({ + sourceType: "edit" + }), this.data.valueList[a].type) { + case "text": + case "textarea": + var e = "1"; + e = "left" == this.data.valueList[a].textAlign ? "1" : "center" == this.data.valueList[a].textAlign ? "2" : "3", + this.setData({ + isShowInput: !0, + curTextValue: this.data.valueList[a].value, + curTextAlign: e + }); + break; + + case "video": + this.setData({ + curVideoDisplay: this.data.valueList[a].displayType, + videoList: this.data.valueList[a].valueList, + isShowVideo: !0 + }); + break; + + case "audio": + this.checkRecordPermission(); + break; + + case "photo": + this.setData({ + curSelPhotoDisplay: this.data.valueList[a].displayType, + photoList: this.data.valueList[a].valueList, + isShowPhoto: !0 + }); + break; + + case "map": + s.latitude = this.data.valueList[a].value.latitude, s.longitude = this.data.valueList[a].value.longitude, + this.doChooseLocation(); + break; + + case "select": + break; + + case "link": + this.setData({ + curLinkText: this.data.valueList[a].value, + isShowLink: !0 + }); + } + }, + insertItem: function(t) { + this.setData({ + isInsert: !this.data.isInsert + }); + }, + delItem: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + success: function(t) { + t.confirm && (a.data.valueList.splice(a.data.currentIndex, 1), a.setData({ + valueList: a.data.valueList, + currentIndex: -1 + })); + } + }); + }, + chooseTags: function(t) { + var a = t.currentTarget.dataset.idx, e = t.currentTarget.dataset.item; + this.data.optionsList[a].isSel = !e.isSel, this.setData({ + optionsList: this.data.optionsList + }); + }, + doConfirmSel: function() { + var t = []; + this.data.optionsList.forEach(function(a) { + a.isSel && t.push(a); + }); + var a = { + type: "select" + }; + a.valueList = t, this.data.valueList.push(a), this.data.optionsList.forEach(function(t) { + t.isSel = !1; + }), this.setData({ + valueList: this.data.valueList, + isShowSelect: !1, + optionsList: this.data.optionsList + }); + }, + doConfirmAudio: function() { + this.data.audioFile.isPlay && e.stop(); + var t = { + type: "audio" + }; + t.value = this.data.audioFile, this.data.audioFile.curDurationStr = "00:00", this.data.audioFile.curDuration = 0, + this.data.audioFile.isPlay = !1, "add" == this.data.sourceType ? this.data.valueList.push(t) : this.data.valueList.splice(this.data.currentIndex, "edit" == this.data.sourceType ? 1 : 0, t), + this.setData({ + valueList: this.data.valueList, + audioFile: null, + isShowAudio: !1 + }); + }, + checkRecordPermission: function() { + var t = this; + wx.getSetting({ + success: function(a) { + a.authSetting["scope.record"] ? t.setData({ + isShowAudio: !0 + }) : wx.authorize({ + scope: "scope.record", + success: function() { + t.setData({ + isShowAudio: !0 + }); + } + }); + } + }); + }, + startRecord: function() { + var t = this; + t.data.setInter = setInterval(function() { + var a = parseInt(t.data.audioDuration + 1); + t.setData({ + audioDuration: parseInt(a), + isRecording: !0 + }); + }, 1e3), t.start(); + }, + start: function() { + console.log("开始录音"); + a.start({ + duration: 6e4, + format: "mp3" + }), a.onStart(function() { + console.log("recorder start"); + }), a.onError(function(t) { + console.log(t), _self.stop(!1); + }); + }, + doEndRecord: function() { + var t = this; + clearInterval(t.data.setInter), a.stop(), a.onStop(function(a) { + t.data.audioDuration < 10 ? wx.showToast({ + title: "录音时长需大于10秒", + icon: "none" + }) : (a.isPlay = !1, a.durationStr = t.data.audioDuration + "", a.duration = t.data.audioDuration, + a.totalDurationStr = "00:" + (t.data.audioDuration > 9 ? t.data.audioDuration : "0" + t.data.audioDuration), + a.curDurationStr = "00:00", a.curDuration = 0, a.isPlay = !1, t.setData({ + audioFile: a + })), t.setData({ + audioDuration: 0, + isRecording: !1 + }); + }); + }, + delAudio: function() { + var t = this; + wx.showModal({ + title: "警告", + content: "确定要删除该条录音吗?", + success: function(a) { + a.confirm && t.setData({ + audioFile: null + }); + } + }); + }, + closePop: function(t) { + var a = t.currentTarget.dataset.type, i = this; + a && "audio" == a && (null != i.data.audioFile ? (i.data.audioFile.isPlay && e.stop(), + wx.showModal({ + title: "警告", + content: "关闭录音弹窗将清除当前录制的音频文件,确定要关闭吗?", + success: function(t) { + t.confirm && i.setData({ + audioFile: null, + isShowAudio: !1 + }); + } + })) : i.setData({ + isShowAudio: !1 + })), this.setData({ + isShowPhoto: !1, + isShowEdit: !1, + isShowVideo: !1, + isShowSelect: !1, + sourceType: "add" + }); + }, + slider4change: function(t) { + var a = t.currentTarget.dataset.item, i = t.currentTarget.dataset.type, s = t.currentTarget.dataset.idx, o = Number.parseInt(t.detail.value); + a.isPlay && (e.pause(), e.seek(o), setTimeout(function() { + e.play(); + }, 500), "record" == i ? (this.data.audioFile.curDuration = o, this.data.audioFile.curDurationStr = "00:" + (o > 9 ? o : "0" + o), + console.log(this.data.audioFile), this.setData({ + audioFile: this.data.audioFile + })) : (this.data.valueList[s].value.curDuration = o, this.data.valueList[s].value.curDurationStr = "00:" + (o > 9 ? o : "0" + o), + this.setData({ + valueList: this.data.valueList + }))); + }, + play: function(t) { + var a = t.currentTarget.dataset.item, i = this, s = t.currentTarget.dataset.type, o = t.currentTarget.dataset.idx; + a.isPlay ? e.stop() : ((e = wx.createInnerAudioContext()).src = a.tempFilePath, + e.autoplay = !0), e.onPlay(function() { + "record" == s ? (i.data.audioFile.isPlay = !0, i.setData({ + audioFile: i.data.audioFile + })) : (i.data.valueList[o].value.isPlay = !0, i.setData({ + valueList: i.data.valueList + })); + }), e.onStop(function(t) { + "record" == s ? i.setAudioDefault() : i.setShowAudioDefault(o); + }), e.onEnded(function(t) { + "record" == s ? i.setAudioDefault() : i.setShowAudioDefault(o); + }), e.onError(function(t) { + wx.showToast({ + title: "播放失败", + icon: "error" + }), "record" == s ? i.setAudioDefault() : i.setShowAudioDefault(o); + }), e.onTimeUpdate(function() { + var t = e.currentTime; + if ("record" == s) { + i.data.audioFile.curDuration = t; + var a = Number.parseInt(i.data.audioFile.curDuration); + i.data.audioFile.curDurationStr = "00:" + (a > 9 ? a : "0" + a), i.setData({ + audioFile: i.data.audioFile + }); + } else { + i.data.valueList[o].value.curDuration = t; + var u = Number.parseInt(i.data.valueList[o].value.curDuration); + i.data.valueList[o].value.curDurationStr = "00:" + (u > 9 ? a : "0" + u), i.setData({ + valueList: i.data.valueList + }); + } + }); + }, + setAudioDefault: function() { + null != this.data.audioFile && (this.data.audioFile.curDurationStr = "00:00", this.data.audioFile.curDuration = 0, + this.data.audioFile.isPlay = !1, this.setData({ + audioFile: this.data.audioFile + })); + }, + setShowAudioDefault: function(t) { + this.data.valueList[t].value.curDurationStr = "00:00", this.data.valueList[t].value.curDuration = 0, + this.data.valueList[t].value.isPlay = !1, this.setData({ + valueList: this.data.valueList + }); + }, + rewind: function(t) { + var a = t.currentTarget.dataset.item, i = t.currentTarget.dataset.idx, s = t.currentTarget.dataset.type; + a.isPlay && ("record" == s ? (this.data.audioFile.curDuration = this.data.audioFile.curDuration - this.data.speedStep, + e.seek(this.data.audioFile.curDuration), this.setData({ + audioFile: this.data.audioFile + })) : (this.data.valueList[i].value.curDuration = this.data.valueList[i].value.curDuration - this.data.speedStep, + e.seek(this.data.valueList[i].value.curDuration), this.setData({ + valueList: this.data.valueList + }))); + }, + speed: function(t) { + var a = t.currentTarget.dataset.item, i = t.currentTarget.dataset.idx, s = t.currentTarget.dataset.type; + a.isPlay && ("record" == s ? (this.data.audioFile.curDuration = this.data.audioFile.curDuration + this.data.speedStep, + e.seek(this.data.audioFile.curDuration), this.setData({ + audioFile: this.data.audioFile + })) : (this.data.valueList[i].value.curDuration = this.data.valueList[i].value.curDuration + this.data.speedStep, + e.seek(this.data.valueList[i].value.curDuration), this.setData({ + valueList: this.data.valueList + }))); + }, + onUnload: function() { + i.setLocation(null), this.setData({ + map: null + }); + } +}); \ No newline at end of file diff --git a/packagecard/moments/publish/momentpublish.json b/packagecard/moments/publish/momentpublish.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/moments/publish/momentpublish.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/moments/publish/momentpublish.wxml b/packagecard/moments/publish/momentpublish.wxml new file mode 100755 index 0000000..ccaab7a --- /dev/null +++ b/packagecard/moments/publish/momentpublish.wxml @@ -0,0 +1,307 @@ + + + 本栏目可以发布 + + + + + + 文本 + + + + 图片 + + + + 视频 + + + + 音频 + + + + 选项 + + + + 定位 + + + + 链接 + + + + + + + + + + + {{item.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{item.value.curDurationStr}} + + {{item.value.totalDurationStr}} + + + + + + + + + + + + + {{item.value.name}}-{{item.value.address}} + + + + + + + + + {{item.value}} + + + + {{options.name}} + + + + + + + 编辑 + + + + 插入 + + + + 删除 + + + + + 方向: + + + + + + 内容上 + + + + + + 内容下 + + + + + 类型: + + + + {{it.type}} + + + + + + + + + + + + + + + 文本 + + + + 文字居左 + + + + 文字居中 + + + + 文字居右 + + + + + + + + + + + 链接 + + + + + + + + + + + 00:{{audioDuration>9?audioDuration:'0'+audioDuration}} + {{isRecording?'正在录音':'长按录音'}} + + + + + {{audioFile.curDurationStr}} + + {{audioFile.totalDurationStr}} + + + + + + + + + + + + + + + + + 图片 {{photoList.length}}/9 + + + + + + + + + 九宫格 + + + + 轮播 + + + + 轮播(自动) + + + + 平铺 + + + + + + + + + + + + + + + + + + + + + + 视频 {{videoList.length}}/9 + + + + + + + + + 九宫格 + + + + 平铺 + + + + + + + + + + + + + + + + + + + + + + {{item.name}} + + + + + + + diff --git a/packagecard/moments/publish/momentpublish.wxss b/packagecard/moments/publish/momentpublish.wxss new file mode 100755 index 0000000..e7cb755 --- /dev/null +++ b/packagecard/moments/publish/momentpublish.wxss @@ -0,0 +1,220 @@ +.page-box-2 { + align-items: flex-start; + background-color: #fff; + display: flex; + flex-direction: column; + margin: 15rpx; + padding: 15rpx; +} + +van-action-sheet input { + height: 60rpx; + line-height: 60rpx; + padding-left: 10rpx; +} + +van-action-sheet input,van-action-sheet textarea { + border: 1px solid #c2c2c2; + border-radius: 10rpx; + margin-top: 9rpx; +} + +van-action-sheet textarea { + padding: 10rpx; +} + +van-action-sheet .line { + border-bottom: 1rpx solid #f5f5f5; + border-top: 1rpx solid #f5f5f5; +} + +van-action-sheet .line,van-action-sheet .noline { + height: 90rpx; + line-height: 90rpx; + text-align: center; + width: 90%; +} + +van-action-sheet .line:active,van-action-sheet .noline:active { + background-color: #f5f5f5; + color: #000; +} + +.type-box { + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + width: 100%; +} + +.type-box,.type-box .item { + align-items: center; + display: flex; +} + +.type-box .item { + flex-direction: column; + justify-content: center; +} + +.type-box image { + height: 84rpx; + width: 84rpx; +} + +.input-box { + align-items: flex-start; + display: flex; + flex-direction: column; + justify-content: center; + padding: 15rpx; + width: 100%; +} + +.input-box .title { + color: #000; + font-size: 32rpx; +} + +.input-box textarea { + color: #000; + font-size: 28rpx; + height: 200rpx; + width: 100%; +} + +.control-box,.input-box textarea { + border: 1rpx solid #f5f5f5; + margin-top: 15rpx; + padding: 15rpx; +} + +.control-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-around; +} + +.control-box .item { + flex-grow: 1; + font-size: 32rpx; + text-align: center; +} + +.item-input { + border-radius: 10rpx; + height: 80rpx; + line-height: 80rpx; + margin-top: 15rpx; + padding-left: 15rpx; + text-align: left; + width: 100%; +} + +.control-box .item:active,.item-input { + background-color: #f5f5f5; +} + +.control-box .item:nth-child(2) { + border-left: 1rpx solid #f5f5f5; + border-right: 1rpx solid #f5f5f5; + font-size: 32rpx; + margin-right: 15rpx; + padding: 0rpx 15rpx; +} + +.item-box { + align-items: flex-start; + flex-direction: column; +} + +.item-box,.movie-box { + display: flex; + justify-content: center; + width: 100%; +} + +.movie-box { + align-items: center; + border-radius: 10rpx; + flex-direction: row; + height: 350rpx; + margin-top: 15rpx; +} + +.movie-box:nth-child(1) { + margin-top: 0rpx; +} + +.movie-box image { + border-radius: 10rpx; + height: 350rpx; + width: 100%; +} + +.choose-box { + align-items: center; + display: flex; + flex-direction: row; + flex-wrap: wrap; + font-size: 32rpx; + justify-content: flex-start; + width: 100%; +} + +.choose-box .item-text { + margin-left: 15rpx; +} + +.choose-box .item-text:nth-child(1),.choose-item:nth-child(1) { + margin-left: 0rpx; +} + +.choose-box .item { + margin-left: 15rpx; + padding: 8rpx; +} + +.choose-box .item:nth-child(1) { + margin-left: 0rpx; +} + +.dir-box { + justify-content: flex-start; +} + +.dir-box,.dir-parent-box { + align-items: center; + display: flex; + flex-direction: row; + width: 100%; +} + +.dir-parent-box { + justify-content: center; + margin-top: 15rpx; +} + +.dir-parent-box .title { + width: 120rpx; +} + +.sel-item { + margin: 15rpx; +} + +.sel-border { + border: 1rpx solid #e6b980; + border-radius: 10rpx; + padding: 15rpx; +} + +.audio-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: center; + min-height: 400rpx; + width: 100%; +} \ No newline at end of file diff --git a/packagecard/moments/publish/momentpublishline.js b/packagecard/moments/publish/momentpublishline.js new file mode 100755 index 0000000..4f40e56 --- /dev/null +++ b/packagecard/moments/publish/momentpublishline.js @@ -0,0 +1,759 @@ +var t = require("../../../@babel/runtime/helpers/defineProperty"), a = getApp(), e = wx.getRecorderManager(), i = wx.createInnerAudioContext(), s = requirePlugin("chooseLocation"), n = { + latitude: 39.90877, + longitude: 116.39695 +}; + +Page({ + data: { + uploadCount: 0, + uploadVideoCount: 0, + currentIndex: 0, + columnId: "", + fieldList: [], + textList: [], + textareaList: [], + audioList: [], + videoList: [], + photoList: [], + linkList: [], + locationList: [], + isShowText: !1, + isShowDesc: !1, + isShowPhoto: !1, + isShowLink: !1, + isShowAudio: !1, + isShowVideo: !1, + isShowTags: !1, + isShowType: !1, + tempText: "", + tempDesc: "", + linkStr: "", + map: null, + waitFlag: !1, + isStartRecord: !1, + speck_time: 0, + speedStep: 5, + setInter: "", + currentItem: void 0, + isAuthAudio: !1, + title: "栏目内容发布", + curMutliIndex: 0, + displayType: [ { + name: "九宫格", + id: 1 + }, { + name: "轮播", + id: 2 + }, { + name: "轮播(自动)", + id: 3 + }, { + name: "平铺", + id: 4 + } ], + selDisplayType: 1, + displayTypeStr: "九宫格", + maxDuration: 60 + }, + onLoad: function(t) { + this.setData({ + columnId: t.id, + title: t.title + "发布" + }), wx.setNavigationBarTitle({ + title: t.title + "发布" + }); + this.checkPermission(), this.getFieldList(); + }, + getFieldList: function() { + wx.showLoading({ + title: "加载中..." + }); + var t = this; + a.http.get(a.urls.getMomentsField.format({ + configColumnId: t.data.columnId + }), { + header: { + token: a.globalData.token + } + }).then(function(a) { + wx.hideLoading({}), a.data.forEach(function(t, a) { + switch (t.order = a, t.dataType) { + case "2": + case "3": + case "4": + case "5": + case "6": + t.valueList = []; + break; + + case "8": + t.index = 0, t.value = t.dictionariesList[0].dataId; + break; + + case "9": + t.selValue = "请选择", t.selIndexs = [], t.dictionariesList.forEach(function(t) { + t.isSel = !1; + }); + } + }), t.setData({ + fieldList: a.data + }); + }).catch(function(t) { + wx.hideLoading({}), console.log(t); + }); + }, + inputText: function(t) { + var a, e = t.currentTarget.dataset.index; + 1 != t.currentTarget.dataset.type ? ((a = this).data.fieldList[e].value = t.detail.value, + a.setData({ + fieldList: a.data.fieldList + })) : ((a = this).data.fieldList[e].order = t.detail.value, a.setData({ + fieldList: a.data.fieldList + })); + }, + checkPermission: function() { + var t = this; + wx.getSetting({ + success: function(a) { + var e = a.authSetting["scope.record"]; + void 0 === e ? wx.authorize({ + scope: "scope.record", + success: function() { + t.setData({ + isAuthAudio: !0 + }); + }, + fail: function() { + t.setData({ + isAuthAudio: !1 + }); + } + }) : e || t.openSetting(); + } + }); + }, + openSetting: function() { + wx.showModal({ + title: "提示", + content: "发布内容需要您授权录音权限.", + success: function(t) { + t.confirm && wx.openSetting({ + withSubscriptions: !0 + }); + } + }); + }, + onShow: function() { + if (null != s.getLocation()) { + var t = this.data.fieldList[this.data.curMapIndex]; + t.valueList.length < t.maxCount && (this.data.fieldList[this.data.curMapIndex].valueList.push(s.getLocation()), + this.setData({ + fieldList: this.data.fieldList + })); + } + var a = this; + wx.getSetting({ + withSubscriptions: !0, + success: function(t) { + var e = t.authSetting["scope.record"]; + a.setData({ + isAuthAudio: e + }); + } + }); + }, + pickerChange: function(t) { + var a = t.currentTarget.dataset.index, e = t.detail.value; + this.data.fieldList[a].index = e, this.data.fieldList[a].value = this.data.fieldList[a].dictionariesList[e].dataId, + this.setData({ + fieldList: this.data.fieldList + }); + }, + confirmSel: function(t) { + var a = t.detail, e = (a.piacker, a.value); + this.setData({ + selDisplayType: e.id, + displayTypeStr: e.name, + isShowType: !1 + }); + }, + cancelSel: function(t) { + this.setData({ + isShowType: !1 + }); + }, + onUnload: function() { + s.setLocation(null), this.setData({ + map: null + }); + }, + chooseVideo: function(t) { + var a = this, e = t.currentTarget.dataset.item, i = e.maxCount - e.valueList.length, s = t.currentTarget.dataset.index; + wx.chooseMedia({ + count: Number.parseInt(i), + mediaType: [ "video" ], + sourceType: [ "camera", "album" ], + maxDuration: 60, + success: function(t) { + console.log(t), t.tempFiles.length > 0 && (t.tempFiles[0].duration <= a.data.maxDuration ? a.doUploadVideo(s, t.tempFiles, a.data.uploadVideoCount) : wx.showToast({ + title: "视频最长60秒", + icon: "none" + })); + }, + fail: function(t) {} + }); + }, + doUploadVideo: function(t, e, i) { + wx.showLoading({ + title: "上传中..." + }); + var s = this, n = e.length; + s.data.uploadVideoCount < n ? a.http.upload(a.urls.doUploadVideo, { + path: e[s.data.uploadVideoCount].tempFilePath, + name: "video", + header: { + token: a.globalData.token + } + }).then(function(a) { + wx.hideLoading({}); + var i = JSON.parse(a).data; + s.doUploadVideoImg(t, i, e, s.data.uploadVideoCount); + }).catch(function(a) { + wx.hideLoading({}), s.setData({ + uploadVideoCount: ++s.data.uploadVideoCount + }), s.doUploadVideo(t, e, s.data.uploadVideoCount); + }) : (wx.hideLoading({}), s.setData({ + uploadVideoCount: 0 + })); + }, + doUploadVideoImg: function(t, e, i, s) { + wx.showLoading({ + title: "上传中..." + }); + var n = this; + a.http.upload(a.urls.doUploadImg, { + path: i[n.data.uploadVideoCount].thumbTempFilePath, + name: "image", + header: { + token: a.globalData.token + } + }).then(function(s) { + console.log(s), wx.hideLoading({}); + var o = a.baseUrls.baseCardUrl + e, d = a.baseUrls.baseCardUrl + JSON.parse(s).data, r = JSON.parse(s).data, l = { + id: e, + thumbId: r, + path: o, + imgPath: d + }; + n.data.fieldList[t].valueList.push(l), n.setData({ + fieldList: n.data.fieldList + }), n.setData({ + uploadVideoCount: ++n.data.uploadVideoCount + }), n.doUploadVideo(t, i, n.data.uploadVideoCount); + }).catch(function(a) { + console.log(a), wx.hideLoading({}), n.setData({ + uploadVideoCount: ++n.data.uploadVideoCount + }), n.doUploadVideo(t, i, n.data.uploadVideoCount); + }); + }, + viewVideo: function(t) { + var a = [ { + url: t.currentTarget.dataset.url, + type: "video" + } ]; + wx.previewMedia({ + sources: a, + current: 0, + showmenu: !1 + }); + }, + delVideo: function(t) { + var a = this, e = t.currentTarget.dataset.index, i = t.currentTarget.dataset.idx; + wx.showModal({ + title: "提示", + content: "确定要删除该视频吗?", + cancelText: "取消", + confirmText: "确定", + success: function(t) { + t.confirm && (a.data.fieldList[e].valueList.splice(i, 1), a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + addLink: function() { + for (var t = null, a = 0; a < this.data.items.length; a++) if ("LINK" == this.data.items[a].type) { + t = this.data.items[a]; + break; + } + if (this.data.linkList.length < t.count) { + if ("" == this.data.linkStr) return void wx.showToast({ + title: "请输入文字内容", + icon: "error" + }); + this.data.linkList.push(this.data.linkStr), this.setData({ + linkList: this.data.linkList, + linkStr: "" + }), this.data.linkList.length == t.count && this.setData({ + isShowLink: !1 + }); + } + }, + addDesc: function() { + for (var t = null, a = 0; a < this.data.items.length; a++) if ("TEXTAREA" == this.data.items[a].type) { + t = this.data.items[a]; + break; + } + if (this.data.textareaList.length < t.count) { + if ("" == this.data.tempDesc) return void wx.showToast({ + title: "请输入文字内容", + icon: "error" + }); + this.data.textareaList.push(this.data.tempDesc), this.setData({ + textareaList: this.data.textareaList, + tempDesc: "" + }), this.data.textareaList.length == t.count && this.setData({ + isShowDesc: !1 + }); + } + }, + addStr: function() { + for (var t = null, a = 0; a < this.data.items.length; a++) if ("TEXT" == this.data.items[a].type) { + t = this.data.items[a]; + break; + } + if (this.data.textList.length < t.count) { + if ("" == this.data.tempText) return void wx.showToast({ + title: "请输入文字内容", + icon: "error" + }); + this.data.textList.push(this.data.tempText), this.setData({ + textList: this.data.textList, + tempText: "" + }), this.data.textList.length == t.count && this.setData({ + isShowText: !1 + }); + } + }, + delText: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.textList.splice(t.currentTarget.dataset.index, 1), a.setData({ + textList: a.data.textList + })); + } + }); + }, + delLink: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.linkList.splice(t.currentTarget.dataset.index, 1), a.setData({ + linkList: a.data.linkList + })); + } + }); + }, + delDesc: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.textareaList.splice(t.currentTarget.dataset.index, 1), a.setData({ + textareaList: a.data.textareaList + })); + } + }); + }, + textInput: function(a) { + this.setData(t({}, a.currentTarget.id, a.detail.value)); + }, + onHide: function(t) { + this.setData({ + isShowText: !1, + isShowDesc: !1, + isShowPhoto: !1, + isShowLink: !1, + isShowAudio: !1, + isShowVideo: !1, + isShowTags: !1, + isShowType: !1 + }); + }, + chooseTags: function(t) { + var a = t.currentTarget.dataset.idx; + this.data.fieldList[this.data.currentIndex].dictionariesList[a].isSel = !this.data.fieldList[this.data.currentIndex].dictionariesList[a].isSel, + this.setData({ + fieldList: this.data.fieldList + }); + var e = "", i = ""; + this.data.fieldList[this.data.currentIndex].dictionariesList.forEach(function(t) { + t.isSel && (e += t.dataName + ",", i += t.dataId + ","); + }), e = e.substr(0, e.length - 1), i = i.substr(0, i.length - 1), this.data.fieldList[this.data.currentIndex].selValue = e, + this.data.fieldList[this.data.currentIndex].value = i, this.setData({ + fieldList: this.data.fieldList + }); + }, + selTags: function() { + this.setData({ + isShowTags: !1 + }); + }, + choosePhoto: function(t) { + var a = this, e = t.currentTarget.dataset.item, i = t.currentTarget.dataset.index, s = e.maxCount - e.valueList.length; + wx.chooseImage({ + count: Number.parseInt(s), + sourceType: [ "album", "camera" ], + success: function(t) { + console.log(t), a.doUploadImg(i, t.tempFilePaths, a.data.uploadCount); + }, + fail: function(t) {} + }); + }, + delImg: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该图片吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.fieldList[t.currentTarget.dataset.itemindex].valueList.splice(t.currentTarget.dataset.index, 1), + a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + viewImg: function(t) { + var a = [ t.currentTarget.dataset.url ]; + wx.previewImage({ + urls: a, + current: t.currentTarget.dataset.url + }); + }, + doUploadImg: function(t, e, i) { + wx.showLoading({ + title: "上传中..." + }); + var s = this, n = e.length; + s.data.uploadCount < n ? a.http.upload(a.urls.doUploadImg, { + path: e[s.data.uploadCount], + name: "image", + header: { + token: a.globalData.token + } + }).then(function(i) { + wx.hideLoading({}); + var n = JSON.parse(i).data, o = { + id: n, + path: a.baseUrls.baseCardUrl + n + }; + s.data.fieldList[t].valueList.push(o), s.setData({ + fieldList: s.data.fieldList + }), s.setData({ + uploadCount: ++s.data.uploadCount + }), s.doUploadImg(t, e, s.data.uploadCount); + }).catch(function(a) { + wx.hideLoading({}), s.setData({ + uploadCount: ++s.data.uploadCount + }), s.doUploadImg(t, e, s.data.uploadCount); + }) : (wx.hideLoading({}), s.setData({ + uploadCount: 0 + })); + }, + chooseLocation: function(t) { + var a = t.currentTarget.dataset.index; + this.setData({ + curMapIndex: a + }); + var e = JSON.stringify(n); + wx.navigateTo({ + url: "plugin://chooseLocation/index?key=".concat("HVDBZ-KJGKF-DNMJR-JHEWI-H2HN7-23BMS", "&referer=").concat("市域自治与互助", "&location=").concat(e, "&category=").concat("生活服务,娱乐休闲") + }); + }, + delMap: function(t) { + wx.showModal({ + title: "提示", + content: "确定要删除该条数据吗?", + cancelText: "取消", + confirmText: "确定", + success: function(a) { + a.confirm && (_self.data.fieldList[t.currentTarget.dataset.index].valueList.splice(t.currentTarget.dataset.idx, 1), + _self.setData({ + fieldList: _self.data.fieldList + })); + } + }); + }, + delAudio: function(t) { + var a = this; + wx.showModal({ + title: "提示", + content: "确定要删除该音频吗?", + cancelText: "取消", + confirmText: "确定", + success: function(e) { + e.confirm && (a.data.fieldList[t.currentTarget.dataset.index].valueList.splice(t.currentTarget.dataset.idx, 1), + a.setData({ + fieldList: a.data.fieldList + })); + } + }); + }, + doStartRecord: function() { + var t = this; + wx.getSetting({ + success: function(a) { + a.authSetting["scope.record"] ? t.startRecord() : wx.authorize({ + scope: "scope.record", + success: function() { + t.startRecord(); + } + }); + } + }); + }, + startRecord: function() { + var t = this; + t.data.setInter = setInterval(function() { + var a = parseInt(t.data.speck_time + 1); + t.setData({ + speck_time: parseInt(a), + isStartRecord: !0 + }), t.data.speck_time > 0 && t.data.speck_time <= 59 ? t.start() : (clearInterval(t.data.setInter), + t.stop(), wx.showToast({ + title: "录音最长60S哦!", + duration: 2e3, + icon: "none" + })); + }, 1e3); + }, + doEndRecord: function() { + clearInterval(this.data.setInter), this.data.speck_time > 10 ? (clearInterval(this.data.setInter), + this.stop(!0), this.setData({ + speck_time: "0", + isStartRecord: !1 + })) : (clearInterval(this.data.setInter), this.stop(!1), wx.showToast({ + title: "时间需大于10秒", + duration: 2e3, + icon: "none" + }), this.setData({ + speck_time: "0", + isStartRecord: !1 + })); + }, + start: function() { + e.start({ + duration: 6e4, + format: "mp3" + }), e.onStart(function() { + console.log("recorder start"); + }), e.onError(function(t) { + console.log(t), _self.stop(!1); + }); + }, + stop: function(t) { + var a = this; + e.stop(), e.onStop(function(e) { + t && a.doUploadAudio(e); + }); + }, + doUploadAudio: function(t) { + wx.showLoading({ + title: "上传中..." + }); + var e = this; + a.http.upload(a.urls.doUploadAudio, { + path: t.tempFilePath, + name: "audio", + header: { + token: a.globalData.token + } + }).then(function(i) { + if (wx.hideLoading({}), e.data.fieldList[e.data.currentIndex].valueList.length < e.data.currentItem.maxCount) { + wx.hideLoading({}); + var s = JSON.parse(i).data, n = a.baseUrls.baseCardUrl + s, o = parseInt(t.duration / 1e3), d = parseInt(o / 60), r = parseInt(o % 60), l = { + id: s, + path: n, + isPlay: !1, + duration: o, + curDuation: 0, + curDurationStr: "00:00", + totalDurationStr: (d > 9 ? d : "0" + d) + ":" + (+r > 9 ? r : "0" + r) + }; + e.data.fieldList[e.data.currentIndex].valueList.push(l), e.setData({ + fieldList: e.data.fieldList + }), e.data.fieldList[e.data.currentIndex].valueList.length == e.data.currentItem.maxCount && e.setData({ + isShowAudio: !1 + }); + } + }).catch(function(t) {}); + }, + play: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.idx, s = t.currentTarget.dataset.item, n = this; + n.data.fieldList[a].valueList.forEach(function(t) { + t.isPlay && i.stop(), t.isPlay = !1, t.curDuation = 0, t.curDuationStr = "00:00"; + }), s.isPlay || ((i = wx.createInnerAudioContext()).src = n.data.fieldList[a].valueList[e].path, + i.autoplay = !0), i.onPlay(function() { + n.data.fieldList[a].valueList[e].isPlay = !0, n.setData({ + fieldList: n.data.fieldList + }); + }), i.onCanplay(function(t) { + n.data.waitFlag && (i.play(), n.setData({ + waitFlag: !1 + })); + }), i.onStop(function(t) { + n.data.fieldList[a].valueList[e].isPlay = !1, n.data.fieldList[a].valueList[e].curDuration = 0, + n.data.fieldList[a].valueList[e].curDurationStr = "00:00", n.setData({ + fieldList: n.data.fieldList + }); + }), i.onEnded(function(t) { + n.data.fieldList[a].valueList[e].isPlay = !1, n.data.fieldList[a].valueList[e].curDuration = 0, + n.data.fieldList[a].valueList[e].curDurationStr = "00:00", n.setData({ + fieldList: n.data.fieldList + }); + }), i.onError(function(t) { + n.data.fieldList[a].valueList[e].isPlay = !1, n.data.fieldList[a].valueList[e].curDuration = 0, + n.data.fieldList[a].valueList[e].curDurationStr = "00:00", n.setData({ + fieldList: n.data.fieldList + }); + }), i.onSeeking(function() { + console.log(i.currentTime); + }), i.onWaiting(function() { + i.pause(), n.setData({ + waitFlag: !0 + }); + }), i.onTimeUpdate(function() { + if (i.duration != 1 / 0) { + n.data.fieldList[a].valueList[e].curDuration = parseInt(i.currentTime), n.data.fieldList[a].valueList[e].duration = parseInt(i.duration), + console.log(i.duration); + var t = parseInt(i.currentTime / 60), s = parseInt(i.currentTime % 60), o = parseInt(i.duration / 60), d = parseInt(i.duration % 60), r = t > 9 ? t : "0" + t, l = s > 9 ? s : "0" + s, u = o > 9 ? o : "0" + o, c = +d > 9 ? d : "0" + d; + n.data.fieldList[a].valueList[e].curDurationStr = r + ":" + l, n.data.fieldList[a].valueList[e].totalDurationStr = u + ":" + c, + n.setData({ + fieldList: n.data.fieldList + }); + } + }); + }, + rewind: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.idx; + t.currentTarget.dataset.item.isPlay && (this.data.fieldList[a].valueList[e].curDuration = this.data.fieldList[a].valueList[e].curDuration - this.data.speedStep, + i.seek(this.data.fieldList[a].valueList[e].curDuration), this.setData({ + fieldList: this.data.fieldList + })); + }, + speed: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.idx; + t.currentTarget.dataset.item.isPlay && (this.data.fieldList[a].valueList[e].curDuration = this.data.fieldList[a].valueList[e].curDuration + this.data.speedStep, + i.seek(this.data.fieldList[a].valueList[e].curDuration), this.setData({ + fieldList: this.data.fieldList + })); + }, + slider4change: function(t) { + t.currentTarget.dataset.item.isPlay && i.seek(t.detail.value); + }, + showDialog: function(t) { + console.log(t), this.setData({ + isShowAudio: !0, + currentItem: t.currentTarget.dataset.item, + currentIndex: t.currentTarget.dataset.index + }); + }, + showDisplayType: function(t) { + this.setData({ + isShowType: !0 + }); + }, + chooseDisplayType: function(t) { + var a = t.currentTarget.dataset.id; + this.setData({ + selDisplayType: a + }); + }, + showMutliSel: function(t) { + this.setData({ + isShowTags: !0, + currentIndex: t.currentTarget.dataset.index + }); + }, + doPublish: function() { + if (this.checkParams()) { + wx.showToast({ + title: "保存中..." + }); + var t = this.buildParams(); + console.log(t), a.http.post(a.urls.doSaveMoments.format({ + configColumnId: this.data.columnId + }), { + data: t, + header: { + token: a.globalData.token + } + }).then(function(t) { + wx.hideLoading({}); + var a = getCurrentPages(); + a[a.length - 2].setData({ + isRefresh: !0 + }), wx.navigateBack({ + delta: 1 + }); + }).catch(function(t) { + console.log(t); + }); + } + }, + checkParams: function() { + for (var t = !0, a = 0; a < this.data.fieldList.length; a++) { + var e = this.data.fieldList[a]; + if (e.must) if ("1" == e.dataType || "7" == e.dataType || "8" == e.dataType || "9" == e.dataType) { + if (e.value.length <= 0) { + wx.showToast({ + title: "请输入或选择" + e.comment, + icon: "none" + }), t = !1; + break; + } + } else if (e.valueList.length <= 0) { + wx.showToast({ + title: "请上传" + e.comment, + icon: "none" + }), t = !1; + break; + } + } + return t; + }, + buildParams: function() { + for (var t = {}, a = 0; a < this.data.fieldList.length; a++) { + var e = this.data.fieldList[a]; + if ("1" == e.dataType || "7" == e.dataType || "8" == e.dataType || "9" == e.dataType) e.value.length > 0 && (t[e.name] = e.value); else if (e.valueList.length > 0) { + var i = ""; + "6" == e.dataType ? e.valueList.forEach(function(t) { + i += t.latitude + "," + t.longitude + "-"; + }) : "4" == e.dataType ? e.valueList.forEach(function(t) { + i += t.id + "&" + t.thumbId + ","; + }) : "3" == e.dataType ? e.valueList.forEach(function(t) { + i += t.id + "&" + t.duration + ","; + }) : "2" == e.dataType ? (e.valueList.forEach(function(t) { + i += t.id + ","; + }), i = i.substr(0, i.length - 1), i += "@" + this.data.selDisplayType) : e.valueList.forEach(function(t) { + i += t.id + ","; + }), "2" != e.dataType && (i = i.substr(0, i.length - 1)), t[e.name] = i; + } + } + return t; + } +}); \ No newline at end of file diff --git a/packagecard/moments/publish/momentpublishline.json b/packagecard/moments/publish/momentpublishline.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/moments/publish/momentpublishline.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/moments/publish/momentpublishline.wxml b/packagecard/moments/publish/momentpublishline.wxml new file mode 100755 index 0000000..0248cfa --- /dev/null +++ b/packagecard/moments/publish/momentpublishline.wxml @@ -0,0 +1,225 @@ + + + + + + {{item.comment}} + + + + + + + {{item.comment}} + + + + + + + + + + + + {{item.comment}}{{item.valueList.length}}/{{item.maxCount}} + + + + + + + + {{it.name}} + + + + + + + + + + + + + + + + + + + + {{item.comment}} + + {{item.valueList.length}}/{{item.maxCount}} + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + 语音,可以给名片访客留下更深的印象 + + + 点击添加 + + + + + {{item.comment}} + {{item.valueList.length}}/{{item.maxCount}} + + + + + + + + + + + + + + + + + + {{item.comment}} + + + + + + + {{item.comment}} + + + + + + + + {{m.name}}-{{m.address}} + + + + + + + + + + + + + 在地图上选取一个地点 + + + 点击添加 + + + + + {{item.comment}} + + {{item.dictionariesList[item.index].dataName}} + + + + + + {{item.comment}} + + {{item.selValue}} + + + + + + + + + + + + + + + + + + 00:{{speck_time>9?speck_time:'0'+speck_time}} + 长按录音 + + + + {{audioFile.isPlay?'播放中:'+speck_time+'秒':'时长:'+audioFile.duration+'秒'}} + + 点击播放 + 删除 + + + + + + + 点击添加 + + + + + + 点击添加 + + + + + 相册 + 相机 + + + + + 相册 + 相机 + + + + + + 点击添加 + + + + + + + {{item.dataName}} + + + + + + + diff --git a/packagecard/moments/publish/momentpublishline.wxss b/packagecard/moments/publish/momentpublishline.wxss new file mode 100755 index 0000000..7d10764 --- /dev/null +++ b/packagecard/moments/publish/momentpublishline.wxss @@ -0,0 +1,45 @@ +van-action-sheet input { + height: 60rpx; + line-height: 60rpx; + padding-left: 10rpx; +} + +van-action-sheet input,van-action-sheet textarea { + border: 1px solid #c2c2c2; + border-radius: 10rpx; + margin-top: 9rpx; +} + +van-action-sheet textarea { + padding: 10rpx; +} + +van-action-sheet .line { + border-bottom: 1rpx solid #f5f5f5; + border-top: 1rpx solid #f5f5f5; +} + +van-action-sheet .line,van-action-sheet .noline { + height: 90rpx; + line-height: 90rpx; + text-align: center; + width: 90%; +} + +van-action-sheet .line:active,van-action-sheet .noline:active { + background-color: #f5f5f5; + color: #000; +} + +.cu-form-group .title { + min-width: calc(4em + 30rpx); +} + +.item-bottom-margin { + margin-bottom: 15rpx; + width: 100%; +} + +.item-padding { + padding: 15rpx; +} \ No newline at end of file diff --git a/packagecard/moments/showlist/showlist.js b/packagecard/moments/showlist/showlist.js new file mode 100755 index 0000000..8c3e00e --- /dev/null +++ b/packagecard/moments/showlist/showlist.js @@ -0,0 +1,320 @@ +var t = getApp(), a = wx.createInnerAudioContext(); + +Page({ + data: { + currentIndex: 0, + tabList: [], + curId: "", + tempUserId: "", + dataList: [], + speedStep: 5, + waitFlag: !1, + topHeight: t.globalData.CustomBar, + currentTab: "", + count: 3 + }, + onLoad: function(t) { + console.log(t.userId), this.setData({ + curId: t.id, + tempUserId: t.userId + }), wx.setNavigationBarTitle({ + title: "栏目" + }), this.getTabs(); + }, + getTabs: function() { + var a = this; + wx.showLoading({ + title: "加载中..." + }), t.http.get(t.urls.getMainColumn, { + header: { + token: t.globalData.token + }, + data: { + cardTemplateUseId: a.data.tempUserId + } + }).then(function(t) { + for (var e = 0; e < t.data.length; e++) t.data[e].configColumnId == a.data.curId && a.setData({ + currentTab: t.data[e], + currentIndex: e + }); + wx.hideLoading({}), a.setData({ + tabList: t.data + }), a.getMainMoment(a.data.curId); + }).catch(function(t) { + wx.hideLoading({}); + }); + }, + onChange: function(t) { + var a = t.detail.index, e = this.data.tabList[a].configColumnId; + console.log(e); + this.setData({ + currentIndex: a, + currentTab: this.data.tabList[a] + }), this.getMainMoment(e); + }, + getMainMoment: function(a) { + wx.showLoading({ + title: "加载中..." + }); + var e = this; + t.http.get(t.urls.getMainMoment.format({ + configColumnId: a + }), { + header: { + token: t.globalData.token + }, + data: { + userId: e.data.tempUserId + } + }).then(function(t) { + wx.hideLoading({}), e.buildMainData(t.data); + }).catch(function(t) { + wx.hideLoading({}); + }); + }, + buildMainData: function(a) { + var e = this, i = ""; + a.forEach(function(a) { + var n = e.data.tabList[e.data.currentIndex], s = "2" == n.configColumnCollect || "4" == n.configColumnCollect || "2" == n.configColumnLike && "4" == n.configColumnLike || "2" == n.configColumnDispatch || "4" == n.configColumnDispatch || "2" == n.configColumnComment || "4" == n.configColumnComment; + a.cId = e.data.tabList[e.data.currentIndex].configColumnId, a.collectSwitch = e.data.tabList[e.data.currentIndex].configColumnCollect, + a.commentSwitch = e.data.tabList[e.data.currentIndex].configColumnComment, a.shareSwitch = e.data.tabList[e.data.currentIndex].configColumnDispatch, + a.likeSwitch = e.data.tabList[e.data.currentIndex].configColumnLike, a.funcSwitch = s, + i += a.uid + ",", a.collectCount = 0, a.collectStatus = !1, a.commentCount = 0, + a.dispatchCount = 0, a.likeCount = 0, a.likeStatus = !1, a.scansCount = 0, a.list.forEach(function(a) { + switch (a.dataType) { + case "2": + var e = a.value.split("@"); + e.length > 1 ? a.dataMode = e[1] : a.dataMode = "1"; + var i = e[0].split(","), n = []; + i.forEach(function(a) { + if (a.length > 0) { + var e = { + id: a, + path: t.baseUrls.baseCardUrl + a + }; + n.push(e); + } + }), a.valueList = n; + break; + + case "3": + i = a.value.split(","), n = []; + i.forEach(function(a) { + if (a.length > 0) { + var e = a.split("&"), i = "00:00"; + if (e.length > 1) { + var s = e[1], d = parseInt(s / 60), r = parseInt(s % 60); + i = (d > 9 ? d : "0" + d) + ":" + (+r > 9 ? r : "0" + r); + } + var o = { + id: e[0], + path: t.baseUrls.baseCardUrl + e[0], + isPlay: !1, + duration: 1e5, + curDuration: 0, + curDurationStr: "00:00", + totalDurationStr: i + }; + n.push(o); + } + }), a.valueList = n; + break; + + case "4": + i = a.value.split(","), n = []; + for (var s = 0; s < i.length; s++) if (i[s].length > 0) { + var d = i[s].split("&"), r = { + path: t.baseUrls.baseCardUrl + d[0], + imgPath: t.baseUrls.baseCardUrl + d[1] + }; + n.push(r); + } + a.valueList = n; + break; + + case "6": + i = a.value.split("-"), n = []; + i.forEach(function(t) { + if (t.length > 0) { + var a = t.split(","), e = { + name: "", + address: "", + latitude: a[0], + longitude: a[1] + }; + n.push(e); + } + }), a.valueList = n; + break; + + case "8": + a.dictionariesList.forEach(function(t) { + -1 != a.value.indexOf(t.dataId) && (a.selValue = t.dataName); + }); + break; + + case "9": + a.dictionariesList.forEach(function(t) { + -1 != a.value.indexOf(t.dataId) ? t.isSel = !0 : t.isSel = !1; + }); + } + }); + }), e.setData({ + dataList: a + }), e.data.dataList.length > 0 && e.getColumnContentHandle(i); + }, + getColumnContentHandle: function(a) { + var e = this; + wx.showLoading({ + title: "加载中..." + }), t.http.get(t.urls.getColumnContentHandle.format({ + projectId: "column", + businessIds: a + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), t.data.forEach(function(t) { + e.data.dataList.forEach(function(a) { + a.uid == t.businessId && (a.collectCount = t.collectCount, a.collectStatus = t.collectStatus, + a.commentCount = t.commentCount, a.dispatchCount = t.dispatchCount, a.likeCount = t.likeCount, + a.likeStatus = t.likeStatus, a.scansCount = t.scansCount); + }); + }), e.setData({ + dataList: e.data.dataList + }); + }).catch(function(t) {}); + }, + viewImg: function(t) { + var a = [], e = t.currentTarget.dataset.values; + this.setData({ + isNeedRefresh: !1 + }), e.forEach(function(t) { + a.push(t.path); + }), wx.previewImage({ + urls: a, + current: t.currentTarget.dataset.cur + }); + }, + viewVideo: function(t) { + var a = t.currentTarget.dataset.url; + wx.previewMedia({ + sources: [ { + url: a, + type: "video" + } ] + }); + }, + play: function(t) { + var e = this, i = t.currentTarget.dataset.index, n = t.currentTarget.dataset.i, s = t.currentTarget.dataset.a, d = t.currentTarget.dataset.item; + e.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + "3" == t.dataType && t.valueList && t.valueList.forEach(function(t) { + t.isPlay && a.stop(), t.isPlay = !1, t.curDuration = 0, t.curDuationStr = "00:00"; + }); + }); + }), d.isPlay ? a.stop() : ((a = wx.createInnerAudioContext()).src = e.data.dataList[i].list[n].valueList[s].path + ".mp3", + a.autoplay = !0), a.onPlay(function() { + console.log("onPlay"), e.data.dataList[i].list[n].valueList[s].isPlay = !0, e.setData({ + dataList: e.data.dataList + }); + }), a.onCanplay(function(t) {}), a.onStop(function(t) { + e.data.dataList[i].list[n].valueList[s].isPlay = !1, e.data.dataList[i].list[n].valueList[s].curDuration = 0, + e.data.dataList[i].list[n].valueList[s].curDurationStr = "00:00", e.setData({ + dataList: e.data.dataList + }), a.destroy(); + }), a.onEnded(function(t) { + e.data.dataList[i].list[n].valueList[s].isPlay = !1, e.data.dataList[i].list[n].valueList[s].curDuration = 0, + e.data.dataList[i].list[n].valueList[s].curDurationStr = "00:00", e.setData({ + dataList: e.data.dataList + }), a.destroy(); + }), a.onError(function(t) { + e.data.dataList[i].list[n].valueList[s].isPlay = !1, e.data.dataList[i].list[n].valueList[s].curDuration = 0, + e.data.dataList[i].list[n].valueList[s].curDurationStr = "00:00", e.setData({ + dataList: e.data.dataList + }), a.destroy(); + }), a.onSeeking(function() {}), a.onWaiting(function() {}), a.onTimeUpdate(function() { + if (a.duration != 1 / 0) { + e.data.dataList[i].list[n].valueList[s].curDuration = parseInt(a.currentTime), e.data.dataList[i].list[n].valueList[s].duration = parseInt(a.duration); + var t = parseInt(a.currentTime / 60), d = parseInt(a.currentTime % 60), r = parseInt(a.duration / 60), o = parseInt(a.duration % 60), u = t > 9 ? t : "0" + t, c = d > 9 ? d : "0" + d, l = r > 9 ? r : "0" + r, h = +o > 9 ? o : "0" + o; + e.data.dataList[i].list[n].valueList[s].curDurationStr = u + ":" + c, e.data.dataList[i].list[n].valueList[s].totalDurationStr = l + ":" + h, + e.setData({ + dataList: e.data.dataList + }); + } + }); + }, + rewind: function(t) { + var e = t.currentTarget.dataset.index, i = t.currentTarget.dataset.item, n = t.currentTarget.dataset.a, s = t.currentTarget.dataset.i; + i.isPlay && (this.data.dataList[e].list[s].valueList[n].curDuration = this.data.dataList[e].list[s].valueList[n].curDuration - this.data.speedStep, + a.seek(this.data.dataList[e].list[s].valueList[n].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + speed: function(t) { + var e = t.currentTarget.dataset.index, i = t.currentTarget.dataset.item, n = t.currentTarget.dataset.a, s = t.currentTarget.dataset.i; + i.isPlay && (this.data.dataList[e].list[s].valueList[n].curDuration = this.data.dataList[e].list[s].valueList[n].curDuration + this.data.speedStep, + a.seek(this.data.dataList[e].list[s].valueList[n].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + slider4change: function(t) { + t.currentTarget.dataset.index; + t.currentTarget.dataset.item.isPlay && a.seek(t.detail.value); + }, + onUnload: function(t) { + a && a.stop(); + }, + showDetail: function(t) { + if (-1 != this.data.currentTab.configColumnType.indexOf("dda5007c-5fb7-48f2-8537-3cb8ea298242")) { + var a = this.data.currentTab.configColumnId, e = t.currentTarget.dataset.uid; + console.log(t), wx.navigateTo({ + url: "/packagecard/moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + }); + } + }, + showComment: function(t) { + var a = t.currentTarget.dataset.cid, e = t.currentTarget.dataset.uid, i = t.currentTarget.dataset.like, n = "&collectSwitch=" + t.currentTarget.dataset.collect + "&likeSwitch=" + i + "&commentSwitch=" + t.currentTarget.dataset.comment + "&shareSwitch=" + t.currentTarget.dataset.share; + console.log(n), wx.navigateTo({ + url: "/packagecard/moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + n + }); + }, + doLike: function(a) { + var e = this, i = a.currentTarget.dataset.item, n = a.currentTarget.dataset.index, s = ""; + s = i.likeStatus ? "取消中..." : "保存中...", wx.showLoading({ + title: s + }), t.http.post(t.urls.doSaveLike, { + header: { + token: t.globalData.token + }, + data: { + businessId: i.uid, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), e.data.dataList[n].likeStatus = !i.likeStatus, i.likeStatus ? --e.data.dataList[n].likeCount : ++e.data.dataList[n].likeCount, + e.setData({ + dataList: e.data.dataList + }); + }).catch(function(t) {}); + }, + doCollect: function(a) { + var e = this, i = a.currentTarget.dataset.item, n = a.currentTarget.dataset.index, s = ""; + s = i.collectStatus ? "取消收藏..." : "收藏中...", wx.showLoading({ + title: s + }), t.http.post(t.urls.doSaveCollect, { + header: { + token: t.globalData.token + }, + data: { + businessId: i.uid, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), e.data.dataList[n].collectStatus = !i.collectStatus, e.setData({ + dataList: e.data.dataList + }); + }).catch(function(t) {}); + } +}); \ No newline at end of file diff --git a/packagecard/moments/showlist/showlist.json b/packagecard/moments/showlist/showlist.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/moments/showlist/showlist.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/moments/showlist/showlist.wxml b/packagecard/moments/showlist/showlist.wxml new file mode 100755 index 0000000..b551418 --- /dev/null +++ b/packagecard/moments/showlist/showlist.wxml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + {{child.comment}}: + {{child.selValue}} + + + + + + + + + {{child.comment}} + + + + {{ss.dataName}} + + + + + + + + + + 收藏 + + + + {{item.commentCount>1000?'1000+':item.commentCount}} + + + + {{item.likeCount>1000?'1000+':item.likeCount}} + + + + + + + + + + + diff --git a/packagecard/moments/showlist/showlist.wxss b/packagecard/moments/showlist/showlist.wxss new file mode 100755 index 0000000..fbf5cc6 --- /dev/null +++ b/packagecard/moments/showlist/showlist.wxss @@ -0,0 +1,648 @@ +.tab { + background: #fff; + flex-direction: row; + height: 80rpx; + left: 0; + position: fixed; + right: 0; + z-index: 100; +} + +.tab,.tab-box { + display: flex; +} + +.tab-box { + align-items: center; + color: #000; + font-size: 32rpx; + justify-content: center; +} + +.tab-box.active { + border-bottom: 2px solid #055fe6; + box-sizing: border-box; + color: #055fe6; +} + +.movie-item { + height: 280rpx; + padding-bottom: 0; + width: 100%; +} + +.card-container { + box-sizing: border-box; + height: 0; +} + +.share-btn { + background: #eee; +} + +.card { + background: #fff; + box-sizing: border-box; + height: 0; + overflow: hidden; + position: relative; + width: 100%; +} + +.area-box { + white-space: nowrap; + word-break: break-all; +} + +.card-bgImg { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.person { + padding: 20rpx; +} + +.dynamic-container { + background-color: #fff; + border-radius: 20rpx; + margin-top: -50rpx; + padding: 20rpx; + position: relative; +} + +.dynamic-title image { + height: 30rpx; + margin-top: -4rpx; + vertical-align: middle; + width: 30rpx; +} + +.catelog-title { + justify-content: space-between; + position: relative; +} + +.catelog-title,.catelog-title .action { + align-items: center; + display: flex; +} + +.catelog-title .action { + justify-content: center; + max-width: 100%; + padding-right: 30rpx; +} + +.title { + background: #0054bd; + border-top-left-radius: 48rpx; + border-top-right-radius: 48rpx; + color: #fff; + display: inline-block; + font-size: 30rpx; + margin-bottom: -50rpx; + padding: 10rpx 60rpx 60rpx 10rpx; + position: relative; +} + +.title text { + margin-left: 20rpx; +} + +.column-box,.column-content { + background-color: #fff; + display: flex; + flex-direction: column; + width: 100%; +} + +.column-content { + border-radius: 10rpx; + box-shadow: 0 2px 2px #f0f0f0; + z-index: 2; +} + +.intro-title image,.serve-title image { + height: 30rpx; + margin-top: -4px; + vertical-align: middle; + width: 28rpx; +} + +.person-content { + background: #fff; + border-radius: 20rpx; + color: #000; + font-size: 30rpx; + letter-spacing: 2rpx; + line-height: 40rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; + word-break: break-all; +} + +.column-item { + margin: 0rpx; + padding: 7.5rpx 15rpx; +} + +.column-item:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.column-item:last-child { + padding: 7.5rpx 15rpx 15rpx; +} + +.img-item { + border-radius: 5rpx; + width: 100%; +} + +.img-item:last-child,.img-item:nth-child(1) { + padding: 7.5rpx 0rpx; +} + +.movie-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: center; +} + +.movie-box,.movie-box image { + border-radius: 10rpx; + height: 350rpx; + width: 100%; +} + +.company-title { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.company-title image { + height: 140rpx; + width: 140rpx; +} + +.company-name { + align-items: center; + display: flex; + font-size: 34rpx; + height: 140rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 520rpx; +} + +.company-content { + background: #fff; + border-radius: 20rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; +} + +.company-content image { + border-radius: 20rpx; + height: 300rpx; + width: 100%; +} + +.company .person-content { + margin-top: 0; +} + +.dynamic-title { + display: block; + margin: 0 auto; + width: 710rpx; +} + +.dynamic-box { + background: #fff; + border-radius: 20rpx; + height: 400rpx; + margin-bottom: 20rpx; + overflow: hidden; + position: relative; +} + +.dynamic-box image { + height: 400rpx; + width: 100%; +} + +.dynamic-text { + background: rgba(0,0,0,.6); + bottom: 0; + color: #fff; + font-size: 30rpx; + left: 0; + line-height: 60rpx; + padding: 0 10rpx; + position: absolute; + right: 0; +} + +.person-info { + border-bottom: 1px solid #eee; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; +} + +.avatar { + border-radius: 50%; + height: 120rpx; + overflow: hidden; + width: 120rpx; +} + +.avatar image { + height: 100%; + width: 100%; +} + +.person-name { + width: 530rpx; +} + +.name { + color: #000; + font-size: 32rpx; + margin: 15rpx 0 10rpx; +} + +.time { + color: #b2b2b2; +} + +.dynamic-content { + margin: 20rpx 0; +} + +.dynamic-img { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + position: relative; +} + +.dynamic-img image { + height: 160rpx; + margin-bottom: 10rpx; + margin-right: 2%; + width: 32%; +} + +.dynamic-img image:nth-child(3n) { + margin-right: 0; +} + +.dynamic-img-text { + background: rgba(0,0,0,.6); + bottom: 3rpx; + color: #fff; + font-size: 32rpx; + left: 0; + line-height: 70rpx; + padding: 0 20rpx; + position: absolute; + right: 0; +} + +.dynamic-good { + display: flex; + justify-content: space-between; + margin: 10rpx 0; +} + +.good-count { + color: #333; + font-size: 28rpx; +} + +.good-btn image { + height: 40rpx; + vertical-align: top; + width: 40rpx; +} + +.dynamic-reply { + background: #eee; + margin-top: 15rpx; + padding: 15rpx; +} + +.reply { + color: #000; + font-size: 32rpx; + margin-bottom: 5rpx; +} + +.reply-name { + display: inline; + font-weight: 700; +} + +.dynamic-reply-input { + margin-top: 10rpx; +} + +.dynamic-reply-input input { + border-bottom: 1px solid #eee; + height: 60rpx; + width: 100%; +} + +.creat-card { + align-items: center; + background: #0054bd; + border-radius: 50%; + bottom: 20rpx; + box-sizing: border-box; + flex-direction: column; + height: 140rpx; + justify-content: center; + padding: 20rpx; + position: fixed; + right: 20rpx; + width: 140rpx; + z-index: 100; +} + +.creat-card image { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 80rpx; +} + +.share-save { + display: flex; + justify-content: space-between; + text-align: center; +} + +.share-btn { + background: none; + color: #1296db; +} + +.save-btn,.share-btn { + border: 1px solid #1296db; + font-weight: 400; +} + +.save-btn { + background: #1296db; + color: #fff; +} + +.bottom-btn { + margin-top: 20rpx; + padding: 0 20rpx; + white-space: nowrap; + width: 100%; +} + +.phone-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.wechate-box .icon { + height: 30rpx; + vertical-align: top; + width: 35rpx; +} + +.email-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.bottom-btn-box { + border: 1px solid #ddd; + border-radius: 10rpx; + box-sizing: border-box; + display: inline-block; + line-height: 30rpx; + margin-right: 10rpx; + min-width: 32%; + padding: 20rpx; +} + +.bottom-text { + margin-top: 10rpx; +} + +.top-box { + background-color: #f7f7f7; +} + +.good,.top-box { + padding-bottom: 20rpx; +} + +.good { + background-color: #fff; + display: flex; + justify-content: space-between; + padding-left: 20rpx; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.good-click { + display: flex; +} + +.view-count { + border-right: 1px solid grey; +} + +.view-count,.view-count-no { + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; + margin-right: 30rpx; + padding-right: 30rpx; +} + +.view-count-no { + align-items: center; +} + +.good-avatar image { + height: 100%; + width: 100%; +} + +.good-click image { + height: 38rpx; + width: 38rpx; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.avatar-list { + display: inline-block; + height: 45rpx; + margin-right: 10rpx; + vertical-align: top; + width: 45rpx; +} + +.mid { + background: #0054bd; + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; + margin-top: -20rpx; + padding: 40rpx 0 80rpx; + position: relative; +} + +.mid,.mid-box { + display: flex; +} + +.mid-box { + align-items: center; + background: none; + border-right: 1px solid #2f82ea; + flex: 1; + flex-direction: column; + font-weight: 400; + justify-content: center; + padding: 0!important; + width: auto!important; +} + +.mid-box:last-child { + border: none; +} + +.mid-box image { + height: 60rpx; + margin-bottom: 20rpx; + width: 60rpx; +} + +.mid-box-text { + color: #fff; + font-size: 30rpx; +} + +.mid-btn { + background: #fff; + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; + flex-wrap: wrap; + margin-top: -60rpx; + padding: 30rpx; + position: relative; +} + +.mid-btn,.mid-btn-box { + display: flex; + justify-content: space-between; +} + +.mid-btn-box { + background: #eee; + border-radius: 20rpx; + box-sizing: border-box; + flex-shrink: 0; + margin-bottom: 20rpx; + padding: 15rpx; + width: 49%; +} + +.mid-btn-box:nth-child(3),.mid-btn-box:nth-child(4) { + margin-bottom: 0; +} + +.mid-btn-box image { + height: 80rpx; + width: 80rpx; +} + +.mid-btn-text { + width: 200rpx; +} + +.text-top { + color: #000; + font-size: 30rpx; + line-height: 45rpx; +} + +.text-bottom { + color: #898989; + font-size: 26rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.bar-code { + background: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} + +.bar-code .content { + align-items: center; + background: #fff; + border-radius: 10rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + left: 50%; + max-width: 96%; + min-height: 50%; + min-width: 80%; + padding: 20rpx; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.code-title { + font-weight: 700; +} + +.code-title,.code-txt { + color: #000; + font-size: 32rpx; +} + +.bar-code image { + height: 300rpx; + width: 300rpx; +} \ No newline at end of file diff --git a/packagecard/sharePage/cardcode.js b/packagecard/sharePage/cardcode.js new file mode 100755 index 0000000..8bbc916 --- /dev/null +++ b/packagecard/sharePage/cardcode.js @@ -0,0 +1,55 @@ +var a = getApp(); + +Page({ + data: { + imgUrl: a.baseUrls.baseCardUrl, + animationData: {}, + cardImg: "", + id: "", + contentHeight: a.globalData.windowHeight, + translateUp: {}, + translateDown: {}, + animDuration: 800 + }, + onLoad: function(a) { + this.setData({ + cardImg: a.cardImg, + id: a.id + }), wx.setNavigationBarTitle({ + title: "名片分享" + }); + }, + onReady: function() { + var a = this; + this.setData({ + animationData: {}, + translateDown: {}, + translateUp: {} + }); + var t = wx.createAnimation({ + duration: a.data.animDuration, + timingFunction: "linear", + transformOrigin: "50% 50% 0" + }); + t.rotate(180).step(); + var n = wx.createAnimation({ + duration: a.data.animDuration, + timingFunction: "linear", + transformOrigin: "50% 50% 0" + }); + n.translateY(160).step(); + var i = wx.createAnimation({ + duration: a.data.animDuration, + timingFunction: "linear", + transformOrigin: "50% 50% 0" + }); + i.translateY(-160).step(), this.setData({ + animationData: t.export() + }), setTimeout(function() { + a.setData({ + translateUp: n.export(), + translateDown: i.export() + }); + }, a.data.time); + } +}); \ No newline at end of file diff --git a/packagecard/sharePage/cardcode.json b/packagecard/sharePage/cardcode.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/sharePage/cardcode.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/sharePage/cardcode.wxml b/packagecard/sharePage/cardcode.wxml new file mode 100755 index 0000000..57427c7 --- /dev/null +++ b/packagecard/sharePage/cardcode.wxml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packagecard/sharePage/cardcode.wxss b/packagecard/sharePage/cardcode.wxss new file mode 100755 index 0000000..8cc24a5 --- /dev/null +++ b/packagecard/sharePage/cardcode.wxss @@ -0,0 +1,33 @@ +.content-box { + align-items: center; + background: #fff; + border-radius: 10rpx; + display: flex; + flex-direction: column; + justify-content: center; + min-width: 100%; +} + +.image1 { + align-self: center; + height: 70%; + width: 70%; +} + +.box { + align-items: center; + display: flex; + justify-content: center; + padding: 15rpx; + z-index: 1; +} + +.box,.image2 { + position: absolute; + width: 95%; +} + +.image2 { + box-shadow: 1rpx 1rpx 5rpx #f5f5f5; + z-index: 2; +} \ No newline at end of file diff --git a/packagecard/sharePage/sharePage.js b/packagecard/sharePage/sharePage.js new file mode 100755 index 0000000..675688a --- /dev/null +++ b/packagecard/sharePage/sharePage.js @@ -0,0 +1,442 @@ +var t, a = require("../../@babel/runtime/helpers/defineProperty"), e = getApp(), r = wx.createInnerAudioContext(); + +Page({ + data: (t = { + active: 0, + curIndex: 0, + token: "", + cardTemplateUseId: "", + cardTemplateDispatchId: "", + cardInfo: {}, + areaList: [], + haveCard: !1, + bgImg: "" + }, a(t, "areaList", []), a(t, "cardHeight", ""), a(t, "cardInfo", {}), a(t, "cardUrl", e.baseUrls.baseCardUrl), + a(t, "personIntro", {}), a(t, "companyIntro", {}), a(t, "shareImg", ""), a(t, "phoneTxt", ""), + a(t, "emailTxt", ""), a(t, "wechateTxt", ""), a(t, "addressTxt", ""), a(t, "viewInfo", {}), + a(t, "forwardCount", ""), a(t, "imgUrl", e.baseUrls.baseCardUrl), a(t, "personId", ""), + a(t, "shareRecordId", ""), a(t, "nameTxt", "名片"), a(t, "dataList", []), a(t, "isShowBarCode", !1), + a(t, "browUserList", []), a(t, "tempUserId", ""), a(t, "shareImgUrl", ""), t), + doLogin: function() { + var t = this; + wx.showLoading({ + title: "加载中..." + }), wx.login({ + success: function(a) { + e.http.post(e.urls.wxLogin, { + data: { + jsCode: a.code + } + }).then(function(a) { + wx.hideLoading({}); + var r = a.data.data.split("_")[0]; + wx.setStorageSync("token", r), wx.setStorageSync("bindPhone", a.data.data.split("_")[1]), + t.setData({ + token: r + }), e.globalData.token = r, t.getCardId(); + }).catch(function(t) { + wx.hideLoading({}), console.log(t); + }); + } + }); + }, + saveCheckRecord: function() { + console.log("1123"), e.http.post(e.urls.checkRecord, { + header: { + token: e.globalData.token + }, + data: { + cardTemplateUseId: this.data.cardTemplateUseId, + cardTemplateDispatchId: this.data.cardTemplateDispatchId + } + }).then(function(t) { + console.log(t); + }).catch(function(t) { + console.log(t); + }); + }, + getCard: function() { + var t = this; + e.http.get(e.urls.shareCard.format({ + cardTemplateUseId: t.data.cardTemplateUseId + }), { + header: { + token: e.globalData.token + }, + data: {} + }).then(function(a) { + console.log(a.data); + for (var e = a.data.areaList, r = 0; r < e.length; r++) "1" == e[r].templateAreaFontCenter ? e[r].templateAreaFontCenter = "left" : "2" == e[r].templateAreaFontCenter ? e[r].templateAreaFontCenter = "center" : e[r].templateAreaFontCenter = "right", + "0" == e[r].templateAreaFontBold ? e[r].templateAreaFontBold = "normal" : "1" == e[r].templateAreaFontBold ? e[r].templateAreaFontBold = "bold" : e[r].templateAreaFontStyle = "italic", + "phone" == e[r].templateAreaSource ? t.setData({ + phoneTxt: e[r].templateAreaFontValue + }) : "wechat" == e[r].templateAreaSource ? t.setData({ + wechatTxt: e[r].templateAreaFontValue + }) : "email" == e[r].templateAreaSource ? t.setData({ + emailTxt: e[r].templateAreaFontValue + }) : "address" == e[r].templateAreaSource ? t.setData({ + addressTxt: e[r].templateAreaFontValue + }) : "name" == e[r].templateAreaSource && t.setData({ + nameTxt: e[r].templateAreaFontValue + }); + t.setData({ + cardInfo: a.data, + areaList: e, + dataList: [] + }), a.data && (t.toSaveLocalImg(a.data.cardTemplateUseDispatchPhoto), t.getBrowCardUserList(a.data.cardTemplateUseId), + t.setData({ + tempUserId: a.data.creator + }), t.getMainColumn(a.data.creator)); + }); + }, + getMainColumn: function(t) { + var a = this; + e.http.get(e.urls.getMainColumn, { + header: { + token: e.globalData.token + }, + data: { + cardTemplateUseId: t + } + }).then(function(e) { + wx.showLoading({ + title: "加载中..." + }), console.log(e.data), a.getMainMoment(e.data, t, 0); + }).catch(function(t) {}); + }, + getMainMoment: function(t, a, r) { + var s = this; + r < t.length ? e.http.get(e.urls.getMainMoment.format({ + configColumnId: t[s.data.curIndex].configColumnId + }), { + header: { + token: e.globalData.token + }, + data: { + userId: a + } + }).then(function(e) { + if (e.data.length > 0) { + var r = { + cId: t[s.data.curIndex].configColumnId, + type: t[s.data.curIndex].configColumnType, + name: t[s.data.curIndex].configColumnName, + mode: t[s.data.curIndex].configTableMode, + list: e.data.slice(0, t[s.data.curIndex].configColumnRowCount) + }; + s.data.dataList.push(r); + } + s.setData({ + curIndex: ++s.data.curIndex + }), s.getMainMoment(t, a, s.data.curIndex); + }).catch(function(e) { + s.setData({ + curIndex: ++s.data.curIndex + }), s.getMainMoment(t, a, s.data.curIndex); + }) : (wx.hideLoading({}), wx.stopPullDownRefresh({}), s.buildMainData()); + }, + buildMainData: function() { + this.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + t.list.forEach(function(t) { + switch (t.dataType) { + case "2": + var a = t.value.split(","), r = []; + a.forEach(function(t) { + var a = { + id: t, + path: e.baseUrls.baseCardUrl + t + }; + r.push(a); + }), t.valueList = r; + break; + + case "3": + a = t.value.split(","), r = []; + a.forEach(function(t) { + var a = { + id: t, + path: e.baseUrls.baseCardUrl + t, + isPlay: !1, + duration: 1e5, + curDuration: 0, + curDurationStr: "00:00", + totalDurationStr: "00:00" + }; + r.push(a); + }), t.valueList = r; + break; + + case "4": + a = t.value.split(","), r = []; + for (var s = 0; s < a.length; s++) { + var i = a[s].split("&"), n = { + path: e.baseUrls.baseCardUrl + i[0], + imgPath: e.baseUrls.baseCardUrl + i[1] + }; + r.push(n); + } + t.valueList = r; + break; + + case "6": + a = t.value.split("-"), r = []; + a.forEach(function(t) { + var a = t.split(","), e = { + name: "", + address: "", + latitude: a[0], + longitude: a[1] + }; + r.push(e); + }), t.valueList = r; + break; + + case "8": + t.dictionariesList.forEach(function(a) { + -1 != t.value.indexOf(a.dataId) && (t.selValue = a.dataName); + }); + break; + + case "9": + t.dictionariesList.forEach(function(a) { + -1 != t.value.indexOf(a.dataId) ? a.isSel = !0 : a.isSel = !1; + }); + } + }); + }); + }), this.setData({ + curIndex: 0, + dataList: this.data.dataList + }); + }, + includedCard: function() { + e.http.post(e.urls.includedCard, { + header: { + token: e.globalData.token + }, + data: { + cardTemplateUseBagId: "", + cardTemplateUseId: this.data.cardInfo.cardTemplateUseId, + cardTemplateUseStar: "", + cardTemplateUseTag: "", + cardTemplateUseTop: "" + } + }).then(function(t) { + "200" == t.statusCode && wx.showToast({ + title: "加入卡包成功!" + }); + }); + }, + getCardId: function() { + var t = this; + e.http.get(e.urls.getCardUseId.format({ + cardTemplateDispatchId: t.data.cardTemplateDispatchId + }), { + header: { + token: e.globalData.token + } + }).then(function(a) { + t.setData({ + cardTemplateUseId: a.data.cardTemplateUseDTO.cardTemplateUseId + }), t.getCard(), t.saveCheckRecord(); + }); + }, + onLoad: function(t) { + this.setData({ + cardTemplateDispatchId: t.cardTemplateDispatchId + }), this.doLogin(); + }, + makeCall: function() { + var t = this.data.phoneTxt; + t && wx.makePhoneCall({ + phoneNumber: t + }); + }, + copyText: function(t) { + var a = t.currentTarget.dataset.text; + a && wx.setClipboardData({ + data: a, + success: function() {} + }); + }, + showBarCode: function() { + this.setData({ + isShowBarCode: !0 + }); + }, + hideBarCode: function() { + this.setData({ + isShowBarCode: !1 + }); + }, + onShareAppMessage: function(t) { + if (wx.showShareMenu({ + withShareTicket: !0, + success: function(t) { + console.log(t); + } + }), "button" == t.from) { + var a = this.buildId(); + return this.shareRecord(a), { + title: "名片分享", + path: "/pages/sharePage/sharePage?cardTemplateDispatchId=" + a, + imageUrl: this.data.shareImgUrl + }; + } + }, + getBrowCardUserList: function(t) { + var a = this; + e.http.get(e.urls.getCardBrowUserList, { + header: { + token: e.globalData.token + }, + data: { + page: "1", + rows: "7", + cardTemplateUseId: t + } + }).then(function(t) { + t.data && a.setData({ + browUserList: t.data.rows + }); + }).catch(function(t) { + console.log(t); + }); + }, + shareRecord: function(t) { + var a = this; + e.http.post(e.urls.shareRecord, { + header: { + token: e.globalData.token + }, + data: { + cardTemplateUseId: a.data.cardInfo.cardTemplateUseId, + cardTemplateDispatchParentId: a.data.cardTemplateDispatchId, + cardTemplateDispatchId: t + } + }).then(function(t) { + console.log(t.data), a.setData({ + shareRecordId: t.data.data + }); + }); + }, + buildId: function() { + for (var t = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ], a = "", e = 0; e < 36; e++) { + a += t[parseInt(61 * Math.random())]; + } + return a; + }, + viewImg: function(t) { + wx.previewImage({ + urls: [ t.currentTarget.dataset.url ] + }); + }, + viewVideo: function(t) { + var a = t.currentTarget.dataset.url; + wx.previewMedia({ + sources: [ { + url: a, + type: "video" + } ] + }); + }, + play: function(t) { + var a = this, e = t.currentTarget.dataset.index, s = t.currentTarget.dataset.idx, i = t.currentTarget.dataset.i, n = t.currentTarget.dataset.a, d = t.currentTarget.dataset.item; + a.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + t.list.forEach(function(t) { + "3" == t.dataType && t.valueList && t.valueList.forEach(function(t) { + t.isPlay && r.stop(), t.isPlay = !1, t.curDuration = 0, t.curDuationStr = "00:00"; + }); + }); + }); + }), d.isPlay ? r.stop() : ((r = wx.createInnerAudioContext()).src = a.data.dataList[e].list[s].list[i].valueList[n].path + ".mp3", + r.autoplay = !0, console.log(a.data.dataList[e].list[s].list[i].valueList[n].path)), + r.onPlay(function() { + console.log("onPlay"), a.data.dataList[e].list[s].list[i].valueList[n].isPlay = !0, + a.setData({ + dataList: a.data.dataList + }); + }), r.onCanplay(function(t) {}), r.onStop(function(t) { + console.log("停止播放"), a.data.dataList[e].list[s].list[i].valueList[n].isPlay = !1, + a.data.dataList[e].list[s].list[i].valueList[n].curDuration = 0, a.data.dataList[e].list[s].list[i].valueList[n].curDurationStr = "00:00", + a.setData({ + dataList: a.data.dataList + }), r.destroy(); + }), r.onEnded(function(t) { + console.log(t), console.log("播放完毕"), a.data.dataList[e].list[s].list[i].valueList[n].isPlay = !1, + a.data.dataList[e].list[s].list[i].valueList[n].curDuration = 0, a.data.dataList[e].list[s].list[i].valueList[n].curDurationStr = "00:00", + a.setData({ + dataList: a.data.dataList + }), r.destroy(); + }), r.onError(function(t) { + console.log("播放错误"), console.log(t), a.data.dataList[e].list[s].list[i].valueList[n].isPlay = !1, + a.data.dataList[e].list[s].list[i].valueList[n].curDuration = 0, a.data.dataList[e].list[s].list[i].valueList[n].curDurationStr = "00:00", + a.setData({ + dataList: a.data.dataList + }), r.destroy(); + }), r.onSeeking(function() {}), r.onWaiting(function() {}), r.onTimeUpdate(function() { + if (r.duration != 1 / 0) { + a.data.dataList[e].list[s].list[i].valueList[n].curDuration = parseInt(r.currentTime), + a.data.dataList[e].list[s].list[i].valueList[n].duration = parseInt(r.duration); + var t = parseInt(r.currentTime / 60), d = parseInt(r.currentTime % 60), o = parseInt(r.duration / 60), l = parseInt(r.duration % 60), c = t > 9 ? t : "0" + t, u = d > 9 ? d : "0" + d, h = o > 9 ? o : "0" + o, p = +l > 9 ? l : "0" + l; + a.data.dataList[e].list[s].list[i].valueList[n].curDurationStr = c + ":" + u, a.data.dataList[e].list[s].list[i].valueList[n].totalDurationStr = h + ":" + p, + a.setData({ + dataList: a.data.dataList + }); + } + }); + }, + rewind: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.item, s = t.currentTarget.dataset.idx, i = t.currentTarget.dataset.a, n = t.currentTarget.dataset.i; + e.isPlay && (this.data.dataList[a].list[s].list[n].valueList[i].curDuration = this.data.dataList[a].list[s].list[n].valueList[i].curDuration - this.data.speedStep, + r.seek(this.data.dataList[a].list[s].list[n].valueList[i].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + speed: function(t) { + var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.item, s = t.currentTarget.dataset.idx, i = t.currentTarget.dataset.a, n = t.currentTarget.dataset.i; + e.isPlay && (this.data.dataList[a].list[s].list[n].valueList[i].curDuration = this.data.dataList[a].list[s].list[n].valueList[i].curDuration + this.data.speedStep, + r.seek(this.data.dataList[a].list[s].list[n].valueList[i].curDuration), this.setData({ + dataList: this.data.dataList + })); + }, + slider4change: function(t) { + t.currentTarget.dataset.index; + t.currentTarget.dataset.item.isPlay && r.seek(t.detail.value); + }, + toSaveLocalImg: function(t) { + var a = t, e = wx.env.USER_DATA_PATH + "/indexshare.png", r = a.replace(/^data:image\/\w+;base64,/, ""); + wx.getFileSystemManager().writeFileSync(e, r, "base64"), this.setData({ + shareImgUrl: e + }); + }, + goHome: function() { + wx.switchTab({ + url: "/pages/index/index" + }); + }, + showDetail: function(t) { + if (-1 != t.currentTarget.dataset.ctype.indexOf("dda5007c-5fb7-48f2-8537-3cb8ea298242")) { + var a = t.currentTarget.dataset.cid, e = t.currentTarget.dataset.id; + wx.navigateTo({ + url: "../moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + }); + } + }, + showMore: function(t) { + var a = t.currentTarget.dataset.item; + if ("2" == a.mode) { + var e = t.currentTarget.dataset.userid, r = t.currentTarget.dataset.idx; + wx.navigateTo({ + url: "../../pages/moments/showlist/showlist?id=" + a.cId + "&userId=" + e + "&index=" + r + }); + } + }, + onChange: function(t) { + this.setData({ + active: t.detail + }); + } +}); \ No newline at end of file diff --git a/packagecard/sharePage/sharePage.json b/packagecard/sharePage/sharePage.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/packagecard/sharePage/sharePage.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/packagecard/sharePage/sharePage.wxml b/packagecard/sharePage/sharePage.wxml new file mode 100755 index 0000000..c397d7c --- /dev/null +++ b/packagecard/sharePage/sharePage.wxml @@ -0,0 +1,220 @@ + + + + + + + {{item.templateAreaFontValue}} + + + + + + + + + + + 加入卡包 + + + + 名片码 + + + + + + + 电话 + {{phoneTxt}} + + + + + + 微信 + {{wechateTxt}} + + + + + + 邮箱 + {{emailTxt}} + + + + + + 地址 + {{addressTxt}} + + + + + + + + + + + + + + {{cardInfo.cardTemplateUseScansNumber>999?'999+':cardInfo.cardTemplateUseScansNumber}} + + + + {{cardInfo.cardTemplateUseDispatchNumber>999?'999+':cardInfo.cardTemplateUseDispatchNumber}} + + + + + + + + + + + {{item.name}} + + + 更多 + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + {{child.comment}}: + {{child.selValue}} + + + + + + + + + {{child.comment}} + + + + {{ss.dataName}} + + + + 详情 > + + + + + + + + + + + + + + + + + 一段话 + + 有可能还会与其他内容重叠。元素的背景会延伸穿过内边距。不允许指定负边距值。 + + + + + + + + 首页 + 服务 + diff --git a/packagecard/sharePage/sharePage.wxss b/packagecard/sharePage/sharePage.wxss new file mode 100755 index 0000000..fd1e289 --- /dev/null +++ b/packagecard/sharePage/sharePage.wxss @@ -0,0 +1,585 @@ +page { + background: #f7f7f7; +} + +.card-container { + box-sizing: border-box; + height: 0; +} + +.share-btn { + background: #eee; +} + +.card { + background: #fff; + box-sizing: border-box; + height: 0; + overflow: hidden; + position: relative; + width: 100%; +} + +.area-box { + white-space: nowrap; + word-break: break-all; +} + +.card-bgImg { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.person { + padding: 20rpx; +} + +.dynamic-container { + background-color: #fff; + border-radius: 20rpx; + margin-top: -50rpx; + padding: 20rpx; + position: relative; +} + +.dynamic-title image { + height: 30rpx; + margin-top: -4rpx; + vertical-align: middle; + width: 30rpx; +} + +.catelog-title { + justify-content: space-between; + position: relative; +} + +.catelog-title,.catelog-title .action { + align-items: center; + display: flex; +} + +.catelog-title .action { + justify-content: center; + max-width: 100%; + padding-right: 30rpx; +} + +.title { + background: #0054bd; + border-top-left-radius: 48rpx; + border-top-right-radius: 48rpx; + color: #fff; + display: inline-block; + font-size: 30rpx; + margin-bottom: -50rpx; + padding: 10rpx 60rpx 60rpx 10rpx; + position: relative; +} + +.title text { + margin-left: 20rpx; +} + +.column-box,.column-content { + background-color: #fff; + display: flex; + flex-direction: column; + width: 100%; +} + +.column-content { + border-radius: 48rpx; + box-shadow: 0 2px 2px #f0f0f0; + padding: 10rpx 20rpx 40rpx; + z-index: 2; +} + +.intro-title image,.serve-title image { + height: 30rpx; + margin-top: -4px; + vertical-align: middle; + width: 28rpx; +} + +.person-content { + background: #fff; + border-radius: 20rpx; + color: #000; + font-size: 30rpx; + letter-spacing: 2rpx; + line-height: 40rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; + word-break: break-all; +} + +.company-title { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.company-title image { + height: 140rpx; + width: 140rpx; +} + +.company-name { + align-items: center; + display: flex; + font-size: 34rpx; + height: 140rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 520rpx; +} + +.company-content { + background: #fff; + border-radius: 20rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; +} + +.company-content image { + border-radius: 20rpx; + height: 300rpx; + width: 100%; +} + +.company .person-content { + margin-top: 0; +} + +.dynamic-title { + display: block; + margin: 0 auto; + width: 710rpx; +} + +.dynamic-box { + background: #fff; + border-radius: 20rpx; + height: 400rpx; + margin-bottom: 20rpx; + overflow: hidden; + position: relative; +} + +.dynamic-box image { + height: 400rpx; + width: 100%; +} + +.dynamic-text { + background: rgba(0,0,0,.6); + bottom: 0; + color: #fff; + font-size: 30rpx; + left: 0; + line-height: 60rpx; + padding: 0 10rpx; + position: absolute; + right: 0; +} + +.person-info { + border-bottom: 1px solid #eee; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; +} + +.avatar { + border-radius: 50%; + height: 120rpx; + overflow: hidden; + width: 120rpx; +} + +.avatar image { + height: 100%; + width: 100%; +} + +.person-name { + width: 530rpx; +} + +.name { + color: #000; + font-size: 32rpx; + margin: 15rpx 0 10rpx; +} + +.time { + color: #b2b2b2; +} + +.dynamic-content { + margin: 20rpx 0; +} + +.dynamic-img { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + position: relative; +} + +.dynamic-img image { + height: 160rpx; + margin-bottom: 10rpx; + margin-right: 2%; + width: 32%; +} + +.dynamic-img image:nth-child(3n) { + margin-right: 0; +} + +.dynamic-img-text { + background: rgba(0,0,0,.6); + bottom: 3rpx; + color: #fff; + font-size: 32rpx; + left: 0; + line-height: 70rpx; + padding: 0 20rpx; + position: absolute; + right: 0; +} + +.dynamic-good { + display: flex; + justify-content: space-between; + margin: 10rpx 0; +} + +.good-count { + color: #333; + font-size: 28rpx; +} + +.good-btn image { + height: 40rpx; + vertical-align: top; + width: 40rpx; +} + +.dynamic-reply { + background: #eee; + margin-top: 15rpx; + padding: 15rpx; +} + +.reply { + color: #000; + font-size: 32rpx; + margin-bottom: 5rpx; +} + +.reply-name { + display: inline; + font-weight: 700; +} + +.dynamic-reply-input { + margin-top: 10rpx; +} + +.dynamic-reply-input input { + border-bottom: 1px solid #eee; + height: 60rpx; + width: 100%; +} + +.creat-card { + align-items: center; + background: #0054bd; + border-radius: 50%; + bottom: 20rpx; + box-sizing: border-box; + flex-direction: column; + height: 140rpx; + justify-content: center; + padding: 20rpx; + position: fixed; + right: 20rpx; + width: 140rpx; + z-index: 100; +} + +.creat-card image { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 80rpx; +} + +.share-save { + display: flex; + justify-content: space-between; + text-align: center; +} + +.share-btn { + background: none; + color: #1296db; +} + +.save-btn,.share-btn { + border: 1px solid #1296db; + font-weight: 400; +} + +.save-btn { + background: #1296db; + color: #fff; +} + +.bottom-btn { + margin-top: 20rpx; + padding: 0 20rpx; + white-space: nowrap; + width: 100%; +} + +.phone-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.wechate-box .icon { + height: 30rpx; + vertical-align: top; + width: 35rpx; +} + +.email-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.bottom-btn-box { + border: 1px solid #ddd; + border-radius: 10rpx; + box-sizing: border-box; + display: inline-block; + line-height: 30rpx; + margin-right: 10rpx; + min-width: 32%; + padding: 20rpx; +} + +.bottom-text { + margin-top: 10rpx; +} + +.top-box { + background-color: #f7f7f7; +} + +.good,.top-box { + padding-bottom: 20rpx; +} + +.good { + background-color: #fff; + display: flex; + justify-content: space-between; + padding-left: 20rpx; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.good-click { + display: flex; +} + +.view-count { + border-right: 1px solid grey; +} + +.view-count,.view-count-no { + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; + margin-right: 30rpx; + padding-right: 30rpx; +} + +.view-count-no { + align-items: center; +} + +.good-avatar image { + height: 100%; + width: 100%; +} + +.good-click image { + height: 38rpx; + width: 38rpx; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.avatar-list { + display: inline-block; + height: 45rpx; + margin-right: 10rpx; + vertical-align: top; + width: 45rpx; +} + +.mid { + background: #0054bd; + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; + margin-top: -20rpx; + padding: 40rpx 0 80rpx; + position: relative; +} + +.mid,.mid-box { + display: flex; +} + +.mid-box { + align-items: center; + background: none; + border-right: 1px solid #2f82ea; + flex: 1; + flex-direction: column; + font-weight: 400; + justify-content: center; + padding: 0!important; + width: auto!important; +} + +.mid-box:last-child { + border: none; +} + +.mid-box image { + height: 60rpx; + margin-bottom: 20rpx; + width: 60rpx; +} + +.mid-box-text { + color: #fff; + font-size: 30rpx; +} + +.mid-btn { + background: #fff; + border-top-left-radius: 60rpx; + border-top-right-radius: 60rpx; + flex-wrap: wrap; + margin-top: -60rpx; + padding: 30rpx; + position: relative; +} + +.mid-btn,.mid-btn-box { + display: flex; + justify-content: space-between; +} + +.mid-btn-box { + background: #eee; + border-radius: 20rpx; + box-sizing: border-box; + flex-shrink: 0; + margin-bottom: 20rpx; + padding: 15rpx; + width: 49%; +} + +.mid-btn-box:nth-child(3),.mid-btn-box:nth-child(4) { + margin-bottom: 0; +} + +.mid-btn-box image { + height: 80rpx; + width: 80rpx; +} + +.mid-btn-text { + width: 200rpx; +} + +.text-top { + color: #000; + font-size: 30rpx; + line-height: 45rpx; +} + +.text-bottom { + color: #898989; + font-size: 26rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.bar-code { + background: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} + +.bar-code .content { + align-items: center; + background: #fff; + border-radius: 10rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + left: 50%; + max-width: 96%; + min-height: 50%; + min-width: 80%; + padding: 20rpx; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.code-title { + font-weight: 700; +} + +.code-title,.code-txt { + color: #000; + font-size: 32rpx; +} + +.bar-code image { + height: 300rpx; + width: 300rpx; +} \ No newline at end of file diff --git a/pages/card/cardDetail.js b/pages/card/cardDetail.js new file mode 100644 index 0000000..670ec32 --- /dev/null +++ b/pages/card/cardDetail.js @@ -0,0 +1,105 @@ +var a = getApp(); + +Page({ + data: { + token: a.globalData.token, + serviceUrl: a.baseUrls.serviceUrl, + baseImgUrl: a.baseUrls.baseImgUrl, + cardType: "", + realName: "张三", + intro: "简介简介简介简介简介简介简介简介简介", + phone: "0471-3360077", + address: "呼和浩特市新城区", + qrCode: "", + photo: "" + }, + onLoad: function(a) { + this.setData({ + cardType: a.type + }); + }, + choosePhoto: function() { + var e = this; + wx.chooseImage({ + count: 1, + sourceType: [ "album", "camera" ], + success: function(t) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + var o = t.tempFiles[0].path; + a.restAjax.file(a.restAjax.path(a.apis.uploadImg, [ a.baseUrls.serviceUrl ]), o, "image", { + headers: { + token: a.globalData.token + } + }, function(a, t) { + if ("200" == a) { + var o = JSON.parse(t).data; + e.setData({ + photo: o + }), wx.hideToast(); + } + }, function(a, e) { + console.log(e); + }); + } + }); + }, + chooseQrCode: function() { + var e = this; + wx.chooseImage({ + count: 1, + sourceType: [ "album", "camera" ], + success: function(t) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + var o = t.tempFiles[0].path; + a.restAjax.file(a.restAjax.path(a.apis.uploadImg, [ a.baseUrls.serviceUrl ]), o, "image", { + headers: { + token: a.globalData.token + } + }, function(a, t) { + if ("200" == a) { + var o = JSON.parse(t).data; + e.setData({ + qrCode: o + }), wx.hideToast(); + } + }, function(a, e) { + console.log(e); + }); + } + }); + }, + submitCreate: function() { + var e = { + address: this.data.address, + job: this.data.intro, + realName: this.data.realName, + photo: this.data.photo, + qrCode: this.data.qrCode, + templateId: this.data.cardType + }; + a.restAjax.post(a.restAjax.path(a.apis.submitCreateCard, [ a.baseUrls.requestUrl ]), e, { + headers: { + token: a.globalData.token + } + }, function(a, e) { + "200" == a && wx.showToast({ + title: "创建成功!" + }); + }, function(a, e) { + console.log(e); + }); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/card/cardDetail.json b/pages/card/cardDetail.json new file mode 100644 index 0000000..df4a807 --- /dev/null +++ b/pages/card/cardDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "创建名片" +} \ No newline at end of file diff --git a/pages/card/cardDetail.wxml b/pages/card/cardDetail.wxml new file mode 100644 index 0000000..2266d28 --- /dev/null +++ b/pages/card/cardDetail.wxml @@ -0,0 +1,62 @@ + + + + + + + {{realName}} + {{intro}} ... + + {{phone}} + + {{address}} + + + + + + + 编辑名片 + + 姓名: + + + + + + 简介: + + + + + + 电话: + + + + + + 位置: + + + + + + 照片: + + + + + + + + 二维码: + + + + + + + + + + 创建名片 + diff --git a/pages/card/cardDetail.wxss b/pages/card/cardDetail.wxss new file mode 100644 index 0000000..fcd103f --- /dev/null +++ b/pages/card/cardDetail.wxss @@ -0,0 +1,142 @@ +.container { + margin-bottom: 120rpx; +} + +.card { + background-color: #fff; + height: 0; + padding-bottom: 56%; + position: relative; + width: 100%; +} + +.photo { + bottom: 0; + left: 20rpx; + position: absolute; + top: 0; +} + +.photo image { + height: 100%; +} + +.name { + font-size: 36rpx; + font-weight: 700; + top: 40rpx; +} + +.desc,.name { + left: 340rpx; + position: absolute; +} + +.desc { + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + display: -webkit-box; + font-size: 30rpx; + overflow: hidden; + top: 125rpx; +} + +.phone { + bottom: 60rpx; + color: #a8a8a8; + font-size: 28rpx; + left: 340rpx; + line-height: 30rpx; + position: absolute; +} + +.phone image { + height: 30rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 30rpx; +} + +.position { + bottom: 20rpx; +} + +.qr-code { + bottom: 30rpx; + height: 60rpx; + position: absolute; + right: 24rpx; + width: 60rpx; +} + +.qr-code image { + height: 100%; + width: 100%; +} + +.edite-card { + background-color: #fff; + margin-top: 20rpx; + padding: 20rpx; +} + +.title { + font-size: 32rpx; + margin-bottom: 15rpx; +} + +.card-row { + border-top: 1px solid #ddd; + display: flex; + justify-content: space-between; + padding: 15rpx 0; +} + +.row-name { + font-size: 32rpx; + width: 30%; +} + +.row-content { + text-align: right; + width: 70%; +} + +.row-content input { + font-size: 32rpx; + width: 100%; +} + +.add-photo { + border: 1px solid #a1a1a1; + border-radius: 10rpx; + display: inline-block; + font-size: 60rpx; + font-weight: 400; + height: 100rpx; + line-height: 100rpx; + text-align: center; + width: 100rpx; +} + +.create-card { + background-color: #fff; + bottom: 0; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.create-btn { + background-color: #ff4949; + border-radius: 40rpx; + color: #fff; + font-size: 32rpx; + line-height: 60rpx; + text-align: center; +} + +.photo-img,.qrCode-img { + width: 200rpx; +} \ No newline at end of file diff --git a/pages/card/cardList.js b/pages/card/cardList.js new file mode 100644 index 0000000..659ea8e --- /dev/null +++ b/pages/card/cardList.js @@ -0,0 +1,17 @@ +Page({ + data: {}, + checkDetail: function(n) { + var o = n.currentTarget.dataset.type; + wx.navigateTo({ + url: "./cardDetail?type=" + o + }); + }, + onLoad: function(n) {}, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/card/cardList.json b/pages/card/cardList.json new file mode 100644 index 0000000..81c0032 --- /dev/null +++ b/pages/card/cardList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "名片" +} \ No newline at end of file diff --git a/pages/card/cardList.wxml b/pages/card/cardList.wxml new file mode 100644 index 0000000..9f64ee4 --- /dev/null +++ b/pages/card/cardList.wxml @@ -0,0 +1,6 @@ + + + + 名片模板 + + diff --git a/pages/card/cardList.wxss b/pages/card/cardList.wxss new file mode 100644 index 0000000..600c5b1 --- /dev/null +++ b/pages/card/cardList.wxss @@ -0,0 +1,13 @@ +.card-box { + background-color: #fff; + margin-bottom: 20rpx; +} + +.card-box image { + width: 100%; +} + +.card-name { + font-size: 32rpx; + padding: 15rpx; +} \ No newline at end of file diff --git a/pages/center/case/caseHandle.js b/pages/center/case/caseHandle.js new file mode 100644 index 0000000..d2359f1 --- /dev/null +++ b/pages/center/case/caseHandle.js @@ -0,0 +1,266 @@ +var t = getApp(); + +require("../../../utils/WSCoordinate.js"); + +Page({ + data: { + reportId: "", + baseUrl: t.baseUrls.serviceUrl, + imgUrl: t.baseUrls.baseImgUrl, + sourceUrl: t.baseUrls.sourceUrl, + handleSummary: "", + handleImg: [], + markers: [], + caseDetail: {}, + content: "", + videoId: "", + handleDetail: {} + }, + getDetail: function() { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.myCaseDetail, [ t.baseUrls.requestUrl, e.data.reportId ]), {}, { + headers: { + token: t.globalData.token + } + }, function(t, a) { + a.reportPhotos ? a.reportPhotos = a.reportPhotos.split(",") : a.reportPhotos = [], + "1" == a.handleStatus && e.getHandleList(); + var o = [ { + iconPath: e.data.sourceUrl + "marker_red.png", + id: 1, + latitude: a.reportLat, + longitude: a.reportLng, + width: "30", + height: "30" + } ]; + e.setData({ + caseDetail: a, + markers: o + }); + }, function(t, e) { + console.log(e); + }); + }, + playRecord: function() { + var t = wx.createInnerAudioContext(); + t.src = this.data.caseUrl + this.data.imgUrl + this.data.caseDetail.reportAudio, + t.play(); + }, + handleCase: function() { + for (var e, a = 0; a < this.data.handleImg.length; a++) 0 == a ? e = this.data.handleImg[a] : e += "," + this.data.handleImg[a]; + var o = { + handleSummary: this.data.handleSummary, + taskId: this.data.reportId, + handlePhotos: e + }; + t.restAjax.post(t.restAjax.path(t.apis.handleCase, [ t.baseUrls.caseUrl ]), o, { + headers: { + token: t.globalData.token + } + }, function(t, e) { + console.log(e); + }, function(t, e) { + console.log(e); + }); + }, + uploadImage: function() { + var e = this; + wx.chooseImage({ + count: 9 - e.data.handleImg.length, + sourceType: [ "album", "camera" ], + success: function(a) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + for (var o = 0; o < a.tempFiles.length; o++) { + var s = a.tempFiles[o].path; + t.restAjax.file(t.restAjax.path(t.apis.uploadImg, [ t.baseUrls.caseUrl ]), s, "image", { + headers: { + token: t.globalData.token + } + }, function(t, a) { + if ("200" == t) { + console.log(a); + var o = JSON.parse(a).data, s = e.data.handleImg; + s.push(o), e.setData({ + handleImg: s + }), wx.hideToast(); + } + }, function(t, e) { + console.log(e); + }); + } + } + }); + }, + deleteSource: function(t) { + var e = t.currentTarget.dataset.cur; + this.data.handleImg.splice(e, 1), this.setData({ + handleImg: this.data.handleImg + }); + }, + previewImg: function(t) { + var e = t.currentTarget.dataset.src; + wx.previewImage({ + current: e, + urls: this.data.caseDetail.reportPhotos + }); + }, + acceptance: function() { + for (var e = this, a = e.data.caseDetail, o = "", s = 0; s < a.reportPhotos.length; s++) s < a.reportPhotos.length - 1 ? o += a.reportPhotos[s] + "," : o += a.reportPhotos[s]; + a.reportPhotos = o, a.isAccept = "1", t.restAjax.put(t.restAjax.path(t.apis.updateCaseStatus, [ t.baseUrls.requestUrl, e.data.reportId ]), a, { + headers: { + token: t.globalData.token + } + }, function(t, a) { + "200" == t && (wx.showToast({ + title: "受理成功", + icon: "success" + }), e.getDetail()); + }, function(t, e) { + console.log(e); + }); + }, + notAcceptance: function() { + var e = this; + wx.showModal({ + cancelColor: "cancelColor", + content: "确认不予受理该事件?", + success: function(a) { + if (a.confirm) { + for (var o = e.data.caseDetail, s = "", n = 0; n < o.reportPhotos.length; n++) n < o.reportPhotos.length - 1 ? s += o.reportPhotos[n] + "," : s += o.reportPhotos[n]; + o.reportPhotos = s, console.log(o), o.isAccept = "-1", t.restAjax.put(t.restAjax.path(t.apis.updateCaseStatus, [ t.baseUrls.requestUrl, e.data.reportId ]), o, { + headers: { + token: t.globalData.token + } + }, function(t, a) { + "200" == t && (wx.showToast({ + title: "不予受理成功", + icon: "success" + }), e.getDetail()); + }, function(t, e) { + console.log(e); + }); + } + } + }); + }, + uploadVideo: function() { + var e = this; + wx.chooseVideo({ + sourceType: [ "album", "camera" ], + maxDuration: 60, + camera: "back", + success: function(a) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + var o = a.tempFilePath; + t.restAjax.file(t.restAjax.path(t.apis.uploadVideo, [ t.baseUrls.caseUrl ]), o, "video", { + headers: { + token: t.globalData.token + } + }, function(t, a) { + if ("200" == t) { + var o = JSON.parse(a).data; + e.setData({ + videoId: o + }), wx.hideToast(); + } + }, function(t, e) { + console.log(e); + }); + } + }); + }, + deleteVideo: function() { + this.setData({ + videoId: "" + }); + }, + handleComplete: function() { + if (this.data.content) { + for (var e = "", a = 0; a < this.data.handleImg.length; a++) a < this.data.handleImg.length - 1 ? e += this.data.handleImg[a] + "," : e += this.data.handleImg[a]; + var o = { + content: this.data.content, + photo: e, + reportId: this.data.reportId, + video: this.data.videoId + }; + t.restAjax.post(t.restAjax.path(t.apis.handleCase, [ t.baseUrls.requestUrl ]), o, { + headers: { + token: t.globalData.token + } + }, function(t, e) { + "200" == t && (wx.showToast({ + title: "处理成功!", + icon: "success" + }), setTimeout(function() { + wx.navigateBack({ + delta: 1 + }); + }, 1500)); + }, function(t, e) { + console.log(e); + }); + } else wx.showToast({ + title: "请输入事件处理说明", + icon: "error" + }); + }, + getHandleList: function() { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getHandleList, [ t.baseUrls.requestUrl ]), { + reportId: e.data.reportId + }, { + headers: { + token: t.globalData.token + } + }, function(t, a) { + a[0].photo && (a[0].photo = a[0].photo.split(",")), e.setData({ + handleDetail: a[0] + }); + }, function(t, e) { + console.log(e); + }); + }, + caseRedundancies: function() { + var e = this; + wx.showModal({ + cancelColor: "cancelColor", + content: "确认转派该事件?", + success: function(a) { + a.confirm && t.restAjax.put(t.restAjax.path(t.apis.caseRedundancies, [ t.baseUrls.requestUrl, e.data.reportId ]), {}, { + headers: { + token: t.globalData.token + } + }, function(t, e) { + "200" == t && (wx.showToast({ + title: "转派成功!", + icon: "success" + }), setTimeout(function() { + wx.navigateBack({ + delta: 1 + }); + }, 1500)); + }, function(t, e) { + console.log(e); + }); + } + }); + }, + onLoad: function(t) { + this.setData({ + reportId: t.reportId + }), this.getDetail(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/center/case/caseHandle.json b/pages/center/case/caseHandle.json new file mode 100644 index 0000000..0abcd32 --- /dev/null +++ b/pages/center/case/caseHandle.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "事件详情" +} \ No newline at end of file diff --git a/pages/center/case/caseHandle.wxml b/pages/center/case/caseHandle.wxml new file mode 100644 index 0000000..a8e0eaf --- /dev/null +++ b/pages/center/case/caseHandle.wxml @@ -0,0 +1,117 @@ + + 基本信息 + + + * 事件类型 + {{caseDetail.caseTypeName1}} + + + + * 事件类型 + {{caseDetail.caseTypeName2}} + + + + * 事发地区 + {{caseDetail.reportAreaName}} + + + + * 事发位置 + {{caseDetail.reportLng}},{{caseDetail.reportLat}} + + + + + + + 详细信息 + + + * 事件说明 + + + + + + 事件图片 + + + + + + + + 视频 + + + + + + + 录音 + 播放录音 + + + + 事件处理 + + + * 事件处理说明 + + + + + + 事件处理图片 + + + + + + + + + + + 事件处理视频 + + + + + + + + + + + 处理完成 + 转派 + 受理 + 不予受理 + + + + 事件处理 + + + * 事件处理说明 + + + + + + 事件处理图片 + + + + + + + + 事件处理视频 + + + + + + + diff --git a/pages/center/case/caseHandle.wxss b/pages/center/case/caseHandle.wxss new file mode 100644 index 0000000..2cffc98 --- /dev/null +++ b/pages/center/case/caseHandle.wxss @@ -0,0 +1,360 @@ +page { + background-color: #fafafa; +} + +.report { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + box-sizing: border-box; + margin: 20rpx auto; + padding: 20rpx 30rpx; + width: 710rpx; +} + +.title { + color: #333; + font-size: 36rpx; + margin-bottom: 20rpx; +} + +.title text { + color: red; +} + +.row { + background-color: #f2f1f6; + border-radius: 10rpx; + display: flex; + flex-wrap: wrap; + font-size: 32rpx; + justify-content: space-between; + margin-bottom: 15rpx; + padding: 15rpx; +} + +.row:last-child { + margin-bottom: 0; +} + +.row-name { + border-right: 1px solid #9b9a9f; + flex-shrink: 0; + height: 40rpx; + width: 200rpx; +} + +.row-name text { + color: red; +} + +.row-main { + flex-shrink: 0; + text-align: right; + width: 410rpx; + word-break: break-all; +} + +.submit { + background: #fff; + bottom: 0; + display: flex; + justify-content: space-between; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.submit-btn { + background-color: #118aff; + border-radius: 10rpx; + color: #fff; + flex-shrink: 0; + font-size: 36rpx; + height: 80rpx; + line-height: 80rpx; + text-align: center; + width: 32%; +} + +.btn2 { + background-color: #56b6de; +} + +.btn3 { + background-color: #d70715; +} + +.file { + background-color: #fff; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + box-sizing: border-box; + margin: 0 auto 20rpx; + padding: 20rpx 30rpx; + width: 710rpx; +} + +.file,.file-box { + border-radius: 10rpx; +} + +.file-box { + background-color: #f2f1f6; + margin-bottom: 20rpx; + padding: 15rpx; +} + +.file-box:last-child { + margin-bottom: 0; +} + +.file-title { + font-size: 30rpx; +} + +.file-title text { + color: red; +} + +.file-content { + font-size: 0; + margin-top: 10rpx; +} + +.img-box1 { + display: inline-block; + height: 155rpx; + margin-bottom: 10rpx; + margin-right: 2%; + overflow: hidden; + text-align: center; + vertical-align: top; + width: 32%; +} + +.img-box1 image { + height: 100%; +} + +.file-content image:nth-child(3n) { + margin-right: 0; +} + +.file-content textarea { + font-size: 30rpx; + height: 150rpx; + width: 100%; +} + +.upload-btn { + border: 2px solid #333; + border-radius: 10rpx; + display: inline-block; + font-size: 60rpx; + height: 100rpx; + line-height: 100rpx; + text-align: center; + vertical-align: top; + width: 100rpx; +} + +.voice-box { + display: flex; + justify-content: space-between; + padding: 0; +} + +.voice-box image { + margin-top: -7rpx; + vertical-align: middle; + width: 35rpx; +} + +.voice-title { + font-size: 30rpx; + line-height: 80rpx; + margin-left: 15rpx; +} + +.record-btn { + background-color: #118aff; + color: #fff; + line-height: 80rpx; + padding: 0 15rpx; +} + +.delay,.record-btn { + border-radius: 10rpx; +} + +.delay { + background-color: #fff; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + box-sizing: border-box; + margin: 0 auto 20rpx; + padding: 20rpx 30rpx; + width: 710rpx; +} + +.delay-box { + background-color: #f2f1f6; + padding: 20rpx; +} + +.delay-content { + background-color: #fff; + border-radius: 10rpx; + margin-bottom: 20rpx; + padding: 20rpx; +} + +.delay-content:last-child { + margin-bottom: 0; +} + +.delay-top { + border-bottom: 1px dashed #eee; + padding-bottom: 15rpx; +} + +.delay-reason { + color: #333; + display: flex; + font-size: 32rpx; + justify-content: space-between; +} + +.reason { + line-height: 60rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 65%; +} + +.delay-status { + border-radius: 30rpx; + padding: 10rpx 15rpx; +} + +.status1 { + background-color: #fce8e1; + color: #ec0400; +} + +.status2 { + background-color: #e9f2ff; + color: #0fa6ff; +} + +.delay-text { + color: #333; + font-size: 30rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.delay-bottom { + color: #0e89ff; + font-size: 30rpx; + margin-top: 10rpx; +} + +.delay-bottom image { + margin-top: -7rpx; + vertical-align: middle; + width: 40rpx; +} + +.handle { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + box-sizing: border-box; + margin: 0 auto 130rpx; + padding: 20rpx 30rpx; + width: 710rpx; +} + +.handle-box { + background-color: #f2f1f6; + border-radius: 10rpx; + margin-bottom: 20rpx; + padding: 15rpx; +} + +.handle-box textarea { + height: 150rpx; + width: 100%; +} + +.handle-img .upload-btn { + flex-shrink: 0; + height: 100rpx; + vertical-align: top; + width: 100rpx; +} + +.img-box { + display: inline-block; + height: 100rpx; + margin-right: 2%; + position: relative; + text-align: center; + width: 32%; +} + +.delete { + height: 35rpx!important; + position: absolute; + right: -18rpx; + top: -18rpx; + width: 35rpx!important; +} + +.img-box:nth-child(3n) { + margin-right: 0; +} + +.img-box image { + height: 100rpx; + width: 100%; +} + +.map { + margin-top: 10rpx; +} + +.map,.map map { + width: 100%; +} + +.handle-btn { + display: flex; + justify-content: space-between; +} + +.handle-btn-box { + background-color: #f55054; + border-radius: 10rpx; + color: #fff; + flex-shrink: 0; + line-height: 60rpx; + margin-right: 2%; + text-align: center; + width: 49%; +} + +.handle-btn-box:last-child { + margin-right: 0; +} + +.video-box { + position: relative; +} + +.video-box video { + width: 100%; +} \ No newline at end of file diff --git a/pages/center/case/caseList.js b/pages/center/case/caseList.js new file mode 100644 index 0000000..5f6bc80 --- /dev/null +++ b/pages/center/case/caseList.js @@ -0,0 +1,81 @@ +var t = require("../../../@babel/runtime/helpers/defineProperty"), e = getApp(); + +Page({ + data: { + sourceUrl: e.baseUrls.sourceUrl, + page: { + page: 1, + rows: 10, + isAccpet: "", + handleStatus: "", + areaCode: wx.getStorageSync("areaCode") + }, + baseUrl: e.baseUrls.caseUrl, + imgUrl: e.baseUrls.baseImgUrl, + caseList: [] + }, + getList: function() { + var a = this; + e.restAjax.get(e.restAjax.path(e.apis.myCaseList, [ e.baseUrls.requestUrl ]), a.data.page, { + headers: { + token: e.globalData.token + } + }, function(e, s) { + if (s.rows.length > 0) { + for (var o = a.data.caseList, i = 0; i < s.rows.length; i++) s.rows[i].reportPhotos && (s.rows[i].reportPhotos = s.rows[i].reportPhotos.split(",")[0]), + o.push(s.rows[i]); + a.setData({ + caseList: o + }); + } else wx.showToast({ + title: "暂无更多", + icon: "none" + }), a.setData(t({}, "page.page", a.data.page.page - 1)); + console.log(s); + }, function(t, e) { + console.log(e); + }); + }, + goDetail: function(t) { + var e = t.currentTarget.dataset.id; + wx.navigateTo({ + url: "./caseHandle?reportId=" + e + }); + }, + checkLog: function(t) { + var e = t.currentTarget.dataset.log; + wx.navigateTo({ + url: "./caseLog?businessId=" + e + }); + }, + doEvaluate: function(t) { + wx.navigateTo({ + url: "../evaluate/evaluate?reportId=" + t.currentTarget.dataset.id + }); + }, + onLoad: function(e) { + console.log(e.isAccept), "0" != e.isAccept && "1" != e.isAccept || (this.setData(t({}, "page.isAccept", e.isAccept)), + "0" == e.isAccept ? wx.setNavigationBarTitle({ + title: "待受理" + }) : wx.setNavigationBarTitle({ + title: "已受理" + })), "3" == e.isAccept && wx.setNavigationBarTitle({ + title: "我的收藏" + }), e.handleStatus && (this.setData(t({}, "page.handleStatus", "2")), wx.setNavigationBarTitle({ + title: "已完结" + })); + }, + onReady: function() {}, + onShow: function() { + this.setData({ + caseList: [] + }), this.getList(); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() { + this.setData(t({}, "page.page", this.data.page.page + 1)), this.getList(); + }, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/center/case/caseList.json b/pages/center/case/caseList.json new file mode 100644 index 0000000..fd36624 --- /dev/null +++ b/pages/center/case/caseList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "我的上报" +} \ No newline at end of file diff --git a/pages/center/case/caseList.wxml b/pages/center/case/caseList.wxml new file mode 100644 index 0000000..9196484 --- /dev/null +++ b/pages/center/case/caseList.wxml @@ -0,0 +1,23 @@ + + + + + + + + + + + {{item.caseTypeName1}} + {{item.caseStatus}} + + 编码:{{item.reportCode}} + 上报时间:{{item.gmtCreate}} + 处理结果:{{item.reportResultText}} + + + + + {{item.reportAreaName}} + + diff --git a/pages/center/case/caseList.wxss b/pages/center/case/caseList.wxss new file mode 100644 index 0000000..402bccc --- /dev/null +++ b/pages/center/case/caseList.wxss @@ -0,0 +1,127 @@ +page { + background-color: #fafafa; +} + +.list { + padding: 20rpx; +} + +.case-box { + background-color: #fff; + border-radius: 12rpx; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + margin-bottom: 20rpx; + padding: 20rpx 30rpx; +} + +.top { + border-bottom: 1px dashed #ddd; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; +} + +.case-img { + height: 120rpx; + overflow: hidden; + text-align: center; + width: 120rpx; +} + +.case-img image { + border-radius: 10rpx; + height: 100%; +} + +.case-info { + display: inline-flex; + width: 510rpx; +} + +.case-text-box { + width: 100%; +} + +.case-title { + display: flex; + justify-content: space-between; +} + +.case-title-text { + font-size: 34rpx; + font-weight: 700; +} + +.case-text,.case-title-text { + color: #333; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.case-text { + font-size: 28rpx; +} + +.case-status { + width: 160rpx; +} + +.status { + background-color: #e7f3ff; + border-radius: 30rpx; + color: #f55054; + font-size: 32rpx; + margin-bottom: 10rpx; + padding: 8rpx 15rpx; + text-align: center; +} + +.status2 { + background-color: #fff7ec; + color: #bb5912; + margin-bottom: 0; +} + +.bottom { + color: #f55054; + line-height: 45rpx; + margin-top: 10rpx; +} + +.bottom image { + height: 38rpx; + margin-top: -5rpx; + vertical-align: middle; + width: 45rpx; +} + +.btn-box { + border-top: 1px dashed #ddd; + font-size: 0; + padding-top: 15rpx; +} + +.btn { + border-radius: 10rpx; + color: #fff; + display: inline-block; + font-size: 32rpx; + line-height: 60rpx; + margin-right: 2%; + text-align: center; + width: 32%; +} + +.btn1 { + background-color: #f55054; +} + +.btn2 { + background-color: #56b6de; +} + +.btn3 { + background-color: #d70715; + margin-right: 0; +} \ No newline at end of file diff --git a/pages/center/case/caseLog.js b/pages/center/case/caseLog.js new file mode 100644 index 0000000..2326789 --- /dev/null +++ b/pages/center/case/caseLog.js @@ -0,0 +1,34 @@ +var n = getApp(); + +Page({ + data: { + businessId: "", + logList: [] + }, + getLog: function() { + var o = this; + n.restAjax.get(n.restAjax.path(n.apis.getLog, [ n.baseUrls.requestUrl, o.data.businessId ]), {}, { + headers: { + token: n.globalData.token + } + }, function(n, t) { + console.log(t), o.setData({ + logList: t + }); + }, function(n, o) { + console.log(o); + }); + }, + onLoad: function(n) { + this.setData({ + businessId: n.businessId + }), this.getLog(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/center/case/caseLog.json b/pages/center/case/caseLog.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/pages/center/case/caseLog.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/pages/center/case/caseLog.wxml b/pages/center/case/caseLog.wxml new file mode 100644 index 0000000..4500168 --- /dev/null +++ b/pages/center/case/caseLog.wxml @@ -0,0 +1,36 @@ + + + {{item.nodeStateTime}} + + + 节点名称: + {{item.nodeName}} + + + 开始时间: + {{item.nodeStateTime}} + + + 结束时间: + {{item.nodeEndTime}} + + + 耗时: + {{item.nodeTimeConsuming}} + + + 处理人: + {{item.nodeUserName}} + + + 处理状态: + 已完成 + 进行中 + + + 说明: + {{item.nodeSummary}} + + + + diff --git a/pages/center/case/caseLog.wxss b/pages/center/case/caseLog.wxss new file mode 100644 index 0000000..1daaf30 --- /dev/null +++ b/pages/center/case/caseLog.wxss @@ -0,0 +1,56 @@ +page { + background-color: #fafafa; +} + +.log { + padding: 20rpx 30rpx; +} + +.log-box { + border-left: 5px solid #dfefff; + padding: 0 0 20rpx 35rpx; + position: relative; +} + +.log-box::before { + background-color: #3096fa; + border: 5px solid #dfefff; + border-radius: 50%; + box-sizing: border-box; + content: ""; + display: block; + height: 40rpx; + left: -25rpx; + position: absolute; + top: 0; + width: 40rpx; +} + +.log-time { + color: #333; + font-size: 36rpx; +} + +.log-info { + background-color: #fff; + border: 1px solid #eee; + border-radius: 20rpx; + margin-top: 10rpx; + padding: 15rpx; +} + +.log-row { + border-bottom: 1px solid #eee; + display: flex; + font-size: 30rpx; + line-height: 60rpx; +} + +.row-name { + text-align: right; + width: 25%; +} + +.red { + color: red; +} \ No newline at end of file diff --git a/pages/center/center.js b/pages/center/center.js new file mode 100644 index 0000000..31f2024 --- /dev/null +++ b/pages/center/center.js @@ -0,0 +1,396 @@ +var a = getApp(), r = require("../../utils/md5.js"); + +Page({ + data: { + token: a.globalData.token, + sourceUrl: a.baseUrls.sourceUrl, + userIcon: "", + userName: "", + curCommunityName: "", + gridList: [], + serviceUrl: a.baseUrls.serviceUrl, + baseImgUrl: a.baseUrls.baseImgUrl, + userNameText: "", + userPassword: "", + showAuthentication: !1, + isLoading: !1, + menuList: [], + imgUrl: a.baseUrls.baseCardUrl, + isShow: !0, + isOpen: !0, + Height: 0, + isBindPhone: !0, + isShowCardBag: !1, + userGridList: [], + userOrgList: [], + isCreate: !1 + }, + callPhone: function (t) { + var e = t.currentTarget.dataset.item; + console.log(e), wx.makePhoneCall({ + phoneNumber: e + "" + }); + }, + checkPermission: function () { + var t = this; + try { + var e = wx.getStorageSync("name"), a = wx.getStorageSync("userIcon"); + e ? this.setData({ + name: e, + userIcon: a + }) : wx.showModal({ + title: "提示", + content: "小程序需要您微信头像以及昵称用于展示,请授权.", + showCancel: !1, + success: function (e) { + e.confirm && t.getUserProfile(3); + } + }); + } catch (t) { + t = VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL.handleException(t); + wx.showToast({ + title: "获取信息失败", + icon: "error" + }); + } + }, + getUserProfile: function (t) { + var e = this; + wx.getUserProfile({ + desc: "获取微信头像以及昵称用于展示", + success: function (t) { + wx.setStorage({ + data: t.userInfo.nickName, + key: "name" + }), wx.setStorage({ + data: t.userInfo.avatarUrl, + key: "userIcon" + }), e.setData({ + name: t.userInfo.nickName, + userIcon: t.userInfo.avatarUrl + }), a.globalData.userIcon = t.userInfo.avatarUrl, a.globalData.userInfo = t.userInfo; + }, + fail: function (t) { + wx.showToast({ + title: "获取个人信息失败", + icon: "error" + }); + } + }); + }, + getHelpCount: function () { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getHelpCount, [a.baseUrls.requestUrl]), { + problemTypeId: "b99f796f-b3a0-4d52-b10e-6e387ebbcc1b", + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + t.setData({ + helpCount: a.data + }); + }, function (t, e) { + console.log(e); + }); + }, + getFriendCount: function () { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getHelpCount, [a.baseUrls.requestUrl]), { + problemTypeId: "99cf4a4e-22a2-49b2-9274-4519cd47cefd" + }, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + t.setData({ + friendCount: a.data + }); + }, function (t, e) { + console.log(e); + }); + }, + getOtherCount: function () { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getHelpCount, [a.baseUrls.requestUrl]), { + problemTypeId: "02a11dc0-9656-4504-8c11-030a28914ff3" + }, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + t.setData({ + otherCount: a.data + }); + }, function (t, e) { + console.log(e); + }); + }, + checkGrid: function () { + this.setData({ + showAuthentication: !0 + }), wx.hideTabBar({ + animation: !1 + }); + }, + getGridList: function () { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getGridListPage, [a.baseUrls.requestUrl]), { + page: 1, + rows: 3, + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + "200" == e && t.setData({ + gridList: a.rows + }); + }, function (t, e) { + console.log(e); + }); + }, + doAuthentication: function () { + var t = this; + if (!t.data.isLoading) { + var e = { + userName: t.data.userNameText, + passWord: r.hexMD5(r.hexMD5(r.hexMD5(t.data.userPassword))) + }; + t.setData({ + isLoading: !0 + }), a.restAjax.get(a.restAjax.path(a.apis.checkGrid, [a.baseUrls.requestUrl]), e, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + wx.hideLoading(), a.data ? (wx.showToast({ + title: "认证成功!", + icon: "success" + }), t.setData({ + showAuthentication: !1, + userNameText: "", + userPassword: "", + isLoading: !1 + }), wx.showTabBar({ + animation: !1 + }), t.getGridList(), wx.navigateTo({ + url: "/packagecard/cardList/cardList?type=grid&id=" + a.data + })) : (wx.showToast({ + title: "认证失败!", + icon: "error" + }), t.setData({ + isLoading: !1 + })); + }, function (e, a) { + console.log(a), wx.showToast({ + title: a.msg, + icon: "error" + }), t.setData({ + isLoading: !1 + }); + }); + } + }, + closeAuthentication: function () { + this.setData({ + showAuthentication: !1, + userNameText: "", + userPassword: "" + }), wx.showTabBar({ + animation: !1 + }); + }, + checkGridMore: function () { + wx.navigateTo({ + url: "./contact" + }); + }, + checkMoreCase: function () { + wx.navigateTo({ + url: "./case/caseList" + }); + }, + checkCaseStatus: function (t) { + var e = t.currentTarget.dataset.status, a = ""; + a = "2" == e ? "?handleStatus=2" : "?isAccept=" + e, wx.navigateTo({ + url: "./case/caseList" + a + }); + }, + contactGrid: function (t) { + var e = t.currentTarget.dataset.item; + console.log(e), wx.navigateTo({ + url: "./contact/contactDetail?gridMiniId=" + e.cardSysId + "&title=" + e.userUserName + }); + }, + onload(options) { + this.getHelpCount(); + this.getFriendCount(); + this.getOtherCount(); + if (!wx.getStorageSync("userIcon")) { + this.checkPermission(); + } + + }, + checkPermission() { + var t = this; + try { + var e = wx.getStorageSync("name"), a = wx.getStorageSync("userIcon"); + e ? this.setData({ + name: e, + userIcon: a + }) : wx.showModal({ + title: "提示", + content: "小程序需要您微信头像以及昵称用于展示,请授权.", + showCancel: !1, + success: function (e) { + e.confirm && t.getUserProfile(3); + } + }); + } catch (t) { + wx.showToast({ + title: "获取信息失败", + icon: "error" + }); + } + }, + getUserProfile(t) { + var e = this; + wx.getUserProfile({ + desc: "获取微信头像以及昵称用于展示", + success: function (t) { + wx.setStorage({ + data: t.userInfo.nickName, + key: "name" + }), wx.setStorage({ + data: t.userInfo.avatarUrl, + key: "userIcon" + }), e.setData({ + userName: t.userInfo.nickName, + userIcon: t.userInfo.avatarUrl + }), a.globalData.userIcon = t.userInfo.avatarUrl, a.globalData.userInfo = t.userInfo; + }, + fail: function (t) { + wx.showToast({ + title: "获取个人信息失败", + icon: "error" + }); + } + }); + }, + goColumnList(t) { + var e = t.currentTarget.dataset.item; + if ("1" == e.configColumnGroupTargetMode) { + var a = e.configColumnGroupTargetUrl; + console.log(a), -1 != a.indexOf("/mine/myCard/myCard") || -1 != a.indexOf("/packagecard/cardList/cardList") ? (this.setData({ + isShowCardBag: !0 + }), -1 != a.indexOf("/mine/myCard/myCard") && this.setData({ + isCreate: !1 + }), -1 != a.indexOf("/packagecard/cardList/cardList") && this.setData({ + isCreate: !0 + })) : wx.navigateTo({ + url: a + }); + } else "2" == e.configColumnGroupTargetMode || "3" == e.configColumnGroupTargetMode || wx.navigateTo({ + url: "../columnlist/columnlist?id=" + e.configColumnGroupId + "&title=" + e.configColumnGroupName + }); + }, + onShow() { + this.getGridList(), this.setData({ + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + curCommunityName: wx.getStorageSync("curCommunityName") + }), this.getMineIsGrid(); + }, + getMineIsGrid() { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getMineIsGrid, [a.baseUrls.requestUrl]), null, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + t.setData({ + userGridList: a + }), t.getMineOrgList(); + }, function (e, a) { + console.log(a), t.getMineOrgList(); + }); + }, + getMineOrgList() { + var _self = this; + a.restAjax.get(a.restAjax.path(a.apis.getMineOrg, [a.baseUrls.requestUrl]), null, { + headers: { + token: a.globalData.token + } + }, function (e, a) { + _self.setData({ + userOrgList: a + }); + var r = null != _self.data.userGridList && null != _self.data.userGridLis && _self.data.userGridList.length > 0, o = null != _self.data.userOrgList && null != _self.data.userOrgList && _self.data.userOrgList.length > 0; + (r || o) && _self.getItemList(); + }, function (t, e) { + console.log(e); + }); + }, + getItemList() { + wx.showLoading({ + title: "加载中..." + }); + var t = this; + console.log(a.urls.getMenuList) + a.http.get(a.urls.getMenuList, { + header: { + token: a.globalData.token + } + }).then(function (e) { + var a = e.data; + wx.stopPullDownRefresh({}), wx.hideLoading({}); + var r = !0; + a.forEach(function (t) { + t.configColumnList.sort(function (t, e) { + return t.configColumnGroupOrder - e.configColumnGroupOrder; + }), "创建名片" == t.configColumnGroupName && (r = !1); + }), t.setData({ + menuList: a, + isShow: r + }); + }).catch(function (t) { + console.log(t), wx.stopPullDownRefresh({}), wx.hideLoading({}); + }); + }, + imgHeight(t) { + var e = wx.getSystemInfoSync().windowWidth * t.detail.height / t.detail.width * .88 + "px"; + this.setData({ + Height: e + }); + }, + toFunction(t) { + console.log(t); + var e = ""; + this.data.menuList.forEach(function (t) { + "3" == t.configColumnGroupDirection && (e = t.configColumnGroupTargetUrl); + }), -1 != e.indexOf("/packagecard/cardList/cardList") ? this.setData({ + isShowCardBag: !0, + isCreate: !0 + }) : wx.navigateTo({ + url: e + }); + }, + onHide(t) { + this.setData({ + isShowCardBag: !1 + }); + }, + changeCard(t) { + console.log(t.currentTarget.dataset.type), console.log(t.currentTarget.dataset.item); + var e = t.currentTarget.dataset.item, a = ""; + a = 1 == t.currentTarget.dataset.type ? this.data.isCreate ? "/packagecard/cardList/cardList?type=grid&id=" + e.gridMiniId : "/pages/mine/myCard/myCard?type=grid&id=" + e.gridMiniId : this.data.isCreate ? "/packagecard/cardList/cardList?type=org&id=" + e.organizationId : "/pages/mine/myCard/myCard?type=org&id=" + e.organizationId, + wx.navigateTo({ + url: a + }), this.setData({ + isShowCardBag: !1 + }); + } +}) \ No newline at end of file diff --git a/pages/center/center.json b/pages/center/center.json new file mode 100644 index 0000000..5458f6c --- /dev/null +++ b/pages/center/center.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "我的" +} \ No newline at end of file diff --git a/pages/center/center.wxml b/pages/center/center.wxml new file mode 100644 index 0000000..ac1123c --- /dev/null +++ b/pages/center/center.wxml @@ -0,0 +1,188 @@ + + + + 网格员认证>> + + + + + 我的事件 + 查看更多 + + + + + + 待受理 + + + + 已受理 + + + + 已完结 + + + + 我的收藏 + + + + + + 快速反馈 + 查看更多 + + + + + + + {{item.userUserName}} + 网格员 + 立即联系 + + + + + + 邻里互助 + + + 交友 + {{friendCount}} + + + 求助 + {{helpCount}} + + + 其他 + {{otherCount}} + + + + + 快速拨号 + + + 人力资源社会保障热线 + 12333 + + + 住房公积金 + 12329 + + + 市民服务热线 + 12345 + + + 市长热线 + 12320 + + + + + + + + + + + + 立即认证 + + + + + + + + + {{group.configColumnGroupName}} + + + + + {{item.configColumnName}} + + + + + + + + {{group.configColumnGroupName}} + {{group.configColumnGroupRemark}} + + + + + + + {{group.configColumnGroupName}} + + + + + + + + + + + + + + + + + + + + + + + + + + + 网格员 + + + + {{item.areaName}} + + + + + + + + 生活服务 + + + + {{item.unitName}} + + + 地址:{{item.communityName}}-{{item.streetName}} + + + + + + + diff --git a/pages/center/center.wxss b/pages/center/center.wxss new file mode 100644 index 0000000..84aca20 --- /dev/null +++ b/pages/center/center.wxss @@ -0,0 +1,729 @@ +.center-top { + background-color: #ff4949; + border-bottom-left-radius: 120rpx; + border-bottom-right-radius: 120rpx; + padding: 20rpx 20rpx 120rpx 40rpx; +} + +.user-info { + display: flex; +} + +.user-info image { + border-radius: 50%; + height: 120rpx; + margin-right: 20rpx; + width: 120rpx; +} + +.name { + color: #fff; + font-size: 34rpx; + margin: 10rpx 0; +} + +.user-community { + background-color: rgba(0,0,0,.22); + border-radius: 34rpx; + color: #fff; + font-size: 28rpx; + line-height: 50rpx; + padding: 0 20rpx; + text-align: center; +} + +.integral { + display: flex; + margin-top: 40rpx; +} + +.integral-box { + flex: 1; + text-align: center; +} + +.integral-count { + color: #fff; + font-size: 40rpx; +} + +.integral-name { + color: #fff; + font-size: 28rpx; +} + +.case,.contact,.help { + background-color: #fff; + border-radius: 14rpx; + box-sizing: border-box; + margin: -100rpx auto 0; + padding: 20rpx; + position: relative; + width: 710rpx; +} + +.case { + padding: 25rpx 20rpx; +} + +.case-title { + display: flex; + justify-content: space-between; + margin-bottom: 20rpx; + padding: 0 20rpx; +} + +.help-title { + padding: 0; +} + +.title { + font-size: 30rpx; + font-weight: 700; +} + +.more { + color: #a6a6a6; + font-size: 28rpx; +} + +.case-count,.contact-people { + display: flex; +} + +.case-count-box { + flex: 1; + text-align: center; +} + +.case-count-box image { + height: 80rpx; + width: 80rpx; +} + +.case-count-name { + color: #010101; + font-size: 30rpx; +} + +.contact { + background-color: initial; + margin-top: 20rpx; + padding: 0; +} + +.contact-container { + overflow-x: auto; + white-space: nowrap; +} + +.contact-box { + background-color: #fff; + border-radius: 14rpx; + display: inline-block; + margin-right: 3%; + padding: 20rpx; + text-align: center; + width: 32%; +} + +.contact-box:last-child { + margin-right: 0; +} + +.contact-box image { + border-radius: 50%; + height: 100rpx; + width: 100rpx; +} + +.contact-name { + color: #101010; + font-size: 32rpx; + margin-top: 15rpx; +} + +.contact-type { + color: #a6a6a6; + font-size: 28rpx; +} + +.contact-btn { + background-color: #ff4949; + border-radius: 25rpx; + color: #fff; + font-size: 28rpx; + height: 50rpx; + line-height: 50rpx; + margin: 25rpx auto 0; + padding: 0 10rpx; + width: 140rpx; +} + +.help { + margin-top: 20rpx; +} + +.help-type { + display: flex; + height: 60rpx; + justify-content: space-between; + line-height: 60rpx; +} + +.type-name { + color: #101010; + font-size: 30rpx; +} + +.type-count { + color: #9b9b9b; + font-size: 30rpx; +} + +.card { + margin-top: 20rpx; +} + +.user-btn { + display: flex; + justify-content: space-between; + width: 100%; +} + +.btn { + background-color: #db2a2a; + border-radius: 40rpx; + border-radius: 30rpx 0 0 30rpx; + color: #fff; + height: 60rpx; + line-height: 60rpx; + margin-right: -20rpx; + margin-top: 30rpx; + padding: 0 15rpx 0 30rpx; +} + +.authentication { + background-color: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 9999; +} + +.authentication-container { + font-size: 0; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 710rpx; +} + +.authentication-container image { + width: 100%; +} + +.authentication-box { + background-color: #fff; + padding: 60rpx 40rpx; +} + +.authentication-box input { + background-color: #f3f3f3; + box-sizing: border-box; + height: 80rpx; + margin-bottom: 20rpx; + padding: 0 30rpx; +} + +.authentication-box input,.authentication-btn { + border-radius: 40rpx; + font-size: 32rpx; + width: 100%; +} + +.authentication-btn { + background-color: #f55054; + color: #fff; + line-height: 80rpx; + text-align: center; +} + +.authentication-img { + position: relative; +} + +.close { + height: 50rpx; + position: absolute; + right: -15rpx; + top: -25rpx; + width: 50rpx!important; +} + +.no-padding { + padding: 0; +} + +.more image { + height: 24rpx; + margin-top: 8rpx; + vertical-align: top; +} + +.UCenter-bg { + align-items: flex-start; + color: #fff; + display: flex; + flex-direction: column; + font-weight: 300; + height: 400rpx; + justify-content: center; + overflow: hidden; + position: relative; + top: 0; + width: 100%; +} + +.UCenter-bg .user-info { + align-items: center; + align-self: center; + display: flex; + flex-direction: row; + height: 200rpx; + position: absolute; + width: 85%; +} + +.user-info .user-icon { + border-radius: 50%; + height: 136rpx; + width: 136rpx; +} + +.vip-box { + color: #fff; + left: 80rpx; + position: absolute; + top: 300rpx; +} + +.vip-box .title { + font-size: 32rpx; + font-weight: 700; +} + +.vip-box .msg { + font-size: 28rpx; +} + +.sign-txt { + align-self: center; + color: #fff; + font-size: 28rpx; + font-weight: 700; + position: absolute; + top: 280rpx; + width: 80%; +} + +.sign-txt,.user-content { + display: flex; +} + +.user-content { + flex-direction: column; + justify-content: space-between; + margin: 30rpx; +} + +.user-content .title { + color: #fff; + font-size: 38rpx; + font-weight: 700; + margin-bottom: 15rpx; +} + +.user-content .des { + color: #fff; + font-size: 32rpx; + margin-top: 15rpx; +} + +.UCenter-bg image { + height: 400px; + width: 100%; +} + +.UCenter-bg .icon { + height: 48rpx; + width: 48rpx; +} + +.UCenter-bg .icons { + position: absolute; + right: 15rpx; + z-index: 10; +} + +.scroll-content { + display: flex; + flex-direction: column; + min-height: 300rpx; + width: 100%; + z-index: 99; +} + +.UCenter-bg .gif-wave { + bottom: 0; + position: absolute; + width: 100%; +} + +.UCenter-bg .gif-wave,.mapBox,map { + height: 100rpx; + left: 0; + mix-blend-mode: screen; + z-index: 99; +} + +.mapBox,map { + height: 300rpx; + width: 750rpx; +} + +.play-box { + align-items: center; + background-color: #fff; + border-radius: 15rpx; + box-shadow: 10px 10px 5px #cacaca; + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 20rpx; + padding: 10rpx 0rpx; + width: 80%; +} + +.play-box image { + height: 60rpx; + width: 60rpx; +} + +.creat-card { + align-items: center; + background: #e6b980; + border-radius: 50%; + bottom: 20rpx; + box-sizing: border-box; + flex-direction: column; + height: 140rpx; + justify-content: center; + padding: 20rpx; + position: fixed; + right: 20rpx; + width: 140rpx; + z-index: 100; +} + +.order-box { + background-color: #fff; + flex-direction: row; + justify-content: space-between; + margin: 15rpx; + padding: 15rpx; +} + +.order-box,.order-item { + align-items: center; + display: flex; +} + +.order-item { + flex-direction: column; + justify-content: center; + width: 128rpx; +} + +.order-item image { + height: 64rpx; + width: 64rpx; +} + +.order-item text { + margin-top: 15rpx; +} + +.purse-box { + background-color: #fff; + flex-direction: column; + justify-content: center; + margin: 0rpx 15rpx 15rpx; + padding: 15rpx; +} + +.purse-box,.purse-title { + align-items: center; + display: flex; +} + +.purse-title { + flex-direction: row; + justify-content: space-between; + width: 100%; +} + +.purse-title .title { + color: #000; + font-size: 32rpx; +} + +.purse-title .hint { + color: #5f5f5f; + font-size: 28rpx; +} + +.purse-content-box { + flex-direction: row; + justify-content: space-around; +} + +.purse-content-box,.purse-content-box .item { + align-items: center; + color: #000; + display: flex; + font-size: 28rpx; + width: 100%; +} + +.purse-content-box .item { + flex-direction: column; + justify-content: center; +} + +.purse-content-box .item:nth-child(2) { + border-left: 1rpx solid #dfdfdf; + border-right: 1rpx solid #dfdfdf; +} + +.marketing-box { + justify-content: space-around; + margin-top: 15rpx; +} + +.marketing-box,.marketing-box .item { + align-items: center; + color: #000; + display: flex; + flex-direction: row; + font-size: 28rpx; + width: 100%; +} + +.marketing-box .item { + background-color: #f5f5f5; + border-radius: 10rpx; + justify-content: center; +} + +.marketing-box .item:active { + background-color: #fcfcfc; + color: #000; +} + +.marketing-box .item:nth-child(2) { + margin-left: 15rpx; +} + +.price { + color: #000; + font-size: 32rpx; + height: 64rpx; + line-height: 64rpx; + overflow: hidden; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + width: 180rpx; +} + +.img-48 { + height: 48rpx; + width: 48rpx; +} + +.money-box { + align-items: center; + background-color: #f5f5f5; + display: flex; + flex-direction: row; + justify-content: space-around; + width: 66%; +} + +.moeny-box-2 { + justify-content: center; + width: 33%; +} + +.moeny-box-2,.money-box .item { + align-items: center; + display: flex; + flex-direction: column; + height: 145rpx; +} + +.money-box .item { + justify-content: space-between; + padding: 15rpx; + z-index: 2; +} + +.img-bg-128 { + height: 145rpx; + position: absolute; + width: 33%; +} + +.item-white { + align-items: center; + color: #fff; + display: flex; + flex-direction: column; + font-size: 28rpx; + height: 145rpx; + justify-content: space-between; + padding: 15rpx; + z-index: 2; +} + +.money-box .item image { + height: 64rpx; + width: 64rpx; +} + +.bg-box { + align-items: center; + background-color: #f5f5f5; + border-radius: 10rpx; + display: flex; + flex-direction: row; + justify-content: space-around; + margin-top: 15rpx; + width: 100%; +} + +.img-64 { + height: 64rpx; + width: 64rpx; +} + +.text-28 { + color: #000; + font-size: 28rpx; + margin-top: 15rpx; +} + +.creat-card image { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 80rpx; +} + +.item-box { + align-items: center; + background-color: #fff; + display: flex; + flex-direction: row; + height: 128rpx; + padding: 15rpx; + width: 100%; +} + +.item-img { + height: 96rpx; + width: 96rpx; +} + +.item-content { + display: flex; + flex-direction: column; + justify-content: center; + min-height: 128rpx; + padding: 15rpx; + width: 80%; +} + +.group-box { + background-color: #fff; + margin: 5rpx 15rpx 0rpx; +} + +.group-box:nth-child(1) { + margin: 0rpx 15rpx; +} + +.ver-box { + display: flex; + flex-direction: column; +} + +.ver-box-title { + color: #000; + font-size: 32rpx; + font-weight: 700; + padding: 15rpx 15rpx 0rpx; +} + +.ver-box-list { + align-items: flex-start; + flex-direction: row; + justify-content: flex-start; + padding-left: 15rpx; +} + +.ver-box-items,.ver-box-list { + display: flex; +} + +.ver-box-items { + align-items: center; + flex-direction: column; + justify-content: center; + margin: 15rpx; +} + +.ver-box-items text { + font-size: 24rpx; + margin-top: 15rpx; + max-width: 96rpx; +} + +.ver-box-items:nth-child(1) { + margin: 15rpx 15rpx 15rpx 0rpx; +} + +.ver-box-items image { + border-radius: 10rpx; + height: 96rpx; + width: 96rpx; +} + +.other-name { + align-items: center; + display: flex; + flex-direction: row; + font-size: 14px; + height: 120rpx; + justify-content: center; + overflow: hidden; + text-align: center; + text-overflow: ellipsis; + white-space: pre-line; +} \ No newline at end of file diff --git a/pages/center/contact.js b/pages/center/contact.js new file mode 100644 index 0000000..d7bc9b9 --- /dev/null +++ b/pages/center/contact.js @@ -0,0 +1,43 @@ +var t = getApp(); + +Page({ + data: { + token: t.globalData.token, + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl, + sourceUrl: t.baseUrls.sourceUrl, + gridList: [] + }, + getGridList: function() { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getGridList, [ t.baseUrls.requestUrl ]), { + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: t.globalData.token + } + }, function(t, a) { + e.setData({ + gridList: a + }); + }, function(t, e) { + console.log(e); + }); + }, + contactGrid: function(t) { + var e = t.currentTarget.dataset.item; + wx.navigateTo({ + url: "./contact/contactDetail?gridMiniId=" + e.cardSysId + }); + }, + onLoad: function(t) { + this.getGridList(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/center/contact.json b/pages/center/contact.json new file mode 100644 index 0000000..558cf58 --- /dev/null +++ b/pages/center/contact.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "快速反馈" +} \ No newline at end of file diff --git a/pages/center/contact.wxml b/pages/center/contact.wxml new file mode 100644 index 0000000..cd7af52 --- /dev/null +++ b/pages/center/contact.wxml @@ -0,0 +1,13 @@ + + + + + + + {{item.userUserName}} + 网格员 + + + 立即联系 + + diff --git a/pages/center/contact.wxss b/pages/center/contact.wxss new file mode 100644 index 0000000..64fa950 --- /dev/null +++ b/pages/center/contact.wxss @@ -0,0 +1,47 @@ +.contact { + background-color: #fff; + padding: 0 20rpx; +} + +.contact-box { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; + padding: 20rpx 0; +} + +.contact-box:last-child { + border-bottom: none; +} + +.contact-info { + display: flex; +} + +.contact-info image { + border-radius: 50%; + height: 120rpx; + margin-right: 10rpx; + width: 120rpx; +} + +.name { + font-size: 34rpx; + margin: 15rpx 0 10rpx; +} + +.type { + color: #a6a6a6; + font-size: 28rpx; +} + +.contact-btn { + background-color: #ff4949; + border-radius: 40rpx; + color: #fff; + font-size: 32rpx; + height: 50rpx; + line-height: 50rpx; + margin-top: 25rpx; + padding: 0 15rpx; +} \ No newline at end of file diff --git a/pages/center/contact/contactDetail.js b/pages/center/contact/contactDetail.js new file mode 100644 index 0000000..931f7f2 --- /dev/null +++ b/pages/center/contact/contactDetail.js @@ -0,0 +1,920 @@ +var t = getApp(), a = wx.createInnerAudioContext(); + +Page({ + data: { + token: t.globalData.token, + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl, + imgUrl: t.baseUrls.baseCardUrl, + sourceUrl: t.baseUrls.sourceUrl, + cardUrl: t.baseUrls.baseCardUrl, + gridMiniId: "", + gridDetail: {}, + showCode: !1, + nameTxt: "名片", + dataList: [], + curIndex: 0, + speedStep: 5, + waitFlag: !1, + avatarUrl: t.globalData.userInfo.avatarUrl, + areaList: [], + cardHeight: "", + cardInfo: {}, + personIntro: {}, + companyIntro: {}, + shareImg: "", + phoneTxt: "未录入", + emailTxt: "未录入", + wechateTxt: "未录入", + addressTxt: "未录入", + forwardCount: "", + shareRecordId: "", + isShowBarCode: !1, + browUserList: [], + isShowBrowseUser: !1, + shareImgUrl: "", + tempUserId: "", + cardTemplateDispatchId: "", + cardTemplateUseId: "", + isShowCard: !1, + otherCardList: [], + isPlayAudio: !1, + audioId: "", + count: 3, + isMine: 1, + isDefault: !0, + animationData: {}, + isShowBtn: !1, + isShowPhone: !1, + isBindPhone: !1, + isNeedRefresh: !0, + isShowComment: !1, + posterId: "", + isShowPoster: !1, + defaultBtnIcon: "/images/ic_share_img.png" + }, + onLoad: function(t) { + this.checkPermission(), t.cardTemplateDispatchId && this.setData({ + cardTemplateDispatchId: t.cardTemplateDispatchId, + isMine: 2 + }), "" != t.title && null != t.title && wx.setNavigationBarTitle({ + title: t.title + }), this.buildId(), console.log(null != t.gridMiniId && "" != t.gridMiniId), console.log(t.gridMiniId), + null != t.gridMiniId && "" != t.gridMiniId ? (console.log("获取名片"), this.setData({ + cardTemplateUseId: t.gridMiniId + }), this.getCard()) : this.getDefault(); + }, + doLogin: function() { + var a = this; + wx.showLoading({ + title: "加载中..." + }), wx.login({ + success: function(e) { + t.http.post(t.urls.wxLogin, { + data: { + jsCode: e.code + } + }).then(function(e) { + wx.hideLoading({}); + var s = e.data.data.split("_")[0], o = e.data.data.split("_")[1]; + a.setData({ + isBindPhone: 0 == o + }), wx.setStorageSync("token", s), wx.setStorageSync("bindPhone", o), t.globalData.token = s, + a.doSaveUserInfo(), a.getInfo(), 2 == a.data.isMine ? "" != a.data.cardTemplateDispatchId && a.getCardId() : a.getDefault(), + a.getOtherCard(2), a.getBtnIcon(); + }).catch(function(t) { + wx.hideLoading({}); + }); + } + }); + }, + getBtnIcon: function() { + var a = this; + t.http.get(t.urls.getIndexIcon, { + header: { + token: t.globalData.token + } + }).then(function(t) { + t.data.data && a.setData({ + defaultBtnIcon: a.data.imgUrl + t.data.data + }); + }).catch(function(t) {}); + }, + doSaveUserInfo: function() { + try { + var a = wx.getStorageSync("name"), e = wx.getStorageSync("userIcon"); + a && t.http.put(t.urls.doSaveUserInfo, { + header: { + token: t.globalData.token + }, + data: { + avatarUrl: e, + nickName: a + } + }).then(function(t) {}).catch(function(t) { + console.log(t); + }); + } catch (t) { + t = VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL.handleException(t); + console.log(t); + } + }, + getMainColumn: function(a) { + var e = this; + e.setData({ + dataList: [] + }), t.http.get(t.urls.getMainColumn, { + header: { + token: t.globalData.token + }, + data: { + creator: a + } + }).then(function(t) { + wx.showLoading({ + title: "加载中..." + }), e.getMainMoment(t.data, a, 0); + }).catch(function(t) { + wx.stopPullDownRefresh({}); + }); + }, + getMainBaseUserInfo: function(a) { + var e = this; + t.http.get(t.urls.getMainMoment.format({ + configColumnId: "de7b5e22-64f9-4c60-a1f9-6ac004dfb9a8" + }), { + header: { + token: t.globalData.token + }, + data: { + userId: a + } + }).then(function(t) { + t.data.length > 0 ? (e.setData({ + isShowBtn: !0 + }), t.data[0].list.forEach(function(t) { + switch (t.name) { + case "phone": + e.setData({ + phoneTxt: t.value + }); + break; + + case "wechat": + e.setData({ + wechateTxt: t.value + }); + break; + + case "email": + e.setData({ + emailTxt: t.value + }); + break; + + case "address": + e.setData({ + addressTxt: t.value + }); + } + })) : e.setData({ + isShowBtn: !1 + }); + }).catch(function(t) { + console.log(t); + }); + }, + onClose: function() { + this.setData({ + isShowPoster: !1, + isShowBrowseUser: !1 + }); + }, + getMainMoment: function(a, e, s) { + var o = this; + s < a.length ? t.http.get(t.urls.getMainMoment.format({ + configColumnId: a[o.data.curIndex].configColumnId + }), { + header: { + token: t.globalData.token + }, + data: { + userId: e + } + }).then(function(t) { + if (t.data.length > 0) { + var s = a[o.data.curIndex], n = { + funcSwitch: "2" == s.configColumnCollect || "4" == s.configColumnCollect || "2" == s.configColumnLike && "4" == s.configColumnLike || "2" == s.configColumnDispatch || "4" == s.configColumnDispatch || "2" == s.configColumnComment || "4" == s.configColumnComment, + collectSwitch: a[o.data.curIndex].configColumnCollect, + commentSwitch: a[o.data.curIndex].configColumnComment, + shareSwitch: a[o.data.curIndex].configColumnDispatch, + likeSwitch: a[o.data.curIndex].configColumnLike, + cId: a[o.data.curIndex].configColumnId, + type: a[o.data.curIndex].configColumnType, + name: a[o.data.curIndex].configColumnName, + mode: a[o.data.curIndex].configTableMode, + list: t.data.slice(0, a[o.data.curIndex].configColumnRowCount) + }; + o.data.dataList.push(n); + } + o.setData({ + curIndex: ++o.data.curIndex + }), o.getMainMoment(a, e, o.data.curIndex); + }).catch(function(t) { + o.setData({ + curIndex: ++o.data.curIndex + }), a[o.data.curIndex] && o.getMainMoment(a, e, o.data.curIndex); + }) : (wx.hideLoading({}), wx.stopPullDownRefresh({}), o.buildMainData()); + }, + buildMainData: function() { + var t = this, a = ""; + t.data.dataList.forEach(function(e) { + e.list.forEach(function(e) { + a += e.uid + ",", e.collectCount = 0, e.collectStatus = !1, e.commentCount = 0, + e.dispatchCount = 0, e.likeCount = 0, e.likeStatus = !1, e.scansCount = 0, e.list.forEach(function(a) { + switch (a.dataType) { + case "2": + var e = a.value.split("@"); + e.length > 1 ? a.dataMode = e[1] : a.dataMode = "1"; + var s = e[0].split(","), o = []; + s.forEach(function(a) { + if ("" != a) { + var e = { + id: a, + path: t.data.imgUrl + a + }; + o.push(e); + } + }), a.valueList = o; + break; + + case "3": + s = a.value.split(","), o = []; + s.forEach(function(a) { + if ("" != a) { + var e = a.split("&"), s = "00:00"; + if (e.length > 1) { + var n = e[1], r = parseInt(n / 60), i = parseInt(n % 60); + s = (r > 9 ? r : "0" + r) + ":" + (+i > 9 ? i : "0" + i); + } + var d = { + id: e[0], + path: t.data.imgUrl + e[0], + isPlay: !1, + duration: 1e5, + curDuration: 0, + curDurationStr: "00:00", + totalDurationStr: s + }; + o.push(d); + } + }), a.valueList = o; + break; + + case "4": + s = a.value.split(","), o = []; + for (var n = 0; n < s.length; n++) if ("" != s[n]) { + var r = s[n].split("&"), i = { + path: t.data.imgUrl + r[0], + imgPath: t.data.imgUrl + r[1] + }; + o.push(i); + } + a.valueList = o; + break; + + case "6": + s = a.value.split("-"), o = []; + s.forEach(function(t) { + if ("" != t) { + var a = t.split(","), e = { + name: "", + address: "", + latitude: a[0], + longitude: a[1] + }; + o.push(e); + } + }), a.valueList = o; + break; + + case "8": + a.dictionariesList.forEach(function(t) { + -1 != a.value.indexOf(t.dataId) && (a.selValue = t.dataName); + }); + break; + + case "9": + a.dictionariesList.forEach(function(t) { + -1 != a.value.indexOf(t.dataId) ? t.isSel = !0 : t.isSel = !1; + }); + } + }); + }); + }), t.setData({ + curIndex: 0, + dataList: t.data.dataList + }), t.getColumnContentHandle(a); + }, + getColumnContentHandle: function(a) { + var e = this; + wx.showLoading({ + title: "加载中..." + }), t.http.get(t.urls.getColumnContentHandle.format({ + projectId: "column", + businessIds: a + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), t.data.forEach(function(t) { + e.data.dataList.forEach(function(a) { + a.list.forEach(function(a) { + a.uid == t.businessId && (a.collectCount = t.collectCount, a.collectStatus = t.collectStatus, + a.commentCount = t.commentCount, a.dispatchCount = t.dispatchCount, a.likeCount = t.likeCount, + a.likeStatus = t.likeStatus, a.scansCount = t.scansCount); + }); + }); + }), e.setData({ + curIndex: 0, + dataList: e.data.dataList + }); + }).catch(function(t) {}); + }, + showMore: function(t) { + var a = t.currentTarget.dataset.item; + if ("2" == a.mode) { + var e = t.currentTarget.dataset.userid, s = t.currentTarget.dataset.idx; + this.setData({ + isNeedRefresh: !1 + }), wx.navigateTo({ + url: "/packagecard/moments/showlist/showlist?id=" + a.cId + "&userId=" + e + "&index=" + s + }); + } + }, + onPullDownRefresh: function() { + "" != t.globalData.token ? (this.setData({ + isNeedRefresh: !0 + }), 2 == this.data.isMine ? "" != this.data.cardTemplateUseId && (this.setData({ + dataList: [], + cardInfo: null, + areaList: null + }), this.getCard()) : 3 == this.data.isMine ? (this.setData({ + dataList: [], + cardInfo: null, + areaList: null + }), this.getBrowUserCard()) : this.getDefault(), this.getOtherCard(2), this.getBtnIcon()) : this.doLogin(); + }, + viewImg: function(t) { + var a = [], e = t.currentTarget.dataset.values; + this.setData({ + isNeedRefresh: !1 + }), e.forEach(function(t) { + a.push(t.path); + }), wx.previewImage({ + urls: a, + current: t.currentTarget.dataset.cur + }); + }, + viewVideo: function(t) { + var a = t.currentTarget.dataset.url; + this.setData({ + isNeedRefresh: !1 + }), wx.previewMedia({ + sources: [ { + url: a, + type: "video" + } ] + }); + }, + play: function(t) { + var e = this, s = t.currentTarget.dataset.index, o = t.currentTarget.dataset.idx, n = t.currentTarget.dataset.i, r = t.currentTarget.dataset.a, i = t.currentTarget.dataset.item; + console.log(e.data.isPlayAudio), e.data.isPlayAudio ? (e.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + t.list.forEach(function(t) { + "3" == t.dataType && t.valueList && t.valueList.forEach(function(t) { + t.isPlay = !1, t.curDuration = 0, t.curDuationStr = "00:00"; + }); + }); + }); + }), e.setData({ + dataList: e.data.dataList + }), a.stop(), e.data.audioId != i.id && (wx.showLoading({ + title: "加载中..." + }), setTimeout(function() { + wx.hideLoading({}), a.src = e.data.dataList[s].list[o].list[n].valueList[r].path + ".mp3", + a.startTime = 0, a.autoplay = !0, e.data.dataList[s].list[o].list[n].valueList[r].isPlay = !0, + e.setData({ + dataList: e.data.dataList, + isPlayAudio: !0, + audioId: i.id + }); + }, 1500))) : (a.src = e.data.dataList[s].list[o].list[n].valueList[r].path + ".mp3", + a.startTime = 0, a.autoplay = !0, a.play(), e.data.dataList[s].list[o].list[n].valueList[r].isPlay = !0, + e.setData({ + dataList: e.data.dataList, + isPlayAudio: !0, + audioId: i.id + })), a.onPlay(function() {}), a.onCanplay(function(t) {}), a.onStop(function(t) { + console.log("onStop==="), e.data.dataList[s].list[o].list[n].valueList[r].isPlay = !1, + e.data.dataList[s].list[o].list[n].valueList[r].curDuration = 0, e.data.dataList[s].list[o].list[n].valueList[r].curDurationStr = "00:00", + e.setData({ + dataList: e.data.dataList, + isPlayAudio: !1 + }); + }), a.onEnded(function(t) { + console.log(t), console.log("播放完毕"), e.data.dataList[s].list[o].list[n].valueList[r].isPlay = !1, + e.data.dataList[s].list[o].list[n].valueList[r].curDuration = 0, e.data.dataList[s].list[o].list[n].valueList[r].curDurationStr = "00:00", + e.setData({ + dataList: e.data.dataList, + isPlayAudio: !1 + }); + }), a.onError(function(t) { + console.log("播放错误"), console.log(t), e.data.dataList[s].list[o].list[n].valueList[r].isPlay = !1, + e.data.dataList[s].list[o].list[n].valueList[r].curDuration = 0, e.data.dataList[s].list[o].list[n].valueList[r].curDurationStr = "00:00", + e.setData({ + dataList: e.data.dataList, + isPlayAudio: !1 + }); + }), a.onSeeking(function() {}); + }, + goList: function() { + wx.navigateTo({ + url: "/packagecard/cardList/cardList" + }); + }, + getPersonIntro: function() { + var a = this; + t.restAjax.get(t.restAjax.path("{personIntroUrl}app/userexpand/get/" + t.globalData.userInfo.userId, [ t.personIntroUrl ]), {}, { + headers: { + token: t.globalData.token + } + }, function(t, e) { + a.setData({ + personIntro: e + }); + }, function(a, e) { + t.dialog.msg(e.msg); + }); + }, + getUserInfo: function() { + var a = this; + t.restAjax.get(t.restAjax.path("{loginUrl}app/user/get-app-user", [ t.personIntroUrl ]), {}, { + headers: { + token: t.globalData.token + } + }, function(e, s) { + t.globalData.userInfo = s, a.getList(); + }, function(a, e) { + t.dialog.msg(e.msg); + }); + }, + getInfo: function() { + t.http.get(t.urls.getUserBaseInfo, { + header: { + token: t.globalData.token + } + }).then(function(a) { + wx.setStorageSync("usercode", a.data.userCode), t.globalData.currentUserId = a.data.userId; + }).catch(function(t) { + console.log(t); + }); + }, + getDefault: function() { + var a = this; + t.globalData.showUserId = "", a.setData({ + cardInfo: {}, + areaList: [] + }), t.http.get(t.urls.getDefaultCard, { + header: { + token: t.globalData.token + }, + data: {} + }).then(function(e) { + var s = e.data.areaList; + s.forEach(function(t) { + "name" == t.templateAreaSource && a.setData({ + nameTxt: t.templateAreaFontValue + }); + }), a.setData({ + cardInfo: e.data, + isDefault: "1" == e.data.cardTemplateUseSystem, + areaList: s, + dataList: [] + }), e.data && (a.toSaveLocalImg(e.data.cardTemplateUseDispatchPhoto), a.getBrowCardUserList(e.data.cardTemplateUseId), + a.setData({ + tempUserId: e.data.creator, + cardTemplateUseId: e.data.cardTemplateUseId + }), t.globalData.userId = e.data.creator, a.getMainColumn(e.data.creator), a.getMainBaseUserInfo(e.data.creator)); + }).catch(function(t) {}); + }, + getBrowCardUserList: function(a) { + var e = this; + t.http.get(t.urls.getCardBrowUserList, { + header: { + token: t.globalData.token + }, + data: { + page: "1", + rows: "7", + cardTemplateUseId: a + } + }).then(function(t) { + t.data && e.setData({ + browUserList: t.data.rows + }); + }).catch(function(t) { + console.log(t); + }); + }, + addContact: function() { + wx.addPhoneContact({ + firstName: this.data.nameTxt, + mobilePhoneNumber: this.data.phoneNum + }); + }, + includedCard: function() { + t.http.post(t.urls.includedCard, { + header: { + token: t.globalData.token + }, + data: { + cardTemplateUseBagId: "", + cardTemplateUseId: this.data.cardInfo.cardTemplateUseId, + cardTemplateUseStar: "", + cardTemplateUseTag: "", + cardTemplateUseTop: "" + } + }).then(function(t) { + console.log(t.data), wx.showToast({ + title: "加入卡包成功!" + }); + }).catch(function(t) {}); + }, + getBrowUserCard: function() { + var a = this; + a.setData({ + cardInfo: {}, + areaList: [] + }), t.http.get(t.urls.getBrowUserCard.format({ + userId: a.data.cardTemplateUseId + }), { + header: { + token: t.globalData.token + }, + data: {} + }).then(function(e) { + t.globalData.showUserId = e.data.creator, wx.stopPullDownRefresh({}); + var s = e.data.areaList; + s.forEach(function(t) { + "name" == t.templateAreaSource && a.setData({ + nameTxt: t.templateAreaFontValue + }); + }), a.setData({ + cardInfo: e.data, + areaList: s, + dataList: [] + }), e.data && (a.toSaveLocalImg(e.data.cardTemplateUseDispatchPhoto), a.getBrowCardUserList(e.data.cardTemplateUseId), + t.globalData.userId = e.data.creator, a.setData({ + tempUserId: e.data.creator + }), a.getMainColumn(e.data.creator), a.getMainBaseUserInfo(e.data.creator)); + }).catch(function(t) { + wx.stopPullDownRefresh({}); + }); + }, + makeCall: function() { + var t = this.data.phoneTxt; + t && wx.makePhoneCall({ + phoneNumber: t + }); + }, + copyText: function(t) { + var a = t.currentTarget.dataset.text; + a && wx.setClipboardData({ + data: a, + success: function() {} + }); + }, + checkPermission: function() { + var t = this; + try { + var a = wx.getStorageSync("name"), e = wx.getStorageSync("userIcon"); + a ? this.setData({ + name: a, + userIcon: e + }) : wx.showModal({ + title: "提示", + content: "小程序需要您微信头像以及昵称用于展示,请授权.", + showCancel: !1, + success: function(a) { + a.confirm && t.getUserProfile(3); + } + }); + } catch (t) { + t = VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL.handleException(t); + wx.showToast({ + title: "获取信息失败", + icon: "error" + }); + } + }, + getPhoneNumber: function(a) { + var e = this, s = a.detail.iv, o = a.detail.encryptedData; + console.log(o), o && (wx.showLoading({ + title: "绑定中..." + }), t.http.put(t.urls.doUpdatePhone, { + header: { + token: t.globalData.token + }, + data: { + iv: s, + encryptedData: o + } + }).then(function(a) { + wx.hideLoading({}), wx.setStorageSync("token", a.data.data), wx.setStorageSync("bindPhone", 0), + e.setData({ + isBindPhone: !0 + }), t.globalData.token = a.data.data, wx.showToast({ + title: "绑定成功", + success: function(t) { + wx.navigateTo({ + url: "/packagecard/cardList/cardList" + }); + } + }); + }).catch(function(t) {})); + }, + getUserProfile: function(a) { + var e = this; + wx.getUserProfile({ + desc: "获取微信头像以及昵称用于展示", + success: function(a) { + wx.setStorage({ + data: a.userInfo.nickName, + key: "name" + }), wx.setStorage({ + data: a.userInfo.avatarUrl, + key: "userIcon" + }), e.setData({ + name: a.userInfo.nickName, + userIcon: a.userInfo.avatarUrl + }), t.globalData.userIcon = a.userInfo.avatarUrl, t.globalData.userInfo = a.userInfo, + e.selectComponent("#head").refreshCart(); + }, + fail: function(t) { + wx.showToast({ + title: "获取信息失败", + icon: "error" + }); + } + }); + }, + buildId: function() { + for (var t = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ], a = "", e = 0; e < 36; e++) { + a += t[parseInt(61 * Math.random())]; + } + return a; + }, + showBarCode: function() { + this.setData({ + isNeedRefresh: !1 + }); + wx.navigateTo({ + url: "/packagecard/sharePage/cardcode?cardImg=" + this.data.cardInfo.cardTemplateUsePhotoUrl + "&id=" + this.data.cardInfo.cardTemplateUseBarcode + }); + }, + hideBarCode: function() { + this.setData({ + isShowBarCode: !1 + }), wx.showTabBar(); + }, + shareRecord: function(a) { + var e = this; + t.http.post(t.urls.shareRecord, { + header: { + token: t.globalData.token + }, + data: { + cardTemplateUseId: e.data.cardInfo.cardTemplateUseId, + cardTemplateDispatchParentId: "", + cardTemplateDispatchId: a + } + }).then(function(t) { + e.setData({ + shareRecordId: t.data.data + }); + }); + }, + onShareAppMessage: function(t) { + console.log(t); + wx.showShareMenu({ + withShareTicket: !0, + success: function(t) { + console.log(t); + } + }); + var a = t.target.dataset.sharetype; + if (!a || "2" != a) { + var e = this.buildId(); + return this.shareRecord(e), { + title: "您好,这是我的电子名片,请查看.", + path: "/pages/index/index?cardTemplateDispatchId=" + e, + imageUrl: this.data.shareImgUrl + }; + } + var s = t.target.dataset.item; + t.target.dataset.idx, t.target.dataset.index; + console.log(s); + }, + toSaveLocalImg: function(t) { + var a = t, e = wx.env.USER_DATA_PATH + "/indexshare.png", s = a.replace(/^data:image\/\w+;base64,/, ""); + wx.getFileSystemManager().writeFileSync(e, s, "base64"), this.setData({ + shareImgUrl: e + }); + }, + showDetail: function(t) { + if (-1 != t.currentTarget.dataset.ctype.indexOf("dda5007c-5fb7-48f2-8537-3cb8ea298242")) { + var a = t.currentTarget.dataset.cid, e = t.currentTarget.dataset.id, s = t.currentTarget.dataset.like, o = "&collectSwitch=" + t.currentTarget.dataset.collect + "&likeSwitch=" + s + "&commentSwitch=" + t.currentTarget.dataset.comment + "&shareSwitch=" + t.currentTarget.dataset.share; + wx.navigateTo({ + url: "/packagecard/moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + o + }); + } + }, + getCardId: function() { + var a = this; + t.http.get(t.urls.getCardUseId.format({ + cardTemplateDispatchId: a.data.cardTemplateDispatchId + }), { + header: { + token: t.globalData.token + } + }).then(function(t) { + a.setData({ + cardTemplateUseId: t.data.cardTemplateUseDTO.cardTemplateUseId + }), a.getCard(), a.saveCheckRecord(); + }); + }, + getCard: function() { + var a = this; + t.http.get(t.urls.shareCard.format({ + cardTemplateUseId: a.data.cardTemplateUseId + }), { + header: { + token: t.globalData.token + }, + data: {} + }).then(function(e) { + var s = e.data.areaList; + s.forEach(function(t) { + "name" == t.templateAreaSource && a.setData({ + nameTxt: t.templateAreaFontValue + }); + }), a.setData({ + cardInfo: e.data, + areaList: s, + dataList: [] + }), e.data && (a.toSaveLocalImg(e.data.cardTemplateUseDispatchPhoto), a.getBrowCardUserList(e.data.cardTemplateUseId), + t.globalData.userId = e.data.creator, a.setData({ + tempUserId: e.data.creator + }), a.getMainColumn(e.data.creator), a.getMainBaseUserInfo(e.data.creator)); + }).catch(function(t) {}); + }, + saveCheckRecord: function() { + t.http.post(t.urls.checkRecord, { + header: { + token: t.globalData.token + }, + data: { + cardTemplateUseId: this.data.cardTemplateUseId, + cardTemplateDispatchId: this.data.cardTemplateDispatchId + } + }).then(function(t) { + console.log(t); + }).catch(function(t) { + console.log(t); + }); + }, + onHide: function(t) { + this.setData({ + isShowCard: !1, + isShowPhone: !1 + }), a && a.stop(); + }, + showCardHistory: function(t) { + this.data.otherCardList.length > 0 ? this.setData({ + isShowCard: !0 + }) : this.getOtherCard(1); + }, + getOtherCard: function(a) { + var e = this; + e.setData({ + otherCardList: [] + }), t.http.get(t.urls.getBrowseHistoryList, { + header: { + token: t.globalData.token + }, + data: { + page: 1, + rows: 7, + homePage: 1 + } + }).then(function(t) { + t.data.rows.length > 0 && e.buildOtherCardList(t.data.rows), 1 == a && e.setData({ + isShowCard: !0 + }); + }).catch(function(t) {}); + }, + changeCard: function(t) { + var a = t.currentTarget.dataset.item, e = t.currentTarget.dataset.type; + 1 == e ? (this.setData({ + cardTemplateDispatchId: "", + cardTemplateUseId: "", + isShowCard: !1, + isMine: 1, + isDefault: !1 + }), this.getDefault()) : 2 == e ? (this.setData({ + cardTemplateUseId: "", + isShowCard: !1, + isMine: 2, + isDefault: !0 + }), this.getCard()) : 4 == e ? (this.setData({ + cardTemplateUseId: a.creator, + isShowCard: !1, + isMine: 3, + isDefault: !0, + isShowBrowseUser: !1 + }), this.getBrowUserCard()) : (this.setData({ + cardTemplateUseId: a.cardTemplateUseId, + isShowCard: !1, + isMine: 2, + isDefault: !0 + }), this.getCard()); + }, + buildOtherCardList: function(t) { + var a, e = this; + t.forEach(function(t) { + var s = t.cardTemplateUseDTO.areaList; + a = {}, s.forEach(function(t) { + "name" == t.templateAreaSource ? a.name = t.templateAreaFontValue : "phone" == t.templateAreaSource ? a.phone = t.templateAreaFontValue : "address" == t.templateAreaSource ? a.address = t.templateAreaFontValue : "department" == t.templateAreaSource && (a.department = t.templateAreaFontValue); + }), a.cardTemplateUseId = t.cardTemplateUseId, e.data.otherCardList.push(a); + }), e.setData({ + otherCardList: e.data.otherCardList + }); + }, + onShow: function(t) {}, + onCloseDialog: function() { + this.setData({ + isShowComment: !1 + }); + }, + showBrowseUser: function() { + this.data.browUserList.length > 0 && this.setData({ + isShowBrowseUser: !0 + }); + }, + showComment: function(t) { + var a = t.currentTarget.dataset.cid, e = t.currentTarget.dataset.uid, s = t.currentTarget.dataset.like, o = "&collectSwitch=" + t.currentTarget.dataset.collect + "&likeSwitch=" + s + "&commentSwitch=" + t.currentTarget.dataset.comment + "&shareSwitch=" + t.currentTarget.dataset.share; + console.log(o), wx.navigateTo({ + url: "/packagecard/moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + o + }); + }, + doLike: function(a) { + var e = this, s = a.currentTarget.dataset.item, o = a.currentTarget.dataset.idx, n = a.currentTarget.dataset.index, r = ""; + r = s.likeStatus ? "取消中..." : "保存中...", wx.showLoading({ + title: r + }), t.http.post(t.urls.doSaveLike, { + header: { + token: t.globalData.token + }, + data: { + businessId: s.uid, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), e.data.dataList[n].list[o].likeStatus = !s.likeStatus, s.likeStatus ? --e.data.dataList[n].list[o].likeCount : ++e.data.dataList[n].list[o].likeCount, + e.setData({ + dataList: e.data.dataList + }); + }).catch(function(t) {}); + }, + doCollect: function(a) { + var e = this, s = a.currentTarget.dataset.item, o = a.currentTarget.dataset.idx, n = a.currentTarget.dataset.index, r = ""; + r = s.collectStatus ? "取消收藏..." : "收藏中...", wx.showLoading({ + title: r + }), t.http.post(t.urls.doSaveCollect, { + header: { + token: t.globalData.token + }, + data: { + businessId: s.uid, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), e.data.dataList[n].list[o].collectStatus = !s.collectStatus, + e.setData({ + dataList: e.data.dataList + }); + }).catch(function(t) {}); + } +}); \ No newline at end of file diff --git a/pages/center/contact/contactDetail.json b/pages/center/contact/contactDetail.json new file mode 100644 index 0000000..5c974ac --- /dev/null +++ b/pages/center/contact/contactDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "立即联系" +} \ No newline at end of file diff --git a/pages/center/contact/contactDetail.wxml b/pages/center/contact/contactDetail.wxml new file mode 100644 index 0000000..b384a82 --- /dev/null +++ b/pages/center/contact/contactDetail.wxml @@ -0,0 +1,271 @@ + + + + + + + + + + + + + + + + + 02/ + + + 加入卡包 + + + + 03/ + + + 名片码 + + + + + + + 拨打电话 + + {{phoneTxt}} + + + + + 添加微信 + + {{wechateTxt}} + + + + + 邮箱 + + {{emailTxt}} + + + + + 地址 + + {{addressTxt}} + + + + + + + + + + + + + {{cardInfo.cardTemplateUseScansNumber>999?'999+':cardInfo.cardTemplateUseScansNumber}} + + + + {{cardInfo.cardTemplateUseDispatchNumber>999?'999+':cardInfo.cardTemplateUseDispatchNumber}} + + + + + + + + + + + + + {{item.name}} + + + 更多 + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + {{child.comment}}: + {{child.selValue}} + + + + + + + + + {{child.comment}} + + + + {{ss.dataName}} + + + + + + + + + + + 收藏 + + + + {{it.commentCount>1000?'1000+':it.commentCount}} + + + + {{it.likeCount>1000?'1000+':it.likeCount}} + + + + + + + + + + + + + + + + + 十而百智慧名片 + + 一份信心,一份努力,一份成功;十分信心,十分努力,十分成功. + + + + diff --git a/pages/center/contact/contactDetail.wxss b/pages/center/contact/contactDetail.wxss new file mode 100644 index 0000000..3403f3c --- /dev/null +++ b/pages/center/contact/contactDetail.wxss @@ -0,0 +1,779 @@ +.container { + margin-bottom: 120rpx; +} + +.top-bg { + background-color: #ff4949; + border-bottom-left-radius: 80rpx; + border-bottom-right-radius: 80rpx; + left: 0; + padding: 20rpx 20rpx 150rpx; + position: absolute; + right: 0; + top: 0; + z-index: -10; +} + +.card-container { + box-sizing: border-box; +} + +.share-btn { + background: #eee; +} + +.card { + box-sizing: border-box; + overflow: hidden; + position: relative; + width: 100%; +} + +.area-box { + white-space: nowrap; + word-break: break-all; + z-index: 111; +} + +.card-bgImg { + width: 100%; +} + +.person { + padding: 20rpx; +} + +.dynamic-container { + background-color: #fff; + border-radius: 20rpx; + margin-top: -50rpx; + padding: 20rpx; + position: relative; +} + +.dynamic-title image { + height: 30rpx; + margin-top: -4rpx; + vertical-align: middle; + width: 30rpx; +} + +.catelog-title { + justify-content: space-between; + padding: 15rpx; + position: relative; +} + +.catelog-title,.catelog-title .action { + align-items: center; + display: flex; +} + +.catelog-title .action { + justify-content: center; + max-width: 100%; +} + +.title { + color: #000; + display: inline-block; + font-size: 30rpx; + position: relative; +} + +.title text { + margin-left: 20rpx; +} + +.column-box { + flex-direction: column; +} + +.column-box,.column-box-row { + background-color: #fff; + display: flex; + width: 100%; +} + +.column-box-row { + align-items: center; + flex-direction: row; + padding: 15rpx; +} + +.column-item { + margin: 0rpx; + padding: 7.5rpx 15rpx; +} + +.column-item:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.column-item:last-child { + padding: 7.5rpx 15rpx 15rpx; +} + +.img-item { + border-radius: 5rpx; + width: 100%; +} + +.img-item:last-child,.img-item:nth-child(1) { + padding: 7.5rpx 0rpx; +} + +.column-content { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 2px 2px #f0f0f0; + display: flex; + flex-direction: column; + width: 100%; + z-index: 2; +} + +.intro-title image,.serve-title image { + height: 30rpx; + margin-top: -4px; + vertical-align: middle; + width: 28rpx; +} + +.person-content { + background: #fff; + border-radius: 20rpx; + color: #000; + font-size: 30rpx; + letter-spacing: 2rpx; + line-height: 40rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; + word-break: break-all; +} + +.company-title { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.company-title image { + height: 140rpx; + width: 140rpx; +} + +.company-name { + align-items: center; + display: flex; + font-size: 34rpx; + height: 140rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 520rpx; +} + +.company-content { + background: #fff; + border-radius: 20rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; +} + +.company-content image { + border-radius: 20rpx; + height: 300rpx; + width: 100%; +} + +.company .person-content { + margin-top: 0; +} + +.dynamic-title { + display: block; + margin: 0 auto; + width: 710rpx; +} + +.dynamic-box { + background: #fff; + border-radius: 20rpx; + height: 400rpx; + margin-bottom: 20rpx; + overflow: hidden; + position: relative; +} + +.dynamic-box image { + height: 400rpx; + width: 100%; +} + +.dynamic-text { + background: rgba(0,0,0,.6); + bottom: 0; + color: #fff; + font-size: 30rpx; + left: 0; + line-height: 60rpx; + padding: 0 10rpx; + position: absolute; + right: 0; +} + +.person-info { + border-bottom: 1px solid #eee; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; +} + +.avatar { + border-radius: 50%; + height: 120rpx; + overflow: hidden; + width: 120rpx; +} + +.avatar image { + height: 100%; + width: 100%; +} + +.person-name { + width: 530rpx; +} + +.name { + color: #000; + font-size: 32rpx; + margin: 15rpx 0 10rpx; +} + +.time { + color: #b2b2b2; +} + +.dynamic-content { + margin: 20rpx 0; +} + +.dynamic-img { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + position: relative; +} + +.dynamic-img image { + height: 160rpx; + margin-bottom: 10rpx; + margin-right: 2%; + width: 32%; +} + +.dynamic-img image:nth-child(3n) { + margin-right: 0; +} + +.dynamic-img-text { + background: rgba(0,0,0,.6); + bottom: 3rpx; + color: #fff; + font-size: 32rpx; + left: 0; + line-height: 70rpx; + padding: 0 20rpx; + position: absolute; + right: 0; +} + +.dynamic-good { + display: flex; + justify-content: space-between; + margin: 10rpx 0; +} + +.good-count { + color: #333; + font-size: 28rpx; +} + +.good-btn image { + height: 40rpx; + vertical-align: top; + width: 40rpx; +} + +.dynamic-reply { + background: #eee; + margin-top: 15rpx; + padding: 15rpx; +} + +.reply { + color: #000; + font-size: 32rpx; + margin-bottom: 5rpx; +} + +.reply-name { + display: inline; + font-weight: 700; +} + +.dynamic-reply-input { + margin-top: 10rpx; +} + +.dynamic-reply-input input { + border-bottom: 1px solid #eee; + height: 60rpx; + width: 100%; +} + +.creat-card { + background: #e6b980; + padding: 20rpx; +} + +.creat-card,.creat-card-box { + align-items: center; + border-radius: 50%; + bottom: 20rpx; + box-sizing: border-box; + flex-direction: column; + height: 140rpx; + justify-content: center; + position: fixed; + right: 20rpx; + width: 140rpx; + z-index: 100; +} + +.creat-card-box button { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 80rpx; +} + +.creat-card-box image { + border-radius: 50%; + height: 100%; + width: 100%; +} + +.share-save { + display: flex; + justify-content: space-between; + text-align: center; +} + +.share-btn { + background: none; + border: 1px solid #e6b980; + color: #1296db; + font-weight: 400; +} + +.save-btn { + background: #1296db; + border: 1px solid #1296db; + color: #fff; + font-weight: 400; +} + +.bottom-btn { + margin-top: 20rpx; + padding: 0 20rpx; + white-space: nowrap; + width: 100%; +} + +.phone-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.wechate-box .icon { + height: 30rpx; + vertical-align: top; + width: 35rpx; +} + +.email-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.bottom-btn-box { + border: 1px solid #ddd; + border-radius: 10rpx; + box-sizing: border-box; + display: inline-block; + line-height: 30rpx; + margin-right: 10rpx; + min-width: 32%; + padding: 20rpx; +} + +.bottom-text { + margin-top: 10rpx; +} + +.good,.top-box { + width: 100%; +} + +.good { + background-color: #fff; + display: flex; + justify-content: space-between; + padding: 15rpx; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.good-avatar { + font-size: 0; + min-width: 180rpx; +} + +.good-click { + display: flex; +} + +.view-count { + border-right: 1px solid grey; + justify-content: center; +} + +.view-count,.view-count-no { + align-items: center; + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; +} + +.view-count-no { + margin-left: 15rpx; +} + +.good-avatar image { + border-radius: 50%; + height: 100%; + width: 100%; +} + +.good-click image { + height: 38rpx; + width: 38rpx; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.movie-item { + height: 280rpx; + padding-bottom: 0; + width: 100%; +} + +.avatar-list { + border: 2px solid #fff; + border-radius: 50%; + display: inline-block; + height: 45rpx; + margin-left: -15rpx; + position: relative; + vertical-align: top; + width: 45rpx; +} + +.avatar-list:first-child { + margin-left: 0; +} + +.mid { + background: #fff; + position: relative; +} + +.mid,.mid-box { + display: flex; + width: 100%; +} + +.mid-box { + align-items: left; + background-color: #fff; + border: 2rpx solid #eac390; + border-radius: 10rpx; + flex: 1; + flex-direction: column; + font-weight: 400; + justify-content: left; + padding: 15rpx; +} + +.mid-box:nth-child(1) { + background: #fff; +} + +.mid-box:nth-child(2) { + margin-left: 15rpx; +} + +.mid-box:last-child { + border: none; + border-radius: 10rpx; + margin-left: 15rpx; +} + +.mid-box image { + height: 48rpx; + width: 48rpx; +} + +.mid-box-text { + color: #000; +} + +.mid-box-text,.mid-box-text-white { + font-size: 28rpx; + font-weight: 700; + text-align: left; +} + +.mid-box-text-white { + color: #fff; +} + +.mid-btn { + background: #fff; + border: 1rpx solid #ebebeb; + border-radius: 15rpx; + box-shadow: 10rpx 10rpx 20rpx 20rpx #e4e4e426; + flex-direction: column; + flex-wrap: nowrap; + justify-content: center; + margin-top: 15rpx; + position: relative; + width: 100%; +} + +.mid-btn,.mid-btn-box { + display: flex; +} + +.mid-btn-box { + align-items: center; + box-sizing: border-box; + flex-direction: row; + flex-shrink: 0; + justify-content: space-between; +} + +.mid-btn-box:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.mid-btn-box:nth-child(2),.mid-btn-box:nth-child(3) { + padding: 7.5rpx 15rpx; +} + +.mid-btn-box:nth-child(4) { + padding: 7.5rpx 15rpx 15rpx; +} + +.mid-btn-title { + align-items: center; + display: flex; + flex: 3; + flex-direction: row; + justify-content: flex-start; +} + +.mid-btn-title .image { + height: 48rpx; + width: 48rpx; +} + +.movie-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: center; +} + +.movie-box,.movie-box image { + border-radius: 10rpx; + height: 350rpx; + width: 100%; +} + +.mid-btn-title text { + color: #333; + font-size: 28rpx; + margin-left: 15rpx; +} + +.mid-btn-box image { + height: 80rpx; + width: 80rpx; +} + +.mid-btn-text { + width: 200rpx; +} + +.text-top { + color: #000; + font-size: 30rpx; + line-height: 45rpx; +} + +.text-bottom { + color: #898989; + font-size: 26rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.bar-code { + background: rgba(0,0,0,.6); +} + +.bar-code,.bar-code-tr { + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} + +.bar-code-tr { + background: transparent; +} + +.bar-code .content { + align-items: center; + background: #fff; + border-radius: 10rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + left: 50%; + max-width: 96%; + min-height: 45%; + min-width: 60%; + padding: 20rpx; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.code-title { + font-weight: 700; +} + +.code-title,.code-txt { + color: #000; + font-size: 32rpx; +} + +.bar-code image { + height: 300rpx; + width: 300rpx; +} + +.func-box { + justify-content: space-between; + margin-top: 10rpx; +} + +.brow-box,.func-box { + align-items: center; + display: flex; + flex-direction: column; +} + +.brow-box { + background-color: #fff; + justify-content: center; + padding: 15rpx; + width: 100%; +} + +.brow-box-title { + color: #000; + font-size: 32rpx; +} + +.brow-item { + align-items: center; + border-bottom: 1rpx solid #f8f8f8; + display: flex; + flex-direction: row; + justify-content: space-between; + padding: 15rpx; + width: 100%; +} + +.brow-item image { + border-radius: 50%; + height: 48rpx; + width: 48rpx; +} + +.brow-item .uname { + color: #000; + font-size: 32rpx; +} + +.brow-container { + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + width: 100%; +} + +.brow-content { + background-color: #fff; + border-radius: 10rpx; + height: 650rpx; + margin-top: 100rpx; + padding: 15rpx; + width: 100%; +} + +.other-name { + align-items: center; + display: flex; + flex-direction: row; + font-size: 14px; + height: 120rpx; + justify-content: center; + overflow: hidden; + text-align: center; + text-overflow: ellipsis; + white-space: pre-line; +} \ No newline at end of file diff --git a/pages/checkIn/checkIn.js b/pages/checkIn/checkIn.js new file mode 100644 index 0000000..f719893 --- /dev/null +++ b/pages/checkIn/checkIn.js @@ -0,0 +1,45 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + userIcon: "", + name: "", + isChecked: !1 + }, + getIsCheckedIn: function() { + var n = this; + e.restAjax.get(e.restAjax.path(e.apis.isCheckedIn, [ e.baseUrls.requestUrl, wx.getStorageSync("curCommunityId") ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, t) { + "yes" == t && n.setData({ + isChecked: !0 + }); + }, function(e, n) { + console.log(n); + }); + }, + doCheckIn: function() { + wx.navigateTo({ + url: "./checkInDetail" + }); + }, + onLoad: function(e) { + this.setData({ + userIcon: wx.getStorageSync("userIcon"), + name: wx.getStorageSync("name") + }); + }, + onReady: function() {}, + onShow: function() { + this.getIsCheckedIn(); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/checkIn/checkIn.json b/pages/checkIn/checkIn.json new file mode 100644 index 0000000..0e27b60 --- /dev/null +++ b/pages/checkIn/checkIn.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "党员报到" +} \ No newline at end of file diff --git a/pages/checkIn/checkIn.wxml b/pages/checkIn/checkIn.wxml new file mode 100644 index 0000000..70b93b9 --- /dev/null +++ b/pages/checkIn/checkIn.wxml @@ -0,0 +1,20 @@ + + + + + + + + + + 立即报到 + + + + 我已承办社区事务(0) + + diff --git a/pages/checkIn/checkIn.wxss b/pages/checkIn/checkIn.wxss new file mode 100644 index 0000000..3cbfddb --- /dev/null +++ b/pages/checkIn/checkIn.wxss @@ -0,0 +1,79 @@ +.top-img image { + width: 100%; +} + +.person-info { + margin-top: -126rpx; + padding: 0 20rpx; + position: relative; +} + +.person-info-box { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 2px 4px 0 rgba(0,0,0,.05); + display: flex; + justify-content: space-between; + padding: 20rpx; +} + +.person-info-box image { + border-radius: 50%; + height: 120rpx; + width: 120rpx; +} + +.user-info { + display: inline-block; + margin-left: 20rpx; + vertical-align: top; +} + +.user-name { + font-size: 36rpx; + font-weight: 700; + line-height: 70rpx; +} + +.check-status { + font-size: 30rpx; + height: 40rpx; + line-height: 40rpx; + margin-top: 0; +} + +.not-check { + background-color: #eee; + color: #ccc; +} + +.affair { + background-color: #fff; + box-sizing: border-box; + margin: 20rpx auto 0; + padding: 20rpx; + width: 710rpx; +} + +.affair text { + color: red; +} + +.affair-title { + border-left: 5px solid #ff4949; + color: #101010; + font-size: 32rpx; + padding-left: 20rpx; +} + +.checkin-btn { + background-color: #ff4949; + border-radius: 30rpx; + color: #fff; + font-size: 28rpx; + height: 60rpx; + line-height: 60rpx; + margin-top: 30rpx; + text-align: center; + width: 160rpx; +} \ No newline at end of file diff --git a/pages/checkIn/checkInDetail.js b/pages/checkIn/checkInDetail.js new file mode 100644 index 0000000..3bd9c45 --- /dev/null +++ b/pages/checkIn/checkInDetail.js @@ -0,0 +1,157 @@ +var a = getApp(); + +Page({ + data: { + token: a.globalData.token, + array: [], + index: 0, + sexSelected: "", + communityArray: [], + communityIndex: 0, + communitySelected: "", + neighbourArray: [ "请选择所在小区" ], + neighbourIndex: 0, + date: "请选择出生日期", + partyDate: "请选择入党时间", + floorNum: "", + roomNum: "", + affair: "", + realName: "", + workUnit: "", + isLoading: !1 + }, + bindPickerChange: function(a) { + this.setData({ + index: a.detail.value, + sexSelected: this.data.sexAll[a.detail.value - 1].dataId + }); + }, + bindDateChange: function(a) { + this.setData({ + date: a.detail.value + }); + }, + bindPartyDateChange: function(a) { + this.setData({ + partyDate: a.detail.value + }); + }, + bindCommunityPickerChange: function(a) { + this.setData({ + communityIndex: a.detail.value, + communitySelected: this.data.communityAll[a.detail.value - 1].communityId + }); + }, + bindNeighbourPickerChange: function(a) { + this.setData({ + neighbourIndex: a.detail.value + }); + }, + submitCheckIn: function() { + var e = this; + if (!e.data.isLoading) { + var t = { + userName: e.data.realName, + sexId: e.data.sexSelected, + sexName: e.data.sexAll[e.data.index - 1].dataName, + birthday: e.data.date, + joinTime: e.data.partyDate, + workUnit: e.data.workUnit, + workUnitValue: "非ID", + community: e.data.communitySelected, + residential: e.data.communityAll[e.data.neighbourIndex - 1].residential, + residentialValue: e.data.communityAll[e.data.neighbourIndex - 1].residentialValue, + building: e.data.floorNum, + buildingValue: "非ID", + houseNumber: e.data.roomNum, + houseNumberValue: "非ID", + ability: e.data.affair, + areaCode: wx.getStorageSync("areaCode") + }; + e.setData({ + isLoading: !0 + }), a.restAjax.post(a.restAjax.path(a.apis.submitCheckIn, [ a.baseUrls.requestUrl ]), t, { + headers: { + token: a.globalData.token + } + }, function(a, t) { + wx.showToast({ + title: "报到成功", + icon: "success" + }), setTimeout(function() { + e.setData({ + isLoading: !1 + }), wx.navigateBack({ + delta: 1 + }); + }, 1500); + }, function(a, t) { + console.log(t), e.setData({ + isLoading: !1 + }); + }); + } + }, + getSex: function() { + var e = this; + a.restAjax.get(a.restAjax.path(a.apis.getDictionary, [ a.baseUrls.serviceUrl, "4ef46940-76ab-4758-b5f0-0cbc93ffc660" ]), {}, { + headers: { + token: a.globalData.token + } + }, function(a, t) { + console.log(t); + for (var n = [ "请选择性别" ], i = 0; i < t.length; i++) n.push(t[i].dataName); + e.setData({ + array: n, + sexAll: t + }); + }, function(a, e) { + console.log(e); + }); + }, + getMyCommunity: function() { + var e = this; + a.restAjax.get(a.restAjax.path(a.apis.mycommunity, [ a.baseUrls.requestUrl ]), {}, { + headers: { + token: a.globalData.token + } + }, function(a, t) { + for (var n = [ "请选择所在社区" ], i = e.data.neighbourArray, o = 0; o < t.length; o++) n.push(t[o].communityName), + "ID" == t[o].residentialValue ? e.getResidential(t[o].residential) : i.push(t[o].residential); + e.setData({ + communityArray: n, + communityAll: t + }); + }, function(a, e) { + console.log(e); + }); + }, + getResidential: function(e) { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getResidential, [ a.baseUrls.communityUrl, e ]), {}, { + headers: { + token: a.globalData.token + } + }, function(a, e) { + var n = t.data.neighbourArray; + n.push(e.residentialName), t.setData({ + neighbourArray: n + }); + }, function(a, e) { + console.log(e); + }); + }, + onLoad: function(a) { + this.getSex(), this.getMyCommunity(), this.setData({ + curCommunityName: wx.getStorageSync("curCommunityName") ? wx.getStorageSync("curCommunityName") : "切换社区", + curCommunityId: wx.getStorageSync("curCommunityId") ? wx.getStorageSync("curCommunityId") : "" + }); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/checkIn/checkInDetail.json b/pages/checkIn/checkInDetail.json new file mode 100644 index 0000000..0e27b60 --- /dev/null +++ b/pages/checkIn/checkInDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "党员报到" +} \ No newline at end of file diff --git a/pages/checkIn/checkInDetail.wxml b/pages/checkIn/checkInDetail.wxml new file mode 100644 index 0000000..ecdf37d --- /dev/null +++ b/pages/checkIn/checkInDetail.wxml @@ -0,0 +1,81 @@ + 温馨提示:绑定房屋需要您在首页加入并选择您所在的社区。 + + + 当前社区 + {{curCommunityName}} + + + + 姓名 + + + + + + 性别 + + + {{array[index]}} + + + + + 出生日期 + + + {{date}} + + + + + 入党时间 + + + {{partyDate}} + + + + + 工作单位 + + + + + + 所在居住社区 + + + {{communityArray[communityIndex]}} + + + + + 所在小区 + + + {{neighbourArray[neighbourIndex]}} + + + + + 所在楼栋 + + + + + + 单元/门牌号 + + + + + + 适合承办事务 + + + + + + + 立即报到 + diff --git a/pages/checkIn/checkInDetail.wxss b/pages/checkIn/checkInDetail.wxss new file mode 100644 index 0000000..831dcbf --- /dev/null +++ b/pages/checkIn/checkInDetail.wxss @@ -0,0 +1,78 @@ +.tips { + color: #101010; + font-size: 28rpx; + padding: 20rpx; +} + +.detail { + background-color: #fff; + padding: 0 20rpx; +} + +.row { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.row-name { + color: rgba(36,40,46,.5); + font-size: 32rpx; + line-height: 80rpx; + width: 30%; +} + +.row-content { + height: 80rpx; + text-align: right; + width: 70%; +} + +.row-content input { + box-sizing: border-box; + color: #24282e; + height: 100%; + padding: 0 10rpx; + width: 100%; +} + +.input-color { + color: #24282e; +} + +.row-content picker { + color: #24282e; + line-height: 80rpx; +} + +.submit-join { + background-color: #fff; + bottom: 0; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.join-btn { + background-color: #ff4949; + border-radius: 40rpx; + font-size: 36rpx; + height: 80rpx; + line-height: 80rpx; + margin-top: 0; + text-align: center; +} + +.community { + background-color: #fff; + color: rgba(36,40,46,.5); + font-size: 30rpx; + line-height: 80rpx; + padding: 0 20rpx; +} + +.community-name { + border-bottom: 1px solid #ddd; + font-size: 32rpx; +} \ No newline at end of file diff --git a/pages/columnlist/columnlist.js b/pages/columnlist/columnlist.js new file mode 100644 index 0000000..b7b3517 --- /dev/null +++ b/pages/columnlist/columnlist.js @@ -0,0 +1,55 @@ +var t = getApp(); + +Page({ + data: { + groupId: "", + menuList: [], + title: "栏目", + imgUrl: t.baseUrls.baseCardUrl + }, + onLoad: function(t) { + this.setData({ + groupId: t.id, + title: t.title + }), wx.setNavigationBarTitle({ + title: t.title + }), this.getList(); + }, + getList: function() { + wx.showLoading({ + title: "加载中..." + }); + var e = this; + t.http.get(t.urls.getColumnListByGroupId, { + header: { + token: t.globalData.token + }, + data: { + configColumnGroupId: e.data.groupId + } + }).then(function(t) { + wx.hideLoading({}), e.setData({ + menuList: t.data + }); + }).catch(function(t) { + wx.hideLoading({}); + }); + }, + choosePage: function(t) { + var e = t.currentTarget.dataset.path, a = t.currentTarget.dataset.type, i = t.currentTarget.dataset.item; + switch (a) { + case "1": + case "3": + wx.navigateTo({ + url: e + "?id=" + i.configColumnId + "&mode=" + i.configTableMode + "&type=" + i.configColumnType + "&title=" + i.configColumnName + }); + break; + + case "2": + wx.navigateToMiniProgram({ + appId: "", + success: function(t) {} + }); + } + } +}); \ No newline at end of file diff --git a/pages/columnlist/columnlist.json b/pages/columnlist/columnlist.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/pages/columnlist/columnlist.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/pages/columnlist/columnlist.wxml b/pages/columnlist/columnlist.wxml new file mode 100644 index 0000000..eff7f5a --- /dev/null +++ b/pages/columnlist/columnlist.wxml @@ -0,0 +1,21 @@ + + + + + + + + {{group.configColumnName}} + + + {{group.configColumnRemark}} + + + + + + + + + + diff --git a/pages/columnlist/columnlist.wxss b/pages/columnlist/columnlist.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/community/changeCommunity.js b/pages/community/changeCommunity.js new file mode 100644 index 0000000..9f13fcc --- /dev/null +++ b/pages/community/changeCommunity.js @@ -0,0 +1,159 @@ +var e = require("../../@babel/runtime/helpers/defineProperty"), a = getApp(); + +Page({ + data: { + token: a.globalData.token, + sourceUrl: a.baseUrls.sourceUrl, + areaList: [], + areaIndex: 0, + areaAll: [], + areaSelected: "", + areaName: "", + communityList: [], + myCommunityList: [], + page: { + rows: 10, + page: 1, + areaCode: "" + } + }, + getAreaList: function() { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getArea, [ a.baseUrls.serviceUrl, "110889" ]), {}, { + headers: { + token: a.globalData.token + } + }, function(a, r) { + for (var n = t.data.areaList, o = 0; o < r.length; o++) n.push(r[o].areaName); + t.setData(e({ + areaList: n, + areaAll: r, + areaSelected: r[0].areaCode, + areaName: r[0].areaName + }, "page.areaCode", r[0].areaCode)), t.getCommunity(); + }, function(e, a) { + console.log(a); + }); + }, + getCommunity: function() { + var t = this, r = t.data.page; + t.data.keywords && (r.keywords = t.data.keywords), a.restAjax.get(a.restAjax.path(a.apis.getCommunityListPage, [ a.baseUrls.communityUrl ]), r, { + headers: { + token: a.globalData.token + } + }, function(a, r) { + if (1 == t.data.page.page) t.setData({ + communityList: r.rows + }); else if (r.rows.length > 0) { + for (var n = t.data.communityList, o = 0; o < r.rows.length; o++) n.push(r.rows[o]); + t.setData({ + communityList: n + }); + } else t.setData(e({}, "page.page", t.data.page.page - 1)); + r.rows.length < 10 && t.setData({ + haveMore: !1 + }); + }, function(e, a) { + console.log(a); + }); + }, + bindAreaPickerChange: function(a) { + var t; + this.setData((t = { + areaIndex: a.detail.value, + areaSelected: this.data.areaAll[a.detail.value].areaCode + }, e(t, "page.areaCode", this.data.areaAll[a.detail.value].areaCode), e(t, "page.page", 1), + e(t, "haveMore", !0), t)), this.getCommunity(); + }, + getMyCommunity: function() { + var e = this; + a.restAjax.get(a.restAjax.path(a.apis.mycommunity, [ a.baseUrls.requestUrl ]), {}, { + headers: { + token: a.globalData.token + } + }, function(a, t) { + e.setData({ + myCommunityList: t + }); + }, function(e, a) { + console.log(a); + }); + }, + otherCommunity: function() { + wx.navigateTo({ + url: "./selectCommunity" + }); + }, + selectCommunity: function(e) { + var t = { + communityId: e.currentTarget.dataset.item.communityId, + communityName: e.currentTarget.dataset.item.communityName + }; + a.globalData.currentCommunity = t, wx.setStorage({ + data: e.currentTarget.dataset.item.communityName, + key: "curCommunityName" + }), wx.setStorage({ + data: e.currentTarget.dataset.item.communityId, + key: "curCommunityId" + }), wx.setStorage({ + data: e.currentTarget.dataset.item.locationCode, + key: "areaCode" + }), wx.setStorage({ + data: parseInt(e.currentTarget.dataset.item.areaLevel), + key: "areaLevel" + }), wx.reLaunch({ + url: "../index/index" + }); + }, + selectMyCommunity: function(e) { + var t = { + communityId: e.currentTarget.dataset.item.communityId, + communityName: e.currentTarget.dataset.item.communityName + }; + a.globalData.currentCommunity = t, wx.setStorage({ + data: e.currentTarget.dataset.item.communityName, + key: "curCommunityName" + }), wx.setStorage({ + data: e.currentTarget.dataset.item.communityId, + key: "curCommunityId" + }), wx.setStorage({ + data: e.currentTarget.dataset.item.areaCode, + key: "areaCode" + }), wx.setStorage({ + data: "4", + key: "areaLevel" + }), wx.reLaunch({ + url: "../index/index" + }); + }, + loadMore: function() { + this.setData(e({}, "page.page", this.data.page.page + 1)), this.getCommunity(); + }, + enterCurrentArea: function() { + wx.setStorage({ + data: this.data.areaAll[this.data.areaIndex].areaName, + key: "curCommunityName" + }), wx.setStorage({ + data: this.data.areaAll[this.data.areaIndex].areaId, + key: "curCommunityId" + }), wx.setStorage({ + data: this.data.page.areaCode, + key: "areaCode" + }), wx.setStorage({ + data: parseInt(this.data.areaAll[this.data.areaIndex].areaLevel), + key: "areaLevel" + }), wx.reLaunch({ + url: "../index/index" + }); + }, + onLoad: function(e) { + this.getAreaList(), this.getMyCommunity(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/community/changeCommunity.json b/pages/community/changeCommunity.json new file mode 100644 index 0000000..9b12438 --- /dev/null +++ b/pages/community/changeCommunity.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "城市社区" +} \ No newline at end of file diff --git a/pages/community/changeCommunity.wxml b/pages/community/changeCommunity.wxml new file mode 100644 index 0000000..4422123 --- /dev/null +++ b/pages/community/changeCommunity.wxml @@ -0,0 +1,29 @@ + + + + {{areaList[areaIndex]}} + + + + + 选择社区 + + + + {{areaList[areaIndex]}} + + 进入 + + + {{item.communityName}} + 进入 + + 加载更多 + + + 我的社区 + + {{item.communityName}} + 进入 + + diff --git a/pages/community/changeCommunity.wxss b/pages/community/changeCommunity.wxss new file mode 100644 index 0000000..f372ea5 --- /dev/null +++ b/pages/community/changeCommunity.wxss @@ -0,0 +1,132 @@ +page { + background-color: #fff; +} + +.select { + color: rgba(36,40,46,.5); + font-size: 32rpx; + line-height: 80rpx; +} + +.community-box { + border-bottom: 1px solid #f9fafc; + display: flex; + font-size: 30rpx; + height: 90rpx; + justify-content: space-between; + line-height: 50rpx; + padding: 20rpx 0; +} + +.other-community { + border: 1px solid red; + border-radius: 10rpx; + color: red; + font-size: 32rpx; + height: 80rpx; + line-height: 80rpx; + margin-top: 20rpx; + text-align: center; +} + +.area { + border-bottom: 1px solid #f9fafc; + border-bottom-left-radius: 40rpx; + border-bottom-right-radius: 40rpx; + box-shadow: 0 4rpx 20rpx 0 rgba(0,0,0,.05); + line-height: 100rpx; + padding: 0 40rpx; +} + +.area picker { + font-size: 32rpx; +} + +.area picker image { + margin: -6rpx 10rpx 0 0; + vertical-align: middle; + width: 32rpx; +} + +.picker { + display: inline-flex; + justify-content: space-between; + width: 92%; +} + +.picker image { + margin-top: 30rpx!important; +} + +.community-name image { + height: 50rpx; + vertical-align: top; + width: 50rpx; +} + +.community-status { + border: 1px solid #ff4949; + border-radius: 40rpx; + color: #ff4949; + height: 50rpx; + line-height: 50rpx; + padding: 0 30rpx; +} + +.community { + min-height: 600rpx; + padding: 0 20rpx; +} + +.current-area { + border-bottom: 1px solid #f9fafc; + display: flex; + justify-content: space-between; + padding: 20rpx 0; +} + +.area-text image { + height: 50rpx; + margin-right: 20rpx; + width: 50rpx; +} + +.area-text { + color: #000; + display: flex; + font-size: 32rpx; +} + +.area-join,.area-text { + height: 50rpx; + line-height: 50rpx; +} + +.area-join { + background-color: #ff4949; + border: 1px solid #ff4949; + border-radius: 40rpx; + color: #fff; + padding: 0 30rpx; +} + +.community-name { + color: #7e7f82; + padding-left: 70rpx; +} + +.load-more { + font-size: 32rpx; + line-height: 80rpx; + text-align: center; +} + +.my-community { + border-top: 2px solid #f9fafc; + padding: 0 20rpx; +} + +.my-community .community-name { + color: #000; + padding-left: 0; +} \ No newline at end of file diff --git a/pages/community/join/joinDetail.js b/pages/community/join/joinDetail.js new file mode 100644 index 0000000..615984a --- /dev/null +++ b/pages/community/join/joinDetail.js @@ -0,0 +1,123 @@ +var a = getApp(); + +Page({ + data: { + token: a.globalData.token, + array: [ "商业住宅小区", "个人自建房" ], + index: 0, + xqArray: [], + xqAll: [], + xqIndex: 0, + xqSelected: "", + communityName: "", + communityId: "", + locationCode: "", + houseName: "", + roomNum: "", + floorNum: "", + isLoading: !1 + }, + bindPickerChange: function(a) { + this.setData({ + index: a.detail.value + }); + }, + bindPickerChange1: function(a) { + var t; + t = 0 == a.detail.value ? "" : this.data.xqAll[a.detail.value - 1].residentialId, + this.setData({ + xqIndex: a.detail.value, + xqSelected: t + }); + }, + submitJoin: function() { + var t = this; + if (!t.data.isLoading) { + if (0 == t.data.xqIndex && !t.data.houseName) return void wx.showToast({ + title: "请选择小区", + icon: "error" + }); + if (!t.data.floorNum) return void wx.showToast({ + title: "请输入楼栋", + icon: "error" + }); + if (!t.data.roomNum) return void wx.showToast({ + title: "请输入门牌号", + icon: "error" + }); + var o, e; + t.data.xqSelected ? (o = t.data.xqSelected, e = "ID") : (o = t.data.houseName, e = "非ID"); + var i = { + communityId: t.data.communityId, + areaId: t.data.communityId, + areaCode: t.data.locationCode, + communityName: t.data.communityName, + buildingType: t.data.array[t.data.index], + residential: o, + residentialValue: e, + building: t.data.floorNum, + houseNumber: t.data.roomNum, + buildingValue: "非ID", + houseNumberValue: "非ID", + locationCode: t.data.locationCode + }; + t.setData({ + isLoading: !0 + }), a.restAjax.post(a.restAjax.path(a.apis.joinCommunity, [ a.baseUrls.requestUrl ]), i, { + headers: { + token: a.globalData.token + } + }, function(a, o) { + wx.showToast({ + title: "加入成功", + icon: "success" + }), setTimeout(function() { + t.setData({ + isLoading: !1 + }), wx.navigateBack({ + delta: 2 + }); + }, 1500); + }, function(a, o) { + console.log(o), wx.showToast({ + title: o.msg, + icon: "error" + }), t.setData({ + isLoading: !1 + }); + }); + } + }, + getHouseList: function() { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getHouse, [ a.baseUrls.communityUrl ]), { + areaCode: t.data.locationCode + }, { + headers: { + token: a.globalData.token + } + }, function(a, o) { + for (var e = [ "请选择小区" ], i = 0; i < o.length; i++) e.push(o[i].residentialName); + t.setData({ + xqArray: e, + xqAll: o + }); + }, function(a, t) { + console.log(t); + }); + }, + onLoad: function(a) { + this.setData({ + communityName: a.communityName, + communityId: a.communityId, + locationCode: a.locationCode + }), this.getHouseList(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/community/join/joinDetail.json b/pages/community/join/joinDetail.json new file mode 100644 index 0000000..c4c5006 --- /dev/null +++ b/pages/community/join/joinDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "加入社区/村委会" +} \ No newline at end of file diff --git a/pages/community/join/joinDetail.wxml b/pages/community/join/joinDetail.wxml new file mode 100644 index 0000000..df2a1d7 --- /dev/null +++ b/pages/community/join/joinDetail.wxml @@ -0,0 +1,38 @@ +居民信息 + + + 当前社区居委会 + {{communityName}} + + + 建筑物类型 + + + {{array[index]}} + + + + + 小区 + + + {{xqArray[xqIndex]}} + + + + + 楼栋 + + + + + + 门牌号 + + + + + + + 加入 + diff --git a/pages/community/join/joinDetail.wxss b/pages/community/join/joinDetail.wxss new file mode 100644 index 0000000..db7ddb6 --- /dev/null +++ b/pages/community/join/joinDetail.wxss @@ -0,0 +1,65 @@ +.page-title { + font-size: 32rpx; + line-height: 80rpx; + padding: 0 20rpx; +} + +.join-info { + background-color: #fff; + padding: 0 20rpx; +} + +.join-row { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.row-content,.row-name { + font-size: 32rpx; + height: 80rpx; + line-height: 80rpx; +} + +.row-content { + color: #aaa; + text-align: right; + width: 65%; +} + +.row-name { + width: 35%; +} + +.text-row .row-name { + width: 15%; +} + +.text-row .row-content { + width: 85%; +} + +.row-content input { + box-sizing: border-box; + height: 100%; + padding: 0 10rpx; + width: 100%; +} + +.submit-join { + background-color: #fff; + bottom: 0; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.join-btn { + border-radius: 40rpx; + font-size: 36rpx; + height: 80rpx; + line-height: 80rpx; + margin-top: 0; + text-align: center; +} \ No newline at end of file diff --git a/pages/community/join/select.js b/pages/community/join/select.js new file mode 100644 index 0000000..85e7678 --- /dev/null +++ b/pages/community/join/select.js @@ -0,0 +1,92 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + areaList: [ "请选择地区" ], + areaIndex: 0, + areaAll: [], + areaSelected: "", + officeList: [ "请选择办事处" ], + officeIndex: 0, + officeAll: [], + officeSelected: "", + committeeList: [] + }, + joinCommunity: function(e) { + var t = e.currentTarget.dataset.item; + wx.navigateTo({ + url: "./joinDetail?communityId=" + t.communityId + "&communityName=" + t.communityName + "&locationCode=" + t.locationCode + }); + }, + getAreaList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getArea, [ e.baseUrls.serviceUrl, "110889" ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + for (var i = t.data.areaList, o = 0; o < a.length; o++) i.push(a[o].areaName); + t.setData({ + areaList: i, + areaAll: a + }); + }, function(e, t) { + console.log(t); + }); + }, + bindAreaPickerChange: function(e) { + this.setData({ + areaIndex: e.detail.value, + areaSelected: this.data.areaAll[e.detail.value - 1].areaId + }), this.getOfficeList(); + }, + getOfficeList: function(t) { + var a = this; + e.restAjax.get(e.restAjax.path(e.apis.getArea, [ e.baseUrls.serviceUrl, a.data.areaSelected ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, t) { + for (var i = a.data.officeList, o = 0; o < t.length; o++) i.push(t[o].areaName); + a.setData({ + officeList: i, + officeAll: t + }); + }, function(e, t) { + console.log(t); + }); + }, + bindOfficePickerChange: function(e) { + this.setData({ + officeIndex: e.detail.value, + officeSelected: this.data.officeAll[e.detail.value - 1].areaId + }), this.getCommunityList(); + }, + getCommunityList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getCommunityList, [ e.baseUrls.communityUrl ]), { + parentCode: t.data.officeSelected + }, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + t.setData({ + committeeList: a + }); + }, function(e, t) { + console.log(t); + }); + }, + onLoad: function(e) { + this.getAreaList(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/community/join/select.json b/pages/community/join/select.json new file mode 100644 index 0000000..2833bf5 --- /dev/null +++ b/pages/community/join/select.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "加入社区居委会/村委会" +} \ No newline at end of file diff --git a/pages/community/join/select.wxml b/pages/community/join/select.wxml new file mode 100644 index 0000000..0e2a8f5 --- /dev/null +++ b/pages/community/join/select.wxml @@ -0,0 +1,25 @@ + + + 选择区域 + + + {{areaList[areaIndex]}} + + + + + 选择办事处 + + + {{officeList[officeIndex]}} + + + + + + 请选择社区居委会/村委会 + + {{item.communityName}} + 加入 + + diff --git a/pages/community/join/select.wxss b/pages/community/join/select.wxss new file mode 100644 index 0000000..5cd0677 --- /dev/null +++ b/pages/community/join/select.wxss @@ -0,0 +1,61 @@ +.select { + background-color: #fff; + padding: 0 20rpx; +} + +.select-box { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.select-box:last-child { + border-bottom: none; +} + +.select-lv { + font-size: 32rpx; + line-height: 80rpx; + width: 30%; +} + +picker { + height: 80rpx; + line-height: 80rpx; +} + +.select-join { + background-color: #fff; + margin-top: 20rpx; + padding: 0 20rpx; +} + +.join-title { + color: red; + font-size: 32rpx; + line-height: 80rpx; +} + +.join-box,.join-title { + border-bottom: 1px solid #ddd; +} + +.join-box { + display: flex; + justify-content: space-between; +} + +.join-name { + font-size: 32rpx; + line-height: 80rpx; + max-width: 70%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.border-btn { + margin-top: 15rpx; + text-align: center; + width: 140rpx; +} \ No newline at end of file diff --git a/pages/community/joinCommunity.js b/pages/community/joinCommunity.js new file mode 100644 index 0000000..cb46b18 --- /dev/null +++ b/pages/community/joinCommunity.js @@ -0,0 +1,60 @@ +var t = getApp(); + +Page({ + data: { + token: t.globalData.token, + communityList: [], + sourceUrl: t.baseUrls.sourceUrl + }, + getMyCommunity: function() { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.mycommunity, [ t.baseUrls.requestUrl ]), {}, { + headers: { + token: t.globalData.token + } + }, function(t, o) { + e.setData({ + communityList: o + }); + }, function(t, e) { + console.log(e); + }); + }, + quitCommunity: function(e) { + var o = e.currentTarget.dataset.id, n = e.currentTarget.dataset.community, a = this; + wx.showModal({ + cancelColor: "#000000", + title: "确认退出该社区?", + success: function(e) { + e.confirm && t.restAjax.delete(t.restAjax.path(t.apis.quitCommunity, [ t.baseUrls.requestUrl, o ]), {}, { + headers: { + token: t.globalData.token + } + }, function(t, e) { + var o = wx.getStorageSync("curCommunityId"); + n == o && (wx.removeStorageSync("areaCode"), wx.removeStorageSync("curCommunityId"), + wx.removeStorageSync("curCommunityName"), wx.removeStorageSync("areaLevel")), wx.showToast({ + title: "退出成功" + }), a.getMyCommunity(); + }, function(t, e) { + console.log(e); + }); + } + }); + }, + selectCommunity: function() { + wx.navigateTo({ + url: "./join/select" + }); + }, + onLoad: function(t) {}, + onReady: function() {}, + onShow: function() { + this.getMyCommunity(); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/community/joinCommunity.json b/pages/community/joinCommunity.json new file mode 100644 index 0000000..f6fc9af --- /dev/null +++ b/pages/community/joinCommunity.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "所在社区" +} \ No newline at end of file diff --git a/pages/community/joinCommunity.wxml b/pages/community/joinCommunity.wxml new file mode 100644 index 0000000..53cb45f --- /dev/null +++ b/pages/community/joinCommunity.wxml @@ -0,0 +1,20 @@ + + 社区机构入驻 + 单位/店铺入驻 + + + + 所在社区 + 所在单位 + + + + {{item.communityName}} + 退出 + + + + + + 选择加入社区居委会 / 村委会 + diff --git a/pages/community/joinCommunity.wxss b/pages/community/joinCommunity.wxss new file mode 100644 index 0000000..9665850 --- /dev/null +++ b/pages/community/joinCommunity.wxss @@ -0,0 +1,80 @@ +.join { + background-color: #fff; + justify-content: space-between; + padding: 20rpx; +} + +.join,.join-btn-box { + display: flex; +} + +.join-btn-box { + align-items: center; + border: 1px solid red; + border-radius: 10rpx; + color: red; + font-size: 30rpx; + height: 80rpx; + justify-content: center; + width: 45%; +} + +.joined { + background-color: #fff; + margin-top: 20rpx; + padding: 0 20rpx 20rpx; +} + +.joined-tab { + border-bottom: 1px solid #ddd; +} + +.joined-tab,.joined-tab-box { + display: flex; +} + +.joined-tab-box { + align-items: center; + flex: 1; + font-size: 32rpx; + height: 80rpx; + justify-content: center; +} + +.joined-tab-box.active { + color: red; +} + +.joined-box { + border-bottom: 1px solid #ddd; + display: flex; + height: 80rpx; + justify-content: space-between; +} + +.joined-name { + font-size: 32rpx; + line-height: 80rpx; +} + +.quit { + margin-top: 15rpx; +} + +.select-btn { + align-items: center; + border-radius: 10rpx; + display: flex; + height: 80rpx; + justify-content: center; + margin-top: 20rpx; +} + +.no-data { + padding: 50rpx 0; + text-align: center; +} + +.no-data image { + width: 300rpx; +} \ No newline at end of file diff --git a/pages/community/selectCommunity.js b/pages/community/selectCommunity.js new file mode 100644 index 0000000..821371f --- /dev/null +++ b/pages/community/selectCommunity.js @@ -0,0 +1,107 @@ +var e = require("../../@babel/runtime/helpers/defineProperty"), a = getApp(); + +Page({ + data: { + token: a.globalData.token, + sourceUrl: a.baseUrls.sourceUrl, + areaList: [], + areaAll: [], + index: 0, + areaSelected: "", + page: { + rows: 10, + page: 1, + areaCode: "" + }, + keywords: "", + communityList: [], + haveMore: !0 + }, + enterCommunity: function(e) { + var t = { + communityId: e.currentTarget.dataset.communityId, + communityName: e.currentTarget.dataset.communityName + }; + a.globalData.currentCommunity = t, wx.setStorage({ + data: e.currentTarget.dataset.communityName, + key: "curCommunityName" + }), wx.setStorage({ + data: e.currentTarget.dataset.communityId, + key: "curCommunityId" + }), wx.setStorage({ + data: e.currentTarget.dataset.location, + key: "locationCode" + }), wx.reLaunch({ + url: "../index/index" + }); + }, + getArea: function() { + var t = this; + a.restAjax.get(a.restAjax.path(a.apis.getArea, [ a.baseUrls.serviceUrl, "110889" ]), {}, { + headers: { + token: a.globalData.token + } + }, function(a, o) { + for (var n = [], r = 0; r < o.length; r++) n.push(o[r].areaName); + t.setData(e({ + areaList: n, + areaAll: o, + areaSelected: o[0].areaCode + }, "page.areaCode", o[0].areaCode)), t.getCommunity(); + }, function(e, a) { + console.log(a); + }); + }, + bindPickerChange: function(a) { + var t; + this.setData((t = { + index: a.detail.value, + areaSelected: this.data.areaAll[a.detail.value].areaCode + }, e(t, "page.areaCode", this.data.areaAll[a.detail.value].areaCode), e(t, "page.page", 1), + e(t, "haveMore", !0), t)), this.getCommunity(); + }, + getCommunity: function() { + var t = this, o = t.data.page; + t.data.keywords && (o.keywords = t.data.keywords), a.restAjax.get(a.restAjax.path(a.apis.getCommunityListPage, [ a.baseUrls.communityUrl ]), o, { + headers: { + token: a.globalData.token + } + }, function(a, o) { + if (1 == t.data.page.page) t.setData({ + communityList: o.rows + }); else if (o.rows.length > 0) { + for (var n = t.data.communityList, r = 0; r < o.rows.length; r++) n.push(o.rows[r]); + t.setData({ + communityList: n + }); + } else t.setData(e({}, "page.page", t.data.page.page - 1)); + o.rows.length < 10 && t.setData({ + haveMore: !1 + }); + }, function(e, a) { + console.log(a); + }); + }, + loadMore: function() { + this.setData(e({}, "page.page", this.data.page.page + 1)), this.getCommunity(); + }, + selectCommunity: function(e) { + var t = { + communityId: e.currentTarget.dataset.item.communityId, + communityName: e.currentTarget.dataset.item.communityName + }; + a.globalData.currentCommunity = t, wx.reLaunch({ + url: "../index/index" + }); + }, + onLoad: function(e) { + this.getArea(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/community/selectCommunity.json b/pages/community/selectCommunity.json new file mode 100644 index 0000000..c13659c --- /dev/null +++ b/pages/community/selectCommunity.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "选择您的社区" +} \ No newline at end of file diff --git a/pages/community/selectCommunity.wxml b/pages/community/selectCommunity.wxml new file mode 100644 index 0000000..3549d20 --- /dev/null +++ b/pages/community/selectCommunity.wxml @@ -0,0 +1,25 @@ + + + + + {{areaList[index]}} + + + + + + + + + + + + + + {{item.communityName}} + + 进入社区 + + + 加载更多 + diff --git a/pages/community/selectCommunity.wxss b/pages/community/selectCommunity.wxss new file mode 100644 index 0000000..669eea7 --- /dev/null +++ b/pages/community/selectCommunity.wxss @@ -0,0 +1,83 @@ +.search,page { + background-color: #fff; +} + +.search { + display: flex; + justify-content: space-between; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; + top: 0; + z-index: 100; +} + +.area { + font-size: 30rpx; + line-height: 60rpx; + width: 20%; +} + +.search-box { + border-radius: 40rpx; + overflow: hidden; + position: relative; + width: 78%; +} + +.search-box input { + background-color: #eee; + box-sizing: border-box; + height: 60rpx; + padding: 0 60rpx 0 10rpx; + width: 100%; +} + +.search-icon-box { + height: 60rpx; + position: absolute; + right: 0; + top: 0; + width: 60rpx; +} + +.search-icon-box image { + height: 35rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 35rpx; +} + +.list { + margin-top: 80rpx; +} + +.community-box,.community-name { + display: flex; + justify-content: space-between; +} + +.community-box { + border-top: 1px solid #ddd; + padding: 20rpx 0; +} + +.community-name image { + height: 100rpx; + margin-right: 20rpx; + width: 100rpx; +} + +.community-name-text { + font-size: 32rpx; + line-height: 100rpx; +} + +.load-more { + font-size: 32rpx; + line-height: 80rpx; + text-align: center; +} \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..40a2de3 --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,258 @@ +var t = getApp(); + +Page({ + data: { + token: t.globalData.token, + page: { + page: 1, + rows: 5, + newsTypeId: "52baf515-304c-46f2-911a-355d889346f2", + showArea: "6dcbb862-4b48-4dca-aee1-d78fd76adc05", + areaCode: "" + }, + noticeList: [], + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl, + cardInfo: {}, + curCommunity: wx.getStorageSync("curCommunityName"), + sourceUrl: t.baseUrls.sourceUrl, + isBindPhone: !1, + cardTemplateDispatchId: "" + }, + changeCommunity: function () { + wx.navigateTo({ + url: "../community/changeCommunity" + }); + }, + joinCommunity: function () { + wx.navigateTo({ + url: "../community/joinCommunity" + }); + }, + doCheckIn: function () { + wx.getStorageSync("curCommunityId") ? wx.getStorageSync("areaLevel") < 4 ? wx.showToast({ + title: "请选择至社区级", + icon: "error" + }) : wx.navigateTo({ + url: "../checkIn/checkIn" + }) : wx.showToast({ + title: "请先选择社区", + icon: "none" + }); + }, + goTalk: function () { + wx.getStorageSync("curCommunityId") ? wx.getStorageSync("areaLevel") < 4 ? wx.showToast({ + title: "请选择至社区级", + icon: "error" + }) : wx.navigateTo({ + url: "../talk/talk" + }) : wx.showToast({ + title: "请先选择社区", + icon: "none" + }); + }, + goReport: function () { + wx.getStorageSync("curCommunityId") ? wx.getStorageSync("areaLevel") < 4 ? wx.showToast({ + title: "请选择至社区级", + icon: "error" + }) : wx.navigateTo({ + url: "../report/report" + }) : wx.showToast({ + title: "请先加入并选择社区", + icon: "none" + }); + }, + goServe: function () { + wx.getStorageSync("curCommunityId") ? wx.getStorageSync("areaLevel") < 4 ? wx.showToast({ + title: "请选择至社区级", + icon: "error" + }) : wx.navigateTo({ + url: "../serve/serve" + }) : wx.showToast({ + title: "请先加入并选择社区", + icon: "none" + }); + }, + checkMoreNews: function () { + wx.navigateTo({ + url: "../news/newsList" + }); + }, + getNotice: function () { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getNewsList, [t.baseUrls.requestUrl]), { + page: 1, + rows: 5, + newsTypeId: "52baf515-304c-46f2-911a-355d889346f2", + showArea: "6dcbb862-4b48-4dca-aee1-d78fd76adc05", + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: t.globalData.token + } + }, function (t, a) { + e.setData({ + noticeList: a.rows + }); + }, function (e, t) { + console.log(t); + }); + }, + checkNewsDetail: function (e) { + var t = e.currentTarget.dataset.id; + wx.navigateTo({ + url: "../news/newsDetail?newsId=" + t + }); + }, + doLogin: function () { + var _self= this; + wx.login({ + success: function (a) { + t.restAjax.post(t.restAjax.path(t.apis.doLogin, [t.baseUrls.serviceUrl]), { + jsCode: a.code + }, {}, function (a, o) { + var n = o.data.split("_")[0]; + var r = o.data.split("_")[1]; + if (wx.setStorageSync("bindPhone", r), t.globalData.token = n, _self.setData({ + token: t.globalData.token, + isBindPhone: 0 == r + }), "" != _self.data.cardId && null != _self.data.cardId ? (console.log(_self.data.cardId), + _self.getCard()) : _self.getDefaultCard(), _self.getNotice(), "" != _self.data.cardTemplateDispatchId && null != _self.data.cardTemplateDispatchId) { + var s = "/pages/mine/otherCard/othercarddetail?cardTemplateUseId=" + _self.data.cardTemplateDispatchId; + wx.navigateTo({ + url: s + }); + } + }, function (e, t) { + console.log(t); + }); + } + }); + }, + getDictionary: function () { + t.restAjax.get(t.restAjax.path(t.apis.getDictionary, [t.baseUrls.serviceUrl, "5879c4fc-d357-44a1-9126-394af36ffe63"]), {}, { + headers: { + token: this.data.token + } + }, function (e, t) { + console.log(t); + }, function (e, t) { + console.log(t); + }); + }, + getCard: function () { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getCardSyzlDetail, [t.baseUrls.requestUrl, e.data.cardId]), {}, { + headers: { + token: e.data.token + } + }, function (t, a) { + e.setData({ + cardInfo: a + }), wx.setStorage({ + data: a.areaCode, + key: "areaCode" + }); + }, function (e, t) { + console.log(t); + }); + }, + getDefaultCard: function () { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getDefaultSyzlCard, [t.baseUrls.requestUrl]), {}, { + headers: { + token: e.data.token + } + }, function (t, a) { + e.setData({ + cardInfo: a + }); + }, function (e, t) { + console.log(t); + }); + }, + getPhoneNumber: function (e) { + var a = this, o = e.detail.iv, n = e.detail.encryptedData; + console.log(n), n && (wx.showLoading({ + title: "绑定中..." + }), t.http.put(t.urls.doUpdatePhone, { + header: { + token: t.globalData.token + }, + data: { + iv: o, + encryptedData: n + } + }).then(function (e) { + wx.hideLoading({}), wx.setStorageSync("token", e.data.data), wx.setStorageSync("bindPhone", 0), + a.setData({ + isBindPhone: !0 + }), t.globalData.token = e.data.data, wx.showToast({ + title: "绑定成功", + success: function (e) { } + }); + }).catch(function (e) { })); + }, + checkPermission: function () { + var e = this; + try { + var t = wx.getStorageSync("name"), a = wx.getStorageSync("userIcon"); + t ? this.setData({ + name: t, + userIcon: a + }) : wx.showModal({ + title: "提示", + content: "小程序需要您微信头像以及昵称用于展示,请授权.", + showCancel: !1, + success: function (t) { + t.confirm && e.getUserProfile(3); + } + }); + } catch (e) { + e = VM2_INTERNAL_STATE_DO_NOT_USE_OR_PROGRAM_WILL_FAIL.handleException(e); + console.log(e), wx.showToast({ + title: "获取信息失败", + icon: "error" + }); + } + }, + getUserProfile: function (e) { + var a = this; + wx.getUserProfile({ + desc: "获取微信头像以及昵称用于展示", + success: function (e) { + wx.setStorage({ + data: e.userInfo.nickName, + key: "name" + }), wx.setStorage({ + data: e.userInfo.avatarUrl, + key: "userIcon" + }), a.setData({ + name: e.userInfo.nickName, + userIcon: e.userInfo.avatarUrl + }), t.globalData.userIcon = e.userInfo.avatarUrl, t.globalData.userInfo = e.userInfo; + }, + fail: function (e) { + wx.showToast({ + title: "获取个人信息失败", + icon: "error" + }); + } + }); + }, + onLoad: function (e) { + e.cardTemplateDispatchId && this.setData({ + cardTemplateDispatchId: e.cardTemplateDispatchId + }), this.doLogin(), this.checkPermission(), wx.setStorage({ + data: "1", + key: "gridMiniId" + }); + }, + onShow: function () { + this.setData({ + curCommunityName: wx.getStorageSync("curCommunityName") ? wx.getStorageSync("curCommunityName") : "切换社区", + curCommunityId: wx.getStorageSync("curCommunityId") ? wx.getStorageSync("curCommunityId") : "", + curCommunity: wx.getStorageSync("curCommunityName") + }, "page.areaCode", wx.getStorageSync("areaCode") ? wx.getStorageSync("areaCode") : ""); + } +}); \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..9b12438 --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "城市社区" +} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..b136af8 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,65 @@ + + {{curCommunityName}} + + 加入 + + + + + + + + {{cardInfo.realName}} + + {{cardInfo.phone}} + + {{cardInfo.address}} + + + + + + + + + {{curCommunity}} + + + + + + 党员报到 + + + + 公众咨询 + + + + 述求上报 + + + + 社情民意 + + + + + 便民公告 + 查看更多 + + + + + + + + {{item.title}} + {{item.summary}} + + {{item.source}} + {{item.gmtCreate}} + + + + diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..cc1dd6b --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1,312 @@ +.community { + background-color: #ff4949; + border-bottom-left-radius: 80rpx; + border-bottom-right-radius: 80rpx; + color: #fff; + display: flex; + font-size: 32rpx; + justify-content: space-between; + padding: 20rpx 20rpx 150rpx; +} + +.change-community { + font-size: 40rpx; +} + +.change-community image { + margin-top: -10rpx; + vertical-align: middle; +} + +.change-community image,.join-community image { + height: 28rpx; + width: 28rpx; +} + +.card-container { + margin-top: -140rpx; + padding: 20rpx; + position: relative; +} + +.card { + background-color: #fff; + border-radius: 10rpx; + box-sizing: border-box; + height: 0; + margin-bottom: 20rpx; + overflow: hidden; + padding-bottom: 56%; +} + +.card,.mid { + position: relative; + width: 100%; +} + +.mid,.mid-box { + display: flex; +} + +.mid-box { + align-items: left; + background-color: #fff; + border: 2rpx solid #eac390; + border-radius: 10rpx; + flex-direction: column; + flex-shrink: 0; + font-weight: 400; + justify-content: left; + margin-right: 2%!important; + padding: 10rpx; + width: 32%!important; +} + +.mid-box:last-child { + margin-right: 0; +} + +.mid-box text { + color: #ccc; + font-size: 15px; + height: 16px; + line-height: 16px; + text-align: center; +} + +.mid-box image { + height: 48rpx; + width: 48rpx; +} + +.mid-box-text { + font-size: 28rpx; + text-align: left; +} + +.good { + justify-content: space-between; + padding-bottom: 20rpx; + padding-left: 20rpx; + padding-top: 20rpx; + width: 100%; +} + +.good,.good-click { + display: flex; +} + +.good-avatar { + font-size: 0; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.view-count { + border-right: 1px solid grey; + margin-right: 30rpx; +} + +.view-count,.view-count-no { + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; + padding-right: 30rpx; +} + +.view-count-no { + align-items: center; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.tab { + background-color: #fff; + display: flex; + justify-content: space-between; + padding: 30rpx 0; +} + +.tab-box { + flex: 1; + text-align: center; +} + +.tab-box image { + height: 80rpx; + width: 80rpx; +} + +.tab-text { + font-size: 30rpx; + overflow: hidden; + padding: 0 10rpx; + text-overflow: ellipsis; + white-space: nowrap; +} + +.notice { + background-color: #fff; + margin-top: 15rpx; + padding: 20rpx; +} + +.notice-title { + font-size: 36rpx; + font-weight: 700; + margin-bottom: 20rpx; +} + +.notice-box,.notice-title { + display: flex; + justify-content: space-between; +} + +.notice-box { + border-bottom: 1px solid #f9fafc; + padding: 20rpx 0; +} + +.notice-box:last-child { + border-bottom: none; +} + +.title-text { + line-height: 50rpx; + padding-left: 20rpx; + position: relative; +} + +.title-text:after { + background-color: #f55054; + content: ""; + display: block; + height: 39rpx; + left: 0; + position: absolute; + top: 7rpx; + width: 5px; +} + +.notice-title-text { + font-size: 34rpx; +} + +.notice-more { + color: #bbb; + font-size: 28rpx; + font-weight: 400; + line-height: 50rpx; +} + +.notice-time { + color: hsla(0,0%,6%,.7); + font-size: 28rpx; + line-height: 45rpx; + margin: 6rpx 0; +} + +.notice-img { + height: 140rpx; + text-align: center; + width: 200rpx; +} + +.notice-img image { + height: 100%; +} + +.notice-info { + width: 490rpx; +} + +.card-area { + position: absolute; +} + +.photo { + bottom: 0; + left: 10px; + top: 0; + width: 300rpx; +} + +.photo image { + height: 100%; + max-width: 100%; +} + +.name { + font-size: 36rpx; + font-weight: 700; + left: 340rpx; + top: 40rpx; +} + +.phone { + bottom: 160rpx; + color: #a8a8a8; + font-size: 28rpx; + left: 340rpx; + line-height: 30rpx; +} + +.phone image { + height: 30rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 30rpx; +} + +.position { + bottom: 120rpx; +} + +.qr-code { + bottom: 30rpx; + height: 60rpx; + position: absolute; + right: 24rpx; + width: 60rpx; +} + +.qr-code image { + height: 100%; + width: 100%; +} + +.notice-from { + display: flex; + font-size: 28rpx; + justify-content: space-between; +} + +.notice-more image { + height: 24rpx; + margin-top: 14rpx; + vertical-align: top; +} + +.card-img { + position: absolute; +} + +.card-img,.card-img image { + height: 100%; + width: 100%; +} + +.white-name { + color: #fff; + font-size: 34rpx; + font-weight: 400; + left: 10rpx; + top: 26rpx; +} \ No newline at end of file diff --git a/pages/law/law.js b/pages/law/law.js new file mode 100644 index 0000000..71184a3 --- /dev/null +++ b/pages/law/law.js @@ -0,0 +1,11 @@ +Page({ + data: {}, + onLoad: function(n) {}, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/law/law.json b/pages/law/law.json new file mode 100644 index 0000000..78f7e38 --- /dev/null +++ b/pages/law/law.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "AI法律" +} \ No newline at end of file diff --git a/pages/law/law.wxml b/pages/law/law.wxml new file mode 100644 index 0000000..62b737e --- /dev/null +++ b/pages/law/law.wxml @@ -0,0 +1 @@ + diff --git a/pages/law/law.wxss b/pages/law/law.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/mine/myCard/myCard.js b/pages/mine/myCard/myCard.js new file mode 100644 index 0000000..3d11e9c --- /dev/null +++ b/pages/mine/myCard/myCard.js @@ -0,0 +1,190 @@ +var t = require("../../../@babel/runtime/helpers/defineProperty"), a = getApp(); + +Page({ + data: { + imgUrl: a.baseUrls.baseCardUrl, + cardList: [], + otherCardList: [], + historyList: [], + tab: 0, + oldArr: [], + token: "", + page: { + rows: 10, + page: 1 + }, + topHeight: a.globalData.CustomBar, + isRefresh: !1, + isDelPage: !1, + tabList: [ { + name: "我的名片" + }, { + name: "他人名片" + }, { + name: "浏览历史" + } ], + pageType: null, + id: "" + }, + onLoad: function(t) { + this.setData({ + token: a.globalData.token, + pageType: t.type, + id: t.id + }), this.getList(); + }, + onShow: function() { + this.data.isRefresh && (this.setData({ + isRefresh: !1 + }), wx.startPullDownRefresh({})); + }, + getList: function() { + var t = this; + wx.showLoading({ + title: "加载中..." + }), wx.showNavigationBarLoading(), a.http.get(a.urls.getMyCard, { + header: { + token: a.globalData.token + }, + data: {} + }).then(function(a) { + wx.hideLoading({}), t.setData({ + cardList: a.data + }), a.data.length > 0 && t.data.isDelPage && (t.setData({ + isDelPage: !1 + }), t.setDefaultCard(a.data[0].cardTemplateUseId)), wx.hideNavigationBarLoading(), + wx.stopPullDownRefresh(); + }).catch(function(t) { + wx.hideLoading({}), wx.hideNavigationBarLoading(), wx.stopPullDownRefresh(); + }); + }, + goDetail: function(t) { + var a = t.currentTarget.dataset.id; + wx.navigateTo({ + url: "../myCardDetail/myCardDetail?id=" + a + "&type=" + this.data.pageType + "&taskId=" + this.data.id + }); + }, + getOtherCard: function() { + wx.showLoading({ + title: "加载中..." + }); + var e = this; + a.http.get(a.urls.otherCardList, { + header: { + token: a.globalData.token + }, + data: {} + }).then(function(a) { + var s; + wx.hideLoading({}), wx.stopPullDownRefresh({}), a.data.rows.length > 0 ? (s = e.data.otherCardList.concat(a.data.rows), + e.setData({ + otherCardList: s + })) : e.setData(t({}, page.page, e.data.page.page - 1)); + }).catch(function(t) { + wx.hideLoading({}), wx.stopPullDownRefresh({}); + }); + }, + getHistory: function() { + wx.showLoading({ + title: "加载中..." + }); + var e = this; + a.http.get(a.urls.getBrowseHistoryList, { + header: { + token: a.globalData.token + } + }).then(function(a) { + var s; + if (wx.hideLoading({}), wx.stopPullDownRefresh({}), a.data.rows.length > 0) s = e.data.historyList.concat(a.data.rows), + e.setData({ + historyList: s + }); else { + e.setData(t({}, "_self.data.page.page", e.data.page.page - 1)); + } + }).catch(function(t) { + wx.hideLoading({}), wx.stopPullDownRefresh({}), console.log(t); + }); + }, + changeTab: function(t) { + var a = t.detail.index; + this.data.tab != a && (this.setData({ + tab: a + }), 0 == a ? (this.setData({ + cardList: [], + page: { + rows: 10, + page: 1 + } + }), this.getList()) : 1 == a ? (this.setData({ + otherCardList: [], + page: { + rows: 10, + page: 1 + } + }), this.getOtherCard()) : 2 == a && (this.setData({ + historyList: [], + page: { + rows: 10, + page: 1 + } + }), this.getHistory())); + }, + toggleTop: function(t) { + var e = this, s = t.currentTarget.dataset.bag, i = t.currentTarget.dataset.top; + i = "0" == i, a.http.put(a.urls.setTop.format({ + cardTemplateUseBagId: s, + cardTemplateUseTop: i + }), { + header: { + token: a.globalData.token + }, + data: {} + }).then(function(t) { + console.log(t.data), wx.showToast({ + title: "设置成功!" + }), e.setData({ + otherCardList: [] + }), e.getOtherCard(); + }); + }, + onPullDownRefresh: function() { + "0" == this.data.tab ? (this.setData({ + cardList: [], + page: { + rows: 10, + page: 1 + } + }), this.getList()) : "1" == this.data.tab ? (this.setData({ + otherCardList: [], + page: { + rows: 10, + page: 1 + } + }), this.getOtherCard()) : "2" == this.data.tab && (this.setData({ + historyList: [], + page: { + rows: 10, + page: 1 + } + }), this.getHistory()); + }, + onReachBottom: function() { + 1 == this.data.tab && (this.setData(t({}, page.page, this.data.page.page++)), this.getOtherCard()); + }, + showCard: function(t) { + wx.navigateTo({ + url: "../otherCard/othercarddetail?cardTemplateUseId=" + t.currentTarget.dataset.id + }); + }, + setDefaultCard: function(t) { + a.http.put(a.urls.setDefaultCard.format({ + cardTemplateUseId: t + }), { + header: { + token: this.data.token + } + }).then(function(t) { + wx.startPullDownRefresh({}); + }).catch(function(t) {}); + } +}); \ No newline at end of file diff --git a/pages/mine/myCard/myCard.json b/pages/mine/myCard/myCard.json new file mode 100644 index 0000000..817a99b --- /dev/null +++ b/pages/mine/myCard/myCard.json @@ -0,0 +1,26 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "enablePullDownRefresh": true, + "navigationBarTitleText": "我的名片" +} \ No newline at end of file diff --git a/pages/mine/myCard/myCard.wxml b/pages/mine/myCard/myCard.wxml new file mode 100644 index 0000000..7589402 --- /dev/null +++ b/pages/mine/myCard/myCard.wxml @@ -0,0 +1,58 @@ + + + + + + + + + + + 主名片 + + + + + + + + + + + + + + + 取消置顶 + 置顶 + + + + + + + + + + + + + + + 置顶 + + + + + + + {{list.creatorName}} + + 浏览时间:{{list.gmtCreate}} + + + + + + + diff --git a/pages/mine/myCard/myCard.wxss b/pages/mine/myCard/myCard.wxss new file mode 100644 index 0000000..9138554 --- /dev/null +++ b/pages/mine/myCard/myCard.wxss @@ -0,0 +1,139 @@ +.list { + padding: 100rpx 15rpx 15rpx; + position: relative; + z-index: 1; +} + +.card { + border-radius: 10rpx; + box-shadow: 0 0 20rpx #eee; + margin: 0rpx 0rpx 15rpx; + padding: 15rpx; +} + +.card-container { + height: 0; + position: relative; +} + +.card-img { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; +} + +.card-img image { + height: 100%; + width: 100%; +} + +.card-name-sm { + align-items: center; + font-size: 25rpx; + margin-top: 15rpx; +} + +.main { + background: #e6b980; + opacity: .8; +} + +.main,.main-red { + border-bottom-right-radius: 20rpx; + border-top-left-radius: 20rpx; + color: #fff; + padding: 5rpx 15rpx; + position: absolute; + right: -15rpx; + top: -15rpx; + z-index: 10; +} + +.main-red { + background: red; + opacity: .5; +} + +.tab { + background: #fff; + height: 80rpx; + left: 0; + position: fixed; + right: 0; + z-index: 100; +} + +.tab,.tab-box { + display: flex; +} + +.tab-box { + align-items: center; + color: #000; + flex: 1; + font-size: 32rpx; + justify-content: center; +} + +.tab-box.active { + border-bottom: 2px solid #e6b980; + box-sizing: border-box; + color: #e6b980; +} + +.card { + background: #fff; + box-sizing: border-box; + position: relative; + width: 100%; + z-index: 100; +} + +.card-bgImg { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.area-box { + white-space: nowrap; +} + +.card-name { + font-size: 36rpx; +} + +.other-card { + justify-content: space-between; +} + +.card-img-box,.other-card { + display: flex; +} + +.card-img-box { + align-items: center; + flex-direction: row; + margin-right: 40rpx; +} + +.card-img-box image { + height: 200rpx; + width: 200rpx; +} + +.set-top { + background: #e6b980; + border-radius: 5rpx; + color: #fff; + padding: 0rpx 15rpx; +} + +.set-top:active { + background: #f5f5f5; + color: #000; +} \ No newline at end of file diff --git a/pages/mine/myCardDetail/myCardDetail.js b/pages/mine/myCardDetail/myCardDetail.js new file mode 100644 index 0000000..7a14d45 --- /dev/null +++ b/pages/mine/myCardDetail/myCardDetail.js @@ -0,0 +1,330 @@ +var t = require("../../../@babel/runtime/helpers/defineProperty"), e = getApp(); + +Page({ + data: { + preview: "", + showHide: !1, + isLoading: !1, + isMain: "", + cardPersonId: "", + choose_index: 0, + active: 0, + cardUrl: e.baseUrls.baseCardUrl, + areaList: [], + cardInfo: {}, + bgImg: "", + fontFamilyList: [], + useFontFamily: "", + cardId: "", + cardHeight: "", + shareTicket: "", + encryptedData: "", + iv: "", + isFromOut: !1, + token: "", + oldToken: "", + imgTempSrc: "", + currentIndex: 0, + windowWidth: e.globalData.windowWidth, + isShowBind: !1, + id: "" + }, + deleteCard: function() { + var t = this; + wx.showModal({ + cancelColor: "#000", + title: "提示", + content: "确认删除该名片?", + success: function(a) { + a.confirm && e.http.delete(e.urls.deleteCard.format({ + ids: t.data.cardId + }), { + header: { + token: t.data.token + } + }).then(function(e) { + "200" == e.statusCode && wx.showToast({ + title: "删除成功", + icon: "success", + success: function() { + var e = getCurrentPages(), a = e.length >= 2 ? e[e.length - 2] : void 0, r = "1" == t.data.cardInfo.cardTemplateUseDefault; + a.setData({ + isRefresh: !0, + isDelPage: r + }), wx.navigateBack({}); + } + }); + }).catch(function(t) {}); + } + }); + }, + updateCard: function(t) { + for (var a = [], r = 0; r < this.data.areaList.length; r++) { + var o = { + cardTemplateUseId: this.data.areaList[r].cardTemplateUseId, + cardTemplateUseAreaId: this.data.areaList[r].cardTemplateUseAreaId, + templateAreaFile: this.data.areaList[r].templateAreaFile, + templateAreaFontValue: this.data.areaList[r].templateAreaFontValue + }; + a.push(o); + } + var n = { + cardTemplateUseAreaList: a, + cardTemplateUseDefault: this.data.cardInfo.cardTemplateUseDefault, + cardTemplateUsePassword: this.data.cardInfo.cardTemplateUsePassword, + cardTemplateUseSwitch: this.data.cardInfo.cardTemplateUseSwitch, + cardTemplateUseId: this.data.cardInfo.cardTemplateUseId + }; + e.http.put(e.urls.updateMyCard.format({ + cardTemplateUseId: this.data.cardId + }), { + header: { + token: e.globalData.token + }, + data: n + }).then(function(t) { + "200" == t.statusCode && wx.showToast({ + title: "修改成功", + icon: "success", + success: function() { + var t = getCurrentPages(); + (t.length >= 2 ? t[t.length - 2] : void 0).setData({ + isRefresh: !0 + }), wx.navigateBack({}); + } + }); + }).catch(function(t) {}); + }, + onShow: function(t) { + "" != this.data.imgTempSrc && this.doUploadImg(this.data.imgTempSrc); + }, + inputBlur: function(t) { + var e = t.detail.value, a = t.currentTarget.dataset.num, r = t.currentTarget.dataset.item, o = r.templateAreaFontLength; + "" != e && o > 0 && (e = e.substr(0, o), this.data.areaList[a].templateAreaFontValue = e, + this.data.areaList[a].focus = !1, this.setData({ + areaList: this.data.areaList + })), "1" != r.templateAreaServerLink && this.getFileId(a); + }, + choosePhoto: function(t) { + var e = t.currentTarget.dataset.cur, a = t.currentTarget.dataset.item; + this.setData({ + currentIndex: e + }); + var r = a.templateAreaWidth / a.templateAreaHeight; + wx.chooseImage({ + count: 1, + sourceType: [ "album", "camera" ], + success: function(t) { + wx.navigateTo({ + url: "/packagecard/common/corpperimg/cropperimg?imgSrc=" + t.tempFiles[0].path + "&scale=" + r + }); + } + }); + }, + doUploadImg: function(a) { + var r = this; + wx.showLoading({ + title: "上传中..." + }), e.http.upload(e.urls.doUploadImg, { + path: a, + name: "image", + header: { + token: e.globalData.token + } + }).then(function(e) { + wx.hideLoading({}), e = JSON.parse(e); + var a = "areaList[" + r.data.currentIndex + "].templateAreaFile"; + r.setData(t({}, a, e.data)), wx.showToast({ + title: "上传成功", + duration: 1500 + }), r.setData({ + imgTempSrc: "", + currentIndex: 0 + }); + }).catch(function(t) { + r.setData({ + imgTempSrc: "", + currentIndex: 0 + }); + }); + }, + getPhoneNumber: function(t) { + console.log(t.detail.errMsg), console.log(t.detail.iv), console.log(t.detail.encryptedData); + }, + getNameCard: function() { + var t = this; + e.http.get(e.urls.getMyCardDetail.format({ + cardTemplateUseId: t.data.cardId + }), { + header: { + token: e.globalData.token + }, + data: {} + }).then(function(e) { + var a = e.data.areaList, r = e.data.cardTemplateUseWidth / t.data.windowWidth; + console.log(r + "===" + t.data.windowWidth), e.data.cardTemplateUseWidth = e.data.cardTemplateUseWidth / r, + e.data.cardTemplateUseHeight = e.data.cardTemplateUseHeight / r; + for (var o = 0; o < a.length; o++) a[o].templateAreaFontSize = a[o].templateAreaFontSize / r + "px", + a[o].templateAreaHeight = a[o].templateAreaHeight / r, a[o].templateAreaWidth = a[o].templateAreaWidth / r, + a[o].templateAreaDown = a[o].templateAreaDown / r, a[o].templateAreaTop = a[o].templateAreaTop / r, + a[o].templateAreaRight = a[o].templateAreaRight / r, a[o].templateAreaLeft = a[o].templateAreaLeft / r, + "1" == a[o].templateAreaFontCenter ? a[o].templateAreaFontCenter = "left" : "2" == a[o].templateAreaFontCenter ? a[o].templateAreaFontCenter = "center" : a[o].templateAreaFontCenter = "right", + "0" == a[o].templateAreaFontBold ? a[o].templateAreaFontBold = "normal" : "1" == a[o].templateAreaFontBold ? a[o].templateAreaFontBold = "bold" : a[o].templateAreaFontStyle = "italic"; + t.setData({ + cardInfo: e.data, + areaList: a + }); + }).catch(function(t) {}); + }, + saveCardIdToSyzl: function(t) { + console.log(t); + var a = { + cardSysId: t + }; + console.log(e.globalData.gridMiniCardId), e.restAjax.put(e.restAjax.path(e.apis.doUpdateCard, [ e.baseUrls.requestUrl, this.data.id ]), a, { + headers: { + token: this.data.token + } + }, function(t, e) { + console.log(e), wx.showToast({ + title: "设置成功", + icon: "success", + success: function() { + var t = getCurrentPages(); + (t.length >= 2 ? t[t.length - 2] : void 0).setData({ + isRefresh: !0 + }), wx.navigateBack({}); + } + }); + }, function(t, e) { + console.log(e); + }); + }, + saveOrgCard: function(t) { + var a = { + cardSysId: t + }; + e.restAjax.put(e.restAjax.path(e.apis.doUpdateOrg, [ e.baseUrls.requestUrl, this.data.id ]), a, { + headers: { + token: this.data.token + } + }, function(t, e) { + wx.showToast({ + title: "设置成功", + icon: "success", + success: function() { + var t = getCurrentPages(); + (t.length >= 2 ? t[t.length - 2] : void 0).setData({ + isRefresh: !0 + }), wx.navigateBack({}); + } + }); + }, function(t, e) { + console.log(e); + }); + }, + getNameCradArea: function() { + var t = this, a = []; + e.restAjax.get(e.restAjax.path("{cardUrl}app/cardtemplatearea/listcardtemplateareabytemplateid/" + t.data.cardId, [ e.tradeUrl ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, r) { + for (var o = 0; o < r.length; o++) if (r[o].focus = !1, "1" != r[o].templateAreaType) a.push(r[o]); else { + var n = parseInt(r[o].templateAreaFontSize.replace("px", "")); + n = Math.floor(750 * n / wx.getSystemInfoSync().windowWidth) + "rpx", r[o].templateAreaFontSize = n, + a.push(r[o]); + } + t.setData({ + areaList: a + }); + }, function(t, a) { + e.dialog.msg(a.msg); + }); + }, + editInfo: function(e) { + var a = e.currentTarget.dataset.num, r = e.detail.value, o = "areaList[" + a + "].templateAreaFontValue"; + this.setData(t({}, o, r)); + }, + giveFocus: function(e) { + var a = "areaList[" + e.currentTarget.dataset.cur + "].focus"; + this.setData(t({}, a, !0)); + }, + continueCreate: function() { + this.setData({ + showHide: !1 + }); + }, + backList: function() { + wx.navigateBack({ + delta: 1 + }); + }, + getUserInfo: function() { + e.restAjax.get(e.restAjax.path("{loginUrl}app/user/get-app-user", [ e.personIntroUrl ]), {}, { + headers: { + token: e.globalData.token + } + }, function(t, a) { + e.globalData.userInfo = a; + }, function(t, a) { + e.dialog.msg(a.msg); + }); + }, + getFileId: function(a) { + var r = this, o = a, n = r.data.areaList[o].templateAreaFontValue, s = r.data.areaList[o].picturesTemplateAreaId; + e.http.get(e.urls.getFileId.format({ + picturesTemplateAreaId: s + }), { + header: { + token: e.globalData.token + }, + data: { + content: n + } + }).then(function(e) { + console.log(e.data); + var a = "areaList[" + o + "].templateAreaFile"; + r.setData(t({}, a, e.data.data)); + }).catch(function(t) {}); + }, + setDefaultCard: function() { + var t = this; + e.http.put(e.urls.setDefaultCard.format({ + cardTemplateUseId: t.data.cardId + }), { + header: { + token: t.data.token + } + }).then(function(e) { + console.log(e), "200" == e.statusCode && (console.log(t.data.pageType), "org" == t.data.pageType ? t.saveOrgCard(t.data.cardId) : t.saveCardIdToSyzl(t.data.cardId)); + }).catch(function(t) {}); + }, + onLoad: function(t) { + this.setData({ + cardId: t.id, + token: e.globalData.token, + pageType: t.type, + id: t.taskId + }), console.log(this.data.pageType), this.getNameCard(); + }, + postRecord: function(t) { + e.restAjax.post(e.restAjax.path("{loginUrl}app/cardtemplateforwardingrecord/savecardtemplateforwardingrecord", [ e.tradeUrl ]), { + encryptedData: t.encryptedData, + iv: t.iv, + templateUseId: this.data.cardId, + templateFromUserId: this.data.oldToken, + templateToUserId: this.data.token + }, { + headers: { + token: this.data.token + } + }, function(t, e) { + console.log("1" + e); + }, function(t, a) { + e.dialog.msg(a.msg); + }); + }, + openPage: function() {}, + bindService: function() {} +}); \ No newline at end of file diff --git a/pages/mine/myCardDetail/myCardDetail.json b/pages/mine/myCardDetail/myCardDetail.json new file mode 100644 index 0000000..b2542c7 --- /dev/null +++ b/pages/mine/myCardDetail/myCardDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "名片详情" +} \ No newline at end of file diff --git a/pages/mine/myCardDetail/myCardDetail.wxml b/pages/mine/myCardDetail/myCardDetail.wxml new file mode 100644 index 0000000..e7c93cb --- /dev/null +++ b/pages/mine/myCardDetail/myCardDetail.wxml @@ -0,0 +1,48 @@ + + + + {{item.templateAreaFontValue}} + + + + + {{item.templateAreaFontValue}} + + + + + + 适用行业:{{cardInfo.templateIndustryName}} + + + + + + {{item.templateAreaName}} + 最多输入{{item.templateAreaFontLength}}个字符 + + + + + + + + + + {{item.templateAreaName}} + 最多输入1张图片 + + + + + + + + + + diff --git a/pages/mine/myCardDetail/myCardDetail.wxss b/pages/mine/myCardDetail/myCardDetail.wxss new file mode 100644 index 0000000..7e316f3 --- /dev/null +++ b/pages/mine/myCardDetail/myCardDetail.wxss @@ -0,0 +1,217 @@ +.card { + box-sizing: border-box; + height: 0; + position: relative; + width: 100%; + z-index: 100; +} + +.card-bgImg { + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} + +.area-box { + background: none!important; + white-space: nowrap; + z-index: 111; +} + +.area-box image { + height: 100%; + width: 100%; +} + +.card-info { + margin-top: 15rpx; + padding-bottom: 100rpx; + width: 100%; +} + +.card-title { + background: #fff; + font-size: 30rpx; + padding: 15rpx; + width: 100%; +} + +.row { + background: #fff; +} + +.row,.row-ver { + border-bottom: 1rpx solid #f5f5f5; + display: flex; +} + +.row-ver { + background-color: #fff; + flex-direction: column; + padding: 15rpx; +} + +.row-ver:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.row-ver:last-child { + padding: 7.5rpx 15rpx 15rpx; +} + +.item-title { + color: grey; + flex: 1; + font-size: 32rpx; + line-height: 50rpx; +} + +.item-title-box { + flex-direction: row; + justify-content: space-between; + margin-top: 7.5rpx; +} + +.item-input,.item-title-box { + align-items: center; + display: flex; +} + +.item-input { + box-sizing: border-box; + flex: 4; + margin-top: 15rpx; +} + +.item-input input { + color: #333; + font-size: 32rpx; + height: 50rpx; + text-align: left; + width: 100%; +} + +.item-input image { + max-width: 70%; +} + +.item-code-input image { + max-height: 160rpx; + max-width: 35%; +} + +.hide-link { + background: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1000; +} + +.hide { + background: #fff; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 90%; +} + +.hide,.hide-btn { + border-radius: 10rpx; +} + +.hide-btn { + align-items: center; + background: #1296db; + color: #fff; + display: flex; + font-size: 30rpx; + height: 60rpx; + justify-content: center; + width: 49%; +} + +.hide-text { + color: #000; + font-size: 30rpx; +} + +.hide-btn-box { + display: flex; + justify-content: space-between; +} + +.input-box { + width: 100%; +} + +.content-box { + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + padding: 15rpx; + width: 100%; +} + +.cuIcon-cameraadd { + font-size: 60rpx; +} + +.card-img-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-between; + margin-right: 40rpx; +} + +.card-img-box image { + height: 200rpx; + width: 200rpx; +} + +.hint-txt { + color: #fd9494; + font-size: 24rpx; + text-align: right; +} + +.share { + background: #fff; + bottom: 0; + left: 0; + padding: 15rpx; + position: fixed; + right: 0; + text-align: center; + z-index: 1000; +} + +.share .btn { + background: #0054bd; + border-radius: 10rpx; + color: #fff; + display: inline-block; + font-size: 28rpx; + font-weight: 400; + height: 70rpx; + line-height: 70rpx; + margin-right: 2%; + text-align: center; + width: 32%!important; +} + +.share .btn:nth-child(1) { + background: coral; +} + +.share .btn:last-child { + background: #ff2525; + margin-right: 0; +} \ No newline at end of file diff --git a/pages/mine/otherCard/othercarddetail.js b/pages/mine/otherCard/othercarddetail.js new file mode 100644 index 0000000..e59dbf7 --- /dev/null +++ b/pages/mine/otherCard/othercarddetail.js @@ -0,0 +1,574 @@ +var t, a = require("../../../@babel/runtime/helpers/defineProperty"), e = getApp(), n = wx.createInnerAudioContext(); + +Page((a(t = { + data: { + nameTxt: "名片", + dataList: [], + curIndex: 0, + speedStep: 5, + waitFlag: !1, + avatarUrl: e.globalData.userInfo.avatarUrl, + areaList: [], + cardHeight: "", + cardInfo: {}, + cardUrl: e.baseUrls.baseCardUrl, + personIntro: {}, + companyIntro: {}, + shareImg: "", + phoneTxt: "未录入", + emailTxt: "未录入", + wechateTxt: "未录入", + addressTxt: "未录入", + viewInfo: {}, + forwardCount: "", + imgUrl: e.baseUrls.baseCardUrl, + shareRecordId: "", + isShowBarCode: !1, + browUserList: [], + shareImgUrl: "", + tempUserId: "", + cardTemplateDispatchId: "", + cardTemplateUseId: "", + isShowCard: !1, + otherCardList: [], + isPlayAudio: !1, + audioId: "", + count: 3, + animationData: {}, + isShowBtn: !1 + }, + onLoad: function(t) { + this.setData({ + cardTemplateUseId: t.cardTemplateUseId + }), this.buildId(), this.getCard(); + }, + getCard: function() { + var t = this; + e.http.get(e.urls.shareCard.format({ + cardTemplateUseId: t.data.cardTemplateUseId + }), { + header: { + token: e.globalData.token + } + }).then(function(a) { + var e = a.data.areaList; + e.forEach(function(a) { + "name" == a.templateAreaSource && t.setData({ + nameTxt: a.templateAreaFontValue + }); + }), t.setData({ + cardInfo: a.data, + areaList: e, + dataList: [] + }), a.data && (t.toSaveLocalImg(a.data.cardTemplateUseDispatchPhoto), t.getBrowCardUserList(a.data.cardTemplateUseId), + t.setData({ + tempUserId: a.data.creator + }), t.getMainColumn(a.data.creator), t.getMainBaseUserInfo(a.data.creator)); + }); + }, + toSaveLocalImg: function(t) { + var a = t, e = wx.env.USER_DATA_PATH + "/indexshare.png", n = a.replace(/^data:image\/\w+;base64,/, ""); + wx.getFileSystemManager().writeFileSync(e, n, "base64"), this.setData({ + shareImgUrl: e + }); + }, + getBrowCardUserList: function(t) { + var a = this; + e.http.get(e.urls.getCardBrowUserList, { + header: { + token: e.globalData.token + }, + data: { + page: "1", + rows: "7", + cardTemplateUseId: t + } + }).then(function(t) { + t.data && a.setData({ + browUserList: t.data.rows + }); + }).catch(function(t) { + console.log(t); + }); + }, + getMainColumn: function(t) { + var a = this; + a.setData({ + dataList: [] + }), e.http.get(e.urls.getMainColumn, { + header: { + token: e.globalData.token + }, + data: { + creator: t + } + }).then(function(e) { + wx.showLoading({ + title: "加载中..." + }), a.getMainMoment(e.data, t, 0); + }).catch(function(t) { + wx.stopPullDownRefresh({}); + }); + }, + getMainMoment: function(t, a, n) { + var i = this; + n < t.length ? e.http.get(e.urls.getMainMoment.format({ + configColumnId: t[i.data.curIndex].configColumnId + }), { + header: { + token: e.globalData.token + }, + data: { + userId: a + } + }).then(function(e) { + if (e.data.length > 0) { + var n = t[i.data.curIndex], o = { + funcSwitch: "2" == n.configColumnCollect || "4" == n.configColumnCollect || "2" == n.configColumnLike && "4" == n.configColumnLike || "2" == n.configColumnDispatch || "4" == n.configColumnDispatch || "2" == n.configColumnComment || "4" == n.configColumnComment, + collectSwitch: t[i.data.curIndex].configColumnCollect, + commentSwitch: t[i.data.curIndex].configColumnComment, + shareSwitch: t[i.data.curIndex].configColumnDispatch, + likeSwitch: t[i.data.curIndex].configColumnLike, + cId: t[i.data.curIndex].configColumnId, + type: t[i.data.curIndex].configColumnType, + name: t[i.data.curIndex].configColumnName, + mode: t[i.data.curIndex].configTableMode, + list: e.data.slice(0, t[i.data.curIndex].configColumnRowCount) + }; + i.data.dataList.push(o); + } + i.setData({ + curIndex: ++i.data.curIndex + }), i.getMainMoment(t, a, i.data.curIndex); + }).catch(function(e) { + i.setData({ + curIndex: ++i.data.curIndex + }), t[i.data.curIndex] && i.getMainMoment(t, a, i.data.curIndex); + }) : (wx.hideLoading({}), wx.stopPullDownRefresh({}), i.buildMainData()); + }, + buildMainData: function() { + var t = ""; + this.data.dataList.forEach(function(a) { + a.list.forEach(function(a) { + t += a.uid + ",", a.collectCount = 0, a.collectStatus = !1, a.commentCount = 0, + a.dispatchCount = 0, a.likeCount = 0, a.likeStatus = !1, a.scansCount = 0, a.list.forEach(function(t) { + switch (t.dataType) { + case "2": + if (t.value.length > 0) { + var a = t.value.split("@"); + a.length > 1 ? t.dataMode = a[1] : t.dataMode = "1"; + var n = a[0].split(","), i = []; + n.forEach(function(t) { + var a = { + id: t, + path: e.baseUrls.baseCardUrl + t + }; + i.push(a); + }), t.valueList = i; + } + break; + + case "3": + n = t.value.split(","), i = []; + n.forEach(function(t) { + if (t.length > 0) { + var a = t.split("&"), n = "00:00"; + if (a.length > 1) { + var o = a[1], s = parseInt(o / 60), r = parseInt(o % 60); + n = (s > 9 ? s : "0" + s) + ":" + (+r > 9 ? r : "0" + r); + } + var d = { + id: a[0], + path: e.baseUrls.baseCardUrl + a[0], + isPlay: !1, + duration: 1e5, + curDuration: 0, + curDurationStr: "00:00", + totalDurationStr: n + }; + i.push(d); + } + }), t.valueList = i; + break; + + case "4": + n = t.value.split(","), i = []; + for (var o = 0; o < n.length; o++) if (n[o].length > 0) { + var s = n[o].split("&"), r = { + path: e.baseUrls.baseCardUrl + s[0], + imgPath: e.baseUrls.baseCardUrl + s[1] + }; + i.push(r); + } + t.valueList = i; + break; + + case "6": + n = t.value.split("-"), i = []; + n.forEach(function(t) { + if (t.length > 0) { + var a = t.split(","), e = { + name: "", + address: "", + latitude: a[0], + longitude: a[1] + }; + i.push(e); + } + }), t.valueList = i; + break; + + case "8": + t.dictionariesList.forEach(function(a) { + -1 != t.value.indexOf(a.dataId) && (t.selValue = a.dataName); + }); + break; + + case "9": + t.dictionariesList.forEach(function(a) { + -1 != t.value.indexOf(a.dataId) ? a.isSel = !0 : a.isSel = !1; + }); + } + }); + }); + }), this.setData({ + curIndex: 0, + dataList: this.data.dataList + }), this.getColumnContentHandle(t); + }, + getColumnContentHandle: function(t) { + var a = this; + wx.showLoading({ + title: "加载中..." + }), e.http.get(e.urls.getColumnContentHandle.format({ + projectId: "column", + businessIds: t + }), { + header: { + token: e.globalData.token + } + }).then(function(t) { + wx.hideLoading({}), t.data.forEach(function(t) { + a.data.dataList.forEach(function(a) { + a.list.forEach(function(a) { + a.uid == t.businessId && (a.collectCount = t.collectCount, a.collectStatus = t.collectStatus, + a.commentCount = t.commentCount, a.dispatchCount = t.dispatchCount, a.likeCount = t.likeCount, + a.likeStatus = t.likeStatus, a.scansCount = t.scansCount); + }); + }); + }), a.setData({ + curIndex: 0, + dataList: a.data.dataList + }); + }).catch(function(t) {}); + }, + getMainBaseUserInfo: function(t) { + var a = this; + e.http.get(e.urls.getMainMoment.format({ + configColumnId: "de7b5e22-64f9-4c60-a1f9-6ac004dfb9a8" + }), { + header: { + token: e.globalData.token + }, + data: { + userId: t + } + }).then(function(t) { + t.data.length > 0 ? (a.setData({ + isShowBtn: !0 + }), t.data[0].list.forEach(function(t) { + switch (t.name) { + case "phone": + a.setData({ + phoneTxt: t.value + }); + break; + + case "wechat": + a.setData({ + wechateTxt: t.value + }); + break; + + case "email": + a.setData({ + emailTxt: t.value + }); + break; + + case "address": + a.setData({ + addressTxt: t.value + }); + } + })) : a.setData({ + isShowBtn: !1 + }); + }).catch(function(t) { + console.log(t); + }); + }, + buildId: function() { + for (var t = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" ], a = "", e = 0; e < 36; e++) { + a += t[parseInt(61 * Math.random())]; + } + return a; + }, + showDetail: function(t) { + if (-1 != t.currentTarget.dataset.ctype.indexOf("dda5007c-5fb7-48f2-8537-3cb8ea298242")) { + var a = t.currentTarget.dataset.cid, e = t.currentTarget.dataset.id, n = t.currentTarget.dataset.like, i = "&collectSwitch=" + t.currentTarget.dataset.collect + "&likeSwitch=" + n + "&commentSwitch=" + t.currentTarget.dataset.comment + "&shareSwitch=" + t.currentTarget.dataset.share; + wx.navigateTo({ + url: "/packagecard/moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + i + }); + } + }, + onHide: function(t) { + this.setData({ + isShowCard: !1 + }), n && n.stop(); + }, + onShareAppMessage: function(t) { + wx.showShareMenu({ + withShareTicket: !0, + success: function(t) { + console.log(t); + } + }); + var a = this.buildId(); + return this.shareRecord(a), { + title: "您好,这是我的电子名片,请查看.", + path: "/pages/index/index?cardTemplateDispatchId=" + a, + imageUrl: this.data.shareImgUrl + }; + }, + shareRecord: function(t) { + var a = this; + e.http.post(e.urls.shareRecord, { + header: { + token: e.globalData.token + }, + data: { + cardTemplateUseId: a.data.cardInfo.cardTemplateUseId, + cardTemplateDispatchParentId: "", + cardTemplateDispatchId: t + } + }).then(function(t) { + a.setData({ + shareRecordId: t.data.data + }); + }); + }, + showBarCode: function() { + wx.navigateTo({ + url: "/packagecard/sharePage/cardcode?cardImg=" + this.data.cardInfo.cardTemplateUsePhotoUrl + "&id=" + this.data.cardInfo.cardTemplateUseBarcode + }); + }, + hideBarCode: function() { + this.setData({ + isShowBarCode: !1 + }), wx.showTabBar(); + }, + getForwardCount: function() { + var t = this; + e.restAjax.get(e.restAjax.path("{cardUrl}app/templateforwardingrecord/count", [ e.cardUrl ]), { + templateUseId: t.data.cardInfo.cardPersonId + }, { + headers: { + token: e.globalData.token + } + }, function(a, e) { + t.setData({ + forwardCount: e.data + }); + }, function(t, a) { + e.dialog.msg(a.msg); + }); + }, + copyText: function(t) { + var a = t.currentTarget.dataset.text; + a && wx.setClipboardData({ + data: a, + success: function() {} + }); + }, + includedCard: function() { + e.http.post(e.urls.includedCard, { + header: { + token: e.globalData.token + }, + data: { + cardTemplateUseBagId: "", + cardTemplateUseId: this.data.cardInfo.cardTemplateUseId, + cardTemplateUseStar: "", + cardTemplateUseTag: "", + cardTemplateUseTop: "" + } + }).then(function(t) { + console.log(t.data), wx.showToast({ + title: "加入卡包成功!" + }); + }).catch(function(t) {}); + }, + makeCall: function() { + var t = this.data.phoneTxt; + t && wx.makePhoneCall({ + phoneNumber: t + }); + }, + getViewCount: function() { + var t = this; + e.restAjax.get(e.restAjax.path("{cardUrl}app/templateviewrecord/getByTemplateUseId/" + t.data.cardInfo.cardPersonId, [ e.cardUrl ]), {}, { + headers: { + token: e.globalData.token + } + }, function(a, e) { + t.setData({ + viewInfo: e + }); + }, function(t, a) { + a.msg && e.dialog.msg(a.msg); + }); + } +}, "getBrowCardUserList", function(t) { + var a = this; + e.http.get(e.urls.getCardBrowUserList, { + header: { + token: e.globalData.token + }, + data: { + page: "1", + rows: "7", + cardTemplateUseId: t + } + }).then(function(t) { + t.data && a.setData({ + browUserList: t.data.rows + }); + }).catch(function(t) { + console.log(t); + }); +}), a(t, "addContact", function() { + wx.addPhoneContact({ + firstName: this.data.nameTxt, + mobilePhoneNumber: this.data.phoneNum + }); +}), a(t, "viewImg", function(t) { + var a = t.currentTarget.dataset.values, e = t.currentTarget.dataset.url, n = []; + a.forEach(function(t) { + n.push(t.path); + }), wx.previewImage({ + urls: n, + current: e + }); +}), a(t, "viewVideo", function(t) { + var a = t.currentTarget.dataset.url; + wx.previewMedia({ + sources: [ { + url: a, + type: "video" + } ] + }); +}), a(t, "play", function(t) { + var a = this, e = t.currentTarget.dataset.index, i = t.currentTarget.dataset.idx, o = t.currentTarget.dataset.i, s = t.currentTarget.dataset.a, r = t.currentTarget.dataset.item; + console.log(a.data.isPlayAudio), a.data.isPlayAudio ? (a.data.dataList.forEach(function(t) { + t.list.forEach(function(t) { + t.list.forEach(function(t) { + "3" == t.dataType && t.valueList && t.valueList.forEach(function(t) { + t.isPlay = !1, t.curDuration = 0, t.curDuationStr = "00:00"; + }); + }); + }); + }), a.setData({ + dataList: a.data.dataList + }), n.stop(), a.data.audioId != r.id && (wx.showLoading({ + title: "加载中..." + }), setTimeout(function() { + wx.hideLoading({}), n.src = a.data.dataList[e].list[i].list[o].valueList[s].path + ".mp3", + n.startTime = 0, n.autoplay = !0, a.data.dataList[e].list[i].list[o].valueList[s].isPlay = !0, + a.setData({ + dataList: a.data.dataList, + isPlayAudio: !0, + audioId: r.id + }); + }, 1500))) : (n.src = a.data.dataList[e].list[i].list[o].valueList[s].path + ".mp3", + n.startTime = 0, n.autoplay = !0, n.play(), a.data.dataList[e].list[i].list[o].valueList[s].isPlay = !0, + a.setData({ + dataList: a.data.dataList, + isPlayAudio: !0, + audioId: r.id + })), n.onPlay(function() {}), n.onCanplay(function(t) {}), n.onStop(function(t) { + console.log("onStop==="), a.data.dataList[e].list[i].list[o].valueList[s].isPlay = !1, + a.data.dataList[e].list[i].list[o].valueList[s].curDuration = 0, a.data.dataList[e].list[i].list[o].valueList[s].curDurationStr = "00:00", + a.setData({ + dataList: a.data.dataList, + isPlayAudio: !1 + }); + }), n.onEnded(function(t) { + console.log(t), console.log("播放完毕"), a.data.dataList[e].list[i].list[o].valueList[s].isPlay = !1, + a.data.dataList[e].list[i].list[o].valueList[s].curDuration = 0, a.data.dataList[e].list[i].list[o].valueList[s].curDurationStr = "00:00", + a.setData({ + dataList: a.data.dataList, + isPlayAudio: !1 + }); + }), n.onError(function(t) { + console.log("播放错误"), console.log(t), a.data.dataList[e].list[i].list[o].valueList[s].isPlay = !1, + a.data.dataList[e].list[i].list[o].valueList[s].curDuration = 0, a.data.dataList[e].list[i].list[o].valueList[s].curDurationStr = "00:00", + a.setData({ + dataList: a.data.dataList, + isPlayAudio: !1 + }); + }), n.onSeeking(function() {}); +}), a(t, "goList", function() { + wx.navigateTo({ + url: "/packagecard/cardList/cardList" + }); +}), a(t, "showMore", function(t) { + var a = t.currentTarget.dataset.item; + if ("2" == a.mode) { + var e = t.currentTarget.dataset.userid, n = t.currentTarget.dataset.idx; + wx.navigateTo({ + url: "/packagecard/moments/showlist/showlist?id=" + a.cId + "&userId=" + e + "&index=" + n + }); + } +}), a(t, "showComment", function(t) { + var a = t.currentTarget.dataset.cid, e = t.currentTarget.dataset.uid, n = t.currentTarget.dataset.like, i = "&collectSwitch=" + t.currentTarget.dataset.collect + "&likeSwitch=" + n + "&commentSwitch=" + t.currentTarget.dataset.comment + "&shareSwitch=" + t.currentTarget.dataset.share; + console.log(i), wx.navigateTo({ + url: "/packagecard/moments/momentsdetail/momentsdetail?uId=" + e + "&cId=" + a + i + }); +}), a(t, "doLike", function(t) { + var a = this, n = t.currentTarget.dataset.item, i = t.currentTarget.dataset.idx, o = t.currentTarget.dataset.index, s = ""; + s = n.likeStatus ? "取消中..." : "保存中...", wx.showLoading({ + title: s + }), e.http.post(e.urls.doSaveLike, { + header: { + token: e.globalData.token + }, + data: { + businessId: n.uid, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), a.data.dataList[o].list[i].likeStatus = !n.likeStatus, n.likeStatus ? --a.data.dataList[o].list[i].likeCount : ++a.data.dataList[o].list[i].likeCount, + a.setData({ + dataList: a.data.dataList + }); + }).catch(function(t) {}); +}), a(t, "doCollect", function(t) { + var a = this, n = t.currentTarget.dataset.item, i = t.currentTarget.dataset.idx, o = t.currentTarget.dataset.index, s = ""; + s = n.collectStatus ? "取消收藏..." : "收藏中...", wx.showLoading({ + title: s + }), e.http.post(e.urls.doSaveCollect, { + header: { + token: e.globalData.token + }, + data: { + businessId: n.uid, + projectId: "column" + } + }).then(function(t) { + wx.hideLoading({}), a.data.dataList[o].list[i].collectStatus = !n.collectStatus, + a.setData({ + dataList: a.data.dataList + }); + }).catch(function(t) {}); +}), t)); \ No newline at end of file diff --git a/pages/mine/otherCard/othercarddetail.json b/pages/mine/otherCard/othercarddetail.json new file mode 100644 index 0000000..b2542c7 --- /dev/null +++ b/pages/mine/otherCard/othercarddetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "名片详情" +} \ No newline at end of file diff --git a/pages/mine/otherCard/othercarddetail.wxml b/pages/mine/otherCard/othercarddetail.wxml new file mode 100644 index 0000000..caa4011 --- /dev/null +++ b/pages/mine/otherCard/othercarddetail.wxml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + 02/ + + + 加入卡包 + + + + 03/ + + + 名片码 + + + + + + + 拨打电话 + + {{phoneTxt}} + + + + + 添加微信 + + {{wechateTxt}} + + + + + 邮箱 + + {{emailTxt}} + + + + + 地址 + + {{addressTxt}} + + + + + + + + + + + + + {{cardInfo.cardTemplateUseScansNumber>999?'999+':cardInfo.cardTemplateUseScansNumber}} + + + + {{cardInfo.cardTemplateUseDispatchNumber>999?'999+':cardInfo.cardTemplateUseDispatchNumber}} + + + + + + + + + + + + {{item.name}} + + + 更多 + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + {{child.comment}}: + {{child.selValue}} + + + + + + + + + {{child.comment}} + + + + {{ss.dataName}} + + + + + + + + + + + 收藏 + + + + {{it.commentCount>1000?'1000+':it.commentCount}} + + + + {{it.likeCount>1000?'1000+':it.likeCount}} + + + + + + + + + + + + + + + + + + 十而百智慧名片 + + 一份信心,一份努力,一份成功;十分信心,十分努力,十分成功. + + + + + + + + + 我的 + + + + + + {{item.name}} + + + + 电话:{{item.phone}} + + + 公司:{{item.department}} + + + 地址:{{item.address}} + + + + + + + diff --git a/pages/mine/otherCard/othercarddetail.wxss b/pages/mine/otherCard/othercarddetail.wxss new file mode 100644 index 0000000..7e7b02c --- /dev/null +++ b/pages/mine/otherCard/othercarddetail.wxss @@ -0,0 +1,679 @@ +.card-container { + box-sizing: border-box; +} + +.share-btn { + background: #eee; +} + +.card { + box-sizing: border-box; + overflow: hidden; + position: relative; + width: 100%; +} + +.area-box { + white-space: nowrap; + word-break: break-all; + z-index: 111; +} + +.card-bgImg { + width: 100%; +} + +.person { + padding: 20rpx; +} + +.dynamic-container { + background-color: #fff; + border-radius: 20rpx; + margin-top: -50rpx; + padding: 20rpx; + position: relative; +} + +.dynamic-title image { + height: 30rpx; + margin-top: -4rpx; + vertical-align: middle; + width: 30rpx; +} + +.catelog-title { + justify-content: space-between; + padding: 15rpx; + position: relative; +} + +.catelog-title,.catelog-title .action { + align-items: center; + display: flex; +} + +.catelog-title .action { + justify-content: center; + max-width: 100%; +} + +.title { + color: #000; + display: inline-block; + font-size: 30rpx; + position: relative; +} + +.title text { + margin-left: 20rpx; +} + +.column-box { + flex-direction: column; +} + +.column-box,.column-box-row { + background-color: #fff; + display: flex; + width: 100%; +} + +.column-box-row { + align-items: center; + flex-direction: row; + padding: 15rpx; +} + +.column-item { + margin: 0rpx; + padding: 7.5rpx 15rpx; +} + +.column-item:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.column-item:last-child { + padding: 7.5rpx 15rpx 15rpx; +} + +.img-item { + border-radius: 5rpx; + width: 100%; +} + +.img-item:last-child,.img-item:nth-child(1) { + padding: 7.5rpx 0rpx; +} + +.column-content { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 2px 2px #f0f0f0; + display: flex; + flex-direction: column; + width: 100%; + z-index: 2; +} + +.intro-title image,.serve-title image { + height: 30rpx; + margin-top: -4px; + vertical-align: middle; + width: 28rpx; +} + +.person-content { + background: #fff; + border-radius: 20rpx; + color: #000; + font-size: 30rpx; + letter-spacing: 2rpx; + line-height: 40rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; + word-break: break-all; +} + +.company-title { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; +} + +.company-title image { + height: 140rpx; + width: 140rpx; +} + +.company-name { + align-items: center; + display: flex; + font-size: 34rpx; + height: 140rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 520rpx; +} + +.company-content { + background: #fff; + border-radius: 20rpx; + margin-top: -30rpx; + padding: 20rpx; + position: relative; +} + +.company-content image { + border-radius: 20rpx; + height: 300rpx; + width: 100%; +} + +.company .person-content { + margin-top: 0; +} + +.dynamic-title { + display: block; + margin: 0 auto; + width: 710rpx; +} + +.dynamic-box { + background: #fff; + border-radius: 20rpx; + height: 400rpx; + margin-bottom: 20rpx; + overflow: hidden; + position: relative; +} + +.dynamic-box image { + height: 400rpx; + width: 100%; +} + +.dynamic-text { + background: rgba(0,0,0,.6); + bottom: 0; + color: #fff; + font-size: 30rpx; + left: 0; + line-height: 60rpx; + padding: 0 10rpx; + position: absolute; + right: 0; +} + +.person-info { + border-bottom: 1px solid #eee; + display: flex; + justify-content: space-between; + padding-bottom: 20rpx; +} + +.avatar { + border-radius: 50%; + height: 120rpx; + overflow: hidden; + width: 120rpx; +} + +.avatar image { + height: 100%; + width: 100%; +} + +.person-name { + width: 530rpx; +} + +.name { + color: #000; + font-size: 32rpx; + margin: 15rpx 0 10rpx; +} + +.time { + color: #b2b2b2; +} + +.dynamic-content { + margin: 20rpx 0; +} + +.dynamic-img { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + position: relative; +} + +.dynamic-img image { + height: 160rpx; + margin-bottom: 10rpx; + margin-right: 2%; + width: 32%; +} + +.dynamic-img image:nth-child(3n) { + margin-right: 0; +} + +.dynamic-img-text { + background: rgba(0,0,0,.6); + bottom: 3rpx; + color: #fff; + font-size: 32rpx; + left: 0; + line-height: 70rpx; + padding: 0 20rpx; + position: absolute; + right: 0; +} + +.dynamic-good { + display: flex; + justify-content: space-between; + margin: 10rpx 0; +} + +.good-count { + color: #333; + font-size: 28rpx; +} + +.good-btn image { + height: 40rpx; + vertical-align: top; + width: 40rpx; +} + +.dynamic-reply { + background: #eee; + margin-top: 15rpx; + padding: 15rpx; +} + +.reply { + color: #000; + font-size: 32rpx; + margin-bottom: 5rpx; +} + +.reply-name { + display: inline; + font-weight: 700; +} + +.dynamic-reply-input { + margin-top: 10rpx; +} + +.dynamic-reply-input input { + border-bottom: 1px solid #eee; + height: 60rpx; + width: 100%; +} + +.creat-card { + align-items: center; + background: #e6b980; + border-radius: 50%; + bottom: 20rpx; + box-sizing: border-box; + flex-direction: column; + height: 140rpx; + justify-content: center; + padding: 20rpx; + position: fixed; + right: 20rpx; + width: 140rpx; + z-index: 100; +} + +.creat-card image { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 80rpx; +} + +.share-save { + display: flex; + justify-content: space-between; + text-align: center; +} + +.share-btn { + background: none; + border: 1px solid #e6b980; + color: #1296db; + font-weight: 400; +} + +.save-btn { + background: #1296db; + border: 1px solid #1296db; + color: #fff; + font-weight: 400; +} + +.bottom-btn { + margin-top: 20rpx; + padding: 0 20rpx; + white-space: nowrap; + width: 100%; +} + +.phone-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.wechate-box .icon { + height: 30rpx; + vertical-align: top; + width: 35rpx; +} + +.email-box .icon { + height: 30rpx; + vertical-align: top; + width: 30rpx; +} + +.bottom-btn-box { + border: 1px solid #ddd; + border-radius: 10rpx; + box-sizing: border-box; + display: inline-block; + line-height: 30rpx; + margin-right: 10rpx; + min-width: 32%; + padding: 20rpx; +} + +.bottom-text { + margin-top: 10rpx; +} + +.good,.top-box { + width: 100%; +} + +.good { + background-color: #fff; + display: flex; + justify-content: space-between; + padding: 15rpx; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.good-avatar { + font-size: 0; +} + +.good-click { + display: flex; +} + +.view-count { + border-right: 1px solid grey; + justify-content: center; +} + +.view-count,.view-count-no { + align-items: center; + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; +} + +.view-count-no { + margin-left: 15rpx; +} + +.good-avatar image { + border-radius: 50%; + height: 100%; + width: 100%; +} + +.good-click image { + height: 38rpx; + width: 38rpx; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.movie-item { + height: 280rpx; + padding-bottom: 0; + width: 100%; +} + +.avatar-list { + border: 2px solid #fff; + border-radius: 50%; + display: inline-block; + height: 45rpx; + margin-left: -15rpx; + position: relative; + vertical-align: top; + width: 45rpx; +} + +.avatar-list:first-child { + margin-left: 0; +} + +.mid { + background: #fff; + position: relative; +} + +.mid,.mid-box { + display: flex; + width: 100%; +} + +.mid-box { + align-items: left; + background-color: #fff; + border: 2rpx solid #eac390; + border-radius: 10rpx; + flex: 1; + flex-direction: column; + font-weight: 400; + justify-content: left; + padding: 15rpx; +} + +.mid-box:nth-child(1) { + background: #fff; +} + +.mid-box:nth-child(2) { + margin-left: 15rpx; +} + +.mid-box:last-child { + border: none; + border-radius: 10rpx; + margin-left: 15rpx; +} + +.mid-box image { + height: 48rpx; + width: 48rpx; +} + +.mid-box-text { + color: #000; +} + +.mid-box-text,.mid-box-text-white { + font-size: 28rpx; + font-weight: 700; + text-align: left; +} + +.mid-box-text-white { + color: #fff; +} + +.mid-btn { + background: #fff; + border: 1rpx solid #ebebeb; + border-radius: 15rpx; + box-shadow: 10rpx 10rpx 20rpx 20rpx #e4e4e426; + flex-direction: column; + flex-wrap: nowrap; + justify-content: center; + margin-top: 15rpx; + position: relative; + width: 100%; +} + +.mid-btn,.mid-btn-box { + display: flex; +} + +.mid-btn-box { + align-items: center; + box-sizing: border-box; + flex-direction: row; + flex-shrink: 0; + justify-content: space-between; +} + +.mid-btn-box:nth-child(1) { + padding: 15rpx 15rpx 7.5rpx; +} + +.mid-btn-box:nth-child(2),.mid-btn-box:nth-child(3) { + padding: 7.5rpx 15rpx; +} + +.mid-btn-box:nth-child(4) { + padding: 7.5rpx 15rpx 15rpx; +} + +.mid-btn-title { + align-items: center; + display: flex; + flex: 3; + flex-direction: row; + justify-content: flex-start; +} + +.mid-btn-title .image { + height: 48rpx; + width: 48rpx; +} + +.movie-box { + align-items: center; + display: flex; + flex-direction: row; + justify-content: center; +} + +.movie-box,.movie-box image { + border-radius: 10rpx; + height: 350rpx; + width: 100%; +} + +.mid-btn-title text { + color: #333; + font-size: 28rpx; + margin-left: 15rpx; +} + +.mid-btn-box image { + height: 80rpx; + width: 80rpx; +} + +.mid-btn-text { + width: 200rpx; +} + +.text-top { + color: #000; + font-size: 30rpx; + line-height: 45rpx; +} + +.text-bottom { + color: #898989; + font-size: 26rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.bar-code { + background: rgba(0,0,0,.6); +} + +.bar-code,.bar-code-tr { + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 999; +} + +.bar-code-tr { + background: transparent; +} + +.bar-code .content { + align-items: center; + background: #fff; + border-radius: 10rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + left: 50%; + max-width: 96%; + min-height: 45%; + min-width: 60%; + padding: 20rpx; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.code-title { + font-weight: 700; +} + +.code-title,.code-txt { + color: #000; + font-size: 32rpx; +} + +.bar-code image { + height: 300rpx; + width: 300rpx; +} \ No newline at end of file diff --git a/pages/neighbor/circle/circleDetail.js b/pages/neighbor/circle/circleDetail.js new file mode 100644 index 0000000..518d27e --- /dev/null +++ b/pages/neighbor/circle/circleDetail.js @@ -0,0 +1,227 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + neighborCircleId: "", + circleDetail: {}, + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + userIcon: "", + userName: "", + reply: "", + goodCount: 0, + isClickedGood: "no", + isGetFocus: !1, + placeholder: "写评论", + replyTo: "", + replyUserName: "", + isLoading: !1 + }, + getCircleDetai: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getCircleDetail, [ e.baseUrls.requestUrl, t.data.neighborCircleId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + a.photo && (a.photo = a.photo.split(",")), t.setData({ + circleDetail: a + }); + }, function(e, t) { + console.log(t); + }); + }, + doReplyCircle: function() { + var t = this; + if (!t.data.isLoading) { + var a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + neighborCircleId: t.data.neighborCircleId, + userName: t.data.userName + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitCircleReply, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.setData({ + isLoading: !1 + }), wx.showToast({ + title: "回复成功!", + icon: "success" + }), t.getReplyList(), t.setData({ + reply: "", + replyTo: "", + replyUserName: "", + placeholder: "讨论一下" + })); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + getReplyList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getCircleReplyList, [ e.baseUrls.requestUrl ]), { + neighborCircleId: t.data.neighborCircleId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + replyList: a + }); + }, function(e, t) { + console.log(t); + }); + }, + clickGood: function() { + var t = this, a = { + headPortrait: t.data.userIcon, + userName: t.data.userName, + neighborCircleId: t.data.neighborCircleId + }; + e.restAjax.post(e.restAjax.path(e.apis.circleClickGood, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.getGoodCount(), t.getIsClicked()), console.log(a); + }, function(e, t) { + console.log(t); + }); + }, + getGoodCount: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getCircleGoodCount, [ e.baseUrls.requestUrl ]), { + neighborCircleId: t.data.neighborCircleId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + goodCount: a.data + }), console.log(a); + }, function(e, t) { + console.log(t); + }); + }, + getIsClicked: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.circleIsClicked, [ e.baseUrls.requestUrl, t.data.neighborCircleId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + isClickedGood: a + }), console.log(a); + }, function(e, t) { + console.log(t); + }); + }, + toggleGood: function() { + "yes" == this.data.isClickedGood ? this.cancelGood() : this.clickGood(); + }, + cancelGood: function() { + var t = this; + e.restAjax.delete(e.restAjax.path(e.apis.cancelGood, [ e.baseUrls.requestUrl, t.data.neighborCircleId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.getIsClicked(), t.getGoodCount()), console.log(a); + }, function(e, t) { + console.log(t); + }); + }, + getFocus: function(e) { + var t = e.currentTarget.dataset.user, a = e.currentTarget.dataset.id, o = e.currentTarget.dataset.name; + console.log(a), this.setData({ + isGetFocus: !0, + placeholder: "回复" + t + ":", + replyTo: a, + replyUserName: o + }); + }, + inputBlur: function() { + this.data.reply || this.setData({ + placeholder: "讨论一下", + isGetFocus: !1 + }); + }, + doReply: function() { + this.data.replyTo ? this.doReplyReply() : this.doReplyCircle(); + }, + doReplyReply: function() { + var t = this; + if (!t.data.isLoading) { + var a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + userName: t.data.userName, + neighborCircleId: t.data.neighborCircleId, + replyCommentId: t.data.replyTo, + replyNeighborCircleCommentId: t.data.replyTo, + replyUserName: t.data.replyUserName + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitCircleReply, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.setData({ + isLoading: !1 + }), wx.showToast({ + title: "评论成功!", + icon: "success" + }), t.getReplyList(), t.setData({ + reply: "", + replyTo: "", + replyUserName: "", + placeholder: "讨论一下" + })); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + viewImg: function(e) { + for (var t = this.data.serviceUrl + this.data.baseImgUrl + e.currentTarget.dataset.id, a = [], o = 0; o < this.data.circleDetail.photo.length; o++) { + var r = this.data.serviceUrl + this.data.baseImgUrl + this.data.circleDetail.photo[o]; + a.push(r); + } + wx.previewImage({ + current: t, + urls: a + }); + }, + onLoad: function(t) { + this.setData({ + neighborCircleId: t.neighborCircleId, + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + token: e.globalData.token + }), this.getCircleDetai(), this.getReplyList(), this.getGoodCount(), this.getIsClicked(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/circle/circleDetail.json b/pages/neighbor/circle/circleDetail.json new file mode 100644 index 0000000..0874e03 --- /dev/null +++ b/pages/neighbor/circle/circleDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "邻里圈" +} \ No newline at end of file diff --git a/pages/neighbor/circle/circleDetail.wxml b/pages/neighbor/circle/circleDetail.wxml new file mode 100644 index 0000000..e0f205a --- /dev/null +++ b/pages/neighbor/circle/circleDetail.wxml @@ -0,0 +1,54 @@ + + + + + + + {{goodCount}} + + + {{circleDetail.content}} + {{circleDetail.problemTypeName}} + + + + + + + + + + + + + + + + + 回复 + + + + + {{item.content}} + + + {{child.userName}} 回复 {{child.replyUserName}} : {{child.content}} + + + + + + diff --git a/pages/neighbor/circle/circleDetail.wxss b/pages/neighbor/circle/circleDetail.wxss new file mode 100644 index 0000000..8cb2db8 --- /dev/null +++ b/pages/neighbor/circle/circleDetail.wxss @@ -0,0 +1,167 @@ +.help-detail { + background-color: #fff; + padding: 20rpx; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + border-radius: 50%; + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-right: 10rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.talk-content { + font-size: 32rpx; + line-height: 40rpx; + margin-bottom: 20rpx; +} + +.help-type { + margin: 10rpx 0; +} + +.help-date,.help-type { + color: #bbb; + font-size: 28rpx; +} + +.explain { + background-color: #fff; + margin-top: 20rpx; + padding: 20rpx; +} + +.explain-title { + font-size: 32rpx; + font-weight: 700; + margin-bottom: 10rpx; +} + +.explain-detail { + font-size: 30rpx; + line-height: 60rpx; + min-height: 300rpx; +} + +.answer { + background-color: #fff; + border-top: 1px solid #ddd; + bottom: 0; + left: 0; + padding: 35rpx 20rpx; + position: fixed; + right: 0; +} + +.answer input { + background-color: #f0f0f0; + border-radius: 40rpx; + box-sizing: border-box; + font-size: 32rpx; + height: 70rpx; + padding: 0 20rpx; + width: 100%; +} + +.reply { + background-color: #fff; + margin-bottom: 140rpx; + margin-top: 20rpx; + padding: 20rpx; +} + +.reply-title { + font-size: 32rpx; + font-weight: 700; +} + +.reply-box { + border-bottom: 1px solid #ddd; + padding: 20rpx 0; +} + +.reply-box:last-child { + border-bottom: none; +} + +.photo-box { + display: inline-block; + height: 180rpx; + margin-bottom: 15rpx; + margin-right: 2%; + overflow: hidden; + position: relative; + text-align: center; + width: 32%; +} + +.photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-one { + height: auto; + max-height: 600rpx; + width: 50%; +} + +.photo-one image { + max-width: 100%; +} + +.photo-four image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.photo-four:nth-child(3) { + margin-right: 2%; +} + +.photo-more image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.reply-row { + background-color: #f7f7f7; + line-height: 60rpx; + padding: 0 10rpx; + word-break: break-all; +} + +.reply-row text { + font-weight: 700; +} \ No newline at end of file diff --git a/pages/neighbor/circle/circleList.js b/pages/neighbor/circle/circleList.js new file mode 100644 index 0000000..63bfb30 --- /dev/null +++ b/pages/neighbor/circle/circleList.js @@ -0,0 +1,47 @@ +var t = getApp(); + +Page({ + data: { + token: t.globalData.token, + circleList: [], + page: { + page: 1, + rows: 10 + }, + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl + }, + checkDetail: function(t) { + var e = t.currentTarget.dataset.id; + wx.navigateTo({ + url: "./circleDetail?neighborCircleId=" + e + }); + }, + getCircleList: function() { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getCircleList, [ t.baseUrls.requestUrl ]), e.data.page, { + headers: { + token: t.globalData.token + } + }, function(t, o) { + for (var a = 0; a < o.rows.length; a++) o.rows[a].photo && (o.rows[a].photo = o.rows[a].photo.split(",")); + e.setData({ + circleList: o.rows + }); + }, function(t, e) { + console.log(e); + }); + }, + onLoad: function(e) { + this.setData({ + token: t.globalData.token + }), this.getCircleList(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/circle/circleList.json b/pages/neighbor/circle/circleList.json new file mode 100644 index 0000000..0874e03 --- /dev/null +++ b/pages/neighbor/circle/circleList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "邻里圈" +} \ No newline at end of file diff --git a/pages/neighbor/circle/circleList.wxml b/pages/neighbor/circle/circleList.wxml new file mode 100644 index 0000000..ba69c16 --- /dev/null +++ b/pages/neighbor/circle/circleList.wxml @@ -0,0 +1,22 @@ + + + + + + {{item.content}} + + + + + + + + + + diff --git a/pages/neighbor/circle/circleList.wxss b/pages/neighbor/circle/circleList.wxss new file mode 100644 index 0000000..cf3b348 --- /dev/null +++ b/pages/neighbor/circle/circleList.wxss @@ -0,0 +1,76 @@ +page { + background-color: #fff; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.talk-content { + font-size: 30rpx; + line-height: 40rpx; + margin-bottom: 20rpx; +} + +.talk-box { + border-bottom: 1px solid #f9fafc; + padding: 20rpx 0; +} + +.talk-box:last-child { + border-bottom: none; +} + +.talk-count { + color: #bbb; + display: flex; + font-size: 28rpx; + justify-content: space-between; + margin-top: 10rpx; +} + +.photo-box { + display: inline-block; + height: 150rpx; + margin-bottom: 15rpx; + margin-right: 2%; + text-align: center; + width: 32%; +} + +.photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-box image { + height: 100%; +} \ No newline at end of file diff --git a/pages/neighbor/circle/new.js b/pages/neighbor/circle/new.js new file mode 100644 index 0000000..8ebdf16 --- /dev/null +++ b/pages/neighbor/circle/new.js @@ -0,0 +1,161 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + helpType: [], + index: 0, + helpTypeAll: [], + helpSelected: "", + content: "", + contentSupplement: "", + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + imageList: [], + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + videoId: "", + communityId: "", + areaCode: "", + isLoading: !1 + }, + bindPickerChange: function(e) { + this.setData({ + index: e.detail.value, + helpSelected: this.data.helpTypeAll[e.detail.value - 1].dataId + }); + }, + submitHelp: function() { + var a = this; + if (!a.data.isLoading) { + var t = ""; + if (a.data.imageList.length > 0) for (var o = 0; o < a.data.imageList.length; o++) o != a.data.imageList.length - 1 ? t += a.data.imageList[o] + "," : t += a.data.imageList[o]; + var i = { + content: a.data.content, + contentSupplement: a.data.contentSupplement, + photo: t, + video: a.data.videoId, + videoCover: "", + headPortrait: a.data.userIcon, + nickName: a.data.userName, + communityId: a.data.communityId, + areaCode: a.data.areaCode + }; + a.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitNeighborCircle, [ e.baseUrls.requestUrl ]), i, { + headers: { + token: e.globalData.token + } + }, function(e, t) { + "200" == e && (wx.showToast({ + title: "发布成功!", + icon: "success" + }), setTimeout(function() { + a.setData({ + isLoading: !1 + }), wx.navigateBack({ + delta: 1 + }); + }, 1500)), console.log(e); + }, function(e, t) { + console.log(t), a.setData({ + isLoading: !1 + }); + }); + } + }, + uploadImage: function() { + var a = this; + a.data.isLoading || wx.chooseImage({ + count: 9 - a.data.imageList.length, + sourceType: [ "album", "camera" ], + success: function(t) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + for (var o = function(o) { + n = t.tempFiles[o].path, e.restAjax.file(e.restAjax.path(e.apis.uploadImg, [ e.baseUrls.serviceUrl ]), n, "image", { + headers: { + token: e.globalData.token + } + }, function(e, i) { + if ("200" == e) { + var n = JSON.parse(i).data, s = a.data.imageList; + s.push(n), a.setData({ + imageList: s + }), o == t.tempFiles.length - 1 && a.setData({ + isLoading: !1 + }), wx.hideToast(); + } + }, function(e, t) { + console.log(t), a.setData({ + isLoading: !1 + }); + }); + }, i = 0; i < t.tempFiles.length; i++) { + var n; + o(i); + } + } + }); + }, + uploadVideo: function() { + var a = this; + a.data.isLoading || (a.setData({ + isLoading: !0 + }), wx.chooseVideo({ + sourceType: [ "album", "camera" ], + success: function(t) { + e.restAjax.file(e.restAjax.path(e.apis.uploadVideo, [ e.baseUrls.serviceUrl ]), t.tempFilePath, "video", { + headers: { + token: e.globalData.token + } + }, function(e, t) { + if ("200" == e) { + a.setData({ + isLoading: !1 + }); + var o = JSON.parse(t).data; + a.setData({ + videoId: o + }); + } + }, function(e, t) { + console.log(t), a.setData({ + isLoading: !1 + }); + }); + } + })); + }, + deleteImg: function(e) { + var a = e.currentTarget.dataset.cur, t = this.data.imageList; + t.splice(a, 1), this.setData({ + imageList: t + }); + }, + deleteVideo: function() { + this.setData({ + videoId: "" + }); + }, + onLoad: function(a) { + this.setData({ + communityId: a.communityId, + areaCode: a.areaCode, + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + token: e.globalData.token + }); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/circle/new.json b/pages/neighbor/circle/new.json new file mode 100644 index 0000000..0874e03 --- /dev/null +++ b/pages/neighbor/circle/new.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "邻里圈" +} \ No newline at end of file diff --git a/pages/neighbor/circle/new.wxml b/pages/neighbor/circle/new.wxml new file mode 100644 index 0000000..27a4f3e --- /dev/null +++ b/pages/neighbor/circle/new.wxml @@ -0,0 +1,27 @@ + + 邻里圈 + + + + + + + + + + 添加照片 + + + + + + + + + + + 添加视频 + + + + + 发布 + diff --git a/pages/neighbor/circle/new.wxss b/pages/neighbor/circle/new.wxss new file mode 100644 index 0000000..2c67ced --- /dev/null +++ b/pages/neighbor/circle/new.wxss @@ -0,0 +1,155 @@ +.new-help { + background-color: #fff; + margin-bottom: 100rpx; + padding: 20rpx; +} + +.new-title { + font-size: 32rpx; + font-weight: 700; +} + +.new-textarea,.new-title { + margin-bottom: 20rpx; +} + +.new-textarea input { + height: 60rpx; +} + +.new-textarea input,.new-textarea textarea { + border-bottom: 1px solid #ddd; + font-size: 32rpx; + width: 100%; +} + +.new-textarea textarea { + height: 400rpx; +} + +.new-textarea picker { + border-bottom: 1px solid #ddd; + font-size: 32rpx; + line-height: 60rpx; +} + +.submit { + margin: 20rpx auto; + width: 710rpx; +} + +.submit-btn { + background-color: rgba(36,40,46,.8); + border-radius: 16rpx; + height: 80rpx; + line-height: 80rpx; + margin-top: 0; + text-align: center; +} + +.upload-title { + font-size: 32rpx; + font-weight: 700; + line-height: 80rpx; +} + +.add { + align-items: center; + background-color: rgba(0,0,0,.05); + border: 1px solid hsla(0,0%,73%,.1); + box-sizing: border-box; + color: rgba(36,40,46,.5); + display: inline-flex; + flex-direction: column; + font-size: 30rpx; + height: 150rpx; + justify-content: center; + margin-bottom: 20rpx; + padding: 10rpx; + vertical-align: top; + width: 150rpx; +} + +.add-icon { + font-size: 40rpx; +} + +.image { + background-color: #fff; + display: inline-block; + height: 150rpx; + margin-bottom: 20rpx; + margin-right: 2%; + position: relative; + text-align: center; + vertical-align: top; + width: 32%; +} + +.image:nth-child(3n) { + margin-right: 0; +} + +.image image { + height: 100%; +} + +.add.video { + background-color: #000; + height: auto; + position: relative; + width: 100%; +} + +.add:nth-child(3n) { + margin-right: 0; +} + +.add image { + height: 100%; +} + +.delete { + height: 30rpx!important; + position: absolute; + right: -15rpx; + top: -15rpx; + width: 30rpx; +} + +.help-row { + background-color: #fff; + color: rgba(36,40,46,.5); + display: flex; + font-size: 32rpx; + height: 80rpx; + justify-content: space-between; + line-height: 80rpx; + margin: 20rpx 0; + padding: 0 20rpx; +} + +.help-row picker { + color: #24282e; +} + +.help-desc { + background-color: #fff; + padding: 20rpx; +} + +.desc-title { + color: rgba(36,40,46,.5); + font-size: 32rpx; + margin-bottom: 15rpx; +} + +.help-desc textarea { + font-size: 30rpx; + height: 300rpx; + width: 100%; +} + +.upload-file { + margin-top: 20rpx; +} \ No newline at end of file diff --git a/pages/neighbor/help/helpDetail.js b/pages/neighbor/help/helpDetail.js new file mode 100644 index 0000000..ebab764 --- /dev/null +++ b/pages/neighbor/help/helpDetail.js @@ -0,0 +1,164 @@ +var e = getApp(); + +Page({ + data: { + sourceUrl: e.baseUrls.sourceUrl, + token: e.globalData.token, + neighborId: "", + helpDetail: {}, + reply: "", + userIcon: "", + userName: "", + replyList: [], + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + isGetFocus: !1, + placeholder: "写评论", + replyTo: "", + replyUserName: "", + childNeighborId: "", + isLoading: !1 + }, + getHelpDetail: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getHelpDetail, [ e.baseUrls.requestUrl, t.data.neighborId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + a.photo && (a.photo = a.photo.split(",")), t.setData({ + helpDetail: a + }); + }, function(e, t) { + console.log(t); + }); + }, + doReplyHelp: function() { + var t = this; + if (!t.data.isLoading) { + var a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + neighborId: t.data.neighborId, + userName: t.data.userName + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.doReplyHelp, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.setData({ + isLoading: !1 + }), wx.showToast({ + title: "回复成功!", + icon: "success" + }), t.getRelyList(), t.setData({ + reply: "" + })); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + getRelyList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getReplyList, [ e.baseUrls.requestUrl ]), { + neighborId: t.data.neighborId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + replyList: a + }), console.log(a); + }, function(e, t) { + console.log(t); + }); + }, + viewImg: function(e) { + for (var t = this.data.serviceUrl + this.data.baseImgUrl + e.currentTarget.dataset.id, a = [], o = 0; o < this.data.helpDetail.photo.length; o++) { + var s = this.data.serviceUrl + this.data.baseImgUrl + this.data.helpDetail.photo[o]; + a.push(s); + } + wx.previewImage({ + current: t, + urls: a + }); + }, + getFocus: function(e) { + var t = e.currentTarget.dataset.user, a = e.currentTarget.dataset.id, o = e.currentTarget.dataset.name, s = e.currentTarget.dataset.neighbor; + console.log(s), this.setData({ + isGetFocus: !0, + placeholder: "回复" + t + ":", + replyTo: a, + replyUserName: o, + childNeighborId: s + }); + }, + inputBlur: function() { + this.data.reply || this.setData({ + placeholder: "讨论一下", + isGetFocus: !1 + }); + }, + doReply: function() { + this.data.replyTo ? this.doReplyReply() : this.doReplyHelp(); + }, + doReplyReply: function() { + var t = this; + if (!t.data.isLoading) { + var a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + userName: t.data.userName, + replyCommentId: t.data.replyTo, + replyUserName: t.data.replyUserName, + neighborId: t.data.childNeighborId, + replyNeighborCommentId: t.data.replyTo + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.doReplyHelp, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.setData({ + isLoading: !1 + }), wx.showToast({ + title: "评论成功!", + icon: "success" + }), t.getRelyList(), t.setData({ + reply: "", + replyTo: "", + replyUserName: "", + placeholder: "讨论一下" + })); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + onLoad: function(t) { + this.setData({ + neighborId: t.neighborId, + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + token: e.globalData.token + }), this.getHelpDetail(), this.getRelyList(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/help/helpDetail.json b/pages/neighbor/help/helpDetail.json new file mode 100644 index 0000000..d3b097f --- /dev/null +++ b/pages/neighbor/help/helpDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "邻里互助" +} \ No newline at end of file diff --git a/pages/neighbor/help/helpDetail.wxml b/pages/neighbor/help/helpDetail.wxml new file mode 100644 index 0000000..2c8e761 --- /dev/null +++ b/pages/neighbor/help/helpDetail.wxml @@ -0,0 +1,49 @@ + + + + + {{helpDetail.content}} + {{helpDetail.problemTypeName}} + + + + + + + + + + + + + + + + + 回复 + + + + + {{item.content}} + + + {{child.userName}} 回复 {{child.replyUserName}} : {{child.content}} + + + + + + diff --git a/pages/neighbor/help/helpDetail.wxss b/pages/neighbor/help/helpDetail.wxss new file mode 100644 index 0000000..21c0b88 --- /dev/null +++ b/pages/neighbor/help/helpDetail.wxss @@ -0,0 +1,166 @@ +.help-detail { + background-color: #fff; + padding: 20rpx; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + border-radius: 50%; + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.talk-content { + font-size: 32rpx; + line-height: 40rpx; + margin-bottom: 20rpx; +} + +.help-type { + margin: 10rpx 0; +} + +.help-date,.help-type { + color: #bbb; + font-size: 28rpx; +} + +.explain { + background-color: #fff; + margin-top: 20rpx; + padding: 20rpx; +} + +.explain-title { + font-size: 32rpx; + font-weight: 700; + margin-bottom: 10rpx; +} + +.explain-detail { + font-size: 30rpx; + line-height: 60rpx; + min-height: 300rpx; +} + +.answer { + background-color: #fff; + border-top: 1px solid #ddd; + bottom: 0; + left: 0; + padding: 35rpx 20rpx; + position: fixed; + right: 0; +} + +.answer input { + background-color: #f0f0f0; + border-radius: 40rpx; + box-sizing: border-box; + font-size: 32rpx; + height: 70rpx; + padding: 0 20rpx; + width: 100%; +} + +.reply { + background-color: #fff; + margin-bottom: 140rpx; + margin-top: 10rpx; + padding: 20rpx; +} + +.reply-title { + font-size: 32rpx; + font-weight: 700; +} + +.reply-box { + border-bottom: 1px solid #ddd; + padding: 20rpx 0; +} + +.reply-box:last-child { + border-bottom: none; +} + +.photo-box { + display: inline-block; + height: 180rpx; + margin-bottom: 15rpx; + margin-right: 2%; + overflow: hidden; + position: relative; + text-align: center; + width: 32%; +} + +.photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-one { + height: auto; + max-height: 600rpx; + width: 50%; +} + +.photo-one image { + max-width: 100%; +} + +.photo-four image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.photo-four:nth-child(3) { + margin-right: 2%; +} + +.photo-more image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.reply-row { + background-color: #f7f7f7; + line-height: 60rpx; + padding: 0 10rpx; + word-break: break-all; +} + +.reply-row text { + font-weight: 700; +} \ No newline at end of file diff --git a/pages/neighbor/help/helpList.js b/pages/neighbor/help/helpList.js new file mode 100644 index 0000000..dddc186 --- /dev/null +++ b/pages/neighbor/help/helpList.js @@ -0,0 +1,63 @@ +var e = require("../../../@babel/runtime/helpers/defineProperty"), t = getApp(); + +Page({ + data: { + token: t.globalData.token, + helpList: [], + page: { + page: 1, + rows: 10, + communityId: "" + }, + haveMore: !0, + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl + }, + getHelpList: function() { + var a = this; + t.restAjax.get(t.restAjax.path(t.apis.getHelpList, [ t.baseUrls.requestUrl ]), a.data.page, { + headers: { + token: t.globalData.token + } + }, function(t, o) { + for (var s = 0; s < o.rows.length; s++) o.rows[s].photo && (o.rows[s].photo = o.rows[s].photo.split(",")); + if (1 == a.data.page.page) a.setData({ + helpList: o.rows + }); else if (o.rows.length > 0) { + for (var n = a.data.helpList, r = 0; r < o.rows.length; r++) n.push(o.rows[r]); + a.setData({ + helpList: n + }); + } else wx.showToast({ + title: "暂无更多", + icon: "none" + }), a.setData(e({}, "page.page", a.data.page.page - 1)); + o.rows.length < 10 && a.setData({ + haveMore: !1 + }); + }, function(e, t) { + console.log(t); + }); + }, + checkHelpDetail: function(e) { + var t = e.currentTarget.dataset.id; + wx.navigateTo({ + url: "./helpDetail?neighborId=" + t + }); + }, + loadMore: function() { + this.setData(e({}, "page.page", this.data.page.page + 1)), this.getHelpList(); + }, + onLoad: function(a) { + var o; + this.setData((e(o = {}, "page.communityId", a.communityId), e(o, "token", t.globalData.token), + o)), this.getHelpList(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/help/helpList.json b/pages/neighbor/help/helpList.json new file mode 100644 index 0000000..d3b097f --- /dev/null +++ b/pages/neighbor/help/helpList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "邻里互助" +} \ No newline at end of file diff --git a/pages/neighbor/help/helpList.wxml b/pages/neighbor/help/helpList.wxml new file mode 100644 index 0000000..a58fb6b --- /dev/null +++ b/pages/neighbor/help/helpList.wxml @@ -0,0 +1,27 @@ + + + + + + {{item.nickName}} + {{item.gmtCreate}} + + + {{item.content}} + + + + + + + + + + + + + + + + +加载更多 diff --git a/pages/neighbor/help/helpList.wxss b/pages/neighbor/help/helpList.wxss new file mode 100644 index 0000000..6630a5c --- /dev/null +++ b/pages/neighbor/help/helpList.wxss @@ -0,0 +1,120 @@ +page { + background-color: #fff; +} + +.help-container { + padding: 0 20rpx; +} + +.help-box { + border-bottom: 1px solid #f9fafc; + padding: 20rpx 0; +} + +.help-user { + display: flex; +} + +.help-user image { + border-radius: 50%; + height: 100rpx; + margin-right: 20rpx; + width: 100rpx; +} + +.user-name { + font-size: 30rpx; + font-weight: 700; + margin: 10rpx 0; +} + +.user-time { + color: #999; + font-size: 28rpx; +} + +.help-content { + color: #101010; + font-size: 32rpx; + margin-top: 20rpx; +} + +.new { + background-color: #ff4949; + border-radius: 50%; + bottom: 40rpx; + color: #fff; + font-size: 80rpx; + height: 120rpx; + line-height: 120rpx; + position: fixed; + right: 40rpx; + text-align: center; + width: 120rpx; +} + +.help-photo { + margin-top: 20rpx; +} + +.help-photo-box { + display: inline-block; + height: 150rpx; + margin-bottom: 20rpx; + margin-right: 2%; + overflow: hidden; + position: relative; + text-align: center; + width: 32%; +} + +.help-photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-one { + height: auto; + max-height: 600rpx; + width: 50%; +} + +.photo-one image { + max-width: 100%; +} + +.photo-four image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.photo-four:nth-child(3) { + margin-right: 2%; +} + +.photo-more image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.help-video { + margin-top: 20rpx; +} + +.help-video,.help-video video { + width: 100%; +} + +.help-more { + font-size: 32rpx; + line-height: 70rpx; +} + +.load-more { + font-size: 32rpx; + line-height: 80rpx; + text-align: center; +} \ No newline at end of file diff --git a/pages/neighbor/help/new.js b/pages/neighbor/help/new.js new file mode 100644 index 0000000..9252a2a --- /dev/null +++ b/pages/neighbor/help/new.js @@ -0,0 +1,187 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + helpType: [], + index: 0, + helpTypeAll: [], + helpSelected: "", + content: "", + contentSupplement: "", + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + imageList: [], + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + videoId: "", + communityId: "", + areaCode: "", + isLoading: !1 + }, + bindPickerChange: function(e) { + this.setData({ + index: e.detail.value, + helpSelected: this.data.helpTypeAll[e.detail.value - 1].dataId + }); + }, + getHelpType: function() { + var a = this; + e.restAjax.get(e.restAjax.path(e.apis.getDictionary, [ e.baseUrls.serviceUrl, "4fcf52f9-2e05-4cca-8966-83f0232f22e8" ]), { + areaCode: a.data.locationCode + }, { + headers: { + token: a.data.token + } + }, function(e, t) { + for (var o = [ "请选择互助类型" ], i = 0; i < t.length; i++) o.push(t[i].dataName); + a.setData({ + helpType: o, + helpTypeAll: t + }), console.log(t); + }, function(e, a) { + console.log(a); + }); + }, + submitHelp: function() { + var a = this; + if (!a.data.isLoading) { + if (0 == a.data.index) return void wx.showToast({ + title: "请选择发布类型", + icon: "error" + }); + var t = ""; + if (a.data.imageList.length > 0) for (var o = 0; o < a.data.imageList.length; o++) o != a.data.imageList.length - 1 ? t += a.data.imageList[o] + "," : t += a.data.imageList[o]; + var i = { + content: a.data.content, + contentSupplement: a.data.contentSupplement, + photo: t, + problemTypeId: a.data.helpSelected, + problemTypeName: a.data.helpTypeAll[a.data.index - 1].dataName, + video: a.data.videoId, + videoCover: "", + headPortrait: a.data.userIcon, + nickName: a.data.userName, + communityId: a.data.communityId, + areaCode: a.data.areaCode + }; + a.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitHelp, [ e.baseUrls.requestUrl ]), i, { + headers: { + token: a.data.token + } + }, function(e, t) { + "200" == e && (wx.showToast({ + title: "发布成功!", + icon: "success" + }), setTimeout(function() { + a.setData({ + isLoading: !1 + }), wx.navigateBack({ + delta: 1 + }); + }, 1500)), console.log(e); + }, function(e, t) { + console.log(t), a.setData({ + isLoading: !1 + }); + }); + } + }, + uploadImage: function() { + var a = this; + a.data.isLoading || (a.setData({ + isLoading: !0 + }), wx.chooseImage({ + count: 9 - a.data.imageList.length, + sourceType: [ "album", "camera" ], + success: function(t) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + for (var o = function(o) { + n = t.tempFiles[o].path, e.restAjax.file(e.restAjax.path(e.apis.uploadImg, [ e.baseUrls.serviceUrl ]), n, "image", { + headers: { + token: e.globalData.token + } + }, function(e, i) { + if ("200" == e) { + var n = JSON.parse(i).data, s = a.data.imageList; + s.push(n), a.setData({ + imageList: s + }), o == t.tempFiles.length - 1 && a.setData({ + isLoading: !1 + }), wx.hideToast(); + } + }, function(e, t) { + console.log(t), a.setData({ + isLoading: !1 + }); + }); + }, i = 0; i < t.tempFiles.length; i++) { + var n; + o(i); + } + } + })); + }, + uploadVideo: function() { + var a = this; + a.data.isLoading || (a.setData({ + isLoading: !0 + }), wx.chooseVideo({ + sourceType: [ "album", "camera" ], + success: function(t) { + e.restAjax.file(e.restAjax.path(e.apis.uploadVideo, [ e.baseUrls.serviceUrl ]), t.tempFilePath, "video", { + headers: { + token: e.globalData.token + } + }, function(e, t) { + if ("200" == e) { + a.setData({ + isLoading: !1 + }); + var o = JSON.parse(t).data; + a.setData({ + videoId: o + }); + } + }, function(e, t) { + console.log(t), a.setData({ + isLoading: !1 + }); + }); + } + })); + }, + deleteImg: function(e) { + var a = e.currentTarget.dataset.cur, t = this.data.imageList; + t.splice(a, 1), this.setData({ + imageList: t + }); + }, + deleteVideo: function() { + this.setData({ + videoId: "" + }); + }, + onLoad: function(a) { + this.getHelpType(), this.setData({ + communityId: a.communityId, + areaCode: a.areaCode, + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + token: e.globalData.token + }); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/help/new.json b/pages/neighbor/help/new.json new file mode 100644 index 0000000..d3b097f --- /dev/null +++ b/pages/neighbor/help/new.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "邻里互助" +} \ No newline at end of file diff --git a/pages/neighbor/help/new.wxml b/pages/neighbor/help/new.wxml new file mode 100644 index 0000000..057aadb --- /dev/null +++ b/pages/neighbor/help/new.wxml @@ -0,0 +1,35 @@ + + 发布类型 + + + {{helpType[index]}} + + + + + 问题描述 + + + + + + + + + + 添加照片 + + + + + + + + + + + 添加视频 + + + + + 发布 + diff --git a/pages/neighbor/help/new.wxss b/pages/neighbor/help/new.wxss new file mode 100644 index 0000000..2c67ced --- /dev/null +++ b/pages/neighbor/help/new.wxss @@ -0,0 +1,155 @@ +.new-help { + background-color: #fff; + margin-bottom: 100rpx; + padding: 20rpx; +} + +.new-title { + font-size: 32rpx; + font-weight: 700; +} + +.new-textarea,.new-title { + margin-bottom: 20rpx; +} + +.new-textarea input { + height: 60rpx; +} + +.new-textarea input,.new-textarea textarea { + border-bottom: 1px solid #ddd; + font-size: 32rpx; + width: 100%; +} + +.new-textarea textarea { + height: 400rpx; +} + +.new-textarea picker { + border-bottom: 1px solid #ddd; + font-size: 32rpx; + line-height: 60rpx; +} + +.submit { + margin: 20rpx auto; + width: 710rpx; +} + +.submit-btn { + background-color: rgba(36,40,46,.8); + border-radius: 16rpx; + height: 80rpx; + line-height: 80rpx; + margin-top: 0; + text-align: center; +} + +.upload-title { + font-size: 32rpx; + font-weight: 700; + line-height: 80rpx; +} + +.add { + align-items: center; + background-color: rgba(0,0,0,.05); + border: 1px solid hsla(0,0%,73%,.1); + box-sizing: border-box; + color: rgba(36,40,46,.5); + display: inline-flex; + flex-direction: column; + font-size: 30rpx; + height: 150rpx; + justify-content: center; + margin-bottom: 20rpx; + padding: 10rpx; + vertical-align: top; + width: 150rpx; +} + +.add-icon { + font-size: 40rpx; +} + +.image { + background-color: #fff; + display: inline-block; + height: 150rpx; + margin-bottom: 20rpx; + margin-right: 2%; + position: relative; + text-align: center; + vertical-align: top; + width: 32%; +} + +.image:nth-child(3n) { + margin-right: 0; +} + +.image image { + height: 100%; +} + +.add.video { + background-color: #000; + height: auto; + position: relative; + width: 100%; +} + +.add:nth-child(3n) { + margin-right: 0; +} + +.add image { + height: 100%; +} + +.delete { + height: 30rpx!important; + position: absolute; + right: -15rpx; + top: -15rpx; + width: 30rpx; +} + +.help-row { + background-color: #fff; + color: rgba(36,40,46,.5); + display: flex; + font-size: 32rpx; + height: 80rpx; + justify-content: space-between; + line-height: 80rpx; + margin: 20rpx 0; + padding: 0 20rpx; +} + +.help-row picker { + color: #24282e; +} + +.help-desc { + background-color: #fff; + padding: 20rpx; +} + +.desc-title { + color: rgba(36,40,46,.5); + font-size: 32rpx; + margin-bottom: 15rpx; +} + +.help-desc textarea { + font-size: 30rpx; + height: 300rpx; + width: 100%; +} + +.upload-file { + margin-top: 20rpx; +} \ No newline at end of file diff --git a/pages/neighbor/neighbor.js b/pages/neighbor/neighbor.js new file mode 100644 index 0000000..5f5dfda --- /dev/null +++ b/pages/neighbor/neighbor.js @@ -0,0 +1,165 @@ +var t = require("../../@babel/runtime/helpers/defineProperty"), e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + array: [], + index: 0, + communityList: [], + communitySelected: "", + areaCode: "", + page: { + page: 1, + rows: 5, + communityId: "" + }, + helpList: [], + circleList: [], + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + tab: "1", + isShowMenu: !1 + }, + checkHelpMore: function() { + "1" == this.data.tab ? wx.navigateTo({ + url: "./help/helpList?communityId=" + this.data.communitySelected + }) : wx.navigateTo({ + url: "./circle/circleList" + }); + }, + checkHelpDetail: function(t) { + var e = t.currentTarget.dataset.id; + wx.navigateTo({ + url: "./help/helpDetail?neighborId=" + e + }); + }, + bindPickerChange: function(e) { + var a; + this.setData((a = { + index: e.detail.value, + communitySelected: this.data.communityList[e.detail.value].communityId + }, t(a, "page.communityId", this.data.communityList[e.detail.value].communityId), + t(a, "areaCode", this.data.communityList[e.detail.value].areaCode), a)), wx.setStorage({ + data: e.detail.value, + key: "communityIndex" + }), "1" == this.data.tab ? this.getHelpList() : this.getCircleList(); + }, + newHelp: function() { + wx.navigateTo({ + url: "./help/new?communityId=" + this.data.communitySelected + "&areaCode=" + this.data.areaCode + }); + }, + newCircle: function() { + wx.navigateTo({ + url: "./circle/new?communityId=" + this.data.communitySelected + "&areaCode=" + this.data.areaCode + }); + }, + getHelpList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getHelpList, [ e.baseUrls.requestUrl ]), t.data.page, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var n = 0; n < a.rows.length; n++) a.rows[n].photo && (a.rows[n].photo = a.rows[n].photo.split(",")); + t.setData({ + helpList: a.rows + }); + }, function(t, e) { + console.log(e); + }); + }, + getCircleList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getCircleList, [ e.baseUrls.requestUrl ]), t.data.page, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var n = 0; n < a.rows.length; n++) a.rows[n].photo && (a.rows[n].photo = a.rows[n].photo.split(",")); + t.setData({ + helpList: a.rows + }); + }, function(t, e) { + console.log(e); + }); + }, + checkCircleDetail: function(t) { + var e = t.currentTarget.dataset.id; + wx.navigateTo({ + url: "./circle/circleDetail?neighborCircleId=" + e + }); + }, + getMyCommunity: function() { + var a = this; + e.restAjax.get(e.restAjax.path(e.apis.mycommunity, [ e.baseUrls.requestUrl ]), {}, { + headers: { + token: a.data.token + } + }, function(e, n) { + if (n.length > 0) { + for (var i, o = [], s = 0; s < n.length; s++) o.push(n[s].communityName); + a.setData((i = { + communityList: n, + array: o, + communitySelected: wx.getStorageSync("communityIndex") ? n[wx.getStorageSync("communityIndex")].communityId : n[0].communityId + }, t(i, "page.communityId", wx.getStorageSync("communityIndex") ? n[wx.getStorageSync("communityIndex")].communityId : n[0].communityId), + t(i, "areaCode", wx.getStorageSync("communityIndex") ? n[wx.getStorageSync("communityIndex")].areaCode : n[0].areaCode), + i)), "1" == a.data.tab ? a.getHelpList() : a.getCircleList(); + } else wx.showToast({ + title: "请先在首页加入您的社区", + icon: "none" + }), setTimeout(function() { + wx.switchTab({ + url: "../index/index" + }); + }, 1500); + }, function(t, e) { + console.log(e); + }); + }, + newContent: function() { + "1" == this.data.tab ? this.newHelp() : this.newCircle(); + }, + changeTab: function(e) { + var a = e.currentTarget.dataset.tab; + a != this.data.tab && ("1" == a ? (this.setData(t({ + tab: a + }, "page.page", 1)), this.getHelpList()) : (this.setData(t({ + tab: a + }, "page.page", 1)), this.getCircleList())); + }, + onLoad: function(t) { + this.setData({ + token: e.globalData.token + }); + }, + onReady: function() {}, + onShow: function() { + this.getMyCommunity(), this.getMenuIsShow(); + }, + getMenuIsShow: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getBtnIsShow, [ e.baseUrls.requestUrl, "neighbor" ]), null, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + null != a && null != a ? t.setData({ + isShowMenu: 1 == a.isShow + }) : t.setData({ + isShowMenu: !1 + }); + }, function(e, a) { + t.setData({ + isShowMenu: !1 + }); + }); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/neighbor/neighbor.json b/pages/neighbor/neighbor.json new file mode 100644 index 0000000..b2bf29b --- /dev/null +++ b/pages/neighbor/neighbor.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "热点推送" +} \ No newline at end of file diff --git a/pages/neighbor/neighbor.wxml b/pages/neighbor/neighbor.wxml new file mode 100644 index 0000000..26a3be6 --- /dev/null +++ b/pages/neighbor/neighbor.wxml @@ -0,0 +1,81 @@ + + + + + + + {{array[index]}} + + + + #邻里互助 + #助人为乐 + #求助 + + 和睦的邻里关系,对于能够为邻的人是一种幸福,同时也是社会和谐的基础。 + + + + + 邻里互助 + 邻里圈 + + + + + + + {{item.nickName}} {{item.problemTypeName}} + + {{item.gmtCreate}} + + + {{item.content}} + + + + + + + + + + + + + + + + + + + + {{item.nickName}} + {{item.gmtCreate}} + + + {{item.content}} + + + + + + + + + + + + + + + + + + + 查看更多 + + + + + diff --git a/pages/neighbor/neighbor.wxss b/pages/neighbor/neighbor.wxss new file mode 100644 index 0000000..89de6ee --- /dev/null +++ b/pages/neighbor/neighbor.wxss @@ -0,0 +1,211 @@ +.neighbor-top { + position: relative; +} + +.top-bg,.top-bg image { + width: 100%; +} + +.neighbor-info { + background-color: rgba(0,0,0,.6); + bottom: 0; + color: #fff; + left: 0; + padding: 20rpx; + position: absolute; + right: 0; + top: 0; +} + +.neighbor-info picker { + font-size: 40rpx; + margin-bottom: 30rpx; +} + +.neighbor-info .warm-tip { + font-size: 30rpx; +} + +.topic { + margin-bottom: 20rpx; +} + +.topic-box { + background-color: hsla(0,0%,100%,.35); + border-radius: 24rpx; + display: inline-block; + font-size: 30rpx; + height: 45rpx; + line-height: 45rpx; + margin-right: 20rpx; + padding: 0 15rpx; +} + +.neighbor-container { + background-color: #fff; + border-top-left-radius: 30rpx; + border-top-right-radius: 30rpx; + margin-top: -100rpx; + padding: 20rpx 20rpx 0; + position: relative; +} + +.tab-box { + color: #797979; + display: inline-block; + font-size: 32rpx; + line-height: 60rpx; + margin-right: 30rpx; +} + +.tab-box.active { + border-bottom: 2px solid #ff4949; + color: #000; + font-weight: 700; +} + +.help-box { + border-bottom: 1px solid #f9fafc; + padding: 20rpx 0; +} + +.help-user { + display: flex; +} + +.help-user image { + border-radius: 50%; + height: 100rpx; + margin-right: 20rpx; + width: 100rpx; +} + +.user-name { + font-size: 30rpx; + font-weight: 700; + margin: 10rpx 0; +} + +.user-name text { + background-color: #ff4949; + border-radius: 24rpx; + color: #fff; + font-size: 26rpx; + font-weight: 400; + padding: 5rpx 15rpx; +} + +.user-time { + color: #999; + font-size: 28rpx; +} + +.help-content { + color: #101010; + font-size: 32rpx; + margin-top: 20rpx; +} + +.new { + align-items: center; + background-color: #ff4949; + border-radius: 50%; + bottom: 40rpx; + color: #fff; + display: flex; + font-size: 0; + height: 120rpx; + justify-content: center; + position: fixed; + right: 40rpx; + width: 120rpx; +} + +.new image { + height: 60rpx; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.help-photo { + margin-top: 20rpx; +} + +.help-photo-box { + display: inline-block; + height: 180rpx; + margin-bottom: 20rpx; + margin-right: 2%; + overflow: hidden; + position: relative; + text-align: center; + width: 32%; +} + +.help-photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-one { + height: auto; + max-height: 600rpx; + width: 50%; +} + +.photo-one image { + max-width: 100%; +} + +.photo-four image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.photo-four:nth-child(3) { + margin-right: 2%; +} + +.photo-more image { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); +} + +.help-video { + margin-top: 20rpx; + width: 65%; +} + +.help-video video { + width: 100%; +} + +.help-more { + font-size: 32rpx; + line-height: 70rpx; +} + +.no-data { + padding: 50rpx 0; + text-align: center; +} + +.no-data image { + width: 300rpx; +} + +.neighbor-tab { + margin-bottom: 30rpx; +} + +.picker image { + height: 28rpx; + margin-top: -10rpx; + vertical-align: middle; + width: 28rpx; +} \ No newline at end of file diff --git a/pages/news/newsDetail.js b/pages/news/newsDetail.js new file mode 100644 index 0000000..2deaeaf --- /dev/null +++ b/pages/news/newsDetail.js @@ -0,0 +1,200 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + newsId: "", + newsDetail: {}, + reply: "", + userIcon: "", + userName: "", + replyList: [], + isCollect: "no", + isGetFocus: !1, + placeholder: "写评论", + replyTo: "", + replyUserName: "", + isLoading: !1 + }, + getNewsDetail: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getNewsDetail, [ e.baseUrls.requestUrl, t.data.newsId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + newsDetail: a + }); + }, function(e, t) { + console.log(t); + }); + }, + doReplyNews: function() { + var t = this; + if (!t.data.isLoading) { + if (!t.data.reply) return void wx.showToast({ + title: "评论不能为空", + icon: "error" + }); + var a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + userName: t.data.userName, + newsId: t.data.newsId + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitNewsReply, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.getReplyList(), t.setData({ + reply: "", + isLoading: !1 + })); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + getReplyList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getNewsReplyList, [ e.baseUrls.requestUrl ]), { + newsId: t.data.newsId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + replyList: a + }); + }, function(e, t) { + console.log(t); + }); + }, + getIsCollect: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.isCollectNews, [ e.baseUrls.requestUrl, t.data.newsId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + isCollect: a + }); + }, function(e, t) { + console.log(t); + }); + }, + toggleCollect: function() { + "no" == this.data.isCollect ? this.collectNews() : this.cancelCollect(); + }, + collectNews: function() { + var t = this; + e.restAjax.post(e.restAjax.path(e.apis.doCollectNews, [ e.baseUrls.requestUrl ]), { + newsId: t.data.newsId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (wx.showToast({ + title: "收藏成功!", + icon: "success" + }), t.getIsCollect()); + }, function(e, t) { + console.log(t); + }); + }, + cancelCollect: function() { + var t = this; + e.restAjax.delete(e.restAjax.path(e.apis.cancelCollectNews, [ e.baseUrls.requestUrl, t.data.newsId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (wx.showToast({ + title: "已取消收藏!", + icon: "success" + }), t.getIsCollect()); + }, function(e, t) { + console.log(t); + }); + }, + getFocus: function(e) { + var t = e.currentTarget.dataset.user, a = e.currentTarget.dataset.id, s = e.currentTarget.dataset.name; + this.setData({ + isGetFocus: !0, + placeholder: "回复" + t + ":", + replyTo: a, + replyUserName: s + }); + }, + inputBlur: function() { + this.data.reply || this.setData({ + placeholder: "讨论一下", + isGetFocus: !1 + }); + }, + doReply: function() { + this.data.replyTo ? this.doReplyReply() : this.doReplyNews(); + }, + doReplyReply: function() { + var t = this; + if (!t.data.isLoading) { + var a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + userName: t.data.userName, + newsId: t.data.newsId, + commentId: t.data.replyTo, + replyCommentId: t.data.replyTo, + replyNewsCommentId: t.data.replyTo, + replyUserName: t.data.replyUserName + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitNewsReply, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (wx.showToast({ + title: "评论成功!", + icon: "success" + }), t.getReplyList(), t.setData({ + reply: "", + replyTo: "", + replyUserName: "", + placeholder: "讨论一下", + isLoading: !1 + })); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + onLoad: function(t) { + this.setData({ + newsId: t.newsId, + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + token: e.globalData.token + }), this.getNewsDetail(), this.getReplyList(), this.getIsCollect(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/news/newsDetail.json b/pages/news/newsDetail.json new file mode 100644 index 0000000..2992ee6 --- /dev/null +++ b/pages/news/newsDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "新闻" +} \ No newline at end of file diff --git a/pages/news/newsDetail.wxml b/pages/news/newsDetail.wxml new file mode 100644 index 0000000..6d3d04b --- /dev/null +++ b/pages/news/newsDetail.wxml @@ -0,0 +1,38 @@ + + + {{newsDetail.title}} + + 来源:{{newsDetail.source}} + {{newsDetail.sendTime}} + + + + + + + 评论区 + + + + + {{item.content}} + + + {{child.userName}} 回复 {{child.replyUserName}} : {{child.content}} + + + + + + + + + + + diff --git a/pages/news/newsDetail.wxss b/pages/news/newsDetail.wxss new file mode 100644 index 0000000..79a6ca6 --- /dev/null +++ b/pages/news/newsDetail.wxss @@ -0,0 +1,130 @@ +page { + background-color: #fff; +} + +.news-title { + border-bottom: 1px solid #fafafc; + margin-bottom: 20rpx; + padding-bottom: 20rpx; +} + +.title { + font-size: 36rpx; + font-weight: 700; + margin-bottom: 10rpx; +} + +.from-date { + color: #bbb; + display: flex; + font-size: 28rpx; + justify-content: space-between; +} + +.news-content { + border-bottom: 1px solid #fafafc; + font-size: 30rpx; + line-height: 60rpx; + min-height: 600rpx; +} + +.comment { + margin: 20rpx 0 130rpx; +} + +.comment-title { + font-size: 32rpx; + font-weight: 700; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.comment-box { + border-bottom: 1px solid #fafafc; + margin-top: 20rpx; + padding-bottom: 20rpx; +} + +.talk-content { + font-size: 30rpx; + line-height: 40rpx; +} + +.talk-time { + color: #bbb; + font-size: 28rpx; + margin-top: 10rpx; +} + +.do-reply { + background-color: #fff; + border-top: 1px solid #fafafc; + bottom: 0; + display: flex; + left: 0; + padding: 35rpx 20rpx; + position: fixed; + right: 0; + z-index: 100; +} + +.do-reply input { + background-color: #f0f0f0; + border-radius: 40rpx; + box-sizing: border-box; + height: 60rpx; + padding: 0 20rpx; + width: 80%; +} + +.collect { + height: 60rpx; + text-align: center; + width: 20%; +} + +.collect image { + height: 100%; +} + +.reply-row { + background-color: #f7f7f7; + line-height: 60rpx; + padding: 0 10rpx; + word-break: break-all; +} + +.reply-row text { + font-weight: 700; +} \ No newline at end of file diff --git a/pages/news/newsList.js b/pages/news/newsList.js new file mode 100644 index 0000000..8dbcdcf --- /dev/null +++ b/pages/news/newsList.js @@ -0,0 +1,86 @@ +var e = require("../../@babel/runtime/helpers/defineProperty"), t = getApp(); + +Page({ + data: { + token: t.globalData.token, + sourceUrl: t.baseUrls.sourceUrl, + newsType: [], + curType: "", + page: { + page: 1, + rows: 10, + newsTypeId: "", + areaCode: "" + }, + newsList: [], + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl + }, + getNewsType: function() { + var a = this; + t.restAjax.get(t.restAjax.path(t.apis.getNewsType, [ t.baseUrls.requestUrl ]), { + showArea: "6dcbb862-4b48-4dca-aee1-d78fd76adc05" + }, { + headers: { + token: a.data.token + } + }, function(t, s) { + var n; + a.setData((e(n = { + newsType: s + }, "page.newsTypeId", s[0].newsTypeId), e(n, "curType", s[0].newsTypeId), n)), a.getNewsList(); + }, function(e, t) { + console.log(t); + }); + }, + changeType: function(t) { + var a, s = t.currentTarget.dataset.id; + this.setData((e(a = { + curType: s + }, "page.newsTypeId", s), e(a, "page.page", 1), a)), this.getNewsList(); + }, + getNewsList: function() { + var a = this; + t.restAjax.get(t.restAjax.path(t.apis.getNewsList, [ t.baseUrls.requestUrl ]), a.data.page, { + headers: { + token: a.data.token + } + }, function(t, s) { + for (var n = 0; n < s.rows.length; n++) s.rows[n].photo && (s.rows[n].photo = s.rows[n].photo.split(",")); + if (1 == a.data.page.page) a.setData({ + newsList: s.rows + }); else if (s.rows.length > 0) { + for (var o = a.data.newsList, r = 0; r < s.rows.length; r++) o.push(s.rows[r]); + a.setData({ + newsList: o + }); + } else wx.showToast({ + title: "暂无更多", + icon: "none" + }), a.setData(e({}, "page.page", a.data.page.page - 1)); + }, function(e, t) { + console.log(t); + }); + }, + checkDetail: function(e) { + var t = e.currentTarget.dataset.id; + wx.navigateTo({ + url: "./newsDetail?newsId=" + t + }); + }, + onLoad: function(a) { + this.setData(e({ + token: t.globalData.token + }, "page.areaCode", wx.getStorageSync("areaCode") ? wx.getStorageSync("areaCode") : "")), + this.getNewsType(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() { + this.setData(e({}, "page.page", this.data.page.page + 1)), this.getNewsList(); + }, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/news/newsList.json b/pages/news/newsList.json new file mode 100644 index 0000000..04c0b6f --- /dev/null +++ b/pages/news/newsList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "服务公告" +} \ No newline at end of file diff --git a/pages/news/newsList.wxml b/pages/news/newsList.wxml new file mode 100644 index 0000000..fadaddd --- /dev/null +++ b/pages/news/newsList.wxml @@ -0,0 +1,54 @@ + + {{item.typeName}} + + + + + + {{item.title}} + + + + + {{item.sendTime}} + + + + + + + {{item.title}} + {{item.sendTime}} + + + + + {{item.title}} + {{item.sendTime}} + + + + + + + + {{item.title}} + + + + + + + {{item.sendTime}} + + + + {{item.title}} + + {{item.sendTime}} + + + + + + diff --git a/pages/news/newsList.wxss b/pages/news/newsList.wxss new file mode 100644 index 0000000..81da2b7 --- /dev/null +++ b/pages/news/newsList.wxss @@ -0,0 +1,121 @@ +.news-type,page { + background-color: #fff; +} + +.news-type { + border-bottom: 1px solid #ddd; + display: flex; + flex-wrap: nowrap; + left: 0; + overflow-x: auto; + position: fixed; + right: 0; + top: 0; + z-index: 100; +} + +.type-box { + flex-shrink: 0; + font-size: 32rpx; + line-height: 80rpx; + text-align: center; + width: 25%; +} + +.type-box.active { + color: #f55054; +} + +.news-list { + margin-top: 80rpx; + padding: 20rpx; +} + +.news-box { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; + padding: 20rpx 0; +} + +.news-img { + height: 150rpx; + overflow: hidden; + text-align: center; + width: 30%; +} + +.news-img image { + border-radius: 10rpx; + height: 100%; +} + +.news-info { + width: 68%; +} + +.news-title { + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + display: -webkit-box; + font-size: 32rpx; + font-weight: 700; + overflow: hidden; +} + +.news-date { + color: #bbb; + font-size: 30rpx; + margin-top: 15rpx; +} + +.style3,.style4 { + flex-direction: column; +} + +.style3 .news-img,.style3 .news-info,.style4 .news-info { + width: 100%; +} + +.style3 .news-img { + height: auto; + margin-top: 10rpx; +} + +.style3 .news-img image,.style5 .news-info { + width: 100%; +} + +.style5 { + flex-direction: column; +} + +.news-img-container .img-box { + border-radius: 10rpx; + display: inline-block; + height: 150rpx; + margin-right: 2%; + text-align: center; + width: 32%; +} + +.img-box image { + height: 100%; +} + +.news-img-container .img-box:last-child { + margin-right: 0; +} + +.news-img-container { + margin-top: 10rpx; +} + +.no-data { + margin-top: 150rpx; + text-align: center; +} + +.no-data image { + width: 300rpx; +} \ No newline at end of file diff --git a/pages/report/report.js b/pages/report/report.js new file mode 100644 index 0000000..b3e2b0e --- /dev/null +++ b/pages/report/report.js @@ -0,0 +1,431 @@ +var e = getApp(), t = require("../../utils/WSCoordinate.js"); + +Page({ + data: { + sourceUrl: e.baseUrls.sourceUrl, + typeAll: [], + typeArray: [], + typeIdx: 0, + typeSelected: "", + typeSelectedCode: "", + typeSelectedName: "", + type2All: [], + type2Array: [ "请选择上级类型" ], + type2Idx: 0, + type2Selected: "", + type2SelectedName: "", + areaAll: [], + areaArray: [], + areaIdx: 0, + areaSelected: "", + areaSelectedName: "", + villageAll: [], + villageArray: [], + villageIdx: 0, + villageSelected: "", + villageSelectedName: "", + committeeAll: [], + committeeArray: [], + committeeIdx: 0, + committeeSelected: "", + committeeSelectedName: "", + recodePath: "", + recorderManager: wx.getRecorderManager(), + baseImgUrl: e.baseUrls.baseImgUrl, + caseUrl: e.baseUrls.caseUrl, + imageList: [], + videoId: "", + audioId: "", + latitude: "", + longitude: "", + reportAddress: "", + reportContent: "", + reportInfo: { + bGId: "", + casePartsObjId: "123", + casePartsObjName: "123", + caseTypeCode1: "", + caseTypeCode2: "", + caseTypeName1: "", + caseTypeName2: "", + reportAddress: "", + reportAreaCod: "", + reportAreaName: "例如北京市 / xx区 / xx街道 / xx", + reportAudio: "", + reportContent: "", + reportLat: "", + reportLng: "", + reportPhotos: "", + reportVideo: "" + }, + isLoading: !1 + }, + getArea: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getArea, [ e.baseUrls.caseUrl, "110889" ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + for (var o = [ "请选择区县" ], i = 0; i < a.length; i++) o.push(a[i].areaName); + t.setData({ + areaAll: a, + areaArray: o + }); + }, function(e, t) { + console.log(t); + }); + }, + getVillage: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getChildArea, [ e.baseUrls.caseUrl, t.data.areaSelected ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + for (var o = [ "请选择乡镇" ], i = 0; i < a.length; i++) o.push(a[i].areaName); + t.setData({ + villageAll: a, + villageArray: o + }); + }, function(e, t) { + console.log(t); + }); + }, + getCommittee: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getChildArea, [ e.baseUrls.caseUrl, t.data.villageSelected ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + for (var o = [ "请选择委员会" ], i = 0; i < a.length; i++) o.push(a[i].areaName); + t.setData({ + committeeAll: a, + committeeArray: o + }); + }, function(e, t) { + console.log(t); + }); + }, + getCaseType: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.caseType, [ e.baseUrls.caseUrl ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + for (var o = [ "请选择事件类型" ], i = 0; i < a.length; i++) o.push(a[i].name); + t.setData({ + typeAll: a, + typeArray: o + }); + }, function(e, t) { + console.log(t); + }); + }, + getCaseTypeChild: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.caseTypeChild + "/" + t.data.typeSelected, [ e.baseUrls.caseUrl ]), {}, { + headers: { + token: e.globalData.token + } + }, function(e, a) { + for (var o = [ "请选择事件类型" ], i = 0; i < a.length; i++) o.push(a[i].typeName); + t.setData({ + type2All: a, + type2Array: o + }); + }, function(e, t) { + console.log(t); + }); + }, + bindPickerChange: function(e) { + 0 != e.detail.value ? (this.setData({ + typeIdx: e.detail.value, + typeSelected: this.data.typeAll[e.detail.value - 1].id, + typeSelectedCode: this.data.typeAll[e.detail.value - 1].code, + typeSelectedName: this.data.typeAll[e.detail.value - 1].name + }), this.getCaseTypeChild()) : this.setData({ + typeIdx: 0, + typeSelected: "", + type2Array: [] + }); + }, + bindCaseTypeChange: function(e) { + 0 != e.detail.value ? this.setData({ + type2Idx: e.detail.value, + type2Selected: this.data.type2All[e.detail.value - 1].typeCode, + type2SelectedName: this.data.type2All[e.detail.value - 1].typeName + }) : this.setData({ + type2Idx: 0, + type2Selected: "" + }); + }, + bindAreaPickerChange: function(e) { + 0 != e.detail.value ? (this.setData({ + areaIdx: e.detail.value, + areaSelected: this.data.areaAll[e.detail.value - 1].areaCode, + areaSelectedName: this.data.areaAll[e.detail.value - 1].areaName + }), this.getVillage()) : this.setData({ + areaIdx: 0, + areaSelected: "", + villageArray: [], + committeeArray: [] + }); + }, + bindVillagePickerChange: function(e) { + 0 != e.detail.value ? (this.setData({ + villageIdx: e.detail.value, + villageSelected: this.data.villageAll[e.detail.value - 1].areaId, + villageSelectedName: this.data.villageAll[e.detail.value - 1].areaName + }), this.getCommittee()) : this.setData({ + villageIdx: 0, + villageSelected: "", + committeeArray: [] + }); + }, + bindCommitteePickerChange: function(e) { + 0 != e.detail.value ? this.setData({ + committeeIdx: e.detail.value, + committeeSelected: this.data.committeeAll[e.detail.value - 1].areaId, + committeeSelectedName: this.data.committeeAll[e.detail.value - 1].areaName + }) : this.setData({ + committeeIdx: 0, + committeeSelected: "" + }); + }, + recordVoice: function(e) { + this.setData({ + startTouch: e.touches[0] + }); + this.data.recorderManager.start({ + format: "mp3" + }), wx.showToast({ + title: "正在录音", + icon: "none", + duration: 6e4 + }); + }, + recordEnd: function() { + var t = this; + this.data.recorderManager.stop(), this.data.recorderManager.onStop(function(a) { + var o = a.tempFilePath; + wx.showToast({ + title: "上传中", + icon: "loading" + }), e.restAjax.file(e.restAjax.path(e.apis.uploadAudio, [ e.baseUrls.caseUrl ]), o, "audio", { + headers: { + token: e.globalData.token + } + }, function(e, a) { + var o = JSON.parse(a).data; + t.setData({ + audioId: o + }), wx.hideToast(); + }, function(e, t) { + console.log(t); + }); + }); + t = this; + wx.hideToast(); + }, + playRecord: function() { + var e = wx.createInnerAudioContext(); + e.src = this.data.caseUrl + this.data.baseImgUrl + this.data.audioId, e.play(); + }, + doLogin: function() { + wx.login({ + success: function(t) { + e.restAjax.post(e.restAjax.path(e.apis.login, [ e.baseUrls.loginUrl ]), { + jsCode: t.code + }, null, function(e, t) { + console.log(t); + }, function(t, a) { + e.dialog.msg(a.msg); + }); + } + }); + }, + uploadImage: function() { + var t = this; + t.data.isLoading || (t.setData({ + isLoading: !0 + }), wx.chooseImage({ + count: 9 - t.data.imageList.length, + sourceType: [ "album", "camera" ], + success: function(a) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + for (var o = 0; o < a.tempFiles.length; o++) { + var i = a.tempFiles[o].path; + e.restAjax.file(e.restAjax.path(e.apis.uploadImg, [ e.baseUrls.caseUrl ]), i, "image", { + headers: { + token: e.globalData.token + } + }, function(e, a) { + if ("200" == e) { + t.setData({ + isLoading: !1 + }); + var o = JSON.parse(a).data, i = t.data.imageList; + i.push(o), t.setData({ + imageList: i + }), wx.hideToast(); + } + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + } + })); + }, + uploadVideo: function() { + var t = this; + t.data.isLoading || (t.setData({ + isLoading: !0 + }), wx.chooseVideo({ + sourceType: [ "album", "camera" ], + maxDuration: 60, + camera: "back", + success: function(a) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + var o = a.tempFilePath; + e.restAjax.file(e.restAjax.path(e.apis.uploadVideo, [ e.baseUrls.caseUrl ]), o, "video", { + headers: { + token: e.globalData.token + } + }, function(e, a) { + if ("200" == e) { + var o = JSON.parse(a).data; + t.setData({ + videoId: o, + isLoading: !1 + }), wx.hideToast(); + } + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + })); + }, + chooseLocation: function() { + var e = this; + wx.chooseLocation({ + success: function(a) { + console.log(a); + var o = t.transformFromGCJToWGS(a.latitude, a.longitude); + console.log(o), e.setData({ + longitude: o.longitude, + latitude: o.latitude + }); + } + }); + }, + editInfo: function(e) { + "location" == e.currentTarget.dataset.type ? this.setData({ + reportAddress: e.detail.value + }) : this.setData({ + reportContent: e.detail.value + }); + }, + submitReport: function() { + var t = this; + if (!t.data.isLoading) { + if (!this.data.typeSelected) return void wx.showToast({ + title: "请选择事件类型", + icon: "error" + }); + if (!this.data.type2Selected) return void wx.showToast({ + title: "请选择事件类型", + icon: "error" + }); + if (!this.data.reportAddress) return void wx.showToast({ + title: "请输入事发位置", + icon: "error" + }); + if (!this.data.longitude && !this.data.latitude) return void wx.showToast({ + title: "请选择事发坐标", + icon: "error" + }); + if (!this.data.reportContent) return void wx.showToast({ + title: "请输入事件说明", + icon: "error" + }); + for (var a, o = "内蒙古自治区 / 乌兰察布市 / " + wx.getStorageSync("curCommunityName"), i = 0; i < t.data.imageList.length; i++) 0 == i ? a = t.data.imageList[i] : a += "," + t.data.imageList[i]; + var s = wx.getStorageSync("areaCode"), r = { + bGId: "", + casePartsObjId: "", + casePartsObjName: "", + caseTypeCode1: t.data.typeSelectedCode, + caseTypeCode2: t.data.type2Selected, + caseTypeName1: t.data.typeSelectedName, + caseTypeName2: t.data.type2SelectedName, + reportAddress: t.data.reportAddress, + reportAreaCode: s, + isSelf: "0", + reportAreaName: o, + reportAudio: t.data.audioId, + reportContent: t.data.reportContent, + reportLat: t.data.latitude, + reportLng: t.data.longitude, + reportPhotos: a, + reportVideo: t.data.videoId, + gridMiniId: wx.getStorageSync("gridMiniId") + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitReport, [ e.baseUrls.requestUrl ]), r, { + headers: { + token: "cVJWWXQ1UWpQWTQ1TDZMbEVtTmxiMlJVNkdvTzUwSTNHYzZaK3VTZmF0RXNITnQ3RXUxZ2F6eVU4dGpZWjFqWm5Pc0Fqd2l6MzAvMlZSckZaTkZITFZmVXk4YVNWVVErcEJ5SGZzVFRGeGFEenBMaDhZU0FFc1hnZ2RGc2hLUWZvMTJtWHRkcENmWThROTZFL2d5WDJxc0RBY2RzUkUzUzIyNlBmblFhUGdPZWdFY3JOeU5mME5veEk1aVU4a1hNMFNlaW1BemFwRjhRbXVRUUt1MTlObEViSTlhMUVoSEJDZ2ZFVTFYZlJNNGFoMTVOTXgyYytBdE96SUVmWmpYRQ==" + } + }, function(e, a) { + "200" == e && (wx.showToast({ + title: "上报成功", + icon: "success" + }), setTimeout(function() { + t.setData({ + isLoading: !1 + }), wx.navigateBack({ + delta: 1 + }); + }, 1500)); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + deleteSource: function(e) { + if ("video" == e.currentTarget.dataset.type) this.setData({ + videoId: "" + }); else { + var t = e.currentTarget.dataset.cur; + this.data.imageList.splice(t, 1), this.setData({ + imageList: this.data.imageList + }); + } + }, + onLoad: function(t) { + this.setData({ + token: e.globalData.token + }), this.getCaseType(), this.getArea(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/report/report.json b/pages/report/report.json new file mode 100644 index 0000000..b54f60f --- /dev/null +++ b/pages/report/report.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "事件上报" +} \ No newline at end of file diff --git a/pages/report/report.wxml b/pages/report/report.wxml new file mode 100644 index 0000000..20984dd --- /dev/null +++ b/pages/report/report.wxml @@ -0,0 +1,75 @@ + + 基本信息 + + + * 事件类型 + + + {{typeArray[typeIdx]}} + + + + + + * 事件类型 + + + {{type2Array[type2Idx]}} + + + + + + * 事发位置 + + + + + + + * 事发坐标 + + 点击选择事发位置坐标 + {{longitude}},{{latitude}} + + + + + 详细信息 + + + * 事件说明 + + + + + + 事件图片 + + + + + + + + + + + 视频 + + + + + + + + + + + + 录音 + 长按录音 + 播放录音 + + + + 上报 + diff --git a/pages/report/report.wxss b/pages/report/report.wxss new file mode 100644 index 0000000..11041ae --- /dev/null +++ b/pages/report/report.wxss @@ -0,0 +1,197 @@ +page { + background-color: #fafafa; +} + +.report { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + box-sizing: border-box; + margin: 20rpx auto; + padding: 20rpx 30rpx; + width: 710rpx; +} + +.title { + color: #333; + font-size: 36rpx; + margin-bottom: 20rpx; +} + +.row { + background-color: #f2f1f6; + border-radius: 10rpx; + display: flex; + flex-wrap: wrap; + font-size: 32rpx; + justify-content: space-between; + margin-bottom: 15rpx; + padding: 15rpx; +} + +.row:last-child { + margin-bottom: 0; +} + +.row-name { + border-right: 1px solid #9b9a9f; + flex-shrink: 0; + width: 200rpx; +} + +.row-name text { + color: red; +} + +.row-main { + flex-shrink: 0; + overflow: hidden; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + width: 410rpx; +} + +.submit { + background: #fff; + bottom: 0; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.submit-btn { + background-color: #f55054; + color: #fff; + font-size: 36rpx; + height: 80rpx; + line-height: 80rpx; + text-align: center; +} + +.file,.submit-btn { + border-radius: 10rpx; +} + +.file { + background-color: #fff; + box-shadow: 0 2px 8px 0 rgba(35,24,21,.1); + box-sizing: border-box; + margin: 0 auto 130rpx; + padding: 20rpx 30rpx; + width: 710rpx; +} + +.file-box { + background-color: #f2f1f6; + border-radius: 10rpx; + margin-bottom: 20rpx; + padding: 15rpx; +} + +.file-box:last-child { + margin-bottom: 0; +} + +.file-title { + font-size: 30rpx; +} + +.file-title text { + color: red; +} + +.file-content { + margin-top: 10rpx; +} + +.file-content textarea { + height: 150rpx; + width: 100%; +} + +.upload-btn { + border: 2px solid #333; + border-radius: 10rpx; + box-sizing: border-box; + font-size: 60rpx; + height: 100rpx; + line-height: 100rpx; + vertical-align: top; + width: 100rpx; +} + +.img-box,.upload-btn { + display: inline-block; + text-align: center; +} + +.img-box { + height: 150rpx; + margin-right: 2%; + position: relative; + width: 32%; +} + +.delete { + height: 35rpx!important; + position: absolute; + right: -18rpx; + top: -18rpx; + width: 35rpx!important; +} + +.img-box:nth-child(3n) { + margin-right: 0; +} + +.img-box image { + height: 150rpx; +} + +.video-box { + position: relative; + width: 100%; +} + +.video-box video { + width: 100%; +} + +.voice-box { + display: flex; + justify-content: space-between; + padding: 0; +} + +.voice-box image { + margin-top: -7rpx; + vertical-align: middle; + width: 35rpx; +} + +.voice-title { + font-size: 30rpx; + line-height: 80rpx; + margin-left: 15rpx; +} + +.record-btn { + background-color: #f55054; + border-radius: 10rpx; + color: #fff; + line-height: 80rpx; + padding: 0 15rpx; +} + +.map-box { + height: 300rpx; + margin-top: 10rpx; + width: 100%; +} + +.map { + height: 100%; + width: 100%; +} \ No newline at end of file diff --git a/pages/serve/newsList.js b/pages/serve/newsList.js new file mode 100644 index 0000000..1d49d44 --- /dev/null +++ b/pages/serve/newsList.js @@ -0,0 +1,83 @@ +var e = require("../../@babel/runtime/helpers/defineProperty"), t = getApp(); + +Page({ + data: { + token: t.globalData.token, + newsType: [], + curType: "", + page: { + page: 1, + rows: 10, + newsTypeId: "" + }, + newsList: [], + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl + }, + getNewsType: function() { + var a = this; + t.restAjax.get(t.restAjax.path(t.apis.getNewsType, [ t.baseUrls.requestUrl ]), { + showArea: "6dcbb862-4b48-4dca-aee1-d78fd76adc05" + }, { + headers: { + token: a.data.token + } + }, function(t, s) { + var n; + a.setData((e(n = { + newsType: s + }, "page.newsTypeId", s[0].newsTypeId), e(n, "curType", s[0].newsTypeId), n)), a.getNewsList(); + }, function(e, t) { + console.log(t); + }); + }, + changeType: function(t) { + var a, s = t.currentTarget.dataset.id; + this.setData((e(a = { + curType: s + }, "page.newsTypeId", s), e(a, "page.page", 1), a)), this.getNewsList(); + }, + getNewsList: function() { + var a = this; + t.restAjax.get(t.restAjax.path(t.apis.getNewsList, [ t.baseUrls.requestUrl ]), a.data.page, { + headers: { + token: a.data.token + } + }, function(t, s) { + for (var n = 0; n < s.rows.length; n++) s.rows[n].photo && (s.rows[n].photo = s.rows[n].photo.split(",")); + if (1 == a.data.page.page) a.setData({ + newsList: s.rows + }); else if (s.rows.length > 0) { + for (var o = a.data.newsList, r = 0; r < s.rows.length; r++) o.push(s.rows[r]); + a.setData({ + newsList: o + }); + } else wx.showToast({ + title: "暂无更多", + icon: "none" + }), a.setData(e({}, "page.page", a.data.page.page - 1)); + }, function(e, t) { + console.log(t); + }); + }, + checkDetail: function(e) { + var t = e.currentTarget.dataset.id; + wx.navigateTo({ + url: "../news/newsDetail?newsId=" + t + }); + }, + onLoad: function(e) { + this.setData({ + token: t.globalData.token + }), this.getNewsType(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() { + this.setData(e({}, "page.page", this.data.page.page + 1)), this.getNewsList(); + }, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/serve/newsList.json b/pages/serve/newsList.json new file mode 100644 index 0000000..04c0b6f --- /dev/null +++ b/pages/serve/newsList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "服务公告" +} \ No newline at end of file diff --git a/pages/serve/newsList.wxml b/pages/serve/newsList.wxml new file mode 100644 index 0000000..79881a3 --- /dev/null +++ b/pages/serve/newsList.wxml @@ -0,0 +1,51 @@ + + {{item.typeName}} + + + + + + {{item.title}} + + + + + {{item.sendTime}} + + + + + + + {{item.title}} + {{item.sendTime}} + + + + + {{item.title}} + {{item.sendTime}} + + + + + + + + {{item.title}} + + + + + + + {{item.sendTime}} + + + + {{item.title}} + + {{item.sendTime}} + + + diff --git a/pages/serve/newsList.wxss b/pages/serve/newsList.wxss new file mode 100644 index 0000000..f1f5f01 --- /dev/null +++ b/pages/serve/newsList.wxss @@ -0,0 +1,112 @@ +.news-type,page { + background-color: #fff; +} + +.news-type { + border-bottom: 1px solid #ddd; + display: flex; + flex-wrap: nowrap; + left: 0; + overflow-x: auto; + position: fixed; + right: 0; + top: 0; + z-index: 100; +} + +.type-box { + flex-shrink: 0; + font-size: 32rpx; + line-height: 80rpx; + text-align: center; + width: 25%; +} + +.type-box.active { + color: #f55054; +} + +.news-list { + margin-top: 80rpx; + padding: 20rpx; +} + +.news-box { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; + padding: 20rpx 0; +} + +.news-img { + height: 150rpx; + overflow: hidden; + text-align: center; + width: 30%; +} + +.news-img image { + border-radius: 10rpx; + height: 100%; +} + +.news-info { + width: 68%; +} + +.news-title { + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + display: -webkit-box; + font-size: 32rpx; + font-weight: 700; + overflow: hidden; +} + +.news-date { + color: #bbb; + font-size: 30rpx; + margin-top: 15rpx; +} + +.style3,.style4 { + flex-direction: column; +} + +.style3 .news-img,.style3 .news-info,.style4 .news-info { + width: 100%; +} + +.style3 .news-img { + height: auto; + margin-top: 10rpx; +} + +.style3 .news-img image,.style5 .news-info { + width: 100%; +} + +.style5 { + flex-direction: column; +} + +.news-img-container .img-box { + border-radius: 10rpx; + display: inline-block; + height: 150rpx; + margin-right: 2%; + text-align: center; + width: 32%; +} + +.img-box image { + height: 100%; +} + +.news-img-container .img-box:last-child { + margin-right: 0; +} + +.news-img-container { + margin-top: 10rpx; +} \ No newline at end of file diff --git a/pages/serve/orgDetail.js b/pages/serve/orgDetail.js new file mode 100644 index 0000000..58e26da --- /dev/null +++ b/pages/serve/orgDetail.js @@ -0,0 +1,22 @@ +var n = getApp(); + +Page({ + data: { + sourceUrl: n.baseUrls.sourceUrl + }, + copyText: function(n) { + var o = n.currentTarget.dataset.text; + o && wx.setClipboardData({ + data: o, + success: function() {} + }); + }, + onLoad: function(n) {}, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/serve/orgDetail.json b/pages/serve/orgDetail.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/pages/serve/orgDetail.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/pages/serve/orgDetail.wxml b/pages/serve/orgDetail.wxml new file mode 100644 index 0000000..5dc2c61 --- /dev/null +++ b/pages/serve/orgDetail.wxml @@ -0,0 +1,225 @@ + + + + + + + 02/ + + + 加入卡包 + + + + 03/ + + + 名片码 + + + + + + + 拨打电话 + + 13355556666 + + + + + 添加微信 + + dongbo + + + + + 邮箱 + + 358256383@qq.com + + + + + 地址 + + 地址 + + + + + + + + + + 999+ + + + + 999+ + + + + + + + + + + + {{item.name}} + + + 更多 + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{audio.curDurationStr}} + + {{audio.totalDurationStr}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{child.value}} + + + + + + + + + + {{child.comment}}: + {{child.selValue}} + + + + + + + + + {{child.comment}} + + + + {{ss.dataName}} + + + + + + + + + + + 暂无数据 + diff --git a/pages/serve/orgDetail.wxss b/pages/serve/orgDetail.wxss new file mode 100644 index 0000000..b5e6dac --- /dev/null +++ b/pages/serve/orgDetail.wxss @@ -0,0 +1,157 @@ +.community { + display: flex; + justify-content: space-between; +} + +.card { + background-color: #ff0; + height: 0; + margin: 20rpx 0; + padding-bottom: 56%; + width: 100%; +} + +.mid { + position: relative; + width: 100%; +} + +.mid,.mid-box { + display: flex; +} + +.mid-box { + align-items: left; + background-color: #fff; + border: 2rpx solid #eac390; + border-radius: 10rpx; + flex-direction: column; + flex-shrink: 0; + font-weight: 400; + justify-content: left; + margin-right: 2%!important; + padding: 10rpx; + width: 32%!important; +} + +.mid-box:last-child { + margin-right: 0; +} + +.mid-box text { + color: #ccc; + font-size: 15px; + height: 16px; + line-height: 16px; + text-align: center; +} + +.mid-box image { + height: 48rpx; + width: 48rpx; +} + +.mid-box-text { + font-size: 28rpx; + text-align: left; +} + +.good { + justify-content: space-between; + padding-bottom: 20rpx; + padding-left: 20rpx; + padding-top: 20rpx; + width: 100%; +} + +.good,.good-click { + display: flex; +} + +.good-avatar { + font-size: 0; +} + +.good-avatar,.good-click { + color: #333; + line-height: 45rpx; +} + +.view-count { + border-right: 1px solid grey; + margin-right: 30rpx; +} + +.view-count,.view-count-no { + color: grey; + display: flex; + flex-direction: row; + font-size: 36rpx; + padding-right: 30rpx; +} + +.view-count-no { + align-items: center; +} + +.view-count image,.view-count-no image { + height: 32rpx; + width: 32rpx; +} + +.mid-btn { + background: #fff; + border: 1rpx solid #ebebeb; + border-radius: 15rpx; + box-shadow: 10rpx 10rpx 20rpx 20rpx #e4e4e426; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + justify-content: center; + margin-top: 20rpx; + padding: 10rpx; + position: relative; + width: 100%; +} + +.mid-btn-box { + box-sizing: border-box; + flex-shrink: 0; + justify-content: space-between; + padding: 15rpx; +} + +.mid-btn-box,.mid-btn-title { + align-items: center; + display: flex; + flex-direction: row; +} + +.mid-btn-title { + flex: 3; + justify-content: flex-start; +} + +.mid-btn-title .image { + height: 48rpx; + width: 48rpx; +} + +.mid-btn-title text { + color: #333; + font-size: 28rpx; + margin-left: 20rpx; +} + +.mid-btn-box:nth-child(3),.mid-btn-box:nth-child(4) { + margin-bottom: 0; +} + +.mid-btn-box image { + height: 80rpx; + width: 80rpx; +} + +.mid-btn-text { + width: 200rpx; +} \ No newline at end of file diff --git a/pages/serve/orgList.js b/pages/serve/orgList.js new file mode 100644 index 0000000..3ca11f3 --- /dev/null +++ b/pages/serve/orgList.js @@ -0,0 +1,54 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + orgList: [], + page: { + page: 1, + rows: 500, + areaCode: wx.getStorageSync("areaCode") + } + }, + getServeOrg: function() { + var o = this; + e.restAjax.get(e.restAjax.path(e.apis.getOrgList, [ e.baseUrls.requestUrl ]), { + page: 1, + rows: 500, + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: e.globalData.token + } + }, function(e, t) { + console.log(t), o.setData({ + orgList: t.rows + }); + }, function(e, o) { + console.log(o); + }); + }, + showDetail: function(e) { + console.log(e); + var o = e.currentTarget.dataset.item; + console.log(o), "" == o.cardSysId ? wx.showToast({ + title: "该服务机构未添加展示内容", + icon: "none" + }) : wx.navigateTo({ + url: "/pages/center/contact/contactDetail?gridMiniId=" + o.cardSysId + "&title=" + o.unitName + }); + }, + onLoad: function(o) { + this.setData({ + token: e.globalData.token + }), this.getServeOrg(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/serve/orgList.json b/pages/serve/orgList.json new file mode 100644 index 0000000..1fdde0a --- /dev/null +++ b/pages/serve/orgList.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "社区服务机构" +} \ No newline at end of file diff --git a/pages/serve/orgList.wxml b/pages/serve/orgList.wxml new file mode 100644 index 0000000..6d20912 --- /dev/null +++ b/pages/serve/orgList.wxml @@ -0,0 +1,9 @@ + + + + + {{item.unitName}} + 服务人员:0人 + + + diff --git a/pages/serve/orgList.wxss b/pages/serve/orgList.wxss new file mode 100644 index 0000000..ef321db --- /dev/null +++ b/pages/serve/orgList.wxss @@ -0,0 +1,34 @@ +.container { + background-color: #fff; +} + +.org-box { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; + padding: 20rpx 0; +} + +.org-box:last-child { + border-bottom: none; +} + +.org-box image { + height: 120rpx; + width: 120rpx; +} + +.org-info { + width: 570rpx; +} + +.org-name { + font-size: 34rpx; + font-weight: 700; + line-height: 70rpx; +} + +.org-count { + color: #bbb; + font-size: 28rpx; +} \ No newline at end of file diff --git a/pages/serve/serve.js b/pages/serve/serve.js new file mode 100644 index 0000000..5717ea9 --- /dev/null +++ b/pages/serve/serve.js @@ -0,0 +1,119 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + showSettleType: !1, + sourceUrl: e.baseUrls.sourceUrl, + settleType: "", + orgList: [], + page: { + page: 1, + rows: 3, + newsTypeId: "b163953b-ed22-4041-a79f-73d5deedd025" + }, + serveOrgList: [], + indicatorDots: !0, + vertical: !1, + autoplay: !0, + interval: 3e3, + duration: 500, + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl + }, + orgSettle: function(e) { + var t = e.currentTarget.dataset.type; + wx.navigateTo({ + url: "./settle?type=" + t + }); + }, + closeSettleType: function() { + this.setData({ + showSettleType: !1 + }); + }, + doSettle: function(e) { + var t = e.currentTarget.dataset.type, a = e.currentTarget.dataset.name; + this.setData({ + showSettleType: !1 + }), wx.navigateTo({ + url: "./settle?id=" + t + "&name=" + a + }); + }, + checkMoreOrg: function() { + wx.navigateTo({ + url: "./orgList" + }); + }, + showDetail: function(e) { + console.log(e); + var t = e.currentTarget.dataset.item; + console.log(t), "" == t.cardSysId ? wx.showToast({ + title: "该服务机构未添加展示内容", + icon: "none" + }) : wx.navigateTo({ + url: "/pages/center/contact/contactDetail?gridMiniId=" + t.cardSysId + "&title=" + t.unitName + }); + }, + getServeOrg: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getOrgList, [ e.baseUrls.requestUrl ]), { + pages: 1, + rows: 3, + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + console.log(a), t.setData({ + serveOrgList: a.rows + }); + }, function(e, t) { + console.log(t); + }); + }, + getNotice: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getNewsList, [ e.baseUrls.requestUrl ]), { + pages: 1, + newsTypeId: "b163953b-ed22-4041-a79f-73d5deedd025", + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + noticeList: a.rows + }); + }, function(e, t) { + console.log(t); + }); + }, + checkNewsDetail: function(e) { + var t = e.currentTarget.dataset.id; + wx.navigateTo({ + url: "../news/newsDetail?newsId=" + t + }); + }, + checkMoreNews: function() { + wx.navigateTo({ + url: "./newsList" + }); + }, + onLoad: function(t) { + this.setData({ + token: e.globalData.token + }), this.getNotice(); + }, + onReady: function() {}, + onShow: function() { + this.getServeOrg(); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/serve/serve.json b/pages/serve/serve.json new file mode 100644 index 0000000..b5eb133 --- /dev/null +++ b/pages/serve/serve.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "生活服务" +} \ No newline at end of file diff --git a/pages/serve/serve.wxml b/pages/serve/serve.wxml new file mode 100644 index 0000000..d57267b --- /dev/null +++ b/pages/serve/serve.wxml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + 社区服务机构 + 查看更多 + + + + + {{item.unitName}} + + + + + + + + + 服务公告 + 查看更多 + + + + + + + {{item.title}} + {{item.summary}} + {{item.gmtCreate}} + + + diff --git a/pages/serve/serve.wxss b/pages/serve/serve.wxss new file mode 100644 index 0000000..1f00c17 --- /dev/null +++ b/pages/serve/serve.wxss @@ -0,0 +1,255 @@ +.top-count image { + width: 100%; +} + +.settle-btn { + align-items: center; + background: #fff; + border-radius: 10rpx; + color: #f55054; + display: flex; + font-size: 32rpx; + height: 120rpx; + justify-content: center; + width: 48%; +} + +.swiper-box { + height: 345rpx; + margin-top: -325rpx; + padding: 0 20rpx; + position: relative; +} + +.swiper-box swiper { + border-radius: 30rpx; + height: 100%; + overflow: hidden; +} + +.swiper-box image { + width: 100%; +} + +.serve-org { + margin: 20rpx 0; + padding: 0 20rpx; +} + +.serve-title { + display: flex; + font-size: 36rpx; + justify-content: space-between; + margin-bottom: 20rpx; +} + +.title { + border-left: 5px solid #f55054; + font-weight: 700; + padding-left: 20rpx; +} + +.more { + color: #b5b5b5; + font-size: 30rpx; +} + +.org-list { + width: 100%; +} + +.org-box { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 0 10rpx #ccc; + box-sizing: border-box; + display: inline-block; + margin-right: 2%; + padding: 20rpx; + text-align: center; + width: 32%; +} + +.org-box:last-child { + margin-right: 0; +} + +.org-box image { + border-radius: 50%; + height: 100rpx; + width: 100rpx; +} + +.org-name { + font-size: 32rpx; + font-weight: 700; + margin: 10rpx 0; +} + +.org-community { + color: #bbb; + font-size: 28rpx; +} + +.serve-join { + padding: 0 20rpx; +} + +.serve-join image { + width: 100%; +} + +.serve-news { + margin: 20rpx 0; + padding: 0 20rpx; +} + +.news-box { + background-color: #fff; + border-radius: 10rpx; + box-shadow: 0 0 10rpx #ccc; + margin-bottom: 20rpx; +} + +.news-top { + border-bottom: 1px solid #ddd; + display: flex; + justify-content: space-between; + padding: 20rpx; +} + +.news-info { + width: 68%; +} + +.news-img { + height: 150rpx; + width: 30%; +} + +.news-img image { + border-radius: 10rpx; + height: 100%; +} + +.news-title { + font-size: 34rpx; + font-weight: 700; +} + +.news-date { + color: #bbb; + font-size: 26rpx; + margin-top: 20rpx; +} + +.news-bottom { + font-size: 30rpx; + line-height: 60rpx; + padding: 0 20rpx; +} + +.settle-type { + background-color: rgba(0,0,0,.6); + bottom: 0; + left: 0; + position: fixed; + right: 0; + top: 0; +} + +.center { + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 710rpx; +} + +.type-container { + border-radius: 10rpx; + overflow: hidden; +} + +.type-box { + background-color: #fff; + border-bottom: 1px solid #ddd; + font-size: 32rpx; + line-height: 80rpx; + text-align: center; +} + +.type-box:last-child { + border-bottom: none; +} + +.close-btn { + border-radius: 40rpx; + font-size: 32rpx; + line-height: 80rpx; + text-align: center; +} + +.close-btn,.notice { + background-color: #fff; + margin-top: 20rpx; +} + +.notice { + padding: 20rpx; +} + +.notice-title { + font-size: 36rpx; + font-weight: 700; + margin-bottom: 20rpx; +} + +.notice-box,.notice-title { + display: flex; + justify-content: space-between; +} + +.notice-box { + border-bottom: 1px solid #ddd; + padding: 20rpx 0; +} + +.notice-box:last-child { + border-bottom: none; +} + +.title-text { + border-left: 5px solid #f55054; + padding-left: 20rpx; +} + +.notice-title-text { + font-size: 34rpx; +} + +.notice-more { + color: #bbb; + font-size: 28rpx; + font-weight: 400; +} + +.notice-time { + color: hsla(0,0%,6%,.7); + font-size: 28rpx; + line-height: 45rpx; +} + +.notice-img { + height: 140rpx; + text-align: center; + width: 200rpx; +} + +.notice-img image { + height: 100%; +} + +.notice-info { + width: 490rpx; +} \ No newline at end of file diff --git a/pages/serve/serviceDetail.js b/pages/serve/serviceDetail.js new file mode 100644 index 0000000..71184a3 --- /dev/null +++ b/pages/serve/serviceDetail.js @@ -0,0 +1,11 @@ +Page({ + data: {}, + onLoad: function(n) {}, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/serve/serviceDetail.json b/pages/serve/serviceDetail.json new file mode 100644 index 0000000..91de62c --- /dev/null +++ b/pages/serve/serviceDetail.json @@ -0,0 +1,24 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + } +} \ No newline at end of file diff --git a/pages/serve/serviceDetail.wxml b/pages/serve/serviceDetail.wxml new file mode 100644 index 0000000..9691810 --- /dev/null +++ b/pages/serve/serviceDetail.wxml @@ -0,0 +1 @@ +pages/serve/serviceDetail.wxml diff --git a/pages/serve/serviceDetail.wxss b/pages/serve/serviceDetail.wxss new file mode 100644 index 0000000..e69de29 diff --git a/pages/serve/settle.js b/pages/serve/settle.js new file mode 100644 index 0000000..3a5ba4d --- /dev/null +++ b/pages/serve/settle.js @@ -0,0 +1,351 @@ +var e = getApp(); + +Page({ + data: { + token: e.globalData.token, + sourceUrl: e.baseUrls.sourceUrl, + pageType: "1", + areaList: [], + areaIndex: 0, + areaAll: [], + areaSelected: "", + streetList: [], + streetIndex: 0, + streetAll: [], + streetSelected: "", + communityList: [], + communityIndex: 0, + communityAll: [], + communitySelected: "", + xqList: [], + xqIndex: 0, + xqAll: [], + xqSelected: "", + officeAddress: "", + orgIntro: "", + imageList: [], + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + locationCode: "", + unitName: "", + serviceMode: "", + shopType: "", + phone: "", + chargePerson: "", + residential: "", + curType: [], + typeIndex: 0, + typeAll: [], + typeSelected: "", + typeSelectedName: "", + isLoading: !1 + }, + bindTypePickerChange: function(e) { + this.setData({ + typeIndex: e.detail.value, + typeSelected: this.data.typeAll[e.detail.value].dataId, + typeSelectedName: this.data.typeAll[e.detail.value].dataName, + pageType: this.data.typeAll[e.detail.value].dataId + }); + }, + getArea: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getArea, [ e.baseUrls.serviceUrl, "110889" ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var i = [ "请选择区县" ], o = 0; o < a.length; o++) i.push(a[o].areaName); + t.setData({ + areaList: i, + areaAll: a + }); + }, function(e, t) { + console.log(t); + }); + }, + bindAreaPickerChange: function(e) { + this.setData({ + areaIndex: e.detail.value, + areaSelected: this.data.areaAll[e.detail.value - 1].areaId + }), this.getStreet(); + }, + getStreet: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getArea, [ e.baseUrls.serviceUrl, t.data.areaSelected ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var i = [ "请选择街道" ], o = 0; o < a.length; o++) i.push(a[o].areaName); + t.setData({ + streetList: i, + streetAll: a + }); + }, function(e, t) { + console.log(t); + }); + }, + bindStreetPickerChange: function(e) { + this.setData({ + streetIndex: e.detail.value, + streetSelected: this.data.streetAll[e.detail.value - 1].areaId + }), this.getCommunity(); + }, + getCommunity: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getCommunityList, [ e.baseUrls.communityUrl ]), { + parentCode: t.data.streetSelected + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var i = [ "请选择社区" ], o = 0; o < a.length; o++) i.push(a[o].communityName); + t.setData({ + communityList: i, + communityAll: a + }), console.log(a); + }, function(e, t) { + console.log(t); + }); + }, + bindCommunityPickerChange: function(e) { + this.setData({ + communityIndex: e.detail.value, + communitySelected: this.data.communityAll[e.detail.value - 1].communityId, + locationCode: this.data.communityAll[e.detail.value - 1].locationCode + }), this.getHouseList(); + }, + uploadImage: function() { + var t = this; + t.data.isLoading || wx.chooseImage({ + count: 9 - t.data.imageList.length, + sourceType: [ "album", "camera" ], + success: function(a) { + wx.showToast({ + title: "上传中", + icon: "loading" + }), t.setData({ + isLoading: !0 + }); + for (var i = function(i) { + s = a.tempFiles[i].path, e.restAjax.file(e.restAjax.path(e.apis.uploadImg, [ e.baseUrls.serviceUrl ]), s, "image", { + headers: { + token: e.globalData.token + } + }, function(e, o) { + if ("200" == e) { + var s = JSON.parse(o).data, n = t.data.imageList; + n.push(s), t.setData({ + imageList: n + }), i == a.tempFiles.length - 1 && t.setData({ + isLoading: !1 + }), wx.hideToast(); + } + }, function(e, t) { + console.log(t); + }); + }, o = 0; o < a.tempFiles.length; o++) { + var s; + i(o); + } + } + }); + }, + getHouseList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getHouse, [ e.baseUrls.communityUrl ]), { + areaCode: t.data.locationCode + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + console.log(a); + for (var i = [ "请选择小区" ], o = 0; o < a.length; o++) i.push(a[o].residentialName); + t.setData({ + xqList: i, + xqAll: a + }); + }, function(e, t) { + console.log(t); + }); + }, + bindXqPickerChange: function(e) { + this.setData({ + xqIndex: e.detail.value, + xqSelected: this.data.xqAll[e.detail.value - 1].residentialId + }); + }, + submitSettle: function() { + var t = this; + if (!t.data.isLoading) { + if ("0" == t.data.areaIndex) return void wx.showToast({ + title: "请选择区县", + icon: "error" + }); + if ("0" == t.data.streetIndex && t.data.streetAll.length > 1) return void wx.showToast({ + title: "请选择街道", + icon: "error" + }); + if ("0" == t.data.communityIndex && t.data.communityAll.length > 1) return void wx.showToast({ + title: "请选择社区", + icon: "error" + }); + if (!t.data.unitName) return void wx.showToast({ + title: "请填写单位名称", + icon: "error" + }); + if (!t.data.officeAddress && "612be328-bb06-48b7-877c-7d816012f273" == t.data.pageType) return void wx.showToast({ + title: "请填写办公地址", + icon: "error" + }); + if (!t.data.officeAddress && "3c97be91-b7e5-498f-b0dd-cd097521549f" == t.data.pageType) return void wx.showToast({ + title: "请填写营业地址", + icon: "error" + }); + if (!t.data.unitName && "612be328-bb06-48b7-877c-7d816012f273" == t.data.pageType) return void wx.showToast({ + title: "请填写单位名称", + icon: "error" + }); + if (!t.data.unitName && "3c97be91-b7e5-498f-b0dd-cd097521549f" == t.data.pageType) return void wx.showToast({ + title: "请填写店铺名称", + icon: "error" + }); + if (!t.data.shopType && "3c97be91-b7e5-498f-b0dd-cd097521549f" == t.data.pageType) return void wx.showToast({ + title: "请填写店铺品类", + icon: "error" + }); + if (!t.data.orgIntro) return void wx.showToast({ + title: "请填写机构简介", + icon: "error" + }); + if (!t.data.phone) return void wx.showToast({ + title: "请填写联系电话", + icon: "error" + }); + if (!t.data.chargePerson) return void wx.showToast({ + title: "请填写负责人姓名", + icon: "error" + }); + for (var a = "", i = 0; i < t.data.imageList.length; i++) a += t.data.imageList[i], + i != t.data.imageList.length - 1 && (a += ","); + "3c97be91-b7e5-498f-b0dd-cd097521549f" != t.data.pageType || t.data.shopType || wx.showToast({ + title: "请填写品类" + }); + var o = "", s = "非ID"; + if ("6c290901-39dd-4b69-a7aa-c27d253ab152" == t.data.pageType || "45ad4873-af80-4d03-973d-3b746a889948" == t.data.pageType) if ("0" == t.data.xqIndex) { + if (!t.data.residential) return void wx.showToast({ + title: "请选择或填写您的小区名称", + icon: "error" + }); + s = t.data.residential; + } else o = t.data.xqSelected, s = "ID"; + var n = { + organizationTypeId: t.data.pageType, + organizationTypeName: t.data.pageName, + cityId: t.data.areaSelected, + cityCode: t.data.areaAll[t.data.areaIndex - 1].areaCode, + cityName: t.data.areaAll[t.data.areaIndex - 1].areaName, + streetId: t.data.streetSelected, + streetCode: t.data.streetAll[t.data.streetIndex - 1].areaCode, + streetName: t.data.streetAll[t.data.streetIndex - 1].areaName, + communityId: t.data.communitySelected, + communityCode: t.data.communityAll[t.data.communityIndex - 1].locationCode, + communityName: t.data.communityAll[t.data.communityIndex - 1].communityName, + address: t.data.officeAddress, + introduction: t.data.orgIntro, + fileIds: a, + residential: o, + serviceMode: t.data.serviceMode, + unitName: t.data.unitName, + shopType: t.data.shopType, + shopTypeName: t.data.shopType, + phone: t.data.phone, + chargePerson: t.data.chargePerson, + residentialValue: s + }; + t.setData({ + isLoading: !0 + }), e.restAjax.post(e.restAjax.path(e.apis.submitSettle, [ e.baseUrls.requestUrl ]), n, { + headers: { + token: t.data.token + } + }, function(e, a) { + wx.showToast({ + title: "入驻成功", + icon: "success" + }), setTimeout(function() { + t.setData({ + isLoading: !1 + }), wx.redirectTo({ + url: "/packagecard/cardList/cardList?type=org&id=" + a.data + }); + }, 300); + }, function(e, a) { + console.log(a), t.setData({ + isLoading: !1 + }); + }); + } + }, + deleteImg: function(e) { + var t = e.currentTarget.dataset.cur, a = this.data.imageList; + a.splice(t, 1), this.setData({ + imageList: a + }); + }, + getOrgList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getDictionary, [ e.baseUrls.serviceUrl, "8e981a56-afa1-4934-9d90-16aa1b8113ca" ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var i = [], o = 0; o < a.length; o++) i.push(a[o].dataName); + t.setData({ + curType: i, + typeAll: a, + typeSelected: a[0].dataId, + typeSelectedName: a[0].dataName, + pageType: a[0].dataId + }); + }, function(e, t) { + console.log(t); + }); + }, + getStoreList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getDictionary, [ e.baseUrls.serviceUrl, "4a44a891-8a0c-4cad-ada6-09ce99118e27" ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + for (var i = [], o = 0; o < a.length; o++) i.push(a[o].dataName); + t.setData({ + curType: i, + typeAll: a, + typeSelected: a[0].dataId, + typeSelectedName: a[0].dataName, + pageType: a[0].dataId + }); + }, function(e, t) { + console.log(t); + }); + }, + onLoad: function(t) { + this.setData({ + token: e.globalData.token + }), "1" == t.type ? this.getOrgList() : this.getStoreList(); + }, + onReady: function() { + this.getArea(); + }, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/serve/settle.json b/pages/serve/settle.json new file mode 100644 index 0000000..adf581d --- /dev/null +++ b/pages/serve/settle.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "服务机构入驻" +} \ No newline at end of file diff --git a/pages/serve/settle.wxml b/pages/serve/settle.wxml new file mode 100644 index 0000000..ad44790 --- /dev/null +++ b/pages/serve/settle.wxml @@ -0,0 +1,120 @@ + + + 入驻类型 + + + {{curType[typeIndex]}} + + + + + 请选择区县 + + + {{areaList[areaIndex]}} + + + + + 选择街道 + + + {{streetList[streetIndex]}} + + + + + 选择社区 + + + {{communityList[communityIndex]}} + + + + + 选择行政村 + + + {{communityList[communityIndex]}} + + + + + 选择小区 + + + {{xqList[xqIndex]}} + + + + + + + + 单位名称 + + + + + + 店铺名称 + + + + + + 品类 + + + + + + 物业服务方式 + + + + + + 营业地址 + + + + + + 办公地址 + + + + + + 机构简介 + + + + + + 联系电话 + + + + + + 负责人 + + + + + + + 上传资料 + + + + + + + + + + + 入驻 + diff --git a/pages/serve/settle.wxss b/pages/serve/settle.wxss new file mode 100644 index 0000000..f308a5c --- /dev/null +++ b/pages/serve/settle.wxss @@ -0,0 +1,132 @@ +.base-info { + background-color: #fff; + padding: 0 20rpx; +} + +.row { + border-bottom: 1px solid #ddd; + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} + +.row:last-child { + border-bottom: none; +} + +.row-name { + font-size: 32rpx; + line-height: 80rpx; + width: 30%; +} + +.row-content,.row-name { + flex-shrink: 0; +} + +.row-content { + text-align: right; + width: 70%; +} + +.residential { + width: 100%; +} + +.residential input { + height: 80rpx!important; +} + +.intro { + flex-direction: column; +} + +.intro .row-content { + text-align: left; + width: 100%; +} + +picker { + font-size: 32rpx; + line-height: 80rpx; +} + +.row-content input { + box-sizing: border-box; + font-size: 32rpx; + height: 100%; + padding: 0 10rpx; + width: 100%; +} + +.row-content textarea { + font-size: 32rpx; + height: 200rpx; + width: 100%; +} + +.upload-file { + background-color: #fff; + margin-bottom: 100rpx; + margin-top: 20rpx; + padding: 0 20rpx 20rpx; +} + +.upload-title { + font-size: 32rpx; + font-weight: 700; + line-height: 80rpx; +} + +.add { + background-color: #ccc; + color: #eee; + display: inline-block; + font-size: 60rpx; + height: 150rpx; + line-height: 150rpx; + margin-bottom: 20rpx; + margin-right: 2%; + text-align: center; + vertical-align: top; + width: 32%; +} + +.add.image { + background-color: #fff; + position: relative; +} + +.add:nth-child(3n) { + margin-right: 0; +} + +.add image { + height: 100%; +} + +.submit { + background-color: #fff; + bottom: 0; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.submit-btn { + background-color: #ff4949; + border-radius: 40rpx; + height: 60rpx; + line-height: 60rpx; + margin-top: 0; + text-align: center; +} + +.delete { + height: 30rpx!important; + position: absolute; + right: -15rpx; + top: -15rpx; + width: 30rpx; +} \ No newline at end of file diff --git a/pages/talk/myTalk.js b/pages/talk/myTalk.js new file mode 100644 index 0000000..0f021ff --- /dev/null +++ b/pages/talk/myTalk.js @@ -0,0 +1,20 @@ +var n = getApp(); + +Page({ + data: { + sourceUrl: n.baseUrls.sourceUrl + }, + checkDetail: function() { + wx.navigateTo({ + url: "./talkDetail" + }); + }, + onLoad: function(n) {}, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/talk/myTalk.json b/pages/talk/myTalk.json new file mode 100644 index 0000000..4acf8ae --- /dev/null +++ b/pages/talk/myTalk.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "我的微事我言" +} \ No newline at end of file diff --git a/pages/talk/myTalk.wxml b/pages/talk/myTalk.wxml new file mode 100644 index 0000000..a5996dd --- /dev/null +++ b/pages/talk/myTalk.wxml @@ -0,0 +1,87 @@ + + 我的发布 + 我的回复 + 我的赞 + + + + + + + + 100 + + + 请问阿斯顿发射点饭卡手动阀垃圾筐第三方接口问阿斯顿发射点饭卡手动阀垃圾筐第三 + + + + + + + + + + + + + + 100 + + + 请问阿斯顿发射点饭卡手动阀垃圾筐第三方接口问阿斯顿发射点饭卡手动阀垃圾筐第三 + + + + + + + + 100 + + + 请问阿斯顿发射点饭卡手动阀垃圾筐第三方接口问阿斯顿发射点饭卡手动阀垃圾筐第三 + + + + + + + + + + + + + + 100 + + + 请问阿斯顿发射点饭卡手动阀垃圾筐第三方接口问阿斯顿发射点饭卡手动阀垃圾筐第三 + + + diff --git a/pages/talk/myTalk.wxss b/pages/talk/myTalk.wxss new file mode 100644 index 0000000..af4ec27 --- /dev/null +++ b/pages/talk/myTalk.wxss @@ -0,0 +1,105 @@ +.tab { + background-color: #fff; + border-bottom: 1px solid #ddd; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 100; +} + +.tab,.tab-box { + display: flex; +} + +.tab-box { + align-items: center; + flex: 1; + font-size: 32rpx; + height: 100rpx; + justify-content: center; +} + +.tab-box.active { + border-bottom: 1px solid #f55054; + color: #f55054; +} + +.talk-container { + margin-top: 100rpx; +} + +.talk { + background-color: #fff; + border-bottom: 1px solid #ddd; + padding: 20rpx; +} + +.talk:last-child { + border-bottom: none; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.talk-content { + font-size: 30rpx; + line-height: 40rpx; +} + +.reply { + background-color: #eee; + margin-top: 10rpx; + padding: 20rpx; +} + +.reply-content { + padding-left: 100rpx; +} + +.photo-box { + display: inline-block; + height: 150rpx; + margin-right: 2%; + overflow: hidden; + text-align: center; + width: 32%; +} + +.photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-box image { + height: 100%; +} \ No newline at end of file diff --git a/pages/talk/newTalk.js b/pages/talk/newTalk.js new file mode 100644 index 0000000..feec01d --- /dev/null +++ b/pages/talk/newTalk.js @@ -0,0 +1,148 @@ +var a = getApp(); + +Page({ + data: { + token: a.globalData.token, + sourceUrl: a.baseUrls.sourceUrl, + content: "", + imageList: [], + videoId: "", + serviceUrl: a.baseUrls.serviceUrl, + baseImgUrl: a.baseUrls.baseImgUrl, + userIcon: "", + userName: "", + isLoading: !1 + }, + submitNewTalk: function() { + var e = this; + if (!e.data.isLoading) { + var t = ""; + if (e.data.imageList.length > 0) for (var o = 0; o < e.data.imageList.length; o++) o != e.data.imageList.length - 1 ? t += e.data.imageList[o] + "," : t += e.data.imageList[o]; + var s = { + content: e.data.content, + video: e.data.videoId, + videoCover: "", + photo: t, + headPortrait: e.data.userIcon, + nickName: e.data.userName, + areaCode: wx.getStorageSync("areaCode") + }; + e.setData({ + isLoading: !0 + }), a.restAjax.post(a.restAjax.path(a.apis.submitTalk, [ a.baseUrls.requestUrl ]), s, { + headers: { + token: a.globalData.token + } + }, function(a, t) { + "200" == a && (wx.showToast({ + title: "发布成功!", + icon: "success" + }), setTimeout(function() { + e.setData({ + isLoading: !1 + }), wx.navigateBack({ + delta: 1 + }); + }, 1500)); + }, function(a, t) { + console.log(t), e.setData({ + isLoading: !1 + }); + }); + } + }, + uploadImage: function() { + var e = this; + e.data.isLoading || (e.setData({ + isLoading: !0 + }), wx.chooseImage({ + count: 9 - e.data.imageList.length, + sourceType: [ "album", "camera" ], + success: function(t) { + wx.showToast({ + title: "上传中", + icon: "loading" + }); + for (var o = 0; o < t.tempFiles.length; o++) { + var s = t.tempFiles[o].path; + a.restAjax.file(a.restAjax.path(a.apis.uploadImg, [ a.baseUrls.serviceUrl ]), s, "image", { + headers: { + token: a.globalData.token + } + }, function(a, t) { + if ("200" == a) { + e.setData({ + isLoading: !1 + }); + var o = JSON.parse(t).data, s = e.data.imageList; + s.push(o), e.setData({ + imageList: s + }), wx.hideToast(); + } + }, function(a, t) { + console.log(t), e.setData({ + isLoading: !1 + }); + }); + } + } + })); + }, + uploadVideo: function() { + var e = this; + e.data.isLoading || (e.setData({ + isLoading: !0 + }), wx.chooseVideo({ + sourceType: [ "album", "camera" ], + success: function(t) { + a.restAjax.file(a.restAjax.path(a.apis.uploadVideo, [ a.baseUrls.serviceUrl ]), t.tempFilePath, "video", { + headers: { + token: a.globalData.token + } + }, function(a, t) { + if ("200" == a) { + e.setData({ + isLoading: !1 + }); + var o = JSON.parse(t).data; + e.setData({ + videoId: o + }); + } + }, function(a, t) { + console.log(t), e.setData({ + isLoading: !1 + }); + }); + } + })); + }, + deleteImg: function(a) { + var e = a.currentTarget.dataset.cur, t = this.data.imageList; + t.splice(e, 1), this.setData({ + imageList: t + }); + }, + deleteVideo: function() { + this.setData({ + videoId: "" + }); + }, + onLoad: function(e) { + this.setData({ + token: a.globalData.token + }); + }, + onReady: function() {}, + onShow: function() { + this.setData({ + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name") + }); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/talk/newTalk.json b/pages/talk/newTalk.json new file mode 100644 index 0000000..eafc1f1 --- /dev/null +++ b/pages/talk/newTalk.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "发表微事" +} \ No newline at end of file diff --git a/pages/talk/newTalk.wxml b/pages/talk/newTalk.wxml new file mode 100644 index 0000000..d1160c7 --- /dev/null +++ b/pages/talk/newTalk.wxml @@ -0,0 +1,28 @@ + + + + + + 上传图片({{imageList.length}}/9) + + + + + + + + + + + + + 上传视频 + + + + + + + + + + +发表 diff --git a/pages/talk/newTalk.wxss b/pages/talk/newTalk.wxss new file mode 100644 index 0000000..d2bc82b --- /dev/null +++ b/pages/talk/newTalk.wxss @@ -0,0 +1,93 @@ +.content { + border-bottom: 1px solid #ddd; + height: 400rpx; +} + +.content textarea { + background-color: #fff; + box-sizing: border-box; + font-size: 32rpx; + height: 100%; + padding: 20rpx; + width: 100%; +} + +.upload { + padding: 20rpx; +} + +.upload-box { + margin-bottom: 20rpx; +} + +.upload-title { + font-size: 30rpx; + margin-bottom: 10rpx; +} + +.add,.upload-img { + display: inline-block; + height: 150rpx; + margin-bottom: 20rpx; + margin-right: 2%; + position: relative; + text-align: center; + vertical-align: top; + width: 32%; +} + +.upload-video { + height: auto; + width: 100%; +} + +.upload-video video { + width: 100%; +} + +.add,.upload-img:nth-child(3n) { + margin-right: 0; +} + +.upload-img .upload-photo { + height: auto; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 100%; +} + +.upload-img-box { + height: 150rpx; + overflow: hidden; + position: relative; + width: 100%; +} + +.add { + background-color: #ccc; + color: #eee; + font-size: 60rpx; + line-height: 150rpx; +} + +.delete { + height: 30rpx!important; + position: absolute; + right: -15rpx; + top: -15rpx; + width: 30rpx; +} + +.submit-new { + background-color: #f55054; + bottom: 0; + color: #fff; + font-size: 32rpx; + left: 0; + line-height: 100rpx; + position: fixed; + right: 0; + text-align: center; +} \ No newline at end of file diff --git a/pages/talk/talk.js b/pages/talk/talk.js new file mode 100644 index 0000000..db470db --- /dev/null +++ b/pages/talk/talk.js @@ -0,0 +1,94 @@ +var e = require("../../@babel/runtime/helpers/defineProperty"), t = getApp(); + +Page({ + data: { + token: t.globalData.token, + sourceUrl: t.baseUrls.sourceUrl, + page: { + page: 1, + rows: 5 + }, + talkList: [], + serviceUrl: t.baseUrls.serviceUrl, + baseImgUrl: t.baseUrls.baseImgUrl, + isShowMenu: !1 + }, + getTalkList: function() { + var a = this; + t.restAjax.get(t.restAjax.path(t.apis.getTalkList, [ t.baseUrls.requestUrl ]), { + pages: a.data.page, + areaCode: wx.getStorageSync("areaCode") + }, { + headers: { + token: t.globalData.token + } + }, function(t, o) { + if (o.rows.length > 0) { + for (var s = 0; s < o.rows.length; s++) o.rows[s].photo && (o.rows[s].photo = o.rows[s].photo.split(",")); + if (1 == a.data.page.page) a.setData({ + talkList: o.rows + }); else { + for (var n = a.data.talkList, l = 0; l < o.rows.length; l++) n.push(o.rows[l]); + a.setData({ + talkList: n + }); + } + } else wx.showToast({ + title: "暂无更多", + icon: "none" + }), a.data.page.page > 1 && a.setData(e({}, "page.page", a.data.page.page - 1)); + }, function(e, t) { + console.log(t); + }); + }, + newTalk: function() { + wx.navigateTo({ + url: "./newTalk" + }); + }, + checkMyTalk: function() { + wx.navigateTo({ + url: "./myTalk" + }); + }, + checkDetail: function(e) { + var t = e.currentTarget.dataset.id; + wx.navigateTo({ + url: "./talkDetail?trifleMyselfId=" + t + }); + }, + clickVideo: function() {}, + onLoad: function(e) {}, + getMenuIsShow: function() { + var e = this; + t.restAjax.get(t.restAjax.path(t.apis.getBtnIsShow, [ t.baseUrls.requestUrl, "talk" ]), null, { + headers: { + token: t.globalData.token + } + }, function(t, a) { + null != a && null != a ? e.setData({ + isShowMenu: 1 == a.isShow + }) : e.setData({ + isShowMenu: !1 + }); + }, function(t, a) { + e.setData({ + isShowMenu: !1 + }); + }); + }, + onReady: function() {}, + onShow: function() { + this.setData({ + token: t.globalData.token + }), this.getTalkList(), this.getMenuIsShow(); + }, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() { + var t = this.data.page.page + 1; + this.setData(e({}, "page.page", t)), this.getTalkList(); + }, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/talk/talk.json b/pages/talk/talk.json new file mode 100644 index 0000000..c62683f --- /dev/null +++ b/pages/talk/talk.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "公众咨询" +} \ No newline at end of file diff --git a/pages/talk/talk.wxml b/pages/talk/talk.wxml new file mode 100644 index 0000000..ee72ff1 --- /dev/null +++ b/pages/talk/talk.wxml @@ -0,0 +1,34 @@ + + + + + + {{item.content}} + + + + + + + + + + + + + + + + + + + + + ++ diff --git a/pages/talk/talk.wxss b/pages/talk/talk.wxss new file mode 100644 index 0000000..ad9f595 --- /dev/null +++ b/pages/talk/talk.wxss @@ -0,0 +1,144 @@ +.talk-container { + margin-bottom: 100rpx; +} + +.talk { + background-color: #fff; + margin-bottom: 10rpx; + padding: 20rpx; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + border-radius: 50%; + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.talk-content { + font-size: 30rpx; + line-height: 40rpx; + margin-bottom: 20rpx; +} + +.reply { + background-color: #eee; + margin-top: 10rpx; + padding: 20rpx; +} + +.reply-content { + padding-left: 100rpx; +} + +.photo-box { + display: inline-block; + height: 180rpx; + margin-right: 2%; + overflow: hidden; + position: relative; + text-align: center; + width: 32%; +} + +.photo-box:nth-child(3n) { + margin-right: 0; +} + +.photo-box image { + height: 100%; +} + +.my-talk { + background-color: #fff; + bottom: 0; + color: #f55054; + font-size: 32rpx; + left: 0; + line-height: 100rpx; + right: 0; +} + +.my-talk,.new-talk { + position: fixed; + text-align: center; +} + +.new-talk { + background-color: #f55054; + border-radius: 50%; + bottom: 120rpx; + color: #fff; + font-size: 60rpx; + height: 120rpx; + line-height: 120rpx; + right: 20rpx; + width: 120rpx; +} + +.video-box { + height: auto!important; + width: 65%; +} + +.video-box video { + width: 100%; +} + +.no-data { + margin-top: 150rpx; + text-align: center; +} + +.no-data image { + width: 300rpx; +} + +.photo-one { + height: auto; + width: 50%; +} + +.photo-one image { + max-width: 100%; +} + +.photo-four image,.photo-more image { + height: auto; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 100%; +} + +.photo-four:nth-child(3) { + margin-right: 2%; +} \ No newline at end of file diff --git a/pages/talk/talkDetail.js b/pages/talk/talkDetail.js new file mode 100644 index 0000000..9fce25a --- /dev/null +++ b/pages/talk/talkDetail.js @@ -0,0 +1,226 @@ +var e = getApp(); + +Page({ + data: { + sourceUrl: e.baseUrls.sourceUrl, + trifleMyselfId: "", + token: e.globalData.token, + talkDetail: {}, + serviceUrl: e.baseUrls.serviceUrl, + baseImgUrl: e.baseUrls.baseImgUrl, + reply: "", + userIcon: "", + userName: "", + replyList: [], + goodCount: 0, + isClickGood: "no", + clickGoodPeople: [], + isGetFocus: !1, + placeholder: "讨论一下", + replyTo: "", + replyUserName: "" + }, + getTalkDetail: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getTalkDetail, [ e.baseUrls.requestUrl, t.data.trifleMyselfId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + a.photo && (a.photo = a.photo.split(",")), t.setData({ + talkDetail: a + }); + }, function(e, t) { + console.log(t); + }); + }, + doReplyTalk: function() { + var t = this, a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + userName: t.data.userName, + trifleMyselfId: t.data.trifleMyselfId + }; + e.restAjax.post(e.restAjax.path(e.apis.replyTalk, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (wx.showToast({ + title: "评论成功!", + icon: "success" + }), t.setData({ + reply: "" + }), t.getReplyList()); + }, function(e, t) { + console.log(t); + }); + }, + getReplyList: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getTalkReplyList, [ e.baseUrls.requestUrl ]), { + trifleMyselfId: t.data.trifleMyselfId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + replyList: a + }); + }, function(e, t) { + console.log(t); + }); + }, + getGoodCount: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.getTalkGoodCount, [ e.baseUrls.requestUrl ]), { + trifleMyselfId: t.data.trifleMyselfId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + goodCount: a.data + }); + }, function(e, t) { + console.log(t); + }); + }, + getIsClickGood: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.talkIsClicked, [ e.baseUrls.requestUrl, t.data.trifleMyselfId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + t.setData({ + isClickGood: a + }); + }, function(e, t) { + console.log(t); + }); + }, + toggleGood: function() { + "no" == this.data.isClickGood ? this.clickGood() : this.cancelGood(); + }, + getClickedPeople: function() { + var t = this; + e.restAjax.get(e.restAjax.path(e.apis.talkClickPeople, [ e.baseUrls.requestUrl ]), { + page: 1, + rows: 10, + trifleMyselfId: t.data.trifleMyselfId + }, { + headers: { + token: t.data.token + } + }, function(e, a) { + console.log(a), t.setData({ + clickGoodPeople: a.rows + }); + }, function(e, t) { + console.log(t); + }); + }, + clickGood: function() { + var t = this, a = { + trifleMyselfId: t.data.trifleMyselfId, + userName: t.data.userName, + headPortrait: t.data.userIcon + }; + e.restAjax.post(e.restAjax.path(e.apis.talkClickGood, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.getGoodCount(), t.getClickedPeople(), t.getIsClickGood()); + }, function(e, t) { + console.log(t); + }); + }, + cancelGood: function() { + var t = this; + e.restAjax.delete(e.restAjax.path(e.apis.talkCancelGood, [ e.baseUrls.requestUrl, t.data.trifleMyselfId ]), {}, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (t.getGoodCount(), t.getClickedPeople(), t.getIsClickGood()); + }, function(e, t) { + console.log(t); + }); + }, + getFocus: function(e) { + var t = e.currentTarget.dataset.user, a = e.currentTarget.dataset.id, o = e.currentTarget.dataset.name; + this.setData({ + isGetFocus: !0, + placeholder: "回复" + t + ":", + replyTo: a, + replyUserName: o + }); + }, + inputBlur: function() { + this.data.reply || this.setData({ + placeholder: "讨论一下", + isGetFocus: !1 + }); + }, + doReply: function() { + this.data.replyTo ? this.doReplyReply() : this.doReplyTalk(); + }, + doReplyReply: function() { + var t = this, a = { + content: t.data.reply, + headPortrait: t.data.userIcon, + userName: t.data.userName, + trifleMyselfId: t.data.trifleMyselfId, + commentId: t.data.replyTo, + replyCommentId: t.data.replyTo, + replyUserName: t.data.replyUserName + }; + e.restAjax.post(e.restAjax.path(e.apis.replyTalk, [ e.baseUrls.requestUrl ]), a, { + headers: { + token: t.data.token + } + }, function(e, a) { + "200" == e && (wx.showToast({ + title: "评论成功!", + icon: "success" + }), t.getReplyList(), t.setData({ + reply: "", + replyTo: "", + replyUserName: "", + placeholder: "讨论一下" + })); + }, function(e, t) { + console.log(t); + }); + }, + viewImg: function(e) { + for (var t = this.data.serviceUrl + this.data.baseImgUrl + e.currentTarget.dataset.id, a = [], o = 0; o < this.data.talkDetail.photo.length; o++) { + var s = this.data.serviceUrl + this.data.baseImgUrl + this.data.talkDetail.photo[o]; + a.push(s); + } + wx.previewImage({ + current: t, + urls: a + }); + }, + onLoad: function(t) { + this.setData({ + trifleMyselfId: t.trifleMyselfId, + userIcon: wx.getStorageSync("userIcon"), + userName: wx.getStorageSync("name"), + token: e.globalData.token + }), this.getTalkDetail(), this.getReplyList(), this.getGoodCount(), this.getIsClickGood(), + this.getClickedPeople(); + }, + onReady: function() {}, + onShow: function() {}, + onHide: function() {}, + onUnload: function() {}, + onPullDownRefresh: function() {}, + onReachBottom: function() {}, + onShareAppMessage: function() {} +}); \ No newline at end of file diff --git a/pages/talk/talkDetail.json b/pages/talk/talkDetail.json new file mode 100644 index 0000000..b25ed75 --- /dev/null +++ b/pages/talk/talkDetail.json @@ -0,0 +1,25 @@ +{ + "usingComponents": { + "van-tabbar": "/vant/dist/tabbar/index", + "van-tabbar-item": "/vant/dist/tabbar-item/index", + "van-swipe-cell": "/vant/dist/swipe-cell/index", + "van-cell-group": "/vant/dist/cell-group/index", + "van-cell": "/vant/dist/cell/index", + "van-empty": "/vant/dist/empty/index", + "van-action-sheet": "/vant/dist/action-sheet/index", + "van-submit-bar": "/vant/dist/submit-bar/index", + "van-stepper": "/vant/dist/stepper/index", + "van-image": "/vant/dist/image/index", + "van-loading": "/vant/dist/loading/index", + "van-switch": "/vant/dist/switch/index", + "van-tab": "/vant/dist/tab/index", + "van-tabs": "/vant/dist/tabs/index", + "van-picker": "/vant/dist/picker/index", + "van-popup": "/vant/dist/popup/index", + "van-dropdown-menu": "/vant/dist/dropdown-menu/index", + "van-dropdown-item": "/vant/dist/dropdown-item/index", + "van-collapse": "/vant/dist/collapse/index", + "van-collapse-item": "/vant/dist/collapse-item/index" + }, + "navigationBarTitleText": "微事我言" +} \ No newline at end of file diff --git a/pages/talk/talkDetail.wxml b/pages/talk/talkDetail.wxml new file mode 100644 index 0000000..45eac26 --- /dev/null +++ b/pages/talk/talkDetail.wxml @@ -0,0 +1,56 @@ + + + + + {{talkDetail.content}} + + + + + + + + + + + + + + + + + + + {{goodCount}}人点赞 + + + + + + + + + + + {{item.content}} + + + {{child.userName}} 回复 {{child.replyUserName}} : {{child.content}} + + + + + + diff --git a/pages/talk/talkDetail.wxss b/pages/talk/talkDetail.wxss new file mode 100644 index 0000000..7ee9c21 --- /dev/null +++ b/pages/talk/talkDetail.wxss @@ -0,0 +1,181 @@ +.talk { + background-color: #fff; + border-bottom: 1px solid #ddd; + padding: 20rpx; +} + +.talk:last-child { + border-bottom: none; +} + +.talk-user,.user-info { + display: flex; + justify-content: space-between; + margin-bottom: 10rpx; +} + +.user-info image { + border-radius: 50%; + height: 80rpx; + margin-right: 20rpx; + width: 80rpx; +} + +.good image { + height: 40rpx; + margin-top: -8rpx; + vertical-align: middle; + width: 40rpx; +} + +.name { + font-size: 32rpx; + line-height: 50rpx; +} + +.time { + color: #888; + font-size: 24rpx; +} + +.good text { + line-height: 80rpx; +} + +.talk-content { + font-size: 30rpx; + line-height: 40rpx; +} + +.reply-container { + margin-bottom: 100rpx; +} + +.reply { + background-color: #fff; + border-bottom: 1px solid #ddd; + padding: 20rpx; +} + +.reply:last-child { + border-bottom: none; +} + +.reply-content,.reply-reply { + padding-left: 100rpx; +} + +.reply-content { + margin-bottom: 20rpx; +} + +.photo-box { + display: inline-block; + height: 150rpx; + margin-right: 2%; + overflow: hidden; + position: relative; + text-align: center; + width: 32%; +} + +.photo-box:nth-child(3n) { + margin-right: 0; +} + +.click-good { + background-color: #fff; + display: flex; + justify-content: space-between; + margin: 20rpx 0; + padding: 20rpx; +} + +.good-text { + text-align: center; + width: 20%; +} + +.good-text image { + height: 40rpx; + width: 40rpx; +} + +.good-count { + font-size: 24rpx; +} + +.good-avatar { + width: 80%; +} + +.good-avatar image { + border: 1px solid #fff; + border-radius: 50%; + height: 50rpx; + margin: 12rpx 0 0 -15rpx; + width: 50rpx; +} + +.good-avatar image:first-child { + margin-left: 0; +} + +.reply .click-good { + background: none; +} + +.edit-reply { + background-color: #fff; + border-top: 1px solid #ddd; + bottom: 0; + left: 0; + padding: 20rpx; + position: fixed; + right: 0; +} + +.edit-reply input { + background-color: #eee; + border-radius: 40rpx; + height: 60rpx; + padding: 0 20rpx; +} + +.video-box { + height: auto!important; + width: 65%; +} + +.video-box video { + width: 100%; +} + +.reply-row { + background-color: #f7f7f7; + line-height: 60rpx; + padding: 0 10rpx; + word-break: break-all; +} + +.reply-row text { + font-weight: 700; +} + +.photo-one { + height: auto; + width: 50%; +} + +.photo-one image { + max-width: 100%; +} + +.photo-more image { + height: auto; + left: 50%; + position: absolute; + top: 50%; + transform: translate(-50%,-50%); + width: 100%; +} \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..9235c0a --- /dev/null +++ b/project.config.json @@ -0,0 +1,29 @@ +{ + "appid": "wxa5e5552f8a3b1616", + "compileType": "miniprogram", + "libVersion": "2.31.1", + "packOptions": { + "ignore": [], + "include": [] + }, + "setting": { + "coverView": true, + "es6": true, + "postcss": true, + "minified": true, + "enhance": true, + "showShadowRootInWxmlPanel": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "condition": false + }, + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + } +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..200ac2c --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,8 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "city_card", + "setting": { + "compileHotReLoad": true, + "urlCheck": false + } +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..cd24f35 --- /dev/null +++ b/sitemap.json @@ -0,0 +1,7 @@ +{ + "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", + "rules": [{ + "action": "allow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/WSCoordinate.js b/utils/WSCoordinate.js new file mode 100644 index 0000000..e64436f --- /dev/null +++ b/utils/WSCoordinate.js @@ -0,0 +1,67 @@ +function t(t, a) { + return a < 72.004 || a > 137.8347 || t < .8293 || t > 55.8271; +} + +function a(a, n) { + var i = .006693421622965943, u = 6378245, e = 3.141592653589793; + if (t(a, n)) a, n; else { + var r = function(t, a) { + var n = 3.141592653589793, i = 2 * t - 100 + 3 * a + .2 * a * a + .1 * t * a + .2 * Math.sqrt(Math.abs(t)); + return i += 2 * (20 * Math.sin(6 * t * n) + 20 * Math.sin(2 * t * n)) / 3, i += 2 * (20 * Math.sin(a * n) + 40 * Math.sin(a / 3 * n)) / 3, + i += 2 * (160 * Math.sin(a / 12 * n) + 320 * Math.sin(a * n / 30)) / 3; + }(n - 105, a - 35), o = function(t, a) { + var n = 3.141592653589793, i = 300 + t + 2 * a + .1 * t * t + .1 * t * a + .1 * Math.sqrt(Math.abs(t)); + return i += 2 * (20 * Math.sin(6 * t * n) + 20 * Math.sin(2 * t * n)) / 3, i += 2 * (20 * Math.sin(t * n) + 40 * Math.sin(t / 3 * n)) / 3, + i += 2 * (150 * Math.sin(t / 12 * n) + 300 * Math.sin(t / 30 * n)) / 3; + }(n - 105, a - 35), s = a / 180 * e, h = Math.sin(s); + h = 1 - i * h * h; + var M = Math.sqrt(h); + a += r = 180 * r / (u * (1 - i) / (h * M) * e), n += o = 180 * o / (u / M * Math.cos(s) * e); + } + return { + latitude: a, + longitude: n + }; +} + +function n(t, a, n) { + return t.latitude >= Math.min(a.latitude, n.latitude) && t.latitude <= Math.max(a.latitude, n.latitude) && t.longitude >= Math.min(a.longitude, n.longitude) && t.longitude <= Math.max(a.longitude, n.longitude); +} + +module.exports = { + isLocationOutOfChina: t, + transformFromWGSToGCJ: a, + transformFromGCJToBaidu: function(t, a) { + var n = 52.35987755982988, i = Math.sqrt(a * a + t * t) + 2e-5 * Math.sin(t * n), u = Math.atan2(t, a) + 3e-6 * Math.cos(a * n); + return { + latitude: i * Math.sin(u) + .006, + longitude: i * Math.cos(u) + .0065 + }; + }, + transformFromBaiduToGCJ: function(t, a) { + var n = 52.35987755982988, i = a - .0065, u = t - .006, e = Math.sqrt(i * i + u * u) - 2e-5 * Math.sin(u * n), r = Math.atan2(u, i) - 3e-6 * Math.cos(i * n); + return { + latitude: e * Math.sin(r), + longitude: e * Math.cos(r) + }; + }, + transformFromGCJToWGS: function(t, i) { + for (var u = t - .5, e = t + .5, r = i - .5, o = i + .5, s = 1, h = 30; ;) { + var M = a(u, r), d = a(u, o), l = a(e, r), f = a((u + e) / 2, (r + o) / 2); + if (s = Math.abs(f.latitude - t) + Math.abs(f.longitude - i), h-- <= 0 || s <= 1e-5) return { + latitude: (u + e) / 2, + longitude: (r + o) / 2 + }; + n({ + latitude: t, + longitude: i + }, M, f) ? (e = (u + e) / 2, o = (r + o) / 2) : n({ + latitude: t, + longitude: i + }, d, f) ? (e = (u + e) / 2, r = (r + o) / 2) : n({ + latitude: t, + longitude: i + }, l, f) ? (u = (u + e) / 2, o = (r + o) / 2) : (u = (u + e) / 2, r = (r + o) / 2); + } + } +}; \ No newline at end of file diff --git a/utils/api.js b/utils/api.js new file mode 100644 index 0000000..807bb19 --- /dev/null +++ b/utils/api.js @@ -0,0 +1,181 @@ +var baseUrls = { + baseImgUrl: "route/file/download/true/", + requestUrl: "https://www.wlcbsyzl.cn/systemmunicipalmini/", + communityUrl: "https://www.wlcbsyzl.cn/populationhouse/", + serviceUrl: "https://www.wlcbsyzl.cn/usercenter/", + caseUrl: "https://www.wlcbsyzl.cn/case/", + sourceUrl: "https://www.wlcbsyzl.cn/systemmunicipalmini/assets/weCharMiniFile/images/", + baseCardUrl: "https://www.wlcbsyzl.cn/citycard/route/file/download/true/", + url: "https://www.wlcbsyzl.cn/citycard/" +} + + + + +var apis = { + doLogin: "{baseUrl}wechat-miniapp/sign/default", + getCommunityList: "{baseUrl}app/community/list", + getCommunityListPage: "{baseUrl}app/community/listpagecommunity", + joinCommunity: "{baseUrl}app/joinCommunity/save", + getArea: "{baseUrl}app/area/listbyparentid/{areaId}", + getHouse: "{baseUrl}app/residential/list", + mycommunity: "{baseUrl}app/joinCommunity/list", + quitCommunity: "{baseUrl}app/joinCommunity/remove/{ids}", + getDictionary: "{baseUrl}app/data/listbyparentid/{dataParentId}", + getResidential: "{baseUrl}app/residential/get/{residentialId}", + submitCheckIn: "{baseUrl}app/partymemberreport/save", + getOrg: "{baseUrl}app/organization/save", + uploadImg: "{baseUrl}app/file/uploadimage", + uploadVideo: "{baseUrl}app/file/uploadvideo", + uploadAudio: "{baseUrl}app/file/uploadaudio", + submitSettle: "{baseUrl}app/organization/save", + getOrgList: "{baseUrl}app/organization/listpageorganization", + getMineOrg: "{baseUrl}app/organization/myorganize", + doUpdateOrg: "{baseUrl}app/organization/updateorganization/{organizationId}", + submitHelp: "{baseUrl}app/neighbor/save", + getHelpList: "{baseUrl}app/neighbor/listpageneighbor", + getHelpDetail: "{baseUrl}app/neighbor/get/{neighborId}", + doReplyHelp: "{baseUrl}app/neighborcomment/save", + getReplyList: "{baseUrl}app/neighborcomment/list", + submitTalk: "{baseUrl}app/triflemyself/save", + getTalkList: "{baseUrl}app/triflemyself/listpagetriflemyself", + getTalkDetail: "{baseUrl}app/triflemyself/get/{trifleMyselfId}", + replyTalk: "{baseUrl}app/comment/save", + getTalkReplyList: "{baseUrl}app/comment/list", + submitNeighborCircle: "{baseUrl}app/neighborcircle/save", + getCircleList: "{baseUrl}app/neighborcircle/listpageneighborcircle", + getCircleDetail: "{baseUrl}app/neighborcircle/get/{neighborCircleId}", + submitCircleReply: "{baseUrl}app/neighborcirclecomment/save", + getCircleReplyList: "{baseUrl}app/neighborcirclecomment/list", + circleClickGood: "{baseUrl}app/neighborcirclefabulous/save", + getCircleGoodCount: "{baseUrl}app/neighborcirclefabulous/count", + circleIsClicked: "{baseUrl}app/neighborcirclefabulous/has-fabulous/{neighborCircleId}", + cancelGood: "{baseUrl}app/neighborcirclefabulous/cancel/{ids}", + getTalkGoodCount: "{baseUrl}app/fabulous/count", + talkIsClicked: "{baseUrl}app/fabulous/has-fabulous/{neighborCircleId}", + talkClickPeople: "{baseUrl}app/fabulous/listpagefabulous", + talkClickGood: "{baseUrl}app/fabulous/save", + talkCancelGood: "{baseUrl}app/fabulous/cancel/{ids}", + getNewsType: "{baseUrl}app/newstype/list", + getNewsList: "{baseUrl}app/news/listpagenews", + getNewsDetail: "{baseUrl}app/news/get/{newsId}", + submitNewsReply: "{baseUrl}app/newscomment/save", + getNewsReplyList: "{baseUrl}app/newscomment/list", + isCollectNews: "{baseUrl}app/newscollection/has-collection/{newsId}", + doCollectNews: "{baseUrl}app/newscollection/save", + cancelCollectNews: "{baseUrl}app/newscollection/cancel/{ids}", + getDefaultSyzlCard: "{baseUrl}app/card/get-default", + + + getChildArea: "{baseUrl}app/area/listallbyparentid/{areaParentId}", + caseType: "{baseUrl}app/casetype/list-ztree", + caseTypeChild: "{baseUrl}app/casetype/listall-byparentid", + submitReport: "{baseUrl}app/report/save-miniapp", + getHelpCount: "{baseUrl}app/neighbor/count", + getCardSyzlDetail: "{baseUrl}app/card/get/{cardId}", + submitCreateCard: "{baseUrl}app/card/save", + doUpdateCard: "{baseUrl}app/gridmini/updategridmini/{gridMiniId}", + isCheckedIn: "{baseUrl}app/partymemberreport/has-report/{community}", + checkGrid: "{baseUrl}app/gridmini/authentication", + getGridListPage: "{baseUrl}app/gridmini/listpagegridmini", + getGridList: "{baseUrl}app/gridmini/list", + myCaseList: "{baseUrl}app/report/listpage-me", + getLog: "{baseUrl}app/reportlog/list-activity/{businessId}", + myCaseDetail: "{baseUrl}app/report/get/{reportId}", + updateCaseStatus: "{baseUrl}app/report/updatereport/{reportId}", + handleCase: "{baseUrl}app/reporthandle/save", + getHandleList: "{baseUrl}app/reporthandle/list", + getGirdDetail: "{baseUrl}app/gridmini/get/{gridMiniId}", + caseRedundancies: "{baseUrl}app/report/reassignment/{reportId}", + getMineIsGrid: "{baseUrl}app/gridmini/isGridUser", + getBtnIsShow: "{baseUrl}app/btnshow/getbytype/{type}", + doUploadImg: "app/file/uploadimage", + doUploadVideo: "app/file/uploadvideo", + doUploadAudio: "app/file/uploadaudio", + getMenuList: "app/cardconfigcolumngroup/list", + getMomentsList: "app/configcolumndata/list/{configColumnId}", + doSaveMoments: "app/configcolumndata/save/{configColumnId}", + getMomentsField: "app/configcolumndata/listfield/{configColumnId}", + doDelMoment: "app/configcolumndata/delete/{configColumnId}/{uid}", + getMomentsContent: "app/configcolumndata/get/{configColumnId}/{uid}", + getMainColumn: "app/cardconfigcolumn/listhome", + getColumnListByGroupId: "app/cardconfigcolumn/list", + getMainMoment: "app/configcolumndata/list/{configColumnId}", + getMineColumnList: "app/configcolumnset/list", + doSaveColumnDisplay: "app/configcolumnset/savedisplay", + doSaveColumnName: "app/configcolumnset/savename", + doOrderColumn: "app/configcolumnset/saveorder", + doSaveCollect: "app/contentcollect/save", + doSaveLike: "app/contentlike/save", + getPosterFavorList: "app/cardtemplate/mylistposter", + getColumnContentHandle: "app/contentcomment/countlist/{projectId}/{businessIds}", + doSaveComment: "app/contentcomment/save", + getCommentList: "app/contentcomment/listpagerelease/{projectId}/{businessId}", + doDelComment: "app/contentcomment/remove/{ids}", + getCardList: "app/cardtemplate/list", + getCardDetail: "app/cardtemplate/get/{cardTemplateId}", + creatCard: "app/cardtemplateuse/save", + getFileId: "app/pictruestemplatearea/createfile/{picturesTemplateAreaId}", + getMyCard: "app/cardtemplateuse/list", + getMyCardDetail: "app/cardtemplateuse/get/{cardTemplateUseId}", + updateMyCard: "app/cardtemplateuse/update/{cardTemplateUseId}", + setDefaultCard: "app/cardtemplateuse/default/{cardTemplateUseId}", + deleteCard: "app/cardtemplateuse/remove/{ids}", + getDefaultCard: "app/cardtemplateuse/getdefault", + getBrowUserCard: "app/cardtemplateuse/getdefault/{userId}", + shareRecord: "app/cardtemplatedispatch/save", + checkRecord: "app/cardtemplatescans/save", + shareCard: "app/cardtemplateuse/getdispatch/{cardTemplateUseId}", + includedCard: "app/cardtemplateusebag/save", + otherCardList: "app/cardtemplateusebag/listpage", + setTop: "app/cardtemplateusebag/updatetop/{cardTemplateUseBagId}/{cardTemplateUseTop}", + getCardUseId: "app/cardtemplatedispatch/get/{cardTemplateDispatchId}", + getBrowseHistoryList: "app/cardtemplatescans/listpage/1", + getCardBrowUserList: "app/cardtemplatescans/listhome", + getDictionaryList: "app/data/listallbyparentid/{dataParentId}", + getAreaDictionaryList: "app/area/listbyparentid/{areaParentId}", + getPayState: "app/cardcharge/getprice", +} + + + +// a(e, "), a(e, "), +// a(e, "), a(e, "), +// a(e, "), a(e, ""), +// a(e, "), a(e, "), +// a(e, "), a(e, "), +// a(e, "), a(e, "), +// a(e, "), a(e, "), +// a(e, "), a(e, ), +// a(e, "getGirdDetail", "{baseUrl}app/gridmini/get/{gridMiniId}"), a(e, "caseRedundancies", "{baseUrl}app/report/reassignment/{reportId}"), +// a(e, "getMineIsGrid", "{baseUrl}app/gridmini/isGridUser"), a(e, "getBtnIsShow", "{baseUrl}app/btnshow/getbytype/{type}"), +// a(e, "doUploadImg", "app/file/uploadimage"), a(e, "doUploadVideo", "app/file/uploadvideo"), +// a(e, "doUploadAudio", "app/file/uploadaudio"), a(e, "getMenuList", "app/cardconfigcolumngroup/list"), +// a(e, "getMomentsList", "app/configcolumndata/list/{configColumnId}"), a(e, "doSaveMoments", "app/configcolumndata/save/{configColumnId}"), +// a(e, "getMomentsField", "app/configcolumndata/listfield/{configColumnId}"), a(e, "doDelMoment", "app/configcolumndata/delete/{configColumnId}/{uid}"), +// a(e, "getMomentsContent", "app/configcolumndata/get/{configColumnId}/{uid}"), a(e, "getMainColumn", "app/cardconfigcolumn/listhome"), +// a(e, "getColumnListByGroupId", "app/cardconfigcolumn/list"), a(e, "getMainMoment", "app/configcolumndata/list/{configColumnId}"), +// a(e, "getMineColumnList", "app/configcolumnset/list"), a(e, "doSaveColumnDisplay", "app/configcolumnset/savedisplay"), +// a(e, "doSaveColumnName", "app/configcolumnset/savename"), a(e, "doOrderColumn", "app/configcolumnset/saveorder"), +// a(e, "doSaveCollect", "app/contentcollect/save"), a(e, "doSaveLike", "app/contentlike/save"), +// a(e, "getPosterFavorList", "app/cardtemplate/mylistposter"), a(e, "getColumnContentHandle", "app/contentcomment/countlist/{projectId}/{businessIds}"), +// a(e, "doSaveComment", "app/contentcomment/save"), a(e, "getCommentList", "app/contentcomment/listpagerelease/{projectId}/{businessId}"), +// a(e, "doDelComment", "app/contentcomment/remove/{ids}"), a(e, "getCardList", "app/cardtemplate/list"), +// a(e, "getCardDetail", "app/cardtemplate/get/{cardTemplateId}"), a(e, "creatCard", "app/cardtemplateuse/save"), +// a(e, "getFileId", "app/pictruestemplatearea/createfile/{picturesTemplateAreaId}"), +// a(e, "getMyCard", "app/cardtemplateuse/list"), a(e, "getMyCardDetail", "app/cardtemplateuse/get/{cardTemplateUseId}"), +// a(e, "updateMyCard", "app/cardtemplateuse/update/{cardTemplateUseId}"), a(e, "setDefaultCard", "app/cardtemplateuse/default/{cardTemplateUseId}"), +// a(e, "deleteCard", "app/cardtemplateuse/remove/{ids}"), a(e, "getDefaultCard", "app/cardtemplateuse/getdefault"), +// a(e, "getBrowUserCard", "app/cardtemplateuse/getdefault/{userId}"), a(e, "shareRecord", "app/cardtemplatedispatch/save"), +// a(e, "checkRecord", "app/cardtemplatescans/save"), a(e, "shareCard", "app/cardtemplateuse/getdispatch/{cardTemplateUseId}"), +// a(e, "includedCard", "app/cardtemplateusebag/save"), a(e, "otherCardList", "app/cardtemplateusebag/listpage"), +// a(e, "setTop", "app/cardtemplateusebag/updatetop/{cardTemplateUseBagId}/{cardTemplateUseTop}"), +// a(e, "getCardUseId", "app/cardtemplatedispatch/get/{cardTemplateDispatchId}"), a(e, "getBrowseHistoryList", "app/cardtemplatescans/listpage/1"), +// a(e, "getCardBrowUserList", "app/cardtemplatescans/listhome"), a(e, "getDictionaryList", "app/data/listallbyparentid/{dataParentId}"), +// a(e, "getAreaDictionaryList", "app/area/listbyparentid/{areaParentId}"), a(e, "getPayState", "app/cardcharge/getprice"), +// e); + +module.exports = { + apis, + baseUrls +} \ No newline at end of file diff --git a/utils/md5.js b/utils/md5.js new file mode 100644 index 0000000..dbc6f76 --- /dev/null +++ b/utils/md5.js @@ -0,0 +1,82 @@ +function r(r, n) { + var t = (65535 & r) + (65535 & n); + return (r >> 16) + (n >> 16) + (t >> 16) << 16 | 65535 & t; +} + +function n(n, t, e, u, o, c) { + return r((f = r(r(t, n), r(u, c))) << (a = o) | f >>> 32 - a, e); + var f, a; +} + +function t(r, t, e, u, o, c, f) { + return n(t & e | ~t & u, r, t, o, c, f); +} + +function e(r, t, e, u, o, c, f) { + return n(t & u | e & ~u, r, t, o, c, f); +} + +function u(r, t, e, u, o, c, f) { + return n(t ^ e ^ u, r, t, o, c, f); +} + +function o(r, t, e, u, o, c, f) { + return n(e ^ (t | ~u), r, t, o, c, f); +} + +function c(n) { + for (var c = 1732584193, f = -271733879, a = -1732584194, i = 271733878, h = 0; h < n.length; h += 16) { + var l = c, v = f, g = a, d = i; + c = t(c, f, a, i, n[h + 0], 7, -680876936), i = t(i, c, f, a, n[h + 1], 12, -389564586), + a = t(a, i, c, f, n[h + 2], 17, 606105819), f = t(f, a, i, c, n[h + 3], 22, -1044525330), + c = t(c, f, a, i, n[h + 4], 7, -176418897), i = t(i, c, f, a, n[h + 5], 12, 1200080426), + a = t(a, i, c, f, n[h + 6], 17, -1473231341), f = t(f, a, i, c, n[h + 7], 22, -45705983), + c = t(c, f, a, i, n[h + 8], 7, 1770035416), i = t(i, c, f, a, n[h + 9], 12, -1958414417), + a = t(a, i, c, f, n[h + 10], 17, -42063), f = t(f, a, i, c, n[h + 11], 22, -1990404162), + c = t(c, f, a, i, n[h + 12], 7, 1804603682), i = t(i, c, f, a, n[h + 13], 12, -40341101), + a = t(a, i, c, f, n[h + 14], 17, -1502002290), c = e(c, f = t(f, a, i, c, n[h + 15], 22, 1236535329), a, i, n[h + 1], 5, -165796510), + i = e(i, c, f, a, n[h + 6], 9, -1069501632), a = e(a, i, c, f, n[h + 11], 14, 643717713), + f = e(f, a, i, c, n[h + 0], 20, -373897302), c = e(c, f, a, i, n[h + 5], 5, -701558691), + i = e(i, c, f, a, n[h + 10], 9, 38016083), a = e(a, i, c, f, n[h + 15], 14, -660478335), + f = e(f, a, i, c, n[h + 4], 20, -405537848), c = e(c, f, a, i, n[h + 9], 5, 568446438), + i = e(i, c, f, a, n[h + 14], 9, -1019803690), a = e(a, i, c, f, n[h + 3], 14, -187363961), + f = e(f, a, i, c, n[h + 8], 20, 1163531501), c = e(c, f, a, i, n[h + 13], 5, -1444681467), + i = e(i, c, f, a, n[h + 2], 9, -51403784), a = e(a, i, c, f, n[h + 7], 14, 1735328473), + c = u(c, f = e(f, a, i, c, n[h + 12], 20, -1926607734), a, i, n[h + 5], 4, -378558), + i = u(i, c, f, a, n[h + 8], 11, -2022574463), a = u(a, i, c, f, n[h + 11], 16, 1839030562), + f = u(f, a, i, c, n[h + 14], 23, -35309556), c = u(c, f, a, i, n[h + 1], 4, -1530992060), + i = u(i, c, f, a, n[h + 4], 11, 1272893353), a = u(a, i, c, f, n[h + 7], 16, -155497632), + f = u(f, a, i, c, n[h + 10], 23, -1094730640), c = u(c, f, a, i, n[h + 13], 4, 681279174), + i = u(i, c, f, a, n[h + 0], 11, -358537222), a = u(a, i, c, f, n[h + 3], 16, -722521979), + f = u(f, a, i, c, n[h + 6], 23, 76029189), c = u(c, f, a, i, n[h + 9], 4, -640364487), + i = u(i, c, f, a, n[h + 12], 11, -421815835), a = u(a, i, c, f, n[h + 15], 16, 530742520), + c = o(c, f = u(f, a, i, c, n[h + 2], 23, -995338651), a, i, n[h + 0], 6, -198630844), + i = o(i, c, f, a, n[h + 7], 10, 1126891415), a = o(a, i, c, f, n[h + 14], 15, -1416354905), + f = o(f, a, i, c, n[h + 5], 21, -57434055), c = o(c, f, a, i, n[h + 12], 6, 1700485571), + i = o(i, c, f, a, n[h + 3], 10, -1894986606), a = o(a, i, c, f, n[h + 10], 15, -1051523), + f = o(f, a, i, c, n[h + 1], 21, -2054922799), c = o(c, f, a, i, n[h + 8], 6, 1873313359), + i = o(i, c, f, a, n[h + 15], 10, -30611744), a = o(a, i, c, f, n[h + 6], 15, -1560198380), + f = o(f, a, i, c, n[h + 13], 21, 1309151649), c = o(c, f, a, i, n[h + 4], 6, -145523070), + i = o(i, c, f, a, n[h + 11], 10, -1120210379), a = o(a, i, c, f, n[h + 2], 15, 718787259), + f = o(f, a, i, c, n[h + 9], 21, -343485551), c = r(c, l), f = r(f, v), a = r(a, g), + i = r(i, d); + } + return [ c, f, a, i ]; +} + +function f(r) { + for (var n = "", t = 0; t < 4 * r.length; t++) n += "0123456789abcdef".charAt(r[t >> 2] >> t % 4 * 8 + 4 & 15) + "0123456789abcdef".charAt(r[t >> 2] >> t % 4 * 8 & 15); + return n; +} + +function a(r) { + for (var n = 1 + (r.length + 8 >> 6), t = new Array(16 * n), e = 0; e < 16 * n; e++) t[e] = 0; + for (e = 0; e < r.length; e++) t[e >> 2] |= (255 & r.charCodeAt(e)) << e % 4 * 8; + return t[e >> 2] |= 128 << e % 4 * 8, t[16 * n - 2] = 8 * r.length, t; +} + +module.exports = { + hexMD5: function(r) { + return f(c(a(r))); + } +}; \ No newline at end of file diff --git a/utils/request.js b/utils/request.js new file mode 100644 index 0000000..194819b --- /dev/null +++ b/utils/request.js @@ -0,0 +1,325 @@ +const api = require('./api'); +/** + * 例子 + */ + +var methods = { + POST_METHOD: 'POST', + DELETE_METHOD: 'DELETE', + PUT_METHOD: 'PUT', + GET_METHOD: 'GET' +}; + +/** + * 新增 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function postJson(url, args) { + return doAjax(url, methods.POST_METHOD, args); +} + +/** + * 删除 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function deleteForm(url, args) { + return doAjax(url, methods.DELETE_METHOD, args); +} + +/** + * 修改 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function putJson(url, args) { + return doAjax(url, methods.PUT_METHOD, args); +} + +/** + * 查询 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function getForm(url, args) { + return doAjax(url, methods.GET_METHOD, args); +} + +/** + * 执行上传 + * @param url + * @param method + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function doAjax(url, method, args) { + // var headers = {}; + // if (args != null && typeof (args.headers) != 'undefined' && args.headers != null) { + // headers = args.headers; + // } + return new Promise((success, errorback) => { + //构建请求Url + var requestUrl = api.baseUrls.url + url + wx.request({ + url: requestUrl, + method: method, + data: args.data || {}, + header: args.header || {}, + timeout: 50000, + dataType: 'json', + success: res => { + if (res.statusCode == 200) { + success(res) + } else { + errorback(res) + var hintMsg = '网络错误' + if (res.data && res.data.msg) { + hintMsg = res.data.msg + } + wx.showToast({ + title: hintMsg, + icon: 'none' + }) + } + }, + fail: err => { + wx.hideLoading({}) + errorback(err) + var hintMsg = '网络错误' + if (err.data && err.data.msg) { + hintMsg = err.data.msg + } + wx.showToast({ + title: hintMsg + '(100)', + icon: 'none' + }) + }, + }) + }) +} + +/** + * 检测是路径参数有重复值 + * @param pathArgArray + * @returns {boolean} + */ +function pathArgsHasSameValue(pathArgArray) { + var tempArgIndex = 0; + var tempArgs = pathArgArray[tempArgIndex]; + for (var i = (tempArgIndex + 1), item; item = pathArgArray[i]; i++) { + if (tempArgs == item) { + throw new Error('参数' + item + '有重复值!!!'); + } + if (i == pathArgArray.length - 1) { + tempArgs = pathArgArray[++tempArgIndex]; + i = tempArgIndex; + continue; + } + } +} + +/** + * 获取页面间传递的参数 + * @param url + */ +function getParamsArg(url) { + var params = url.split('?')[1]; + var paramsObj = {}; + if (typeof (params) == 'undefined' || params == null) { + return paramsObj; + } + var paramsKVs = params.split('&'); + for (var i = 0, item = null; item = paramsKVs[i++];) { + var kvs = item.split('='); + if (kvs.length == 1) { + paramsObj[kvs[0]] = null; + } + if (kvs.length == 2) { + paramsObj[kvs[0]] = decodeURI(kvs[1]); + } + } + return paramsObj; +} + +/** + * 构建路径 + * @param basePath 请求路径,{参数}, + * @param pathArgs 替换的路径参数,不能重复 + * @returns {*} + */ +function buildPath(basePath, pathArgs) { + var path = basePath; + if (!basePath || !(typeof (basePath) == 'string')) { + throw new Error('basePath必须为字符串!!!'); + } + if (!pathArgs || !Array.isArray(pathArgs)) { + throw new Error('pathArgs必须为数组!!!'); + } + var pathArgArray = basePath.match(/\{\w+\}/g); + if (!pathArgArray) { + return path; + } + pathArgsHasSameValue(pathArgArray); + for (var i = 0, item; item = pathArgArray[i]; i++) { + path = path.replace(item, pathArgs[i]); + } + return path; +} + +/** + * 通过form对象上传文件 + * @param url + * @param formData + * @param args + * @param successCallback + * @param errorCallback + * @param beforeCallback + * @param completeCallback + */ +function postFile(url, path, name, args, successCallback, errorCallback, completeCallback) { + var headers = {}; + if (args != null && typeof (args.headers) != 'undefined' && args.headers != null) { + headers = args.headers; + } + wx.uploadFile({ + filePath: path, + name: name, + url: url, + header: headers, + success: function (response) { + if (response.statusCode == 200) { + successCallback(response.statusCode, response.data, args); + } else { + if (errorCallback && typeof (errorCallback) == 'function') { + errorCallback(response.statusCode, response.data); + } + } + }, + fail: function (response) { + if (errorCallback && typeof errorCallback == 'function') { + errorCallback(response.statusCode, response.data) + } + }, + complete: function () { + if (completeCallback && typeof (completeCallback) == 'function') { + completeCallback(); + } + } + }) +}; +/** + * Promise 上传文件 + */ +function upload(url, params) { + return new Promise((success, errorback) => { + var requestUrl = api.baseUrls.url + url + wx.uploadFile({ + filePath: params.path, + name: params.name, + url: requestUrl, + header: params.header, + success: function (response) { + console.log('success') + if (response.statusCode == 200) { + success(response.data); + } else { + errorback(response) + if (typeof (response.data) != undefined) { + try { + var data = JSON.parse(response.data) + wx.showToast({ + title: data.msg, + icon: 'none' + }) + } catch (err) { + wx.showToast({ + title: '网络错误', + icon: 'error' + }) + } + } else { + wx.showToast({ + title: '网络错误', + icon: 'error' + }) + } + } + }, + fail: function (response) { + wx.hideLoading({}) + try { + if (typeof (response.data.msg) != undefined) { + wx.showToast({ + title: response.data.msg, + icon: 'none' + }) + } else { + wx.showToast({ + title: '网络错误(100)', + icon: 'error' + }) + } + } catch (err) { + wx.showToast({ + title: '网络错误(100)', + icon: 'error' + }) + } + } + }) + }) +} + +/** + * xss 转义 + * @param html + * @returns {string} + */ +function escape(html) { + return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') + .replace(//g, '>') + .replace(/'/g, ''').replace(/"/g, '"'); +} + +String.prototype.format = function (params) { + let s = this + for (let item in params) { + let re = new RegExp('{' + item + '}', 'gm') + s = s.replace(re, params[item]) + } + return s +} + + +module.exports = { + post: postJson, + delete: deleteForm, + put: putJson, + get: getForm, + params: getParamsArg, + path: buildPath, + escape: escape, + file: postFile, + upload: upload, + apis: api.apis +} \ No newline at end of file diff --git a/utils/restAjax.js b/utils/restAjax.js new file mode 100644 index 0000000..e3a8be6 --- /dev/null +++ b/utils/restAjax.js @@ -0,0 +1,239 @@ +const api = require('../utils/api'); + +var methods = { + POST_METHOD: 'POST', + DELETE_METHOD: 'DELETE', + PUT_METHOD: 'PUT', + GET_METHOD: 'GET' +}; + +/** + * 新增 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function postJson(url, dataObj, args, successCallback, errorCallback, completeCallback) { + doAjax(url, methods.POST_METHOD, dataObj, args, successCallback, errorCallback, completeCallback); +} + +/** + * 删除 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function deleteForm(url, dataObj, args, successCallback, errorCallback, completeCallback) { + doAjax(url, methods.DELETE_METHOD, dataObj, args, successCallback, errorCallback, completeCallback); +} + +/** + * 修改 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function putJson(url, dataObj, args, successCallback, errorCallback, completeCallback) { + doAjax(url, methods.PUT_METHOD, dataObj, args, successCallback, errorCallback, completeCallback); +} + +/** + * 查询 + * @param url + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function getForm(url, dataObj, args, successCallback, errorCallback, completeCallback) { + doAjax(url, methods.GET_METHOD, dataObj, args, successCallback, errorCallback, completeCallback); +} + +/** + * 执行上传 + * @param url + * @param method + * @param dataObj + * @param args + * @param successCallback + * @param errorCallback + * @param completeCallback + */ +function doAjax(url, method, dataObj, args, successCallback, errorCallback, completeCallback) { + var headers = {}; + if (args != null && typeof (args.headers) != 'undefined' && args.headers != null) { + headers = args.headers; + } + wx.request({ + url: url, + method: method, + data: dataObj, + header: headers, + dataType: 'json', + success: function (response) { + if (response.statusCode == 200) { + successCallback(response.statusCode, response.data, args); + } else { + if (errorCallback && typeof (errorCallback) == 'function') { + errorCallback(response.statusCode, response.data); + } + } + }, + fail: function (response) { + if (errorCallback && typeof errorCallback == 'function') { + errorCallback(response.statusCode, response) + } + }, + complete: function () { + if (completeCallback && typeof (completeCallback) == 'function') { + completeCallback(); + } + } + }) +} + +/** + * 检测是路径参数有重复值 + * @param pathArgArray + * @returns {boolean} + */ +function pathArgsHasSameValue(pathArgArray) { + var tempArgIndex = 0; + var tempArgs = pathArgArray[tempArgIndex]; + for (var i = (tempArgIndex + 1), item; item = pathArgArray[i]; i++) { + if (tempArgs == item) { + throw new Error('参数' + item + '有重复值!!!'); + } + if (i == pathArgArray.length - 1) { + tempArgs = pathArgArray[++tempArgIndex]; + i = tempArgIndex; + continue; + } + } +} + +/** + * 获取页面间传递的参数 + * @param url + */ +function getParamsArg(url) { + var params = url.split('?')[1]; + var paramsObj = {}; + if (typeof (params) == 'undefined' || params == null) { + return paramsObj; + } + var paramsKVs = params.split('&'); + for (var i = 0, item = null; item = paramsKVs[i++];) { + var kvs = item.split('='); + if (kvs.length == 1) { + paramsObj[kvs[0]] = null; + } + if (kvs.length == 2) { + paramsObj[kvs[0]] = decodeURI(kvs[1]); + } + } + return paramsObj; +} + +/** + * 构建路径 + * @param basePath 请求路径,{参数}, + * @param pathArgs 替换的路径参数,不能重复 + * @returns {*} + */ +function buildPath(basePath, pathArgs) { + var path = basePath; + if (!basePath || !(typeof (basePath) == 'string')) { + throw new Error('basePath必须为字符串!!!'); + } + if (!pathArgs || !Array.isArray(pathArgs)) { + throw new Error('pathArgs必须为数组!!!'); + } + var pathArgArray = basePath.match(/\{\w+\}/g); + if (!pathArgArray) { + return path; + } + pathArgsHasSameValue(pathArgArray); + for (var i = 0, item; item = pathArgArray[i]; i++) { + path = path.replace(item, pathArgs[i]); + } + return path; +} + +/** + * 通过form对象上传文件 + * @param url + * @param formData + * @param args + * @param successCallback + * @param errorCallback + * @param beforeCallback + * @param completeCallback + */ +function postFile(url, path, name, args, successCallback, errorCallback, completeCallback) { + var headers = {}; + if (args != null && typeof (args.headers) != 'undefined' && args.headers != null) { + headers = args.headers; + } + wx.uploadFile({ + filePath: path, + name: name, + url: url, + header: headers, + success: function (response) { + if (response.statusCode == 200) { + successCallback(response.statusCode, response.data, args); + } else { + if (errorCallback && typeof (errorCallback) == 'function') { + errorCallback(response.statusCode, response.data); + } + } + }, + fail: function (response) { + if (errorCallback && typeof errorCallback == 'function') { + errorCallback(response.statusCode, response.data) + } + }, + complete: function () { + if (completeCallback && typeof (completeCallback) == 'function') { + completeCallback(); + } + } + }) +}; + +/** + * xss 转义 + * @param html + * @returns {string} + */ +function escape(html) { + return String(html || '').replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&') + .replace(//g, '>') + .replace(/'/g, ''').replace(/"/g, '"'); +} + + + +module.exports = { + post: postJson, + delete: deleteForm, + put: putJson, + get: getForm, + params: getParamsArg, + path: buildPath, + escape: escape, + file: postFile, + apis: api.apis, + baseUrl: api.baseUrls +} \ No newline at end of file diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..6959da9 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,23 @@ +var t = function(t) { + return (t = t.toString())[1] ? t : "0".concat(t); +}; + +module.exports = { + formatTime: function(a) { + var n = a.getFullYear(), e = a.getMonth() + 1, o = a.getDate(), r = a.getHours(), i = a.getMinutes(), s = a.getSeconds(); + return "".concat([ n, e, o ].map(t).join("/"), " ").concat([ r, i, s ].map(t).join(":")); + }, + bdMapToQQMap: function(t, a) { + if (null == t || "" == t || null == a || "" == a) return [ t, a ]; + var n = 3.141592653589793, e = parseFloat(t) - .0065, o = parseFloat(a) - .006, r = Math.sqrt(e * e + o * o) - 2e-5 * Math.sin(o * n), i = Math.atan2(o, e) - 3e-6 * Math.cos(e * n); + return [ t = (r * Math.cos(i)).toFixed(7), a = (r * Math.sin(i)).toFixed(7) ]; + }, + qqMapToBMap: function(t, a) { + if (null == t || "" == t || null == a || "" == a) return [ t, a ]; + var n = 3.141592653589793, e = parseFloat(t), o = parseFloat(a), r = Math.sqrt(e * e + o * o) + 2e-5 * Math.sin(o * n), i = Math.atan2(o, e) + 3e-6 * Math.cos(e * n); + return [ t = (r * Math.cos(i) + .0065).toFixed(5), a = (r * Math.sin(i) + .006).toFixed(5) ]; + }, + isMobile: function(t) { + return !!/^[1][3,4,5,7,8,9][0-9]{9}$/.test(t); + } +}; \ No newline at end of file diff --git a/vant/dist/action-sheet/index.d.ts b/vant/dist/action-sheet/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/action-sheet/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/action-sheet/index.js b/vant/dist/action-sheet/index.js new file mode 100755 index 0000000..042a906 --- /dev/null +++ b/vant/dist/action-sheet/index.js @@ -0,0 +1,70 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +VantComponent({ + mixins: [button], + props: { + show: Boolean, + title: String, + cancelText: String, + description: String, + round: { + type: Boolean, + value: true, + }, + zIndex: { + type: Number, + value: 100, + }, + actions: { + type: Array, + value: [], + }, + overlay: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + closeOnClickAction: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + }, + methods: { + onSelect(event) { + const { index } = event.currentTarget.dataset; + const { actions, closeOnClickAction, canIUseGetUserProfile } = this.data; + const item = actions[index]; + if (item) { + this.$emit('select', item); + if (closeOnClickAction) { + this.onClose(); + } + if (item.openType === 'getUserInfo' && canIUseGetUserProfile) { + wx.getUserProfile({ + desc: item.getUserProfileDesc || ' ', + complete: (userProfile) => { + this.$emit('getuserinfo', userProfile); + }, + }); + } + } + }, + onCancel() { + this.$emit('cancel'); + }, + onClose() { + this.$emit('close'); + }, + onClickOverlay() { + this.$emit('click-overlay'); + this.onClose(); + }, + }, +}); diff --git a/vant/dist/action-sheet/index.json b/vant/dist/action-sheet/index.json new file mode 100755 index 0000000..19bf989 --- /dev/null +++ b/vant/dist/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-popup": "../popup/index", + "van-loading": "../loading/index" + } +} diff --git a/vant/dist/action-sheet/index.wxml b/vant/dist/action-sheet/index.wxml new file mode 100755 index 0000000..b04cc3a --- /dev/null +++ b/vant/dist/action-sheet/index.wxml @@ -0,0 +1,69 @@ + + + + + {{ title }} + + + + {{ description }} + + + + + + + + + + {{ cancelText }} + + + diff --git a/vant/dist/action-sheet/index.wxss b/vant/dist/action-sheet/index.wxss new file mode 100755 index 0000000..6248757 --- /dev/null +++ b/vant/dist/action-sheet/index.wxss @@ -0,0 +1,105 @@ +@import '../common/index.wxss'; + +.van-action-sheet { + max-height: 90% !important; + max-height: var(--action-sheet-max-height, 90%) !important; + color: #323233; + color: var(--action-sheet-item-text-color, #323233) +} + +.van-action-sheet__cancel, +.van-action-sheet__item { + padding: 14px 16px; + text-align: center; + font-size: 16px; + font-size: var(--action-sheet-item-font-size, 16px); + line-height: 22px; + line-height: var(--action-sheet-item-line-height, 22px); + background-color: #fff; + background-color: var(--action-sheet-item-background, #fff) +} + +.van-action-sheet__cancel--hover, +.van-action-sheet__item--hover { + background-color: #f2f3f5; + background-color: var(--active-color, #f2f3f5) +} + +.van-action-sheet__cancel:after, +.van-action-sheet__item:after { + border-width: 0 +} + +.van-action-sheet__cancel { + color: #646566; + color: var(--action-sheet-cancel-text-color, #646566) +} + +.van-action-sheet__gap { + display: block; + height: 8px; + height: var(--action-sheet-cancel-padding-top, 8px); + background-color: #f7f8fa; + background-color: var(--action-sheet-cancel-padding-color, #f7f8fa) +} + +.van-action-sheet__item--disabled { + color: #c8c9cc; + color: var(--action-sheet-item-disabled-text-color, #c8c9cc) +} + +.van-action-sheet__item--disabled.van-action-sheet__item--hover { + background-color: #fff; + background-color: var(--action-sheet-item-background, #fff) +} + +.van-action-sheet__subname { + margin-top: 8px; + margin-top: var(--padding-xs, 8px); + font-size: 12px; + font-size: var(--action-sheet-subname-font-size, 12px); + color: #969799; + color: var(--action-sheet-subname-color, #969799); + line-height: 20px; + line-height: var(--action-sheet-subname-line-height, 20px) +} + +.van-action-sheet__header { + text-align: center; + font-weight: 500; + font-weight: var(--font-weight-bold, 500); + font-size: 16px; + font-size: var(--action-sheet-header-font-size, 16px); + line-height: 48px; + line-height: var(--action-sheet-header-height, 48px) +} + +.van-action-sheet__description { + text-align: center; + padding: 20px 16px; + padding: 20px var(--padding-md, 16px); + color: #969799; + color: var(--action-sheet-description-color, #969799); + font-size: 14px; + font-size: var(--action-sheet-description-font-size, 14px); + line-height: 20px; + line-height: var(--action-sheet-description-line-height, 20px) +} + +.van-action-sheet__close { + position: absolute !important; + top: 0; + right: 0; + line-height: inherit !important; + padding: 0 16px; + padding: var(--action-sheet-close-icon-padding, 0 16px); + font-size: 22px !important; + font-size: var(--action-sheet-close-icon-size, 22px) !important; + color: #c8c9cc; + color: var(--action-sheet-close-icon-color, #c8c9cc) +} + +.van-action-sheet__loading { + display: -webkit-flex !important; + display: flex !important +} \ No newline at end of file diff --git a/vant/dist/area/index.d.ts b/vant/dist/area/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/area/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/area/index.js b/vant/dist/area/index.js new file mode 100755 index 0000000..3b3494d --- /dev/null +++ b/vant/dist/area/index.js @@ -0,0 +1,232 @@ +import { VantComponent } from '../common/component'; +import { pickerProps } from '../picker/shared'; +import { requestAnimationFrame } from '../common/utils'; +const EMPTY_CODE = '000000'; +VantComponent({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: Object.assign(Object.assign({}, pickerProps), { + value: { + type: String, + observer(value) { + this.code = value; + this.setValues(); + }, + }, + areaList: { + type: Object, + value: {}, + observer: 'setValues', + }, + columnsNum: { + type: null, + value: 3, + }, + columnsPlaceholder: { + type: Array, + observer(val) { + this.setData({ + typeToColumnsPlaceholder: { + province: val[0] || '', + city: val[1] || '', + county: val[2] || '', + }, + }); + }, + }, + }), + data: { + columns: [{ values: [] }, { values: [] }, { values: [] }], + typeToColumnsPlaceholder: {}, + }, + mounted() { + requestAnimationFrame(() => { + this.setValues(); + }); + }, + methods: { + getPicker() { + if (this.picker == null) { + this.picker = this.selectComponent('.van-area__picker'); + } + return this.picker; + }, + onCancel(event) { + this.emit('cancel', event.detail); + }, + onConfirm(event) { + const { index } = event.detail; + let { value } = event.detail; + value = this.parseValues(value); + this.emit('confirm', { value, index }); + }, + emit(type, detail) { + detail.values = detail.value; + delete detail.value; + this.$emit(type, detail); + }, + parseValues(values) { + const { columnsPlaceholder } = this.data; + return values.map((value, index) => { + if ( + value && + (!value.code || value.name === columnsPlaceholder[index]) + ) { + return Object.assign(Object.assign({}, value), { + code: '', + name: '', + }); + } + return value; + }); + }, + onChange(event) { + const { index, picker, value } = event.detail; + this.code = value[index].code; + this.setValues().then(() => { + this.$emit('change', { + picker, + values: this.parseValues(picker.getValues()), + index, + }); + }); + }, + getConfig(type) { + const { areaList } = this.data; + return (areaList && areaList[`${type}_list`]) || {}; + }, + getList(type, code) { + if (type !== 'province' && !code) { + return []; + } + const { typeToColumnsPlaceholder } = this.data; + const list = this.getConfig(type); + let result = Object.keys(list).map((code) => ({ + code, + name: list[code], + })); + if (code != null) { + // oversea code + if (code[0] === '9' && type === 'city') { + code = '9'; + } + result = result.filter((item) => item.code.indexOf(code) === 0); + } + if (typeToColumnsPlaceholder[type] && result.length) { + // set columns placeholder + const codeFill = + type === 'province' + ? '' + : type === 'city' + ? EMPTY_CODE.slice(2, 4) + : EMPTY_CODE.slice(4, 6); + result.unshift({ + code: `${code}${codeFill}`, + name: typeToColumnsPlaceholder[type], + }); + } + return result; + }, + getIndex(type, code) { + let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6; + const list = this.getList(type, code.slice(0, compareNum - 2)); + // oversea code + if (code[0] === '9' && type === 'province') { + compareNum = 1; + } + code = code.slice(0, compareNum); + for (let i = 0; i < list.length; i++) { + if (list[i].code.slice(0, compareNum) === code) { + return i; + } + } + return 0; + }, + setValues() { + const picker = this.getPicker(); + if (!picker) { + return; + } + let code = this.code || this.getDefaultCode(); + const provinceList = this.getList('province'); + const cityList = this.getList('city', code.slice(0, 2)); + const stack = []; + const indexes = []; + const { columnsNum } = this.data; + if (columnsNum >= 1) { + stack.push(picker.setColumnValues(0, provinceList, false)); + indexes.push(this.getIndex('province', code)); + } + if (columnsNum >= 2) { + stack.push(picker.setColumnValues(1, cityList, false)); + indexes.push(this.getIndex('city', code)); + if (cityList.length && code.slice(2, 4) === '00') { + [{ code }] = cityList; + } + } + if (columnsNum === 3) { + stack.push( + picker.setColumnValues( + 2, + this.getList('county', code.slice(0, 4)), + false + ) + ); + indexes.push(this.getIndex('county', code)); + } + return Promise.all(stack) + .catch(() => {}) + .then(() => picker.setIndexes(indexes)) + .catch(() => {}); + }, + getDefaultCode() { + const { columnsPlaceholder } = this.data; + if (columnsPlaceholder.length) { + return EMPTY_CODE; + } + const countyCodes = Object.keys(this.getConfig('county')); + if (countyCodes[0]) { + return countyCodes[0]; + } + const cityCodes = Object.keys(this.getConfig('city')); + if (cityCodes[0]) { + return cityCodes[0]; + } + return ''; + }, + getValues() { + const picker = this.getPicker(); + if (!picker) { + return []; + } + return this.parseValues(picker.getValues().filter((value) => !!value)); + }, + getDetail() { + const values = this.getValues(); + const area = { + code: '', + country: '', + province: '', + city: '', + county: '', + }; + if (!values.length) { + return area; + } + const names = values.map((item) => item.name); + area.code = values[values.length - 1].code; + if (area.code[0] === '9') { + area.country = names[1] || ''; + area.province = names[2] || ''; + } else { + area.province = names[0] || ''; + area.city = names[1] || ''; + area.county = names[2] || ''; + } + return area; + }, + reset(code) { + this.code = code || ''; + return this.setValues(); + }, + }, +}); diff --git a/vant/dist/area/index.json b/vant/dist/area/index.json new file mode 100755 index 0000000..a778e91 --- /dev/null +++ b/vant/dist/area/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/vant/dist/area/index.wxml b/vant/dist/area/index.wxml new file mode 100755 index 0000000..f7dc51f --- /dev/null +++ b/vant/dist/area/index.wxml @@ -0,0 +1,20 @@ + + + diff --git a/vant/dist/area/index.wxs b/vant/dist/area/index.wxs new file mode 100755 index 0000000..07723c1 --- /dev/null +++ b/vant/dist/area/index.wxs @@ -0,0 +1,8 @@ +/* eslint-disable */ +function displayColumns(columns, columnsNum) { + return columns.slice(0, +columnsNum); +} + +module.exports = { + displayColumns: displayColumns, +}; diff --git a/vant/dist/area/index.wxss b/vant/dist/area/index.wxss new file mode 100755 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/area/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/button/index.d.ts b/vant/dist/button/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/button/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/button/index.js b/vant/dist/button/index.js new file mode 100755 index 0000000..f2fe270 --- /dev/null +++ b/vant/dist/button/index.js @@ -0,0 +1,58 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +import { canIUseFormFieldButton } from '../common/version'; +const mixins = [button, openType]; +if (canIUseFormFieldButton()) { + mixins.push('wx://form-field-button'); +} +VantComponent({ + mixins, + classes: ['hover-class', 'loading-class'], + data: { + baseStyle: '', + }, + props: { + formType: String, + icon: String, + classPrefix: { + type: String, + value: 'van-icon', + }, + plain: Boolean, + block: Boolean, + round: Boolean, + square: Boolean, + loading: Boolean, + hairline: Boolean, + disabled: Boolean, + loadingText: String, + customStyle: String, + loadingType: { + type: String, + value: 'circular', + }, + type: { + type: String, + value: 'default', + }, + dataset: null, + size: { + type: String, + value: 'normal', + }, + loadingSize: { + type: String, + value: '20px', + }, + color: String, + }, + methods: { + onClick() { + if (!this.data.loading) { + this.$emit('click'); + } + }, + noop() {}, + }, +}); diff --git a/vant/dist/button/index.json b/vant/dist/button/index.json new file mode 100755 index 0000000..e00a588 --- /dev/null +++ b/vant/dist/button/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-loading": "../loading/index" + } +} diff --git a/vant/dist/button/index.wxml b/vant/dist/button/index.wxml new file mode 100755 index 0000000..e4cec8a --- /dev/null +++ b/vant/dist/button/index.wxml @@ -0,0 +1,53 @@ + + + + diff --git a/vant/dist/button/index.wxs b/vant/dist/button/index.wxs new file mode 100755 index 0000000..8b649fe --- /dev/null +++ b/vant/dist/button/index.wxs @@ -0,0 +1,39 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); + +function rootStyle(data) { + if (!data.color) { + return data.customStyle; + } + + var properties = { + color: data.plain ? data.color : '#fff', + background: data.plain ? null : data.color, + }; + + // hide border when color is linear-gradient + if (data.color.indexOf('gradient') !== -1) { + properties.border = 0; + } else { + properties['border-color'] = data.color; + } + + return style([properties, data.customStyle]); +} + +function loadingColor(data) { + if (data.plain) { + return data.color ? data.color : '#c9c9c9'; + } + + if (data.type === 'default') { + return '#c9c9c9'; + } + + return '#fff'; +} + +module.exports = { + rootStyle: rootStyle, + loadingColor: loadingColor, +}; diff --git a/vant/dist/button/index.wxss b/vant/dist/button/index.wxss new file mode 100755 index 0000000..5a591fb --- /dev/null +++ b/vant/dist/button/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);line-height:20px;line-height:var(--button-line-height,20px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:" ";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background:#fff;background:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background:#07c160;background:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background:#1989fa;background:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background:#ee0a24;background:var(--button-danger-background-color,#ee0a24);border:1px solid #ee0a24;border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background:#ff976a;background:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background:#fff;background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ee0a24;color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0} \ No newline at end of file diff --git a/vant/dist/calendar/calendar.wxml b/vant/dist/calendar/calendar.wxml new file mode 100755 index 0000000..26938c1 --- /dev/null +++ b/vant/dist/calendar/calendar.wxml @@ -0,0 +1,65 @@ + +

+ +
+ + + + + + + + + + + + {{ + computed.getButtonDisabled(type, currentDate) + ? confirmDisabledText + : confirmText + }} + + + diff --git a/vant/dist/calendar/components/header/index.d.ts b/vant/dist/calendar/components/header/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/calendar/components/header/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/calendar/components/header/index.js b/vant/dist/calendar/components/header/index.js new file mode 100755 index 0000000..bf9243f --- /dev/null +++ b/vant/dist/calendar/components/header/index.js @@ -0,0 +1,16 @@ +import { VantComponent } from '../../../common/component'; +VantComponent({ + props: { + title: { + type: String, + value: '日期选择', + }, + subtitle: String, + showTitle: Boolean, + showSubtitle: Boolean, + }, + data: { + weekdays: ['日', '一', '二', '三', '四', '五', '六'], + }, + methods: {}, +}); diff --git a/vant/dist/calendar/components/header/index.json b/vant/dist/calendar/components/header/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/calendar/components/header/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/calendar/components/header/index.wxml b/vant/dist/calendar/components/header/index.wxml new file mode 100755 index 0000000..eb8e4b4 --- /dev/null +++ b/vant/dist/calendar/components/header/index.wxml @@ -0,0 +1,16 @@ + + + + {{ title }} + + + + {{ subtitle }} + + + + + {{ item }} + + + diff --git a/vant/dist/calendar/components/header/index.wxss b/vant/dist/calendar/components/header/index.wxss new file mode 100755 index 0000000..4075e48 --- /dev/null +++ b/vant/dist/calendar/components/header/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar__header{-webkit-flex-shrink:0;flex-shrink:0;box-shadow:0 2px 10px rgba(125,126,128,.16);box-shadow:var(--calendar-header-box-shadow,0 2px 10px rgba(125,126,128,.16))}.van-calendar__header-subtitle,.van-calendar__header-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:-webkit-flex;display:flex}.van-calendar__weekday{-webkit-flex:1;flex:1;text-align:center;font-size:12px;font-size:var(--calendar-weekdays-font-size,12px);line-height:30px;line-height:var(--calendar-weekdays-height,30px)} \ No newline at end of file diff --git a/vant/dist/calendar/components/month/index.d.ts b/vant/dist/calendar/components/month/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/calendar/components/month/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/calendar/components/month/index.js b/vant/dist/calendar/components/month/index.js new file mode 100755 index 0000000..4c872a9 --- /dev/null +++ b/vant/dist/calendar/components/month/index.js @@ -0,0 +1,157 @@ +import { VantComponent } from '../../../common/component'; +import { + getMonthEndDay, + compareDay, + getPrevDay, + getNextDay, +} from '../../utils'; +VantComponent({ + props: { + date: { + type: null, + observer: 'setDays', + }, + type: { + type: String, + observer: 'setDays', + }, + color: String, + minDate: { + type: null, + observer: 'setDays', + }, + maxDate: { + type: null, + observer: 'setDays', + }, + showMark: Boolean, + rowHeight: null, + formatter: { + type: null, + observer: 'setDays', + }, + currentDate: { + type: null, + observer: 'setDays', + }, + allowSameDay: Boolean, + showSubtitle: Boolean, + showMonthTitle: Boolean, + }, + data: { + visible: true, + days: [], + }, + methods: { + onClick(event) { + const { index } = event.currentTarget.dataset; + const item = this.data.days[index]; + if (item.type !== 'disabled') { + this.$emit('click', item); + } + }, + setDays() { + const days = []; + const startDate = new Date(this.data.date); + const year = startDate.getFullYear(); + const month = startDate.getMonth(); + const totalDay = getMonthEndDay( + startDate.getFullYear(), + startDate.getMonth() + 1 + ); + for (let day = 1; day <= totalDay; day++) { + const date = new Date(year, month, day); + const type = this.getDayType(date); + let config = { + date, + type, + text: day, + bottomInfo: this.getBottomInfo(type), + }; + if (this.data.formatter) { + config = this.data.formatter(config); + } + days.push(config); + } + this.setData({ days }); + }, + getMultipleDayType(day) { + const { currentDate } = this.data; + if (!Array.isArray(currentDate)) { + return ''; + } + const isSelected = (date) => + currentDate.some((item) => compareDay(item, date) === 0); + if (isSelected(day)) { + const prevDay = getPrevDay(day); + const nextDay = getNextDay(day); + const prevSelected = isSelected(prevDay); + const nextSelected = isSelected(nextDay); + if (prevSelected && nextSelected) { + return 'multiple-middle'; + } + if (prevSelected) { + return 'end'; + } + return nextSelected ? 'start' : 'multiple-selected'; + } + return ''; + }, + getRangeDayType(day) { + const { currentDate, allowSameDay } = this.data; + if (!Array.isArray(currentDate)) { + return; + } + const [startDay, endDay] = currentDate; + if (!startDay) { + return; + } + const compareToStart = compareDay(day, startDay); + if (!endDay) { + return compareToStart === 0 ? 'start' : ''; + } + const compareToEnd = compareDay(day, endDay); + if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) { + return 'start-end'; + } + if (compareToStart === 0) { + return 'start'; + } + if (compareToEnd === 0) { + return 'end'; + } + if (compareToStart > 0 && compareToEnd < 0) { + return 'middle'; + } + }, + getDayType(day) { + const { type, minDate, maxDate, currentDate } = this.data; + if (compareDay(day, minDate) < 0 || compareDay(day, maxDate) > 0) { + return 'disabled'; + } + if (type === 'single') { + return compareDay(day, currentDate) === 0 ? 'selected' : ''; + } + if (type === 'multiple') { + return this.getMultipleDayType(day); + } + /* istanbul ignore else */ + if (type === 'range') { + return this.getRangeDayType(day); + } + }, + getBottomInfo(type) { + if (this.data.type === 'range') { + if (type === 'start') { + return '开始'; + } + if (type === 'end') { + return '结束'; + } + if (type === 'start-end') { + return '开始/结束'; + } + } + }, + }, +}); diff --git a/vant/dist/calendar/components/month/index.json b/vant/dist/calendar/components/month/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/calendar/components/month/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/calendar/components/month/index.wxml b/vant/dist/calendar/components/month/index.wxml new file mode 100755 index 0000000..55bab83 --- /dev/null +++ b/vant/dist/calendar/components/month/index.wxml @@ -0,0 +1,39 @@ + + + + + + {{ computed.formatMonthTitle(date) }} + + + + + {{ computed.getMark(date) }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + diff --git a/vant/dist/calendar/components/month/index.wxs b/vant/dist/calendar/components/month/index.wxs new file mode 100755 index 0000000..a057079 --- /dev/null +++ b/vant/dist/calendar/components/month/index.wxs @@ -0,0 +1,67 @@ +/* eslint-disable */ +var utils = require('../../utils.wxs'); + +function getMark(date) { + return getDate(date).getMonth() + 1; +} + +var ROW_HEIGHT = 64; + +function getDayStyle(type, index, date, rowHeight, color) { + var style = []; + var offset = getDate(date).getDay(); + + if (index === 0) { + style.push(['margin-left', (100 * offset) / 7 + '%']); + } + + if (rowHeight !== ROW_HEIGHT) { + style.push(['height', rowHeight + 'px']); + } + + if (color) { + if ( + type === 'start' || + type === 'end' || + type === 'multiple-selected' || + type === 'multiple-middle' + ) { + style.push(['background', color]); + } else if (type === 'middle') { + style.push(['color', color]); + } + } + + return style + .map(function(item) { + return item.join(':'); + }) + .join(';'); +} + +function formatMonthTitle(date) { + date = getDate(date); + return date.getFullYear() + '年' + (date.getMonth() + 1) + '月'; +} + +function getMonthStyle(visible, date, rowHeight) { + if (!visible) { + date = getDate(date); + + var totalDay = utils.getMonthEndDay( + date.getFullYear(), + date.getMonth() + 1 + ); + var offset = getDate(date).getDay(); + var padding = Math.ceil((totalDay + offset) / 7) * rowHeight; + + return 'padding-bottom:' + padding + 'px'; + } +} + +module.exports = { + getMark: getMark, + getDayStyle: getDayStyle, + formatMonthTitle: formatMonthTitle, + getMonthStyle: getMonthStyle +}; diff --git a/vant/dist/calendar/components/month/index.wxss b/vant/dist/calendar/components/month/index.wxss new file mode 100755 index 0000000..17c12f4 --- /dev/null +++ b/vant/dist/calendar/components/month/index.wxss @@ -0,0 +1 @@ +@import '../../../common/index.wxss';.van-calendar{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;height:100%;background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__month-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);font-size:14px;font-size:var(--calendar-month-title-font-size,14px);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__days{position:relative;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);pointer-events:none;color:rgba(242,243,245,.8);color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:160px;font-size:var(--calendar-month-mark-font-size,160px)}.van-calendar__day,.van-calendar__selected-day{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:64px;height:var(--calendar-day-height,64px);font-size:16px;font-size:var(--calendar-day-font-size,16px)}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{color:#fff;color:var(--calendar-range-edge-color,#fff);background-color:#ee0a24;background-color:var(--calendar-range-edge-background-color,#ee0a24)}.van-calendar__day--start{border-radius:4px 0 0 4px;border-radius:var(--border-radius-md,4px) 0 0 var(--border-radius-md,4px)}.van-calendar__day--end{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius-md,4px) var(--border-radius-md,4px) 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px;border-radius:var(--border-radius-md,4px)}.van-calendar__day--middle{color:#ee0a24;color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;content:"";opacity:.1;opacity:var(--calendar-range-middle-background-opacity,.1)}.van-calendar__day--disabled{cursor:default;color:#c8c9cc;color:var(--calendar-day-disabled-color,#c8c9cc)}.van-calendar__bottom-info,.van-calendar__top-info{position:absolute;right:0;left:0;font-size:10px;font-size:var(--calendar-info-font-size,10px);line-height:14px;line-height:var(--calendar-info-line-height,14px)}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:54px;width:var(--calendar-selected-day-size,54px);height:54px;height:var(--calendar-selected-day-size,54px);color:#fff;color:var(--calendar-selected-day-color,#fff);background-color:#ee0a24;background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;border-radius:var(--border-radius-md,4px)} \ No newline at end of file diff --git a/vant/dist/calendar/index.d.ts b/vant/dist/calendar/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/calendar/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/calendar/index.js b/vant/dist/calendar/index.js new file mode 100755 index 0000000..d7b7f27 --- /dev/null +++ b/vant/dist/calendar/index.js @@ -0,0 +1,297 @@ +import { VantComponent } from '../common/component'; +import { + ROW_HEIGHT, + getNextDay, + compareDay, + copyDates, + calcDateNum, + formatMonthTitle, + compareMonth, + getMonths, + getDayByOffset, +} from './utils'; +import Toast from '../toast/toast'; +import { requestAnimationFrame } from '../common/utils'; +VantComponent({ + props: { + title: { + type: String, + value: '日期选择', + }, + color: String, + show: { + type: Boolean, + observer(val) { + if (val) { + this.initRect(); + this.scrollIntoView(); + } + }, + }, + formatter: null, + confirmText: { + type: String, + value: '确定', + }, + rangePrompt: String, + defaultDate: { + type: null, + observer(val) { + this.setData({ currentDate: val }); + this.scrollIntoView(); + }, + }, + allowSameDay: Boolean, + confirmDisabledText: String, + type: { + type: String, + value: 'single', + observer: 'reset', + }, + minDate: { + type: null, + value: Date.now(), + }, + maxDate: { + type: null, + value: new Date( + new Date().getFullYear(), + new Date().getMonth() + 6, + new Date().getDate() + ).getTime(), + }, + position: { + type: String, + value: 'bottom', + }, + rowHeight: { + type: null, + value: ROW_HEIGHT, + }, + round: { + type: Boolean, + value: true, + }, + poppable: { + type: Boolean, + value: true, + }, + showMark: { + type: Boolean, + value: true, + }, + showTitle: { + type: Boolean, + value: true, + }, + showConfirm: { + type: Boolean, + value: true, + }, + showSubtitle: { + type: Boolean, + value: true, + }, + safeAreaInsetBottom: { + type: Boolean, + value: true, + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + }, + maxRange: { + type: null, + value: null, + }, + }, + data: { + subtitle: '', + currentDate: null, + scrollIntoView: '', + }, + created() { + this.setData({ + currentDate: this.getInitialDate(), + }); + }, + mounted() { + if (this.data.show || !this.data.poppable) { + this.initRect(); + this.scrollIntoView(); + } + }, + methods: { + reset() { + this.setData({ currentDate: this.getInitialDate() }); + this.scrollIntoView(); + }, + initRect() { + if (this.contentObserver != null) { + this.contentObserver.disconnect(); + } + const contentObserver = this.createIntersectionObserver({ + thresholds: [0, 0.1, 0.9, 1], + observeAll: true, + }); + this.contentObserver = contentObserver; + contentObserver.relativeTo('.van-calendar__body'); + contentObserver.observe('.month', (res) => { + if (res.boundingClientRect.top <= res.relativeRect.top) { + // @ts-ignore + this.setData({ subtitle: formatMonthTitle(res.dataset.date) }); + } + }); + }, + getInitialDate() { + const { type, defaultDate, minDate } = this.data; + if (type === 'range') { + const [startDay, endDay] = defaultDate || []; + return [ + startDay || minDate, + endDay || getNextDay(new Date(minDate)).getTime(), + ]; + } + if (type === 'multiple') { + return defaultDate || [minDate]; + } + return defaultDate || minDate; + }, + scrollIntoView() { + requestAnimationFrame(() => { + const { + currentDate, + type, + show, + poppable, + minDate, + maxDate, + } = this.data; + // @ts-ignore + const targetDate = type === 'single' ? currentDate : currentDate[0]; + const displayed = show || !poppable; + if (!targetDate || !displayed) { + return; + } + const months = getMonths(minDate, maxDate); + months.some((month, index) => { + if (compareMonth(month, targetDate) === 0) { + this.setData({ scrollIntoView: `month${index}` }); + return true; + } + return false; + }); + }); + }, + onOpen() { + this.$emit('open'); + }, + onOpened() { + this.$emit('opened'); + }, + onClose() { + this.$emit('close'); + }, + onClosed() { + this.$emit('closed'); + }, + onClickDay(event) { + const { date } = event.detail; + const { type, currentDate, allowSameDay } = this.data; + if (type === 'range') { + // @ts-ignore + const [startDay, endDay] = currentDate; + if (startDay && !endDay) { + const compareToStart = compareDay(date, startDay); + if (compareToStart === 1) { + this.select([startDay, date], true); + } else if (compareToStart === -1) { + this.select([date, null]); + } else if (allowSameDay) { + this.select([date, date]); + } + } else { + this.select([date, null]); + } + } else if (type === 'multiple') { + let selectedIndex; + // @ts-ignore + const selected = currentDate.some((dateItem, index) => { + const equal = compareDay(dateItem, date) === 0; + if (equal) { + selectedIndex = index; + } + return equal; + }); + if (selected) { + // @ts-ignore + const cancelDate = currentDate.splice(selectedIndex, 1); + this.setData({ currentDate }); + this.unselect(cancelDate); + } else { + // @ts-ignore + this.select([...currentDate, date]); + } + } else { + this.select(date, true); + } + }, + unselect(dateArray) { + const date = dateArray[0]; + if (date) { + this.$emit('unselect', copyDates(date)); + } + }, + select(date, complete) { + if (complete && this.data.type === 'range') { + const valid = this.checkRange(date); + if (!valid) { + // auto selected to max range if showConfirm + if (this.data.showConfirm) { + this.emit([ + date[0], + getDayByOffset(date[0], this.data.maxRange - 1), + ]); + } else { + this.emit(date); + } + return; + } + } + this.emit(date); + if (complete && !this.data.showConfirm) { + this.onConfirm(); + } + }, + emit(date) { + const getTime = (date) => (date instanceof Date ? date.getTime() : date); + this.setData({ + currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date), + }); + this.$emit('select', copyDates(date)); + }, + checkRange(date) { + const { maxRange, rangePrompt } = this.data; + if (maxRange && calcDateNum(date) > maxRange) { + Toast({ + context: this, + message: rangePrompt || `选择天数不能超过 ${maxRange} 天`, + }); + return false; + } + return true; + }, + onConfirm() { + if ( + this.data.type === 'range' && + !this.checkRange(this.data.currentDate) + ) { + return; + } + wx.nextTick(() => { + // @ts-ignore + this.$emit('confirm', copyDates(this.data.currentDate)); + }); + }, + }, +}); diff --git a/vant/dist/calendar/index.json b/vant/dist/calendar/index.json new file mode 100755 index 0000000..397d5ae --- /dev/null +++ b/vant/dist/calendar/index.json @@ -0,0 +1,10 @@ +{ + "component": true, + "usingComponents": { + "header": "./components/header/index", + "month": "./components/month/index", + "van-button": "../button/index", + "van-popup": "../popup/index", + "van-toast": "../toast/index" + } +} diff --git a/vant/dist/calendar/index.wxml b/vant/dist/calendar/index.wxml new file mode 100755 index 0000000..7df0b98 --- /dev/null +++ b/vant/dist/calendar/index.wxml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/vant/dist/calendar/index.wxs b/vant/dist/calendar/index.wxs new file mode 100755 index 0000000..2c04be1 --- /dev/null +++ b/vant/dist/calendar/index.wxs @@ -0,0 +1,37 @@ +/* eslint-disable */ +var utils = require('./utils.wxs'); + +function getMonths(minDate, maxDate) { + var months = []; + var cursor = getDate(minDate); + + cursor.setDate(1); + + do { + months.push(cursor.getTime()); + cursor.setMonth(cursor.getMonth() + 1); + } while (utils.compareMonth(cursor, getDate(maxDate)) !== 1); + + return months; +} + +function getButtonDisabled(type, currentDate) { + if (currentDate == null) { + return true; + } + + if (type === 'range') { + return !currentDate[0] || !currentDate[1]; + } + + if (type === 'multiple') { + return !currentDate.length; + } + + return !currentDate; +} + +module.exports = { + getMonths: getMonths, + getButtonDisabled: getButtonDisabled +}; diff --git a/vant/dist/calendar/index.wxss b/vant/dist/calendar/index.wxss new file mode 100755 index 0000000..9d78e0f --- /dev/null +++ b/vant/dist/calendar/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-calendar{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;height:100%;height:var(--calendar-height,100%);background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:80%;height:var(--calendar-popup-height,80%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-flex:1;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.van-calendar__footer{-webkit-flex-shrink:0;flex-shrink:0;padding:0 16px;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:36px!important;height:var(--calendar-confirm-button-height,36px)!important;margin:7px 0!important;margin:var(--calendar-confirm-button-margin,7px 0)!important;line-height:34px!important;line-height:var(--calendar-confirm-button-line-height,34px)!important} \ No newline at end of file diff --git a/vant/dist/calendar/utils.d.ts b/vant/dist/calendar/utils.d.ts new file mode 100755 index 0000000..02af08d --- /dev/null +++ b/vant/dist/calendar/utils.d.ts @@ -0,0 +1,17 @@ +export declare const ROW_HEIGHT = 64; +export declare function formatMonthTitle(date: Date): string; +export declare function compareMonth( + date1: Date | number, + date2: Date | number +): 0 | 1 | -1; +export declare function compareDay( + day1: Date | number, + day2: Date | number +): 0 | 1 | -1; +export declare function getDayByOffset(date: Date, offset: number): Date; +export declare function getPrevDay(date: Date): Date; +export declare function getNextDay(date: Date): Date; +export declare function calcDateNum(date: [Date, Date]): number; +export declare function copyDates(dates: Date | Date[]): Date | Date[]; +export declare function getMonthEndDay(year: number, month: number): number; +export declare function getMonths(minDate: number, maxDate: number): number[]; diff --git a/vant/dist/calendar/utils.js b/vant/dist/calendar/utils.js new file mode 100755 index 0000000..281a35c --- /dev/null +++ b/vant/dist/calendar/utils.js @@ -0,0 +1,78 @@ +export const ROW_HEIGHT = 64; +export function formatMonthTitle(date) { + if (!(date instanceof Date)) { + date = new Date(date); + } + return `${date.getFullYear()}年${date.getMonth() + 1}月`; +} +export function compareMonth(date1, date2) { + if (!(date1 instanceof Date)) { + date1 = new Date(date1); + } + if (!(date2 instanceof Date)) { + date2 = new Date(date2); + } + const year1 = date1.getFullYear(); + const year2 = date2.getFullYear(); + const month1 = date1.getMonth(); + const month2 = date2.getMonth(); + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; + } + return year1 > year2 ? 1 : -1; +} +export function compareDay(day1, day2) { + if (!(day1 instanceof Date)) { + day1 = new Date(day1); + } + if (!(day2 instanceof Date)) { + day2 = new Date(day2); + } + const compareMonthResult = compareMonth(day1, day2); + if (compareMonthResult === 0) { + const date1 = day1.getDate(); + const date2 = day2.getDate(); + return date1 === date2 ? 0 : date1 > date2 ? 1 : -1; + } + return compareMonthResult; +} +export function getDayByOffset(date, offset) { + date = new Date(date); + date.setDate(date.getDate() + offset); + return date; +} +export function getPrevDay(date) { + return getDayByOffset(date, -1); +} +export function getNextDay(date) { + return getDayByOffset(date, 1); +} +export function calcDateNum(date) { + const day1 = new Date(date[0]).getTime(); + const day2 = new Date(date[1]).getTime(); + return (day2 - day1) / (1000 * 60 * 60 * 24) + 1; +} +export function copyDates(dates) { + if (Array.isArray(dates)) { + return dates.map((date) => { + if (date === null) { + return date; + } + return new Date(date); + }); + } + return new Date(dates); +} +export function getMonthEndDay(year, month) { + return 32 - new Date(year, month - 1, 32).getDate(); +} +export function getMonths(minDate, maxDate) { + const months = []; + const cursor = new Date(minDate); + cursor.setDate(1); + do { + months.push(cursor.getTime()); + cursor.setMonth(cursor.getMonth() + 1); + } while (compareMonth(cursor, maxDate) !== 1); + return months; +} diff --git a/vant/dist/calendar/utils.wxs b/vant/dist/calendar/utils.wxs new file mode 100755 index 0000000..e57f6b3 --- /dev/null +++ b/vant/dist/calendar/utils.wxs @@ -0,0 +1,25 @@ +/* eslint-disable */ +function getMonthEndDay(year, month) { + return 32 - getDate(year, month - 1, 32).getDate(); +} + +function compareMonth(date1, date2) { + date1 = getDate(date1); + date2 = getDate(date2); + + var year1 = date1.getFullYear(); + var year2 = date2.getFullYear(); + var month1 = date1.getMonth(); + var month2 = date2.getMonth(); + + if (year1 === year2) { + return month1 === month2 ? 0 : month1 > month2 ? 1 : -1; + } + + return year1 > year2 ? 1 : -1; +} + +module.exports = { + getMonthEndDay: getMonthEndDay, + compareMonth: compareMonth +}; diff --git a/vant/dist/card/index.d.ts b/vant/dist/card/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/card/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/card/index.js b/vant/dist/card/index.js new file mode 100755 index 0000000..6aaf99f --- /dev/null +++ b/vant/dist/card/index.js @@ -0,0 +1,49 @@ +import { link } from '../mixins/link'; +import { VantComponent } from '../common/component'; +VantComponent({ + classes: [ + 'num-class', + 'desc-class', + 'thumb-class', + 'title-class', + 'price-class', + 'origin-price-class', + ], + mixins: [link], + props: { + tag: String, + num: String, + desc: String, + thumb: String, + title: String, + price: { + type: String, + observer: 'updatePrice', + }, + centered: Boolean, + lazyLoad: Boolean, + thumbLink: String, + originPrice: String, + thumbMode: { + type: String, + value: 'aspectFit', + }, + currency: { + type: String, + value: '¥', + }, + }, + methods: { + updatePrice() { + const { price } = this.data; + const priceArr = price.toString().split('.'); + this.setData({ + integerStr: priceArr[0], + decimalStr: priceArr[1] ? `.${priceArr[1]}` : '', + }); + }, + onClickThumb() { + this.jumpLink('thumbLink'); + }, + }, +}); diff --git a/vant/dist/card/index.json b/vant/dist/card/index.json new file mode 100755 index 0000000..e917407 --- /dev/null +++ b/vant/dist/card/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-tag": "../tag/index" + } +} diff --git a/vant/dist/card/index.wxml b/vant/dist/card/index.wxml new file mode 100755 index 0000000..62173e4 --- /dev/null +++ b/vant/dist/card/index.wxml @@ -0,0 +1,56 @@ + + + + + + + + + {{ tag }} + + + + + + + {{ title }} + + + {{ desc }} + + + + + + + + + {{ currency }} + {{ integerStr }} + {{ decimalStr }} + + + {{ currency }} {{ originPrice }} + + x {{ num }} + + + + + + + + + + diff --git a/vant/dist/card/index.wxss b/vant/dist/card/index.wxss new file mode 100755 index 0000000..a21a599 --- /dev/null +++ b/vant/dist/card/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-card{position:relative;box-sizing:border-box;padding:8px 16px;padding:var(--card-padding,8px 16px);font-size:12px;font-size:var(--card-font-size,12px);color:#323233;color:var(--card-text-color,#323233);background-color:#fafafa;background-color:var(--card-background-color,#fafafa)}.van-card__header{display:-webkit-flex;display:flex}.van-card__header--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-card__thumb{position:relative;-webkit-flex:none;flex:none;width:88px;width:var(--card-thumb-size,88px);height:88px;height:var(--card-thumb-size,88px);margin-right:8px;margin-right:var(--padding-xs,8px)}.van-card__thumb:empty{display:none}.van-card__img{width:100%;height:100%;border-radius:8px;border-radius:var(--border-radius-lg,8px)}.van-card__content{position:relative;display:-webkit-flex;display:flex;-webkit-flex:1;flex:1;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:space-between;justify-content:space-between;min-width:0;min-height:88px;min-height:var(--card-thumb-size,88px)}.van-card__content--center{-webkit-justify-content:center;justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:16px;line-height:var(--card-title-line-height,16px)}.van-card__desc{line-height:20px;line-height:var(--card-desc-line-height,20px);color:#646566;color:var(--card-desc-color,#646566)}.van-card__bottom{line-height:20px}.van-card__price{display:inline-block;font-weight:700;color:#ee0a24;color:var(--card-price-color,#ee0a24);font-size:12px;font-size:var(--card-price-font-size,12px)}.van-card__price-integer{font-size:16px;font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif;font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{display:inline-block;margin-left:5px;text-decoration:line-through;font-size:10px;font-size:var(--card-origin-price-font-size,10px);color:#646566;color:var(--card-origin-price-color,#646566)}.van-card__num{float:right}.van-card__tag{position:absolute!important;top:2px;left:0}.van-card__footer{-webkit-flex:none;flex:none;width:100%;text-align:right} \ No newline at end of file diff --git a/vant/dist/cell-group/index.d.ts b/vant/dist/cell-group/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/cell-group/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/cell-group/index.js b/vant/dist/cell-group/index.js new file mode 100755 index 0000000..99bcdb9 --- /dev/null +++ b/vant/dist/cell-group/index.js @@ -0,0 +1,10 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + title: String, + border: { + type: Boolean, + value: true, + }, + }, +}); diff --git a/vant/dist/cell-group/index.json b/vant/dist/cell-group/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/cell-group/index.wxml b/vant/dist/cell-group/index.wxml new file mode 100755 index 0000000..6e0b471 --- /dev/null +++ b/vant/dist/cell-group/index.wxml @@ -0,0 +1,9 @@ + + {{ title }} + + + + diff --git a/vant/dist/cell-group/index.wxss b/vant/dist/cell-group/index.wxss new file mode 100755 index 0000000..edbccd5 --- /dev/null +++ b/vant/dist/cell-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell-group__title{padding:16px 16px 8px;padding:var(--cell-group-title-padding,16px 16px 8px);font-size:14px;font-size:var(--cell-group-title-font-size,14px);line-height:16px;line-height:var(--cell-group-title-line-height,16px);color:#969799;color:var(--cell-group-title-color,#969799)} \ No newline at end of file diff --git a/vant/dist/cell/index.d.ts b/vant/dist/cell/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/cell/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/cell/index.js b/vant/dist/cell/index.js new file mode 100755 index 0000000..a0123d1 --- /dev/null +++ b/vant/dist/cell/index.js @@ -0,0 +1,38 @@ +import { link } from '../mixins/link'; +import { VantComponent } from '../common/component'; +VantComponent({ + classes: [ + 'title-class', + 'label-class', + 'value-class', + 'right-icon-class', + 'hover-class', + ], + mixins: [link], + props: { + title: null, + value: null, + icon: String, + size: String, + label: String, + center: Boolean, + isLink: Boolean, + required: Boolean, + clickable: Boolean, + titleWidth: String, + customStyle: String, + arrowDirection: String, + useLabelSlot: Boolean, + border: { + type: Boolean, + value: true, + }, + titleStyle: String, + }, + methods: { + onClick(event) { + this.$emit('click', event.detail); + this.jumpLink(); + }, + }, +}); diff --git a/vant/dist/cell/index.json b/vant/dist/cell/index.json new file mode 100755 index 0000000..0a336c0 --- /dev/null +++ b/vant/dist/cell/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/cell/index.wxml b/vant/dist/cell/index.wxml new file mode 100755 index 0000000..7d7d746 --- /dev/null +++ b/vant/dist/cell/index.wxml @@ -0,0 +1,46 @@ + + + + + + + + + {{ title }} + + + + + {{ label }} + + + + + {{ value }} + + + + + + + + diff --git a/vant/dist/cell/index.wxs b/vant/dist/cell/index.wxs new file mode 100755 index 0000000..e3500c4 --- /dev/null +++ b/vant/dist/cell/index.wxs @@ -0,0 +1,17 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function titleStyle(data) { + return style([ + { + 'max-width': addUnit(data.titleWidth), + 'min-width': addUnit(data.titleWidth), + }, + data.titleStyle, + ]); +} + +module.exports = { + titleStyle: titleStyle, +}; diff --git a/vant/dist/cell/index.wxss b/vant/dist/cell/index.wxss new file mode 100755 index 0000000..605570d --- /dev/null +++ b/vant/dist/cell/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell{position:relative;display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:10px 16px;padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);font-size:14px;font-size:var(--cell-font-size,14px);line-height:24px;line-height:var(--cell-line-height,24px);color:#323233;color:var(--cell-text-color,#323233);background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;right:16px;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell__label{margin-top:3px;margin-top:var(--cell-label-margin-top,3px);font-size:12px;font-size:var(--cell-label-font-size,12px);line-height:18px;line-height:var(--cell-label-line-height,18px);color:#969799;color:var(--cell-label-color,#969799)}.van-cell__value{overflow:hidden;text-align:right;vertical-align:middle;color:#969799;color:var(--cell-value-color,#969799)}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:24px;height:var(--cell-line-height,24px);font-size:16px;font-size:var(--cell-icon-size,16px)}.van-cell__left-icon-wrap{margin-right:4px;margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{margin-left:4px;margin-left:var(--padding-base,4px);color:#969799;color:var(--cell-right-icon-color,#969799)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:24px;line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5;background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;content:"*";left:8px;left:var(--padding-xs,8px);font-size:14px;font-size:var(--cell-font-size,14px);color:#ee0a24;color:var(--cell-required-color,#ee0a24)}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-top:var(--cell-large-vertical-padding,12px);padding-bottom:12px;padding-bottom:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:16px;font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:16px;font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:14px;font-size:var(--cell-large-label-font-size,14px)} \ No newline at end of file diff --git a/vant/dist/checkbox-group/index.d.ts b/vant/dist/checkbox-group/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/checkbox-group/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/checkbox-group/index.js b/vant/dist/checkbox-group/index.js new file mode 100755 index 0000000..1c87155 --- /dev/null +++ b/vant/dist/checkbox-group/index.js @@ -0,0 +1,31 @@ +import { useChildren } from '../common/relation'; +import { VantComponent } from '../common/component'; +VantComponent({ + field: true, + relation: useChildren('checkbox', function (target) { + this.updateChild(target); + }), + props: { + max: Number, + value: { + type: Array, + observer: 'updateChildren', + }, + disabled: { + type: Boolean, + observer: 'updateChildren', + }, + }, + methods: { + updateChildren() { + this.children.forEach((child) => this.updateChild(child)); + }, + updateChild(child) { + const { value, disabled } = this.data; + child.setData({ + value: value.indexOf(child.data.name) !== -1, + parentDisabled: disabled, + }); + }, + }, +}); diff --git a/vant/dist/checkbox-group/index.json b/vant/dist/checkbox-group/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/checkbox-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/checkbox-group/index.wxml b/vant/dist/checkbox-group/index.wxml new file mode 100755 index 0000000..4fa864c --- /dev/null +++ b/vant/dist/checkbox-group/index.wxml @@ -0,0 +1 @@ + diff --git a/vant/dist/checkbox-group/index.wxss b/vant/dist/checkbox-group/index.wxss new file mode 100755 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/checkbox-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/checkbox/index.d.ts b/vant/dist/checkbox/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/checkbox/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/checkbox/index.js b/vant/dist/checkbox/index.js new file mode 100755 index 0000000..281f69a --- /dev/null +++ b/vant/dist/checkbox/index.js @@ -0,0 +1,74 @@ +import { useParent } from '../common/relation'; +import { VantComponent } from '../common/component'; +function emit(target, value) { + target.$emit('input', value); + target.$emit('change', value); +} +VantComponent({ + field: true, + relation: useParent('checkbox-group'), + classes: ['icon-class', 'label-class'], + props: { + value: Boolean, + disabled: Boolean, + useIconSlot: Boolean, + checkedColor: String, + labelPosition: { + type: String, + value: 'right', + }, + labelDisabled: Boolean, + shape: { + type: String, + value: 'round', + }, + iconSize: { + type: null, + value: 20, + }, + }, + data: { + parentDisabled: false, + }, + methods: { + emitChange(value) { + if (this.parent) { + this.setParentValue(this.parent, value); + } else { + emit(this, value); + } + }, + toggle() { + const { parentDisabled, disabled, value } = this.data; + if (!disabled && !parentDisabled) { + this.emitChange(!value); + } + }, + onClickLabel() { + const { labelDisabled, parentDisabled, disabled, value } = this.data; + if (!disabled && !labelDisabled && !parentDisabled) { + this.emitChange(!value); + } + }, + setParentValue(parent, value) { + const parentValue = parent.data.value.slice(); + const { name } = this.data; + const { max } = parent.data; + if (value) { + if (max && parentValue.length >= max) { + return; + } + if (parentValue.indexOf(name) === -1) { + parentValue.push(name); + emit(parent, parentValue); + } + } else { + const index = parentValue.indexOf(name); + if (index !== -1) { + parentValue.splice(index, 1); + emit(parent, parentValue); + } + } + }, + }, +}); diff --git a/vant/dist/checkbox/index.json b/vant/dist/checkbox/index.json new file mode 100755 index 0000000..0a336c0 --- /dev/null +++ b/vant/dist/checkbox/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/checkbox/index.wxml b/vant/dist/checkbox/index.wxml new file mode 100755 index 0000000..0c008d8 --- /dev/null +++ b/vant/dist/checkbox/index.wxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/vant/dist/checkbox/index.wxs b/vant/dist/checkbox/index.wxs new file mode 100755 index 0000000..eb9c772 --- /dev/null +++ b/vant/dist/checkbox/index.wxs @@ -0,0 +1,20 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) { + var styles = { + 'font-size': addUnit(iconSize), + }; + + if (checkedColor && value && !disabled && !parentDisabled) { + styles['border-color'] = checkedColor; + styles['background-color'] = checkedColor; + } + + return style(styles); +} + +module.exports = { + iconStyle: iconStyle, +}; diff --git a/vant/dist/checkbox/index.wxss b/vant/dist/checkbox/index.wxss new file mode 100755 index 0000000..afaf37b --- /dev/null +++ b/vant/dist/checkbox/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#323233;color:var(--checkbox-label-color,#323233)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0} \ No newline at end of file diff --git a/vant/dist/circle/canvas.d.ts b/vant/dist/circle/canvas.d.ts new file mode 100755 index 0000000..6aa52de --- /dev/null +++ b/vant/dist/circle/canvas.d.ts @@ -0,0 +1,6 @@ +/// +declare type CanvasContext = WechatMiniprogram.CanvasContext; +export declare function adaptor( + ctx: CanvasContext & Record +): CanvasContext; +export {}; diff --git a/vant/dist/circle/canvas.js b/vant/dist/circle/canvas.js new file mode 100755 index 0000000..c311335 --- /dev/null +++ b/vant/dist/circle/canvas.js @@ -0,0 +1,43 @@ +export function adaptor(ctx) { + // @ts-ignore + return Object.assign(ctx, { + setStrokeStyle(val) { + ctx.strokeStyle = val; + }, + setLineWidth(val) { + ctx.lineWidth = val; + }, + setLineCap(val) { + ctx.lineCap = val; + }, + setFillStyle(val) { + ctx.fillStyle = val; + }, + setFontSize(val) { + ctx.font = String(val); + }, + setGlobalAlpha(val) { + ctx.globalAlpha = val; + }, + setLineJoin(val) { + ctx.lineJoin = val; + }, + setTextAlign(val) { + ctx.textAlign = val; + }, + setMiterLimit(val) { + ctx.miterLimit = val; + }, + setShadow(offsetX, offsetY, blur, color) { + ctx.shadowOffsetX = offsetX; + ctx.shadowOffsetY = offsetY; + ctx.shadowBlur = blur; + ctx.shadowColor = color; + }, + setTextBaseline(val) { + ctx.textBaseline = val; + }, + createCircularGradient() {}, + draw() {}, + }); +} diff --git a/vant/dist/circle/index.d.ts b/vant/dist/circle/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/circle/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/circle/index.js b/vant/dist/circle/index.js new file mode 100755 index 0000000..c3a2894 --- /dev/null +++ b/vant/dist/circle/index.js @@ -0,0 +1,186 @@ +import { BLUE, WHITE } from '../common/color'; +import { VantComponent } from '../common/component'; +import { getSystemInfoSync } from '../common/utils'; +import { isObj } from '../common/validator'; +import { canIUseCanvas2d } from '../common/version'; +import { adaptor } from './canvas'; +function format(rate) { + return Math.min(Math.max(rate, 0), 100); +} +const PERIMETER = 2 * Math.PI; +const BEGIN_ANGLE = -Math.PI / 2; +const STEP = 1; +VantComponent({ + props: { + text: String, + lineCap: { + type: String, + value: 'round', + }, + value: { + type: Number, + value: 0, + observer: 'reRender', + }, + speed: { + type: Number, + value: 50, + }, + size: { + type: Number, + value: 100, + observer() { + this.drawCircle(this.currentValue); + }, + }, + fill: String, + layerColor: { + type: String, + value: WHITE, + }, + color: { + type: null, + value: BLUE, + observer() { + this.setHoverColor().then(() => { + this.drawCircle(this.currentValue); + }); + }, + }, + type: { + type: String, + value: '', + }, + strokeWidth: { + type: Number, + value: 4, + }, + clockwise: { + type: Boolean, + value: true, + }, + }, + data: { + hoverColor: BLUE, + }, + methods: { + getContext() { + const { type, size } = this.data; + if (type === '' || !canIUseCanvas2d()) { + const ctx = wx.createCanvasContext('van-circle', this); + return Promise.resolve(ctx); + } + const dpr = getSystemInfoSync().pixelRatio; + return new Promise((resolve) => { + wx.createSelectorQuery() + .in(this) + .select('#van-circle') + .node() + .exec((res) => { + const canvas = res[0].node; + const ctx = canvas.getContext(type); + if (!this.inited) { + this.inited = true; + canvas.width = size * dpr; + canvas.height = size * dpr; + ctx.scale(dpr, dpr); + } + resolve(adaptor(ctx)); + }); + }); + }, + setHoverColor() { + const { color, size } = this.data; + if (isObj(color)) { + return this.getContext().then((context) => { + const LinearColor = context.createLinearGradient(size, 0, 0, 0); + Object.keys(color) + .sort((a, b) => parseFloat(a) - parseFloat(b)) + .map((key) => + LinearColor.addColorStop(parseFloat(key) / 100, color[key]) + ); + this.hoverColor = LinearColor; + }); + } + this.hoverColor = color; + return Promise.resolve(); + }, + presetCanvas(context, strokeStyle, beginAngle, endAngle, fill) { + const { strokeWidth, lineCap, clockwise, size } = this.data; + const position = size / 2; + const radius = position - strokeWidth / 2; + context.setStrokeStyle(strokeStyle); + context.setLineWidth(strokeWidth); + context.setLineCap(lineCap); + context.beginPath(); + context.arc(position, position, radius, beginAngle, endAngle, !clockwise); + context.stroke(); + if (fill) { + context.setFillStyle(fill); + context.fill(); + } + }, + renderLayerCircle(context) { + const { layerColor, fill } = this.data; + this.presetCanvas(context, layerColor, 0, PERIMETER, fill); + }, + renderHoverCircle(context, formatValue) { + const { clockwise } = this.data; + // 结束角度 + const progress = PERIMETER * (formatValue / 100); + const endAngle = clockwise + ? BEGIN_ANGLE + progress + : 3 * Math.PI - (BEGIN_ANGLE + progress); + this.presetCanvas(context, this.hoverColor, BEGIN_ANGLE, endAngle); + }, + drawCircle(currentValue) { + const { size } = this.data; + this.getContext().then((context) => { + context.clearRect(0, 0, size, size); + this.renderLayerCircle(context); + const formatValue = format(currentValue); + if (formatValue !== 0) { + this.renderHoverCircle(context, formatValue); + } + context.draw(); + }); + }, + reRender() { + // tofector 动画暂时没有想到好的解决方案 + const { value, speed } = this.data; + if (speed <= 0 || speed > 1000) { + this.drawCircle(value); + return; + } + this.clearInterval(); + this.currentValue = this.currentValue || 0; + this.interval = setInterval(() => { + if (this.currentValue !== value) { + if (this.currentValue < value) { + this.currentValue += STEP; + } else { + this.currentValue -= STEP; + } + this.drawCircle(this.currentValue); + } else { + this.clearInterval(); + } + }, 1000 / speed); + }, + clearInterval() { + if (this.interval) { + clearInterval(this.interval); + this.interval = null; + } + }, + }, + mounted() { + this.currentValue = this.data.value; + this.setHoverColor().then(() => { + this.drawCircle(this.currentValue); + }); + }, + destroyed() { + this.clearInterval(); + }, +}); diff --git a/vant/dist/circle/index.json b/vant/dist/circle/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/circle/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/circle/index.wxml b/vant/dist/circle/index.wxml new file mode 100755 index 0000000..52bc59f --- /dev/null +++ b/vant/dist/circle/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + {{ text }} + diff --git a/vant/dist/circle/index.wxss b/vant/dist/circle/index.wxss new file mode 100755 index 0000000..3ab63df --- /dev/null +++ b/vant/dist/circle/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-circle{position:relative;display:inline-block;text-align:center}.van-circle__text{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#323233;color:var(--circle-text-color,#323233)} \ No newline at end of file diff --git a/vant/dist/col/index.d.ts b/vant/dist/col/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/col/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/col/index.js b/vant/dist/col/index.js new file mode 100755 index 0000000..20f326f --- /dev/null +++ b/vant/dist/col/index.js @@ -0,0 +1,9 @@ +import { useParent } from '../common/relation'; +import { VantComponent } from '../common/component'; +VantComponent({ + relation: useParent('row'), + props: { + span: Number, + offset: Number, + }, +}); diff --git a/vant/dist/col/index.json b/vant/dist/col/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/col/index.wxml b/vant/dist/col/index.wxml new file mode 100755 index 0000000..975348b --- /dev/null +++ b/vant/dist/col/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/vant/dist/col/index.wxs b/vant/dist/col/index.wxs new file mode 100755 index 0000000..507c1cb --- /dev/null +++ b/vant/dist/col/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + if (!data.gutter) { + return ''; + } + + return style({ + 'padding-right': addUnit(data.gutter / 2), + 'padding-left': addUnit(data.gutter / 2), + }); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/vant/dist/col/index.wxss b/vant/dist/col/index.wxss new file mode 100755 index 0000000..44c896a --- /dev/null +++ b/vant/dist/col/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-col{float:left;box-sizing:border-box}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%} \ No newline at end of file diff --git a/vant/dist/collapse-item/animate.d.ts b/vant/dist/collapse-item/animate.d.ts new file mode 100755 index 0000000..0c33c00 --- /dev/null +++ b/vant/dist/collapse-item/animate.d.ts @@ -0,0 +1,6 @@ +/// +export declare function setContentAnimate( + context: WechatMiniprogram.Component.TrivialInstance, + expanded: boolean, + mounted: boolean +): void; diff --git a/vant/dist/collapse-item/animate.js b/vant/dist/collapse-item/animate.js new file mode 100755 index 0000000..7ce1dae --- /dev/null +++ b/vant/dist/collapse-item/animate.js @@ -0,0 +1,70 @@ +import { canIUseAnimate } from '../common/version'; +import { getRect } from '../common/utils'; +function useAnimate(context, expanded, mounted, height) { + const selector = '.van-collapse-item__wrapper'; + if (expanded) { + context.animate( + selector, + [ + { height: 0, ease: 'ease-in-out', offset: 0 }, + { height: `${height}px`, ease: 'ease-in-out', offset: 1 }, + { height: `auto`, ease: 'ease-in-out', offset: 1 }, + ], + mounted ? 300 : 0, + () => { + context.clearAnimation(selector); + } + ); + return; + } + context.animate( + selector, + [ + { height: `${height}px`, ease: 'ease-in-out', offset: 0 }, + { height: 0, ease: 'ease-in-out', offset: 1 }, + ], + 300, + () => { + context.clearAnimation(selector); + } + ); +} +function useAnimation(context, expanded, mounted, height) { + const animation = wx.createAnimation({ + duration: 0, + timingFunction: 'ease-in-out', + }); + if (expanded) { + if (height === 0) { + animation.height('auto').top(1).step(); + } else { + animation + .height(height) + .top(1) + .step({ + duration: mounted ? 300 : 1, + }) + .height('auto') + .step(); + } + context.setData({ + animation: animation.export(), + }); + return; + } + animation.height(height).top(0).step({ duration: 1 }).height(0).step({ + duration: 300, + }); + context.setData({ + animation: animation.export(), + }); +} +export function setContentAnimate(context, expanded, mounted) { + getRect(context, '.van-collapse-item__content') + .then((rect) => rect.height) + .then((height) => { + canIUseAnimate() + ? useAnimate(context, expanded, mounted, height) + : useAnimation(context, expanded, mounted, height); + }); +} diff --git a/vant/dist/collapse-item/index.d.ts b/vant/dist/collapse-item/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/collapse-item/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/collapse-item/index.js b/vant/dist/collapse-item/index.js new file mode 100755 index 0000000..c44c27e --- /dev/null +++ b/vant/dist/collapse-item/index.js @@ -0,0 +1,59 @@ +import { VantComponent } from '../common/component'; +import { useParent } from '../common/relation'; +import { setContentAnimate } from './animate'; +VantComponent({ + classes: ['title-class', 'content-class'], + relation: useParent('collapse'), + props: { + name: null, + title: null, + value: null, + icon: String, + label: String, + disabled: Boolean, + clickable: Boolean, + border: { + type: Boolean, + value: true, + }, + isLink: { + type: Boolean, + value: true, + }, + }, + data: { + expanded: false, + }, + mounted() { + this.updateExpanded(); + this.mounted = true; + }, + methods: { + updateExpanded() { + if (!this.parent) { + return; + } + const { value, accordion } = this.parent.data; + const { children = [] } = this.parent; + const { name } = this.data; + const index = children.indexOf(this); + const currentName = name == null ? index : name; + const expanded = accordion + ? value === currentName + : (value || []).some((name) => name === currentName); + if (expanded !== this.data.expanded) { + setContentAnimate(this, expanded, this.mounted); + } + this.setData({ index, expanded }); + }, + onClick() { + if (this.data.disabled) { + return; + } + const { name, expanded } = this.data; + const index = this.parent.children.indexOf(this); + const currentName = name == null ? index : name; + this.parent.switch(currentName, !expanded); + }, + }, +}); diff --git a/vant/dist/collapse-item/index.json b/vant/dist/collapse-item/index.json new file mode 100755 index 0000000..0e5425c --- /dev/null +++ b/vant/dist/collapse-item/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index" + } +} diff --git a/vant/dist/collapse-item/index.wxml b/vant/dist/collapse-item/index.wxml new file mode 100755 index 0000000..ae4cc83 --- /dev/null +++ b/vant/dist/collapse-item/index.wxml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + diff --git a/vant/dist/collapse-item/index.wxss b/vant/dist/collapse-item/index.wxss new file mode 100755 index 0000000..0bb936c --- /dev/null +++ b/vant/dist/collapse-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition:-webkit-transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s),-webkit-transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c8c9cc!important;color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important;background-color:var(--white,#fff)!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{padding:15px;padding:var(--collapse-item-content-padding,15px);color:#969799;color:var(--collapse-item-content-text-color,#969799);font-size:13px;font-size:var(--collapse-item-content-font-size,13px);line-height:1.5;line-height:var(--collapse-item-content-line-height,1.5);background-color:#fff;background-color:var(--collapse-item-content-background-color,#fff)} \ No newline at end of file diff --git a/vant/dist/collapse/index.d.ts b/vant/dist/collapse/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/collapse/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/collapse/index.js b/vant/dist/collapse/index.js new file mode 100755 index 0000000..60e4611 --- /dev/null +++ b/vant/dist/collapse/index.js @@ -0,0 +1,44 @@ +import { VantComponent } from '../common/component'; +import { useChildren } from '../common/relation'; +VantComponent({ + relation: useChildren('collapse-item'), + props: { + value: { + type: null, + observer: 'updateExpanded', + }, + accordion: { + type: Boolean, + observer: 'updateExpanded', + }, + border: { + type: Boolean, + value: true, + }, + }, + methods: { + updateExpanded() { + this.children.forEach((child) => { + child.updateExpanded(); + }); + }, + switch(name, expanded) { + const { accordion, value } = this.data; + const changeItem = name; + if (!accordion) { + name = expanded + ? (value || []).concat(name) + : (value || []).filter((activeName) => activeName !== name); + } else { + name = expanded ? name : ''; + } + if (expanded) { + this.$emit('open', changeItem); + } else { + this.$emit('close', changeItem); + } + this.$emit('change', name); + this.$emit('input', name); + }, + }, +}); diff --git a/vant/dist/collapse/index.json b/vant/dist/collapse/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/collapse/index.wxml b/vant/dist/collapse/index.wxml new file mode 100755 index 0000000..fd4e171 --- /dev/null +++ b/vant/dist/collapse/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/vant/dist/collapse/index.wxss b/vant/dist/collapse/index.wxss new file mode 100755 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/collapse/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/common/color.d.ts b/vant/dist/common/color.d.ts new file mode 100755 index 0000000..386f307 --- /dev/null +++ b/vant/dist/common/color.d.ts @@ -0,0 +1,7 @@ +export declare const RED = "#ee0a24"; +export declare const BLUE = "#1989fa"; +export declare const WHITE = "#fff"; +export declare const GREEN = "#07c160"; +export declare const ORANGE = "#ff976a"; +export declare const GRAY = "#323233"; +export declare const GRAY_DARK = "#969799"; diff --git a/vant/dist/common/color.js b/vant/dist/common/color.js new file mode 100755 index 0000000..6b285bd --- /dev/null +++ b/vant/dist/common/color.js @@ -0,0 +1,7 @@ +export const RED = '#ee0a24'; +export const BLUE = '#1989fa'; +export const WHITE = '#fff'; +export const GREEN = '#07c160'; +export const ORANGE = '#ff976a'; +export const GRAY = '#323233'; +export const GRAY_DARK = '#969799'; diff --git a/vant/dist/common/component.d.ts b/vant/dist/common/component.d.ts new file mode 100755 index 0000000..6b0a958 --- /dev/null +++ b/vant/dist/common/component.d.ts @@ -0,0 +1,8 @@ +/// +import { VantComponentOptions } from '../definitions/index'; +declare function VantComponent< + Data extends WechatMiniprogram.Component.DataOption, + Props extends WechatMiniprogram.Component.PropertyOption, + Methods extends WechatMiniprogram.Component.MethodOption +>(vantOptions: VantComponentOptions): void; +export { VantComponent }; diff --git a/vant/dist/common/component.js b/vant/dist/common/component.js new file mode 100755 index 0000000..5530c6f --- /dev/null +++ b/vant/dist/common/component.js @@ -0,0 +1,45 @@ +import { basic } from '../mixins/basic'; +function mapKeys(source, target, map) { + Object.keys(map).forEach((key) => { + if (source[key]) { + target[map[key]] = source[key]; + } + }); +} +function VantComponent(vantOptions) { + const options = {}; + mapKeys(vantOptions, options, { + data: 'data', + props: 'properties', + mixins: 'behaviors', + methods: 'methods', + beforeCreate: 'created', + created: 'attached', + mounted: 'ready', + destroyed: 'detached', + classes: 'externalClasses', + }); + // add default externalClasses + options.externalClasses = options.externalClasses || []; + options.externalClasses.push('custom-class'); + // add default behaviors + options.behaviors = options.behaviors || []; + options.behaviors.push(basic); + // add relations + const { relation } = vantOptions; + if (relation) { + options.relations = relation.relations; + options.behaviors.push(relation.mixin); + } + // map field to form-field behavior + if (vantOptions.field) { + options.behaviors.push('wx://form-field'); + } + // add default options + options.options = { + multipleSlots: true, + addGlobalClass: true, + }; + Component(options); +} +export { VantComponent }; diff --git a/vant/dist/common/index.wxss b/vant/dist/common/index.wxss new file mode 100755 index 0000000..ad44c84 --- /dev/null +++ b/vant/dist/common/index.wxss @@ -0,0 +1,83 @@ +.van-ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.van-multi-ellipsis--l2 { + -webkit-line-clamp: 2 +} + +.van-multi-ellipsis--l2, +.van-multi-ellipsis--l3 { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-box-orient: vertical +} + +.van-multi-ellipsis--l3 { + -webkit-line-clamp: 3 +} + +.van-clearfix:after { + display: table; + clear: both; + content: "" +} + +.van-hairline, +.van-hairline--bottom, +.van-hairline--left, +.van-hairline--right, +.van-hairline--surround, +.van-hairline--top, +.van-hairline--top-bottom { + position: relative +} + +.van-hairline--bottom:after, +.van-hairline--left:after, +.van-hairline--right:after, +.van-hairline--surround:after, +.van-hairline--top-bottom:after, +.van-hairline--top:after, +.van-hairline:after { + position: absolute; + box-sizing: border-box; + -webkit-transform-origin: center; + transform-origin: center; + content: " "; + pointer-events: none; + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + border: 0 solid #ebedf0; + -webkit-transform: scale(.5); + transform: scale(.5) +} + +.van-hairline--top:after { + border-top-width: 1px +} + +.van-hairline--left:after { + border-left-width: 1px +} + +.van-hairline--right:after { + border-right-width: 1px +} + +.van-hairline--bottom:after { + border-bottom-width: 1px +} + +.van-hairline--top-bottom:after { + border-width: 1px 0 +} + +.van-hairline--surround:after { + border-width: 1px +} \ No newline at end of file diff --git a/vant/dist/common/relation.d.ts b/vant/dist/common/relation.d.ts new file mode 100755 index 0000000..be5f2ee --- /dev/null +++ b/vant/dist/common/relation.d.ts @@ -0,0 +1,21 @@ +/// +declare type TrivialInstance = WechatMiniprogram.Component.TrivialInstance; +export declare function useParent( + name: string, + onEffect?: (this: TrivialInstance) => void +): { + relations: { + [x: string]: WechatMiniprogram.Component.RelationOption; + }; + mixin: string; +}; +export declare function useChildren( + name: string, + onEffect?: (this: TrivialInstance, target: TrivialInstance) => void +): { + relations: { + [x: string]: WechatMiniprogram.Component.RelationOption; + }; + mixin: string; +}; +export {}; diff --git a/vant/dist/common/relation.js b/vant/dist/common/relation.js new file mode 100755 index 0000000..99c1a49 --- /dev/null +++ b/vant/dist/common/relation.js @@ -0,0 +1,64 @@ +export function useParent(name, onEffect) { + const path = `../${name}/index`; + return { + relations: { + [path]: { + type: 'ancestor', + linked() { + onEffect && onEffect.call(this); + }, + linkChanged() { + onEffect && onEffect.call(this); + }, + unlinked() { + onEffect && onEffect.call(this); + }, + }, + }, + mixin: Behavior({ + created() { + Object.defineProperty(this, 'parent', { + get: () => this.getRelationNodes(path)[0], + }); + Object.defineProperty(this, 'index', { + // @ts-ignore + get: () => { + var _a, _b; + return (_b = + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.children) === null || _b === void 0 + ? void 0 + : _b.indexOf(this); + }, + }); + }, + }), + }; +} +export function useChildren(name, onEffect) { + const path = `../${name}/index`; + return { + relations: { + [path]: { + type: 'descendant', + linked(target) { + onEffect && onEffect.call(this, target); + }, + linkChanged(target) { + onEffect && onEffect.call(this, target); + }, + unlinked(target) { + onEffect && onEffect.call(this, target); + }, + }, + }, + mixin: Behavior({ + created() { + Object.defineProperty(this, 'children', { + get: () => this.getRelationNodes(path) || [], + }); + }, + }), + }; +} diff --git a/vant/dist/common/style/clearfix.wxss b/vant/dist/common/style/clearfix.wxss new file mode 100755 index 0000000..a0ca838 --- /dev/null +++ b/vant/dist/common/style/clearfix.wxss @@ -0,0 +1 @@ +.van-clearfix:after{display:table;clear:both;content:""} \ No newline at end of file diff --git a/vant/dist/common/style/ellipsis.wxss b/vant/dist/common/style/ellipsis.wxss new file mode 100755 index 0000000..1e9dbc9 --- /dev/null +++ b/vant/dist/common/style/ellipsis.wxss @@ -0,0 +1 @@ +.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3} \ No newline at end of file diff --git a/vant/dist/common/style/hairline.wxss b/vant/dist/common/style/hairline.wxss new file mode 100755 index 0000000..41246f9 --- /dev/null +++ b/vant/dist/common/style/hairline.wxss @@ -0,0 +1,55 @@ +.van-hairline, +.van-hairline--bottom, +.van-hairline--left, +.van-hairline--right, +.van-hairline--surround, +.van-hairline--top, +.van-hairline--top-bottom { + position: relative +} + +.van-hairline--bottom:after, +.van-hairline--left:after, +.van-hairline--right:after, +.van-hairline--surround:after, +.van-hairline--top-bottom:after, +.van-hairline--top:after, +.van-hairline:after { + position: absolute; + box-sizing: border-box; + -webkit-transform-origin: center; + transform-origin: center; + content: " "; + pointer-events: none; + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + border: 0 solid #ebedf0; + -webkit-transform: scale(.5); + transform: scale(.5) +} + +.van-hairline--top:after { + border-top-width: 1px +} + +.van-hairline--left:after { + border-left-width: 1px +} + +.van-hairline--right:after { + border-right-width: 1px +} + +.van-hairline--bottom:after { + border-bottom-width: 1px +} + +.van-hairline--top-bottom:after { + border-width: 1px 0 +} + +.van-hairline--surround:after { + border-width: 1px +} \ No newline at end of file diff --git a/vant/dist/common/style/mixins/clearfix.wxss b/vant/dist/common/style/mixins/clearfix.wxss new file mode 100755 index 0000000..e69de29 diff --git a/vant/dist/common/style/mixins/ellipsis.wxss b/vant/dist/common/style/mixins/ellipsis.wxss new file mode 100755 index 0000000..e69de29 diff --git a/vant/dist/common/style/mixins/hairline.wxss b/vant/dist/common/style/mixins/hairline.wxss new file mode 100755 index 0000000..e69de29 diff --git a/vant/dist/common/style/theme.wxss b/vant/dist/common/style/theme.wxss new file mode 100755 index 0000000..e69de29 diff --git a/vant/dist/common/style/var.wxss b/vant/dist/common/style/var.wxss new file mode 100755 index 0000000..e69de29 diff --git a/vant/dist/common/utils.d.ts b/vant/dist/common/utils.d.ts new file mode 100755 index 0000000..1ceccd1 --- /dev/null +++ b/vant/dist/common/utils.d.ts @@ -0,0 +1,30 @@ +/// +export declare function range(num: number, min: number, max: number): number; +export declare function nextTick(cb: (...args: any[]) => void): void; +export declare function getSystemInfoSync(): WechatMiniprogram.GetSystemInfoSyncResult; +export declare function addUnit(value?: string | number): string | undefined; +export declare function requestAnimationFrame( + cb: () => void +): number | WechatMiniprogram.NodesRef; +export declare function pickExclude(obj: unknown, keys: string[]): {}; +export declare function getRect( + context: WechatMiniprogram.Component.TrivialInstance, + selector: string +): Promise; +export declare function getAllRect( + context: WechatMiniprogram.Component.TrivialInstance, + selector: string +): Promise; +export declare function groupSetData( + context: WechatMiniprogram.Component.TrivialInstance, + cb: () => void +): void; +export declare function toPromise( + promiseLike: Promise | unknown +): Promise; +export declare function getCurrentPage(): T & + WechatMiniprogram.OptionalInterface & + WechatMiniprogram.Page.InstanceProperties & + WechatMiniprogram.Page.InstanceMethods> & + WechatMiniprogram.Page.Data> & + Record; diff --git a/vant/dist/common/utils.js b/vant/dist/common/utils.js new file mode 100755 index 0000000..8135171 --- /dev/null +++ b/vant/dist/common/utils.js @@ -0,0 +1,89 @@ +import { isDef, isNumber, isPlainObject, isPromise } from './validator'; +import { canIUseGroupSetData, canIUseNextTick } from './version'; +export function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +export function nextTick(cb) { + if (canIUseNextTick()) { + wx.nextTick(cb); + } else { + setTimeout(() => { + cb(); + }, 1000 / 30); + } +} +let systemInfo; +export function getSystemInfoSync() { + if (systemInfo == null) { + systemInfo = wx.getSystemInfoSync(); + } + return systemInfo; +} +export function addUnit(value) { + if (!isDef(value)) { + return undefined; + } + value = String(value); + return isNumber(value) ? `${value}px` : value; +} +export function requestAnimationFrame(cb) { + const systemInfo = getSystemInfoSync(); + if (systemInfo.platform === 'devtools') { + return setTimeout(() => { + cb(); + }, 1000 / 30); + } + return wx + .createSelectorQuery() + .selectViewport() + .boundingClientRect() + .exec(() => { + cb(); + }); +} +export function pickExclude(obj, keys) { + if (!isPlainObject(obj)) { + return {}; + } + return Object.keys(obj).reduce((prev, key) => { + if (!keys.includes(key)) { + prev[key] = obj[key]; + } + return prev; + }, {}); +} +export function getRect(context, selector) { + return new Promise((resolve) => { + wx.createSelectorQuery() + .in(context) + .select(selector) + .boundingClientRect() + .exec((rect = []) => resolve(rect[0])); + }); +} +export function getAllRect(context, selector) { + return new Promise((resolve) => { + wx.createSelectorQuery() + .in(context) + .selectAll(selector) + .boundingClientRect() + .exec((rect = []) => resolve(rect[0])); + }); +} +export function groupSetData(context, cb) { + if (canIUseGroupSetData()) { + context.groupSetData(cb); + } else { + cb(); + } +} +export function toPromise(promiseLike) { + if (isPromise(promiseLike)) { + return promiseLike; + } + return Promise.resolve(promiseLike); +} +export function getCurrentPage() { + const pages = getCurrentPages(); + return pages[pages.length - 1]; +} diff --git a/vant/dist/common/validator.d.ts b/vant/dist/common/validator.d.ts new file mode 100755 index 0000000..ae7c48f --- /dev/null +++ b/vant/dist/common/validator.d.ts @@ -0,0 +1,11 @@ +export declare function isFunction(val: unknown): val is Function; +export declare function isPlainObject( + val: unknown +): val is Record; +export declare function isPromise(val: unknown): val is Promise; +export declare function isDef(value: unknown): boolean; +export declare function isObj(x: unknown): x is Record; +export declare function isNumber(value: string): boolean; +export declare function isBoolean(value: unknown): value is boolean; +export declare function isImageUrl(url: string): boolean; +export declare function isVideoUrl(url: string): boolean; diff --git a/vant/dist/common/validator.js b/vant/dist/common/validator.js new file mode 100755 index 0000000..1c7d1e9 --- /dev/null +++ b/vant/dist/common/validator.js @@ -0,0 +1,30 @@ +export function isFunction(val) { + return typeof val === 'function'; +} +export function isPlainObject(val) { + return val !== null && typeof val === 'object' && !Array.isArray(val); +} +export function isPromise(val) { + return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch); +} +export function isDef(value) { + return value !== undefined && value !== null; +} +export function isObj(x) { + const type = typeof x; + return x !== null && (type === 'object' || type === 'function'); +} +export function isNumber(value) { + return /^\d+(\.\d+)?$/.test(value); +} +export function isBoolean(value) { + return typeof value === 'boolean'; +} +const IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; +const VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i; +export function isImageUrl(url) { + return IMAGE_REGEXP.test(url); +} +export function isVideoUrl(url) { + return VIDEO_REGEXP.test(url); +} diff --git a/vant/dist/common/version.d.ts b/vant/dist/common/version.d.ts new file mode 100755 index 0000000..89c4ddd --- /dev/null +++ b/vant/dist/common/version.d.ts @@ -0,0 +1,6 @@ +export declare function canIUseModel(): boolean; +export declare function canIUseFormFieldButton(): boolean; +export declare function canIUseAnimate(): boolean; +export declare function canIUseGroupSetData(): boolean; +export declare function canIUseNextTick(): boolean; +export declare function canIUseCanvas2d(): boolean; diff --git a/vant/dist/common/version.js b/vant/dist/common/version.js new file mode 100755 index 0000000..34d698e --- /dev/null +++ b/vant/dist/common/version.js @@ -0,0 +1,45 @@ +import { getSystemInfoSync } from './utils'; +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; + } + if (num1 < num2) { + return -1; + } + } + return 0; +} +function gte(version) { + const system = getSystemInfoSync(); + return compareVersion(system.SDKVersion, version) >= 0; +} +export function canIUseModel() { + return gte('2.9.3'); +} +export function canIUseFormFieldButton() { + return gte('2.10.3'); +} +export function canIUseAnimate() { + return gte('2.9.0'); +} +export function canIUseGroupSetData() { + return gte('2.4.0'); +} +export function canIUseNextTick() { + return wx.canIUse('nextTick'); +} +export function canIUseCanvas2d() { + return gte('2.9.0'); +} diff --git a/vant/dist/count-down/index.d.ts b/vant/dist/count-down/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/count-down/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/count-down/index.js b/vant/dist/count-down/index.js new file mode 100755 index 0000000..78dbb88 --- /dev/null +++ b/vant/dist/count-down/index.js @@ -0,0 +1,99 @@ +import { VantComponent } from '../common/component'; +import { isSameSecond, parseFormat, parseTimeData } from './utils'; +function simpleTick(fn) { + return setTimeout(fn, 30); +} +VantComponent({ + props: { + useSlot: Boolean, + millisecond: Boolean, + time: { + type: Number, + observer: 'reset', + }, + format: { + type: String, + value: 'HH:mm:ss', + }, + autoStart: { + type: Boolean, + value: true, + }, + }, + data: { + timeData: parseTimeData(0), + formattedTime: '0', + }, + destroyed() { + clearTimeout(this.tid); + this.tid = null; + }, + methods: { + // 开始 + start() { + if (this.counting) { + return; + } + this.counting = true; + this.endTime = Date.now() + this.remain; + this.tick(); + }, + // 暂停 + pause() { + this.counting = false; + clearTimeout(this.tid); + }, + // 重置 + reset() { + this.pause(); + this.remain = this.data.time; + this.setRemain(this.remain); + if (this.data.autoStart) { + this.start(); + } + }, + tick() { + if (this.data.millisecond) { + this.microTick(); + } else { + this.macroTick(); + } + }, + microTick() { + this.tid = simpleTick(() => { + this.setRemain(this.getRemain()); + if (this.remain !== 0) { + this.microTick(); + } + }); + }, + macroTick() { + this.tid = simpleTick(() => { + const remain = this.getRemain(); + if (!isSameSecond(remain, this.remain) || remain === 0) { + this.setRemain(remain); + } + if (this.remain !== 0) { + this.macroTick(); + } + }); + }, + getRemain() { + return Math.max(this.endTime - Date.now(), 0); + }, + setRemain(remain) { + this.remain = remain; + const timeData = parseTimeData(remain); + if (this.data.useSlot) { + this.$emit('change', timeData); + } + this.setData({ + formattedTime: parseFormat(this.data.format, timeData), + }); + if (remain === 0) { + this.pause(); + this.$emit('finish'); + } + }, + }, +}); diff --git a/vant/dist/count-down/index.json b/vant/dist/count-down/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/count-down/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/count-down/index.wxml b/vant/dist/count-down/index.wxml new file mode 100755 index 0000000..e206e16 --- /dev/null +++ b/vant/dist/count-down/index.wxml @@ -0,0 +1,4 @@ + + + {{ formattedTime }} + diff --git a/vant/dist/count-down/index.wxss b/vant/dist/count-down/index.wxss new file mode 100755 index 0000000..bc33f5d --- /dev/null +++ b/vant/dist/count-down/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-count-down{color:#323233;color:var(--count-down-text-color,#323233);font-size:14px;font-size:var(--count-down-font-size,14px);line-height:20px;line-height:var(--count-down-line-height,20px)} \ No newline at end of file diff --git a/vant/dist/count-down/utils.d.ts b/vant/dist/count-down/utils.d.ts new file mode 100755 index 0000000..e4a58dd --- /dev/null +++ b/vant/dist/count-down/utils.d.ts @@ -0,0 +1,10 @@ +export declare type TimeData = { + days: number; + hours: number; + minutes: number; + seconds: number; + milliseconds: number; +}; +export declare function parseTimeData(time: number): TimeData; +export declare function parseFormat(format: string, timeData: TimeData): string; +export declare function isSameSecond(time1: number, time2: number): boolean; diff --git a/vant/dist/count-down/utils.js b/vant/dist/count-down/utils.js new file mode 100755 index 0000000..a9f05b8 --- /dev/null +++ b/vant/dist/count-down/utils.js @@ -0,0 +1,53 @@ +function padZero(num, targetLength = 2) { + let str = num + ''; + while (str.length < targetLength) { + str = '0' + str; + } + return str; +} +const SECOND = 1000; +const MINUTE = 60 * SECOND; +const HOUR = 60 * MINUTE; +const DAY = 24 * HOUR; +export function parseTimeData(time) { + const days = Math.floor(time / DAY); + const hours = Math.floor((time % DAY) / HOUR); + const minutes = Math.floor((time % HOUR) / MINUTE); + const seconds = Math.floor((time % MINUTE) / SECOND); + const milliseconds = Math.floor(time % SECOND); + return { + days, + hours, + minutes, + seconds, + milliseconds, + }; +} +export function parseFormat(format, timeData) { + const { days } = timeData; + let { hours, minutes, seconds, milliseconds } = timeData; + if (format.indexOf('DD') === -1) { + hours += days * 24; + } else { + format = format.replace('DD', padZero(days)); + } + if (format.indexOf('HH') === -1) { + minutes += hours * 60; + } else { + format = format.replace('HH', padZero(hours)); + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60; + } else { + format = format.replace('mm', padZero(minutes)); + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000; + } else { + format = format.replace('ss', padZero(seconds)); + } + return format.replace('SSS', padZero(milliseconds, 3)); +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000); +} diff --git a/vant/dist/cropper/index.js b/vant/dist/cropper/index.js new file mode 100755 index 0000000..9a80a7a --- /dev/null +++ b/vant/dist/cropper/index.js @@ -0,0 +1,381 @@ +const defaultData = { + isShowCropper:false, + // 初始化的宽高 + cropperInitW: 750, + cropperInitH: 750, + // 动态的宽高 + cropperW: 750, + cropperH: 750, + // 动态的left top值 + cropperL: 0, + cropperT: 0, + + transL: 0, + transT: 0, + + // 图片缩放值 + scaleP: 0, + imageW: 0, + imageH: 0, + + // 裁剪框 宽高 + cutL: 0, + cutT: 0, + cutB: 0, + cutR: 0, + + qualityWidth: '', + innerAspectRadio: 750 / wx.getSystemInfoSync().windowWidth, + + C_CONSTANTS:{ + SCREEN_WIDTH : 750, + PAGE_X:0, // 手按下的x位置 + PAGE_Y:0, // 手按下y的位置 + PR : wx.getSystemInfoSync().pixelRatio, // dpi + T_PAGE_X:{}, // 手移动的时候x的位置 + T_PAGE_Y:{}, // 手移动的时候Y的位置 + CUT_L:0, // 初始化拖拽元素的left值 + CUT_T:0, // 初始化拖拽元素的top值 + CUT_R:0, // 初始化拖拽元素的 + CUT_B:0, // 初始化拖拽元素的 + CUT_W:0, // 初始化拖拽元素的宽度 + CUT_H:0, // 初始化拖拽元素的高度 + IMG_RATIO:0, // 图片比例 + IMG_REAL_W:0, // 图片实际的宽度 + IMG_REAL_H:0, // 图片实际的高度 + IMG_TYPE:'',//图片的格式 + DRAFG_MOVE_RATIO : 750 / wx.getSystemInfoSync().windowWidth //移动时候的比例 + } +}; +let data = {}; + +try{ + data = JSON.parse(JSON.stringify(defaultData)); +}catch(e){console.log(e)}; + +Component({ + properties: { + imageSrc:{ + type:String, + value:'', + observer(newVal, oldVal) { + if(newVal !== oldVal){ + this.setData({ + isShowCropper:true + },() => { + this.loadImage(); + }) + } + + } + }, + isCircleCrop:{ + type:Boolean, + value:false + }, + enableScale:{ + type:Boolean, + value:false + }, + ratio:{ + type:Number, + value:1 + } + }, + data, + ready(){ + if(this.data.isCircleCrop){ + //圆形裁剪 强制比例为1 + this.setData({ + ratio:1 + }) + } + }, + methods: { + loadImage() { + let {ratio,imageSrc} = this.data; + let {IMG_REAL_W,IMG_REAL_H,IMG_RATIO,SCREEN_WIDTH,IMG_TYPE} = this.data.C_CONSTANTS; + wx.getImageInfo({ + src: imageSrc, + success: res => { + IMG_REAL_W = res.width; + IMG_REAL_H = res.height; + IMG_RATIO = IMG_REAL_W / IMG_REAL_H; + IMG_TYPE = res.type === 'png' ? 'png' : 'jpg'; + // 根据图片的宽高显示不同的效果 保证图片可以正常显示 + let temp = {}; + let cropperData = {}; + if (IMG_RATIO >= 1) { + cropperData = { + cropperW: SCREEN_WIDTH, + cropperH: SCREEN_WIDTH / IMG_RATIO, + // 初始化left right + cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2), + cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO) / 2) + } + if(ratio > 1){ + temp = { + cutL: (SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO) / 2, + cutT: (SCREEN_WIDTH / IMG_RATIO - SCREEN_WIDTH / IMG_RATIO / ratio ) / 2, + cutR: SCREEN_WIDTH - (SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO) / 2 - SCREEN_WIDTH / IMG_RATIO, + cutB: SCREEN_WIDTH / IMG_RATIO - (SCREEN_WIDTH / IMG_RATIO - SCREEN_WIDTH / IMG_RATIO / ratio ) / 2 - SCREEN_WIDTH / IMG_RATIO / ratio + } + }else{ + temp = { + cutT:0, + cutB:0, + cutL:(SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO * ratio) / 2, + cutR: SCREEN_WIDTH - (SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO * ratio) / 2 - SCREEN_WIDTH / IMG_RATIO * ratio + } + } + } else { + cropperData = { + cropperW: SCREEN_WIDTH * IMG_RATIO, + cropperH: SCREEN_WIDTH, + // 初始化left right + cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO) / 2), + cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2) + } + if(ratio > 1){ + temp = { + cutL:0, + cutR:0, + cutT: (SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO / ratio) / 2, + cutB: SCREEN_WIDTH - (SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO / ratio) / 2 - SCREEN_WIDTH * IMG_RATIO / ratio + } + }else{ + temp = { + cutL: (SCREEN_WIDTH * IMG_RATIO - SCREEN_WIDTH * IMG_RATIO * ratio) / 2, + cutR: SCREEN_WIDTH * IMG_RATIO - (SCREEN_WIDTH * IMG_RATIO - SCREEN_WIDTH * IMG_RATIO * ratio) / 2 - SCREEN_WIDTH * IMG_RATIO * ratio, + cutT: (SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO) / 2, + cutB: SCREEN_WIDTH - (SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO) / 2 - SCREEN_WIDTH * IMG_RATIO + } + + } + } + this.setData({ + C_CONSTANTS:Object.assign({},this.data.C_CONSTANTS,{ + IMG_REAL_W, + IMG_REAL_H, + IMG_RATIO, + IMG_TYPE + }), + isShowCropper: true, + // 图片缩放值 + scaleP: IMG_REAL_W / SCREEN_WIDTH, + qualityWidth: IMG_REAL_W, + innerAspectRadio: IMG_RATIO, + ...temp, + ...cropperData + }) + } + }); + + }, + contentStartMove(e) { + this.setData({ + 'C_CONSTANTS.PAGE_X':e.touches[0].pageX, + 'C_CONSTANTS.PAGE_Y':e.touches[0].pageY + }) + }, + // 拖动时候触发的touchMove事件 + contentMoveing(e) { + let {PAGE_X,PAGE_Y,DRAFG_MOVE_RATIO} = this.data.C_CONSTANTS; + let {cutL,cutR,cutT,cutB} = this.data; + let dragLengthX = (PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO + let dragLengthY = (PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO + // 左移 + if (dragLengthX > 0) { + if (cutL - dragLengthX < 0) dragLengthX = cutL + } else { + if (cutR + dragLengthX < 0) dragLengthX = -cutR + } + + if (dragLengthY > 0) { + if (cutT - dragLengthY < 0) dragLengthY = cutT + } else { + if (cutB + dragLengthY < 0) dragLengthY = -cutB + } + this.setData({ + cutL: cutL - dragLengthX, + cutT: cutT - dragLengthY, + cutR: cutR + dragLengthX, + cutB: cutB + dragLengthY, + 'C_CONSTANTS.PAGE_X':e.touches[0].pageX, + 'C_CONSTANTS.PAGE_Y':e.touches[0].pageY + }); + }, + // 设置大小的时候触发的touchStart事件 + dragStart(e) { + let {cutL,cutR,cutT,cutB} = this.data; + this.setData({ + C_CONSTANTS:Object.assign({},this.data.C_CONSTANTS,{ + T_PAGE_X : e.touches[0].pageX, + T_PAGE_Y : e.touches[0].pageY, + CUT_L : cutL, + CUT_R : cutR, + CUT_B : cutB, + CUT_T : cutT + }) + }) + + }, + // 设置大小的时候触发的touchMove事件 + dragMove(e) { + let dragType = e.target.dataset.drag + let {ratio,cropperW,cropperH,cutL,cutT,cutR,cutB,enableScale} = this.data; + let {CUT_R,CUT_L,CUT_T,CUT_B,T_PAGE_X,T_PAGE_Y,DRAFG_MOVE_RATIO} = this.data.C_CONSTANTS; + let dragLength; + switch (dragType) { + case 'right': + dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO + if (CUT_R + dragLength < 0) dragLength = -CUT_R + cutR = CUT_R + dragLength; + if(enableScale){ + cutT = CUT_T + dragLength / ratio; + } + if(cutR < 0 || cutT < 0 || cutT > cropperH || cutR > cropperW) return; + break; + case 'left': + dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO + if (CUT_L - dragLength < 0) dragLength = CUT_L + if ((CUT_L - dragLength) > (this.data.cropperW - this.data.cutR)) dragLength = CUT_L - (this.data.cropperW - this.data.cutR) + cutL = CUT_L - dragLength; + if(enableScale){ + cutT = CUT_T - dragLength / ratio; + } + if(cutL < 0 || cutT < 0 || cutT > cropperH || cutL > cropperW) return; + break; + case 'top': + dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO + if (CUT_T - dragLength < 0) dragLength = CUT_T + if ((CUT_T - dragLength) > (this.data.cropperH - this.data.cutB)) dragLength = CUT_T - (this.data.cropperH - this.data.cutB) + cutT = CUT_T - dragLength; + if(enableScale){ + cutR = CUT_R - dragLength * ratio; + } + break; + case 'bottom': + dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO + if (CUT_B + dragLength < 0) dragLength = -CUT_B + cutB = CUT_B + dragLength; + if(enableScale){ + cutR = CUT_R + dragLength * ratio; + } + if(cutR < 0 || cutT < 0 || cutT > cropperH || cutR > cropperW) return; + break; + default:''; + } + this.setData({ + cutL, + cutT, + cutR, + cutB + }); + }, + contentTouchEnd(){}, + // 获取图片 + confirmCropper() { + const {isCircleCrop} = this.data;; + if(isCircleCrop){ + this.circleCrop() + }else{ + this.normalCropper(); + } + }, + + normalCropper(){ + let {imageSrc,cropperW,cropperH,cutL,cutT,cutR,cutB} = this.data; + let {IMG_REAL_W,IMG_REAL_H,IMG_TYPE} = this.data.C_CONSTANTS; + // 将图片写入画布 + const ctx = wx.createCanvasContext('cropper',this) + ctx.drawImage(imageSrc, 0, 0, IMG_REAL_W, IMG_REAL_H); + ctx.draw(true, () => { + // 获取画布要裁剪的位置和宽度 均为百分比 * 画布中图片的宽度 保证了在微信小程序中裁剪的图片模糊 位置不对的问题 canvasT = (_this.data.cutT / _this.data.cropperH) * (_this.data.imageH / pixelRatio) + let canvasW = ((cropperW - cutL - cutR) / cropperW) * IMG_REAL_W + let canvasH = ((cropperH - cutT - cutB) / cropperH) * IMG_REAL_H + let canvasL = (cutL / cropperW) * IMG_REAL_W + let canvasT = (cutT / cropperH) * IMG_REAL_H + wx.canvasToTempFilePath({ + x: canvasL, + y: canvasT, + width: canvasW, + height: canvasH, + destWidth: canvasW, + destHeight: canvasH, + fileType:IMG_TYPE || 'jpg', + canvasId: 'cropper', + success: (res) => { + //图片裁剪成功 + this.cancelCropper(); + this.triggerEvent('cropperDone', { + src:res.tempFilePath, + cropperData:{ + x: canvasL, + y: canvasT, + width: canvasW, + height: canvasH + } + }) + }, + fail:err =>{ + this.triggerEvent('cropperFail',err) + } + },this); + }) + }, + + circleCrop(){ + let {imageSrc,cropperW,cropperH,cutL,cutT,cutR,cutB} = this.data; + let {IMG_REAL_W,IMG_REAL_H,IMG_TYPE} = this.data.C_CONSTANTS; + // 将图片写入画布 + const ctx = wx.createCanvasContext('cropper',this) + let canvasW = ((cropperW - cutL - cutR) / cropperW) * IMG_REAL_W + let canvasL = (cutL / cropperW) * IMG_REAL_W + let canvasT = (cutT / cropperH) * IMG_REAL_H + + this.setData({ + canvasW:canvasW, + canvasH:canvasW + },() => { + ctx.arc(canvasW / 2,canvasW / 2,canvasW / 2,0,2 * Math.PI); + ctx.clip(); + ctx.drawImage(imageSrc, canvasL, canvasT, canvasW, canvasW,0,0,canvasW,canvasW); + ctx.draw(true, () => { + wx.canvasToTempFilePath({ + fileType:IMG_TYPE || 'jpg', + canvasId: 'cropper', + success: (res) => { + //图片裁剪成功 + this.cancelCropper(); + this.triggerEvent('cropperDone', { + src:res.tempFilePath, + cropperData:{ + x: canvasL, + y: canvasT, + width: canvasW, + height: canvasW + } + }) + }, + fail:err =>{ + this.triggerEvent('cropperFail',err) + } + },this); + }) + }) + }, + + cancelCropper(){ + let originData = {} + try{ + originData = JSON.parse(JSON.stringify(defaultData)) + }catch(e){}; + + this.setData({ + ...originData + }); + this.triggerEvent('cropperCancel') + } + } +}) \ No newline at end of file diff --git a/vant/dist/cropper/index.json b/vant/dist/cropper/index.json new file mode 100755 index 0000000..fba482a --- /dev/null +++ b/vant/dist/cropper/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/vant/dist/cropper/index.wxml b/vant/dist/cropper/index.wxml new file mode 100755 index 0000000..373095b --- /dev/null +++ b/vant/dist/cropper/index.wxml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vant/dist/cropper/index.wxss b/vant/dist/cropper/index.wxss new file mode 100755 index 0000000..08aa641 --- /dev/null +++ b/vant/dist/cropper/index.wxss @@ -0,0 +1,296 @@ +/* pages/wx-cropper/index.wxss */ +.wx-cropper-info { + position: fixed; + top: 140rpx; + left: 0; + right: 0; + bottom: 0; + display: block; + z-index: 10000; + align-items: center; + flex-direction: column; + height: 100%; + background: #000; +} + +.cropper-config { + display: flex; + position: fixed; + width: 100%; + bottom: 20rpx; +} + +.cropper-config .btn { + min-width: 300rpx; +} + +.cropper-config .cropper-confirm { + background: #fac208; +} + +.cropper-content { + min-height: 750rpx; + width: 100%; + height: 100%; +} + +.wx-corpper { + position: relative; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + -webkit-touch-callout: none; + box-sizing: border-box; +} + +.wx-corpper-content { + position: relative; +} + +.wx-corpper-content .img { + display: block; + width: 100%; + min-width: 0 !important; + max-width: none !important; + height: 100%; + min-height: 0 !important; + max-height: none !important; + image-orientation: 0deg !important; + margin: 0 auto; +} + +/* 移动图片效果 */ +.wx-cropper-drag-box { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + cursor: move; + background: rgba(0, 0, 0, 0.6); + z-index: 1; +} + +/* 内部的信息 */ +.wx-corpper-crop-box { + position: absolute; + background: rgba(255, 255, 255, 0.3); + z-index: 2; +} + +.wx-corpper-crop-box .wx-cropper-view-box { + position: relative; + display: block; + width: 100%; + height: 100%; + overflow: visible; + outline: 1px solid #69f; + outline-color: rgba(102, 153, 255, .75) +} + +/* 横向虚线 */ +.wx-cropper-dashed-h { + position: absolute; + top: 33.33333333%; + left: 0; + width: 100%; + height: 33.33333333%; + border-top: 1px dashed rgba(255, 255, 255, 0.5); + border-bottom: 1px dashed rgba(255, 255, 255, 0.5); +} + +/* 纵向虚线 */ +.wx-cropper-dashed-v { + position: absolute; + left: 33.33333333%; + top: 0; + width: 33.33333333%; + height: 100%; + border-left: 1px dashed rgba(255, 255, 255, 0.5); + border-right: 1px dashed rgba(255, 255, 255, 0.5); +} + +/* 四个方向的线 为了之后的拖动事件*/ +.wx-cropper-line-t { + position: absolute; + display: block; + width: 100%; + background-color: #69f; + top: 0; + left: 0; + height: 1px; + opacity: 0.1; + cursor: n-resize; +} + +.wx-cropper-line-t::before { + content: ''; + position: absolute; + top: 50%; + right: 0rpx; + width: 100%; + -webkit-transform: translate3d(0, -50%, 0); + transform: translate3d(0, -50%, 0); + bottom: 0; + height: 41rpx; + background: transparent; + z-index: 11; +} + +.wx-cropper-line-r { + position: absolute; + display: block; + background-color: #69f; + top: 0; + right: 0px; + width: 1px; + opacity: 0.1; + height: 100%; + cursor: e-resize; +} + +.wx-cropper-line-r::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + width: 41rpx; + -webkit-transform: translate3d(-50%, 0, 0); + transform: translate3d(-50%, 0, 0); + bottom: 0; + height: 100%; + background: transparent; + z-index: 11; +} + +.wx-cropper-line-b { + position: absolute; + display: block; + width: 100%; + background-color: #69f; + bottom: 0; + left: 0; + height: 1px; + opacity: 0.1; + cursor: s-resize; +} + +.wx-cropper-line-b::before { + content: ''; + position: absolute; + top: 50%; + right: 0rpx; + width: 100%; + -webkit-transform: translate3d(0, -50%, 0); + transform: translate3d(0, -50%, 0); + bottom: 0; + height: 41rpx; + background: transparent; + z-index: 11; +} + +.wx-cropper-line-l { + position: absolute; + display: block; + background-color: #69f; + top: 0; + left: 0; + width: 1px; + opacity: 0.1; + height: 100%; + cursor: w-resize; +} + +.wx-cropper-line-l::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + width: 41rpx; + -webkit-transform: translate3d(-50%, 0, 0); + transform: translate3d(-50%, 0, 0); + bottom: 0; + height: 100%; + background: transparent; + z-index: 11; +} + +.wx-cropper-point { + width: 5px; + height: 5px; + background-color: #69f; + opacity: .75; + position: absolute; + z-index: 3; +} + +.point-t { + top: -3px; + left: 50%; + margin-left: -3px; + cursor: n-resize; +} + +.point-tr { + top: -3px; + left: 100%; + margin-left: -3px; + cursor: n-resize; +} + +.point-r { + top: 50%; + left: 100%; + margin-left: -3px; + margin-top: -3px; + cursor: n-resize; +} + +.point-rb { + left: 100%; + top: 100%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0); + cursor: n-resize; + /* width: 24rpx; */ + /* height: 24rpx; */ + background-color: #69f; + position: absolute; + z-index: 1112; + opacity: 1; +} + +.point-b { + left: 50%; + top: 100%; + margin-left: -3px; + margin-top: -3px; + cursor: n-resize; +} + +.point-bl { + left: 0%; + top: 100%; + margin-left: -3px; + margin-top: -3px; + cursor: n-resize; +} + +.point-l { + left: 0%; + top: 50%; + margin-left: -3px; + margin-top: -3px; + cursor: n-resize; +} + +.point-lt { + left: 0%; + top: 0%; + margin-left: -3px; + margin-top: -3px; + cursor: n-resize; +} \ No newline at end of file diff --git a/vant/dist/datetime-picker/index.d.ts b/vant/dist/datetime-picker/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/datetime-picker/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/datetime-picker/index.js b/vant/dist/datetime-picker/index.js new file mode 100755 index 0000000..75bd063 --- /dev/null +++ b/vant/dist/datetime-picker/index.js @@ -0,0 +1,324 @@ +import { VantComponent } from '../common/component'; +import { isDef } from '../common/validator'; +import { pickerProps } from '../picker/shared'; +const currentYear = new Date().getFullYear(); +function isValidDate(date) { + return isDef(date) && !isNaN(new Date(date).getTime()); +} +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} +function padZero(val) { + return `00${val}`.slice(-2); +} +function times(n, iteratee) { + let index = -1; + const result = Array(n < 0 ? 0 : n); + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} +function getTrueValue(formattedValue) { + if (formattedValue === undefined) { + formattedValue = '1'; + } + while (isNaN(parseInt(formattedValue, 10))) { + formattedValue = formattedValue.slice(1); + } + return parseInt(formattedValue, 10); +} +function getMonthEndDay(year, month) { + return 32 - new Date(year, month - 1, 32).getDate(); +} +const defaultFormatter = (type, value) => value; +VantComponent({ + classes: ['active-class', 'toolbar-class', 'column-class'], + props: Object.assign(Object.assign({}, pickerProps), { + value: { + type: null, + observer: 'updateValue', + }, + filter: null, + type: { + type: String, + value: 'datetime', + observer: 'updateValue', + }, + showToolbar: { + type: Boolean, + value: true, + }, + formatter: { + type: null, + value: defaultFormatter, + }, + minDate: { + type: Number, + value: new Date(currentYear - 10, 0, 1).getTime(), + observer: 'updateValue', + }, + maxDate: { + type: Number, + value: new Date(currentYear + 10, 11, 31).getTime(), + observer: 'updateValue', + }, + minHour: { + type: Number, + value: 0, + observer: 'updateValue', + }, + maxHour: { + type: Number, + value: 23, + observer: 'updateValue', + }, + minMinute: { + type: Number, + value: 0, + observer: 'updateValue', + }, + maxMinute: { + type: Number, + value: 59, + observer: 'updateValue', + }, + }), + data: { + innerValue: Date.now(), + columns: [], + }, + methods: { + updateValue() { + const { data } = this; + const val = this.correctValue(data.value); + const isEqual = val === data.innerValue; + if (!isEqual) { + this.updateColumnValue(val).then(() => { + this.$emit('input', val); + }); + } else { + this.updateColumns(); + } + }, + getPicker() { + if (this.picker == null) { + this.picker = this.selectComponent('.van-datetime-picker'); + const { picker } = this; + const { setColumnValues } = picker; + picker.setColumnValues = (...args) => + setColumnValues.apply(picker, [...args, false]); + } + return this.picker; + }, + updateColumns() { + const { formatter = defaultFormatter } = this.data; + const results = this.getOriginColumns().map((column) => ({ + values: column.values.map((value) => formatter(column.type, value)), + })); + return this.set({ columns: results }); + }, + getOriginColumns() { + const { filter } = this.data; + const results = this.getRanges().map(({ type, range }) => { + let values = times(range[1] - range[0] + 1, (index) => { + let value = range[0] + index; + value = type === 'year' ? `${value}` : padZero(value); + return value; + }); + if (filter) { + values = filter(type, values); + } + return { type, values }; + }); + return results; + }, + getRanges() { + const { data } = this; + if (data.type === 'time') { + return [ + { + type: 'hour', + range: [data.minHour, data.maxHour], + }, + { + type: 'minute', + range: [data.minMinute, data.maxMinute], + }, + ]; + } + const { + maxYear, + maxDate, + maxMonth, + maxHour, + maxMinute, + } = this.getBoundary('max', data.innerValue); + const { + minYear, + minDate, + minMonth, + minHour, + minMinute, + } = this.getBoundary('min', data.innerValue); + const result = [ + { + type: 'year', + range: [minYear, maxYear], + }, + { + type: 'month', + range: [minMonth, maxMonth], + }, + { + type: 'day', + range: [minDate, maxDate], + }, + { + type: 'hour', + range: [minHour, maxHour], + }, + { + type: 'minute', + range: [minMinute, maxMinute], + }, + ]; + if (data.type === 'date') result.splice(3, 2); + if (data.type === 'year-month') result.splice(2, 3); + return result; + }, + correctValue(value) { + const { data } = this; + // validate value + const isDateType = data.type !== 'time'; + if (isDateType && !isValidDate(value)) { + value = data.minDate; + } else if (!isDateType && !value) { + const { minHour } = data; + value = `${padZero(minHour)}:00`; + } + // time type + if (!isDateType) { + let [hour, minute] = value.split(':'); + hour = padZero(range(hour, data.minHour, data.maxHour)); + minute = padZero(range(minute, data.minMinute, data.maxMinute)); + return `${hour}:${minute}`; + } + // date type + value = Math.max(value, data.minDate); + value = Math.min(value, data.maxDate); + return value; + }, + getBoundary(type, innerValue) { + const value = new Date(innerValue); + const boundary = new Date(this.data[`${type}Date`]); + const year = boundary.getFullYear(); + let month = 1; + let date = 1; + let hour = 0; + let minute = 0; + if (type === 'max') { + month = 12; + date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1); + hour = 23; + minute = 59; + } + if (value.getFullYear() === year) { + month = boundary.getMonth() + 1; + if (value.getMonth() + 1 === month) { + date = boundary.getDate(); + if (value.getDate() === date) { + hour = boundary.getHours(); + if (value.getHours() === hour) { + minute = boundary.getMinutes(); + } + } + } + } + return { + [`${type}Year`]: year, + [`${type}Month`]: month, + [`${type}Date`]: date, + [`${type}Hour`]: hour, + [`${type}Minute`]: minute, + }; + }, + onCancel() { + this.$emit('cancel'); + }, + onConfirm() { + this.$emit('confirm', this.data.innerValue); + }, + onChange() { + const { data } = this; + let value; + const picker = this.getPicker(); + const originColumns = this.getOriginColumns(); + if (data.type === 'time') { + const indexes = picker.getIndexes(); + value = `${+originColumns[0].values[indexes[0]]}:${+originColumns[1] + .values[indexes[1]]}`; + } else { + const indexes = picker.getIndexes(); + const values = indexes.map( + (value, index) => originColumns[index].values[value] + ); + const year = getTrueValue(values[0]); + const month = getTrueValue(values[1]); + const maxDate = getMonthEndDay(year, month); + let date = getTrueValue(values[2]); + if (data.type === 'year-month') { + date = 1; + } + date = date > maxDate ? maxDate : date; + let hour = 0; + let minute = 0; + if (data.type === 'datetime') { + hour = getTrueValue(values[3]); + minute = getTrueValue(values[4]); + } + value = new Date(year, month - 1, date, hour, minute); + } + value = this.correctValue(value); + this.updateColumnValue(value).then(() => { + this.$emit('input', value); + this.$emit('change', picker); + }); + }, + updateColumnValue(value) { + let values = []; + const { type } = this.data; + const formatter = this.data.formatter || defaultFormatter; + const picker = this.getPicker(); + if (type === 'time') { + const pair = value.split(':'); + values = [formatter('hour', pair[0]), formatter('minute', pair[1])]; + } else { + const date = new Date(value); + values = [ + formatter('year', `${date.getFullYear()}`), + formatter('month', padZero(date.getMonth() + 1)), + ]; + if (type === 'date') { + values.push(formatter('day', padZero(date.getDate()))); + } + if (type === 'datetime') { + values.push( + formatter('day', padZero(date.getDate())), + formatter('hour', padZero(date.getHours())), + formatter('minute', padZero(date.getMinutes())) + ); + } + } + return this.set({ innerValue: value }) + .then(() => this.updateColumns()) + .then(() => picker.setValues(values)); + }, + }, + created() { + const innerValue = this.correctValue(this.data.value); + this.updateColumnValue(innerValue).then(() => { + this.$emit('input', innerValue); + }); + }, +}); diff --git a/vant/dist/datetime-picker/index.json b/vant/dist/datetime-picker/index.json new file mode 100755 index 0000000..a778e91 --- /dev/null +++ b/vant/dist/datetime-picker/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/vant/dist/datetime-picker/index.wxml b/vant/dist/datetime-picker/index.wxml new file mode 100755 index 0000000..ade2202 --- /dev/null +++ b/vant/dist/datetime-picker/index.wxml @@ -0,0 +1,16 @@ + diff --git a/vant/dist/datetime-picker/index.wxss b/vant/dist/datetime-picker/index.wxss new file mode 100755 index 0000000..99694d6 --- /dev/null +++ b/vant/dist/datetime-picker/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/vant/dist/definitions/index.d.ts b/vant/dist/definitions/index.d.ts new file mode 100755 index 0000000..586e7bb --- /dev/null +++ b/vant/dist/definitions/index.d.ts @@ -0,0 +1,43 @@ +/// +interface VantComponentInstance { + parent: WechatMiniprogram.Component.TrivialInstance; + children: WechatMiniprogram.Component.TrivialInstance[]; + index: number; + $emit: ( + name: string, + detail?: unknown, + options?: WechatMiniprogram.Component.TriggerEventOption + ) => void; +} +export declare type VantComponentOptions< + Data extends WechatMiniprogram.Component.DataOption, + Props extends WechatMiniprogram.Component.PropertyOption, + Methods extends WechatMiniprogram.Component.MethodOption +> = { + data?: Data; + field?: boolean; + classes?: string[]; + mixins?: string[]; + props?: Props; + relation?: { + relations: Record; + mixin: string; + }; + methods?: Methods; + beforeCreate?: () => void; + created?: () => void; + mounted?: () => void; + destroyed?: () => void; +} & ThisType< + VantComponentInstance & + WechatMiniprogram.Component.Instance< + Data & { + name: string; + value: any; + }, + Props, + Methods + > & + Record +>; +export {}; diff --git a/vant/dist/definitions/index.js b/vant/dist/definitions/index.js new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/definitions/index.js @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dialog/dialog.d.ts b/vant/dist/dialog/dialog.d.ts new file mode 100755 index 0000000..7144032 --- /dev/null +++ b/vant/dist/dialog/dialog.d.ts @@ -0,0 +1,80 @@ +/// +export declare type Action = 'confirm' | 'cancel' | 'overlay'; +interface DialogOptions { + lang?: string; + show?: boolean; + title?: string; + width?: string | number | null; + zIndex?: number; + theme?: string; + context?: + | WechatMiniprogram.Page.TrivialInstance + | WechatMiniprogram.Component.TrivialInstance; + message?: string; + overlay?: boolean; + selector?: string; + ariaLabel?: string; + className?: string; + customStyle?: string; + transition?: string; + /** + * @deprecated use beforeClose instead + */ + asyncClose?: boolean; + beforeClose?: null | ((action: Action) => Promise | void); + businessId?: number; + sessionFrom?: string; + overlayStyle?: string; + appParameter?: string; + messageAlign?: string; + sendMessageImg?: string; + showMessageCard?: boolean; + sendMessagePath?: string; + sendMessageTitle?: string; + confirmButtonText?: string; + cancelButtonText?: string; + showConfirmButton?: boolean; + showCancelButton?: boolean; + closeOnClickOverlay?: boolean; + confirmButtonOpenType?: string; +} +declare const Dialog: { + (options: DialogOptions): Promise< + WechatMiniprogram.Component.Instance< + Record, + Record, + Record, + Record, + false + > + >; + alert( + options: DialogOptions + ): Promise< + WechatMiniprogram.Component.Instance< + Record, + Record, + Record, + Record, + false + > + >; + confirm( + options: DialogOptions + ): Promise< + WechatMiniprogram.Component.Instance< + Record, + Record, + Record, + Record, + false + > + >; + close(): void; + stopLoading(): void; + currentOptions: DialogOptions; + defaultOptions: DialogOptions; + setDefaultOptions(options: DialogOptions): void; + resetDefaultOptions(): void; +}; +export default Dialog; diff --git a/vant/dist/dialog/dialog.js b/vant/dist/dialog/dialog.js new file mode 100755 index 0000000..542c07b --- /dev/null +++ b/vant/dist/dialog/dialog.js @@ -0,0 +1,84 @@ +let queue = []; +const defaultOptions = { + show: false, + title: '', + width: null, + theme: 'default', + message: '', + zIndex: 100, + overlay: true, + selector: '#van-dialog', + className: '', + asyncClose: false, + beforeClose: null, + transition: 'scale', + customStyle: '', + messageAlign: '', + overlayStyle: '', + confirmButtonText: '确认', + cancelButtonText: '取消', + showConfirmButton: true, + showCancelButton: false, + closeOnClickOverlay: false, + confirmButtonOpenType: '', +}; +let currentOptions = Object.assign({}, defaultOptions); +function getContext() { + const pages = getCurrentPages(); + return pages[pages.length - 1]; +} +const Dialog = (options) => { + options = Object.assign(Object.assign({}, currentOptions), options); + return new Promise((resolve, reject) => { + const context = options.context || getContext(); + const dialog = context.selectComponent(options.selector); + delete options.context; + delete options.selector; + if (dialog) { + dialog.setData( + Object.assign( + { + callback: (action, instance) => { + action === 'confirm' ? resolve(instance) : reject(instance); + }, + }, + options + ) + ); + wx.nextTick(() => { + dialog.setData({ show: true }); + }); + queue.push(dialog); + } else { + console.warn( + '未找到 van-dialog 节点,请确认 selector 及 context 是否正确' + ); + } + }); +}; +Dialog.alert = (options) => Dialog(options); +Dialog.confirm = (options) => + Dialog(Object.assign({ showCancelButton: true }, options)); +Dialog.close = () => { + queue.forEach((dialog) => { + dialog.close(); + }); + queue = []; +}; +Dialog.stopLoading = () => { + queue.forEach((dialog) => { + dialog.stopLoading(); + }); +}; +Dialog.currentOptions = currentOptions; +Dialog.defaultOptions = defaultOptions; +Dialog.setDefaultOptions = (options) => { + currentOptions = Object.assign(Object.assign({}, currentOptions), options); + Dialog.currentOptions = currentOptions; +}; +Dialog.resetDefaultOptions = () => { + currentOptions = Object.assign({}, defaultOptions); + Dialog.currentOptions = currentOptions; +}; +Dialog.resetDefaultOptions(); +export default Dialog; diff --git a/vant/dist/dialog/index.d.ts b/vant/dist/dialog/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dialog/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dialog/index.js b/vant/dist/dialog/index.js new file mode 100755 index 0000000..5388cda --- /dev/null +++ b/vant/dist/dialog/index.js @@ -0,0 +1,122 @@ +import { VantComponent } from '../common/component'; +import { button } from '../mixins/button'; +import { openType } from '../mixins/open-type'; +import { GRAY, RED } from '../common/color'; +import { toPromise } from '../common/utils'; +VantComponent({ + mixins: [button, openType], + props: { + show: { + type: Boolean, + observer(show) { + !show && this.stopLoading(); + }, + }, + title: String, + message: String, + theme: { + type: String, + value: 'default', + }, + useSlot: Boolean, + className: String, + customStyle: String, + asyncClose: Boolean, + messageAlign: String, + beforeClose: null, + overlayStyle: String, + useTitleSlot: Boolean, + showCancelButton: Boolean, + closeOnClickOverlay: Boolean, + confirmButtonOpenType: String, + width: null, + zIndex: { + type: Number, + value: 2000, + }, + confirmButtonText: { + type: String, + value: '确认', + }, + cancelButtonText: { + type: String, + value: '取消', + }, + confirmButtonColor: { + type: String, + value: RED, + }, + cancelButtonColor: { + type: String, + value: GRAY, + }, + showConfirmButton: { + type: Boolean, + value: true, + }, + overlay: { + type: Boolean, + value: true, + }, + transition: { + type: String, + value: 'scale', + }, + }, + data: { + loading: { + confirm: false, + cancel: false, + }, + callback: () => {}, + }, + methods: { + onConfirm() { + this.handleAction('confirm'); + }, + onCancel() { + this.handleAction('cancel'); + }, + onClickOverlay() { + this.close('overlay'); + }, + close(action) { + this.setData({ show: false }); + wx.nextTick(() => { + this.$emit('close', action); + const { callback } = this.data; + if (callback) { + callback(action, this); + } + }); + }, + stopLoading() { + this.setData({ + loading: { + confirm: false, + cancel: false, + }, + }); + }, + handleAction(action) { + this.$emit(action, { dialog: this }); + const { asyncClose, beforeClose } = this.data; + if (!asyncClose && !beforeClose) { + this.close(action); + return; + } + this.setData({ + [`loading.${action}`]: true, + }); + if (beforeClose) { + toPromise(beforeClose(action)).then((value) => { + if (value) { + this.close(action); + } else { + this.stopLoading(); + } + }); + } + }, + }, +}); diff --git a/vant/dist/dialog/index.json b/vant/dist/dialog/index.json new file mode 100755 index 0000000..43417fc --- /dev/null +++ b/vant/dist/dialog/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-button": "../button/index", + "van-goods-action": "../goods-action/index", + "van-goods-action-button": "../goods-action-button/index" + } +} diff --git a/vant/dist/dialog/index.wxml b/vant/dist/dialog/index.wxml new file mode 100755 index 0000000..fd13bc9 --- /dev/null +++ b/vant/dist/dialog/index.wxml @@ -0,0 +1,113 @@ + + + + + + {{ title }} + + + + + {{ message }} + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + diff --git a/vant/dist/dialog/index.wxss b/vant/dist/dialog/index.wxss new file mode 100755 index 0000000..c6bac95 --- /dev/null +++ b/vant/dist/dialog/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dialog{top:45%!important;overflow:hidden;width:320px;width:var(--dialog-width,320px);font-size:16px;font-size:var(--dialog-font-size,16px);border-radius:16px;border-radius:var(--dialog-border-radius,16px);background-color:#fff;background-color:var(--dialog-background-color,#fff)}@media (max-width:321px){.van-dialog{width:90%;width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{text-align:center;padding-top:24px;padding-top:var(--dialog-header-padding-top,24px);font-weight:500;font-weight:var(--dialog-header-font-weight,500);line-height:24px;line-height:var(--dialog-header-line-height,24px)}.van-dialog__header--isolated{padding:24px 0;padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{overflow-y:auto;text-align:center;-webkit-overflow-scrolling:touch;font-size:14px;font-size:var(--dialog-message-font-size,14px);line-height:20px;line-height:var(--dialog-message-line-height,20px);max-height:60vh;max-height:var(--dialog-message-max-height,60vh);padding:24px;padding:var(--dialog-message-padding,24px)}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--hasTitle{padding-top:8px;padding-top:var(--dialog-has-title-message-padding-top,8px);color:#646566;color:var(--dialog-has-title-message-text-color,#646566)}.van-dialog__message--round-button{padding-bottom:16px;color:#323233}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__footer{display:-webkit-flex;display:flex}.van-dialog__footer--round-button{position:relative!important;padding:8px 24px 16px!important}.van-dialog__button{-webkit-flex:1;flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-dialog-bounce-leave-active{-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9);opacity:0} \ No newline at end of file diff --git a/vant/dist/divider/index.d.ts b/vant/dist/divider/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/divider/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/divider/index.js b/vant/dist/divider/index.js new file mode 100755 index 0000000..e725740 --- /dev/null +++ b/vant/dist/divider/index.js @@ -0,0 +1,12 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + dashed: Boolean, + hairline: Boolean, + contentPosition: String, + fontSize: String, + borderColor: String, + textColor: String, + customStyle: String, + }, +}); diff --git a/vant/dist/divider/index.json b/vant/dist/divider/index.json new file mode 100755 index 0000000..a89ef4d --- /dev/null +++ b/vant/dist/divider/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} diff --git a/vant/dist/divider/index.wxml b/vant/dist/divider/index.wxml new file mode 100755 index 0000000..f6a5a45 --- /dev/null +++ b/vant/dist/divider/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/vant/dist/divider/index.wxs b/vant/dist/divider/index.wxs new file mode 100755 index 0000000..215b14f --- /dev/null +++ b/vant/dist/divider/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + return style([ + { + 'border-color': data.borderColor, + color: data.textColor, + 'font-size': addUnit(data.fontSize), + }, + data.customStyle, + ]); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/vant/dist/divider/index.wxss b/vant/dist/divider/index.wxss new file mode 100755 index 0000000..c055e3a --- /dev/null +++ b/vant/dist/divider/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-divider{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;margin:16px 0;margin:var(--divider-margin,16px 0);color:#969799;color:var(--divider-text-color,#969799);font-size:14px;font-size:var(--divider-font-size,14px);line-height:24px;line-height:var(--divider-line-height,24px);border:0 solid #ebedf0;border-color:var(--divider-border-color,#ebedf0)}.van-divider:after,.van-divider:before{display:block;-webkit-flex:1;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:1px 0 0}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:16px;margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:"";margin-left:16px;margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:10%;max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:10%;max-width:var(--divider-content-right-width,10%)} \ No newline at end of file diff --git a/vant/dist/dropdown-item/index.d.ts b/vant/dist/dropdown-item/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dropdown-item/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dropdown-item/index.js b/vant/dist/dropdown-item/index.js new file mode 100755 index 0000000..95da1ee --- /dev/null +++ b/vant/dist/dropdown-item/index.js @@ -0,0 +1,111 @@ +import { useParent } from '../common/relation'; +import { VantComponent } from '../common/component'; +VantComponent({ + field: true, + relation: useParent('dropdown-menu', function () { + this.updateDataFromParent(); + }), + props: { + value: { + type: null, + observer: 'rerender', + }, + title: { + type: String, + observer: 'rerender', + }, + disabled: Boolean, + titleClass: { + type: String, + observer: 'rerender', + }, + options: { + type: Array, + value: [], + observer: 'rerender', + }, + popupStyle: String, + }, + data: { + transition: true, + showPopup: false, + showWrapper: false, + displayTitle: '', + }, + methods: { + rerender() { + wx.nextTick(() => { + var _a; + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.updateItemListData(); + }); + }, + updateDataFromParent() { + if (this.parent) { + const { + overlay, + duration, + activeColor, + closeOnClickOverlay, + direction, + } = this.parent.data; + this.setData({ + overlay, + duration, + activeColor, + closeOnClickOverlay, + direction, + }); + } + }, + onOpen() { + this.$emit('open'); + }, + onOpened() { + this.$emit('opened'); + }, + onClose() { + this.$emit('close'); + }, + onClosed() { + this.$emit('closed'); + this.setData({ showWrapper: false }); + }, + onOptionTap(event) { + const { option } = event.currentTarget.dataset; + const { value } = option; + const shouldEmitChange = this.data.value !== value; + this.setData({ showPopup: false, value }); + this.$emit('close'); + this.rerender(); + if (shouldEmitChange) { + this.$emit('change', value); + } + }, + toggle(show, options = {}) { + var _a; + const { showPopup } = this.data; + if (typeof show !== 'boolean') { + show = !showPopup; + } + if (show === showPopup) { + return; + } + this.setData({ + transition: !options.immediate, + showPopup: show, + }); + if (show) { + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.getChildWrapperStyle().then((wrapperStyle) => { + this.setData({ wrapperStyle, showWrapper: true }); + this.rerender(); + }); + } else { + this.rerender(); + } + }, + }, +}); diff --git a/vant/dist/dropdown-item/index.json b/vant/dist/dropdown-item/index.json new file mode 100755 index 0000000..88d5409 --- /dev/null +++ b/vant/dist/dropdown-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/dropdown-item/index.wxml b/vant/dist/dropdown-item/index.wxml new file mode 100755 index 0000000..dd75292 --- /dev/null +++ b/vant/dist/dropdown-item/index.wxml @@ -0,0 +1,48 @@ + + + + + + + {{ item.text }} + + + + + + + diff --git a/vant/dist/dropdown-item/index.wxss b/vant/dist/dropdown-item/index.wxss new file mode 100755 index 0000000..7cab3f2 --- /dev/null +++ b/vant/dist/dropdown-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-item{position:fixed;right:0;left:0;overflow:hidden}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:#ee0a24;color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} \ No newline at end of file diff --git a/vant/dist/dropdown-item/shared.d.ts b/vant/dist/dropdown-item/shared.d.ts new file mode 100755 index 0000000..c90bd9e --- /dev/null +++ b/vant/dist/dropdown-item/shared.d.ts @@ -0,0 +1,5 @@ +export interface Option { + text: string; + value: string | number; + icon: string; +} diff --git a/vant/dist/dropdown-item/shared.js b/vant/dist/dropdown-item/shared.js new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dropdown-item/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dropdown-menu/index.d.ts b/vant/dist/dropdown-menu/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/dropdown-menu/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/dropdown-menu/index.js b/vant/dist/dropdown-menu/index.js new file mode 100755 index 0000000..aba11b9 --- /dev/null +++ b/vant/dist/dropdown-menu/index.js @@ -0,0 +1,112 @@ +import { VantComponent } from '../common/component'; +import { useChildren } from '../common/relation'; +import { addUnit, getRect, getSystemInfoSync } from '../common/utils'; +let ARRAY = []; +VantComponent({ + field: true, + relation: useChildren('dropdown-item', function () { + this.updateItemListData(); + }), + props: { + activeColor: { + type: String, + observer: 'updateChildrenData', + }, + overlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + zIndex: { + type: Number, + value: 10, + }, + duration: { + type: Number, + value: 200, + observer: 'updateChildrenData', + }, + direction: { + type: String, + value: 'down', + observer: 'updateChildrenData', + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + closeOnClickOutside: { + type: Boolean, + value: true, + }, + }, + data: { + itemListData: [], + }, + beforeCreate() { + const { windowHeight } = getSystemInfoSync(); + this.windowHeight = windowHeight; + ARRAY.push(this); + }, + destroyed() { + ARRAY = ARRAY.filter((item) => item !== this); + }, + methods: { + updateItemListData() { + this.setData({ + itemListData: this.children.map((child) => child.data), + }); + }, + updateChildrenData() { + this.children.forEach((child) => { + child.updateDataFromParent(); + }); + }, + toggleItem(active) { + this.children.forEach((item, index) => { + const { showPopup } = item.data; + if (index === active) { + item.toggle(); + } else if (showPopup) { + item.toggle(false, { immediate: true }); + } + }); + }, + close() { + this.children.forEach((child) => { + child.toggle(false, { immediate: true }); + }); + }, + getChildWrapperStyle() { + const { zIndex, direction } = this.data; + return getRect(this, '.van-dropdown-menu').then((rect) => { + const { top = 0, bottom = 0 } = rect; + const offset = direction === 'down' ? bottom : this.windowHeight - top; + let wrapperStyle = `z-index: ${zIndex};`; + if (direction === 'down') { + wrapperStyle += `top: ${addUnit(offset)};`; + } else { + wrapperStyle += `bottom: ${addUnit(offset)};`; + } + return wrapperStyle; + }); + }, + onTitleTap(event) { + const { index } = event.currentTarget.dataset; + const child = this.children[index]; + if (!child.data.disabled) { + ARRAY.forEach((menuItem) => { + if ( + menuItem && + menuItem.data.closeOnClickOutside && + menuItem !== this + ) { + menuItem.close(); + } + }); + this.toggleItem(index); + } + }, + }, +}); diff --git a/vant/dist/dropdown-menu/index.json b/vant/dist/dropdown-menu/index.json new file mode 100755 index 0000000..467ce29 --- /dev/null +++ b/vant/dist/dropdown-menu/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/vant/dist/dropdown-menu/index.wxml b/vant/dist/dropdown-menu/index.wxml new file mode 100755 index 0000000..220dcb4 --- /dev/null +++ b/vant/dist/dropdown-menu/index.wxml @@ -0,0 +1,17 @@ + + + + + + + + {{ computed.displayTitle(item) }} + + + + + + \ No newline at end of file diff --git a/vant/dist/dropdown-menu/index.wxs b/vant/dist/dropdown-menu/index.wxs new file mode 100755 index 0000000..6538854 --- /dev/null +++ b/vant/dist/dropdown-menu/index.wxs @@ -0,0 +1,16 @@ +/* eslint-disable */ +function displayTitle(item) { + if (item.title) { + return item.title; + } + + var match = item.options.filter(function(option) { + return option.value === item.value; + }); + var displayTitle = match.length ? match[0].text : ''; + return displayTitle; +} + +module.exports = { + displayTitle: displayTitle +}; diff --git a/vant/dist/dropdown-menu/index.wxss b/vant/dist/dropdown-menu/index.wxss new file mode 100755 index 0000000..a410188 --- /dev/null +++ b/vant/dist/dropdown-menu/index.wxss @@ -0,0 +1,77 @@ +@import '../common/index.wxss'; + +.van-dropdown-menu { + display: -webkit-flex; + display: flex; + box-shadow: 0 2px 12px rgba(100, 101, 102, .12); + -webkit-user-select: none; + user-select: none; + height: 50px; + height: var(--dropdown-menu-height, 50px); + background-color: #fff; + background-color: var(--dropdown-menu-background-color, #fff) +} + +.van-dropdown-menu__item { + display: -webkit-flex; + display: flex; + -webkit-flex: 1; + flex: 1; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: center; + justify-content: center; + min-width: 0 +} + +.van-dropdown-menu__item:active { + opacity: .7 +} + +.van-dropdown-menu__item--disabled:active { + opacity: 1 +} + +.van-dropdown-menu__item--disabled .van-dropdown-menu__title { + color: #969799; + color: var(--dropdown-menu-title-disabled-text-color, #969799) +} + +.van-dropdown-menu__title { + position: relative; + box-sizing: border-box; + max-width: 100%; + padding: 0 8px; + padding: var(--dropdown-menu-title-padding, 0 8px); + color: #323233; + color: var(--dropdown-menu-title-text-color, #323233); + font-size: 14px; + font-size: var(--dropdown-menu-title-font-size, 14px); + line-height: 18px; + line-height: var(--dropdown-menu-title-line-height, 18px) +} + +.van-dropdown-menu__title:after { + position: absolute; + top: 50%; + right: -4px; + margin-top: -5px; + border-color: transparent transparent currentcolor currentcolor; + border-style: solid; + border-width: 3px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + opacity: .8; + content: "" +} + +.van-dropdown-menu__title--active { + color: #ee0a24; + color: var(--dropdown-menu-title-active-text-color, #ee0a24) +} + +.van-dropdown-menu__title--down:after { + margin-top: -1px; + -webkit-transform: rotate(135deg); + transform: rotate(135deg) +} \ No newline at end of file diff --git a/vant/dist/empty/index.d.ts b/vant/dist/empty/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/empty/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/empty/index.js b/vant/dist/empty/index.js new file mode 100755 index 0000000..32ec116 --- /dev/null +++ b/vant/dist/empty/index.js @@ -0,0 +1,10 @@ +import { VantComponent } from '../common/component'; +VantComponent({ + props: { + description: String, + image: { + type: String, + value: 'default', + }, + }, +}); diff --git a/vant/dist/empty/index.json b/vant/dist/empty/index.json new file mode 100755 index 0000000..e8cfaaf --- /dev/null +++ b/vant/dist/empty/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/vant/dist/empty/index.wxml b/vant/dist/empty/index.wxml new file mode 100755 index 0000000..9c7b719 --- /dev/null +++ b/vant/dist/empty/index.wxml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + {{ description }} + + + + + + diff --git a/vant/dist/empty/index.wxs b/vant/dist/empty/index.wxs new file mode 100755 index 0000000..9696dd4 --- /dev/null +++ b/vant/dist/empty/index.wxs @@ -0,0 +1,14 @@ +/* eslint-disable */ +var PRESETS = ['error', 'search', 'default', 'network']; + +function imageUrl(image) { + if (PRESETS.indexOf(image) !== -1) { + return 'https://img.yzcdn.cn/vant/empty-image-' + image + '.png'; + } + + return image; +} + +module.exports = { + imageUrl: imageUrl, +}; diff --git a/vant/dist/empty/index.wxss b/vant/dist/empty/index.wxss new file mode 100755 index 0000000..ea23d5f --- /dev/null +++ b/vant/dist/empty/index.wxss @@ -0,0 +1,49 @@ +@import '../common/index.wxss'; + +.van-empty { + display: -webkit-flex; + display: flex; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + padding: 10px 0 +} + +.van-empty__image { + width: 100px; + height: 100px +} + +.van-empty__image:empty { + display: none +} + +.van-empty__image__img { + width: 100%; + height: 100% +} + +.van-empty__image:not(:empty)+.van-empty__image { + display: none +} + +.van-empty__description { + margin-top: 16px; + padding: 0 60px; + color: #969799; + font-size: 14px; + line-height: 20px +} + +.van-empty__description:empty, +.van-empty__description:not(:empty)+.van-empty__description { + display: none +} + +.van-empty__bottom { + margin-top: 24px +} \ No newline at end of file diff --git a/vant/dist/field/index.d.ts b/vant/dist/field/index.d.ts new file mode 100755 index 0000000..cb0ff5c --- /dev/null +++ b/vant/dist/field/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/vant/dist/field/index.js b/vant/dist/field/index.js new file mode 100755 index 0000000..fd3472d --- /dev/null +++ b/vant/dist/field/index.js @@ -0,0 +1,126 @@ +import { nextTick } from '../common/utils'; +import { VantComponent } from '../common/component'; +import { commonProps, inputProps, textareaProps } from './props'; +VantComponent({ + field: true, + classes: ['input-class', 'right-icon-class', 'label-class'], + props: Object.assign( + Object.assign( + Object.assign(Object.assign({}, commonProps), inputProps), + textareaProps + ), + { + size: String, + icon: String, + label: String, + error: Boolean, + center: Boolean, + isLink: Boolean, + leftIcon: String, + rightIcon: String, + autosize: null, + required: Boolean, + iconClass: String, + clickable: Boolean, + inputAlign: String, + customStyle: String, + errorMessage: String, + arrowDirection: String, + showWordLimit: Boolean, + errorMessageAlign: String, + readonly: { + type: Boolean, + observer: 'setShowClear', + }, + clearable: { + type: Boolean, + observer: 'setShowClear', + }, + border: { + type: Boolean, + value: true, + }, + titleWidth: { + type: String, + value: '6.2em', + }, + } + ), + data: { + focused: false, + innerValue: '', + showClear: false, + }, + created() { + this.value = this.data.value; + this.setData({ innerValue: this.value }); + }, + methods: { + onInput(event) { + const { value = '' } = event.detail || {}; + this.value = value; + this.setShowClear(); + this.emitChange(); + }, + onFocus(event) { + this.focused = true; + this.setShowClear(); + this.$emit('focus', event.detail); + }, + onBlur(event) { + this.focused = false; + this.setShowClear(); + this.$emit('blur', event.detail); + }, + onClickIcon() { + this.$emit('click-icon'); + }, + onClickInput(event) { + this.$emit('click-input', event.detail); + }, + onClear() { + this.setData({ innerValue: '' }); + this.value = ''; + this.setShowClear(); + nextTick(() => { + this.emitChange(); + this.$emit('clear', ''); + }); + }, + onConfirm(event) { + const { value = '' } = event.detail || {}; + this.value = value; + this.setShowClear(); + this.$emit('confirm', value); + }, + setValue(value) { + this.value = value; + this.setShowClear(); + if (value === '') { + this.setData({ innerValue: '' }); + } + this.emitChange(); + }, + onLineChange(event) { + this.$emit('linechange', event.detail); + }, + onKeyboardHeightChange(event) { + this.$emit('keyboardheightchange', event.detail); + }, + emitChange() { + this.setData({ value: this.value }); + nextTick(() => { + this.$emit('input', this.value); + this.$emit('change', this.value); + }); + }, + setShowClear() { + const { clearable, readonly } = this.data; + const { focused, value } = this; + this.setData({ + showClear: !!clearable && !!focused && !!value && !readonly, + }); + }, + noop() {}, + }, +}); diff --git a/vant/dist/field/index.json b/vant/dist/field/index.json new file mode 100755 index 0000000..5906c50 --- /dev/null +++ b/vant/dist/field/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/vant/dist/field/index.wxml b/vant/dist/field/index.wxml new file mode 100755 index 0000000..9dc8b66 --- /dev/null +++ b/vant/dist/field/index.wxml @@ -0,0 +1,56 @@ + + + + + + + {{ label }} + + + + + + + + + + + + + + + + + + + + + {{ value.length >= maxlength ? maxlength : value.length }}/{{ maxlength }} + + + {{ errorMessage }} + + diff --git a/vant/dist/field/index.wxs b/vant/dist/field/index.wxs new file mode 100755 index 0000000..78575b9 --- /dev/null +++ b/vant/dist/field/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function inputStyle(autosize) { + if (autosize && autosize.constructor === 'Object') { + return style({ + 'min-height': addUnit(autosize.minHeight), + 'max-height': addUnit(autosize.maxHeight), + }); + } + + return ''; +} + +module.exports = { + inputStyle: inputStyle, +}; diff --git a/vant/dist/field/index.wxss b/vant/dist/field/index.wxss new file mode 100755 index 0000000..171f613 --- /dev/null +++ b/vant/dist/field/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-field{--cell-icon-size:16px;--cell-icon-size:var(--field-icon-size,16px)}.van-field__label{color:#646566;color:var(--field-label-color,#646566)}.van-field__label--disabled{color:#c8c9cc;color:var(--field-disabled-text-color,#c8c9cc)}.van-field__body{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.van-field__body--textarea{box-sizing:border-box;padding:3.6px 0;line-height:1.2em;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__control:empty+.van-field__control{display:block}.van-field__control{position:relative;display:none;box-sizing:border-box;width:100%;margin:0;padding:0;line-height:inherit;text-align:left;background-color:initial;border:0;resize:none;color:#323233;color:var(--field-input-text-color,#323233);height:24px;height:var(--cell-line-height,24px);min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__control:empty{display:none}.van-field__control--textarea{height:18px;height:var(--field-text-area-min-height,18px);min-height:18px;min-height:var(--field-text-area-min-height,18px)}.van-field__control--error{color:#ee0a24;color:var(--field-input-error-text-color,#ee0a24)}.van-field__control--disabled{background-color:initial;opacity:1;color:#c8c9cc;color:var(--field-input-disabled-text-color,#c8c9cc)}.van-field__control--center{text-align:center}.van-field__control--right{text-align:right}.van-field__control--custom{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__placeholder{position:absolute;top:0;right:0;left:0;pointer-events:none;color:#c8c9cc;color:var(--field-placeholder-text-color,#c8c9cc)}.van-field__placeholder--error{color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__icon-root{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__clear-root,.van-field__icon-container{line-height:inherit;vertical-align:middle;padding:0 8px;padding:0 var(--padding-xs,8px);margin-right:-8px;margin-right:-var(--padding-xs,8px)}.van-field__button,.van-field__clear-root,.van-field__icon-container{-webkit-flex-shrink:0;flex-shrink:0}.van-field__clear-root{font-size:16px;font-size:var(--field-clear-icon-size,16px);color:#c8c9cc;color:var(--field-clear-icon-color,#c8c9cc)}.van-field__icon-container{font-size:16px;font-size:var(--field-icon-size,16px);color:#969799;color:var(--field-icon-container-color,#969799)}.van-field__icon-container:empty{display:none}.van-field__button{padding-left:8px;padding-left:var(--padding-xs,8px)}.van-field__button:empty{display:none}.van-field__error-message{text-align:left;font-size:12px;font-size:var(--field-error-message-text-font-size,12px);color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{text-align:right;margin-top:4px;margin-top:var(--padding-base,4px);color:#646566;color:var(--field-word-limit-color,#646566);font-size:12px;font-size:var(--field-word-limit-font-size,12px);line-height:16px;line-height:var(--field-word-limit-line-height,16px)}.van-field__word-num{display:inline}.van-field__word-num--full{color:#ee0a24;color:var(--field-word-num-full-color,#ee0a24)} \ No newline at end of file diff --git a/vant/dist/field/input.wxml b/vant/dist/field/input.wxml new file mode 100755 index 0000000..3ecab24 --- /dev/null +++ b/vant/dist/field/input.wxml @@ -0,0 +1,27 @@ + diff --git a/vant/dist/field/props.d.ts b/vant/dist/field/props.d.ts new file mode 100755 index 0000000..5cd130a --- /dev/null +++ b/vant/dist/field/props.d.ts @@ -0,0 +1,4 @@ +/// +export declare const commonProps: WechatMiniprogram.Component.PropertyOption; +export declare const inputProps: WechatMiniprogram.Component.PropertyOption; +export declare const textareaProps: WechatMiniprogram.Component.PropertyOption; diff --git a/vant/dist/field/props.js b/vant/dist/field/props.js new file mode 100755 index 0000000..218749f --- /dev/null +++ b/vant/dist/field/props.js @@ -0,0 +1,63 @@ +export const commonProps = { + value: { + type: String, + observer(value) { + if (value !== this.value) { + this.setData({ innerValue: value }); + this.value = value; + } + }, + }, + placeholder: String, + placeholderStyle: String, + placeholderClass: String, + disabled: Boolean, + maxlength: { + type: Number, + value: -1, + }, + cursorSpacing: { + type: Number, + value: 50, + }, + autoFocus: Boolean, + focus: Boolean, + cursor: { + type: Number, + value: -1, + }, + selectionStart: { + type: Number, + value: -1, + }, + selectionEnd: { + type: Number, + value: -1, + }, + adjustPosition: { + type: Boolean, + value: true, + }, + holdKeyboard: Boolean, +}; +export const inputProps = { + type: { + type: String, + value: 'text', + }, + password: Boolean, + confirmType: String, + confirmHold: Boolean, +}; +export const textareaProps = { + autoHeight: Boolean, + fixed: Boolean, + showConfirmBar: { + type: Boolean, + value: true, + }, + disableDefaultPadding: { + type: Boolean, + value: true, + }, +}; diff --git a/vant/dist/field/textarea.wxml b/vant/dist/field/textarea.wxml new file mode 100755 index 0000000..5015a51 --- /dev/null +++ b/vant/dist/field/textarea.wxml @@ -0,0 +1,29 @@ +