From b1444ee7c513ed3322ff4086fe3a8ee6eb6a4212 Mon Sep 17 00:00:00 2001 From: Jack <jack.su@pollex.com.tw> Date: 星期三, 22 十二月 2021 21:17:41 +0800 Subject: [PATCH] Merge branch 'Phase2' of ssh://dev.pollex.com.tw:29418/pcalife/PAM into Phase2 --- PAMapp/pages/consultantLogin/index.vue | 6 PAMapp/assets/icon/fonts/icomoon.eot | 0 PAMapp/pages/userReviewsRecord/index.vue | 16 pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java | 6 PAMapp/shared/models/registerInfo.ts | 0 PAMapp/pages/faq.vue | 25 pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java | 12 PAMapp/assets/icon/fonts/icomoon.woff | 0 PAMapp/shared/models/quick-filter.model.ts | 14 PAMapp/shared/models/appointment.model.ts | 95 ++ pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java | 80 ++ pamapi/src/main/resources/config/application-dev.yml | 8 PAMapp/pages/questionnaire/_agentNo.vue | 32 PAMapp/shared/storageConsultant.ts | 0 PAMapp/shared/models/editAppointmentParams.model.ts | 0 PAMapp/assets/icon/style.css | 67 + PAMapp/components/AddAndReservedBtns.vue | 4 pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java | 9 pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java | 2 PAMapp/assets/icon/fonts/icomoon.ttf | 0 PAMapp/components/NavBar.vue | 7 PAMapp/pages/agentInfo/_agentNo.vue | 8 PAMapp/pages/myAppointmentList/appointmentList.vue | 2 PAMapp/components/Client/ClientCard.vue | 11 PAMapp/pages/myConsultantList/consultantList.vue | 5 PAMapp/shared/services/query-consultant.service.ts | 37 + pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java | 107 +++ PAMapp/shared/models/strict-query.model.ts | 24 PAMapp/components/Ui/UiPagination.vue | 2 PAMapp/shared/models/enum/otpErrorCode.ts | 0 PAMapp/pages/login/index.vue | 24 PAMapp/store/index.ts | 36 PAMapp/pages/recommendConsultant/result.vue | 4 PAMapp/pages/record/index.vue | 18 PAMapp/shared/models/enum/ContactType.ts | 0 PAMapp/shared/models/loginVerify.model.ts | 0 PAMapp/assets/icon/demo.html | 172 ++-- PAMapp/shared/services/appointment.service.ts | 46 + PAMapp/shared/services/account-setting.service.ts | 17 PAMapp/components/Consultant/ConsultantSwiper.vue | 6 PAMapp/pages/index.vue | 2 PAMapp/pages/myAppointmentList/contactedList.vue | 2 PAMapp/shared/models/client.model.ts | 0 PAMapp/shared/errorService.ts | 0 pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java | 103 +++ PAMapp/assets/scss/vendors/_elementUI.scss | 1 PAMapp/shared/device.ts | 0 pamapi/src/doc/顧問API/指定顧問詳細資訊.txt | 5 PAMapp/pages/quickFilter/index.vue | 13 pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java | 26 pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java | 33 + pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java | 10 PAMapp/shared/models/clientInfo.ts | 0 PAMapp/shared/models/consultant.model.ts | 0 PAMapp/shared/models/agent-info.model.ts | 0 pamapi/src/main/resources/config/application-uat.yml | 10 pamapi/src/doc/顧問API/快速篩選.txt | 3 pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java | 99 +++ PAMapp/components/QuickFilter/QuickFilterSelector.vue | 8 PAMapp/components/Ui/UiField.vue | 2 PAMapp/shared/models/otpInfo.model.ts | 0 PAMapp/pages/accountSetting/index.vue | 9 PAMapp/shared/models/loginSuccessToken.model.ts | 0 pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java | 12 PAMapp/shared/models/ConsultantLoginInfo.ts | 0 PAMapp/shared/models/loginRequest.model.ts | 0 pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java | 39 + PAMapp/shared/models/reviews.model.ts | 4 PAMapp/shared/services/my-consultant.service.ts | 42 + pamapi/src/doc/顧問API/嚴選配對.txt | 2 PAMapp/assets/icon/fonts/icomoon.svg | 43 PAMapp/shared/const/faqList.ts | 43 + PAMapp/shared/models/enum/seniority.ts | 0 PAMapp/store/localStorage.ts | 4 PAMapp/shared/const/quickFilter-questionList.ts | 2 PAMapp/components/Consultant/ConsultantList.vue | 12 PAMapp/shared/models/enum/Gender.ts | 0 PAMapp/assets/scss/vendors/elementUI/_tree.scss | 90 ++ PAMapp/shared/services/httpClient.ts | 0 PAMapp/pages/myConsultantList.vue | 2 PAMapp/pages/myConsultantList/contactedList.vue | 5 PAMapp/components/QuickFilter/QuickFilterConsultantList.vue | 6 pamapi/src/main/resources/config/application-sit.yml | 8 PAMapp/assets/icon/selection.json | 2 PAMapp/pages/userReviews/index.vue | 16 PAMapp/shared/models/account.model.ts | 0 PAMapp/shared/const/hide-reviews.ts | 0 PAMapp/assets/scss/_variable.scss | 2 PAMapp/shared/models/enum/Role.ts | 5 PAMapp/components/Client/ClientList.vue | 2 PAMapp/shared/storageRequests.ts | 2 PAMapp/shared/services/login.service.ts | 0 PAMapp/pages/myAppointmentList.vue | 2 pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java | 114 +++ /dev/null | 14 PAMapp/components/BackActionBar.vue | 25 PAMapp/components/Consultant/ConsultantCard.vue | 118 +- pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java | 1 PAMapp/components/popUpFrame.vue | 4 PAMapp/pages/recommendConsultant/index.vue | 5 PAMapp/shared/services/reviews.service.ts | 18 pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java | 6 pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java | 60 + 103 files changed, 1,576 insertions(+), 362 deletions(-) diff --git a/PAMapp/assets/icon/demo.html b/PAMapp/assets/icon/demo.html index 78e1388..4633a85 100644 --- a/PAMapp/assets/icon/demo.html +++ b/PAMapp/assets/icon/demo.html @@ -9,56 +9,14 @@ <link rel="stylesheet" href="style.css"></head> <body> <div class="bgc1 clearfix"> - <h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs: 33)</small></h1> + <h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs: 34)</small></h1> </div> <div class="clearfix mhl ptl"> <h1 class="mvm mtn fgc1">Grid Size: Unknown</h1> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-delet"></span> - <span class="mls"> icon-delet</span> - </div> - <fieldset class="fs0 size1of1 clearfix hidden-false"> - <input type="text" readonly value="e920" class="unit size1of2" /> - <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> - </fieldset> - <div class="fs0 bshadow0 clearfix hidden-true"> - <span class="unit pvs fgc1">liga: </span> - <input type="text" readonly value="" class="liga unitRight" /> - </div> - </div> - <div class="glyph fs1"> - <div class="clearfix bshadow0 pbs"> - <span class="icon-top"></span> - <span class="mls"> icon-top</span> - </div> - <fieldset class="fs0 size1of1 clearfix hidden-false"> - <input type="text" readonly value="e91f" class="unit size1of2" /> - <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> - </fieldset> - <div class="fs0 bshadow0 clearfix hidden-true"> - <span class="unit pvs fgc1">liga: </span> - <input type="text" readonly value="" class="liga unitRight" /> - </div> - </div> - <div class="glyph fs1"> - <div class="clearfix bshadow0 pbs"> - <span class="icon-puzzle"></span> - <span class="mls"> icon-puzzle</span> - </div> - <fieldset class="fs0 size1of1 clearfix hidden-false"> - <input type="text" readonly value="e91e" class="unit size1of2" /> - <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> - </fieldset> - <div class="fs0 bshadow0 clearfix hidden-true"> - <span class="unit pvs fgc1">liga: </span> - <input type="text" readonly value="" class="liga unitRight" /> - </div> - </div> - <div class="glyph fs1"> - <div class="clearfix bshadow0 pbs"> - <span class="icon-down"></span> - <span class="mls"> icon-down</span> + <span class="icon-decrease"></span> + <span class="mls"> icon-decrease</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e900" class="unit size1of2" /> @@ -169,8 +127,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-checkbox"></span> - <span class="mls"> icon-checkbox</span> + <span class="icon-checkbox-1"></span> + <span class="mls"> icon-checkbox-1</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e908" class="unit size1of2" /> @@ -183,8 +141,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-checkbox-1"></span> - <span class="mls"> icon-checkbox-1</span> + <span class="icon-checkbox"></span> + <span class="mls"> icon-checkbox</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e909" class="unit size1of2" /> @@ -267,8 +225,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-edit"></span> - <span class="mls"> icon-edit</span> + <span class="icon-delet"></span> + <span class="mls"> icon-delet</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e90f" class="unit size1of2" /> @@ -281,8 +239,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-eye"></span> - <span class="mls"> icon-eye</span> + <span class="icon-down"></span> + <span class="mls"> icon-down</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e910" class="unit size1of2" /> @@ -295,8 +253,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-eye-1"></span> - <span class="mls"> icon-eye-1</span> + <span class="icon-edit"></span> + <span class="mls"> icon-edit</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e911" class="unit size1of2" /> @@ -309,8 +267,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-flag"></span> - <span class="mls"> icon-flag</span> + <span class="icon-eye-1"></span> + <span class="mls"> icon-eye-1</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e912" class="unit size1of2" /> @@ -323,8 +281,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-information"></span> - <span class="mls"> icon-information</span> + <span class="icon-eye"></span> + <span class="mls"> icon-eye</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e913" class="unit size1of2" /> @@ -337,8 +295,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-left"></span> - <span class="mls"> icon-left</span> + <span class="icon-flag"></span> + <span class="mls"> icon-flag</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e914" class="unit size1of2" /> @@ -351,8 +309,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-phone"></span> - <span class="mls"> icon-phone</span> + <span class="icon-information"></span> + <span class="mls"> icon-information</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e915" class="unit size1of2" /> @@ -365,8 +323,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-right"></span> - <span class="mls"> icon-right</span> + <span class="icon-left"></span> + <span class="mls"> icon-left</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e916" class="unit size1of2" /> @@ -379,8 +337,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-school"></span> - <span class="mls"> icon-school</span> + <span class="icon-phone"></span> + <span class="mls"> icon-phone</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e917" class="unit size1of2" /> @@ -393,8 +351,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-search"></span> - <span class="mls"> icon-search</span> + <span class="icon-puzzle"></span> + <span class="mls"> icon-puzzle</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e918" class="unit size1of2" /> @@ -407,8 +365,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-star"></span> - <span class="mls"> icon-star</span> + <span class="icon-right"></span> + <span class="mls"> icon-right</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e919" class="unit size1of2" /> @@ -421,8 +379,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-star-1"></span> - <span class="mls"> icon-star-1</span> + <span class="icon-school"></span> + <span class="mls"> icon-school</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e91a" class="unit size1of2" /> @@ -435,8 +393,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-thumbs-up"></span> - <span class="mls"> icon-thumbs-up</span> + <span class="icon-search"></span> + <span class="mls"> icon-search</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e91b" class="unit size1of2" /> @@ -449,8 +407,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-time"></span> - <span class="mls"> icon-time</span> + <span class="icon-star-1"></span> + <span class="mls"> icon-star-1</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e91c" class="unit size1of2" /> @@ -463,8 +421,8 @@ </div> <div class="glyph fs1"> <div class="clearfix bshadow0 pbs"> - <span class="icon-trophy"></span> - <span class="mls"> icon-trophy</span> + <span class="icon-star"></span> + <span class="mls"> icon-star</span> </div> <fieldset class="fs0 size1of1 clearfix hidden-false"> <input type="text" readonly value="e91d" class="unit size1of2" /> @@ -475,6 +433,62 @@ <input type="text" readonly value="" class="liga unitRight" /> </div> </div> + <div class="glyph fs1"> + <div class="clearfix bshadow0 pbs"> + <span class="icon-thumbs-up"></span> + <span class="mls"> icon-thumbs-up</span> + </div> + <fieldset class="fs0 size1of1 clearfix hidden-false"> + <input type="text" readonly value="e91e" class="unit size1of2" /> + <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> + </fieldset> + <div class="fs0 bshadow0 clearfix hidden-true"> + <span class="unit pvs fgc1">liga: </span> + <input type="text" readonly value="" class="liga unitRight" /> + </div> + </div> + <div class="glyph fs1"> + <div class="clearfix bshadow0 pbs"> + <span class="icon-time"></span> + <span class="mls"> icon-time</span> + </div> + <fieldset class="fs0 size1of1 clearfix hidden-false"> + <input type="text" readonly value="e91f" class="unit size1of2" /> + <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> + </fieldset> + <div class="fs0 bshadow0 clearfix hidden-true"> + <span class="unit pvs fgc1">liga: </span> + <input type="text" readonly value="" class="liga unitRight" /> + </div> + </div> + <div class="glyph fs1"> + <div class="clearfix bshadow0 pbs"> + <span class="icon-top"></span> + <span class="mls"> icon-top</span> + </div> + <fieldset class="fs0 size1of1 clearfix hidden-false"> + <input type="text" readonly value="e920" class="unit size1of2" /> + <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> + </fieldset> + <div class="fs0 bshadow0 clearfix hidden-true"> + <span class="unit pvs fgc1">liga: </span> + <input type="text" readonly value="" class="liga unitRight" /> + </div> + </div> + <div class="glyph fs1"> + <div class="clearfix bshadow0 pbs"> + <span class="icon-trophy"></span> + <span class="mls"> icon-trophy</span> + </div> + <fieldset class="fs0 size1of1 clearfix hidden-false"> + <input type="text" readonly value="e921" class="unit size1of2" /> + <input type="text" maxlength="1" readonly value="" class="unitRight size1of2 talign-right" /> + </fieldset> + <div class="fs0 bshadow0 clearfix hidden-true"> + <span class="unit pvs fgc1">liga: </span> + <input type="text" readonly value="" class="liga unitRight" /> + </div> + </div> </div> <!--[if gt IE 8]><!--> diff --git a/PAMapp/assets/icon/fonts/icomoon.eot b/PAMapp/assets/icon/fonts/icomoon.eot index 8422bb1..19f50f6 100644 --- a/PAMapp/assets/icon/fonts/icomoon.eot +++ b/PAMapp/assets/icon/fonts/icomoon.eot Binary files differ diff --git a/PAMapp/assets/icon/fonts/icomoon.svg b/PAMapp/assets/icon/fonts/icomoon.svg index 564212f..7878fa6 100644 --- a/PAMapp/assets/icon/fonts/icomoon.svg +++ b/PAMapp/assets/icon/fonts/icomoon.svg @@ -7,7 +7,7 @@ <font-face units-per-em="1024" ascent="960" descent="-64" /> <missing-glyph horiz-adv-x="1024" /> <glyph unicode=" " horiz-adv-x="512" d="" /> -<glyph unicode="" glyph-name="down" d="M563.115 105.771l407.851 408.107c13.086 12.984 21.186 30.975 21.186 50.858 0 19.714-7.963 37.568-20.848 50.521l-68.136 68.136c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l-289.532-289.617-289.195 289.195c-13.008 13.118-31.038 21.24-50.965 21.24-19.778 0-37.688-8.001-50.669-20.943l-0.297-0.297-67.968-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l408.231-408.316c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z" /> +<glyph unicode="" glyph-name="decrease" horiz-adv-x="1059" d="M947.023 536.276h-834.737c-42.513 0-76.977-34.464-76.977-76.977s34.464-76.977 76.977-76.977h834.737c42.513 0 76.977 34.464 76.977 76.977s-34.464 76.977-76.977 76.977v0z" /> <glyph unicode="" glyph-name="add" d="M944.305 527.805h-352.501v352.501c-0.083 44.019-35.777 79.674-79.803 79.695h-0.002c-43.994-0.083-79.632-35.735-79.695-79.725v-352.47h-352.537c-44.055 0-79.768-35.713-79.768-79.768s35.713-79.768 79.768-79.768v0h352.501v-352.574c0-44.055 35.713-79.768 79.768-79.768s79.768 35.713 79.768 79.768v0 352.574h352.501c44.055 0 79.768 35.713 79.768 79.768s-35.713 79.768-79.768 79.768v0z" /> <glyph unicode="" glyph-name="address" horiz-adv-x="717" d="M358.4 960c-0.076 0-0.166 0-0.256 0-197.797 0-358.144-160.347-358.144-358.144 0-0.090 0-0.18 0-0.27v0.014c0-268.8 358.4-665.6 358.4-665.6s358.4 396.8 358.4 665.6c0 0.076 0 0.166 0 0.256 0 197.797-160.347 358.144-358.144 358.144-0.090 0-0.18 0-0.27 0h0.014zM358.4 473.6c-70.692 0-128 57.308-128 128s57.308 128 128 128c70.692 0 128-57.308 128-128v0c0-70.692-57.308-128-128-128v0z" /> <glyph unicode="" glyph-name="agent" horiz-adv-x="896" d="M447.993 448.019c141.38 0 255.991 114.611 255.991 255.991s-114.611 255.991-255.991 255.991c-141.38 0-255.991-114.611-255.991-255.991v0c0-141.38 114.611-255.991 255.991-255.991v0zM639.585 382.836l-95.609-382.81-63.988 272.006 63.988 111.998h-191.965l63.988-111.998-63.988-272.006-95.609 382.773c-142.815-6.542-256.155-123.796-256.401-267.577v-179.221h895.986v179.197c-0.246 143.806-113.586 261.059-255.814 267.58l-0.587 0.021z" /> @@ -15,29 +15,30 @@ <glyph unicode="" glyph-name="avatar" horiz-adv-x="894" d="M448.963 456.819c138.95 0 251.59 112.641 251.59 251.59s-112.641 251.59-251.59 251.59v0c-138.95 0-251.59-112.641-251.59-251.59s112.641-251.59 251.59-251.59v0zM448.963 840.512v0c72.958 0 132.103-59.144 132.103-132.103s-59.144-132.103-132.103-132.103c-72.958 0-132.103 59.144-132.103 132.103 0 0.013 0 0.026 0 0.039v-0.002c0 72.938 59.128 132.065 132.065 132.065 0.013 0 0.026 0 0.039 0h-0.002zM448.963 393.931c-167.938 0-448.963-50.013-448.963-217.355v-240.576h893.721v240.576c0 167.305-276.82 217.355-444.758 217.355zM774.233 55.525h-654.931v121.051c0 40.263 142.671 97.83 329.475 97.83v0c186.804 0 325.27-57.567 325.27-97.83z" /> <glyph unicode="" glyph-name="bell" horiz-adv-x="932" d="M908.486 267.183c-1.1 0.834-112.139 84.872-112.139 362.886 0 182.216-147.715 329.931-329.931 329.931s-329.931-147.715-329.931-329.931v0c0-278.014-111.039-362.052-111.191-362.242-15.359-10.347-25.326-27.674-25.326-47.328 0-31.414 25.465-56.881 56.878-56.885h819.14c25.031 0.194 46.179 16.601 53.474 39.229l0.112 0.401c1.696 5.184 2.675 11.15 2.675 17.344 0 19.089-9.291 36.008-23.598 46.482l-0.162 0.113zM174.901 277.384c47.923 94.131 76 205.282 76 322.99 0 10.443-0.221 20.835-0.659 31.17l0.050-1.475c0 119.383 96.779 216.162 216.162 216.162s216.162-96.779 216.162-216.162v0c-0.387-8.856-0.608-19.244-0.608-29.684 0-117.708 28.062-228.862 77.862-327.136l-1.9 4.135zM573.853 87.541c-8.181 4.825-18.026 7.675-28.536 7.675-20.904 0-39.175-11.276-49.061-28.077l-0.145-0.266c-6.013-10.266-16.989-17.051-29.55-17.051-6.311 0-12.222 1.713-17.293 4.699l0.16-0.087c-5.181 3.025-9.376 7.22-12.314 12.241l-0.086 0.16c-10.022 17.142-28.338 28.474-49.3 28.474-31.434 0-56.916-25.482-56.916-56.916 0-10.472 2.828-20.283 7.762-28.711l-0.145 0.269c26.074-44.41 73.596-73.753 127.972-73.753s101.897 29.344 127.594 73.059l0.377 0.694c4.808 8.17 7.648 17.998 7.648 28.489 0 20.831-11.197 39.047-27.901 48.958l-0.263 0.144z" /> <glyph unicode="" glyph-name="calender" horiz-adv-x="922" d="M307.2 499.2h-102.4v-102.4h102.4zM512 499.2h-102.4v-102.4h102.4zM716.8 499.2h-102.4v-102.4h102.4zM819.2 857.6h-51.2v102.4h-102.4v-102.4h-409.6v102.4h-102.4v-102.4h-51.2c-56.277-0.024-101.889-45.651-101.889-101.931 0-0.165 0-0.33 0.001-0.495v0.025l-0.512-716.8c0-56.554 45.846-102.4 102.4-102.4v0h716.8c56.486 0.169 102.231 45.914 102.4 102.384v716.816c-0.169 56.486-45.914 102.231-102.384 102.4h-0.016zM819.2 38.4h-716.8v563.2h716.8z" /> -<glyph unicode="" glyph-name="checkbox" d="M910.222 846.222v-796.444h-796.444v796.444h796.444zM910.222 960h-796.444c-62.76-0.193-113.584-51.018-113.778-113.759v-796.463c0.193-62.76 51.018-113.584 113.759-113.778h796.463c62.76 0.193 113.584 51.018 113.778 113.759v796.463c-0.193 62.76-51.018 113.584-113.759 113.778h-0.019z" /> -<glyph unicode="" glyph-name="checkbox-1" d="M910.222 960h-796.444c-62.838 0-113.778-50.94-113.778-113.778v0-796.444c0-62.838 50.94-113.778 113.778-113.778v0h796.444c62.838 0 113.778 50.94 113.778 113.778v0 796.444c0 62.838-50.94 113.778-113.778 113.778v0zM398.222 163.556l-284.444 284.444 80.213 80.213 204.231-203.662 431.787 431.787 80.213-80.782z" /> +<glyph unicode="" glyph-name="checkbox-1" d="M910.222 960h-796.444c-62.838 0-113.778-50.94-113.778-113.778v0-796.444c0-62.838 50.94-113.778 113.778-113.778v0h796.444c62.838 0 113.778 50.94 113.778 113.778v0 796.444c0 62.838-50.94 113.778-113.778 113.778v0zM398.222 163.556l-284.444 284.444 80.213 80.213 204.231-203.662 431.787 431.787 80.213-80.782z" /> +<glyph unicode="" glyph-name="checkbox" d="M910.222 846.222v-796.444h-796.444v796.444h796.444zM910.222 960h-796.444c-62.76-0.193-113.584-51.018-113.778-113.759v-796.463c0.193-62.76 51.018-113.584 113.759-113.778h796.463c62.76 0.193 113.584 51.018 113.778 113.759v796.463c-0.193 62.76-51.018 113.584-113.759 113.778h-0.019z" /> <glyph unicode="" glyph-name="circle-left" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512v0c0-282.77-229.23-512-512-512v0zM276.821 412.928l279.723-279.723c8.937-8.992 21.312-14.557 34.987-14.557s26.050 5.565 34.984 14.554l35.117 35.117c8.992 8.937 14.557 21.312 14.557 34.987s-5.565 26.050-14.554 34.984l-209.751 209.751 209.749 209.749c8.992 8.937 14.557 21.312 14.557 34.987s-5.565 26.050-14.554 34.984l-35.117 35.117c-8.937 8.992-21.312 14.557-34.987 14.557s-26.050-5.565-34.984-14.554l-279.725-279.767c-8.993-8.976-14.557-21.385-14.557-35.093s5.564-26.118 14.556-35.093l0.001-0.001z" /> <glyph unicode="" glyph-name="circle-right" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512v0c0-282.77 229.23-512 512-512v0zM747.136 412.885l-279.723-279.723c-8.937-8.992-21.312-14.557-34.987-14.557s-26.050 5.565-34.984 14.554l-35.117 35.117c-8.992 8.937-14.557 21.312-14.557 34.987s5.565 26.050 14.554 34.984l209.751 209.751-209.792 209.792c-8.992 8.937-14.557 21.312-14.557 34.987s5.565 26.050 14.554 34.984l35.117 35.117c8.937 8.992 21.312 14.557 34.987 14.557s26.050-5.565 34.984-14.554l279.725-279.725c9.019-8.98 14.6-21.406 14.6-35.136 0-13.709-5.564-26.118-14.556-35.093l-0.001-0.001z" /> <glyph unicode="" glyph-name="close" d="M843.123 929.004l-331.098-331.098-331.098 331.098c-19.185 19.146-45.668 30.985-74.916 30.985s-55.731-11.839-74.918-30.987l0.002 0.002c-19.117-19.18-30.937-45.643-30.937-74.868s11.82-55.687 30.94-74.87l331.047-331.095-331.050-331.244c-19.191-19.173-31.063-45.67-31.063-74.94 0-58.504 47.427-105.93 105.93-105.93 29.234 0 55.702 11.842 74.868 30.991l331.097 331.097 331.196-331.147c19.046-18.46 45.049-29.839 73.71-29.839 58.521 0 105.961 47.44 105.961 105.961 0 28.661-11.379 54.663-29.865 73.737l0.027-0.028-331.196 331.196 331.098 331.098c18.46 19.046 29.839 45.049 29.839 73.71 0 58.521-47.44 105.961-105.961 105.961-28.661 0-54.663-11.379-73.737-29.865l0.028 0.027z" /> <glyph unicode="" glyph-name="comment" d="M895.851 960h-767.872c-70.681 0-127.979-57.298-127.979-127.979v0-575.904c0-70.681 57.298-127.979 127.979-127.979v0h191.968v-167.993c0-0.025 0-0.056 0-0.086 0-13.288 10.772-24.060 24.060-24.060 5.399 0 10.382 1.778 14.397 4.781l-0.063-0.045 249.558 187.403h287.952c70.681 0 127.979 57.298 127.979 127.979v0 575.904c0 70.681-57.298 127.979-127.979 127.979v0zM604.699 384.096h-371.821v127.979h371.821zM791.42 663.303h-558.84v127.979h558.84z" /> <glyph unicode="" glyph-name="company" horiz-adv-x="970" d="M646.741 474.965v323.371l-161.707 161.664-161.664-161.664v-107.819h-323.371v-754.517h970.112v538.965zM215.595 43.776h-107.819v107.819h107.819zM215.595 259.371h-107.819v107.776h107.819zM215.595 474.965h-107.819v107.776h107.819zM538.965 43.819h-107.819v107.776h107.776zM538.965 259.413h-107.819v107.733h107.776zM538.965 475.008h-107.819v107.733h107.776zM538.965 690.603h-107.819v107.733h107.776zM862.336 43.861h-107.819v107.733h107.776zM862.336 259.456h-107.819v107.691h107.776z" /> -<glyph unicode="" glyph-name="edit" d="M864 960c88.366 0 160-71.634 160-160 0-36.2-12.022-69.593-32.292-96.402l0.292 0.402-64-64-224 224 64 64c26.324 19.976 59.637 32 95.758 32 0.085 0 0.17 0 0.255 0h-0.013zM64 224l-64-288 288 64 592.171 592-224.171 224.128zM715.563 596.437l-448-448-55.168 55.125 448 448z" /> -<glyph unicode="" glyph-name="eye" horiz-adv-x="1352" d="M1343.806 481.543c-9.762 19.575-244.11 478.457-667.948 478.457s-658.136-458.883-667.948-478.457c-4.994-9.78-7.92-21.332-7.92-33.568s2.926-23.787 8.117-33.994l-0.197 0.427c10.013-19.575 244.11-478.407 667.948-478.407s658.186 458.832 667.948 478.407c4.994 9.78 7.92 21.332 7.92 33.568s-2.926 23.787-8.117 33.994l0.197-0.427zM675.858 86.040c-272.446 0-457.030 266.138-514.553 361.809 57.523 95.671 242.107 361.809 514.553 361.809s457.13-266.288 514.553-361.809c-57.523-95.521-242.157-361.659-514.553-361.659zM675.858 748.381c-165.896 0-300.381-134.485-300.381-300.381s134.485-300.381 300.381-300.381c165.896 0 300.381 134.485 300.381 300.381v0c-0.199 165.816-134.565 300.182-300.362 300.381h-0.020zM675.858 297.809c-82.948 0-150.191 67.243-150.191 150.191s67.243 150.191 150.191 150.191c82.948 0 150.191-67.243 150.191-150.191v0c0-82.948-67.243-150.191-150.191-150.191v0z" /> -<glyph unicode="" glyph-name="eye-1" horiz-adv-x="1142" d="M1123.235 38.654l-217.634 208.847c5.132-1.805 11.050-2.848 17.211-2.848 15.851 0 30.089 6.902 39.875 17.864l0.046 0.052c37.481 38.161 71.036 80.412 99.866 125.951l1.835 3.103c5.666 8.976 9.029 19.899 9.029 31.606 0 11.056-2.999 21.412-8.227 30.299l0.153-0.28c-7.952 13.359-194.813 327.802-528.499 327.802h-1.312c-35.996-0.005-71.127-3.696-105.040-10.716l3.34 0.578c-18.092-3.787-32.895-15.391-40.954-31.036l-0.156-0.333-212.306 203.798c-10.7 10.287-25.264 16.622-41.308 16.622-32.938 0-59.64-26.702-59.64-59.64 0-16.894 7.024-32.148 18.312-42.999l0.020-0.019 162.768-156.208c-5.287-1.648-9.884-3.809-14.111-6.501l0.235 0.14c-95.97-62.868-175.328-142.911-235.543-236.445l-1.89-3.135c-5.835-9.056-9.303-20.115-9.303-31.985 0-11.035 2.997-21.371 8.222-30.236l-0.152 0.279c7.952-13.359 194.813-327.802 529.175-327.802 107.604 0.9 207.542 32.95 291.456 87.555l-2.1-1.281c1.312 0.835 2.385 1.908 3.618 2.863l210.398-201.929c10.7-10.287 25.264-16.622 41.308-16.622 32.938 0 59.64 26.702 59.64 59.64 0 16.894-7.024 32.148-18.312 42.999l-0.020 0.019zM536.729 661.777c210.716 0 354.679-168.573 405.529-238.546-20.464-28.603-41.631-53.756-64.584-77.15l0.097 0.1c-10.193-10.583-16.471-24.997-16.471-40.878 0-6.315 0.993-12.399 2.831-18.103l-0.116 0.417-385.213 369.747c17.213 2.809 37.053 4.414 57.267 4.414 0.232 0 0.464 0 0.696-0.001h-0.036zM480.591 454.242c6.937 5.309 12.58 11.943 16.621 19.556l0.156 0.323 89.972-86.354c-14.804-12.070-33.904-19.382-54.711-19.382-7.266 0-14.323 0.892-21.069 2.571l0.598-0.126c-21.583 3.776-39.081 18.284-47.003 37.713l-0.149 0.414c-0.942 3.344-1.484 7.185-1.484 11.153 0 13.911 6.658 26.266 16.961 34.054l0.107 0.078zM536.729 184.685c-210.716 0-354.4 168.215-405.211 238.546 49.32 68.027 109.037 125.034 177.432 169.904l2.551 1.571c11.947 7.883 20.761 19.68 24.668 33.535l0.101 0.418 78.482-75.301c-2.135-1.142-3.89-2.209-5.584-3.359l0.217 0.139c-39.593-30.204-64.883-77.409-64.883-130.521 0-16.497 2.44-32.424 6.979-47.441l-0.301 1.159c21.213-61.143 72.589-106.713 135.851-119.32l1.154-0.192c13.578-3.209 29.168-5.048 45.187-5.048 51.658 0 98.848 19.131 134.872 50.694l-0.235-0.202c1.923 1.788 3.692 3.67 5.327 5.665l0.080 0.1 67.389-64.686c-58.645-34.055-128.851-54.577-203.762-55.657l-0.314-0.004z" /> -<glyph unicode="" glyph-name="flag" horiz-adv-x="1008" d="M470.315 580.139v-136.192c52.181-11.819 98.603-31.189 147.2-44.587v136.405c-52.011 11.605-98.773 30.976-147.2 44.416zM916.907 826.112c-67.939-35.792-147.729-58.874-232.376-63.923l-1.608-0.077c-107.008 0.213-195.584 69.76-330.368 69.76-0.457 0.002-0.998 0.003-1.539 0.003-48.265 0-94.476-8.794-137.118-24.867l2.678 0.885c4.705 11.905 7.433 25.695 7.433 40.122 0 61.856-50.144 112-112 112s-112-50.144-112-112c0-37.882 18.807-71.371 47.593-91.64l0.355-0.237v-772.267c0-0.038 0-0.083 0-0.128 0-26.439 21.433-47.872 47.872-47.872 0.045 0 0.090 0 0.135 0h31.993c0.038 0 0.083 0 0.128 0 26.439 0 47.872 21.433 47.872 47.872 0 0.045 0 0.090 0 0.135v-0.007 188.928c64.268 28.012 139.144 44.31 217.827 44.31 3.851 0 7.693-0.039 11.525-0.117l-0.573 0.009c107.179 0 195.584-69.589 330.368-69.589 92.324 0.765 177.356 31.352 246.099 82.581l-1.107-0.789c16.771 11.705 27.605 30.909 27.605 52.644 0 0.047 0 0.094 0 0.141v-0.007 486.144c-0.078 35.287-28.702 63.863-64 63.863-9.72 0-18.935-2.167-27.186-6.044l0.391 0.165zM323.157 308.992c-54.473-5.68-104.346-17.389-151.58-34.589l4.38 1.394v140.8c42.966 16.959 92.83 29.258 144.754 34.612l2.446 0.204zM911.957 577.792c-42.344-20.263-91.614-36.787-143.125-47.106l-4.075-0.681v-141.867c55.26 7.286 105.051 25.69 148.773 52.924l-1.573-0.913v-140.8c-41.573-28.653-91.64-48.031-145.739-54.055l-1.461-0.132v142.976c-14.605-2.234-31.455-3.51-48.603-3.51-35.177 0-69.1 5.37-100.994 15.334l2.396-0.645v-134.912c-39.685 15.094-88.92 29.775-139.395 41.183l-7.805 1.483v136.875c-28.906 6.694-62.098 10.532-96.186 10.532-17.976 0-35.702-1.067-53.12-3.141l2.106 0.204v140.032c-55.565-9.583-104.997-24.104-151.88-43.532l4.68 1.718v140.8c42.614 19.83 92.097 35.166 143.91 43.55l3.29 0.439v-142.976c14.417 2.165 31.054 3.401 47.98 3.401 35.4 0 69.537-5.408 101.63-15.442l-2.41 0.649v134.741c39.858-15.224 89.098-29.908 139.605-41.235l7.595-1.431v-136.704c26.239-6.45 56.363-10.149 87.35-10.149 21.13 0 41.859 1.72 62.054 5.028l-2.204-0.298v143.872c55.763 10.757 105.071 26.328 151.746 46.79l-4.546-1.777z" /> -<glyph unicode="" glyph-name="information" d="M460.771 601.604h102.293v102.251h-102.293zM511.917 38.251c-0.012 0-0.027 0-0.041 0-226.23 0-409.625 183.395-409.625 409.625s183.395 409.625 409.625 409.625c226.215 0 409.601-183.372 409.625-409.581v-0.002c0-226.23-183.395-409.625-409.625-409.625v0zM511.876 960.207c-282.717-0.071-511.876-229.274-511.876-512 0-282.77 229.23-512 512-512 282.697 0 511.882 229.113 512 511.782v0.011c0 282.77-229.23 512-512 512v0zM460.854 191.979h102.21v307.25h-102.21z" /> -<glyph unicode="" glyph-name="left" horiz-adv-x="661" d="M22.52 393.406l435.159-434.886c13.85-13.942 33.032-22.572 54.23-22.572s40.38 8.63 54.226 22.567l72.295 72.295c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-308.504 308.413 308.365 308.365c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-0.003 0.003-71.973 72.792c-13.85 13.942-33.032 22.572-54.23 22.572s-40.38-8.63-54.226-22.567l-435.027-434.936c-14.154-13.904-22.927-33.246-22.927-54.637 0-21.234 8.643-40.449 22.604-54.319l0.004-0.004z" /> -<glyph unicode="" glyph-name="phone" horiz-adv-x="652" d="M558.549 959.531l-465.451 0.469c-51.358-0.145-92.954-41.74-93.099-93.085v-837.817c0.145-51.358 41.74-92.954 93.085-93.099h465.465c51.358 0.145 92.954 41.74 93.099 93.085v837.817c-0.194 51.199-41.744 92.629-92.97 92.629-0.045 0-0.090 0-0.136 0h0.007zM558.549 122.197h-465.451v651.605h465.451z" /> -<glyph unicode="" glyph-name="right" horiz-adv-x="661" d="M638.368 393.381l-435.042-434.86c-13.855-13.932-33.037-22.554-54.232-22.554s-40.377 8.622-54.229 22.55l-72.298 72.298c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l308.381 308.381-308.378 308.378c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l0.003 0.003 71.976 72.795c13.855 13.932 33.037 22.554 54.232 22.554s40.377-8.622 54.229-22.55l435.045-434.726c14.1-13.896 22.836-33.203 22.836-54.549 0-21.189-8.607-40.368-22.515-54.232l-0.002-0.002z" /> -<glyph unicode="" glyph-name="school" horiz-adv-x="1252" d="M227.579 380.884v-227.579l398.211-217.305 398.211 217.305v227.579l-398.211-217.358zM625.789 960l-625.789-341.316 625.789-341.316 512 279.311v-393.1h113.789v455.105z" /> -<glyph unicode="" glyph-name="search" d="M1009.922 74.686l-199.391 199.391c-8.672 8.647-20.639 13.993-33.854 13.993-0.096 0-0.192 0-0.288-0.001h-32.577c54.858 69.783 87.982 158.908 87.982 255.769 0 229.618-186.142 415.76-415.76 415.76s-415.76-186.142-415.76-415.76c0-229.618 186.142-415.76 415.76-415.76 96.861 0 185.986 33.123 256.666 88.661l-0.897-0.679v-32.464c0-0.081-0.001-0.177-0.001-0.273 0-13.216 5.346-25.182 13.994-33.855l199.39-199.39c8.657-8.711 20.645-14.103 33.893-14.103s25.236 5.392 33.891 14.1l56.611 56.611c8.774 8.732 14.204 20.817 14.204 34.171 0 13.184-5.292 25.131-13.869 33.834l0.006-0.006zM415.973 287.984c-141.361 0-255.957 114.596-255.957 255.957s114.596 255.957 255.957 255.957c141.361 0 255.957-114.596 255.957-255.957v0c-0.049-141.325-114.626-255.872-255.957-255.872v0z" /> -<glyph unicode="" glyph-name="star" horiz-adv-x="1103" d="M1060.923 605.515h-362.082l-110.034 328.386c-5.769 15.366-20.337 26.102-37.413 26.102s-31.644-10.737-37.322-25.828l-0.091-0.275-110.034-328.386h-364.574c-21.717-0.069-39.304-17.656-39.374-39.367v-0.007c0-0.051-0.001-0.111-0.001-0.172 0-2.3 0.268-4.537 0.775-6.682l-0.039 0.196c1.082-11.588 7.245-21.545 16.211-27.732l0.127-0.083 297.753-209.856-114.363-332.062c-1.356-3.823-2.14-8.232-2.14-12.824 0-12.816 6.104-24.206 15.563-31.422l0.096-0.070c5.913-5.322 13.556-8.829 21.991-9.588l0.147-0.011c9.263 0.701 17.658 3.918 24.649 8.961l-0.142-0.098 290.483 207.038 290.483-207.038c6.807-5.047 15.229-8.284 24.374-8.857l0.132-0.007c8.688 0.56 16.438 4.176 22.272 9.773l-0.012-0.012c9.602 7.187 15.75 18.533 15.75 31.315 0 4.66-0.817 9.13-2.316 13.273l0.086-0.272-114.159 331.898 295.139 211.694 7.148 6.167c7.108 6.72 11.823 15.905 12.772 26.182l0.012 0.163c-1.204 22.063-19.388 39.497-41.643 39.497-0.078 0-0.156 0-0.234-0.001h0.012z" /> -<glyph unicode="" glyph-name="star-1" horiz-adv-x="1095" d="M264.124-64l-3.988 0.315c-45.874 4.728-81.349 43.172-81.349 89.9 0 9.949 1.608 19.523 4.579 28.476l-0.183-0.638 89.58 260.661-235.092 165.554c-19.618 13.599-33.145 34.797-36.332 59.244l-0.046 0.43c-0.823 4.244-1.294 9.125-1.294 14.115 0 0.018 0 0.036 0 0.054v-0.003c0.197 48.36 39.308 87.52 87.63 87.796h289.579l86.747 258.842c12.356 34.779 44.982 59.235 83.32 59.235 37.789 0 70.029-23.761 82.593-57.157l0.201-0.608 87.272-260.311h287.525c0.011 0 0.025 0 0.038 0 47.863 0 86.99-37.407 89.741-84.58l0.011-0.243v-3.848l-0.315-3.883c-2.124-22.565-12.304-42.418-27.594-56.944l-0.039-0.036-11.963-10.074-233.098-167.233 89.755-261.011c3.161-8.633 4.99-18.602 4.99-28.997 0-27.516-12.812-52.041-32.795-67.933l-0.177-0.136c-13.364-11.803-30.658-19.438-49.692-20.728l-0.258-0.014-3.183-0.21-3.148 0.175c-18.973 1.079-36.226 7.647-50.416 18.125l0.256-0.181-229.565 163.77-230.369-164.12c-13.682-9.851-30.475-16.214-48.672-17.473l-0.298-0.017zM812.414 19.949v-0.28zM282.243 20.124v0zM838.403 39.502v0zM139.39 536.968l258.003-181.889-97.94-285.006 247.929 176.642 247.649-176.502-97.94 284.586 254.015 182.169h-309.246l-94.442 282.243-94.722-282.243zM1004.972 536.968v0zM97.346 566.595l0.56-0.42z" /> -<glyph unicode="" glyph-name="thumbs-up" horiz-adv-x="910" d="M662.613 598.059c-7.552 20.181 201.344 206.72 79.531 357.888-28.501 35.328-125.227-169.259-262.528-261.845-75.776-51.2-252.075-159.872-252.075-219.989v-389.461c0-72.32 279.552-148.864 491.989-148.864 77.867 0 190.677 487.851 190.677 565.333s-240.128 76.459-247.467 96.725zM170.624 592.64c-0.681 0.010-1.486 0.016-2.292 0.016-93.126 0-168.619-75.493-168.619-168.619 0-3.187 0.088-6.354 0.263-9.498l-0.019 0.437v-275.797c-0.161-2.71-0.252-5.878-0.252-9.068 0-90.015 72.972-162.987 162.987-162.987 2.79 0 5.564 0.070 8.32 0.209l-0.387-0.016c37.376 0-56.875 32.555-56.875 128.555v362.667c0 100.565 94.251 134.187 56.875 134.187z" /> -<glyph unicode="" glyph-name="time" d="M511.488 960c-282.55-0.292-511.488-229.41-511.488-512 0-282.77 229.23-512 512-512s512 229.23 512 512v0c0 0.076 0 0.166 0 0.257 0 282.628-229.116 511.744-511.744 511.744-0.27 0-0.54 0-0.81-0.001h0.042zM512 38.4c-226.216 0-409.6 183.384-409.6 409.6s183.384 409.6 409.6 409.6c226.216 0 409.6-183.384 409.6-409.6v0c0-226.216-183.384-409.6-409.6-409.6v0zM537.6 704h-76.8v-307.2l268.8-161.28 38.4 63.147-230.4 136.533z" /> -<glyph unicode="" glyph-name="trophy" horiz-adv-x="1152" d="M1104.017 831.982h-207.987v80.017c0 26.51-21.491 48.001-48.001 48.001v0h-544.040c-26.51 0-48.001-21.491-48.001-48.001v0-80.017h-207.987c-26.51 0-48.001-21.491-48.001-48.001v0-111.986c7.076-85.462 54.363-158.548 122.682-200.96l1.112-0.643c61.778-44.226 136.678-74.099 217.854-83.23l2.133-0.195c34.389-59.486 80.159-108.69 134.709-145.998l1.518-0.98v-144.002h-96.001c-3.854 0.457-8.318 0.718-12.843 0.718-62.746 0-113.776-50.163-115.172-112.574l-0.002-0.13v-24c0-13.255 10.745-24 24-24v0h592.041c13.255 0 24 10.745 24 24v0 24c-1.399 62.54-52.429 112.704-115.175 112.704-4.525 0-8.989-0.261-13.378-0.768l0.535 0.050h-96.001v144.002c56.068 38.356 101.826 87.64 135.041 145.086l1.137 2.132c83.314 9.166 158.252 38.973 221.451 84.147l-1.416-0.962c69.366 43.121 116.621 116.171 123.729 200.646l0.065 0.957v111.986c0 26.51-21.491 48.001-48.001 48.001v0zM198.627 574.41c-35.829 20.914-61.682 55.601-70.437 96.621l-0.172 0.964v32.016h128.402c1.638-61.997 10.873-121.145 26.808-177.479l-1.223 5.061c-31.815 11.002-59.407 25.499-84.329 43.47l0.951-0.653zM1024 671.995c-9.695-41.665-35.309-76.091-69.932-97.202l-0.677-0.383c-24.040-17.319-51.713-31.817-81.346-42.129l-2.271-0.688c14.711 51.273 23.946 110.421 25.564 171.467l0.020 0.952h128.594z" /> -<glyph unicode="" glyph-name="puzzle" d="M384 960c-0.789 0.017-1.719 0.027-2.651 0.027-34.738 0-66.285-13.665-89.558-35.914l0.049 0.046c-22.202-23.224-35.867-54.77-35.867-89.509 0-0.932 0.010-1.862 0.029-2.789l-0.002 0.138c5.836-34.821 18.412-65.879 36.393-93.049l-0.553 0.889c2.672-8.237 4.213-17.715 4.213-27.553 0-2.918-0.136-5.803-0.401-8.652l0.027 0.365h-295.68v-768h295.68c0.053 1.37 0.084 2.978 0.084 4.594 0 11.101-1.431 21.868-4.119 32.126l0.196-0.88c-17.428 26.281-30.005 57.34-35.644 90.756l-0.196 1.404c-0.017 0.789-0.027 1.719-0.027 2.651 0 34.738 13.665 66.285 35.914 89.558l-0.046-0.049c23.224 22.202 54.77 35.867 89.509 35.867 0.932 0 1.862-0.010 2.789-0.029l-0.138 0.002c0.789 0.017 1.719 0.027 2.651 0.027 34.738 0 66.285-13.665 89.558-35.914l-0.049 0.046c22.202-23.224 35.867-54.77 35.867-89.509 0-0.932-0.010-1.862-0.029-2.789l0.002 0.138c-5.836-34.821-18.412-65.879-36.393-93.049l0.553 0.889c-2.672-8.237-4.213-17.715-4.213-27.553 0-2.918 0.136-5.803 0.401-8.652l-0.027 0.365h295.68v295.68c1.37 0.053 2.978 0.084 4.594 0.084 11.101 0 21.868-1.431 32.126-4.119l-0.88 0.196c26.281-17.428 57.34-30.005 90.756-35.644l1.404-0.196c70.692 0 128 57.308 128 128s-57.308 128-128 128v0c-34.821-5.836-65.879-18.412-93.049-36.393l0.889 0.553c-8.237-2.672-17.715-4.213-27.553-4.213-2.918 0-5.803 0.136-8.652 0.401l0.365-0.027v295.68h-295.68c-0.053 1.37-0.084 2.978-0.084 4.594 0 11.101 1.431 21.868 4.119 32.126l-0.196-0.88c17.428 26.281 30.005 57.34 35.644 90.756l0.196 1.404c0.017 0.789 0.027 1.719 0.027 2.651 0 34.738-13.665 66.285-35.914 89.558l0.046-0.049c-23.224 22.202-54.77 35.867-89.509 35.867-0.932 0-1.862-0.010-2.789-0.029l0.138 0.002z" /> -<glyph unicode="" glyph-name="top" d="M563.115 736.768l407.851-408.107c13.137-12.992 21.272-31.018 21.272-50.943 0-19.756-7.997-37.645-20.932-50.605l-68.138-68.138c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l-289.532 289.788-289.195-289.195c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-0.213 0.299-68.267 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l408.231 408.316c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z" /> -<glyph unicode="" glyph-name="delet" horiz-adv-x="783" d="M587.199 904.076l-55.924 55.924h-279.618l-55.924-55.924h-195.733v-111.847h782.932v111.847zM33.107 89.492c1.405-85.070 70.697-153.493 155.97-153.493 0.217 0 0.434 0 0.65 0.001h403.362c0.182-0.001 0.398-0.001 0.614-0.001 85.338 0 154.671 68.528 155.971 153.557l0.001 0.122v647.895h-716.569zM144.954 627.888h493.023v-538.023c-0.295-24.483-20.211-44.217-44.736-44.217-0.001 0-0.002 0-0.003 0h-403.21c-0.101-0.001-0.22-0.001-0.34-0.001-24.499 0-44.399 19.692-44.735 44.112v0.032zM288.939 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0zM493.993 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0z" /> +<glyph unicode="" glyph-name="delet" horiz-adv-x="783" d="M587.199 904.076l-55.924 55.924h-279.618l-55.924-55.924h-195.733v-111.847h782.932v111.847zM33.107 89.492c1.405-85.070 70.697-153.493 155.97-153.493 0.217 0 0.434 0 0.65 0.001h403.362c0.182-0.001 0.398-0.001 0.614-0.001 85.338 0 154.671 68.528 155.971 153.557l0.001 0.122v647.895h-716.569zM144.954 627.888h493.023v-538.023c-0.295-24.483-20.211-44.217-44.736-44.217-0.001 0-0.002 0-0.003 0h-403.21c-0.101-0.001-0.22-0.001-0.34-0.001-24.499 0-44.399 19.692-44.735 44.112v0.032zM288.939 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0zM493.993 125.097c30.886 0 55.924 25.038 55.924 55.924v0 316.901c0 30.886-25.038 55.924-55.924 55.924s-55.924-25.038-55.924-55.924v0-316.901c0-30.886 25.038-55.924 55.924-55.924v0z" /> +<glyph unicode="" glyph-name="down" d="M563.115 105.771l407.851 408.107c13.086 12.984 21.186 30.975 21.186 50.858 0 19.714-7.963 37.568-20.848 50.521l-68.136 68.136c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l-289.532-289.617-289.195 289.195c-13.008 13.118-31.038 21.24-50.965 21.24-19.778 0-37.688-8.001-50.669-20.943l-0.297-0.297-67.968-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l408.231-408.316c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z" /> +<glyph unicode="" glyph-name="edit" d="M864 960c88.366 0 160-71.634 160-160 0-36.2-12.022-69.593-32.292-96.402l0.292 0.402-64-64-224 224 64 64c26.324 19.976 59.637 32 95.758 32 0.085 0 0.17 0 0.255 0h-0.013zM64 224l-64-288 288 64 592.171 592-224.171 224.128zM715.563 596.437l-448-448-55.168 55.125 448 448z" /> +<glyph unicode="" glyph-name="eye-1" horiz-adv-x="1142" d="M1123.235 38.654l-217.634 208.847c5.132-1.805 11.050-2.848 17.211-2.848 15.851 0 30.089 6.902 39.875 17.864l0.046 0.052c37.481 38.161 71.036 80.412 99.866 125.951l1.835 3.103c5.666 8.976 9.029 19.899 9.029 31.606 0 11.056-2.999 21.412-8.227 30.299l0.153-0.28c-7.952 13.359-194.813 327.802-528.499 327.802h-1.312c-35.996-0.005-71.127-3.696-105.040-10.716l3.34 0.578c-18.092-3.787-32.895-15.391-40.954-31.036l-0.156-0.333-212.306 203.798c-10.7 10.287-25.264 16.622-41.308 16.622-32.938 0-59.64-26.702-59.64-59.64 0-16.894 7.024-32.148 18.312-42.999l0.020-0.019 162.768-156.208c-5.287-1.648-9.884-3.809-14.111-6.501l0.235 0.14c-95.97-62.868-175.328-142.911-235.543-236.445l-1.89-3.135c-5.835-9.056-9.303-20.115-9.303-31.985 0-11.035 2.997-21.371 8.222-30.236l-0.152 0.279c7.952-13.359 194.813-327.802 529.175-327.802 107.604 0.9 207.542 32.95 291.456 87.555l-2.1-1.281c1.312 0.835 2.385 1.908 3.618 2.863l210.398-201.929c10.7-10.287 25.264-16.622 41.308-16.622 32.938 0 59.64 26.702 59.64 59.64 0 16.894-7.024 32.148-18.312 42.999l-0.020 0.019zM536.729 661.777c210.716 0 354.679-168.573 405.529-238.546-20.464-28.603-41.631-53.756-64.584-77.15l0.097 0.1c-10.193-10.583-16.471-24.997-16.471-40.878 0-6.315 0.993-12.399 2.831-18.103l-0.116 0.417-385.213 369.747c17.213 2.809 37.053 4.414 57.267 4.414 0.232 0 0.464 0 0.696-0.001h-0.036zM480.591 454.242c6.937 5.309 12.58 11.943 16.621 19.556l0.156 0.323 89.972-86.354c-14.804-12.070-33.904-19.382-54.711-19.382-7.266 0-14.323 0.892-21.069 2.571l0.598-0.126c-21.583 3.776-39.081 18.284-47.003 37.713l-0.149 0.414c-0.942 3.344-1.484 7.185-1.484 11.153 0 13.911 6.658 26.266 16.961 34.054l0.107 0.078zM536.729 184.685c-210.716 0-354.4 168.215-405.211 238.546 49.32 68.027 109.037 125.034 177.432 169.904l2.551 1.571c11.947 7.883 20.761 19.68 24.668 33.535l0.101 0.418 78.482-75.301c-2.135-1.142-3.89-2.209-5.584-3.359l0.217 0.139c-39.593-30.204-64.883-77.409-64.883-130.521 0-16.497 2.44-32.424 6.979-47.441l-0.301 1.159c21.213-61.143 72.589-106.713 135.851-119.32l1.154-0.192c13.578-3.209 29.168-5.048 45.187-5.048 51.658 0 98.848 19.131 134.872 50.694l-0.235-0.202c1.923 1.788 3.692 3.67 5.327 5.665l0.080 0.1 67.389-64.686c-58.645-34.055-128.851-54.577-203.762-55.657l-0.314-0.004z" /> +<glyph unicode="" glyph-name="eye" horiz-adv-x="1352" d="M1343.806 481.543c-9.762 19.575-244.11 478.457-667.948 478.457s-658.136-458.883-667.948-478.457c-4.994-9.78-7.92-21.332-7.92-33.568s2.926-23.787 8.117-33.994l-0.197 0.427c10.013-19.575 244.11-478.407 667.948-478.407s658.186 458.832 667.948 478.407c4.994 9.78 7.92 21.332 7.92 33.568s-2.926 23.787-8.117 33.994l0.197-0.427zM675.858 86.040c-272.446 0-457.030 266.138-514.553 361.809 57.523 95.671 242.107 361.809 514.553 361.809s457.13-266.288 514.553-361.809c-57.523-95.521-242.157-361.659-514.553-361.659zM675.858 748.381c-165.896 0-300.381-134.485-300.381-300.381s134.485-300.381 300.381-300.381c165.896 0 300.381 134.485 300.381 300.381v0c-0.199 165.816-134.565 300.182-300.362 300.381h-0.020zM675.858 297.809c-82.948 0-150.191 67.243-150.191 150.191s67.243 150.191 150.191 150.191c82.948 0 150.191-67.243 150.191-150.191v0c0-82.948-67.243-150.191-150.191-150.191v0z" /> +<glyph unicode="" glyph-name="flag" horiz-adv-x="1008" d="M470.315 580.139v-136.192c52.181-11.819 98.603-31.189 147.2-44.587v136.405c-52.011 11.605-98.773 30.976-147.2 44.416zM916.907 826.112c-67.939-35.792-147.729-58.874-232.376-63.923l-1.608-0.077c-107.008 0.213-195.584 69.76-330.368 69.76-0.457 0.002-0.998 0.003-1.539 0.003-48.265 0-94.476-8.794-137.118-24.867l2.678 0.885c4.705 11.905 7.433 25.695 7.433 40.122 0 61.856-50.144 112-112 112s-112-50.144-112-112c0-37.882 18.807-71.371 47.593-91.64l0.355-0.237v-772.267c0-0.038 0-0.083 0-0.128 0-26.439 21.433-47.872 47.872-47.872 0.045 0 0.090 0 0.135 0h31.993c0.038 0 0.083 0 0.128 0 26.439 0 47.872 21.433 47.872 47.872 0 0.045 0 0.090 0 0.135v-0.007 188.928c64.268 28.012 139.144 44.31 217.827 44.31 3.851 0 7.693-0.039 11.525-0.117l-0.573 0.009c107.179 0 195.584-69.589 330.368-69.589 92.324 0.765 177.356 31.352 246.099 82.581l-1.107-0.789c16.771 11.705 27.605 30.909 27.605 52.644 0 0.047 0 0.094 0 0.141v-0.007 486.144c-0.078 35.287-28.702 63.863-64 63.863-9.72 0-18.935-2.167-27.186-6.044l0.391 0.165zM323.157 308.992c-54.473-5.68-104.346-17.389-151.58-34.589l4.38 1.394v140.8c42.966 16.959 92.83 29.258 144.754 34.612l2.446 0.204zM911.957 577.792c-42.344-20.263-91.614-36.787-143.125-47.106l-4.075-0.681v-141.867c55.26 7.286 105.051 25.69 148.773 52.924l-1.573-0.913v-140.8c-41.573-28.653-91.64-48.031-145.739-54.055l-1.461-0.132v142.976c-14.605-2.234-31.455-3.51-48.603-3.51-35.177 0-69.1 5.37-100.994 15.334l2.396-0.645v-134.912c-39.685 15.094-88.92 29.775-139.395 41.183l-7.805 1.483v136.875c-28.906 6.694-62.098 10.532-96.186 10.532-17.976 0-35.702-1.067-53.12-3.141l2.106 0.204v140.032c-55.565-9.583-104.997-24.104-151.88-43.532l4.68 1.718v140.8c42.614 19.83 92.097 35.166 143.91 43.55l3.29 0.439v-142.976c14.417 2.165 31.054 3.401 47.98 3.401 35.4 0 69.537-5.408 101.63-15.442l-2.41 0.649v134.741c39.858-15.224 89.098-29.908 139.605-41.235l7.595-1.431v-136.704c26.239-6.45 56.363-10.149 87.35-10.149 21.13 0 41.859 1.72 62.054 5.028l-2.204-0.298v143.872c55.763 10.757 105.071 26.328 151.746 46.79l-4.546-1.777z" /> +<glyph unicode="" glyph-name="information" d="M460.771 601.604h102.293v102.251h-102.293zM511.917 38.251c-0.012 0-0.027 0-0.041 0-226.23 0-409.625 183.395-409.625 409.625s183.395 409.625 409.625 409.625c226.215 0 409.601-183.372 409.625-409.581v-0.002c0-226.23-183.395-409.625-409.625-409.625v0zM511.876 960.207c-282.717-0.071-511.876-229.274-511.876-512 0-282.77 229.23-512 512-512 282.697 0 511.882 229.113 512 511.782v0.011c0 282.77-229.23 512-512 512v0zM460.854 191.979h102.21v307.25h-102.21z" /> +<glyph unicode="" glyph-name="left" horiz-adv-x="661" d="M22.52 393.406l435.159-434.886c13.85-13.942 33.032-22.572 54.23-22.572s40.38 8.63 54.226 22.567l72.295 72.295c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-308.504 308.413 308.365 308.365c13.931 13.855 22.553 33.035 22.553 54.23s-8.622 40.375-22.549 54.227l-0.003 0.003-71.973 72.792c-13.85 13.942-33.032 22.572-54.23 22.572s-40.38-8.63-54.226-22.567l-435.027-434.936c-14.154-13.904-22.927-33.246-22.927-54.637 0-21.234 8.643-40.449 22.604-54.319l0.004-0.004z" /> +<glyph unicode="" glyph-name="phone" horiz-adv-x="652" d="M558.549 959.531l-465.451 0.469c-51.358-0.145-92.954-41.74-93.099-93.085v-837.817c0.145-51.358 41.74-92.954 93.085-93.099h465.465c51.358 0.145 92.954 41.74 93.099 93.085v837.817c-0.194 51.199-41.744 92.629-92.97 92.629-0.045 0-0.090 0-0.136 0h0.007zM558.549 122.197h-465.451v651.605h465.451z" /> +<glyph unicode="" glyph-name="puzzle" d="M384 960c-0.789 0.017-1.719 0.027-2.651 0.027-34.738 0-66.285-13.665-89.558-35.914l0.049 0.046c-22.202-23.224-35.867-54.77-35.867-89.509 0-0.932 0.010-1.862 0.029-2.789l-0.002 0.138c5.836-34.821 18.412-65.879 36.393-93.049l-0.553 0.889c2.672-8.237 4.213-17.715 4.213-27.553 0-2.918-0.136-5.803-0.401-8.652l0.027 0.365h-295.68v-768h295.68c0.053 1.37 0.084 2.978 0.084 4.594 0 11.101-1.431 21.868-4.119 32.126l0.196-0.88c-17.428 26.281-30.005 57.34-35.644 90.756l-0.196 1.404c-0.017 0.789-0.027 1.719-0.027 2.651 0 34.738 13.665 66.285 35.914 89.558l-0.046-0.049c23.224 22.202 54.77 35.867 89.509 35.867 0.932 0 1.862-0.010 2.789-0.029l-0.138 0.002c0.789 0.017 1.719 0.027 2.651 0.027 34.738 0 66.285-13.665 89.558-35.914l-0.049 0.046c22.202-23.224 35.867-54.77 35.867-89.509 0-0.932-0.010-1.862-0.029-2.789l0.002 0.138c-5.836-34.821-18.412-65.879-36.393-93.049l0.553 0.889c-2.672-8.237-4.213-17.715-4.213-27.553 0-2.918 0.136-5.803 0.401-8.652l-0.027 0.365h295.68v295.68c1.37 0.053 2.978 0.084 4.594 0.084 11.101 0 21.868-1.431 32.126-4.119l-0.88 0.196c26.281-17.428 57.34-30.005 90.756-35.644l1.404-0.196c70.692 0 128 57.308 128 128s-57.308 128-128 128v0c-34.821-5.836-65.879-18.412-93.049-36.393l0.889 0.553c-8.237-2.672-17.715-4.213-27.553-4.213-2.918 0-5.803 0.136-8.652 0.401l0.365-0.027v295.68h-295.68c-0.053 1.37-0.084 2.978-0.084 4.594 0 11.101 1.431 21.868 4.119 32.126l-0.196-0.88c17.428 26.281 30.005 57.34 35.644 90.756l0.196 1.404c0.017 0.789 0.027 1.719 0.027 2.651 0 34.738-13.665 66.285-35.914 89.558l0.046-0.049c-23.224 22.202-54.77 35.867-89.509 35.867-0.932 0-1.862-0.010-2.789-0.029l0.138 0.002z" /> +<glyph unicode="" glyph-name="right" horiz-adv-x="661" d="M638.368 393.381l-435.042-434.86c-13.855-13.932-33.037-22.554-54.232-22.554s-40.377 8.622-54.229 22.55l-72.298 72.298c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l308.381 308.381-308.378 308.378c-13.932 13.855-22.554 33.037-22.554 54.232s8.622 40.377 22.55 54.229l0.003 0.003 71.976 72.795c13.855 13.932 33.037 22.554 54.232 22.554s40.377-8.622 54.229-22.55l435.045-434.726c14.1-13.896 22.836-33.203 22.836-54.549 0-21.189-8.607-40.368-22.515-54.232l-0.002-0.002z" /> +<glyph unicode="" glyph-name="school" horiz-adv-x="1252" d="M227.579 380.884v-227.579l398.211-217.305 398.211 217.305v227.579l-398.211-217.358zM625.789 960l-625.789-341.316 625.789-341.316 512 279.311v-393.1h113.789v455.105z" /> +<glyph unicode="" glyph-name="search" d="M1009.922 74.686l-199.391 199.391c-8.672 8.647-20.639 13.993-33.854 13.993-0.096 0-0.192 0-0.288-0.001h-32.577c54.858 69.783 87.982 158.908 87.982 255.769 0 229.618-186.142 415.76-415.76 415.76s-415.76-186.142-415.76-415.76c0-229.618 186.142-415.76 415.76-415.76 96.861 0 185.986 33.123 256.666 88.661l-0.897-0.679v-32.464c0-0.081-0.001-0.177-0.001-0.273 0-13.216 5.346-25.182 13.994-33.855l199.39-199.39c8.657-8.711 20.645-14.103 33.893-14.103s25.236 5.392 33.891 14.1l56.611 56.611c8.774 8.732 14.204 20.817 14.204 34.171 0 13.184-5.292 25.131-13.869 33.834l0.006-0.006zM415.973 287.984c-141.361 0-255.957 114.596-255.957 255.957s114.596 255.957 255.957 255.957c141.361 0 255.957-114.596 255.957-255.957v0c-0.049-141.325-114.626-255.872-255.957-255.872v0z" /> +<glyph unicode="" glyph-name="star-1" horiz-adv-x="1095" d="M264.124-64l-3.988 0.315c-45.874 4.728-81.349 43.172-81.349 89.9 0 9.949 1.608 19.523 4.579 28.476l-0.183-0.638 89.58 260.661-235.092 165.554c-19.618 13.599-33.145 34.797-36.332 59.244l-0.046 0.43c-0.823 4.244-1.294 9.125-1.294 14.115 0 0.018 0 0.036 0 0.054v-0.003c0.197 48.36 39.308 87.52 87.63 87.796h289.579l86.747 258.842c12.356 34.779 44.982 59.235 83.32 59.235 37.789 0 70.029-23.761 82.593-57.157l0.201-0.608 87.272-260.311h287.525c0.011 0 0.025 0 0.038 0 47.863 0 86.99-37.407 89.741-84.58l0.011-0.243v-3.848l-0.315-3.883c-2.124-22.565-12.304-42.418-27.594-56.944l-0.039-0.036-11.963-10.074-233.098-167.233 89.755-261.011c3.161-8.633 4.99-18.602 4.99-28.997 0-27.516-12.812-52.041-32.795-67.933l-0.177-0.136c-13.364-11.803-30.658-19.438-49.692-20.728l-0.258-0.014-3.183-0.21-3.148 0.175c-18.973 1.079-36.226 7.647-50.416 18.125l0.256-0.181-229.565 163.77-230.369-164.12c-13.682-9.851-30.475-16.214-48.672-17.473l-0.298-0.017zM812.414 19.949v-0.28zM282.243 20.124v0zM838.403 39.502v0zM139.39 536.968l258.003-181.889-97.94-285.006 247.929 176.642 247.649-176.502-97.94 284.586 254.015 182.169h-309.246l-94.442 282.243-94.722-282.243zM1004.972 536.968v0zM97.346 566.595l0.56-0.42z" /> +<glyph unicode="" glyph-name="star" horiz-adv-x="1103" d="M1060.923 605.515h-362.082l-110.034 328.386c-5.769 15.366-20.337 26.102-37.413 26.102s-31.644-10.737-37.322-25.828l-0.091-0.275-110.034-328.386h-364.574c-21.717-0.069-39.304-17.656-39.374-39.367v-0.007c0-0.051-0.001-0.111-0.001-0.172 0-2.3 0.268-4.537 0.775-6.682l-0.039 0.196c1.082-11.588 7.245-21.545 16.211-27.732l0.127-0.083 297.753-209.856-114.363-332.062c-1.356-3.823-2.14-8.232-2.14-12.824 0-12.816 6.104-24.206 15.563-31.422l0.096-0.070c5.913-5.322 13.556-8.829 21.991-9.588l0.147-0.011c9.263 0.701 17.658 3.918 24.649 8.961l-0.142-0.098 290.483 207.038 290.483-207.038c6.807-5.047 15.229-8.284 24.374-8.857l0.132-0.007c8.688 0.56 16.438 4.176 22.272 9.773l-0.012-0.012c9.602 7.187 15.75 18.533 15.75 31.315 0 4.66-0.817 9.13-2.316 13.273l0.086-0.272-114.159 331.898 295.139 211.694 7.148 6.167c7.108 6.72 11.823 15.905 12.772 26.182l0.012 0.163c-1.204 22.063-19.388 39.497-41.643 39.497-0.078 0-0.156 0-0.234-0.001h0.012z" /> +<glyph unicode="" glyph-name="thumbs-up" horiz-adv-x="910" d="M662.613 598.059c-7.552 20.181 201.344 206.72 79.531 357.888-28.501 35.328-125.227-169.259-262.528-261.845-75.776-51.2-252.075-159.872-252.075-219.989v-389.461c0-72.32 279.552-148.864 491.989-148.864 77.867 0 190.677 487.851 190.677 565.333s-240.128 76.459-247.467 96.725zM170.624 592.64c-0.681 0.010-1.486 0.016-2.292 0.016-93.126 0-168.619-75.493-168.619-168.619 0-3.187 0.088-6.354 0.263-9.498l-0.019 0.437v-275.797c-0.161-2.71-0.252-5.878-0.252-9.068 0-90.015 72.972-162.987 162.987-162.987 2.79 0 5.564 0.070 8.32 0.209l-0.387-0.016c37.376 0-56.875 32.555-56.875 128.555v362.667c0 100.565 94.251 134.187 56.875 134.187z" /> +<glyph unicode="" glyph-name="time" d="M511.488 960c-282.55-0.292-511.488-229.41-511.488-512 0-282.77 229.23-512 512-512s512 229.23 512 512v0c0 0.076 0 0.166 0 0.257 0 282.628-229.116 511.744-511.744 511.744-0.27 0-0.54 0-0.81-0.001h0.042zM512 38.4c-226.216 0-409.6 183.384-409.6 409.6s183.384 409.6 409.6 409.6c226.216 0 409.6-183.384 409.6-409.6v0c0-226.216-183.384-409.6-409.6-409.6v0zM537.6 704h-76.8v-307.2l268.8-161.28 38.4 63.147-230.4 136.533z" /> +<glyph unicode="" glyph-name="top" d="M563.115 736.768l407.851-408.107c13.137-12.992 21.272-31.018 21.272-50.943 0-19.756-7.997-37.645-20.932-50.605l-68.138-68.138c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l-289.532 289.788-289.195-289.195c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-0.213 0.299-68.267 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l408.231 408.316c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z" /> +<glyph unicode="" glyph-name="trophy" horiz-adv-x="1152" d="M1104.017 831.982h-207.987v80.017c0 26.51-21.491 48.001-48.001 48.001v0h-544.040c-26.51 0-48.001-21.491-48.001-48.001v0-80.017h-207.987c-26.51 0-48.001-21.491-48.001-48.001v0-111.986c7.076-85.462 54.363-158.548 122.682-200.96l1.112-0.643c61.778-44.226 136.678-74.099 217.854-83.23l2.133-0.195c34.389-59.486 80.159-108.69 134.709-145.998l1.518-0.98v-144.002h-96.001c-3.854 0.457-8.318 0.718-12.843 0.718-62.746 0-113.776-50.163-115.172-112.574l-0.002-0.13v-24c0-13.255 10.745-24 24-24v0h592.041c13.255 0 24 10.745 24 24v0 24c-1.399 62.54-52.429 112.704-115.175 112.704-4.525 0-8.989-0.261-13.378-0.768l0.535 0.050h-96.001v144.002c56.068 38.356 101.826 87.64 135.041 145.086l1.137 2.132c83.314 9.166 158.252 38.973 221.451 84.147l-1.416-0.962c69.366 43.121 116.621 116.171 123.729 200.646l0.065 0.957v111.986c0 26.51-21.491 48.001-48.001 48.001v0zM198.627 574.41c-35.829 20.914-61.682 55.601-70.437 96.621l-0.172 0.964v32.016h128.402c1.638-61.997 10.873-121.145 26.808-177.479l-1.223 5.061c-31.815 11.002-59.407 25.499-84.329 43.47l0.951-0.653zM1024 671.995c-9.695-41.665-35.309-76.091-69.932-97.202l-0.677-0.383c-24.040-17.319-51.713-31.817-81.346-42.129l-2.271-0.688c14.711 51.273 23.946 110.421 25.564 171.467l0.020 0.952h128.594z" /> </font></defs></svg> \ No newline at end of file diff --git a/PAMapp/assets/icon/fonts/icomoon.ttf b/PAMapp/assets/icon/fonts/icomoon.ttf index 6d32264..251a460 100644 --- a/PAMapp/assets/icon/fonts/icomoon.ttf +++ b/PAMapp/assets/icon/fonts/icomoon.ttf Binary files differ diff --git a/PAMapp/assets/icon/fonts/icomoon.woff b/PAMapp/assets/icon/fonts/icomoon.woff index 36eacb1..4b54524 100644 --- a/PAMapp/assets/icon/fonts/icomoon.woff +++ b/PAMapp/assets/icon/fonts/icomoon.woff Binary files differ diff --git a/PAMapp/assets/icon/selection.json b/PAMapp/assets/icon/selection.json index 3d2fb59..56089a5 100644 --- a/PAMapp/assets/icon/selection.json +++ b/PAMapp/assets/icon/selection.json @@ -1 +1 @@ -{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M587.199 55.924l-55.924-55.924h-279.618l-55.924 55.924h-195.733v111.847h782.932v-111.847z","M33.107 870.508c1.405 85.070 70.697 153.493 155.97 153.493 0.217 0 0.434-0 0.65-0.001l-0.034 0h403.396c0.182 0.001 0.398 0.001 0.614 0.001 85.338 0 154.671-68.528 155.971-153.557l0.001-0.122v-647.895h-716.569zM144.954 332.112h493.023v538.023c-0.295 24.483-20.211 44.217-44.736 44.217-0.001 0-0.002-0-0.003-0l-403.21 0c-0.101 0.001-0.22 0.001-0.34 0.001-24.499 0-44.399-19.692-44.735-44.112l-0-0.032z","M288.939 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z","M493.993 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z"],"attrs":[{},{},{},{}],"width":783,"grid":0,"tags":["delet"],"isMulticolor":false,"isMulticolor2":false},"attrs":[{},{},{},{}],"properties":{"order":38,"id":33,"name":"delet","prevSize":32,"code":59680},"setIdx":0,"setId":0,"iconIdx":0},{"icon":{"paths":["M563.115 223.232l407.851 408.107c13.137 12.992 21.272 31.018 21.272 50.943 0 19.756-7.997 37.645-20.932 50.605l0.001-0.001-68.139 68.139c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-289.536-289.792-289.195 289.195c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-0.213-0.299-68.267-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l-0.004 0.004 408.235-408.32c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["top"]},"attrs":[{}],"properties":{"order":37,"id":32,"name":"top","prevSize":32,"code":59679},"setIdx":0,"setId":0,"iconIdx":1},{"icon":{"paths":["M384 0c-0.789-0.017-1.719-0.027-2.651-0.027-34.738 0-66.285 13.665-89.558 35.914l0.049-0.046c-22.202 23.224-35.867 54.77-35.867 89.509 0 0.932 0.010 1.862 0.029 2.789l-0.002-0.138c5.836 34.821 18.412 65.879 36.393 93.049l-0.553-0.889c2.672 8.237 4.213 17.715 4.213 27.553 0 2.918-0.136 5.803-0.401 8.652l0.027-0.365h-295.68v768h295.68c0.053-1.37 0.084-2.978 0.084-4.594 0-11.101-1.431-21.868-4.119-32.126l0.196 0.88c-17.428-26.281-30.005-57.34-35.644-90.756l-0.196-1.404c-0.017-0.789-0.027-1.719-0.027-2.651 0-34.738 13.665-66.285 35.914-89.558l-0.046 0.049c23.224-22.202 54.77-35.867 89.509-35.867 0.932 0 1.862 0.010 2.789 0.029l-0.138-0.002c0.789-0.017 1.719-0.027 2.651-0.027 34.738 0 66.285 13.665 89.558 35.914l-0.049-0.046c22.202 23.224 35.867 54.77 35.867 89.509 0 0.932-0.010 1.862-0.029 2.789l0.002-0.138c-5.836 34.821-18.412 65.879-36.393 93.049l0.553-0.889c-2.672 8.237-4.213 17.715-4.213 27.553 0 2.918 0.136 5.803 0.401 8.652l-0.027-0.365h295.68v-295.68c1.37-0.053 2.978-0.084 4.594-0.084 11.101 0 21.868 1.431 32.126 4.119l-0.88-0.196c26.281 17.428 57.34 30.005 90.756 35.644l1.404 0.196c70.692 0 128-57.308 128-128s-57.308-128-128-128v0c-34.821 5.836-65.879 18.412-93.049 36.393l0.889-0.553c-8.237 2.672-17.715 4.213-27.553 4.213-2.918 0-5.803-0.136-8.652-0.401l0.365 0.027v-295.68h-295.68c-0.053-1.37-0.084-2.978-0.084-4.594 0-11.101 1.431-21.868 4.119-32.126l-0.196 0.88c17.428-26.281 30.005-57.34 35.644-90.756l0.196-1.404c0.017-0.789 0.027-1.719 0.027-2.651 0-34.738-13.665-66.285-35.914-89.558l0.046 0.049c-23.224-22.202-54.77-35.867-89.509-35.867-0.932 0-1.862 0.010-2.789 0.029l0.138-0.002z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["puzzle"]},"attrs":[{}],"properties":{"order":35,"id":31,"name":"puzzle","prevSize":32,"code":59678},"setIdx":0,"setId":0,"iconIdx":2},{"icon":{"paths":["M563.115 854.229l407.851-408.107c13.086-12.984 21.186-30.975 21.186-50.858 0-19.714-7.963-37.568-20.848-50.521l0.003 0.003-68.139-68.139c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-289.536 289.621-289.195-289.195c-13.008-13.118-31.038-21.24-50.965-21.24-19.778 0-37.688 8.001-50.669 20.943l0.002-0.002-0.299 0.299-67.968 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l-0.004-0.004 408.235 408.32c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["down"]},"attrs":[{}],"properties":{"order":5,"id":30,"name":"down","prevSize":32,"code":59648},"setIdx":0,"setId":0,"iconIdx":3},{"icon":{"paths":["M944.305 432.195h-352.501v-352.501c-0.083-44.019-35.777-79.674-79.803-79.695l-0.002-0c-43.994 0.083-79.632 35.735-79.695 79.725l-0 0.006v352.464h-352.537c-44.055 0-79.768 35.713-79.768 79.768s35.713 79.768 79.768 79.768v0h352.501v352.574c0 44.055 35.713 79.768 79.768 79.768s79.768-35.713 79.768-79.768l-0 0v-352.574h352.501c44.055 0 79.768-35.713 79.768-79.768s-35.713-79.768-79.768-79.768l0 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["add"]},"attrs":[{}],"properties":{"order":6,"id":29,"name":"add","prevSize":32,"code":59649},"setIdx":0,"setId":0,"iconIdx":4},{"icon":{"paths":["M358.4 0c-0.076-0-0.166-0-0.256-0-197.797 0-358.144 160.347-358.144 358.144 0 0.090 0 0.18 0 0.27l-0-0.014c0 268.8 358.4 665.6 358.4 665.6s358.4-396.8 358.4-665.6c0-0.076 0-0.166 0-0.256 0-197.797-160.347-358.144-358.144-358.144-0.090 0-0.18 0-0.27 0l0.014-0zM358.4 486.4c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128v0c0 70.692-57.308 128-128 128h0z"],"attrs":[{}],"width":717,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["address"]},"attrs":[{}],"properties":{"order":11,"id":28,"name":"address","prevSize":32,"code":59650},"setIdx":0,"setId":0,"iconIdx":5},{"icon":{"paths":["M447.993 511.981c141.38 0 255.991-114.611 255.991-255.991s-114.611-255.991-255.991-255.991c-141.38 0-255.991 114.611-255.991 255.991v-0c0 141.38 114.611 255.991 255.991 255.991v-0zM639.585 577.164l-95.609 382.81-63.988-272.006 63.988-111.998h-191.965l63.988 111.998-63.988 272.006-95.609-382.773c-142.815 6.542-256.155 123.796-256.401 267.577l-0 0.024v179.197h895.986v-179.197c-0.246-143.806-113.586-261.059-255.814-267.58l-0.587-0.021z"],"attrs":[{}],"width":896,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["agent"]},"attrs":[{}],"properties":{"order":13,"id":27,"name":"agent","prevSize":32,"code":59651},"setIdx":0,"setId":0,"iconIdx":6},{"icon":{"paths":["M889.022 7.054l-831.526 383.772c-34.358 15.411-57.857 49.317-57.857 88.711 0 53.291 43.002 96.539 96.2 96.936l0.038 0h351.649v351.801c0.219 53.372 43.536 96.553 96.938 96.553 39.559 0 73.583-23.696 88.654-57.668l0.245-0.618 383.621-831.564c3.826-10.169 6.041-21.922 6.041-34.192 0-55.109-44.674-99.783-99.783-99.783-12.281 0-24.044 2.219-34.909 6.277l0.689-0.226z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow"]},"attrs":[{}],"properties":{"order":14,"id":26,"name":"arrow","prevSize":32,"code":59652},"setIdx":0,"setId":0,"iconIdx":7},{"icon":{"paths":["M448.963 503.181c138.95 0 251.59-112.641 251.59-251.59s-112.641-251.59-251.59-251.59v-0c-138.95 0-251.59 112.641-251.59 251.59s112.641 251.59 251.59 251.59v0zM448.963 119.488v0c72.958-0 132.103 59.144 132.103 132.103s-59.144 132.103-132.103 132.103c-72.958 0-132.103-59.144-132.103-132.103 0-0.013 0-0.026 0-0.039l-0 0.002c-0-72.938 59.128-132.065 132.065-132.065 0.013 0 0.026 0 0.039 0l-0.002-0z","M448.963 566.069c-167.938 0-448.963 50.013-448.963 217.355v240.576h893.721v-240.576c0-167.305-276.82-217.355-444.758-217.355zM774.233 904.475h-654.931v-121.051c0-40.263 142.671-97.83 329.475-97.83v0c186.804 0 325.27 57.567 325.27 97.83z"],"attrs":[{},{}],"width":894,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["avatar"]},"attrs":[{},{}],"properties":{"order":15,"id":25,"name":"avatar","prevSize":32,"code":59653},"setIdx":0,"setId":0,"iconIdx":8},{"icon":{"paths":["M908.486 692.817c-1.1-0.834-112.139-84.872-112.139-362.886 0-182.216-147.715-329.931-329.931-329.931s-329.931 147.715-329.931 329.931v0c0 278.014-111.039 362.052-111.191 362.242-15.359 10.347-25.326 27.674-25.326 47.328 0 31.414 25.465 56.881 56.878 56.885l819.14 0c25.031-0.194 46.179-16.601 53.474-39.229l0.112-0.401c1.696-5.184 2.675-11.15 2.675-17.344 0-19.089-9.291-36.008-23.598-46.482l-0.162-0.113zM174.901 682.616c47.923-94.131 76-205.282 76-322.99 0-10.443-0.221-20.835-0.659-31.17l0.050 1.475c0-119.383 96.779-216.162 216.162-216.162s216.162 96.779 216.162 216.162l0 0c-0.387 8.856-0.608 19.244-0.608 29.684 0 117.708 28.062 228.862 77.862 327.136l-1.9-4.135z","M573.853 872.459c-8.181-4.825-18.026-7.675-28.536-7.675-20.904 0-39.175 11.276-49.061 28.077l-0.145 0.266c-6.013 10.266-16.989 17.051-29.55 17.051-6.311 0-12.222-1.713-17.293-4.699l0.16 0.087c-5.181-3.025-9.376-7.22-12.314-12.241l-0.086-0.16c-10.022-17.142-28.338-28.474-49.3-28.474-31.434 0-56.916 25.482-56.916 56.916 0 10.472 2.828 20.283 7.762 28.711l-0.145-0.269c26.074 44.41 73.596 73.753 127.972 73.753s101.897-29.344 127.594-73.059l0.377-0.694c4.808-8.17 7.648-17.998 7.648-28.489 0-20.831-11.197-39.047-27.901-48.958l-0.263-0.144z"],"attrs":[{},{}],"width":932,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["bell"]},"attrs":[{},{}],"properties":{"order":16,"id":24,"name":"bell","prevSize":32,"code":59654},"setIdx":0,"setId":0,"iconIdx":9},{"icon":{"paths":["M307.2 460.8h-102.4v102.4h102.4zM512 460.8h-102.4v102.4h102.4zM716.8 460.8h-102.4v102.4h102.4zM819.2 102.4h-51.2v-102.4h-102.4v102.4h-409.6v-102.4h-102.4v102.4h-51.2c-56.277 0.024-101.889 45.651-101.889 101.931 0 0.165 0 0.33 0.001 0.495l-0-0.025-0.512 716.8c0 56.554 45.846 102.4 102.4 102.4v0h716.8c56.486-0.169 102.231-45.914 102.4-102.384l0-0.016v-716.8c-0.169-56.486-45.914-102.231-102.384-102.4l-0.016-0zM819.2 921.6h-716.8v-563.2h716.8z"],"attrs":[{}],"width":922,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calender"]},"attrs":[{}],"properties":{"order":17,"id":23,"name":"calender","prevSize":32,"code":59655},"setIdx":0,"setId":0,"iconIdx":10},{"icon":{"paths":["M910.222 113.778v796.444h-796.444v-796.444h796.444zM910.222 0h-796.444c-62.76 0.193-113.584 51.018-113.778 113.759l-0 0.019v796.444c0.193 62.76 51.018 113.584 113.759 113.778l0.019 0h796.444c62.76-0.193 113.584-51.018 113.778-113.759l0-0.019v-796.444c-0.193-62.76-51.018-113.584-113.759-113.778l-0.019-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox"]},"attrs":[{}],"properties":{"order":18,"id":22,"name":"checkbox","prevSize":32,"code":59656},"setIdx":0,"setId":0,"iconIdx":11},{"icon":{"paths":["M910.222 0h-796.444c-62.838 0-113.778 50.94-113.778 113.778v0 796.444c0 62.838 50.94 113.778 113.778 113.778v0h796.444c62.838 0 113.778-50.94 113.778-113.778v0-796.444c0-62.838-50.94-113.778-113.778-113.778v0zM398.222 796.444l-284.444-284.444 80.213-80.213 204.231 203.662 431.787-431.787 80.213 80.782z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox-1"]},"attrs":[{}],"properties":{"order":19,"id":21,"name":"checkbox-1","prevSize":32,"code":59657},"setIdx":0,"setId":0,"iconIdx":12},{"icon":{"paths":["M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512v0c0 282.77-229.23 512-512 512h-0zM276.821 547.072l279.723 279.723c8.937 8.992 21.312 14.557 34.987 14.557s26.050-5.565 34.984-14.554l0.002-0.002 35.115-35.115c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-209.749-209.749 209.749-209.749c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-35.115-35.115c-8.937-8.992-21.312-14.557-34.987-14.557s-26.050 5.565-34.984 14.554l-0.002 0.002-279.723 279.765c-8.993 8.976-14.557 21.385-14.557 35.093s5.564 26.118 14.556 35.093l0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-left"]},"attrs":[{}],"properties":{"order":20,"id":20,"name":"circle-left","prevSize":32,"code":59658},"setIdx":0,"setId":0,"iconIdx":13},{"icon":{"paths":["M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512v0c0 282.77 229.23 512 512 512v0zM747.136 547.115l-279.723 279.723c-8.937 8.992-21.312 14.557-34.987 14.557s-26.050-5.565-34.984-14.554l-0.002-0.002-35.115-35.115c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 209.749-209.749-209.792-209.792c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 35.115-35.115c8.937-8.992 21.312-14.557 34.987-14.557s26.050 5.565 34.984 14.554l0.002 0.002 279.723 279.723c9.019 8.98 14.6 21.406 14.6 35.136 0 13.709-5.564 26.118-14.556 35.093l-0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-right"]},"attrs":[{}],"properties":{"order":21,"id":19,"name":"circle-right","prevSize":32,"code":59659},"setIdx":0,"setId":0,"iconIdx":14},{"icon":{"paths":["M843.123 30.996l-331.098 331.098-331.098-331.098c-19.185-19.146-45.668-30.985-74.916-30.985s-55.731 11.839-74.918 30.987l0.002-0.002c-19.117 19.18-30.937 45.643-30.937 74.868s11.82 55.687 30.94 74.87l-0.003-0.003 331.050 331.098-331.050 331.244c-19.191 19.173-31.063 45.67-31.063 74.94 0 58.504 47.427 105.93 105.93 105.93 29.234 0 55.702-11.842 74.868-30.991l-0.001 0.001 331.098-331.098 331.196 331.147c19.046 18.46 45.049 29.839 73.71 29.839 58.521 0 105.961-47.44 105.961-105.961 0-28.661-11.379-54.663-29.865-73.737l0.027 0.028-331.196-331.196 331.098-331.098c18.46-19.046 29.839-45.049 29.839-73.71 0-58.521-47.44-105.961-105.961-105.961-28.661 0-54.663 11.379-73.737 29.865l0.028-0.027z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["close"]},"attrs":[{}],"properties":{"order":22,"id":18,"name":"close","prevSize":32,"code":59660},"setIdx":0,"setId":0,"iconIdx":15},{"icon":{"paths":["M895.851 0h-767.872c-70.681 0-127.979 57.298-127.979 127.979v0 575.904c0 70.681 57.298 127.979 127.979 127.979v0h191.968v167.993c-0 0.025-0 0.056-0 0.086 0 13.288 10.772 24.060 24.060 24.060 5.399 0 10.382-1.778 14.397-4.781l-0.063 0.045 249.558-187.403h287.952c70.681 0 127.979-57.298 127.979-127.979v0-575.904c0-70.681-57.298-127.979-127.979-127.979l0 0zM604.699 575.904h-371.821v-127.979h371.821zM791.42 296.697h-558.84v-127.979h558.84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["comment"]},"attrs":[{}],"properties":{"order":23,"id":17,"name":"comment","prevSize":32,"code":59661},"setIdx":0,"setId":0,"iconIdx":16},{"icon":{"paths":["M646.741 485.035v-323.371l-161.707-161.664-161.664 161.664v107.819h-323.371v754.517h970.112v-538.965zM215.595 916.224h-107.819v-107.819h107.819zM215.595 700.629h-107.819v-107.776h107.819zM215.595 485.035h-107.819v-107.776h107.819zM538.965 916.181h-107.819v-107.776h107.776zM538.965 700.587h-107.819v-107.733h107.776zM538.965 484.992h-107.819v-107.733h107.776zM538.965 269.397h-107.819v-107.733h107.776zM862.336 916.139h-107.819v-107.733h107.776zM862.336 700.544h-107.819v-107.691h107.776z"],"attrs":[{}],"width":970,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["company"]},"attrs":[{}],"properties":{"order":7,"id":16,"name":"company","prevSize":32,"code":59662},"setIdx":0,"setId":0,"iconIdx":17},{"icon":{"paths":["M864 0c88.366 0 160 71.634 160 160 0 36.2-12.022 69.593-32.292 96.402l0.292-0.402-64 64-224-224 64-64c26.324-19.976 59.637-32 95.758-32 0.085 0 0.17 0 0.255 0l-0.013-0zM64 736l-64 288 288-64 592.171-592-224.171-224.128zM715.563 363.563l-448 448-55.168-55.125 448-448z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["edit"]},"attrs":[{}],"properties":{"order":8,"id":14,"name":"edit","prevSize":32,"code":59663},"setIdx":0,"setId":0,"iconIdx":18},{"icon":{"paths":["M1343.806 478.457c-9.762-19.575-244.11-478.457-667.948-478.457s-658.136 458.883-667.948 478.457c-4.994 9.78-7.92 21.332-7.92 33.568s2.926 23.787 8.117 33.994l-0.197-0.427c10.013 19.575 244.11 478.407 667.948 478.407s658.186-458.832 667.948-478.407c4.994-9.78 7.92-21.332 7.92-33.568s-2.926-23.787-8.117-33.994l0.197 0.427zM675.858 873.96c-272.446 0-457.030-266.138-514.553-361.809 57.523-95.671 242.107-361.809 514.553-361.809s457.13 266.288 514.553 361.809c-57.523 95.521-242.157 361.659-514.553 361.659z","M675.858 211.619c-165.896 0-300.381 134.485-300.381 300.381s134.485 300.381 300.381 300.381c165.896 0 300.381-134.485 300.381-300.381v0c-0.199-165.816-134.565-300.182-300.362-300.381l-0.020-0zM675.858 662.191c-82.948 0-150.191-67.243-150.191-150.191s67.243-150.191 150.191-150.191c82.948 0 150.191 67.243 150.191 150.191v0c0 82.948-67.243 150.191-150.191 150.191v0z"],"attrs":[{},{}],"width":1352,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye"]},"attrs":[{},{}],"properties":{"order":34,"id":13,"name":"eye","prevSize":32,"code":59664},"setIdx":0,"setId":0,"iconIdx":19},{"icon":{"paths":["M1123.235 921.346l-217.634-208.847c5.132 1.805 11.050 2.848 17.211 2.848 15.851 0 30.089-6.902 39.875-17.864l0.046-0.052c37.481-38.161 71.036-80.412 99.866-125.951l1.835-3.103c5.666-8.976 9.029-19.899 9.029-31.606 0-11.056-2.999-21.412-8.227-30.299l0.153 0.28c-7.952-13.359-194.813-327.802-528.499-327.802h-1.312c-35.996 0.005-71.127 3.696-105.040 10.716l3.34-0.578c-18.092 3.787-32.895 15.391-40.954 31.036l-0.156 0.333-212.306-203.798c-10.7-10.287-25.264-16.622-41.308-16.622-32.938 0-59.64 26.702-59.64 59.64 0 16.894 7.024 32.148 18.312 42.999l0.020 0.019 162.768 156.208c-5.287 1.648-9.884 3.809-14.111 6.501l0.235-0.14c-95.97 62.868-175.328 142.911-235.543 236.445l-1.89 3.135c-5.835 9.056-9.303 20.115-9.303 31.985 0 11.035 2.997 21.371 8.222 30.236l-0.152-0.279c7.952 13.359 194.813 327.802 529.175 327.802 107.604-0.9 207.542-32.95 291.456-87.555l-2.1 1.281c1.312-0.835 2.385-1.908 3.618-2.863l210.398 201.929c10.7 10.287 25.264 16.622 41.308 16.622 32.938 0 59.64-26.702 59.64-59.64 0-16.894-7.024-32.148-18.312-42.999l-0.020-0.019zM536.729 298.223c210.716 0 354.679 168.573 405.529 238.546-20.464 28.603-41.631 53.756-64.584 77.15l0.097-0.1c-10.193 10.583-16.471 24.997-16.471 40.878 0 6.315 0.993 12.399 2.831 18.103l-0.116-0.417-385.213-369.747c17.213-2.809 37.053-4.414 57.267-4.414 0.232 0 0.464 0 0.696 0.001l-0.036-0zM480.591 505.758c6.937-5.309 12.58-11.943 16.621-19.556l0.156-0.323 89.972 86.354c-14.804 12.070-33.904 19.382-54.711 19.382-7.266 0-14.323-0.892-21.069-2.571l0.598 0.126c-21.583-3.776-39.081-18.284-47.003-37.713l-0.149-0.414c-0.942-3.344-1.484-7.185-1.484-11.153 0-13.911 6.658-26.266 16.961-34.054l0.107-0.078zM536.729 775.315c-210.716 0-354.4-168.215-405.211-238.546 49.32-68.027 109.037-125.034 177.432-169.904l2.551-1.571c11.947-7.883 20.761-19.68 24.668-33.535l0.101-0.418 78.482 75.301c-2.135 1.142-3.89 2.209-5.584 3.359l0.217-0.139c-39.593 30.204-64.883 77.409-64.883 130.521 0 16.497 2.44 32.424 6.979 47.441l-0.301-1.159c21.213 61.143 72.589 106.713 135.851 119.32l1.154 0.192c13.578 3.209 29.168 5.048 45.187 5.048 51.658 0 98.848-19.131 134.872-50.694l-0.235 0.202c1.923-1.788 3.692-3.67 5.327-5.665l0.080-0.1 67.389 64.686c-58.645 34.055-128.851 54.577-203.762 55.657l-0.314 0.004z"],"attrs":[{}],"width":1142,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye-1"]},"attrs":[{}],"properties":{"order":24,"id":12,"name":"eye-1","prevSize":32,"code":59665},"setIdx":0,"setId":0,"iconIdx":20},{"icon":{"paths":["M470.315 379.861v136.192c52.181 11.819 98.603 31.189 147.2 44.587v-136.405c-52.011-11.605-98.773-30.976-147.2-44.416zM916.907 133.888c-67.939 35.792-147.729 58.874-232.376 63.923l-1.608 0.077c-107.008-0.213-195.584-69.76-330.368-69.76-0.457-0.002-0.998-0.003-1.539-0.003-48.265 0-94.476 8.794-137.118 24.867l2.678-0.885c4.705-11.905 7.433-25.695 7.433-40.122 0-61.856-50.144-112-112-112s-112 50.144-112 112c0 37.882 18.807 71.371 47.593 91.64l0.355 0.237v772.267c-0 0.038-0 0.083-0 0.128 0 26.439 21.433 47.872 47.872 47.872 0.045 0 0.090-0 0.135-0l-0.007 0h32c0.038 0 0.083 0 0.128 0 26.439 0 47.872-21.433 47.872-47.872 0-0.045-0-0.090-0-0.135l0 0.007v-188.928c64.268-28.012 139.144-44.31 217.827-44.31 3.851 0 7.693 0.039 11.525 0.117l-0.573-0.009c107.179 0 195.584 69.589 330.368 69.589 92.324-0.765 177.356-31.352 246.099-82.581l-1.107 0.789c16.771-11.705 27.605-30.909 27.605-52.644 0-0.047-0-0.094-0-0.141l0 0.007v-486.144c-0.078-35.287-28.702-63.863-64-63.863-9.72 0-18.935 2.167-27.186 6.044l0.391-0.165zM323.157 651.008c-54.473 5.68-104.346 17.389-151.58 34.589l4.38-1.394v-140.8c42.966-16.959 92.83-29.258 144.754-34.612l2.446-0.204zM911.957 382.208c-42.344 20.263-91.614 36.787-143.125 47.106l-4.075 0.681v141.867c55.26-7.286 105.051-25.69 148.773-52.924l-1.573 0.913v140.8c-41.573 28.653-91.64 48.031-145.739 54.055l-1.461 0.132v-142.976c-14.605 2.234-31.455 3.51-48.603 3.51-35.177 0-69.1-5.37-100.994-15.334l2.396 0.645v134.912c-39.685-15.094-88.92-29.775-139.395-41.183l-7.805-1.483v-136.875c-28.906-6.694-62.098-10.532-96.186-10.532-17.976 0-35.702 1.067-53.12 3.141l2.106-0.204v-140.032c-55.565 9.583-104.997 24.104-151.88 43.532l4.68-1.718v-140.8c42.614-19.83 92.097-35.166 143.91-43.55l3.29-0.439v142.976c14.417-2.165 31.054-3.401 47.98-3.401 35.4 0 69.537 5.408 101.63 15.442l-2.41-0.649v-134.741c39.858 15.224 89.098 29.908 139.605 41.235l7.595 1.431v136.704c26.239 6.45 56.363 10.149 87.35 10.149 21.13 0 41.859-1.72 62.054-5.028l-2.204 0.298v-143.872c55.763-10.757 105.071-26.328 151.746-46.79l-4.546 1.777z"],"attrs":[{}],"width":1008,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["flag"]},"attrs":[{}],"properties":{"order":25,"id":11,"name":"flag","prevSize":32,"code":59666},"setIdx":0,"setId":0,"iconIdx":21},{"icon":{"paths":["M460.771 358.396h102.293v-102.251h-102.293zM511.917 921.749c-0.012 0-0.027 0-0.041 0-226.23 0-409.625-183.395-409.625-409.625s183.395-409.625 409.625-409.625c226.215 0 409.601 183.372 409.625 409.581l0 0.002c0 226.23-183.395 409.625-409.625 409.625v0zM511.876-0.207c-282.717 0.071-511.876 229.274-511.876 512 0 282.77 229.23 512 512 512 282.697 0 511.882-229.113 512-511.782l0-0.011c0-282.77-229.23-512-512-512v0zM460.854 768.021h102.21v-307.25h-102.21z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["information"]},"attrs":[{}],"properties":{"order":26,"id":10,"name":"information","prevSize":32,"code":59667},"setIdx":0,"setId":0,"iconIdx":22},{"icon":{"paths":["M22.52 566.594l435.159 434.886c13.85 13.942 33.032 22.572 54.23 22.572s40.38-8.63 54.226-22.567l0.004-0.004 72.291-72.291c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-308.501-308.41 308.365-308.365c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-71.973-72.792c-13.85-13.942-33.032-22.572-54.23-22.572s-40.38 8.63-54.226 22.567l-0.004 0.004-435.023 434.932c-14.154 13.904-22.927 33.246-22.927 54.637 0 21.234 8.643 40.449 22.604 54.319l0.004 0.004z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["left"]},"attrs":[{}],"properties":{"order":27,"id":9,"name":"left","prevSize":32,"code":59668},"setIdx":0,"setId":0,"iconIdx":23},{"icon":{"paths":["M558.549 0.469l-465.451-0.469c-51.358 0.145-92.954 41.74-93.099 93.085l-0 0.014v837.803c0.145 51.358 41.74 92.954 93.085 93.099l0.014 0h465.451c51.358-0.145 92.954-41.74 93.099-93.085l0-0.014v-837.803c-0.194-51.199-41.744-92.629-92.97-92.629-0.045 0-0.090 0-0.136 0l0.007-0zM558.549 837.803h-465.451v-651.605h465.451z"],"attrs":[{}],"width":652,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone"]},"attrs":[{}],"properties":{"order":28,"id":8,"name":"phone","prevSize":32,"code":59669},"setIdx":0,"setId":0,"iconIdx":24},{"icon":{"paths":["M638.368 566.619l-435.042 434.86c-13.855 13.932-33.037 22.554-54.232 22.554s-40.377-8.622-54.229-22.55l-0.003-0.003-72.295-72.295c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 308.378-308.378-308.378-308.378c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 71.976-72.795c13.855-13.932 33.037-22.554 54.232-22.554s40.377 8.622 54.229 22.55l0.003 0.003 435.042 434.723c14.1 13.896 22.836 33.203 22.836 54.549 0 21.189-8.607 40.368-22.515 54.232l-0.002 0.002z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["right"]},"attrs":[{}],"properties":{"order":29,"id":7,"name":"right","prevSize":32,"code":59670},"setIdx":0,"setId":0,"iconIdx":25},{"icon":{"paths":["M227.579 579.116v227.579l398.211 217.305 398.211-217.305v-227.579l-398.211 217.358zM625.789-0l-625.789 341.316 625.789 341.316 512-279.311v393.1h113.789v-455.105z"],"attrs":[{}],"width":1252,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["school"]},"attrs":[{}],"properties":{"order":30,"id":6,"name":"school","prevSize":32,"code":59671},"setIdx":0,"setId":0,"iconIdx":26},{"icon":{"paths":["M1009.922 885.314l-199.391-199.391c-8.672-8.647-20.639-13.993-33.854-13.993-0.096 0-0.192 0-0.288 0.001l0.015-0h-32.592c54.858-69.783 87.982-158.908 87.982-255.769 0-229.618-186.142-415.76-415.76-415.76s-415.76 186.142-415.76 415.76c0 229.618 186.142 415.76 415.76 415.76 96.861 0 185.986-33.123 256.666-88.661l-0.897 0.679v32.464c-0 0.081-0.001 0.177-0.001 0.273 0 13.216 5.346 25.182 13.994 33.855l-0.001-0.001 199.391 199.391c8.657 8.711 20.645 14.103 33.893 14.103s25.236-5.392 33.891-14.1l0.002-0.002 56.609-56.609c8.774-8.732 14.204-20.817 14.204-34.171 0-13.184-5.292-25.131-13.869-33.834l0.006 0.006zM415.973 672.016c-141.361 0-255.957-114.596-255.957-255.957s114.596-255.957 255.957-255.957c141.361 0 255.957 114.596 255.957 255.957v0c-0.049 141.325-114.626 255.872-255.957 255.872l-0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["search"]},"attrs":[{}],"properties":{"order":31,"id":5,"name":"search","prevSize":32,"code":59672},"setIdx":0,"setId":0,"iconIdx":27},{"icon":{"paths":["M1060.923 354.485h-362.082l-110.034-328.386c-5.769-15.366-20.337-26.102-37.413-26.102s-31.644 10.737-37.322 25.828l-0.091 0.275-110.034 328.386h-364.574c-21.717 0.069-39.304 17.656-39.374 39.367l-0 0.007c-0 0.051-0.001 0.111-0.001 0.172 0 2.3 0.268 4.537 0.775 6.682l-0.039-0.196c1.082 11.588 7.245 21.545 16.211 27.732l0.127 0.083 297.753 209.856-114.363 332.062c-1.356 3.823-2.14 8.232-2.14 12.824 0 12.816 6.104 24.206 15.563 31.422l0.096 0.070c5.913 5.322 13.556 8.829 21.991 9.588l0.147 0.011c9.263-0.701 17.658-3.918 24.649-8.961l-0.142 0.098 290.483-207.038 290.483 207.038c6.807 5.047 15.229 8.284 24.374 8.857l0.132 0.007c8.688-0.56 16.438-4.176 22.272-9.773l-0.012 0.012c9.602-7.187 15.75-18.533 15.75-31.315 0-4.66-0.817-9.13-2.316-13.273l0.086 0.272-114.159-331.898 295.139-211.694 7.148-6.167c7.108-6.72 11.823-15.905 12.772-26.182l0.012-0.163c-1.204-22.063-19.388-39.497-41.643-39.497-0.078 0-0.156 0-0.234 0.001l0.012-0z"],"attrs":[{}],"width":1103,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star"]},"attrs":[{}],"properties":{"order":32,"id":4,"name":"star","prevSize":32,"code":59673},"setIdx":0,"setId":0,"iconIdx":28},{"icon":{"paths":["M264.124 1024l-3.988-0.315c-45.874-4.728-81.349-43.172-81.349-89.9 0-9.949 1.608-19.523 4.579-28.476l-0.183 0.638 89.58-260.661-235.092-165.554c-19.618-13.599-33.145-34.797-36.332-59.244l-0.046-0.43c-0.823-4.244-1.294-9.125-1.294-14.115 0-0.018 0-0.036 0-0.054l-0 0.003c0.197-48.36 39.308-87.52 87.63-87.796l0.026-0h289.553l86.747-258.842c12.356-34.779 44.982-59.235 83.32-59.235 37.789 0 70.029 23.761 82.593 57.157l0.201 0.608 87.272 260.311h287.525c0.011-0 0.025-0 0.038-0 47.863 0 86.99 37.407 89.741 84.58l0.011 0.243v3.848l-0.315 3.883c-2.124 22.565-12.304 42.418-27.594 56.944l-0.039 0.036-11.963 10.074-233.098 167.233 89.755 261.011c3.161 8.633 4.99 18.602 4.99 28.997 0 27.516-12.812 52.041-32.795 67.933l-0.177 0.136c-13.364 11.803-30.658 19.438-49.692 20.728l-0.258 0.014-3.183 0.21-3.148-0.175c-18.973-1.079-36.226-7.647-50.416-18.125l0.256 0.181-229.565-163.77-230.369 164.12c-13.682 9.851-30.475 16.214-48.672 17.473l-0.298 0.017zM812.414 940.051v0.28zM282.243 939.876v0zM838.403 920.498v0zM139.39 423.032l258.003 181.889-97.94 285.006 247.929-176.642 247.649 176.502-97.94-284.586 254.015-182.169h-309.246l-94.442-282.243-94.722 282.243zM1004.972 423.032v0zM97.346 393.405l0.56 0.42z"],"attrs":[{}],"width":1095,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star-1"]},"attrs":[{}],"properties":{"order":33,"id":3,"name":"star-1","prevSize":32,"code":59674},"setIdx":0,"setId":0,"iconIdx":29},{"icon":{"paths":["M662.613 361.941c-7.552-20.181 201.344-206.72 79.531-357.888-28.501-35.328-125.227 169.259-262.528 261.845-75.776 51.2-252.075 159.872-252.075 219.989v389.461c0 72.32 279.552 148.864 491.989 148.864 77.867 0 190.677-487.851 190.677-565.333s-240.128-76.459-247.467-96.725zM170.624 367.36c-0.681-0.010-1.486-0.016-2.292-0.016-93.126 0-168.619 75.493-168.619 168.619 0 3.187 0.088 6.354 0.263 9.498l-0.019-0.437v275.797c-0.161 2.71-0.252 5.878-0.252 9.068 0 90.015 72.972 162.987 162.987 162.987 2.79 0 5.564-0.070 8.32-0.209l-0.387 0.016c37.376 0-56.875-32.555-56.875-128.555v-362.667c0-100.565 94.251-134.187 56.875-134.187z"],"attrs":[{}],"width":910,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["thumbs-up"]},"attrs":[{}],"properties":{"order":12,"id":2,"name":"thumbs-up","prevSize":32,"code":59675},"setIdx":0,"setId":0,"iconIdx":30},{"icon":{"paths":["M511.488 0c-282.55 0.292-511.488 229.41-511.488 512 0 282.77 229.23 512 512 512s512-229.23 512-512l-0 0c0-0.076 0-0.166 0-0.257 0-282.628-229.116-511.744-511.744-511.744-0.27 0-0.54 0-0.81 0.001l0.042-0zM512 921.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM537.6 256h-76.8v307.2l268.8 161.28 38.4-63.147-230.4-136.533z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["time"]},"attrs":[{}],"properties":{"order":9,"id":1,"name":"time","prevSize":32,"code":59676},"setIdx":0,"setId":0,"iconIdx":31},{"icon":{"paths":["M1104.017 128.018h-207.987v-80.017c0-26.51-21.491-48.001-48.001-48.001v0h-544.040c-26.51 0-48.001 21.491-48.001 48.001v0 80.017h-207.987c-26.51 0-48.001 21.491-48.001 48.001v0 111.986c7.076 85.462 54.363 158.548 122.682 200.96l1.112 0.643c61.778 44.226 136.678 74.099 217.854 83.23l2.133 0.195c34.389 59.486 80.159 108.69 134.709 145.998l1.518 0.98v144.002h-96.001c-3.854-0.457-8.318-0.718-12.843-0.718-62.746 0-113.776 50.163-115.172 112.574l-0.002 0.13v24c0 13.255 10.745 24 24 24v0h592.041c13.255 0 24-10.745 24-24v0-24c-1.399-62.54-52.429-112.704-115.175-112.704-4.525 0-8.989 0.261-13.378 0.768l0.535-0.050h-96.001v-144.002c56.068-38.356 101.826-87.64 135.041-145.086l1.137-2.132c83.314-9.166 158.252-38.973 221.451-84.147l-1.416 0.962c69.366-43.121 116.621-116.171 123.729-200.646l0.065-0.957v-111.986c0-26.51-21.491-48.001-48.001-48.001v0zM198.627 385.59c-35.829-20.914-61.682-55.601-70.437-96.621l-0.172-0.964v-32.016h128.402c1.638 61.997 10.873 121.145 26.808 177.479l-1.223-5.061c-31.815-11.002-59.407-25.499-84.329-43.47l0.951 0.653zM1024 288.005c-9.695 41.665-35.309 76.091-69.932 97.202l-0.677 0.383c-24.040 17.319-51.713 31.817-81.346 42.129l-2.271 0.688c14.711-51.273 23.946-110.421 25.564-171.467l0.020-0.952h128.594z"],"attrs":[{}],"width":1152,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["trophy"]},"attrs":[{}],"properties":{"order":10,"id":0,"name":"trophy","prevSize":32,"code":59677},"setIdx":0,"setId":0,"iconIdx":32}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"gridSize":16}} \ No newline at end of file +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M947.023 423.724h-834.737c-42.513 0-76.977 34.464-76.977 76.977s34.464 76.977 76.977 76.977h834.737c42.513 0 76.977-34.464 76.977-76.977s-34.464-76.977-76.977-76.977h0z"],"attrs":[{}],"width":1059,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["decrease"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":2,"id":34,"name":"decrease","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M944.305 432.195h-352.501v-352.501c-0.083-44.019-35.777-79.674-79.803-79.695l-0.002-0c-43.994 0.083-79.632 35.735-79.695 79.725l-0 0.006v352.464h-352.537c-44.055 0-79.768 35.713-79.768 79.768s35.713 79.768 79.768 79.768v0h352.501v352.574c0 44.055 35.713 79.768 79.768 79.768s79.768-35.713 79.768-79.768l-0 0v-352.574h352.501c44.055 0 79.768-35.713 79.768-79.768s-35.713-79.768-79.768-79.768l0 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["add"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":3,"id":33,"name":"add","prevSize":32,"code":59649},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M358.4 0c-0.076-0-0.166-0-0.256-0-197.797 0-358.144 160.347-358.144 358.144 0 0.090 0 0.18 0 0.27l-0-0.014c0 268.8 358.4 665.6 358.4 665.6s358.4-396.8 358.4-665.6c0-0.076 0-0.166 0-0.256 0-197.797-160.347-358.144-358.144-358.144-0.090 0-0.18 0-0.27 0l0.014-0zM358.4 486.4c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128v0c0 70.692-57.308 128-128 128h0z"],"attrs":[{}],"width":717,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["address"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":4,"id":32,"name":"address","prevSize":32,"code":59650},"setIdx":0,"setId":2,"iconIdx":2},{"icon":{"paths":["M447.993 511.981c141.38 0 255.991-114.611 255.991-255.991s-114.611-255.991-255.991-255.991c-141.38 0-255.991 114.611-255.991 255.991v-0c0 141.38 114.611 255.991 255.991 255.991v-0zM639.585 577.164l-95.609 382.81-63.988-272.006 63.988-111.998h-191.965l63.988 111.998-63.988 272.006-95.609-382.773c-142.815 6.542-256.155 123.796-256.401 267.577l-0 0.024v179.197h895.986v-179.197c-0.246-143.806-113.586-261.059-255.814-267.58l-0.587-0.021z"],"attrs":[{}],"width":896,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["agent"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":5,"id":31,"name":"agent","prevSize":32,"code":59651},"setIdx":0,"setId":2,"iconIdx":3},{"icon":{"paths":["M889.022 7.054l-831.526 383.772c-34.358 15.411-57.857 49.317-57.857 88.711 0 53.291 43.002 96.539 96.2 96.936l0.038 0h351.649v351.801c0.219 53.372 43.536 96.553 96.938 96.553 39.559 0 73.583-23.696 88.654-57.668l0.245-0.618 383.621-831.564c3.826-10.169 6.041-21.922 6.041-34.192 0-55.109-44.674-99.783-99.783-99.783-12.281 0-24.044 2.219-34.909 6.277l0.689-0.226z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["arrow"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":14,"id":30,"name":"arrow","prevSize":32,"code":59652},"setIdx":0,"setId":2,"iconIdx":4},{"icon":{"paths":["M448.963 503.181c138.95 0 251.59-112.641 251.59-251.59s-112.641-251.59-251.59-251.59v-0c-138.95 0-251.59 112.641-251.59 251.59s112.641 251.59 251.59 251.59v0zM448.963 119.488v0c72.958-0 132.103 59.144 132.103 132.103s-59.144 132.103-132.103 132.103c-72.958 0-132.103-59.144-132.103-132.103 0-0.013 0-0.026 0-0.039l-0 0.002c-0-72.938 59.128-132.065 132.065-132.065 0.013 0 0.026 0 0.039 0l-0.002-0z","M448.963 566.069c-167.938 0-448.963 50.013-448.963 217.355v240.576h893.721v-240.576c0-167.305-276.82-217.355-444.758-217.355zM774.233 904.475h-654.931v-121.051c0-40.263 142.671-97.83 329.475-97.83v0c186.804 0 325.27 57.567 325.27 97.83z"],"attrs":[{},{}],"width":894,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["avatar"],"colorPermutations":{"12552552551":[{},{}]}},"attrs":[{},{}],"properties":{"order":15,"id":29,"name":"avatar","prevSize":32,"code":59653},"setIdx":0,"setId":2,"iconIdx":5},{"icon":{"paths":["M908.486 692.817c-1.1-0.834-112.139-84.872-112.139-362.886 0-182.216-147.715-329.931-329.931-329.931s-329.931 147.715-329.931 329.931v0c0 278.014-111.039 362.052-111.191 362.242-15.359 10.347-25.326 27.674-25.326 47.328 0 31.414 25.465 56.881 56.878 56.885l819.14 0c25.031-0.194 46.179-16.601 53.474-39.229l0.112-0.401c1.696-5.184 2.675-11.15 2.675-17.344 0-19.089-9.291-36.008-23.598-46.482l-0.162-0.113zM174.901 682.616c47.923-94.131 76-205.282 76-322.99 0-10.443-0.221-20.835-0.659-31.17l0.050 1.475c0-119.383 96.779-216.162 216.162-216.162s216.162 96.779 216.162 216.162l0 0c-0.387 8.856-0.608 19.244-0.608 29.684 0 117.708 28.062 228.862 77.862 327.136l-1.9-4.135z","M573.853 872.459c-8.181-4.825-18.026-7.675-28.536-7.675-20.904 0-39.175 11.276-49.061 28.077l-0.145 0.266c-6.013 10.266-16.989 17.051-29.55 17.051-6.311 0-12.222-1.713-17.293-4.699l0.16 0.087c-5.181-3.025-9.376-7.22-12.314-12.241l-0.086-0.16c-10.022-17.142-28.338-28.474-49.3-28.474-31.434 0-56.916 25.482-56.916 56.916 0 10.472 2.828 20.283 7.762 28.711l-0.145-0.269c26.074 44.41 73.596 73.753 127.972 73.753s101.897-29.344 127.594-73.059l0.377-0.694c4.808-8.17 7.648-17.998 7.648-28.489 0-20.831-11.197-39.047-27.901-48.958l-0.263-0.144z"],"attrs":[{},{}],"width":932,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["bell"],"colorPermutations":{"12552552551":[{},{}]}},"attrs":[{},{}],"properties":{"order":16,"id":28,"name":"bell","prevSize":32,"code":59654},"setIdx":0,"setId":2,"iconIdx":6},{"icon":{"paths":["M307.2 460.8h-102.4v102.4h102.4zM512 460.8h-102.4v102.4h102.4zM716.8 460.8h-102.4v102.4h102.4zM819.2 102.4h-51.2v-102.4h-102.4v102.4h-409.6v-102.4h-102.4v102.4h-51.2c-56.277 0.024-101.889 45.651-101.889 101.931 0 0.165 0 0.33 0.001 0.495l-0-0.025-0.512 716.8c0 56.554 45.846 102.4 102.4 102.4v0h716.8c56.486-0.169 102.231-45.914 102.4-102.384l0-0.016v-716.8c-0.169-56.486-45.914-102.231-102.384-102.4l-0.016-0zM819.2 921.6h-716.8v-563.2h716.8z"],"attrs":[{}],"width":922,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calender"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":17,"id":27,"name":"calender","prevSize":32,"code":59655},"setIdx":0,"setId":2,"iconIdx":7},{"icon":{"paths":["M910.222 0h-796.444c-62.838 0-113.778 50.94-113.778 113.778v0 796.444c0 62.838 50.94 113.778 113.778 113.778v0h796.444c62.838 0 113.778-50.94 113.778-113.778v0-796.444c0-62.838-50.94-113.778-113.778-113.778v0zM398.222 796.444l-284.444-284.444 80.213-80.213 204.231 203.662 431.787-431.787 80.213 80.782z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox-1"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":18,"id":26,"name":"checkbox-1","prevSize":32,"code":59656},"setIdx":0,"setId":2,"iconIdx":8},{"icon":{"paths":["M910.222 113.778v796.444h-796.444v-796.444h796.444zM910.222 0h-796.444c-62.76 0.193-113.584 51.018-113.778 113.759l-0 0.019v796.444c0.193 62.76 51.018 113.584 113.759 113.778l0.019 0h796.444c62.76-0.193 113.584-51.018 113.778-113.759l0-0.019v-796.444c-0.193-62.76-51.018-113.584-113.759-113.778l-0.019-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["checkbox"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":19,"id":25,"name":"checkbox","prevSize":32,"code":59657},"setIdx":0,"setId":2,"iconIdx":9},{"icon":{"paths":["M512 1024c-282.77 0-512-229.23-512-512s229.23-512 512-512c282.77 0 512 229.23 512 512v0c0 282.77-229.23 512-512 512h-0zM276.821 547.072l279.723 279.723c8.937 8.992 21.312 14.557 34.987 14.557s26.050-5.565 34.984-14.554l0.002-0.002 35.115-35.115c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-209.749-209.749 209.749-209.749c8.992-8.937 14.557-21.312 14.557-34.987s-5.565-26.050-14.554-34.984l-0.002-0.002-35.115-35.115c-8.937-8.992-21.312-14.557-34.987-14.557s-26.050 5.565-34.984 14.554l-0.002 0.002-279.723 279.765c-8.993 8.976-14.557 21.385-14.557 35.093s5.564 26.118 14.556 35.093l0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-left"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":20,"id":24,"name":"circle-left","prevSize":32,"code":59658},"setIdx":0,"setId":2,"iconIdx":10},{"icon":{"paths":["M512 1024c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512v0c0 282.77 229.23 512 512 512v0zM747.136 547.115l-279.723 279.723c-8.937 8.992-21.312 14.557-34.987 14.557s-26.050-5.565-34.984-14.554l-0.002-0.002-35.115-35.115c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 209.749-209.749-209.792-209.792c-8.992-8.937-14.557-21.312-14.557-34.987s5.565-26.050 14.554-34.984l0.002-0.002 35.115-35.115c8.937-8.992 21.312-14.557 34.987-14.557s26.050 5.565 34.984 14.554l0.002 0.002 279.723 279.723c9.019 8.98 14.6 21.406 14.6 35.136 0 13.709-5.564 26.118-14.556 35.093l-0.001 0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["circle-right"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":21,"id":23,"name":"circle-right","prevSize":32,"code":59659},"setIdx":0,"setId":2,"iconIdx":11},{"icon":{"paths":["M843.123 30.996l-331.098 331.098-331.098-331.098c-19.185-19.146-45.668-30.985-74.916-30.985s-55.731 11.839-74.918 30.987l0.002-0.002c-19.117 19.18-30.937 45.643-30.937 74.868s11.82 55.687 30.94 74.87l-0.003-0.003 331.050 331.098-331.050 331.244c-19.191 19.173-31.063 45.67-31.063 74.94 0 58.504 47.427 105.93 105.93 105.93 29.234 0 55.702-11.842 74.868-30.991l-0.001 0.001 331.098-331.098 331.196 331.147c19.046 18.46 45.049 29.839 73.71 29.839 58.521 0 105.961-47.44 105.961-105.961 0-28.661-11.379-54.663-29.865-73.737l0.027 0.028-331.196-331.196 331.098-331.098c18.46-19.046 29.839-45.049 29.839-73.71 0-58.521-47.44-105.961-105.961-105.961-28.661 0-54.663 11.379-73.737 29.865l0.028-0.027z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["close"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":22,"id":22,"name":"close","prevSize":32,"code":59660},"setIdx":0,"setId":2,"iconIdx":12},{"icon":{"paths":["M895.851 0h-767.872c-70.681 0-127.979 57.298-127.979 127.979v0 575.904c0 70.681 57.298 127.979 127.979 127.979v0h191.968v167.993c-0 0.025-0 0.056-0 0.086 0 13.288 10.772 24.060 24.060 24.060 5.399 0 10.382-1.778 14.397-4.781l-0.063 0.045 249.558-187.403h287.952c70.681 0 127.979-57.298 127.979-127.979v0-575.904c0-70.681-57.298-127.979-127.979-127.979l0 0zM604.699 575.904h-371.821v-127.979h371.821zM791.42 296.697h-558.84v-127.979h558.84z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["comment"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":23,"id":21,"name":"comment","prevSize":32,"code":59661},"setIdx":0,"setId":2,"iconIdx":13},{"icon":{"paths":["M646.741 485.035v-323.371l-161.707-161.664-161.664 161.664v107.819h-323.371v754.517h970.112v-538.965zM215.595 916.224h-107.819v-107.819h107.819zM215.595 700.629h-107.819v-107.776h107.819zM215.595 485.035h-107.819v-107.776h107.819zM538.965 916.181h-107.819v-107.776h107.776zM538.965 700.587h-107.819v-107.733h107.776zM538.965 484.992h-107.819v-107.733h107.776zM538.965 269.397h-107.819v-107.733h107.776zM862.336 916.139h-107.819v-107.733h107.776zM862.336 700.544h-107.819v-107.691h107.776z"],"attrs":[{}],"width":970,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["company"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":24,"id":20,"name":"company","prevSize":32,"code":59662},"setIdx":0,"setId":2,"iconIdx":14},{"icon":{"paths":["M587.199 55.924l-55.924-55.924h-279.618l-55.924 55.924h-195.733v111.847h782.932v-111.847z","M33.107 870.508c1.405 85.070 70.697 153.493 155.97 153.493 0.217 0 0.434-0 0.65-0.001l-0.034 0h403.396c0.182 0.001 0.398 0.001 0.614 0.001 85.338 0 154.671-68.528 155.971-153.557l0.001-0.122v-647.895h-716.569zM144.954 332.112h493.023v538.023c-0.295 24.483-20.211 44.217-44.736 44.217-0.001 0-0.002-0-0.003-0l-403.21 0c-0.101 0.001-0.22 0.001-0.34 0.001-24.499 0-44.399-19.692-44.735-44.112l-0-0.032z","M288.939 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z","M493.993 834.903c30.886 0 55.924-25.038 55.924-55.924v0-316.901c0-30.886-25.038-55.924-55.924-55.924s-55.924 25.038-55.924 55.924v0 316.901c0 30.886 25.038 55.924 55.924 55.924v0z"],"attrs":[{},{},{},{}],"width":783,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["delet"],"colorPermutations":{"12552552551":[{},{},{},{}]}},"attrs":[{},{},{},{}],"properties":{"order":6,"id":18,"name":"delet","prevSize":32,"code":59663},"setIdx":0,"setId":2,"iconIdx":15},{"icon":{"paths":["M563.115 854.229l407.851-408.107c13.086-12.984 21.186-30.975 21.186-50.858 0-19.714-7.963-37.568-20.848-50.521l0.003 0.003-68.139-68.139c-12.998-13.055-30.985-21.133-50.859-21.133-19.725 0-37.592 7.958-50.564 20.838l0.004-0.004-289.536 289.621-289.195-289.195c-13.008-13.118-31.038-21.24-50.965-21.24-19.778 0-37.688 8.001-50.669 20.943l0.002-0.002-0.299 0.299-67.968 67.499c-13.075 12.989-21.168 30.978-21.168 50.859 0 19.71 7.956 37.563 20.831 50.521l-0.004-0.004 408.235 408.32c13.040 13.276 31.18 21.503 51.243 21.503 19.596 0 37.358-7.849 50.315-20.575l-0.011 0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["down"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":7,"id":17,"name":"down","prevSize":32,"code":59664},"setIdx":0,"setId":2,"iconIdx":16},{"icon":{"paths":["M864 0c88.366 0 160 71.634 160 160 0 36.2-12.022 69.593-32.292 96.402l0.292-0.402-64 64-224-224 64-64c26.324-19.976 59.637-32 95.758-32 0.085 0 0.17 0 0.255 0l-0.013-0zM64 736l-64 288 288-64 592.171-592-224.171-224.128zM715.563 363.563l-448 448-55.168-55.125 448-448z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["edit"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":8,"id":16,"name":"edit","prevSize":32,"code":59665},"setIdx":0,"setId":2,"iconIdx":17},{"icon":{"paths":["M1123.235 921.346l-217.634-208.847c5.132 1.805 11.050 2.848 17.211 2.848 15.851 0 30.089-6.902 39.875-17.864l0.046-0.052c37.481-38.161 71.036-80.412 99.866-125.951l1.835-3.103c5.666-8.976 9.029-19.899 9.029-31.606 0-11.056-2.999-21.412-8.227-30.299l0.153 0.28c-7.952-13.359-194.813-327.802-528.499-327.802h-1.312c-35.996 0.005-71.127 3.696-105.040 10.716l3.34-0.578c-18.092 3.787-32.895 15.391-40.954 31.036l-0.156 0.333-212.306-203.798c-10.7-10.287-25.264-16.622-41.308-16.622-32.938 0-59.64 26.702-59.64 59.64 0 16.894 7.024 32.148 18.312 42.999l0.020 0.019 162.768 156.208c-5.287 1.648-9.884 3.809-14.111 6.501l0.235-0.14c-95.97 62.868-175.328 142.911-235.543 236.445l-1.89 3.135c-5.835 9.056-9.303 20.115-9.303 31.985 0 11.035 2.997 21.371 8.222 30.236l-0.152-0.279c7.952 13.359 194.813 327.802 529.175 327.802 107.604-0.9 207.542-32.95 291.456-87.555l-2.1 1.281c1.312-0.835 2.385-1.908 3.618-2.863l210.398 201.929c10.7 10.287 25.264 16.622 41.308 16.622 32.938 0 59.64-26.702 59.64-59.64 0-16.894-7.024-32.148-18.312-42.999l-0.020-0.019zM536.729 298.223c210.716 0 354.679 168.573 405.529 238.546-20.464 28.603-41.631 53.756-64.584 77.15l0.097-0.1c-10.193 10.583-16.471 24.997-16.471 40.878 0 6.315 0.993 12.399 2.831 18.103l-0.116-0.417-385.213-369.747c17.213-2.809 37.053-4.414 57.267-4.414 0.232 0 0.464 0 0.696 0.001l-0.036-0zM480.591 505.758c6.937-5.309 12.58-11.943 16.621-19.556l0.156-0.323 89.972 86.354c-14.804 12.070-33.904 19.382-54.711 19.382-7.266 0-14.323-0.892-21.069-2.571l0.598 0.126c-21.583-3.776-39.081-18.284-47.003-37.713l-0.149-0.414c-0.942-3.344-1.484-7.185-1.484-11.153 0-13.911 6.658-26.266 16.961-34.054l0.107-0.078zM536.729 775.315c-210.716 0-354.4-168.215-405.211-238.546 49.32-68.027 109.037-125.034 177.432-169.904l2.551-1.571c11.947-7.883 20.761-19.68 24.668-33.535l0.101-0.418 78.482 75.301c-2.135 1.142-3.89 2.209-5.584 3.359l0.217-0.139c-39.593 30.204-64.883 77.409-64.883 130.521 0 16.497 2.44 32.424 6.979 47.441l-0.301-1.159c21.213 61.143 72.589 106.713 135.851 119.32l1.154 0.192c13.578 3.209 29.168 5.048 45.187 5.048 51.658 0 98.848-19.131 134.872-50.694l-0.235 0.202c1.923-1.788 3.692-3.67 5.327-5.665l0.080-0.1 67.389 64.686c-58.645 34.055-128.851 54.577-203.762 55.657l-0.314 0.004z"],"attrs":[{}],"width":1142,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye-1"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":9,"id":15,"name":"eye-1","prevSize":32,"code":59666},"setIdx":0,"setId":2,"iconIdx":18},{"icon":{"paths":["M1343.806 478.457c-9.762-19.575-244.11-478.457-667.948-478.457s-658.136 458.883-667.948 478.457c-4.994 9.78-7.92 21.332-7.92 33.568s2.926 23.787 8.117 33.994l-0.197-0.427c10.013 19.575 244.11 478.407 667.948 478.407s658.186-458.832 667.948-478.407c4.994-9.78 7.92-21.332 7.92-33.568s-2.926-23.787-8.117-33.994l0.197 0.427zM675.858 873.96c-272.446 0-457.030-266.138-514.553-361.809 57.523-95.671 242.107-361.809 514.553-361.809s457.13 266.288 514.553 361.809c-57.523 95.521-242.157 361.659-514.553 361.659z","M675.858 211.619c-165.896 0-300.381 134.485-300.381 300.381s134.485 300.381 300.381 300.381c165.896 0 300.381-134.485 300.381-300.381v0c-0.199-165.816-134.565-300.182-300.362-300.381l-0.020-0zM675.858 662.191c-82.948 0-150.191-67.243-150.191-150.191s67.243-150.191 150.191-150.191c82.948 0 150.191 67.243 150.191 150.191v0c0 82.948-67.243 150.191-150.191 150.191v0z"],"attrs":[{},{}],"width":1352,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["eye"],"colorPermutations":{"12552552551":[{},{}]}},"attrs":[{},{}],"properties":{"order":25,"id":14,"name":"eye","prevSize":32,"code":59667},"setIdx":0,"setId":2,"iconIdx":19},{"icon":{"paths":["M470.315 379.861v136.192c52.181 11.819 98.603 31.189 147.2 44.587v-136.405c-52.011-11.605-98.773-30.976-147.2-44.416zM916.907 133.888c-67.939 35.792-147.729 58.874-232.376 63.923l-1.608 0.077c-107.008-0.213-195.584-69.76-330.368-69.76-0.457-0.002-0.998-0.003-1.539-0.003-48.265 0-94.476 8.794-137.118 24.867l2.678-0.885c4.705-11.905 7.433-25.695 7.433-40.122 0-61.856-50.144-112-112-112s-112 50.144-112 112c0 37.882 18.807 71.371 47.593 91.64l0.355 0.237v772.267c-0 0.038-0 0.083-0 0.128 0 26.439 21.433 47.872 47.872 47.872 0.045 0 0.090-0 0.135-0l-0.007 0h32c0.038 0 0.083 0 0.128 0 26.439 0 47.872-21.433 47.872-47.872 0-0.045-0-0.090-0-0.135l0 0.007v-188.928c64.268-28.012 139.144-44.31 217.827-44.31 3.851 0 7.693 0.039 11.525 0.117l-0.573-0.009c107.179 0 195.584 69.589 330.368 69.589 92.324-0.765 177.356-31.352 246.099-82.581l-1.107 0.789c16.771-11.705 27.605-30.909 27.605-52.644 0-0.047-0-0.094-0-0.141l0 0.007v-486.144c-0.078-35.287-28.702-63.863-64-63.863-9.72 0-18.935 2.167-27.186 6.044l0.391-0.165zM323.157 651.008c-54.473 5.68-104.346 17.389-151.58 34.589l4.38-1.394v-140.8c42.966-16.959 92.83-29.258 144.754-34.612l2.446-0.204zM911.957 382.208c-42.344 20.263-91.614 36.787-143.125 47.106l-4.075 0.681v141.867c55.26-7.286 105.051-25.69 148.773-52.924l-1.573 0.913v140.8c-41.573 28.653-91.64 48.031-145.739 54.055l-1.461 0.132v-142.976c-14.605 2.234-31.455 3.51-48.603 3.51-35.177 0-69.1-5.37-100.994-15.334l2.396 0.645v134.912c-39.685-15.094-88.92-29.775-139.395-41.183l-7.805-1.483v-136.875c-28.906-6.694-62.098-10.532-96.186-10.532-17.976 0-35.702 1.067-53.12 3.141l2.106-0.204v-140.032c-55.565 9.583-104.997 24.104-151.88 43.532l4.68-1.718v-140.8c42.614-19.83 92.097-35.166 143.91-43.55l3.29-0.439v142.976c14.417-2.165 31.054-3.401 47.98-3.401 35.4 0 69.537 5.408 101.63 15.442l-2.41-0.649v-134.741c39.858 15.224 89.098 29.908 139.605 41.235l7.595 1.431v136.704c26.239 6.45 56.363 10.149 87.35 10.149 21.13 0 41.859-1.72 62.054-5.028l-2.204 0.298v-143.872c55.763-10.757 105.071-26.328 151.746-46.79l-4.546 1.777z"],"attrs":[{}],"width":1008,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["flag"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":26,"id":13,"name":"flag","prevSize":32,"code":59668},"setIdx":0,"setId":2,"iconIdx":20},{"icon":{"paths":["M460.771 358.396h102.293v-102.251h-102.293zM511.917 921.749c-0.012 0-0.027 0-0.041 0-226.23 0-409.625-183.395-409.625-409.625s183.395-409.625 409.625-409.625c226.215 0 409.601 183.372 409.625 409.581l0 0.002c0 226.23-183.395 409.625-409.625 409.625v0zM511.876-0.207c-282.717 0.071-511.876 229.274-511.876 512 0 282.77 229.23 512 512 512 282.697 0 511.882-229.113 512-511.782l0-0.011c0-282.77-229.23-512-512-512v0zM460.854 768.021h102.21v-307.25h-102.21z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["information"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":27,"id":12,"name":"information","prevSize":32,"code":59669},"setIdx":0,"setId":2,"iconIdx":21},{"icon":{"paths":["M22.52 566.594l435.159 434.886c13.85 13.942 33.032 22.572 54.23 22.572s40.38-8.63 54.226-22.567l0.004-0.004 72.291-72.291c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-308.501-308.41 308.365-308.365c13.931-13.855 22.553-33.035 22.553-54.23s-8.622-40.375-22.549-54.227l-0.003-0.003-71.973-72.792c-13.85-13.942-33.032-22.572-54.23-22.572s-40.38 8.63-54.226 22.567l-0.004 0.004-435.023 434.932c-14.154 13.904-22.927 33.246-22.927 54.637 0 21.234 8.643 40.449 22.604 54.319l0.004 0.004z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["left"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":28,"id":11,"name":"left","prevSize":32,"code":59670},"setIdx":0,"setId":2,"iconIdx":22},{"icon":{"paths":["M558.549 0.469l-465.451-0.469c-51.358 0.145-92.954 41.74-93.099 93.085l-0 0.014v837.803c0.145 51.358 41.74 92.954 93.085 93.099l0.014 0h465.451c51.358-0.145 92.954-41.74 93.099-93.085l0-0.014v-837.803c-0.194-51.199-41.744-92.629-92.97-92.629-0.045 0-0.090 0-0.136 0l0.007-0zM558.549 837.803h-465.451v-651.605h465.451z"],"attrs":[{}],"width":652,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["phone"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":29,"id":10,"name":"phone","prevSize":32,"code":59671},"setIdx":0,"setId":2,"iconIdx":23},{"icon":{"paths":["M384 0c-0.789-0.017-1.719-0.027-2.651-0.027-34.738 0-66.285 13.665-89.558 35.914l0.049-0.046c-22.202 23.224-35.867 54.77-35.867 89.509 0 0.932 0.010 1.862 0.029 2.789l-0.002-0.138c5.836 34.821 18.412 65.879 36.393 93.049l-0.553-0.889c2.672 8.237 4.213 17.715 4.213 27.553 0 2.918-0.136 5.803-0.401 8.652l0.027-0.365h-295.68v768h295.68c0.053-1.37 0.084-2.978 0.084-4.594 0-11.101-1.431-21.868-4.119-32.126l0.196 0.88c-17.428-26.281-30.005-57.34-35.644-90.756l-0.196-1.404c-0.017-0.789-0.027-1.719-0.027-2.651 0-34.738 13.665-66.285 35.914-89.558l-0.046 0.049c23.224-22.202 54.77-35.867 89.509-35.867 0.932 0 1.862 0.010 2.789 0.029l-0.138-0.002c0.789-0.017 1.719-0.027 2.651-0.027 34.738 0 66.285 13.665 89.558 35.914l-0.049-0.046c22.202 23.224 35.867 54.77 35.867 89.509 0 0.932-0.010 1.862-0.029 2.789l0.002-0.138c-5.836 34.821-18.412 65.879-36.393 93.049l0.553-0.889c-2.672 8.237-4.213 17.715-4.213 27.553 0 2.918 0.136 5.803 0.401 8.652l-0.027-0.365h295.68v-295.68c1.37-0.053 2.978-0.084 4.594-0.084 11.101 0 21.868 1.431 32.126 4.119l-0.88-0.196c26.281 17.428 57.34 30.005 90.756 35.644l1.404 0.196c70.692 0 128-57.308 128-128s-57.308-128-128-128v0c-34.821 5.836-65.879 18.412-93.049 36.393l0.889-0.553c-8.237 2.672-17.715 4.213-27.553 4.213-2.918 0-5.803-0.136-8.652-0.401l0.365 0.027v-295.68h-295.68c-0.053-1.37-0.084-2.978-0.084-4.594 0-11.101 1.431-21.868 4.119-32.126l-0.196 0.88c17.428-26.281 30.005-57.34 35.644-90.756l0.196-1.404c0.017-0.789 0.027-1.719 0.027-2.651 0-34.738-13.665-66.285-35.914-89.558l0.046 0.049c-23.224-22.202-54.77-35.867-89.509-35.867-0.932 0-1.862 0.010-2.789 0.029l0.138-0.002z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["puzzle"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":30,"id":9,"name":"puzzle","prevSize":32,"code":59672},"setIdx":0,"setId":2,"iconIdx":24},{"icon":{"paths":["M638.368 566.619l-435.042 434.86c-13.855 13.932-33.037 22.554-54.232 22.554s-40.377-8.622-54.229-22.55l-0.003-0.003-72.295-72.295c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 308.378-308.378-308.378-308.378c-13.932-13.855-22.554-33.037-22.554-54.232s8.622-40.377 22.55-54.229l0.003-0.003 71.976-72.795c13.855-13.932 33.037-22.554 54.232-22.554s40.377 8.622 54.229 22.55l0.003 0.003 435.042 434.723c14.1 13.896 22.836 33.203 22.836 54.549 0 21.189-8.607 40.368-22.515 54.232l-0.002 0.002z"],"attrs":[{}],"width":661,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["right"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":31,"id":8,"name":"right","prevSize":32,"code":59673},"setIdx":0,"setId":2,"iconIdx":25},{"icon":{"paths":["M227.579 579.116v227.579l398.211 217.305 398.211-217.305v-227.579l-398.211 217.358zM625.789-0l-625.789 341.316 625.789 341.316 512-279.311v393.1h113.789v-455.105z"],"attrs":[{}],"width":1252,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["school"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":32,"id":7,"name":"school","prevSize":32,"code":59674},"setIdx":0,"setId":2,"iconIdx":26},{"icon":{"paths":["M1009.922 885.314l-199.391-199.391c-8.672-8.647-20.639-13.993-33.854-13.993-0.096 0-0.192 0-0.288 0.001l0.015-0h-32.592c54.858-69.783 87.982-158.908 87.982-255.769 0-229.618-186.142-415.76-415.76-415.76s-415.76 186.142-415.76 415.76c0 229.618 186.142 415.76 415.76 415.76 96.861 0 185.986-33.123 256.666-88.661l-0.897 0.679v32.464c-0 0.081-0.001 0.177-0.001 0.273 0 13.216 5.346 25.182 13.994 33.855l-0.001-0.001 199.391 199.391c8.657 8.711 20.645 14.103 33.893 14.103s25.236-5.392 33.891-14.1l0.002-0.002 56.609-56.609c8.774-8.732 14.204-20.817 14.204-34.171 0-13.184-5.292-25.131-13.869-33.834l0.006 0.006zM415.973 672.016c-141.361 0-255.957-114.596-255.957-255.957s114.596-255.957 255.957-255.957c141.361 0 255.957 114.596 255.957 255.957v0c-0.049 141.325-114.626 255.872-255.957 255.872l-0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["search"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":33,"id":6,"name":"search","prevSize":32,"code":59675},"setIdx":0,"setId":2,"iconIdx":27},{"icon":{"paths":["M264.124 1024l-3.988-0.315c-45.874-4.728-81.349-43.172-81.349-89.9 0-9.949 1.608-19.523 4.579-28.476l-0.183 0.638 89.58-260.661-235.092-165.554c-19.618-13.599-33.145-34.797-36.332-59.244l-0.046-0.43c-0.823-4.244-1.294-9.125-1.294-14.115 0-0.018 0-0.036 0-0.054l-0 0.003c0.197-48.36 39.308-87.52 87.63-87.796l0.026-0h289.553l86.747-258.842c12.356-34.779 44.982-59.235 83.32-59.235 37.789 0 70.029 23.761 82.593 57.157l0.201 0.608 87.272 260.311h287.525c0.011-0 0.025-0 0.038-0 47.863 0 86.99 37.407 89.741 84.58l0.011 0.243v3.848l-0.315 3.883c-2.124 22.565-12.304 42.418-27.594 56.944l-0.039 0.036-11.963 10.074-233.098 167.233 89.755 261.011c3.161 8.633 4.99 18.602 4.99 28.997 0 27.516-12.812 52.041-32.795 67.933l-0.177 0.136c-13.364 11.803-30.658 19.438-49.692 20.728l-0.258 0.014-3.183 0.21-3.148-0.175c-18.973-1.079-36.226-7.647-50.416-18.125l0.256 0.181-229.565-163.77-230.369 164.12c-13.682 9.851-30.475 16.214-48.672 17.473l-0.298 0.017zM812.414 940.051v0.28zM282.243 939.876v0zM838.403 920.498v0zM139.39 423.032l258.003 181.889-97.94 285.006 247.929-176.642 247.649 176.502-97.94-284.586 254.015-182.169h-309.246l-94.442-282.243-94.722 282.243zM1004.972 423.032v0zM97.346 393.405l0.56 0.42z"],"attrs":[{}],"width":1095,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star-1"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":34,"id":5,"name":"star-1","prevSize":32,"code":59676},"setIdx":0,"setId":2,"iconIdx":28},{"icon":{"paths":["M1060.923 354.485h-362.082l-110.034-328.386c-5.769-15.366-20.337-26.102-37.413-26.102s-31.644 10.737-37.322 25.828l-0.091 0.275-110.034 328.386h-364.574c-21.717 0.069-39.304 17.656-39.374 39.367l-0 0.007c-0 0.051-0.001 0.111-0.001 0.172 0 2.3 0.268 4.537 0.775 6.682l-0.039-0.196c1.082 11.588 7.245 21.545 16.211 27.732l0.127 0.083 297.753 209.856-114.363 332.062c-1.356 3.823-2.14 8.232-2.14 12.824 0 12.816 6.104 24.206 15.563 31.422l0.096 0.070c5.913 5.322 13.556 8.829 21.991 9.588l0.147 0.011c9.263-0.701 17.658-3.918 24.649-8.961l-0.142 0.098 290.483-207.038 290.483 207.038c6.807 5.047 15.229 8.284 24.374 8.857l0.132 0.007c8.688-0.56 16.438-4.176 22.272-9.773l-0.012 0.012c9.602-7.187 15.75-18.533 15.75-31.315 0-4.66-0.817-9.13-2.316-13.273l0.086 0.272-114.159-331.898 295.139-211.694 7.148-6.167c7.108-6.72 11.823-15.905 12.772-26.182l0.012-0.163c-1.204-22.063-19.388-39.497-41.643-39.497-0.078 0-0.156 0-0.234 0.001l0.012-0z"],"attrs":[{}],"width":1103,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["star"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":35,"id":4,"name":"star","prevSize":32,"code":59677},"setIdx":0,"setId":2,"iconIdx":29},{"icon":{"paths":["M662.613 361.941c-7.552-20.181 201.344-206.72 79.531-357.888-28.501-35.328-125.227 169.259-262.528 261.845-75.776 51.2-252.075 159.872-252.075 219.989v389.461c0 72.32 279.552 148.864 491.989 148.864 77.867 0 190.677-487.851 190.677-565.333s-240.128-76.459-247.467-96.725zM170.624 367.36c-0.681-0.010-1.486-0.016-2.292-0.016-93.126 0-168.619 75.493-168.619 168.619 0 3.187 0.088 6.354 0.263 9.498l-0.019-0.437v275.797c-0.161 2.71-0.252 5.878-0.252 9.068 0 90.015 72.972 162.987 162.987 162.987 2.79 0 5.564-0.070 8.32-0.209l-0.387 0.016c37.376 0-56.875-32.555-56.875-128.555v-362.667c0-100.565 94.251-134.187 56.875-134.187z"],"attrs":[{}],"width":910,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["thumbs-up"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":10,"id":3,"name":"thumbs-up","prevSize":32,"code":59678},"setIdx":0,"setId":2,"iconIdx":30},{"icon":{"paths":["M511.488 0c-282.55 0.292-511.488 229.41-511.488 512 0 282.77 229.23 512 512 512s512-229.23 512-512l-0 0c0-0.076 0-0.166 0-0.257 0-282.628-229.116-511.744-511.744-511.744-0.27 0-0.54 0-0.81 0.001l0.042-0zM512 921.6c-226.216 0-409.6-183.384-409.6-409.6s183.384-409.6 409.6-409.6c226.216 0 409.6 183.384 409.6 409.6v0c0 226.216-183.384 409.6-409.6 409.6v0zM537.6 256h-76.8v307.2l268.8 161.28 38.4-63.147-230.4-136.533z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["time"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":11,"id":2,"name":"time","prevSize":32,"code":59679},"setIdx":0,"setId":2,"iconIdx":31},{"icon":{"paths":["M563.115 223.232l407.851 408.107c13.137 12.992 21.272 31.018 21.272 50.943 0 19.756-7.997 37.645-20.932 50.605l0.001-0.001-68.139 68.139c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-289.536-289.792-289.195 289.195c-12.998 13.055-30.985 21.133-50.859 21.133-19.725 0-37.592-7.958-50.564-20.838l0.004 0.004-0.213-0.299-68.267-67.499c-13.075-12.989-21.168-30.978-21.168-50.859 0-19.71 7.956-37.563 20.831-50.521l-0.004 0.004 408.235-408.32c13.040-13.276 31.18-21.503 51.243-21.503 19.596 0 37.358 7.849 50.315 20.575l-0.011-0.010z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["top"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":12,"id":1,"name":"top","prevSize":32,"code":59680},"setIdx":0,"setId":2,"iconIdx":32},{"icon":{"paths":["M1104.017 128.018h-207.987v-80.017c0-26.51-21.491-48.001-48.001-48.001v0h-544.040c-26.51 0-48.001 21.491-48.001 48.001v0 80.017h-207.987c-26.51 0-48.001 21.491-48.001 48.001v0 111.986c7.076 85.462 54.363 158.548 122.682 200.96l1.112 0.643c61.778 44.226 136.678 74.099 217.854 83.23l2.133 0.195c34.389 59.486 80.159 108.69 134.709 145.998l1.518 0.98v144.002h-96.001c-3.854-0.457-8.318-0.718-12.843-0.718-62.746 0-113.776 50.163-115.172 112.574l-0.002 0.13v24c0 13.255 10.745 24 24 24v0h592.041c13.255 0 24-10.745 24-24v0-24c-1.399-62.54-52.429-112.704-115.175-112.704-4.525 0-8.989 0.261-13.378 0.768l0.535-0.050h-96.001v-144.002c56.068-38.356 101.826-87.64 135.041-145.086l1.137-2.132c83.314-9.166 158.252-38.973 221.451-84.147l-1.416 0.962c69.366-43.121 116.621-116.171 123.729-200.646l0.065-0.957v-111.986c0-26.51-21.491-48.001-48.001-48.001v0zM198.627 385.59c-35.829-20.914-61.682-55.601-70.437-96.621l-0.172-0.964v-32.016h128.402c1.638 61.997 10.873 121.145 26.808 177.479l-1.223-5.061c-31.815-11.002-59.407-25.499-84.329-43.47l0.951 0.653zM1024 288.005c-9.695 41.665-35.309 76.091-69.932 97.202l-0.677 0.383c-24.040 17.319-51.713 31.817-81.346 42.129l-2.271 0.688c14.711-51.273 23.946-110.421 25.564-171.467l0.020-0.952h128.594z"],"attrs":[{}],"width":1152,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["trophy"],"colorPermutations":{"12552552551":[{}]}},"attrs":[{}],"properties":{"order":13,"id":0,"name":"trophy","prevSize":32,"code":59681},"setIdx":0,"setId":2,"iconIdx":33}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon","name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/PAMapp/assets/icon/style.css b/PAMapp/assets/icon/style.css index f3e477c..c26977b 100644 --- a/PAMapp/assets/icon/style.css +++ b/PAMapp/assets/icon/style.css @@ -1,10 +1,10 @@ @font-face { font-family: 'icomoon'; - src: url('fonts/icomoon.eot?vt1g0j'); - src: url('fonts/icomoon.eot?vt1g0j#iefix') format('embedded-opentype'), - url('fonts/icomoon.ttf?vt1g0j') format('truetype'), - url('fonts/icomoon.woff?vt1g0j') format('woff'), - url('fonts/icomoon.svg?vt1g0j#icomoon') format('svg'); + src: url('fonts/icomoon.eot?vrc42b'); + src: url('fonts/icomoon.eot?vrc42b#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?vrc42b') format('truetype'), + url('fonts/icomoon.woff?vrc42b') format('woff'), + url('fonts/icomoon.svg?vrc42b#icomoon') format('svg'); font-weight: normal; font-style: normal; font-display: block; @@ -25,16 +25,7 @@ -moz-osx-font-smoothing: grayscale; } -.icon-delet:before { - content: "\e920"; -} -.icon-top:before { - content: "\e91f"; -} -.icon-puzzle:before { - content: "\e91e"; -} -.icon-down:before { +.icon-decrease:before { content: "\e900"; } .icon-add:before { @@ -58,10 +49,10 @@ .icon-calender:before { content: "\e907"; } -.icon-checkbox:before { +.icon-checkbox-1:before { content: "\e908"; } -.icon-checkbox-1:before { +.icon-checkbox:before { content: "\e909"; } .icon-circle-left:before { @@ -79,48 +70,60 @@ .icon-company:before { content: "\e90e"; } -.icon-edit:before { +.icon-delet:before { content: "\e90f"; } -.icon-eye:before { +.icon-down:before { content: "\e910"; } -.icon-eye-1:before { +.icon-edit:before { content: "\e911"; } -.icon-flag:before { +.icon-eye-1:before { content: "\e912"; } -.icon-information:before { +.icon-eye:before { content: "\e913"; } -.icon-left:before { +.icon-flag:before { content: "\e914"; } -.icon-phone:before { +.icon-information:before { content: "\e915"; } -.icon-right:before { +.icon-left:before { content: "\e916"; } -.icon-school:before { +.icon-phone:before { content: "\e917"; } -.icon-search:before { +.icon-puzzle:before { content: "\e918"; } -.icon-star:before { +.icon-right:before { content: "\e919"; } -.icon-star-1:before { +.icon-school:before { content: "\e91a"; } -.icon-thumbs-up:before { +.icon-search:before { content: "\e91b"; } -.icon-time:before { +.icon-star-1:before { content: "\e91c"; } -.icon-trophy:before { +.icon-star:before { content: "\e91d"; } +.icon-thumbs-up:before { + content: "\e91e"; +} +.icon-time:before { + content: "\e91f"; +} +.icon-top:before { + content: "\e920"; +} +.icon-trophy:before { + content: "\e921"; +} diff --git a/PAMapp/assets/scss/_variable.scss b/PAMapp/assets/scss/_variable.scss index db3a0e4..0fd2878 100644 --- a/PAMapp/assets/scss/_variable.scss +++ b/PAMapp/assets/scss/_variable.scss @@ -19,5 +19,5 @@ // DEVICE BREAKPOINT $DESKTOP_BREAKPOINT: 768px; -$DESKTOP_NAV_BAR: 110px; +$DESKTOP_NAV_BAR: 90px; $MOB_NAV_BAR: 53px; diff --git a/PAMapp/assets/scss/vendors/_elementUI.scss b/PAMapp/assets/scss/vendors/_elementUI.scss index df9c6ea..122f4c3 100644 --- a/PAMapp/assets/scss/vendors/_elementUI.scss +++ b/PAMapp/assets/scss/vendors/_elementUI.scss @@ -12,3 +12,4 @@ @import './elementUI/dialog'; @import './elementUI/messageBox'; @import './elementUI/input'; +@import './elementUI/tree'; diff --git a/PAMapp/assets/scss/vendors/elementUI/_tree.scss b/PAMapp/assets/scss/vendors/elementUI/_tree.scss new file mode 100644 index 0000000..d81f901 --- /dev/null +++ b/PAMapp/assets/scss/vendors/elementUI/_tree.scss @@ -0,0 +1,90 @@ +.el-tree { + position: static; + background: transparent; + .el-tree-node { + white-space: pre-wrap; + word-break: break-all; + + .el-tree-node__content { + border: solid 2px #CCCCCC; + padding: 10px 10px 10px 20px; + border-radius: 10px; + color: #68737A; + justify-content: space-between; + flex-direction: row-reverse; + margin-bottom: 10px; + height: auto; + + .el-tree-node__expand-icon { + @extend .pam-icon; + @extend .icon--primary; + + &.expanded::before { + content: "\e900"; + display: inline-block; + transform: rotate(90deg); + } + } + + .el-tree-node__label { + @extend .mdTxt; + width: 85%; + display: block; + padding-left: 20px; + line-height: 27px; + word-wrap: break-word; + height: auto; + } + } + + &.is-expanded > .el-tree-node__content { + background-color: #F68C96; + border: solid 2px #F68C96; + + .el-tree-node__label,.el-tree-node__expand-icon { + color: $PRIMARY_WHITE; + } + } + + .el-tree-node__children { + margin-bottom: 10px; + .el-tree-node { + .el-tree-node__content { + flex-direction: row; + border: 0px; + padding: 0 !important; + margin-bottom: 0; + + .el-tree-node__expand-icon { + display: none; + } + + .el-tree-node__label { + @extend .p; + line-height: 27px; + width: 100%; + font-weight: lighter; + padding-right: 10px; + // line-break: loose; + // display: flex; + // justify-content: space-between; + // text-align: justify; + // text-align-last: left; + // text-justify:inter-ideograph; + // word-break: break-all; + + // &:after{ + // display:inline-block; + // content:''; + // overflow:hidden; + // width:100%; + // height: 0; + + // } + } + } + } + } + + } +} \ No newline at end of file diff --git a/PAMapp/assets/ts/api/appointment.ts b/PAMapp/assets/ts/api/appointment.ts deleted file mode 100644 index 81a90ca..0000000 --- a/PAMapp/assets/ts/api/appointment.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { http } from '~/assets/ts/services/httpClient'; - -import { AppointmentLog } from '../models/appointment.model'; - -// 璅�撌脰蝯� -export function markAsContact(appointmentId: number) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - // TODO: 頝�垢蝣箄���ㄐ��� API 銝�府���� void, ���府���敺���� - Ben 2021/11/16 - return http.post('/appointment/markAsContacted/'+appointmentId, undefined, {headers}) - .then(res => res.data) -} - -export function getMyReviewLog(): Promise<AppointmentLog[]> { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.get('/satisfaction/getMySatisfaction', { headers }).then(res => res.data); -} - - -// 憿批��憿舐內����蝑敺孛� -export function allAppointmentsView() { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.post('/consultant/record/allAppointmentsView', undefined, {headers}) -} diff --git a/PAMapp/assets/ts/api/consultant.ts b/PAMapp/assets/ts/api/consultant.ts deleted file mode 100644 index 0853916..0000000 --- a/PAMapp/assets/ts/api/consultant.ts +++ /dev/null @@ -1,173 +0,0 @@ -import { AxiosResponse } from 'axios'; -import { AppointmentDetail } from '../models/AppointmentDetail'; -import { ConsultantLoginInfo } from '../models/ConsultantLoginInfo'; -import _ from 'lodash'; -import { UserSetting } from '../models/account.model'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { http } from '../services/httpClient'; -import { FastQueryParams } from '../models/quickFilter.model'; - - -// ��靽憿批�� -export function recommend() { - return http.get<Consultant[]>('/consultant/recommend') - .then(res => res.data); -} - -// 敹恍�祟� -export function fastQuery(data: FastQueryParams) { - return http.post<Consultant[]>('/consultant/fastQuery', data).then(res => res.data); -} - -// ������ -export function strictQuery(data:StrictQueryParams):Promise<AxiosResponse<AgentOfStrictQuery[]>>{ - return http.post('/consultant/strictQuery', data) -} - -// ��憿批�� -export function addFavoriteConsultant(agentNoList: string[]) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.post('/consultant/favorite', {agentNoList}, {headers}) -} - -// ����岷��� -export function appointmentDemand(data: AppointmentParams) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.post('/appointment/customer/create', data, {headers}) -} - -//憿批�底蝝啗��� -export function getConsultantDetail(agentNo:string){ - return http.get('/consultant/detail', {params:{agentNo:agentNo}}) -} - -// 蝘駁憿批�� -export function deleteConsultant(agentId: string) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.delete('/consultant/favorite/'+agentId, {headers}) -} - -// �����蝝啁� -export function getAppointmentDetail(apointmentId: number):Promise<AxiosResponse<AppointmentDetail>> { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.get('/appointment/getDetail/'+apointmentId, {headers}) -} - -//���蝙��董����� -export function getUserAccountSetting() : Promise<UserSetting> { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.get<UserSetting>('/customer/info', {headers}).then(res => res.data); -} - -//��雿輻�董����� -export function updateAccountSetting(params: any) : any { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.put('/customer/info', params ,{headers}).then(res => res.data); -} - -//摰X�脰�遛��漲閰�� - -export function userReviewsConsultants(data: UserReviewsConsultantsParams) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.post('/satisfaction/create', data ,{headers}); -} - -// ������ -export function cancelAppointment(appointment: number) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.delete('/appointment/'+appointment ,{headers}); -} - -// 蝺刻摩���� -export function editAppointment(editAppointmentParams: editAppointmentParams) { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return http.put('/appointment', editAppointmentParams, {headers}); -} - -export interface AppointmentRequests { - phone : string, - email : string, - contactType : string, - gender : string, - age : string, - job : string, - requirement : string[], - hopeContactTime: ContactTime[], - agentNo : string, -} -export interface ContactTime { - selectWeekOptions : string[], - selectTimesOptions: string[] -} -export interface AppointmentParams { - phone : string, - email : string, - contactType : string, - gender : string, - age : string, - job : string, - requirement : string, - hopeContactTime: string, - agentNo : string -} -export interface StrictQueryParams{ - gender : string; - avgScore : number; - status : string; //phase 1 disable - area : string; - requirements : string[]; - otherRequirement: string; - seniority : string; - popularTags : string[]; - otherPopularTags: string; -} -export interface AgentOfStrictQuery { - agentNo : string; - name : string; - img : string; - expertise : string[]; - avgScore : number; - contactStatus: null; - updateTime : null; - seniority : string; - new : boolean; -} -export interface RequestOfLoginSuccess{ - id_token: string; -} - -export interface UserReviewsConsultantsParams{ - appointmentId: number, - score : number, -} - -export interface editAppointmentParams { - id : number, - phone : string, - email : string, - contactType : string, - gender : string, - age : string, - job : string, - requirement : string, - hopeContactTime : string, - otherRequirement: null -} diff --git a/PAMapp/assets/ts/api/share.ts b/PAMapp/assets/ts/api/share.ts deleted file mode 100644 index 835376c..0000000 --- a/PAMapp/assets/ts/api/share.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { AxiosRequestConfig, AxiosError, AxiosResponse} from 'axios'; -import ErrorMessageBox from '../errorService'; -import axios from 'axios'; -import _ from 'lodash'; - -const notRequireInterceptorErrorUrl = [ - '/otp/verify', - '/eService/authenticate', - '/login/validate/get_img_code', - '/login/validate/verify_img_code', -]; - -export const service = axios.create({ - baseURL: process.env.BASE_URL, - withCredentials: true -}); - -service.interceptors.request.use( - (config: AxiosRequestConfig) => { - loadingStart(); - addHttpHeader(config); - return config; - } -); - -service.interceptors.response.use( - (response: AxiosResponse) => { - loadingFinish(); - return response; - }, - (error: AxiosError) => { - loadingFinish(); - showErrorMessageBox(error) - return Promise.reject(error); - } -); - -function addHttpHeader(config: AxiosRequestConfig): void { - config.headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } -} - -function loadingStart(): void { - window.$nuxt.$loading.start(); -}; - -function loadingFinish(): void { - window.$nuxt.$loading.finish(); -}; - -function showErrorMessageBox(error: any): void { - // console.log('error', error, error.response); - if (!_.includes(notRequireInterceptorErrorUrl, error.config.url)) { - switch (error.response.status) { - case 401: - Promise.all([ErrorMessageBox('���暹��'),window.$nuxt.$store.dispatch('localStorage.service/clearStorage')]).then(()=>{ - _.isEqual(window.$nuxt.$route.name, 'index') ? location.reload() : window.$nuxt.$router.push('/'); - }); - break; - - default: - ErrorMessageBox('', error); - break; - } - } -}; diff --git a/PAMapp/assets/ts/models/AppointmentDetail.ts b/PAMapp/assets/ts/models/AppointmentDetail.ts deleted file mode 100644 index c13f9a8..0000000 --- a/PAMapp/assets/ts/models/AppointmentDetail.ts +++ /dev/null @@ -1,18 +0,0 @@ - -export interface AppointmentDetail { - id: number; - phone: string; - email: string; - contactType: string; - gender: string; - age: string; - job: string; - requirement: string; - communicateStatus: string; - hopeContactTime: string; - otherRequirement: string; - appointmentDate: Date; - agentNo: string; - customerId: number; - name: string; -} diff --git a/PAMapp/assets/ts/models/UserReviewsConsultantsParams.ts b/PAMapp/assets/ts/models/UserReviewsConsultantsParams.ts deleted file mode 100644 index 93ece16..0000000 --- a/PAMapp/assets/ts/models/UserReviewsConsultantsParams.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface UserReviewsConsultantsParams{ - appointmentId:number, - score:number, -} diff --git a/PAMapp/assets/ts/models/agentOfStrictQuery.ts b/PAMapp/assets/ts/models/agentOfStrictQuery.ts deleted file mode 100644 index 16d6627..0000000 --- a/PAMapp/assets/ts/models/agentOfStrictQuery.ts +++ /dev/null @@ -1,12 +0,0 @@ - -export interface AgentOfStrictQuery { - agentNo: string; - name: string; - img: string; - expertise: string[]; - avgScore: number; - contactStatus: null; - updateTime: null; - seniority: string; - new: boolean; -} diff --git a/PAMapp/assets/ts/models/appointment.model.ts b/PAMapp/assets/ts/models/appointment.model.ts deleted file mode 100644 index 36b9c77..0000000 --- a/PAMapp/assets/ts/models/appointment.model.ts +++ /dev/null @@ -1,39 +0,0 @@ -export interface AppointmentLog { - id : number, - createdDate : Date, - lastModifiedDate: Date, - customerId : number, - agentNo : string, - status : 'UNFILLED' | 'FILLED', - score : number, - agentName : string, - customerName : string, -} -export interface Appointment { - id : number; - phone? : string; - email? : string; - contactType : string; - gender : string; - age : string; - job : string; - requirement : string; - communicateStatus : string; - hopeContactTime : string; - otherRequirement? : string; - appointmentDate : string; - lastModifiedDate : string; - agentNo : string; - customerId : number; - name : string; - consultantViewTime?: string; - consultantReadTime?: string; - satisfactionScore? : number; -}; -export interface AppointmentWithConsultantInfo extends Appointment { - consultantName : string; - consultantAvatar : string; - consultantExpertList: string[] - updateTime : Date | string; - contactStatus : string; -} diff --git a/PAMapp/assets/ts/models/appointmentParams.ts b/PAMapp/assets/ts/models/appointmentParams.ts deleted file mode 100644 index e3eead8..0000000 --- a/PAMapp/assets/ts/models/appointmentParams.ts +++ /dev/null @@ -1,12 +0,0 @@ - -export interface AppointmentParams { - phone: string; - email: string; - contactType: string; - gender: string; - age: string; - job: string; - requirement: string; - hopeContactTime: string; - agentNo: string; -} diff --git a/PAMapp/assets/ts/models/enum/Role.ts b/PAMapp/assets/ts/models/enum/Role.ts deleted file mode 100644 index acae4db..0000000 --- a/PAMapp/assets/ts/models/enum/Role.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum Role{ - ADMIN = 'admin', - USER = 'user', - NOT_LOGIN = '' -} \ No newline at end of file diff --git a/PAMapp/assets/ts/models/fastQueryParams.model.ts b/PAMapp/assets/ts/models/fastQueryParams.model.ts deleted file mode 100644 index c24376d..0000000 --- a/PAMapp/assets/ts/models/fastQueryParams.model.ts +++ /dev/null @@ -1,7 +0,0 @@ - -export interface FastQueryParams { - gender: string; - communicationStyles: string[]; - avgScore: number; - status: string; -} diff --git a/PAMapp/assets/ts/models/strictQueryParams.ts b/PAMapp/assets/ts/models/strictQueryParams.ts deleted file mode 100644 index ba69baf..0000000 --- a/PAMapp/assets/ts/models/strictQueryParams.ts +++ /dev/null @@ -1,12 +0,0 @@ - -export interface StrictQueryParams { - gender: string; - avgScore: number; - status: string; //phase 1 disable - area: string; - requirements: string[]; - otherRequirement: string; - seniority: string; - popularTags: string[]; - otherPopularTags: string; -} diff --git a/PAMapp/assets/ts/services/appointment.service.ts b/PAMapp/assets/ts/services/appointment.service.ts deleted file mode 100644 index b544948..0000000 --- a/PAMapp/assets/ts/services/appointment.service.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { http } from "./httpClient"; - -import { ClientInfo } from "../models/client.model"; - -class AppointmentService { - - // ��������� - async getMyAppointmentList(): Promise<ClientInfo[]> { - return http.get('/consultant/getMyAppointment').then((res) => { - const hasNewAppointment = res.data.find((appointment: ClientInfo) => !appointment.consultantViewTime); - if (hasNewAppointment) { - this.viewAllAppointment(); - } - return res.data; - }); - } - - private viewAllAppointment(): void { - http.post('/consultant/record/allAppointmentsView').then(); - } - - // 璅�撌脰蝯� - markAsContact(appointmentId: number): Promise<void> { - // TODO: 頝�垢蝣箄���ㄐ��� API 銝�府���� void, ���府���敺���� - Ben 2021/11/16 - // return http.post('/appointment/markAsContacted/'+appointmentId, undefined, {headers}) - // .then(res => res.data) - return http.post(`/appointment/markAsContacted/${appointmentId}`); - } - - // 霈�������孛�嚗������������ - recordRead(appointmentId: number): Promise<void> { - return http.post(`/appointment/recordRead/${appointmentId}`); - } - -} - -export default new AppointmentService(); diff --git a/PAMapp/assets/ts/services/my-consultant.service.ts b/PAMapp/assets/ts/services/my-consultant.service.ts deleted file mode 100644 index c27a41d..0000000 --- a/PAMapp/assets/ts/services/my-consultant.service.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { http } from "./httpClient"; - -import { AgentInfo } from '~/assets/ts/models/agent-info.model'; -import { Consultant } from "../models/consultant.model"; - -class MyConsultantService { - - async getFavoriteConsultantList(): Promise<Consultant[]> { - return http.get<Consultant[]>('/consultant/favorite').then((res) => { - const hasNewConsultant = res.data.find((consultant) => !consultant.customerViewTime); - if (hasNewConsultant) { - this.viewMyConsultantList(); - }; - return res.data; - }); - } - - private viewMyConsultantList(): void { - http.post('/consultant/favorite/view'); - } - - //憿批�底蝝啗��� - async getConsultantDetail(agentNo:string): Promise<AgentInfo> { - return http.get('/consultant/detail', {params:{agentNo:agentNo}}).then((res) => res.data); - } - -} - -export default new MyConsultantService(); diff --git a/PAMapp/assets/ts/services/pamService.service.ts b/PAMapp/assets/ts/services/pamService.service.ts deleted file mode 100644 index e89d07e..0000000 --- a/PAMapp/assets/ts/services/pamService.service.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { AxiosResponse } from 'axios'; -import { http } from "./httpClient"; -import { editAppointmentParams } from '../models/editAppointmentParams.model'; -import { AppointmentDetail } from '../models/AppointmentDetail'; -import { UserSetting } from '../models/account.model'; -import { FastQueryParams } from '../models/quickFilter.model'; -import { Consultant } from '../models/consultant.model'; -import { StrictQueryParams } from '../models/strictQueryParams'; -import { AppointmentParams } from '../models/appointmentParams'; -import { UserReviewsConsultantsParams } from '../models/UserReviewsConsultantsParams'; -import { AgentOfStrictQuery } from '../models/agentOfStrictQuery'; -import _ from "lodash"; - - - - -class PamService { - constructor() {} - - /** ��靽憿批�� **/ - recommend():Promise<AxiosResponse<Consultant[]>>{ - return http.get('/consultant/recommend'); - } - - /** 敹恍�祟� **/ - fastQuery(data: FastQueryParams):Promise<AxiosResponse<Consultant[]>>{ - return http.post('/consultant/fastQuery', data) - } - - /** ������ **/ - strictQuery(data:StrictQueryParams):Promise<AxiosResponse<AgentOfStrictQuery[]>>{ - return http.post('/consultant/strictQuery', data) - } - - /** ��憿批�� **/ - addFavoriteConsultant(agentNoList: string[]):Promise<AxiosResponse<any>>{ - return http.post('/consultant/favorite', {agentNoList}) - } - - /** ����岷��� **/ - appointmentDemand(data: AppointmentParams):Promise<AxiosResponse<any>> { - return http.post('/appointment/customer/create', data) - } - - /** 憿批�底蝝啗��� **/ - getConsultantDetail(agentNo:string):Promise<AxiosResponse<any>>{ - return http.get('/consultant/detail', {params:{agentNo:agentNo}}) - } - - /** 蝘駁憿批�� **/ - deleteConsultant(agentId: string):Promise<AxiosResponse<any>>{ - return http.delete('/consultant/favorite/'+agentId); - } - - - - /** �����蝝啁� **/ - getAppointmentDetail(apointmentId: number):Promise<AxiosResponse<AppointmentDetail>> { - return http.get('/appointment/getDetail/'+apointmentId) - } - - /** ���蝙��董����� **/ - getUserAccountSetting():Promise<AxiosResponse<UserSetting>>{ - return http.get<UserSetting>('/customer/info'); - } - - /** ��雿輻�董����� **/ - updateAccountSetting(params: any):Promise<AxiosResponse<any>> { - return http.put('/customer/info', params); - } - - //摰X�脰�遛��漲閰�� - userReviewsConsultants(data: UserReviewsConsultantsParams):Promise<AxiosResponse<any>> { - return http.post('/satisfaction/create', data); - } - - // ������ - cancelAppointment(appointment: number):Promise<AxiosResponse<any>>{ - return http.delete('/appointment/'+appointment); - } - - // 蝺刻摩���� - editAppointment(editAppointmentParams:editAppointmentParams):Promise<AxiosResponse<any>>{ - return http.put('/appointment', editAppointmentParams); - } -} - -export default new PamService(); - - diff --git a/PAMapp/assets/ts/services/query-consultant.service.ts b/PAMapp/assets/ts/services/query-consultant.service.ts deleted file mode 100644 index 1236fdc..0000000 --- a/PAMapp/assets/ts/services/query-consultant.service.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { http } from "./httpClient"; - -import { Consultant } from "../models/consultant.model"; - -class QueryConsultantService { - - // ��靽憿批�� - async getRecommendConsultantList(): Promise<Consultant[]> { - return http.get<Consultant[]>('/consultant/recommend').then((res) => res.data); - } - -} - -export default new QueryConsultantService(); diff --git a/PAMapp/components/AddAndReservedBtns.vue b/PAMapp/components/AddAndReservedBtns.vue index d88a444..fa37c72 100644 --- a/PAMapp/components/AddAndReservedBtns.vue +++ b/PAMapp/components/AddAndReservedBtns.vue @@ -12,7 +12,7 @@ <script lang="ts"> import { Vue, Component, Prop, Emit, Action, State, namespace } from 'nuxt-property-decorator'; -import { Consultant } from '~/assets/ts/models/consultant.model'; +import { Consultant } from '~/shared/models/consultant.model'; const localStorage = namespace('localStorage'); @Component @@ -41,4 +41,4 @@ ? true : false } } -</script> \ No newline at end of file +</script> diff --git a/PAMapp/components/BackActionBar.vue b/PAMapp/components/BackActionBar.vue index 11cfcaf..dc671d9 100644 --- a/PAMapp/components/BackActionBar.vue +++ b/PAMapp/components/BackActionBar.vue @@ -1,22 +1,24 @@ <template> <nav class="pam-back-action-bar fix-chrome-click--issue"> <a @click="pushRouterByLoginRole"> - <i class="icon-left "></i>{{ label }} + <i class="icon-left "></i> </a> + <div class="label">{{ label }}</div> </nav> </template> <script lang="ts"> import { namespace } from 'nuxt-property-decorator'; import { Vue, Component,} from 'vue-property-decorator'; -import { Role } from '~/assets/ts/models/enum/Role'; import * as _ from 'lodash'; +import { Role } from '~/shared/models/enum/role'; const roleStorage = namespace('localStorage'); @Component export default class UiCarousel extends Vue { @roleStorage.Getter currentRole!:string; get label(): string { + if (this.$route.name) { const routeName = this.$route.name.split('-')[0]; let featureLabel = ''; @@ -45,6 +47,7 @@ case 'notification': featureLabel = '�'; break; + case 'userReviewsRecord': case 'record': featureLabel = '�������'; break; @@ -53,6 +56,9 @@ break; case 'consultantAccountSetting': featureLabel = '���董�����'; + break; + case 'faq': + featureLabel = 'F&Q 撣貉����'; break; } return featureLabel; @@ -81,21 +87,28 @@ width: 100%; background-color: $PRIMARY_WHITE; z-index: 6; + font-size: 20px; + font-weight: bold; i { - font-size: 20px; + display: block; padding-right: 14px; } a { cursor: pointer; - font-size: 24px; - font-weight: bold; - padding: 20px; + padding: 0 20px; + width: 26px; + } + .label { + margin: 0 auto; + transform: translateX(-33px); } } @include desktop { .pam-back-action-bar { top: $DESKTOP_NAV_BAR; + font-size: 24px; } } + </style> diff --git a/PAMapp/components/Client/ClientCard.vue b/PAMapp/components/Client/ClientCard.vue index 4fca204..b600629 100644 --- a/PAMapp/components/Client/ClientCard.vue +++ b/PAMapp/components/Client/ClientCard.vue @@ -96,10 +96,11 @@ <script lang="ts"> import { Vue, Component, Prop, Action } from 'nuxt-property-decorator'; -import appointmentService from '~/assets/ts/services/appointment.service'; -import { isMobileDevice } from '~/assets/ts/device'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; -import { ClientInfo } from '~/assets/ts/models/client.model'; +import appointmentService from '~/shared/services/appointment.service'; +import { isMobileDevice } from '~/shared/device'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { ClientInfo } from '~/shared/models/client.model'; +import myConsultantService from '~/shared/services/my-consultant.service'; @Component({ @@ -198,7 +199,7 @@ } markAppointment() { - appointmentService.markAsContact(this.client.id).then(data => { + myConsultantService.markAsContact(this.client.id).then(data => { // TODO: 閬敺����� updated client 鞈�� - Ben 2021/11/16 const updatedClient = {...this.client}; updatedClient.communicateStatus = 'contacted'; diff --git a/PAMapp/components/Client/ClientList.vue b/PAMapp/components/Client/ClientList.vue index afdcdfc..31c4095 100644 --- a/PAMapp/components/Client/ClientList.vue +++ b/PAMapp/components/Client/ClientList.vue @@ -18,7 +18,7 @@ <script lang='ts'> import { Vue, Component, Prop } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/models/client.model'; +import { ClientInfo } from '~/shared/models/client.model'; @Component export default class ClientList extends Vue { diff --git a/PAMapp/components/Consultant/ConsultantCard.vue b/PAMapp/components/Consultant/ConsultantCard.vue index 2b0ddc5..6d2c5ae 100644 --- a/PAMapp/components/Consultant/ConsultantCard.vue +++ b/PAMapp/components/Consultant/ConsultantCard.vue @@ -82,13 +82,12 @@ </div> </div> - <div v-if="agentInfo.contactStatus === 'contacted' - && !appointmentDetail.satisfactionScore" class="dialogInfo-btn"> + <div v-if="notScoreAppointmentYet" class="dialogInfo-btn"> <el-button type="primary" @click.native="reviewsBtn = true">蝯虫�遛��漲閰��</el-button> </div> - <div v-if="agentInfo.contactStatus === 'reserved'" class="text--center mt-10"> + <div v-if="agentInfo.contactStatus === 'reserved' && !isAppointment" class="text--center mt-10"> <el-button @click="isCancelPopup = true">������</el-button> <el-button @click="edit" type="primary">蝺刻摩</el-button> </div> @@ -129,14 +128,16 @@ <script lang="ts"> import { Vue, Component, Prop, Action, namespace } from 'nuxt-property-decorator'; -import { getAppointmentDetail, UserReviewsConsultantsParams, userReviewsConsultants, cancelAppointment } from '~/assets/ts/api/consultant'; -import { Consultant, ConsultantWithAppointmentId } from '~/assets/ts/models/consultant.model'; -import { Appointment } from '~/assets/ts/models/appointment.model'; -import { isMobileDevice } from '~/assets/ts/device'; -import { Role } from '~/assets/ts/models/enum/Role'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; -const roleStorage = namespace('localStorage'); +import appointmentService from '~/shared/services/appointment.service'; +import reviewsService from '~/shared/services/reviews.service'; +import { isMobileDevice } from '~/shared/device'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { Consultant, ConsultantWithAppointmentId } from '~/shared/models/consultant.model'; +import { Appointment } from '~/shared/models/appointment.model'; +import { UserReviewsConsultantsParams } from '~/shared/models/reviews.model'; + +const localStorage = namespace('localStorage'); @Component({ filters: { formatNumber(index: number) { @@ -158,16 +159,11 @@ }) export default class ConsultantCard extends Vue { - @Action - removeFromMyConsultantList!: (agentNo: string) => Promise<boolean>; - - @Action - storeConsultantList!: any; - @Prop() agentInfo!: Consultant | ConsultantWithAppointmentId; - @roleStorage.Getter currentRole!:string; + @localStorage.State('current_role') + currentRole!: string; isVisibleDialog = false; reviewsBtn = false; @@ -178,9 +174,38 @@ hideReviews = hideReviews; isConfirmPopup = false; + + appointmentDetail: any = { + age : '', + agentNo : '', + appointmentDate : '', + communicateStatus : '', + consultantReadTime: null, + consultantViewTime: null, + contactTime : '', + contactType : '', + customerId : 0, + email : '', + gender : '', + hopeContactTime : "", + id : 0, + job : "", + lastModifiedDate : '', + name : '', + otherRequirement : null, + phone : "", + requirement : '', + satisfactionScore : 0, + }; + get notScoreAppointmentYet(): boolean { - if (this.agentInfo.contactStatus !== 'contacted') return false; + const isAppointment = !!this.agentInfo['appointmentStatus']; + if (!isAppointment) return false; return !this.agentInfo['appointmentScore']; + } + + get isAppointment(): boolean { + return !!this.agentInfo['appointmentStatus'];; } get latestReservedAppointment(): Appointment { @@ -224,29 +249,6 @@ } return time as string; } - - appointmentDetail: any = { - age : '', - agentNo : '', - appointmentDate : '', - communicateStatus : '', - consultantReadTime: null, - consultantViewTime: null, - contactTime : '', - contactType : '', - customerId : 0, - email : '', - gender : '', - hopeContactTime : "", - id : 0, - job : "", - lastModifiedDate : '', - name : '', - otherRequirement : null, - phone : "", - requirement : '', - satisfactionScore : 0, - }; get avatarFileName() { return this.agentInfo.img; @@ -299,32 +301,38 @@ get hopeContactTime() { const contactList = this.appointmentDetail.hopeContactTime - .split("'").map(item => item.slice(0, item.length)); - return contactList.filter(item => !!item && item !== ",") + .split("'").map((item: any) => item.slice(0, item.length)); + return contactList.filter((item: any) => !!item && item !== ",") } ////////////////////////////////////////////////////////////////////// + @Action + removeFromMyConsultantList!: (agentNo: string) => Promise<boolean>; + + @Action + storeConsultantList!: () => void; + reserveCommunication() { - const contactStatus = this.agentInfo.contactStatus; - if (!contactStatus || contactStatus === 'picked') { - this.currentRole === Role.USER - ? this.$router.push(`/questionnaire/${this.agentInfo.agentNo}`) - : this.$router.push('/login'); + const isAppointment = !!this.agentInfo['appointmentStatus']; + const contactStatus = this.agentInfo.contactStatus; + if (!isAppointment && (!contactStatus || contactStatus === 'picked')) { + this.$router.push(`/questionnaire/${this.agentInfo.agentNo}`); } else { this.openPopUp(); } } - openPopUp() { - const appointmentId = this.agentInfo.contactStatus === 'contacted' + openPopUp(): void { + const isAppointment = !!this.agentInfo['appointmentStatus']; + const appointmentId = isAppointment ? this.agentInfo['appointmentId'] : this.latestReservedAppointment.id; - getAppointmentDetail(appointmentId!).then(res => { + appointmentService.getAppointmentDetail(appointmentId!).then(res => { this.appointmentDetail = { - ...this.appointmentDetail, - ...res.data + ...res, + satisfactionScore: this.agentInfo['appointmentScore'], }; this.width = isMobileDevice() ? '80%' : ''; this.isVisibleDialog = true; @@ -347,14 +355,14 @@ } this.appointmentDetail.satisfactionScore = this.inputScore; - userReviewsConsultants(reviewParams).then((res) => { + reviewsService.userReviewsConsultants(reviewParams).then((res) => { this.reviewsBtn = false; this.storeConsultantList(); }); } cancel() { - cancelAppointment(this.latestReservedAppointment.id).then(res => { + appointmentService.cancelAppointment(this.latestReservedAppointment.id).then(res => { this.storeConsultantList(); this.isVisibleDialog = false; this.isCancelPopup = false; diff --git a/PAMapp/components/Consultant/ConsultantList.vue b/PAMapp/components/Consultant/ConsultantList.vue index a8791f8..ce11a46 100644 --- a/PAMapp/components/Consultant/ConsultantList.vue +++ b/PAMapp/components/Consultant/ConsultantList.vue @@ -10,7 +10,7 @@ </template> <template v-if="isUserLogin && agentList.length === 0"> <div class="emptyRowStyle"> - <div class="smTxt txt">����撌脰蝯⊿“���</div> + <div class="smTxt txt">{{ noDataPlaceholder }}</div> </div> </template> <template v-if="!isUserLogin"> @@ -24,14 +24,14 @@ <script lang="ts"> import { Vue, Component, Prop, namespace } from 'nuxt-property-decorator'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { Role } from '~/assets/ts/models/enum/Role'; +import { Consultant } from '~/shared/models/consultant.model'; const roleStorage = namespace('localStorage'); @Component export default class ConsultantList extends Vue { @Prop() agents!: Consultant[]; + @Prop() title! : string; @roleStorage.Getter isUserLogin!:boolean; get agentList(){ @@ -40,6 +40,12 @@ ) } + get noDataPlaceholder(): string { + return this.title === 'contactedList' + ? '����撌脰蝯⊿“���' + : '����撌脤憿批��'; + } + } </script> diff --git a/PAMapp/components/Consultant/ConsultantSwiper.vue b/PAMapp/components/Consultant/ConsultantSwiper.vue index 7f8d13b..8adfc60 100644 --- a/PAMapp/components/Consultant/ConsultantSwiper.vue +++ b/PAMapp/components/Consultant/ConsultantSwiper.vue @@ -29,8 +29,8 @@ <script lang="ts"> import { Vue, Component, Prop } from 'vue-property-decorator'; import { SwiperOptions } from 'swiper'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; +import { Consultant } from '~/shared/models/consultant.model'; +import { hideReviews } from '~/shared/const/hide-reviews'; @Component export default class UiSwiper extends Vue { @@ -38,7 +38,7 @@ @Prop() agents!: Consultant[]; hideReviews = hideReviews ; - + swiperOptions: SwiperOptions = { loop: false, slideToClickedSlide: false, diff --git a/PAMapp/components/NavBar.vue b/PAMapp/components/NavBar.vue index 6e3d2ab..ca0cc1e 100644 --- a/PAMapp/components/NavBar.vue +++ b/PAMapp/components/NavBar.vue @@ -34,7 +34,7 @@ <script lang="ts"> import { Vue, Component } from 'vue-property-decorator'; import { namespace } from 'nuxt-property-decorator'; - import { Role } from '~/assets/ts/models/enum/Role'; + import { Role } from '~/shared/models/enum/role'; import * as _ from 'lodash'; const roleStorage = namespace('localStorage'); @@ -77,6 +77,11 @@ title: '���“���', }, { + authorityOfRoleList: [Role.NOT_LOGIN, Role.USER], + routeUrl: '/faq', + title: 'F&Q 撣貉����', + }, + { authorityOfRoleList: [Role.USER, Role.ADMIN], routeUrl: '', title: '��', diff --git a/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue b/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue index 4e722f1..de08434 100644 --- a/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue +++ b/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue @@ -82,8 +82,8 @@ <script lang="ts"> import { ElCarousel } from 'element-ui/types/carousel'; import { Vue, Component, Prop } from 'vue-property-decorator'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; +import { Consultant } from '~/shared/models/consultant.model'; +import { hideReviews } from '~/shared/const/hide-reviews'; @Component export default class QuickFilterConsultantList extends Vue { @@ -219,4 +219,4 @@ } } -</style> \ No newline at end of file +</style> diff --git a/PAMapp/components/QuickFilter/QuickFilterSelector.vue b/PAMapp/components/QuickFilter/QuickFilterSelector.vue index e6800fb..f2b434b 100644 --- a/PAMapp/components/QuickFilter/QuickFilterSelector.vue +++ b/PAMapp/components/QuickFilter/QuickFilterSelector.vue @@ -44,7 +44,7 @@ </el-radio-group> </div> - <div v-else> + <div v-else> <el-rate v-if="!hideReviews" class="pam-quickFilter-rate" @@ -66,8 +66,8 @@ <script lang="ts"> import { Vue, Component, Prop, Watch, Emit } from 'nuxt-property-decorator'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; -import { FastQueryParams, QuestionOption, Selected } from '~/assets/ts/models/quickFilter.model'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { FastQueryParams, QuestionOption, Selected } from '~/shared/models/quick-filter.model'; @Component export default class QuickFilterDrawer extends Vue { pickedItem: FastQueryParams = { @@ -140,4 +140,4 @@ flex-wrap: wrap; } -</style> \ No newline at end of file +</style> diff --git a/PAMapp/components/Ui/UiField.vue b/PAMapp/components/Ui/UiField.vue index 5d5ee7b..df98f3c 100644 --- a/PAMapp/components/Ui/UiField.vue +++ b/PAMapp/components/Ui/UiField.vue @@ -13,7 +13,7 @@ <script lang="ts"> import { Vue, Component, Prop } from 'vue-property-decorator'; -import { isMobileDevice } from '~/assets/ts/device'; +import { isMobileDevice } from '~/shared/device'; @Component export default class UiField extends Vue { diff --git a/PAMapp/components/Ui/UiPagination.vue b/PAMapp/components/Ui/UiPagination.vue index 40f2709..abb27a9 100644 --- a/PAMapp/components/Ui/UiPagination.vue +++ b/PAMapp/components/Ui/UiPagination.vue @@ -12,7 +12,7 @@ <script lang="ts"> import { Vue, Component, Prop, Emit, Watch } from 'nuxt-property-decorator'; -import { Consultant } from '~/assets/ts/models/consultant.model'; +import { Consultant } from '~/shared/models/consultant.model'; @Component export default class UiPagination extends Vue { diff --git a/PAMapp/components/popUpFrame.vue b/PAMapp/components/popUpFrame.vue index f08993c..cfff207 100644 --- a/PAMapp/components/popUpFrame.vue +++ b/PAMapp/components/popUpFrame.vue @@ -15,7 +15,7 @@ <script lang="ts"> import { Vue, Component, Prop,Emit, Watch, PropSync} from 'vue-property-decorator'; - import { isMobileDevice } from '../assets/ts/device'; + import { isMobileDevice } from '~/shared/device'; @Component export default class PopUpFrame extends Vue { @PropSync('isOpen',{type:Boolean,default:false}) syncIsOpen!:boolean; @@ -32,7 +32,7 @@ private get isUseDialog() : boolean { return this.syncIsOpen && !isMobileDevice(); } - + private set isUseDialog(value: boolean) { this.$emit('update:isOpen',value); } diff --git a/PAMapp/pages/accountSetting/index.vue b/PAMapp/pages/accountSetting/index.vue index 4a1275c..33ecd55 100644 --- a/PAMapp/pages/accountSetting/index.vue +++ b/PAMapp/pages/accountSetting/index.vue @@ -70,8 +70,9 @@ <script lang="ts"> import { Vue,Component } from 'vue-property-decorator' -import { getUserAccountSetting, updateAccountSetting } from '~/assets/ts/api/consultant'; -import { UserSetting } from '~/assets/ts/models/account.model'; +import { UserSetting } from '~/shared/models/account.model'; + +import accountSettingService from '~/shared/services/account-setting.service'; @Component export default class AccountSetting extends Vue { @@ -139,7 +140,7 @@ phone: this.phoneValue, email: this.emailValue } - updateAccountSetting(editSettingInfo).then((res: any) => { + accountSettingService.updateAccountSetting(editSettingInfo).then((res: any) => { console.log('updateRes:', res); this.resetSettingForm(); }); @@ -153,7 +154,7 @@ } mounted(){ - getUserAccountSetting().then((userInfo: UserSetting)=>{ + accountSettingService.getUserAccountSetting().then((userInfo: UserSetting)=>{ this._userSetting = { name: userInfo.name || '', phone: userInfo.phone || '', diff --git a/PAMapp/pages/agentInfo/_agentNo.vue b/PAMapp/pages/agentInfo/_agentNo.vue index 0267976..de479db 100644 --- a/PAMapp/pages/agentInfo/_agentNo.vue +++ b/PAMapp/pages/agentInfo/_agentNo.vue @@ -190,10 +190,10 @@ import { namespace } from 'nuxt-property-decorator'; import { Vue, Component } from 'vue-property-decorator'; -import myConsultantService from '~/assets/ts/services/my-consultant.service'; -import { AgentInfo } from '~/assets/ts/models/agent-info.model'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; -import { Role } from '~/assets/ts//models/enum/Role'; +import myConsultantService from '~/shared/services/my-consultant.service'; +import { AgentInfo } from '~/shared/models/agent-info.model'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { Role } from '~/shared/models/enum/role'; const roleStorage = namespace('localStorage'); diff --git a/PAMapp/pages/consultantLogin/index.vue b/PAMapp/pages/consultantLogin/index.vue index 14fe5ed..3a90f3f 100644 --- a/PAMapp/pages/consultantLogin/index.vue +++ b/PAMapp/pages/consultantLogin/index.vue @@ -58,9 +58,9 @@ <script lang="ts"> import { Vue, Component , namespace } from 'nuxt-property-decorator'; import { AxiosError } from 'axios'; - import { Role } from '~/assets/ts/models/enum/Role'; - import ErrorMessageBox from '~/assets/ts/errorService'; - import loginService from '~/assets/ts/services/login.service' + import { Role } from '~/shared/models/enum/role'; + import ErrorMessageBox from '~/shared/errorService'; + import loginService from '~/shared/services/login.service' const roleStorage = namespace('localStorage'); @Component({ diff --git a/PAMapp/pages/faq.vue b/PAMapp/pages/faq.vue new file mode 100644 index 0000000..d01440f --- /dev/null +++ b/PAMapp/pages/faq.vue @@ -0,0 +1,25 @@ +<template> + <el-tree + :data="faqList" + :props="defaultProps" + icon-class="icon-add" + class="fix-chrome-click--issue" + ></el-tree> +</template> + +<script lang="ts"> +import { Vue, Component } from 'nuxt-property-decorator'; +import { faqList } from '~/shared/const/faqList'; + +@Component +export default class Faq extends Vue { + faqList = faqList; + + defaultProps = { + children: 'details', + label: 'label' + } +} +</script> + +<style lang="scss" scoped></style> diff --git a/PAMapp/pages/index.vue b/PAMapp/pages/index.vue index 55baff7..5e21e53 100644 --- a/PAMapp/pages/index.vue +++ b/PAMapp/pages/index.vue @@ -44,7 +44,7 @@ <script lang="ts"> import { Vue, Component, State, Action, Watch, namespace } from 'nuxt-property-decorator'; - import { Consultant } from '~/assets/ts/models/consultant.model'; + import { Consultant } from '~/shared/models/consultant.model'; const localStorage = namespace('localStorage'); @Component({ diff --git a/PAMapp/pages/login/index.vue b/PAMapp/pages/login/index.vue index 04a446e..8e60407 100644 --- a/PAMapp/pages/login/index.vue +++ b/PAMapp/pages/login/index.vue @@ -335,14 +335,14 @@ <script lang="ts"> import { namespace } from 'nuxt-property-decorator'; import { Vue, Component, Ref } from 'vue-property-decorator'; -import ErrorMessageBox from '~/assets/ts/errorService'; -import { OtpErrorCode } from '~/assets/ts/models/enum/otpErrorCode'; -import { Role } from '~/assets/ts/models/enum/Role'; -import { LoginRequest } from '~/assets/ts/models/loginRequest.model'; -import { LoginVerify } from '~/assets/ts/models/loginVerify.model'; -import { OtpInfo } from '~/assets/ts/models/otpInfo.model'; -import { RegisterInfo } from '~/assets/ts/models/registerInfo'; -import loginService from '~/assets/ts/services/login.service'; +import ErrorMessageBox from '~/shared/errorService'; +import { OtpErrorCode } from '~/shared/models/enum/otpErrorCode'; +import { Role } from '~/shared/models/enum/role'; +import { LoginRequest } from '~/shared/models/loginRequest.model'; +import { LoginVerify } from '~/shared/models/loginVerify.model'; +import { OtpInfo } from '~/shared/models/otpInfo.model'; +import { RegisterInfo } from '~/shared/models/registerInfo'; +import loginService from '~/shared/services/login.service'; const roleStorage = namespace('localStorage'); @@ -415,8 +415,8 @@ clearInterval(this.autoRedirectInterval); } - ////////////////////////////////////////////////////////// + detectContractReadStatus(event: any): void { const scrollTop = Math.round(event.target.scrollTop); const height = event.target.scrollHeight - event.target.clientHeight; @@ -751,10 +751,10 @@ } .pam-register-dialog__contract { - $DEVICE_EXTRA_HEIGHT: 42px; + $DEVICE_EXTRA_HEIGHT: 80px; $ALIGN_PADDING: 60px; - $TOP_CONTENT_HEIGHT: 186px; - $BOTTOM_CONTENT_HEIGHT: 131px; + $TOP_CONTENT_HEIGHT: 211px; + $BOTTOM_CONTENT_HEIGHT: 141px; // text-align:start; max-height: calc(100vh - $DEVICE_EXTRA_HEIGHT - $ALIGN_PADDING - $TOP_CONTENT_HEIGHT - $BOTTOM_CONTENT_HEIGHT); overflow-y: scroll; diff --git a/PAMapp/pages/myAppointmentList.vue b/PAMapp/pages/myAppointmentList.vue index 6578ae8..f5198db 100644 --- a/PAMapp/pages/myAppointmentList.vue +++ b/PAMapp/pages/myAppointmentList.vue @@ -45,7 +45,7 @@ import * as _ from 'lodash'; -import { ClientInfo } from '~/assets/ts/models/client.model'; +import { ClientInfo } from '~/shared/models/client.model'; @Component({ layout: 'home', diff --git a/PAMapp/pages/myAppointmentList/appointmentList.vue b/PAMapp/pages/myAppointmentList/appointmentList.vue index 791b947..617b4fb 100644 --- a/PAMapp/pages/myAppointmentList/appointmentList.vue +++ b/PAMapp/pages/myAppointmentList/appointmentList.vue @@ -25,7 +25,7 @@ <script lang="ts"> import { Vue, Component, State, Watch } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/models/client.model'; +import { ClientInfo } from '~/shared/models/client.model'; @Component export default class ClientReservedList extends Vue { diff --git a/PAMapp/pages/myAppointmentList/contactedList.vue b/PAMapp/pages/myAppointmentList/contactedList.vue index dbd8232..92ecd84 100644 --- a/PAMapp/pages/myAppointmentList/contactedList.vue +++ b/PAMapp/pages/myAppointmentList/contactedList.vue @@ -29,7 +29,7 @@ <script lang="ts"> import { Vue, Component, Watch, State } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/models/client.model'; +import { ClientInfo } from '~/shared/models/client.model'; @Component export default class ClientContactedList extends Vue { diff --git a/PAMapp/pages/myConsultantList.vue b/PAMapp/pages/myConsultantList.vue index d0b0ae0..687547c 100644 --- a/PAMapp/pages/myConsultantList.vue +++ b/PAMapp/pages/myConsultantList.vue @@ -26,7 +26,7 @@ <script lang='ts'> import { Vue, Component, Watch, State, Action } from 'nuxt-property-decorator'; -import { Consultant, ConsultantWithAppointmentId } from '~/assets/ts/models/consultant.model'; +import { Consultant, ConsultantWithAppointmentId } from '~/shared/models/consultant.model'; @Component export default class myConsultantList extends Vue { diff --git a/PAMapp/pages/myConsultantList/consultantList.vue b/PAMapp/pages/myConsultantList/consultantList.vue index 356baeb..0b1d3b6 100644 --- a/PAMapp/pages/myConsultantList/consultantList.vue +++ b/PAMapp/pages/myConsultantList/consultantList.vue @@ -2,6 +2,7 @@ <div> <ConsultantList :agents="pageList" + :title="'consultantList'" ></ConsultantList> <UiPagination @@ -13,7 +14,7 @@ <script lang="ts"> import { Vue, Component, Prop } from 'nuxt-property-decorator'; -import { Consultant } from '~/assets/ts/models/consultant.model'; +import { Consultant } from '~/shared/models/consultant.model'; @Component @@ -26,4 +27,4 @@ } } -</script> \ No newline at end of file +</script> diff --git a/PAMapp/pages/myConsultantList/contactedList.vue b/PAMapp/pages/myConsultantList/contactedList.vue index a9d3d72..1977f6b 100644 --- a/PAMapp/pages/myConsultantList/contactedList.vue +++ b/PAMapp/pages/myConsultantList/contactedList.vue @@ -2,6 +2,7 @@ <div> <ConsultantList :agents="pageList" + :title="'contactedList'" ></ConsultantList> <UiPagination @@ -13,7 +14,7 @@ <script lang="ts"> import { Vue, Component, Prop } from 'nuxt-property-decorator' ; -import { Consultant } from '~/assets/ts/models/consultant.model'; +import { Consultant } from '~/shared/models/consultant.model'; @Component @@ -25,4 +26,4 @@ this.pageList = pageList; } } -</script> \ No newline at end of file +</script> diff --git a/PAMapp/pages/questionnaire/_agentNo.vue b/PAMapp/pages/questionnaire/_agentNo.vue index c9a622f..83f35e9 100644 --- a/PAMapp/pages/questionnaire/_agentNo.vue +++ b/PAMapp/pages/questionnaire/_agentNo.vue @@ -115,8 +115,8 @@ </PopUpFrame> <PopUpFrame :isOpen.sync="sendReserve" @update:isOpen="closeReservePopUp"> - <div class="text--middle mt-30 sendReserve-txt">�����������憿批���</div> - <div class="text--middle sendReserve-txt">�����蝯∴��</div> + <div class="text--middle mt-30 sendReserve-txt">�������</div> + <div class="text--middle sendReserve-txt">�����“�������蝯∴��</div> <div class="text--center mdTxt"> <el-button type="primary" @click="closeReservePopUp"> @@ -140,13 +140,16 @@ <script lang="ts"> import { Vue, Component, State, Action, Watch, namespace } from 'nuxt-property-decorator'; -import { addFavoriteConsultant, appointmentDemand, AppointmentParams, AppointmentRequests ,editAppointment } from '~/assets/ts/api/consultant'; -import { getRequestQuestionFromStorage, getRequestsFromStorage, removeRequestQuestionFromStorage, setRequestsToStorage } from '~/assets/ts/storageRequests'; +import { getRequestsFromStorage, removeRequestQuestionFromStorage, setRequestsToStorage } from '~/shared/storageRequests'; import _ from 'lodash'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { ContactType } from '~/assets/ts/models/enum/ContactType'; -import { Gender } from '~/assets/ts/models/enum/Gender'; -import { RegisterInfo } from '~/assets/ts/models/registerInfo'; + +import queryConsultantService from '~/shared/services/query-consultant.service'; +import appointmentService from '~/shared/services/appointment.service'; +import { Consultant } from '~/shared/models/consultant.model'; +import { ContactType } from '~/shared/models/enum/ContactType'; +import { Gender } from '~/shared/models/enum/Gender'; +import { RegisterInfo } from '~/shared/models/registerInfo'; +import { AppointmentParams, AppointmentRequests } from '~/shared/models/appointment.model'; const roleStorage = namespace('localStorage'); @Component @@ -154,6 +157,7 @@ @State('myConsultantList') myConsultantList!: Consultant[]; @Action storeConsultantList!: () => Promise<number>; @roleStorage.Getter isUserLogin!:boolean; + @roleStorage.State recommendConsultantItem!:string; genderOptions=[ { @@ -300,7 +304,7 @@ private setMyRequest(): void { const storageMyRequest = getRequestsFromStorage(); - const storageMyQuestion = getRequestQuestionFromStorage(); + const storageMyRequirement = this.recommendConsultantItem ? JSON.parse(this.recommendConsultantItem).requirements:[]; if (storageMyRequest) { this.myRequest = { @@ -314,10 +318,10 @@ }; } - if (storageMyQuestion) { + if (storageMyRequirement) { this.myRequest = { ...this.myRequest, - requirement: storageMyQuestion + requirement: storageMyRequirement } removeRequestQuestionFromStorage(); } @@ -349,7 +353,7 @@ if (this.isEditBtn) { this.sentEditAppointmentDemand(); } else { - addFavoriteConsultant([this.$route.params.agentNo]).then(res => this.sentAppointmentDemand()); + queryConsultantService.addFavoriteConsultant([this.$route.params.agentNo]).then(res => this.sentAppointmentDemand()); } } @@ -362,7 +366,7 @@ agentNo: this.$route.params.agentNo }; - appointmentDemand(data).then(res => { + queryConsultantService.appointmentDemand(data).then(res => { this.sendReserve = true; this.myRequest.hopeContactTime = []; setRequestsToStorage(this.myRequest); @@ -377,7 +381,7 @@ id: this.appointmentId, otherRequirement: null } - editAppointment(info).then(res => { + appointmentService.editAppointment(info).then(res => { this.sendReserve = true; this.myRequest.hopeContactTime = []; setRequestsToStorage(this.myRequest); diff --git a/PAMapp/pages/quickFilter/index.vue b/PAMapp/pages/quickFilter/index.vue index 7c8764f..e8f352f 100644 --- a/PAMapp/pages/quickFilter/index.vue +++ b/PAMapp/pages/quickFilter/index.vue @@ -66,10 +66,11 @@ <script lang="ts"> import { Vue, Component, namespace } from 'nuxt-property-decorator'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { fastQuery } from '~/assets/ts/api/consultant'; -import { questionList } from '~/assets/ts/const/quickFilter-questionList'; -import { FastQueryParams, QuestionOption, Selected } from '~/assets/ts/models/quickFilter.model'; + +import queryConsultantService from '~/shared/services/query-consultant.service'; +import { Consultant } from '~/shared/models/consultant.model'; +import { questionList } from '~/shared/const/quickFilter-questionList'; +import { FastQueryParams, QuestionOption, Selected } from '~/shared/models/quick-filter.model'; const localStorage = namespace('localStorage'); @Component @@ -168,7 +169,7 @@ status: '' } - fastQuery(data).then((consultantList) => { + queryConsultantService.fastQuery(data).then((consultantList) => { this.consultantList = consultantList; this.storageQuickFilter(JSON.stringify(this.confirmItem)) }) @@ -232,4 +233,4 @@ } } -</style> \ No newline at end of file +</style> diff --git a/PAMapp/pages/recommendConsultant/index.vue b/PAMapp/pages/recommendConsultant/index.vue index 32fee8b..0d0eb55 100644 --- a/PAMapp/pages/recommendConsultant/index.vue +++ b/PAMapp/pages/recommendConsultant/index.vue @@ -95,8 +95,7 @@ State } from 'nuxt-property-decorator'; import * as _ from 'lodash'; - import { Seniority } from '~/assets/ts/models/enum/seniority'; - import { setRequestQuestionToStorage } from '~/assets/ts/storageRequests'; + import { Seniority } from '~/shared/models/enum/seniority'; const localStorage = namespace('localStorage'); @@ -242,8 +241,6 @@ } async makePair() { await this.storeStrictQueryList(this.strictQueryDto).then(dataLength => { - const questions = this.strictQueryDto.requirements.length ? this.strictQueryDto.requirements : []; - setRequestQuestionToStorage(questions); if (dataLength === 0) { this.isVisiblePopUp = true; return; diff --git a/PAMapp/pages/recommendConsultant/result.vue b/PAMapp/pages/recommendConsultant/result.vue index 9f04e1e..3695bfc 100644 --- a/PAMapp/pages/recommendConsultant/result.vue +++ b/PAMapp/pages/recommendConsultant/result.vue @@ -83,8 +83,8 @@ </template> <script lang="ts"> import {Vue,Component, State, namespace, Action} from 'nuxt-property-decorator'; -import { AgentOfStrictQuery } from '~/assets/ts/api/consultant'; -import { hideReviews } from '~/assets/ts/const/hide-reviews'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { AgentOfStrictQuery } from '~/shared/models/strict-query.model'; const localStorage = namespace('localStorage'); diff --git a/PAMapp/pages/record/index.vue b/PAMapp/pages/record/index.vue index 692841f..db7ac04 100644 --- a/PAMapp/pages/record/index.vue +++ b/PAMapp/pages/record/index.vue @@ -12,7 +12,7 @@ </section> <section class="user-reviews-content"> - <div + <div class="user-reviews-card" v-for="(appointmentLog, index) in myAppointmentReviewLogList" :key="index"> @@ -24,25 +24,25 @@ </div> <div class="user-reviews-card-date"> <div class="date"> - <UiDateFormat + <UiDateFormat :date="appointmentLog.lastModifiedDate" onlyShowSection="DAY" /> </div> <div class="time"> - <UiDateFormat + <UiDateFormat :date="appointmentLog.lastModifiedDate" onlyShowSection="TIME" /> </div> </div> </div> </section> - + </div> </template> <script lang="ts"> import { Vue, Component, Action, State, namespace } from 'nuxt-property-decorator'; -import { AppointmentLog } from '~/assets/ts/models/appointment.model'; +import { AppointmentLog } from '~/shared/models/appointment.model'; const roleStorage = namespace('localStorage'); @@ -63,8 +63,8 @@ this.storeMyAppointmentReviewLog(); } - - + + } </script> <style lang="scss" scoped> @@ -101,7 +101,7 @@ width:52px; .date{ margin-bottom: 2px; - + } } } @@ -112,4 +112,4 @@ flex: 1; } } -</style> \ No newline at end of file +</style> diff --git a/PAMapp/pages/userReviews/index.vue b/PAMapp/pages/userReviews/index.vue index 96b0cd9..6152aad 100644 --- a/PAMapp/pages/userReviews/index.vue +++ b/PAMapp/pages/userReviews/index.vue @@ -1,9 +1,9 @@ -<template> +<template> <div class="reviews-page"> <!-- 憿批恥��遛��漲蝯阡“��� --> <div class="reviews-banner"></div> - <section class="reviews-container"> + <section class="reviews-container"> <section class="reviews-header"> <div class="reviews-header-container"> <div class="reviews-header-title">皛踵�漲隤踵</div> @@ -20,17 +20,17 @@ <div class="card-txt"> 撠憿批�� <span class="p">{{item.name}}</span>��擃���,�蝯虫�嗾憿���? - <div + <div class="card-score" v-if="!isMobileDevice"> <el-rate class="user-reviews-rate" v-model="item.avgScore"></el-rate> </div> </div> </div> - <div + <div class="card-score" v-if="isMobileDevice"> - <el-rate + <el-rate class="user-reviews-rate" v-model="item.avgScore"></el-rate> </div> @@ -49,13 +49,13 @@ <el-button type="primary" class="reviews-dialog-btn" @click.native="reviewsDialogCheck">������</el-button> </div> </PopUpFrame> - + </div> </template> <script lang="ts"> import { Vue,Component } from 'vue-property-decorator' -import { isMobileDevice } from '~/assets/ts/device'; +import { isMobileDevice } from '~/shared/device'; @Component({ @@ -209,4 +209,4 @@ } -</style> \ No newline at end of file +</style> diff --git a/PAMapp/pages/userReviewsRecord/index.vue b/PAMapp/pages/userReviewsRecord/index.vue index a0665d9..2f5471e 100644 --- a/PAMapp/pages/userReviewsRecord/index.vue +++ b/PAMapp/pages/userReviewsRecord/index.vue @@ -12,7 +12,7 @@ </section> <section class="user-reviews-content"> - <div + <div class="user-reviews-card" v-for="(appointmentLog, index) in myAppointmentReviewLogList" :key="index"> @@ -24,25 +24,25 @@ </div> <div class="user-reviews-card-date"> <div class="date"> - <UiDateFormat + <UiDateFormat :date="appointmentLog.lastModifiedDate" onlyShowSection="DAY" /> </div> <div class="time"> - <UiDateFormat + <UiDateFormat :date="appointmentLog.lastModifiedDate" onlyShowSection="TIME" /> </div> </div> </div> </section> - + </div> </template> <script lang="ts"> import { Vue, Component, Action, State, namespace } from 'nuxt-property-decorator'; -import { AppointmentLog } from '~/assets/ts/models/appointment.model'; +import { AppointmentLog } from '~/shared/models/appointment.model'; const roleStorage = namespace('localStorage'); @@ -62,7 +62,7 @@ mounted() { this.storeMyAppointmentReviewLog(); } - + } </script> <style lang="scss" scoped> @@ -99,7 +99,7 @@ width:52px; .date{ margin-bottom: 2px; - + } } } @@ -110,4 +110,4 @@ flex: 1; } } -</style> \ No newline at end of file +</style> diff --git a/PAMapp/shared/const/faqList.ts b/PAMapp/shared/const/faqList.ts new file mode 100644 index 0000000..fc1a25e --- /dev/null +++ b/PAMapp/shared/const/faqList.ts @@ -0,0 +1,43 @@ +export const faqList = [ + { + label: '�����閮餃���', + details: [ + { label: '��暺�銝����內敺�����嚚酉����脰����酉����' } + ] + }, + { + label: '���閮餃���雿瘜�撽�Ⅳ嚗�', + details: [ + { label: '����閮餃���' }, + { label: ' (嚗�) 隢��靽⊥平�Ⅱ隤������隡平蝪∟��誨��陛閮�Ⅱ隤靽⊥平�垢閮剖���敺��銝�撠�������' }, + { label: ' (嚗�) 隢蝣箄���摮蝪∟�捆��征���撌脫遛嚗撌脫遛嚗�����陛閮����������' }, + { label: ' (嚗�) 隢蝣箄�����閮�帘��閮�����嚗�嚗���閮憟賜���嚗�������'}, + { label: ' (嚗�) ��������車��蕪靘頠�����hoscall�瘥����閮剖���靘�陛閮��迂�蝬◤閮剖���'}, + { label: '�mail��閮餃���'}, + { label: ' (嚗�) ����憛怠神��mail撣唾����撓���隤歹��瑼X甇�蝣箇�mail��活����酉����'}, + { label: ' (嚗�) ������mail�����撽�縑���靽∴�遣霅唳����隞嗅銝剛����蒂撠�身摰����隞嗚��'}, + { label: ' (嚗�) ������mail������璈�����縑嚗遣霅唳��蝯⊥��mail�����雿輻�隞�mail撣唾��閮餃���'} + ] + }, + { + label: '�����脰�“������', + details: [ + { label: '(嚗�) ���擐����翰�祟������������脰�“������'}, + { label: '(嚗�) 敹恍�祟�嚗隞仿��遙銝���辣嚗翰��蝚血���瘙�“��������撓������������瘙���憿批���'} + ] + }, + { + label: '������“����', + details: [ + { label: '靘�翰�祟�������������������憿批������脣憿批���������脰�����‵撖怨蝯⊥���閰W����誑���犖鞈���������'} + ] + }, + { + label: '����������楊頛舫��嚗�', + details: [{ label: '���憿批��銝剝���歇�����“����脣������嚗�脰��������楊頛胯��'}] + }, + { + label: '���脰�����“���隞�暻潭撘蝜急���', + details: [{ label: '憿批���������酉��������蝯∟������MAIL嚗銝餉�蝜急��撘��'}] + } +] \ No newline at end of file diff --git a/PAMapp/assets/ts/const/hide-reviews.ts b/PAMapp/shared/const/hide-reviews.ts similarity index 100% rename from PAMapp/assets/ts/const/hide-reviews.ts rename to PAMapp/shared/const/hide-reviews.ts diff --git a/PAMapp/assets/ts/const/quickFilter-questionList.ts b/PAMapp/shared/const/quickFilter-questionList.ts similarity index 93% rename from PAMapp/assets/ts/const/quickFilter-questionList.ts rename to PAMapp/shared/const/quickFilter-questionList.ts index ea35dca..42af218 100644 --- a/PAMapp/assets/ts/const/quickFilter-questionList.ts +++ b/PAMapp/shared/const/quickFilter-questionList.ts @@ -1,4 +1,4 @@ -import { QuestionOption } from "../models/quickFilter.model"; +import { QuestionOption } from "~/shared/models/quick-filter.model"; export const questionList: QuestionOption[] = [ { diff --git a/PAMapp/assets/ts/device.ts b/PAMapp/shared/device.ts similarity index 100% rename from PAMapp/assets/ts/device.ts rename to PAMapp/shared/device.ts diff --git a/PAMapp/assets/ts/errorService.ts b/PAMapp/shared/errorService.ts similarity index 100% rename from PAMapp/assets/ts/errorService.ts rename to PAMapp/shared/errorService.ts diff --git a/PAMapp/assets/ts/models/ConsultantLoginInfo.ts b/PAMapp/shared/models/ConsultantLoginInfo.ts similarity index 100% rename from PAMapp/assets/ts/models/ConsultantLoginInfo.ts rename to PAMapp/shared/models/ConsultantLoginInfo.ts diff --git a/PAMapp/assets/ts/models/account.model.ts b/PAMapp/shared/models/account.model.ts similarity index 100% rename from PAMapp/assets/ts/models/account.model.ts rename to PAMapp/shared/models/account.model.ts diff --git a/PAMapp/assets/ts/models/agent-info.model.ts b/PAMapp/shared/models/agent-info.model.ts similarity index 100% rename from PAMapp/assets/ts/models/agent-info.model.ts rename to PAMapp/shared/models/agent-info.model.ts diff --git a/PAMapp/shared/models/appointment.model.ts b/PAMapp/shared/models/appointment.model.ts new file mode 100644 index 0000000..1774dd6 --- /dev/null +++ b/PAMapp/shared/models/appointment.model.ts @@ -0,0 +1,95 @@ +export interface AppointmentLog { + id : number, + createdDate : Date, + lastModifiedDate: Date, + customerId : number, + agentNo : string, + status : 'UNFILLED' | 'FILLED', + score : number, + agentName : string, + customerName : string, +} +export interface Appointment { + id : number; + phone? : string; + email? : string; + contactType : string; + gender : string; + age : string; + job : string; + requirement : string; + communicateStatus : string; + hopeContactTime : string; + otherRequirement? : string; + appointmentDate : string; + lastModifiedDate : string; + agentNo : string; + customerId : number; + name : string; + consultantViewTime?: string; + consultantReadTime?: string; + satisfactionScore? : number; +}; +export interface AppointmentWithConsultantInfo extends Appointment { + consultantName : string; + consultantAvatar : string; + consultantExpertList: string[] + updateTime : Date | string; + contactStatus : string; +} + +export interface AppointmentDetail { + id : number; + phone : string; + email : string; + contactType : string; + gender : string; + age : string; + job : string; + requirement : string; + communicateStatus: string; + hopeContactTime : string; + otherRequirement : string; + appointmentDate : string; + agentNo : string; + customerId : number; + name : string; +} +export interface AppointmentParams { + phone : string; + email : string; + contactType : string; + gender : string; + age : string; + job : string; + requirement : string; + hopeContactTime: string; + agentNo : string; +} +export interface EditAppointmentParams { + id : number, + phone : string, + email : string, + contactType : string, + gender : string, + age : string, + job : string, + requirement : string, + hopeContactTime : string, + otherRequirement: null +} +export interface AppointmentRequests { + phone : string, + email : string, + contactType : string, + gender : string, + age : string, + job : string, + requirement : string[], + hopeContactTime: ContactTime[], + agentNo : string, +} +export interface ContactTime { +selectWeekOptions : string[], +selectTimesOptions: string[] +} diff --git a/PAMapp/assets/ts/models/client.model.ts b/PAMapp/shared/models/client.model.ts similarity index 100% rename from PAMapp/assets/ts/models/client.model.ts rename to PAMapp/shared/models/client.model.ts diff --git a/PAMapp/assets/ts/models/clientInfo.ts b/PAMapp/shared/models/clientInfo.ts similarity index 100% rename from PAMapp/assets/ts/models/clientInfo.ts rename to PAMapp/shared/models/clientInfo.ts diff --git a/PAMapp/assets/ts/models/consultant.model.ts b/PAMapp/shared/models/consultant.model.ts similarity index 100% rename from PAMapp/assets/ts/models/consultant.model.ts rename to PAMapp/shared/models/consultant.model.ts diff --git a/PAMapp/assets/ts/models/editAppointmentParams.model.ts b/PAMapp/shared/models/editAppointmentParams.model.ts similarity index 100% rename from PAMapp/assets/ts/models/editAppointmentParams.model.ts rename to PAMapp/shared/models/editAppointmentParams.model.ts diff --git a/PAMapp/assets/ts/models/enum/ContactType.ts b/PAMapp/shared/models/enum/ContactType.ts similarity index 100% rename from PAMapp/assets/ts/models/enum/ContactType.ts rename to PAMapp/shared/models/enum/ContactType.ts diff --git a/PAMapp/assets/ts/models/enum/Gender.ts b/PAMapp/shared/models/enum/Gender.ts similarity index 100% rename from PAMapp/assets/ts/models/enum/Gender.ts rename to PAMapp/shared/models/enum/Gender.ts diff --git a/PAMapp/shared/models/enum/Role.ts b/PAMapp/shared/models/enum/Role.ts new file mode 100644 index 0000000..1b2823c --- /dev/null +++ b/PAMapp/shared/models/enum/Role.ts @@ -0,0 +1,5 @@ +export enum Role{ + ADMIN = 'admin', + USER = 'user', + NOT_LOGIN = '' +} diff --git a/PAMapp/assets/ts/models/enum/otpErrorCode.ts b/PAMapp/shared/models/enum/otpErrorCode.ts similarity index 100% rename from PAMapp/assets/ts/models/enum/otpErrorCode.ts rename to PAMapp/shared/models/enum/otpErrorCode.ts diff --git a/PAMapp/assets/ts/models/enum/seniority.ts b/PAMapp/shared/models/enum/seniority.ts similarity index 100% rename from PAMapp/assets/ts/models/enum/seniority.ts rename to PAMapp/shared/models/enum/seniority.ts diff --git a/PAMapp/assets/ts/models/loginRequest.model.ts b/PAMapp/shared/models/loginRequest.model.ts similarity index 100% rename from PAMapp/assets/ts/models/loginRequest.model.ts rename to PAMapp/shared/models/loginRequest.model.ts diff --git a/PAMapp/assets/ts/models/loginSuccessToken.model.ts b/PAMapp/shared/models/loginSuccessToken.model.ts similarity index 100% rename from PAMapp/assets/ts/models/loginSuccessToken.model.ts rename to PAMapp/shared/models/loginSuccessToken.model.ts diff --git a/PAMapp/assets/ts/models/loginVerify.model.ts b/PAMapp/shared/models/loginVerify.model.ts similarity index 100% rename from PAMapp/assets/ts/models/loginVerify.model.ts rename to PAMapp/shared/models/loginVerify.model.ts diff --git a/PAMapp/assets/ts/models/otpInfo.model.ts b/PAMapp/shared/models/otpInfo.model.ts similarity index 100% rename from PAMapp/assets/ts/models/otpInfo.model.ts rename to PAMapp/shared/models/otpInfo.model.ts diff --git a/PAMapp/assets/ts/models/quickFilter.model.ts b/PAMapp/shared/models/quick-filter.model.ts similarity index 72% rename from PAMapp/assets/ts/models/quickFilter.model.ts rename to PAMapp/shared/models/quick-filter.model.ts index 9445659..1364f73 100644 --- a/PAMapp/assets/ts/models/quickFilter.model.ts +++ b/PAMapp/shared/models/quick-filter.model.ts @@ -1,13 +1,13 @@ export interface QuestionOption { - title: string; + title : string; detail: Detail[]; - type: string; - name: string; + type : string; + name : string; } interface Detail { - value: string; - name?: string; + value : string; + name? : string; className: string; } @@ -20,5 +20,5 @@ export interface Selected { option: string; - value: any; -} \ No newline at end of file + value : any; +} diff --git a/PAMapp/assets/ts/models/registerInfo.ts b/PAMapp/shared/models/registerInfo.ts similarity index 100% rename from PAMapp/assets/ts/models/registerInfo.ts rename to PAMapp/shared/models/registerInfo.ts diff --git a/PAMapp/shared/models/reviews.model.ts b/PAMapp/shared/models/reviews.model.ts new file mode 100644 index 0000000..438cdd3 --- /dev/null +++ b/PAMapp/shared/models/reviews.model.ts @@ -0,0 +1,4 @@ +export interface UserReviewsConsultantsParams{ + appointmentId: number, + score : number, +} diff --git a/PAMapp/shared/models/strict-query.model.ts b/PAMapp/shared/models/strict-query.model.ts new file mode 100644 index 0000000..59892c1 --- /dev/null +++ b/PAMapp/shared/models/strict-query.model.ts @@ -0,0 +1,24 @@ + +export interface StrictQueryParams { + gender : string; + avgScore : number; + status : string; //phase 1 disable + area : string; + requirements : string[]; + otherRequirement: string; + seniority : string; + popularTags : string[]; + otherPopularTags: string; +} + +export interface AgentOfStrictQuery { + agentNo : string; + name : string; + img : string; + expertise : string[]; + avgScore : number; + contactStatus: null; + updateTime : null; + seniority : string; + new : boolean; +} diff --git a/PAMapp/shared/services/account-setting.service.ts b/PAMapp/shared/services/account-setting.service.ts new file mode 100644 index 0000000..ab560f5 --- /dev/null +++ b/PAMapp/shared/services/account-setting.service.ts @@ -0,0 +1,17 @@ +import { http } from "./httpClient"; + +import { UserSetting } from "~/shared/models/account.model"; + +class AccountSettingService{ + + //���蝙��董����� + async getUserAccountSetting() : Promise<UserSetting> { + return http.get<UserSetting>('/customer/info').then(res => res.data); + } + //��雿輻�董����� + async updateAccountSetting(params: any) : Promise<any> { + return http.put('/customer/info', params ).then(res => res.data); + } + +} +export default new AccountSettingService(); diff --git a/PAMapp/shared/services/appointment.service.ts b/PAMapp/shared/services/appointment.service.ts new file mode 100644 index 0000000..c8c6f9d --- /dev/null +++ b/PAMapp/shared/services/appointment.service.ts @@ -0,0 +1,46 @@ +import { http } from "./httpClient"; + +import { ClientInfo } from "~/shared/models/client.model"; +import { AppointmentDetail, EditAppointmentParams } from "~/shared/models/appointment.model"; + +class AppointmentService { + + // ��������� + async getMyAppointmentList(): Promise<ClientInfo[]> { + return http.get('/consultant/getMyAppointment').then((res) => { + const hasNewAppointment = res.data.find((appointment: ClientInfo) => !appointment.consultantViewTime); + if (hasNewAppointment) { + this.viewAllAppointment(); + } + return res.data; + }); + } + + // 憿批��憿舐內����蝑敺孛� + private viewAllAppointment(): void { + http.post('/consultant/record/allAppointmentsView').then(); + } + + // 霈�������孛�嚗������������ + recordRead(appointmentId: number): Promise<void> { + return http.post(`/appointment/recordRead/${appointmentId}`); + } + + // �����蝝啁� + async getAppointmentDetail(appointmentId: number):Promise<AppointmentDetail> { + return http.get(`/appointment/getDetail/${appointmentId}`).then((res) => res.data); + } + + // ������ + cancelAppointment(appointmentId: number): Promise<void> { + return http.delete(`/appointment/${appointmentId}`); + } + + // 蝺刻摩���� + editAppointment(editAppointmentParams: EditAppointmentParams) { + return http.put('/appointment', editAppointmentParams); + } + +} + +export default new AppointmentService(); diff --git a/PAMapp/assets/ts/services/httpClient.ts b/PAMapp/shared/services/httpClient.ts similarity index 100% rename from PAMapp/assets/ts/services/httpClient.ts rename to PAMapp/shared/services/httpClient.ts diff --git a/PAMapp/assets/ts/services/login.service.ts b/PAMapp/shared/services/login.service.ts similarity index 100% rename from PAMapp/assets/ts/services/login.service.ts rename to PAMapp/shared/services/login.service.ts diff --git a/PAMapp/shared/services/my-consultant.service.ts b/PAMapp/shared/services/my-consultant.service.ts new file mode 100644 index 0000000..ed06483 --- /dev/null +++ b/PAMapp/shared/services/my-consultant.service.ts @@ -0,0 +1,42 @@ +import { http } from "./httpClient"; + +import { AgentInfo } from '~/shared/models/agent-info.model'; +import { Consultant } from "../models/consultant.model"; + +class MyConsultantService { + + async getFavoriteConsultantList(): Promise<Consultant[]> { + return http.get<Consultant[]>('/consultant/favorite').then((res) => { + const hasNewConsultant = res.data.find((consultant) => !consultant.customerViewTime); + if (hasNewConsultant) { + this.viewMyConsultantList(); + }; + return res.data; + }); + } + + private viewMyConsultantList(): void { + http.post('/consultant/favorite/view'); + } + + //憿批�底蝝啗��� + async getConsultantDetail(agentNo:string): Promise<AgentInfo> { + return http.get('/consultant/detail', {params:{agentNo:agentNo}}).then((res) => res.data); + } + + // 蝘駁憿批�� + async deleteConsultant(agentId: string) { + return http.delete(`/consultant/favorite/${agentId}`); + } + + // 璅�撌脰蝯� + markAsContact(appointmentId: number): Promise<void> { + // TODO: 頝�垢蝣箄���ㄐ��� API 銝�府���� void, ���府���敺���� - Ben 2021/11/16 + // return http.post('/appointment/markAsContacted/'+appointmentId, undefined, {headers}) + // .then(res => res.data) + return http.post(`/appointment/markAsContacted/${appointmentId}`); + } + +} + +export default new MyConsultantService(); diff --git a/PAMapp/shared/services/query-consultant.service.ts b/PAMapp/shared/services/query-consultant.service.ts new file mode 100644 index 0000000..a11cd13 --- /dev/null +++ b/PAMapp/shared/services/query-consultant.service.ts @@ -0,0 +1,37 @@ +import { http } from "./httpClient"; + +import { Consultant } from "~/shared/models/consultant.model"; +import { FastQueryParams } from "~/shared/models/quick-filter.model"; +import { AgentOfStrictQuery, StrictQueryParams } from "~/shared/models/strict-query.model"; +import { AppointmentParams } from "~/shared/models/appointment.model"; + +class QueryConsultantService { + + // ��靽憿批�� + async getRecommendConsultantList(): Promise<Consultant[]> { + return http.get<Consultant[]>('/consultant/recommend').then((res) => res.data); + } + + // 敹恍�祟� + async fastQuery(data: FastQueryParams): Promise<Consultant[]> { + return http.post<Consultant[]>('/consultant/fastQuery', data).then(res => res.data); + } + + // ������ + async strictQuery(data:StrictQueryParams): Promise<AgentOfStrictQuery[]>{ + return http.post('/consultant/strictQuery', data).then((res) => res.data); + } + + // ��憿批�� + async addFavoriteConsultant(agentNoList: string[]) { + return http.post('/consultant/favorite', { agentNoList }); + } + + // ����岷��� + async appointmentDemand(data: AppointmentParams) { + return http.post('/appointment/customer/create', data); + } + +} + +export default new QueryConsultantService(); diff --git a/PAMapp/shared/services/reviews.service.ts b/PAMapp/shared/services/reviews.service.ts new file mode 100644 index 0000000..0580c8b --- /dev/null +++ b/PAMapp/shared/services/reviews.service.ts @@ -0,0 +1,18 @@ +import { http } from "./httpClient"; + +import { UserReviewsConsultantsParams } from "../models/reviews.model"; +import { AppointmentLog } from "../models/appointment.model"; + +class ReviewsService { + + //摰X�脰�遛��漲閰�� + userReviewsConsultants(data: UserReviewsConsultantsParams) { + return http.post('/satisfaction/create', data ); + } + //������������ + async getMyReviewLog(): Promise<AppointmentLog[]> { + return http.get('/satisfaction/getMySatisfaction').then(res => res.data); + } +} + +export default new ReviewsService(); diff --git a/PAMapp/assets/ts/storageConsultant.ts b/PAMapp/shared/storageConsultant.ts similarity index 100% rename from PAMapp/assets/ts/storageConsultant.ts rename to PAMapp/shared/storageConsultant.ts diff --git a/PAMapp/assets/ts/storageRequests.ts b/PAMapp/shared/storageRequests.ts similarity index 91% rename from PAMapp/assets/ts/storageRequests.ts rename to PAMapp/shared/storageRequests.ts index 4b499a5..a50917f 100644 --- a/PAMapp/assets/ts/storageRequests.ts +++ b/PAMapp/shared/storageRequests.ts @@ -1,4 +1,4 @@ -import { AppointmentRequests } from "./api/consultant"; +import { AppointmentRequests } from "./models/appointment.model"; export function getRequestsFromStorage(): AppointmentRequests { const requests = localStorage.getItem('myRequests'); diff --git a/PAMapp/store/index.ts b/PAMapp/store/index.ts index 74ff925..25d55a2 100644 --- a/PAMapp/store/index.ts +++ b/PAMapp/store/index.ts @@ -1,15 +1,17 @@ +import { StrictQueryParams } from '~/shared/models/strict-query.model'; import { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators' -import { getMyReviewLog } from '~/assets/ts/api/appointment'; -import { recommend, AgentOfStrictQuery, addFavoriteConsultant, deleteConsultant, strictQuery } from '~/assets/ts/api/consultant'; -import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant'; +import { getFavoriteFromStorage, setFavoriteToStorage } from '~/shared/storageConsultant'; -import myConsultantService from '~/assets/ts/services/my-consultant.service'; -import appointmentService from '~/assets/ts/services/appointment.service'; +import myConsultantService from '~/shared/services/my-consultant.service'; +import queryConsultantService from '~/shared/services/query-consultant.service'; +import appointmentService from '~/shared/services/appointment.service'; +import reviewsService from '~/shared/services/reviews.service'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { AppointmentLog } from '~/assets/ts/models/appointment.model'; -import { ClientInfo } from '~/assets/ts/models/client.model'; +import { Consultant } from '~/shared/models/consultant.model'; +import { AppointmentLog } from '~/shared/models/appointment.model'; +import { ClientInfo } from '~/shared/models/client.model'; +import { AgentOfStrictQuery } from '~/shared/models/strict-query.model'; @Module export default class Store extends VuexModule { recommendList: Consultant[] = []; @@ -57,7 +59,7 @@ @Action storeRecommendList() { - recommend().then(data => { + queryConsultantService.getRecommendConsultantList().then(data => { this.context.commit('updateRecommend', data) }) } @@ -74,7 +76,7 @@ if (localData?.length) { const agentNoList = localData.map(i => i.agentNo) - await addFavoriteConsultant(agentNoList).then(res => { + await queryConsultantService.addFavoriteConsultant(agentNoList).then(res => { localStorage.removeItem('favoriteConsultant') }) } @@ -94,7 +96,7 @@ if (!this.isUserLogin) { setFavoriteToStorage(left); } else { - await deleteConsultant(agentNo) + await myConsultantService.deleteConsultant(agentNo) } this.context.commit('updateConsultantList', left) @@ -109,7 +111,7 @@ if (!found) { const newData = [consultantToAdd].concat(this.myConsultantList); if (this.isUserLogin) { - await addFavoriteConsultant([consultantToAdd.agentNo]) + await queryConsultantService.addFavoriteConsultant([consultantToAdd.agentNo]) } else { setFavoriteToStorage(newData); } @@ -134,7 +136,7 @@ @Action storeMyAppointmentReviewLog() { - getMyReviewLog().then((data) => { + reviewsService.getMyReviewLog().then((data) => { const dataWithLatestDate = data.map((item) => { return { ...item, @@ -154,11 +156,11 @@ } @Action - async storeStrictQueryList(strictQueryDto) { - return await strictQuery(strictQueryDto).then(res=>{ + async storeStrictQueryList(strictQueryDto: StrictQueryParams) { + return await queryConsultantService.strictQuery(strictQueryDto).then(res=>{ this.context.commit('localStorage/storageRecommendConsultant', JSON.stringify(strictQueryDto)); - this.context.commit('updateStrictQueryList', res.data) - return res.data.length; + this.context.commit('updateStrictQueryList', res) + return res.length; }); } diff --git a/PAMapp/store/localStorage.ts b/PAMapp/store/localStorage.ts index e31bf7c..aefef14 100644 --- a/PAMapp/store/localStorage.ts +++ b/PAMapp/store/localStorage.ts @@ -1,6 +1,6 @@ import { Module, Mutation, VuexModule ,Action } from 'vuex-module-decorators'; -import { Role } from '~/assets/ts/models/enum/Role'; -import { Selected } from '~/assets/ts/models/quickFilter.model'; +import { Role } from '~/shared/models/enum/role'; +import { Selected } from '~/shared/models/quick-filter.model'; @Module export default class LocalStorage extends VuexModule { id_token = localStorage.getItem('id_token'); diff --git "a/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt" "b/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt" index 9401136..ed11335 100644 --- "a/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt" +++ "b/pamapi/src/doc/\351\241\247\345\225\217API/\345\232\264\351\201\270\351\205\215\345\260\215.txt" @@ -8,7 +8,7 @@ "area":"獢��", "requirements": ["�摨瑁����","靽�瑼�/閬��"], "otherRequirement": "���", - "seniority": // "鞈楛"撣�"SENIOR"��"撟渲��"撣�"YOUNG"��"銝��"撣�"UNLIMITED" + "seniority": "SENIOR" // "鞈楛"撣�"SENIOR"��"撟渲��"撣�"YOUNG"��"銝��"撣�"UNLIMITED" "popularTags":["��","憭梯","����"], "otherPopularTags":"���", } diff --git "a/pamapi/src/doc/\351\241\247\345\225\217API/\345\277\253\351\200\237\347\257\251\351\201\270.txt" "b/pamapi/src/doc/\351\241\247\345\225\217API/\345\277\253\351\200\237\347\257\251\351\201\270.txt" index b5a98d3..12f1f08 100644 --- "a/pamapi/src/doc/\351\241\247\345\225\217API/\345\277\253\351\200\237\347\257\251\351\201\270.txt" +++ "b/pamapi/src/doc/\351\241\247\345\225\217API/\345\277\253\351\200\237\347\257\251\351\201\270.txt" @@ -5,7 +5,8 @@ "gender": "female", "communicationStyles": [], "avgScore": 4, - "status": "online" + "status": "online", + "seniority": "SENIOR" // "鞈楛"撣�"SENIOR"��"撟渲��"撣�"YOUNG"��"銝��"撣�"UNLIMITED" } response body: diff --git "a/pamapi/src/doc/\351\241\247\345\225\217API/\346\214\207\345\256\232\351\241\247\345\225\217\350\251\263\347\264\260\350\263\207\350\250\212.txt" "b/pamapi/src/doc/\351\241\247\345\225\217API/\346\214\207\345\256\232\351\241\247\345\225\217\350\251\263\347\264\260\350\263\207\350\250\212.txt" index 4207ebd..008b9c8 100644 --- "a/pamapi/src/doc/\351\241\247\345\225\217API/\346\214\207\345\256\232\351\241\247\345\225\217\350\251\263\347\264\260\350\263\207\350\250\212.txt" +++ "b/pamapi/src/doc/\351\241\247\345\225\217API/\346\214\207\345\256\232\351\241\247\345\225\217\350\251\263\347\264\260\350\263\207\350\250\212.txt" @@ -20,9 +20,6 @@ "鞈頧宏" ], "concept": "憯賡頝臭���敺���策摰X靽∩遙����������憟賜�瘜��平隞乩�����蝘���鈭箇敹急����縑敹萄����旦�靽∴���末��平��犖�嚗������憿敹鈭箇����瘞貊���ˊ�鈭平��������", - "experiences": [ - "�憭扯瓷��頂", - "蝢��移蝞葦��" - ], + "experiences": "�憭扯瓷��頂,蝢��移蝞葦��" "awards": "��嚗�2020撟港摩璅�之��雿單平�� ����嚗犖頨思�璆剖�霅��馳�隞�霅�犖頨思�隞���犖霅�瓷�靽隞���犖霅" } diff --git a/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java b/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java index df3f387..02266e0 100644 --- a/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java +++ b/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java @@ -18,6 +18,8 @@ private String eServiceLoginUrl; private String eServiceLoginFunc; private String eServiceLoginSys; + private SMS sms; + private Email email; private String fileFolderPath; public boolean isMockLogin() { @@ -76,6 +78,81 @@ this.eServiceLoginSys = eServiceLoginSys; } + public SMS getSms() { + return sms; + } + + public void setSms(SMS sms) { + this.sms = sms; + } + + public Email getEmail() { + return email; + } + + public void setEmail(Email email) { + this.email = email; + } + + public static class SMS { + private String url; + private String sourceCode; + private String sender; + private String smsType; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getSourceCode() { + return sourceCode; + } + + public void setSourceCode(String sourceCode) { + this.sourceCode = sourceCode; + } + + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public String getSmsType() { + return smsType; + } + + public void setSmsType(String smsType) { + this.smsType = smsType; + } + } + + public static class Email { + private String url; + private String functionId; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getFunctionId() { + return functionId; + } + + public void setFunctionId(String functionId) { + this.functionId = functionId; + } + } public String getFileFolderPath() { return fileFolderPath; } @@ -83,6 +160,5 @@ public void setFileFolderPath(String fileFolderPath) { this.fileFolderPath = fileFolderPath; } - - + } diff --git a/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java b/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java index 6fca6d3..45c2e6d 100644 --- a/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java +++ b/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java @@ -82,6 +82,7 @@ .antMatchers("/api/register").permitAll() .antMatchers("/api/activate").permitAll() .antMatchers("/api/testLogin/**").permitAll() + .antMatchers("/api/test/sendMsg/**").permitAll() .antMatchers("/api/otp/**").permitAll() .antMatchers("/api/login/validate/**").permitAll() .antMatchers("/api/eService/authenticate").permitAll() diff --git a/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java b/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java index 9a90c5e..06c3fe0 100644 --- a/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java +++ b/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java @@ -8,6 +8,7 @@ import com.pollex.pam.security.token.EServiceAuthenticationToken; import com.pollex.pam.service.LoginRecordService; import com.pollex.pam.service.dto.EServiceResponse; +import com.pollex.pam.service.util.HttpRequestUtil; import com.pollex.pam.web.rest.errors.EServiceErrorException; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; @@ -21,7 +22,6 @@ import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.security.authentication.AuthenticationServiceException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; @@ -105,7 +105,7 @@ private ResponseEntity<EServiceResponse> loginByEService(String account, String paxxword) throws JsonProcessingException, GeneralSecurityException { RestTemplate restTemplate = getTrustAllRestTemplate(); - settingMessageConvertesToSpecifyType(restTemplate, MediaType.ALL); + settingMessageConvertersToSpecifyType(restTemplate, MediaType.ALL); String urlTemplate = UriComponentsBuilder.fromHttpUrl(applicationProperty.geteServiceLoginUrl()) .queryParam("func", applicationProperty.geteServiceLoginFunc()) @@ -140,7 +140,7 @@ return new RestTemplate(requestFactory); } - private void settingMessageConvertesToSpecifyType(RestTemplate restTemplate, MediaType mediaType) { + private void settingMessageConvertersToSpecifyType(RestTemplate restTemplate, MediaType mediaType) { List<HttpMessageConverter<?>> messageConverters = new ArrayList<>(); MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); converter.setSupportedMediaTypes(Collections.singletonList(mediaType)); diff --git a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java index dda2ade..9613973 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java +++ b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java @@ -36,6 +36,15 @@ set.add(criteriaBuilder.greaterThanOrEqualTo(root.get("avgScore"), param.getAvgScore().intValue())); } + if(StringUtils.isNotEmpty(param.getSeniority()) && !StringUtils.equals(UNLIMITED, param.getSeniority())) { + if(YOUNG.equals(param.getSeniority())) { + set.add(criteriaBuilder.lessThanOrEqualTo(root.get("seniorityYear"), 5)); + } + else if(SENIOR.equals(param.getSeniority())) { + set.add(criteriaBuilder.greaterThan(root.get("seniorityYear"), 5)); + } + } + Predicate[] predicates = new Predicate[set.size()]; predicates = set.toArray(predicates); return criteriaBuilder.and(predicates); diff --git a/pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java b/pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java new file mode 100644 index 0000000..650fbac --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java @@ -0,0 +1,107 @@ +package com.pollex.pam.service; + +import com.pollex.pam.config.ApplicationProperties; +import com.pollex.pam.config.ApplicationProperties.SMS; +import com.pollex.pam.service.dto.*; +import com.pollex.pam.service.util.HttpRequestUtil; +import com.pollex.pam.web.rest.errors.SendEmailFailException; +import com.pollex.pam.web.rest.errors.SendSMSFailException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Base64; +import java.util.Base64.Encoder; +import java.util.Collections; +import java.util.List; +import java.util.UUID; + +@Service +public class SendMsgService { + + private static final Logger log = LoggerFactory.getLogger(SendMsgService.class); + private final Encoder encoder = Base64.getEncoder(); + + @Autowired + ApplicationProperties applicationProperties; + + public void sendMsgBySMS(String toMobile, String content) throws SendSMSFailException{ + SMS smsProperties = applicationProperties.getSms(); + + SendSMSRequest sendSMSRequest = new SendSMSRequest(); + sendSMSRequest.setpKey(UUID.randomUUID().toString()); + sendSMSRequest.setSourceCode(smsProperties.getSourceCode()); + sendSMSRequest.setSender(smsProperties.getSender()); + sendSMSRequest.setMsgTypeSet(smsProperties.getSmsType()); + sendSMSRequest.setSendTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:00"))); + sendSMSRequest.setSubject(""); + sendSMSRequest.setActivityId(""); + + SMSDetail smsDetail = new SMSDetail(); + smsDetail.setMobile(toMobile); + smsDetail.setContent(encoder.encodeToString(content.getBytes(StandardCharsets.UTF_8))); + + sendSMSRequest.setDetail(Collections.singletonList(smsDetail)); + + try { + ResponseEntity<SendSMSResponse> responseEntity = HttpRequestUtil.postWithJson(smsProperties.getUrl(), sendSMSRequest, SendSMSResponse.class); + + log.debug("response status code = {}", responseEntity.getStatusCode()); + log.debug("smsResponse = {}", responseEntity.getBody()); + + // todo ����閬�����隤方������葫�� + } + catch (Exception e) { + log.debug("send sms failed!", e); + throw new SendSMSFailException(); + } + } + + public void sendMsgByEmail(String from, String to, String subject, String content, boolean htmlFormat) throws SendEmailFailException{ + sendMsgByEmail(from, to, subject, content, htmlFormat, Collections.emptyList(), Collections.emptyList()); + } + + public void sendMsgByEmail( + String fromAddress, String toAddress, String subject, String content, boolean htmlFormat, List<String> toCCAddress, + List<String> attachments) throws SendEmailFailException + { + SendMailRequest sendMailRequest = new SendMailRequest(); + sendMailRequest.setSendMailAddresses(Collections.singletonList(toAddress)); + sendMailRequest.setFrom(fromAddress); + sendMailRequest.setContent(content); + sendMailRequest.setSubject(subject); + sendMailRequest.setSendCCMailAddresses(toCCAddress); + sendMailRequest.setAttachments(attachments); + sendMailRequest.setHtmlFormat(htmlFormat); + sendMailRequest.setFunctionId(applicationProperties.getEmail().getFunctionId()); + + sendMsgByEmail(sendMailRequest); + } + + public void sendMsgByEmail(SendMailRequest sendMailRequest) throws SendEmailFailException{ + try { + ResponseEntity<SendMailResponse> responseEntity = + HttpRequestUtil.postWithJson( applicationProperties.getEmail().getUrl(), sendMailRequest, SendMailResponse.class); + + SendMailResponse sendMailResponse = responseEntity.getBody(); + log.debug("response status code = {}", responseEntity.getStatusCode()); + log.debug("emailResponse = {}", responseEntity.getBody()); + + if(sendMailResponse == null || sendMailResponse.getData() == null || "ADDED".equalsIgnoreCase(sendMailResponse.getData().getMessageStatus())) { + throw new SendEmailFailException(); + } + } + catch (SendEmailFailException e) { + throw e; + } + catch (Exception e) { + log.debug("send email failed!", e); + throw new SendEmailFailException(); + } + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java index bcd1d92..30c51a1 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java @@ -20,7 +20,7 @@ private Number evaluation; private List<String> expertise; private String concept; - private List<String> experiences; + private String experiences; private String awards; public String getName() { @@ -143,11 +143,11 @@ this.concept = concept; } - public List<String> getExperiences() { + public String getExperiences() { return experiences; } - public void setExperiences(List<String> experiences) { + public void setExperiences(String experiences) { this.experiences = experiences; } diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java b/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java index 76471f5..a8c443d 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java @@ -5,10 +5,12 @@ import java.util.List; public class FastQueryConsultantParam { + private GenderEnum gender; private List<String> communicationStyles; private Number avgScore; private String status; + private String seniority; public GenderEnum getGender() { return gender; @@ -41,4 +43,12 @@ public void setStatus(String status) { this.status = status; } + + public String getSeniority() { + return seniority; + } + + public void setSeniority(String seniority) { + this.seniority = seniority; + } } diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java new file mode 100644 index 0000000..8cbc3da --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java @@ -0,0 +1,26 @@ +package com.pollex.pam.service.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class SMSDetail { + private String mobile; + private String content; + + @JsonProperty("mobile") + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + @JsonProperty("content") + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java new file mode 100644 index 0000000..2470a67 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java @@ -0,0 +1,103 @@ +package com.pollex.pam.service.dto; + +import java.util.List; + +public class SendMailRequest { + + /** + * �隞嗉�� + */ + private List<String> sendMailAddresses; + /** + * �� + */ + private List<String> sendCCMailAddresses; + /** + * 銝駁�� + */ + private String subject; + /** + * ���� + */ + private String content; + /** + * 撖辣�� + */ + private String from; + /** + * ��辣頝臬�� + */ + private List<String> attachments; + /** + * �� html format + */ + private boolean htmlFormat; + /** + * �摰儔閮���� (������������神甇餃�pos) + */ + private String functionId; + + public List<String> getSendMailAddresses() { + return sendMailAddresses; + } + + public void setSendMailAddresses(List<String> sendMailAddresses) { + this.sendMailAddresses = sendMailAddresses; + } + + public List<String> getSendCCMailAddresses() { + return sendCCMailAddresses; + } + + public void setSendCCMailAddresses(List<String> sendCCMailAddresses) { + this.sendCCMailAddresses = sendCCMailAddresses; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public List<String> getAttachments() { + return attachments; + } + + public void setAttachments(List<String> attachments) { + this.attachments = attachments; + } + + public boolean isHtmlFormat() { + return htmlFormat; + } + + public void setHtmlFormat(boolean htmlFormat) { + this.htmlFormat = htmlFormat; + } + + public String getFunctionId() { + return functionId; + } + + public void setFunctionId(String functionId) { + this.functionId = functionId; + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java new file mode 100644 index 0000000..808dcf6 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java @@ -0,0 +1,39 @@ +package com.pollex.pam.service.dto; + +public class SendMailResponse { + private Data data; + + public Data getData() { + return data; + } + + public void setData(Data data) { + this.data = data; + } + + public static class Data { + private String messageStatus; + + public String getMessageStatus() { + return messageStatus; + } + + public void setMessageStatus(String messageStatus) { + this.messageStatus = messageStatus; + } + + @Override + public String toString() { + return "Data{" + + "messageStatus='" + messageStatus + '\'' + + '}'; + } + } + + @Override + public String toString() { + return "SendMailResponse{" + + "data=" + data + + '}'; + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java new file mode 100644 index 0000000..de3aa42 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java @@ -0,0 +1,99 @@ +package com.pollex.pam.service.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import java.util.List; + +public class SendSMSRequest { + + private String pKey; + private String sourceCode; + private String sender; + private String sendTime; + private String subject; + private String activityId; + private String mmsPath; + private String msgTypeSet; + private List<SMSDetail> detail; + + @JsonProperty("p_key") + public String getpKey() { + return pKey; + } + + public void setpKey(String pKey) { + this.pKey = pKey; + } + + @JsonProperty("source_code") + public String getSourceCode() { + return sourceCode; + } + + public void setSourceCode(String sourceCode) { + this.sourceCode = sourceCode; + } + + @JsonProperty("sender") + public String getSender() { + return sender; + } + + public void setSender(String sender) { + this.sender = sender; + } + + @JsonProperty("send_time") + public String getSendTime() { + return sendTime; + } + + public void setSendTime(String sendTime) { + this.sendTime = sendTime; + } + + @JsonProperty("subject") + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + @JsonProperty("activity_id") + public String getActivityId() { + return activityId; + } + + public void setActivityId(String activityId) { + this.activityId = activityId; + } + + @JsonProperty("mms_path") + public String getMmsPath() { + return mmsPath; + } + + public void setMmsPath(String mmsPath) { + this.mmsPath = mmsPath; + } + + @JsonProperty("msg_type_set") + public String getMsgTypeSet() { + return msgTypeSet; + } + + public void setMsgTypeSet(String msgTypeSet) { + this.msgTypeSet = msgTypeSet; + } + + @JsonProperty("detail") + public List<SMSDetail> getDetail() { + return detail; + } + + public void setDetail(List<SMSDetail> detail) { + this.detail = detail; + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java new file mode 100644 index 0000000..9073766 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java @@ -0,0 +1,60 @@ +package com.pollex.pam.service.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class SendSMSResponse { + + @JsonProperty("p_key") + private String pKey; + + @JsonProperty("return_code") + private String returnCode; + + @JsonProperty("msg_batchNo") + private String msgBatchNo; + + @JsonProperty("error_msg") + private String errorMsg; + + public String getpKey() { + return pKey; + } + + public void setpKey(String pKey) { + this.pKey = pKey; + } + + public String getReturnCode() { + return returnCode; + } + + public void setReturnCode(String returnCode) { + this.returnCode = returnCode; + } + + public String getMsgBatchNo() { + return msgBatchNo; + } + + public void setMsgBatchNo(String msgBatchNo) { + this.msgBatchNo = msgBatchNo; + } + + public String getErrorMsg() { + return errorMsg; + } + + public void setErrorMsg(String errorMsg) { + this.errorMsg = errorMsg; + } + + @Override + public String toString() { + return "SendSMSResponse{" + + "pKey='" + pKey + '\'' + + ", returnCode='" + returnCode + '\'' + + ", msgBatchNo='" + msgBatchNo + '\'' + + ", errorMsg='" + errorMsg + '\'' + + '}'; + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java index e8e4963..e92150e 100644 --- a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java +++ b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java @@ -63,7 +63,7 @@ consultantDetailDTO.setAwards(source.getAward()); consultantDetailDTO.setImg(source.getPhotoPath()); consultantDetailDTO.setExpertise(splitStringWithChar(source.getExpertise())); - consultantDetailDTO.setExperiences(splitStringWithChar(source.getExperience())); + consultantDetailDTO.setExperiences(source.getExperience()); // todo 瘙箏����漲 consultantDetailDTO.setSuitability(50); diff --git a/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java b/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java new file mode 100644 index 0000000..48cc43b --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java @@ -0,0 +1,114 @@ +package com.pollex.pam.service.util; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.http.conn.ssl.NoopHostnameVerifier; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContexts; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.*; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +import javax.net.ssl.SSLContext; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.Map; +import java.util.Set; + +public final class HttpRequestUtil { + private static final Logger log = LoggerFactory.getLogger(HttpRequestUtil.class); + + private HttpRequestUtil() {} + + public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType) + throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException + { + return getWithJson(url, responseType, null); + } + + public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType, Map<String, String> addedHeaders) + throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException + { + RestTemplate restTemplate = getTrustAllRestTemplate(); + HttpHeaders headers = new HttpHeaders(); + setHeaders(headers, addedHeaders); + + HttpEntity<String> httpEntity = new HttpEntity<>(headers); + + log.debug("HttpRequestUtil get url: {}", url); + log.debug("httpEntity = {}", httpEntity); + return restTemplate.exchange(url, HttpMethod.GET, httpEntity, responseType); + } + + public static ResponseEntity<String> postWithJson(String url, Object jsonData, Map<String, String> headers) + throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException + { + return postWithJson(url, jsonData, String.class, headers); + } + + public static ResponseEntity<String> postWithJson(String url, Object jsonData) + throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException + { + return postWithJson(url, jsonData, String.class, null); + } + + public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType) + throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException + { + return postWithJson(url, jsonData, responseType, null); + } + + public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType, Map<String, String> addedHeaders) + throws JsonProcessingException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException { + + String parameters = new ObjectMapper().writeValueAsString(jsonData); + // ���摨阡��脰��log���� + if(parameters.length() < 1000){ + log.debug("parameters : {}",parameters); + } + + RestTemplate restTemplate = getTrustAllRestTemplate(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + setHeaders(headers, addedHeaders); + + HttpEntity<String> entity = new HttpEntity<>(parameters, headers); + + log.debug("rest post with json, url = {}", url); + return restTemplate.exchange(url, HttpMethod.POST, entity, responseType); + } + + private static void setHeaders(HttpHeaders headers, Map<String, String> addedHeaders) { + if(addedHeaders != null && addedHeaders.size() > 0) { + Set<String> keys = addedHeaders.keySet(); + for (String key : keys) { + String headerValue = addedHeaders.get(key); + headers.set(key, headerValue); + log.info("http cust header key: {}", key); + log.info("http cust header headerValue: {}", headerValue); + } + } + } + + private static RestTemplate getTrustAllRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException { + SSLContext sslContext = SSLContexts.custom() + .loadTrustMaterial(null, (X509Certificate[] x509Certs, String s) -> true) + .build(); + SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier()); + CloseableHttpClient httpClient = HttpClients.custom() + .setSSLSocketFactory(csf) + .build(); + HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(); + requestFactory.setHttpClient(httpClient); + requestFactory.setConnectTimeout(300000); + requestFactory.setReadTimeout(300000); + return new RestTemplate(requestFactory); + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java new file mode 100644 index 0000000..c9ff370 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java @@ -0,0 +1,33 @@ +package com.pollex.pam.web.rest; + +import com.pollex.pam.service.SendMsgService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@Deprecated +@RestController +@RequestMapping("/api/test/sendMsg") +public class TestSendMsgResource { + + @Autowired + SendMsgService sendMsgService; + + @GetMapping("/bySMS") + public ResponseEntity<Void> bySMS(@RequestParam String toMobile, @RequestParam String content) { + sendMsgService.sendMsgBySMS(toMobile, content); + return ResponseEntity.noContent().build(); + } + + @GetMapping("/byEmail") + public ResponseEntity<Void> byEmail( + @RequestParam String from, + @RequestParam String to, + @RequestParam String subject, + @RequestParam String content, + @RequestParam boolean htmlFormat + ) { + sendMsgService.sendMsgByEmail(from, to, subject, content, htmlFormat); + return ResponseEntity.noContent().build(); + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java new file mode 100644 index 0000000..b43324b --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java @@ -0,0 +1,12 @@ +package com.pollex.pam.web.rest.errors; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "send email failed") +public class SendEmailFailException extends RuntimeException { + public SendEmailFailException() {} + public SendEmailFailException(String message) { + super(message); + } +} diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java new file mode 100644 index 0000000..acfeda4 --- /dev/null +++ b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java @@ -0,0 +1,12 @@ +package com.pollex.pam.web.rest.errors; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "send email failed") +public class SendSMSFailException extends RuntimeException{ + public SendSMSFailException(){} + public SendSMSFailException(String message) { + super(message); + } +} diff --git a/pamapi/src/main/resources/config/application-dev.yml b/pamapi/src/main/resources/config/application-dev.yml index 289276e..ce15a69 100644 --- a/pamapi/src/main/resources/config/application-dev.yml +++ b/pamapi/src/main/resources/config/application-dev.yml @@ -119,4 +119,12 @@ e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate e-service-login-func: ValidateUsrLogin e-service-login-sys: epos + sms: + url: https://localhost:8081/testSMS + source-code: ePos + sender: POS + sms-type: '0017' + email: + url: https://localhost:8081/testEmail + function-id: epos file-folder-path: D://pam_file diff --git a/pamapi/src/main/resources/config/application-sit.yml b/pamapi/src/main/resources/config/application-sit.yml index 119c3d4..d438278 100644 --- a/pamapi/src/main/resources/config/application-sit.yml +++ b/pamapi/src/main/resources/config/application-sit.yml @@ -117,4 +117,12 @@ e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate e-service-login-func: ValidateUsrLogin e-service-login-sys: epos + sms: + url: https://vtwlifewinbo66.pru.intranet.asia/MesgQueueMgmnt/rest/smsSendMsgResource + source-code: ePos + sender: POS + sms-type: '0017' + email: + url: https://vtwlifeopensysuat.pru.intranet.asia/tsgw/mq/mqSendMail + function-id: epos file-folder-path: D://pam_file diff --git a/pamapi/src/main/resources/config/application-uat.yml b/pamapi/src/main/resources/config/application-uat.yml index 215037c..af84c50 100644 --- a/pamapi/src/main/resources/config/application-uat.yml +++ b/pamapi/src/main/resources/config/application-uat.yml @@ -117,4 +117,12 @@ e-service-login-url: https://eserviceuat.pcalife.com.tw/sso/chatbotValidate e-service-login-func: ValidateUsrLogin e-service-login-sys: epos - file-folder-path: D://pam_file \ No newline at end of file + sms: + url: https://vtwlifewinbo66.pru.intranet.asia/MesgQueueMgmnt/rest/smsSendMsgResource + source-code: ePos + sender: POS + sms-type: '0017' + email: + url: https://vtwlifeopensysuat.pru.intranet.asia/tsgw/mq/mqSendMail + function-id: epos + file-folder-path: D://pam_file -- Gitblit v1.8.0