vbea 3 tahun lalu
induk
melakukan
4c61175de9

TEMPAT SAMPAH
Document/ChargeCo_logo.psd


+ 174 - 0
Document/ChargecoDataPrivacy.html

@@ -0,0 +1,174 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
+    <title>Privacy</title>
+</head>
+<body style="padding: 0 12px; zoom: .8;">
+<h4>Introduction</h4>
+<p>Strides YTL Pte. Ltd. and its parent and other affiliated or related companies (“ChargEco” or “we”) are committed to
+    protecting your privacy. This statement explains the steps we take to collect, use and protect personal data of
+    users of the ChargEco mobile application (“Application”). It describes what categories of personal data we collect,
+    the purposes for which we use those data, your choices regarding use of personal data about you, our security
+    measures, and how you can review and correct data about you. By accessing and/or using the Application, you consent
+    to the data collection and use practices described in this privacy statement. This privacy statement does not apply
+    to websites, applications and/or other services that display or link to a different privacy statement or policy.</p>
+<p>As used throughout this Privacy Statement, the term “ChargEco” and such terms as “the company,” “legal entity,” “the
+    corporation,” “our,” “we” and “us” may refer to Strides YTL Pte. Ltd. , or one or more or all of Strides YTL Pte.
+    Ltd. ‘s related corporations and/or affiliates. All of these terms are used for convenience only and are not
+    intended as a precise designation of any of the separate companies, each of which manages its own affairs.</p>
+
+<h4>Data Collection</h4>
+<p>Data collected directly from users. In order to access and/or use the Application, we may ask you for personal data
+    to register your user account (“Account”) in the Application, to provide a service offered through the Application
+    or to carry out a transaction you request. The personal data and other information that we collect may include:</p>
+<p>(i) contact details, such as your name, email address and mobile number (if applicable);</p>
+<p>(ii) your preferences with respect to email or digital marketing;</p>
+<p>(iii) financial information, including credit card numbers, bank or customer account information and, in connection
+    with credit requests, other national/tax identification number;</p>
+<p>(iv) depending on the location settings you select for the Application or on your device – location information
+    including your approximate or precise location near you and/or visited by you;</p>
+<p>(v) information such as your nationality and country of residence that allows us to determine your eligibility under
+    export control regulations to receive information about certain technologies;</p>
+<p>(vi) your inquiries about and orders for our products and services, as well as information that assists us in
+    identifying the best products and services for you;</p>
+<p>(vii) contest entry and event registration information;</p>
+<p>(viii) feedback from you about our products and services, including our websites.</p>
+<p>You are not required to provide this information. However, if you choose not to, certain functionality within the
+    Application may not be available and we may not be able to provide you the requested service or complete your
+    transaction.</p>
+<p>Data collected by automated means. We collect certain data about all users of the Application, including:</p>
+<p>(i) device information – device type and ID, mobile device language, operating systems and versions, mobile network
+    information;</p>
+<p>(ii) log information – Internet Protocol (IP) address, the dates and times they access the Application, length of
+    visit, the features or pages they view and number of views, the links they click, and other system activity relating
+    to the Application;</p>
+<p>(iii) if they used the charging or reservation services at our charging stations – data relating to the
+    transaction(s) including the type of charging purchased, amount charged, discount or promotion code applied, time
+    and date of purchase, frequency of purchases;</p>
+<p>(iv) if they register any loyalty or partner card(s) – data relating to the card transactions including location of
+    the transaction, date and time of transaction, redemptions of loyalty or rewards points, balance enquiries.</p>
+<p>Through your Account, we may connect such information with your identity and email address to determine your
+    potential interests in our products and services. We may also combine information we collect about you with
+    information received from third parties. Apart from information which may be linked to a specific user, we may also
+    collect data on an aggregated or anonymized basis that does not directly identify any specific user.</p>
+<p>We use the data and information collected to, amongst other legitimate business purposes, improve our security
+    measures, to better understand how users access and use the Application and how it can be improved to better meet
+    your needs, as well as to gauge interest in our products and services.</p>
+
+<h4>Our Use of Personal Data</h4>
+<p>We will use personal data only for the purposes set forth below.</p>
+<p>Services and transactions. We use personal data to deliver services or execute transactions you request, such as
+    providing information about ChargEco products and services, processing orders and payments for our products and
+    services, facilitating use of the Application, and so forth. In order to offer you a more consistent experience in
+    interacting with ChargEco, information collected through the Application may be combined with information we collect
+    by other means.</p>
+<p>Customer service and feedback. We may use information about you and/or collected from you to respond to your customer
+    service requests and feedback, or take other actions to address your inquiries, or to post your comments or feedback
+    on any social media maintained by us.</p>
+<p>Application improvement and troubleshooting. We may use data about you to improve or enhance the Application
+    (including our security measures) and related products or services, or to make the Application easier to use by
+    eliminating the need for you to repeatedly enter the same information, or by customizing the Application viewed
+    through your Account to your particular preference or interests. We may also use personal data and other information
+    for the purposes of troubleshooting, functionality testing and addressing issues regarding the Application and its
+    functionalities.</p>
+<p>Marketing and Promotional Communications. With your permission, we may use personal data to inform you of products,
+    services or promotions available from ChargEco. This may involve combining your personal data with other information
+    such as the transactions you have made through the Application. Communications may be done by email, SMS and/or
+    through your Account in the Application (such as in-app messaging services). When collecting information that might
+    be used to contact you about our promotions, products and services, we give you the opportunity to opt-out from
+    receiving such communications. Moreover, each email or SMS communication we send includes an unsubscribe link
+    allowing you to stop delivery of that type of communication. If you elect to unsubscribe, we will remove you from
+    the relevant list within 10 business days.</p>
+
+<h4>Disclosure of Personal Data</h4>
+<p>Except as described below, personal data that you provide to ChargEco via the Application will not be shared outside
+    of ChargEco and its affiliates and related corporations without your consent.</p>
+<p>Disclosure to service providers. ChargEco contracts with other companies, vendors and service providers to provide
+    services on our behalf, such as social media services, programming (for apps or websites who use ChargEco APIs or
+    whose APIs ChargEco uses), marketing and promotions, data processing, sending out information and communications,
+    processing credit card and other types of payment transactions, processing loyalty or rewards program transactions,
+    and analyzing the Application. We provide these companies with only those elements of personal data they need to
+    deliver those services. These companies and their employees are prohibited from using those personal data for any
+    other purposes.
+    Disclosure in connection with transactions. In connection with certain transactions, we may disclose some or all of
+    the personal data you provide to financial institutions, government entities involved in fulfilling the transaction.
+</p>
+<p>Disclosures in connection with acquisitions or divestitures. Circumstances may arise where for strategic or other
+    business reasons ChargEco decides to sell, buy, merge or otherwise reorganize particular businesses. Such a
+    transaction may involve the disclosure of personal data to prospective or actual purchasers, or receiving it from
+    sellers. Although it is ChargEco’s practice to seek protection for information in these types of transactions, we
+    cannot guarantee that any entity receiving such data from ChargEco in connection with one of these transactions will
+    comply with all of the terms of this Privacy Statement.</p>
+<p>Disclosure on collaborative online platforms. Some of our websites or online forums or platforms promote
+    collaboration among registered users with respect to a particular area or topic. On such online platforms, we may
+    share your username with other participants to label comments or suggestions that you make as yours. We do not,
+    however, share your name, contact details, or other personal data with other users of those collaborative
+    platforms.</p>
+<p>Disclosure for other reasons. We may disclose personal data if required to do so by law or in the good-faith belief
+    that such action is necessary to comply with legal requirements or with legal process served on us, to protect and
+    defend our rights or property and those of our employees, agents or customers, to enforce our agreements, policies
+    or terms of use, or in urgent circumstances to protect the personal safety of any individual.</p>
+
+<h4>Security</h4>
+<p>ChargEco is committed to protecting the security of personal data. While no security measure can guarantee against
+    compromise, loss or misuse (given the transmission of data over the Internet or any public network), we use a
+    variety of security technologies and procedures to help protect data from unauthorized access, use, or disclosure.
+    Where ChargEco discloses or provides any data to any contractor, vendor or service provider, we require that each
+    such party maintains appropriate administrative, technical and physical security measures to protect your personal
+    data from destruction, loss, and unauthorized access. Notwithstanding such measures, to the extent permitted by law
+    ChargEco shall not be liable for any loss or damage relating to, or any other consequences of, any unauthorized use,
+    disclosure or loss of, or access to, your personal data.</p>
+<p>For sites and applications to which you log in, it is your responsibility to ensure the security of your passwords
+    (including the password to your device) and to not reveal this information to others. If you are sharing a device
+    with anyone, you should always log out before leaving a website or application so that subsequent users will not be
+    able to access your data.</p>
+
+<h4>Retention and Review of Personal Data</h4>
+<p>During the period that your Account is active, ChargEco will retain your personal data and other information
+    collected, unless you expressly request us to delete the information. ChargEco may retain the information after your
+    Account is deactivated or deleted in the following circumstances (subject to applicable law):</p>
+<p>(i) if we are required to retain such information by applicable law or regulation, or pursuant to any requirement of
+    any government authority having jurisdiction over ChargEco;</p>
+<p>(ii) if there is an unresolved issue relating to your Account, such as an outstanding claim or outstanding credit or
+    payment due;</p>
+<p>(iii) for legitimate business purposes including fraud prevention and internal policy or audit requirements.</p>
+
+<h4>Your Rights</h4>
+<p>In some cases, you can review and correct personal data provided through the Application by going to the page on
+    which you provided the data. You can also make a request to review and correct personal data collected via the
+    Application or submit any inquiries or concerns you may have regarding personal data by sending an email.</p>
+<p>To the extent required by law, we provide users with (i) reasonable access to the personal information they provide
+    through the Sites, and (ii) the ability to review, correct and delete such personal information. To help protect
+    your privacy, we may take steps to verify your identity before providing you access to your personal data. You can
+    help us to keep data about you accurate by notifying us of any change to your mailing address, phone number or email
+    address.</p>
+
+<h4>International Transfers of Personal Data</h4>
+<p>Personal data collected through the Application may be stored and processed in Singapore or any other country in
+    which ChargEco or its affiliates or related corporations or (in the case where we engage a service provider to
+    perform certain services) its service providers maintain facilities, including countries which may not have data
+    protection laws similar to the laws in the country from which you initially provided the information. When we
+    transfer your information to other countries, we will protect that information to the extent required by law. By
+    choosing to use the Application and to provide data through it, you consent to any such transfer of information
+    outside of your country.</p>
+
+<h4>Link to Other Websites or Applications</h4>
+<p>The Application may contain links to other websites or applications, including those of other companies, professional
+    and government organizations, and publications. These websites and applications operate independently from the
+    Application, and we do not control and are not responsible for the content, security or privacy practices employed
+    by other websites or applications. You should review the privacy statements of those websites and applications to
+    determine how they protect and use personal data.</p>
+
+<h4>Questions about our Privacy Practices</h4>
+<p>If you have questions regarding this privacy statement or our handling of personal data, please contact us using the
+    feedback function.</p>
+
+<h4>Changes to this Privacy Statement</h4>
+<p>ChargEco may occasionally update this privacy statement. When we do, we will revise the “updated” date at the bottom
+    of the privacy statement. You should revisit this page periodically to become aware of the most recent privacy
+    terms; your use of the Application after such changes have been posted constitutes your agreement to such
+    changes.</p>
+</body>
+</html>

+ 456 - 0
Document/ChargecoTermOfUse.html

@@ -0,0 +1,456 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
+    <title>Term Of Use</title>
+</head>
+<body style="padding: 0 12px; zoom: .8;">
+<h4>ChargEco Solution Terms of Use</h4>
+<h4>Last Updated: 3 Jan 2023.</h4>
+<h4>STRIDES YTL PTE LTD ("ChargEco", “we”, “us”, “our”) provides the ChargEco solution, comprising:</h4>
+<p>(a) our charging stations and related equipment ("Charging Stations");</p>
+<p>(b) website and mobile application ("App"); and</p>
+<p>(c) all features, functionality, services, products and other services provided through the App, including the
+    charging services ("Services"), which allow users to charge their electric (including but not limited to both
+    battery electric and plug-in hybrid electric) vehicles (together, the "Solution"). When we use “you”, “your” or
+    "User", we refer to anyone who accesses or uses our Solution.</p>
+<p>This page sets out the terms of use for the Solution (“Terms”). These Terms are important because they describe:</p>
+<p>· the rules to be followed when using the Solution;</p>
+<p>· the terms and conditions that apply to the charges for using the Solution; and</p>
+<p>· how to resolve any disputes that may arise from your use of the Solution.</p>
+
+<h4>PLEASE READ THESE TERMS CAREFULLY.</h4>
+<p>These Terms and the documents referred to in them govern your use of the Solution and constitute a legally binding
+    agreement between you and ChargEco. If you do not agree to any part of these Terms, you should stop using the
+    Solution immediately.</p>
+<p>ChargEco may amend these Terms at any time. Such amendments shall be effective once they are posted on the App. It is
+    your responsibility to review the Terms regularly. Your continued use of the Solution after any such amendments,
+    whether or not reviewed by you, shall constitute your agreement to be bound by such amendments.</p>
+<p>If you have any questions, comments, complaints or claims with respect to our Solution or these Terms, you may
+    contact us at the contact information as made available in the App from time to time.</p>
+<p>· Part A: User Accounts</p>
+<p>· Part B: Solution and Services Terms</p>
+<p>· Part C: App Terms</p>
+<p>· Part D: Charging Stations</p>
+<p>· Part E: ChargEco Credits</p>
+<p>· Part F: Subscriptions</p>
+<p>· Part G: ChargEco Fleet</p>
+<p>· Part H: General Terms</p>
+
+<h4>PART A: USER ACCOUNTS</h4>
+<h4>ACCOUNT REGISTRATION AND DETAILS</h4>
+<p>1.1 In order to use the Solution, you must register for a personal account with us (“Account”). In order to register
+    for an Account, you will need to provide ChargEco with certain personal data via the App or such other means as
+    ChargEco may permit, including: (a) your full name; (b) your address; (c) your email address; (d) your mobile phone
+    number; (e) the car plate number of your electric vehicle; and (f) any other information that ChargEco may from time
+    to time require.</p>
+<p>1.2 You must be at least 18 years of age, or the age of legal majority in your jurisdiction (if different than 18),
+    to obtain an Account and use the Solution.</p>
+<p>1.3 Your Account cannot be assigned or transferred to another person. You agree not to register and/or maintain more
+    than one Account at the same time, unless otherwise permitted by ChargEco in writing. Where duplicate Accounts are
+    detected in relation to one User, ChargEco may close or merge these duplicate Accounts without prior notification to
+    you.</p>
+<p>1.4 When you register an Account with us, you agree to provide us with true, current, and complete information during
+    registration. You agree to maintain accurate, complete, and up-to-date information in your Account. Your failure to
+    maintain accurate, complete, and up-to-date Account information, including having an invalid or expired payment
+    method on file, may result in additional fees and/or your inability to access or use the Solution.</p>
+
+<h4>ACCOUNT SECURITY AND ACTIVITY</h4>
+<p>2.1 You agree to maintain the security and confidentiality of your Account log-in details at all times. You may not
+    authorize third parties to use your Account. If you become aware that the security or confidentiality of your
+    Account log-in details have been compromised (including any loss, theft, breach of security, or unauthorised
+    disclosure or use) and/or there has been unauthorised use of your Account, you must immediately notify ChargEco via
+    the contact information as made available in the App from time to time. You agree to be liable for any and all
+    charges incurred due to usage of the compromised Account until ChargEco has been notified. You acknowledge and agree
+    that ChargEco requires a minimum of 7 working days to investigate any such notifications relating to compromised
+    Accounts.</p>
+<p>2.2 ChargEco monitors all Account usage for fraud, misuse and to detect any breach of these Terms.</p>
+<p>2.3 You are responsible for all activity under and instructions to ChargEco issued from your Account, including any
+    charges or fees incurred for the use of the Solution. ChargEco shall be entitled to consider any person who gains
+    access to the Solution using your Account log-in details as an individual acting upon your authorisation, without
+    any further inquiry or investigation. Where applicable, references to your use and/or access of the Solution shall
+    be deemed to include the use and/or access of the Solution by an individual authorised by you. Notwithstanding this,
+    ChargEco shall be entitled at our own discretion to decline to act or refrain from acting promptly upon any
+    instructions from your Account and to investigate or verify the authenticity, the authority or the identity of such
+    persons effecting the instructions or the authenticity, accuracy and completeness of the instruction.
+    ChargEco may at our discretion refuse to comply with any instruction from your Account if the instruction is
+    ambiguous or conflicting, incomplete or inaccurate.
+</p>
+<p>2.4 ChargEco shall not be liable or responsible for any damage, expense or loss of any kind suffered directly or
+    indirectly by you as a result of any loss, disclosure, theft and/or unauthorised use of your Account.</p>
+
+<h4>TERMINATION OR SUSPENSION OF YOUR ACCOUNT</h4>
+<p>3.1 We reserve the right to terminate or suspend your Account at any time for any reason without prior notice to You,
+    including where we have reasons to suspect that your Account is being used fraudulently or in breach of these Terms
+    or if you have notified us that your security of your Account credentials has been compromised in any way.</p>
+<p>3.2 If you wish to terminate your Account, please contact us at the contact information as made available in the App
+    from time to time for assistance.</p>
+
+<h4>Part B: SOLUTION AND SERVICES TERM</h4>
+<h4>USE OF THE SOLUTION</h4>
+<p>4.1 To access the Solution, you must have internet access, a compatible mobile device with the App installed, and
+    provide us with one or more Payment Methods. “Payment Method” means a current, valid, accepted method of payment
+    permitted by the App, as may be updated from time to time, and which may include payment through your Account with a
+    third party.</p>
+<p>4.2 Subject to your registration for and maintenance of an active Account, we hereby grant you a personal, limited,
+    non-exclusive, non-transferable, non-sublicensable right to access the Solution and receive the Services in
+    accordance with these Terms. Any rights not expressly granted in these Terms are reserved by ChargEco.</p>
+<p>4.3 Unless otherwise agreed to in writing, the Solution is provided for your personal use only and shall not be used
+    in connection with the conduct of any commercial enterprise or for financial gain, including but not limited to any
+    direct or indirect resale of all or any part of the Services.</p>
+<p>4.4 As a condition of your access to and use of the Solution, you must not use the Solution in any manner:</p>
+<p>&emsp;4.4.1 that may infringe any applicable law or regulation or any third party's rights, including intellectual
+    property
+    rights or proprietary rights;</p>
+<p>&emsp;4.4.2 that could cause harm, nuisance, annoyance, inconvenience, damage or adversely affect any person or
+    ChargEco’s
+    reputation or property, including but not limited to the Charging Stations;</p>
+<p>&emsp;4.4.3 that jeopardises or impairs, or is reasonably likely to jeopardise or impair, the operation of all or any
+    part
+    of the Solution, and</p>
+<p>&emsp;4.4.4 that is prohibited by these Terms.</p>
+
+<h4>USER CHARGES AND PRICING</h4>
+<p>5.1 You understand that your use of the Services may result in charges to you for the services or goods you receive
+    (“User Charges”). Details of Services, pricing for such Services, and any supplemental terms offered by ChargEco
+    will be displayed to you in the App.</p>
+<p>5.2 ChargEco may from time to time provide certain Users with promotional offers and discounts that may result in
+    different amounts charged for the same or similar Services, and you agree that such promotional offers and
+    discounts, unless also made available to you, shall have no bearing on your use of the Services or the User Charges
+    applied to you. You acknowledge and agree that any such promotional offers and discounts offered to you can only be
+    consumed by you and you will not authorize, enable or facilitate any third party to use or take advantage of any
+    such promotional offers and/or discounts. </p>
+<p>5.3 You acknowledge and agree that the records maintained by or on behalf of ChargEco relating to your usage and
+    receipt of the Services, including the duration of any Charging Session and the relevant electricity usage of such
+    Charging Session, are final and binding on you in respect of any calculation of your User Charges. A “Charging
+    Session” refers to a session during which you use a Charging Station, which commences when electricity starts to
+    flow through the Charging Station and ends when charging completes or when charging is stopped by you or for any
+    reason whatsoever.</p>
+
+<h4>PAYMENT TERMS</h4>
+<p>6.1 You must make full payment of all User Charges for all Services received by you through one of the available
+    Payment Methods, which may include a credit card, a debit card, the ChargEco Credits, alternative e-wallets or such
+    other methods as are made available in the App from time to time. Any payment pursuant to your selected Payment
+    Method is non-refundable and irrevocable. All User Charges applicable to a Charging Session will be immediately due
+    at the end of such Charging Session.</p>
+<p>6.2 The User Charges may be subject to taxes, duties, levies, premiums, fees, additional charges and other
+    assessments of any kind ("Taxes"), which shall be payable by you in addition to the User Charges. Where any such
+    Taxes apply, ChargEco will display such amounts together with the User Charges in the App as required by applicable
+    law. The User Charges and Taxes shall be rounded to the nearest cent.</p>
+<p>6.3 Where you make payment through the App, you acknowledge and agree that your personal data may be disclosed by
+    ChargEco to third parties (located within and outside of Singapore) for the purpose of processing such payment
+    transaction, including but not limited to debit and credit card companies, banks and payment gateways.</p>
+
+<h4>SERVICES</h4>
+<p>7.1 You acknowledge that ChargEco has absolute management and control over all matters relating to the Services,
+    which are provided via the Solution at ChargEco’s sole discretion. Without prejudice to the foregoing, you agree
+    that ChargEco has sole discretion to determine the manner in which the Services are provided to you, including but
+    not limited to the means, methods, sequences and procedures with respect to the operation, use and availability of
+    the Charging Stations and ChargEco’s activities and operations in relation to the Charging Stations, the number,
+    types, makes, models, quality, brands and locations of the Charging Stations, and the removal, replacement,
+    installation and configuration of each Charging Station. ChargEco will use its reasonable efforts to make available
+    information relating to the location and availability of the Charging Stations to you via the App.</p>
+<p>7.2 You acknowledge that ChargEco has the right to amend, withdraw or suspend the Services at any time without notice
+    to you.</p>
+
+<h4>PART C: APP TERMS</h4>
+<h4>APP AND CONTENT</h4>
+<p>8.1 The App provides information regarding your Account and Charging Stations, as well as general access to utilize
+    the Services, including starting and ending any Charging Session. Subject to your compliance with these Terms,
+    ChargEco grants you a personal, limited, non-exclusive, non-sub-licensable, revocable, non-transferable license to:
+    (a) access and use the App solely in connection with your use of the Solution; and (b) access and use any content,
+    information and related materials that may be made available through the App ("Content"), solely for your personal,
+    non-commercial use.</p>
+<p>8.2 The Content is only for general information or use. It does not constitute advice and should not be relied upon
+    in making (or refraining from making) any decision. No oral advice or written information given through the App by
+    ChargEco or its officers, directors, employees, agents, third party service providers or third-party content
+    providers, shall create any warranty nor shall you rely on any such information or advice.</p>
+<p>8.3 You acknowledge and agree that ChargEco may modify the App in any way and at any time, with or without notice.
+    You further acknowledge and agree that, while ChargEco has attempted to provide accurate information on the App,
+    such information may change frequently and in no event will ChargEco be responsible for the accuracy, timeliness,
+    reliability, usefulness or completeness of any Content, or that any such Content is the most up-to date. ChargEco
+    does not represent or warrant that the App will be error-free, free of viruses or other harmful components.</p>
+
+<h4>APP USE RESTRICTIONS</h4>
+<p>9.1 You will not use the App for any purpose that is unlawful or prohibited by these Terms, or for any other purpose
+    not reasonably intended by us. By way of example, and not as a limitation, you agree not to:</p>
+<p>&emsp;9.1.1 pass off or attempt to pass off the App as the product of anyone other than ChargEco, including removing,
+    altering or replacing any notices of authorship, trademarks, business names, logos or other designations of
+    origin;</p>
+<p>&emsp;9.1.2 reproduce, modify, prepare derivative works based upon, distribute, license, lease, sell, resell,
+    transfer, publicly display, publicly perform, transmit, stream, broadcast or otherwise exploit the App except as
+    expressly permitted by ChargEco;</p>
+<p>&emsp;9.1.3 disassemble, reverse engineer, decompile or modify any software or application contained in or available
+    on our App in whole or in part except as may be permitted by applicable law, or otherwise attempt to obtain or
+    access the source code of our App;
+</p>
+<p>&emsp;9.1.4 link to, mirror or frame any portion of the App;</p>
+<p>&emsp;9.1.5 create false, fraudulent or speculative Charging Sessions through the App;</p>
+<p>&emsp;9.1.6 cause or launch any programs or scripts for the purpose of scraping, indexing, surveying, or otherwise
+    data mining any portion of the App or unduly burdening or hindering the operation and/or functionality of any aspect
+    of the App;</p>
+<p>&emsp;9.1.7 violate the security of any network, including cracking passwords or encryption codes, transferring or
+    storing any illegal material, or otherwise obtaining the password, account or private information from any other
+    user of our App;</p>
+<p>&emsp;9.1.8 obtain or attempt to obtain unauthorised access, via whatever means, to any of ChargEco’s systems;</p>
+<p>&emsp;9.1.9 interfere with or disrupt our App, or servers or networks connected to our Solution, including running or
+    activating processes on our App that interfere with their proper working or place an unreasonable load on our
+    Solution's infrastructure;</p>
+<p>&emsp;9.1.10 abuse, harass, threaten, impersonate or intimidate anyone;</p>
+<p>&emsp;9.1.11 post or transmit, or cause to be posted or transmitted, malicious content including malware, Trojan
+    horses, or viruses, or otherwise interfere with any user’s access to our App;</p>
+<p>&emsp;9.1.12 infringe any rights of any third party, including intellectual property rights or proprietary rights;
+    and</p>
+<p>&emsp;9.1.13 infringe any applicable law, statute, ordinance or regulation.</p>
+
+<h4>REVIEWS AND USER SUBMISSION</h4>
+<p>10.1 To the extent that our App allows you to post, upload, transmit or otherwise make available any Content (“User
+    Content”), you agree that:</p>
+<p>&emsp;10.1.1 you are solely responsible for the User Content that you upload and you represent and warrant that you
+    will not share anything that would infringe any rights of any third party, including intellectual property rights or
+    proprietary rights;</p>
+<p>&emsp;10.1.2 although all intellectual property rights subsisting in any User Content will be owned by you or your
+    licensors and you are always free to share your User Content with anyone else, you hereby grant us and our
+    affiliates a non-exclusive, perpetual, royalty-free, worldwide, transferrable and sub-licensable right to host, use,
+    reproduce both electronically or otherwise, publicly display, distribute, modify, adapt, public, translate and
+    creative derivative works from any and all such User Content (in accordance with our Privacy Policy, including
+    without limitation for the purposes of advertising and marketing our Solution; and</p>
+<p>&emsp;10.1.3 we are under no obligation to store, retain, publish or make available any User Content uploaded by you
+    and that you will be responsible for creating backups of any User Content if necessary.</p>
+<p>10.2 For the avoidance of doubt, we reserve the right to remove User Content which, in our opinion, are in violation
+    of these Terms or any applicable law.</p>
+
+<h4>THIRD PARTY LINKS</h4>
+<p>11.1 Certain links on the App may lead to websites, services, social media channels or apps not operated by or under
+    the control of ChargEco ("Third Party Links"). Third Party Links are provided as a convenience to you as a user of
+    our App, and do not imply the endorsement by us of any information, products, advertising or other materials that
+    can be found on those Third Party Links. You access such Third Party Links at your own risk and ChargEco accepts no
+    responsibility or liability for any damage caused or alleged to be caused by or in connection with the use of the
+    material or functions contained on those Third Party Links.</p>
+<p>11.2 You represent and warrant that you have read and agree to be bound by all applicable policies of these Third
+    Party Links, whether relating to your use of our Solution or otherwise, and that you will act in accordance with
+    those policies, in addition to your obligations under these Terms. Your interactions with these third parties,
+    including but not limited to the purchasing of goods or services, and any other terms, conditions, warranties or
+    representations associated with such dealings, are solely between you and the third parties. You should conduct
+    whatever investigation you feel necessary or appropriate before proceeding with any online or offline transaction
+    with any of these third parties.</p>
+
+<h4>COMPATIBLE DEVICES</h4>
+<p>12.1 ChargEco shall in no event be liable to you if you do not have a device which is compatible with the software of
+    the App or if you have downloaded the wrong version of the App. ChargEco reserves the right not to permit you to
+    access and/or use the App should the App be incompatible with your device.</p>
+
+<h4>PART D: CHARGING STATIONS</h4>
+<h4>HOST LOCATION, PARKING FEES AND RULES</h4>
+<p>13.1 Charging Stations may be located and hosted on a third party’s property (any such third party, a “Host”). As
+    such, you agree to observe and obey any and all rules set by Hosts pertaining to their property and the use of the
+    Charging Stations, including, but not limited to, general customer or visitor conduct, parking restrictions and
+    charges, parking time limitations, hours of operation, parking within designated lots only in order to make use of
+    the Charging Stations. You are solely responsible for any damage, fees, penalties or loss, including any fines or
+    penalties imposed by the relevant parking enforcement authority and any immobilisation, clamping or removal of your
+    car, caused by your noncompliance of any Host rules.</p>
+<p>13.2 Where a Charging Station is located in a car park or any other restricted area, you may be required to pay
+    separate access and/or parking fees to the Host for access to such Charging Station, in addition to the User
+    Charges.</p>
+<p>13.3 At the end of each Charging Session, you must promptly remove your vehicle from the parking lot assigned to the
+    relevant Charging Point. ChargEco reserves the right to impose additional fees for any failure to remove your
+    vehicle promptly or after a designated grace period, from the assigned parking lot at the end of a Charging
+    Session.</p>
+<p>13.4 In accordance with our Privacy Policy, you consent to ChargEco disclosing your personal data, including your
+    name and the car plate number of your electric vehicle to third parties such as local enforcement agencies and
+    Hosts, where you do not comply with clause 13.3</p>
+
+<h4>USE OF CHARGING STATION</h4>
+<p>14.1 You must follow all instructions provided to Users in relation to the use of a Charging Station, including but
+    not limited to those set out in these Terms and all documents referred to in them, and also instructions displayed
+    at the Charging Station. It is your responsibility to ensure that your use of the Charging Station is carried out
+    safely so as to avoid injury to any person or damage to property. Please refer to the FAQs in the App for
+    instructions on how to use the Charging Station. Please contact us via the contact information made available in the
+    App from time to time if you have any queries.</p>
+<p>14.2 You shall not attempt to repair, physically modify, impair, interfere with, gain unauthorised access to, reverse
+    engineer or derive source code from any Charging Station. You acknowledge and agree that the manufacturer of all
+    Charging Station equipment has reserved all right, title, and interest in and to intellectual property associated
+    with the Charging Station equipment and that you shall take no action that would cause, or by inaction permit, any
+    impairment of any right, title, and interest of the manufacturer in such intellectual property and to otherwise
+    respect the legal rights of the manufacturer. You acknowledge that your use of the Charging Station is solely at
+    your own risk.</p>
+<p>14.3 You will be responsible for any damage caused to a Charging Station, any other property or for any injury to any
+    person which is caused by your breach of these Terms or by your misuse or negligence or failure to comply with any
+    instructions or guidance from ChargEco in relation to a Charging Station. You must immediately notify us of any
+    damage caused to a Charging Station via the contact information as made available in the App from time to time.</p>
+<p>14.4 As a condition of your access and use of the Charging Stations, you must not:</p>
+<p>&emsp;14.4.1 dishonestly or fraudulently extract, use, consume or divert or cause to be diverted, any electricity
+    flowing through a Charging Station; and</p>
+<p>&emsp;14.4.2 alter or tamper with any metering equipment or any other device forming part of any Charging Station or
+    used in connection with the Services.</p>
+
+<h4>SMART CHARGING</h4>
+<p>15.1 You acknowledge and agree that any power rating (kW) displayed directly or through the App at a Charging Station
+    and/or Charging Point is an indication of the maximum possible power output of such Charging Station or Charging
+    Point, as the case may be, and does not represent in any way that the power output will be or will be maintained at
+    such rating for the entire duration of any Charging Session.</p>
+<p>15.2 You acknowledge and agree that ChargEco reserves the right always to adjust the power output of each Charging
+    Station and Charging Point at any time, including during a Charging Session, for any reason whatsoever, including to
+    optimise the power load capacity or provide smart charging services without the need to provide you with any prior
+    notice.</p>
+<p>15.3 Without prejudice to the generality of clause 24.1, ChargEco shall not in any event be liable to you or any
+    third party for any damages, losses, expenses, penalties or costs whatsoever (including without limitation, any
+    direct, indirect, special, incidental or consequential damages, loss of actual or anticipated income and profits,
+    opportunity and loss of data) arising out of or in connection with the exercise of its rights under clause 15.2 to
+    adjust the power output.</p>
+
+<h4>PART E: ChargEco CREDITS</h4>
+<h4>USE OF ChargEco CREDITS</h4>
+<p>16.1 You may purchase ChargEco Credits to fund your usage of the Services. You may choose to purchase ChargEco
+    Credits through any credit cards, debit cards, PAYNOW or such other methods as are made available in the App (each a
+    “Funding Source”).</p>
+<p>16.2 You agree that we may verify and authorize the Funding Source details when you first register the Funding Source
+    with us as well as when you purchase ChargEco Credits. In the case of debit or credit cards as Funding Sources, you
+    agree that we may issue a reasonable authorization hold, which is not an actual charge against your card, in order
+    to verify your Payment Method via your card. The hold may appear in your statement as “pending”. The authorization
+    hold is issued as a preventive measure against any unauthorized or fraudulent usage of your card.</p>
+<p>16.3 You agree that ChargEco has the right to impose additional charges for your use of certain Funding Sources and
+    you will be liable for any applicable additional charges imposed.</p>
+<p>16.4 You shall be responsible to resolve any disputes with your debit or credit card company, or your bank in
+    relation to ChargEco Credits on your own. ChargEco shall not be responsible for any such lost or misdirected
+    payments.</p>
+<p>16.5 When you select the ChargEco Credits as your Payment Method in respect of the User Charges, you authorise
+    ChargEco to deduct the relevant User Charges from the available ChargEco Credits in your Account.
+    If you have selected the ChargEco Credits as your Payment Method, you acknowledge that ChargEco reserves the right
+    to deny the Services to you, including preventing any Charging Session from starting, if your ChargEco Credit
+    balance falls below the prevailing minimum prescribed balance as determined by ChargEco from time to time. You also
+    acknowledge that if the ChargEco Credit balance in your Account falls to zero or a level very close to zero during
+    any Charging Session, the Charging Session will immediately terminate.
+</p>
+<p>16.6 ChargEco Credits may only be used for making purchases of the Services. The ChargEco Credits may not be
+    exchanged for cash or credit balance unless required by law and may not be transferred to any other user.</p>
+
+<h4>FRAUDULENT ACTIVITY</h4>
+<p>17.1 You agree to immediately notify us via the contact information made available on the App from time to time if
+    you become aware of any fraudulent activity or theft of funds relating to the ChargEco Credits. We have the right to
+    suspend, or later reverse, the processing of any transaction where we reasonably believe that the transaction may be
+    fraudulent, illegal or involves any criminal activity or where we reasonably believe that you are in breach of these
+    Terms.</p>
+
+<h4>PART F: GENERAL TERMS</h4>
+<h4>INTELLECTUAL PROPERTY</h4>
+<p>18.1 As between you and ChargEco, all intellectual property rights in and to the Solution shall be absolutely owned
+    by ChargEco for the full duration of all such rights and all throughout the world. Unless otherwise expressly stated
+    in these Terms, no licence or right is granted and the User’s access to and/or use of the Solution should not be
+    construed as granting, by implication, estoppel or otherwise, any license or right to use any intellectual property
+    rights in any part of the Solution without the prior written consent of ChargEco or its licensors.</p>
+
+<h4>DATA PROTECTION</h4>
+<p>19.1 For information regarding our treatment of your personal data, please review our current Privacy Policy, which
+    is incorporated by reference into these Terms. Your acceptance of these Terms constitutes acceptance and agreement
+    to our collection, use and disclosure of your personal data in accordance with our Privacy Policy, as may be updated
+    and/or amended from time to time.</p>
+
+<h4>ELECTRONIC COMMUNICATIONS</h4>
+<p>20.1 When you access and/or use the Solution or communicate with us through email or the App, you are communicating
+    with ChargEco electronically. You consent to receive communications from us electronically. We will communicate with
+    you by e-mail sent to the last updated address made known to ChargEco or by posting notices on the App. Where the
+    communication is given by us to you electronically, it will be deemed to have been received upon delivery (and a
+    delivery report received by ChargEco will be conclusive evidence of delivery even if the communication is not opened
+    by you); and where the communication is given to us electronically, it will be deemed to have been received upon
+    being opened by us. You agree that all agreements, notices, disclosures and other communications that we may provide
+    to you electronically will satisfy any and all legal requirements that such communications be in writing.</p>
+<p>20.2 You agree that ChargEco’s records and any records of the communications, transactions, instructions or
+    operations made or performed, processed or effected through the App and/or Solution by You or any person purporting
+    to be You, or any record of the communications, transactions, instructions or operations relating to the operation
+    of the Solution and any record of any communications, transactions, instructions or operations maintained by
+    ChargEco or by any relevant person authorised by ChargEco relating to or connected with the Solution shall be
+    binding on You for all purposes and shall be conclusive evidence of such communications, transactions, instructions
+    or operations.</p>
+<p>20.3 You have the duty to examine and verify the correctness of any and all confirmations, statements, records and
+    any other documents issued by ChargEco in relation to your Account. You further undertake to promptly inform
+    ChargEco in writing of any alleged error, irregularity, discrepancies or omissions in such documents. If no such
+    notice is received by ChargEco within 7 days from the date stated in such documents, you shall be deemed to have
+    conclusively accepted all content contained in such documents; and be liable for any and all losses arising from or
+    in connection with any alleged error, irregularity, discrepancies or omissions in such documents.</p>
+
+<h4>ELECTRONIC FORM</h4>
+<p>21.1 You agree that these Terms in electronic form constitute a written document and therefore you undertake not to
+    dispute or challenge the validity or enforceability of these Terms on the grounds that it is not a written document
+    and you hereby waive any such right that you may have at law.</p>
+
+<h4>ChargEco POLICIES</h4>
+<p>22.1 You agree to comply with all then-current ChargEco policies in relation to the Solution ("ChargEco Policies")
+    which may be made available from time-to-time on our App and/or directly communicated to you. Each such ChargEco
+    Policy is hereby incorporated by reference into these Terms.</p>
+<p>22.2 Where any conflict or contradiction appears between the provisions of these Terms and any other ChargEco Policy,
+    the terms of the relevant ChargEco Policy shall prevail in respect of your use of the relevant part of our
+    Solution.</p>
+
+<h4>DISCLAIMERS</h4>
+<p>23.1 The Solution is provided on an “as is” and “as available” basis. To the maximum extent permitted by applicable
+    laws and regulations, we disclaim any and all warranties (express, implied or otherwise), including without
+    limitation, warranties of suitability, merchantability, safety, non-infringement, fitness for a particular purpose,
+    that all or any part of the Solution is always available, secure, or free from malware, defects, interruptions,
+    errors or other inaccuracies, whether arising by a course of dealing, usage, trade practice or course of
+    performance. </p>
+<p>23.2 We are also not liable for any costs associated with your network provider, who may charge you for accessing
+    their connection services to access and use our Solution. We are also not responsible for the availability and
+    quality of your telecommunication reception when you access or use our App.</p>
+
+<h4>LIMITATION OF LIABILITY</h4>
+<p>24.1 To the fullest extent permitted by law, ChargEco shall not, in any event, be liable to you or any other party
+    for any damages, losses, expenses, penalties or costs whatsoever (including without limitation, any direct,
+    indirect, special, incidental or consequential damages, loss of actual or anticipated income and profits,
+    opportunity and loss of data) arising in connection with your use of the Solution, your reliance on any Content
+    and/or Services, and in connection with these Terms, regardless of the form of action and even if ChargEco had been
+    advised as to the possibility of such damages.</p>
+<p>24.2 Without prejudice to clause 24.1, should any liability be attributed to ChargEco, ChargEco’s total liability in
+    connection with these Terms shall not exceed in aggregate the sum of S$50.</p>
+
+<h4>INDEMNIFICATION</h4>
+<p>25.1 The User hereby agrees to defend, indemnify and hold harmless ChargEco and its affiliates, officers, directors,
+    employees, agents, third party service providers, third party content providers and licensors (“ChargEco
+    Indemnitees”) from and against all damages, claims, expenses, penalties and costs (including indemnification of
+    legal costs on a full indemnity basis arising out of the User’s use of the Solution) directly or indirectly suffered
+    or incurred by the ChargEco Indemnitees in connection with or arising from: (1) the User’s access and/or use, or the
+    User’s purported access and/or use of the Solution; (2) the User’s breach or purported breach of any of these Terms;
+    (3) the enforcement of ChargEco’s rights under these Terms or in acting upon any instructions which the User may
+    give in relation to the Solution; or (4) any negligence, fraud and/or misconduct on the User’s part.</p>
+
+<h4>TERMINATION AND SUSPENSION</h4>
+<p>26.1 Without prejudice to clause 3.1, ChargEco shall be entitled to terminate or suspend your access and use of all
+    or any part of the Solution immediately for any reason at ChargEco’s sole discretion. If you have any questions
+    relating to the termination or suspension of your Account, please contact ChargEco at the contact information made
+    available on the App from time to time.</p>
+
+<h4>EVENTS BEYOND OUR CONTROL</h4>
+<p>27.1 We shall have no liability to you for any breach of these Terms caused by any event or circumstance beyond our
+    reasonable control including, but not limited to, strikes, lock-outs or other industrial disputes; breakdown of
+    systems or network access; any damage caused by a third party to our Charging Stations; or flood, fire, explosion or
+    accident.</p>
+
+<h4>MISCELLANEOUS</h4>
+<p>28.1 These Terms and any other documents expressly referred to in these Terms, as may be amended from time to time,
+    constitute the entire agreement and understanding between us and you in relation to the subject matter of these
+    Terms and supersedes any previous agreement or understanding between us and yourself in relation to such subject
+    matter.</p>
+<p>28.2 Where any or part of these Terms is deemed to be invalid, void, illegal or unenforceable, the legality, validity
+    and enforceability of the remaining parts of these Terms shall not be affected or impaired thereby and shall
+    continue in force as if such invalid, void, illegal or unenforceable part of these Terms was severed from these
+    Terms.</p>
+<p>28.3 You may not assign any of your rights under these Terms without ChargEco’s prior written consent. ChargEco may
+    assign its rights under these Terms to any of its affiliates or any third party.</p>
+<p>28.4 No failure or delay to exercise ChargEco’s rights under these Terms shall operate as a waiver thereof nor shall
+    such failure or delay affect the right to enforce ChargEco’s rights under these Terms.</p>
+<p>28.5 A person or entity who is not a party to these Terms shall have no right under the Contracts (Rights of Third
+    Parties) Act 2001 or any similar legislation in any jurisdiction to enforce any part of these Terms.</p>
+<p>28.6 You agree and acknowledge that these Terms and the Solution do not include the provision of internet access or
+    other telecommunication services by ChargEco. Any internet access or telecommunications services (such as mobile
+    data connectivity) required to access and use the Solution shall be your sole responsibility and shall be separately
+    obtained by you, at your own cost, from the appropriate telecommunications or internet access service provider.</p>
+<p>28.7 By downloading and accessing and/or using any part of the Solution, you agree that such access and/or use, as
+    well as these Terms shall be governed by, and construed in accordance with, the laws of Singapore and you agree to
+    submit to the exclusive jurisdiction of the Singapore courts.</p>
+
+<h4>CONTACT</h4>
+<p>29.1 If you have any questions, complaints, or claims with respect to our Solution, you may contact us at the contact
+    information as stated in the App from time to time.</p>
+</body>
+</html>

+ 1 - 1
Strides-APP/android/app/build.gradle

@@ -3,7 +3,7 @@ apply plugin: 'com.google.gms.google-services'
 
 import com.android.build.OutputFile
 
-def myVersionName = "0.3.1 Alpha" //★★★★★版本号★★★★★
+def myVersionName = "0.3.5 Alpha" //★★★★★版本号★★★★★
 /**
  * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
  * and bundleReleaseJsAndAssets).

+ 2 - 2
Strides-APP/android/app/version.properties

@@ -1,2 +1,2 @@
-#Tue Dec 27 18:13:18 CST 2022
-VERSION_CODE=65
+#Fri Jan 06 10:55:20 CST 2023
+VERSION_CODE=67

+ 1 - 1
Strides-APP/app.json

@@ -2,7 +2,7 @@
   "name": "JuicePlus",
   "displayName": "ChargEco",
   "versionCode": 60,
-  "versionName": "V0.3.1 Alpha",
+  "versionName": "V0.3.5 Alpha",
   "product": false,
   "debug": false
 }

+ 1 - 1
Strides-APP/app/api/http.js

@@ -4,7 +4,7 @@ import app from '../../app.json';
 
 //config
 //const hostUrl = 'http://161.117.183.142/';
-const hostUrl = app.product ? 'https://csms.evctechnology.com/' : 'http://190.92.221.143/';
+const hostUrl = app.product ? 'https://csms.evctechnology.com/' : 'https://uat.chargeco.global/';
 const service = 'chargeco/'
 export const host = hostUrl;
 

+ 105 - 105
Strides-APP/app/pages/home/maps/Maps3.js

@@ -2,110 +2,110 @@
  * 首页地图组件-使用ClusteringMapView和VbeClusterMap
  * @邠心vbe on 2021/03/18
  */
- import React, { useEffect, useRef } from 'react';
- import { PROVIDER_GOOGLE } from 'react-native-maps';
- import MapView from "react-native-map-clustering";
- import { MyCluster, MyMarker } from './Cluster';
- import VbeClusterMap from 'vbe-cluster-map'
- 
- export default Maps3 = ({ region, onMapReady, stopList, onMarkerPress }) => {
-   const mapRef = useRef();
-   const superClusterRef = useRef();
- 
-   useEffect(() => {
-    if (isIOS) {
-      //mapRef.current.animateToRegion(region, 500);
-      mapRef.current.animateCamera({ center: region, zoom: 17 }, { duration: 500 });
-      //mapRef.current.animateCamera({ center: region, zoom: 17 }, 500); //移动地图到当前位置并放大
-    } else {
-      if (mapRef.current.moveCamera) {
-        mapRef.current.moveCamera(region, 17);
-        //mapRef.current.showUserLocation();
+import React, { useEffect, useRef } from 'react';
+import { PROVIDER_GOOGLE } from 'react-native-maps';
+import MapView from "react-native-map-clustering";
+import { MyCluster, MyMarker } from './Cluster';
+import VbeClusterMap from 'vbe-cluster-map'
+
+export default Maps3 = ({ region, onMapReady, stopList, onMarkerPress }) => {
+  const mapRef = useRef();
+  const superClusterRef = useRef();
+
+  useEffect(() => {
+  if (isIOS) {
+    //mapRef.current.animateToRegion(region, 500);
+    mapRef.current.animateCamera({ center: region, zoom: 17 }, { duration: 500 });
+    //mapRef.current.animateCamera({ center: region, zoom: 17 }, 500); //移动地图到当前位置并放大
+  } else {
+    if (mapRef.current.moveCamera) {
+      mapRef.current.moveCamera(region, 17);
+      //mapRef.current.showUserLocation();
+    }
+  }
+  }, [region])
+
+  /*componentDidMount() {
+    this.mapRef = this.ref.current.mapRef ? this.ref.current.mapRef : this.ref.current;
+  }*/
+
+  const renderCluster = (props) => {
+    //console.log("renderCluster", props);
+    let hasAvailableConnector = false;
+    if (props.geometry.hasAvailableConnector === undefined) {
+      if (superClusterRef) {
+        const points = superClusterRef.current.getLeaves(props.id, Infinity, 0);
+        if (points) {
+          for (let index = 0; index < points.length; index++) {
+            const point = points[index];
+            if (point.properties.coordinate?.available) {
+              hasAvailableConnector = true;
+              break;
+            }
+          }
+        }
       }
+    } else {
+      hasAvailableConnector = props.geometry.hasAvailableConnector
     }
-   }, [region])
- 
-   /*componentDidMount() {
-     this.mapRef = this.ref.current.mapRef ? this.ref.current.mapRef : this.ref.current;
-   }*/
- 
-   const renderCluster = (props) => {
-     //console.log("renderCluster", props);
-     let hasAvailableConnector = false;
-     if (props.geometry.hasAvailableConnector === undefined) {
-       if (superClusterRef) {
-         const points = superClusterRef.current.getLeaves(props.id, Infinity, 0);
-         if (points) {
-           for (let index = 0; index < points.length; index++) {
-             const point = points[index];
-             if (point.properties.coordinate?.available) {
-               hasAvailableConnector = true;
-               break;
-             }
-           }
-         }
-       }
-     } else {
-       hasAvailableConnector = props.geometry.hasAvailableConnector
-     }
-     props.geometry.hasAvailableConnector = hasAvailableConnector;
-     const latlng = {latitude: props.geometry.coordinates[1], longitude: props.geometry.coordinates[0]}
-     //InteractionManager.runAfterInteractions();
-     return (
-       <MyCluster
-         {...props}
-         key={props.id}
-         location={latlng}
-         available={hasAvailableConnector}
-         onOpen1={latlng => openClusterMarker(latlng)}/>
-     );
-   }
- 
-   const openClusterMarker = async (latlng) => {
-     var camera = await mapRef.current.getCamera();
-     camera.center = latlng
-     camera.zoom = camera.zoom + 2
-     //console.log('camera', camera);
-     mapRef.current.animateCamera(camera, 300);
-   }
- 
-   return (
-     isIOS
-     ? <MapView
-        ref={mapRef}
-        superClusterRef={superClusterRef}
-        style={ui.flex1}
-        minZoom={10}
-        maxZoom={15}
-        radius={45}
-        extent={512}
-        nodeSize={64}
-        provider={PROVIDER_GOOGLE}
-        onMapReady={onMapReady}
-        showsUserLocation={true}
-        initialRegion={region}
-        renderCluster={(info) => renderCluster(info)}>
-        { stopList.map((marker, index) => {
-          return (
-            <MyMarker
-              key={index}
-              {...marker}
-              coordinate={marker}
-              onPress={() => onMarkerPress(marker.id)}
-            />
-          );
-        })}
-      </MapView>
-    : <VbeClusterMap
-        ref={mapRef}
-        style={ui.flex1}
-        region={region}
-        data={stopList}
-        animation={true}
-        onMapReady={onMapReady}
-        onMarkerPress={e => onMarkerPress(e.id)}
-        showUserLocation={true}
-        moveOnMarkerPress={true}
-      />
-   );
- }
+    props.geometry.hasAvailableConnector = hasAvailableConnector;
+    const latlng = {latitude: props.geometry.coordinates[1], longitude: props.geometry.coordinates[0]}
+    //InteractionManager.runAfterInteractions();
+    return (
+      <MyCluster
+        {...props}
+        key={props.id}
+        location={latlng}
+        available={hasAvailableConnector}
+        onOpen1={latlng => openClusterMarker(latlng)}/>
+    );
+  }
+
+  const openClusterMarker = async (latlng) => {
+    var camera = await mapRef.current.getCamera();
+    camera.center = latlng
+    camera.zoom = camera.zoom + 2
+    //console.log('camera', camera);
+    mapRef.current.animateCamera(camera, 300);
+  }
+
+  return (
+    isIOS
+    ? <MapView
+      ref={mapRef}
+      superClusterRef={superClusterRef}
+      style={ui.flex1}
+      minZoom={10}
+      maxZoom={15}
+      radius={45}
+      extent={512}
+      nodeSize={64}
+      provider={PROVIDER_GOOGLE}
+      onMapReady={onMapReady}
+      showsUserLocation={true}
+      initialRegion={region}
+      renderCluster={(info) => renderCluster(info)}>
+      { stopList.map((marker, index) => {
+        return (
+          <MyMarker
+            key={index}
+            {...marker}
+            coordinate={marker}
+            onPress={() => onMarkerPress(marker.id)}
+          />
+        );
+      })}
+    </MapView>
+  : <VbeClusterMap
+      ref={mapRef}
+      style={ui.flex1}
+      region={region}
+      data={stopList}
+      animation={true}
+      onMapReady={onMapReady}
+      onMarkerPress={e => onMarkerPress(e.id)}
+      showUserLocation={true}
+      moveOnMarkerPress={true}
+    />
+  );
+}

+ 54 - 0
Strides-APP/node_modules/vbe-cluster-map/index.d.ts

@@ -0,0 +1,54 @@
+import * as React from "react";
+import PropTypes from 'prop-types';
+import { StyleProp, ViewStyle } from "react-native";
+
+export interface Region {
+  latitude: number;
+  longitude: number;
+  latitudeDelta: number;
+  longitudeDelta: number;
+  zoom: number;
+}
+
+export interface LatLng {
+  latitude: number;
+  longitude: number;
+}
+
+export interface ClusterData {
+  id: number;
+  siteName: string;
+  latlng: LatLng;
+  available: boolean;
+}
+
+export interface VbeClusterMapProps {
+  style?: StyleProp<ViewStyle>;
+  region: Region;
+  data: ClusterData[];
+  animation: boolean;
+  showUserLocation: boolean;
+  moveOnMarkerPress: boolean;
+  onMapReady?: () => void;
+  onMarkerPress?: (event: ClusterData) => void;
+}
+
+export declare class VbeClusterMap extends React.Component<VbeClusterMapProps, any> {
+  static propTypes: {
+    style: PropTypes.Requireable<any>,
+    region: PropTypes.Requireable<Region>,
+    data: PropTypes.Requireable<ClusterData[]>,
+    animation: PropTypes.Requireable<boolean>,
+    showUserLocation: PropTypes.Requireable<boolean>,
+    moveOnMarkerPress: PropTypes.Requireable<boolean>,
+    onMapReady: PropTypes.Requireable<() => any>,
+    onMarkerPress: PropTypes.Requireable<(...args: ClusterData[]) => any>
+  };
+  static defaultProps: {
+    animation: boolean;
+    showUserLocation: boolean;
+    moveOnMarkerPress: boolean;
+  }
+}
+
+export default VbeClusterMap;

+ 28 - 0
Strides-APP/node_modules/vbe-cluster-map/package.json

@@ -0,0 +1,28 @@
+{
+  "name": "vbe-cluster-map",
+  "description": "React Native Mapview cluster component for Android Native",
+  "main": "index.js",
+  "author": "vbea <vbea@foxmail.com>",
+  "version": "1.0",
+  "scripts": {
+    "lint": "./node_modules/eslint/bin/eslint.js .",
+    "ci": "npm run lint"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/vbea/vbe-cluster-map"
+  },
+  "keywords": [
+    "react",
+    "react-native",
+    "react-component",
+    "map",
+    "cluster-map",
+    "google-maps",
+    "vbe-cluster-map"
+  ],
+  "peerDependencies": {
+    "react": ">= 16.0 || < 17.0",
+    "react-native": ">= 0.51"
+  }
+}

+ 9 - 0
Strides-APP/node_modules/vbe-cluster-map/react-native.config.js

@@ -0,0 +1,9 @@
+module.exports = {
+  dependency: {
+    platforms: {
+      android: {
+        sourceDir: './android',
+      },
+    },
+  },
+};

+ 1 - 1
Strides-Admin/.env.development

@@ -3,5 +3,5 @@ NODE_ENV = 'development'
 ENV = 'development'
 
 # base api
-VUE_APP_BASE_API = 'http://190.92.221.143/'
+VUE_APP_BASE_API = 'https://uat.chargeco.global/'
 VUE_APP_API_PREFIX = 'chargeco/crmApi'

+ 1 - 1
Strides-Admin/.env.production

@@ -3,5 +3,5 @@ NODE_ENV = 'production'
 ENV = 'production'
 
 # base api
-VUE_APP_BASE_API = 'https://csms.evctechnology.com/'
+VUE_APP_BASE_API = 'https://uat.chargeco.global/'
 VUE_APP_API_PREFIX = 'chargeco/crmApi'

+ 1 - 1
Strides-Admin/.env.staging

@@ -4,5 +4,5 @@ NODE_ENV = 'production'
 ENV = 'staging'
 
 # base api
-VUE_APP_BASE_API = 'http://190.92.221.143/'
+VUE_APP_BASE_API = 'https://uat.chargeco.global/'
 VUE_APP_API_PREFIX = 'chargeco/crmApi'

+ 1 - 1
Strides-Admin/src/views/site/AddSite.vue

@@ -390,7 +390,7 @@
         <div class="section-title">
           LOAD BALANCING
         </div>
-        <Balancing v-model="balancingForm"/>
+        <Balancing v-model="balancingForm" title="Add"/>
         <!-- <el-row
           :gutter="20"
           v-for="(item, index) in balancingForm.siteChargingProfiles"

+ 27 - 54
Strides-Admin/src/views/site/UpdateSite.vue

@@ -369,7 +369,8 @@
           <div class="section-title">
             LOAD BALANCING
           </div>
-          <el-row
+          <Balancing v-model="balancingForm" :isEdit="true" title="Update"/>
+          <!-- <el-row
             :gutter="20"
             v-for="(item, index) in updateSiteModel.siteChargingProfiles"
             :key="index"
@@ -380,7 +381,7 @@
                 label-width="150px">
                 <!--:prop="'siteChargingProfiles.' + index + '.boxInUse'"
                 :rules="rules.siteChargingProfiles.boxInUse"
-              -->
+              --
                 <el-select v-model="item.boxInUse">
                   <el-option
                     v-for="(item,index) in boxUseOptions"
@@ -397,7 +398,7 @@
                 label-width="150px">
                 <!--:prop="'siteChargingProfiles.' + index + '.chargingProfilePk'"
                 :rules="rules.siteChargingProfiles.chargingProfilePk"
-              -->
+              --
                 <el-select v-model="item.chargingProfilePk" filterable>
                   <el-option
                     v-for="(item,index) in chargingProfileOPtions"
@@ -421,7 +422,7 @@
                 src="../../assets/form-list-add.png"
               />
             </el-col>
-          </el-row>
+          </el-row> -->
         </div>
         <div v-if="enableFleetWhiteList()">
           <div class="sparator"></div>
@@ -588,12 +589,13 @@
 import waves from '@/directive/waves' // waves directive
 import site from '../../http/api/site'
 import { mapState } from 'vuex'
+import Balancing from './components/Balancing'
 import Reservation from './components/Reservation'
 import { getRoleName } from '@/utils/auth'
 import { fetchFleetCompanyOptions } from '@/http/api/driver'
 
 export default {
-  components: { Reservation },
+  components: { Balancing, Reservation },
   name: 'AddSite',
   directives: { waves },
   data() {
@@ -614,9 +616,14 @@ export default {
       chargeTypeOptions: [],
       siteTypeOptions: [],
       countryOptions: [],
-      chargingProfileOPtions: [],
-      boxUseOptions: [1,2,3,4,5,6,7,8,9,10],
-      
+      balancingForm: {
+        loadBalancing: 'dynamic',
+        staticMaxAmpere: 0,
+        siteChargingProfiles: [{
+          boxInUse: '',
+          chargingProfilePk: ''
+        }],
+      },
       updateSiteModel: {
         specialChargeRates: [],
         siteInformation: {
@@ -625,13 +632,6 @@ export default {
           longitude: '',
           type: '',
         },
-        siteChargingProfiles: [
-          {
-            boxInUse: '',
-            chargingProfilePk: ''
-          }
-        ],
-
         additionalInformation: {
           operatingHours: '',
           parkingFee: '',
@@ -841,8 +841,8 @@ export default {
     this.getChargeTypeOptions()
     await this.getCompanyOptions()
     await this.getSiteInfo()
-    this.getCountryOptions()
-    this.getChargingProfileOPtions()
+    await this.getCountryOptions()
+    //this.getChargingProfileOPtions()
     this.isMCSTUser = getRoleName() === "MCST"
     //this.pageLoading = false;
   },
@@ -905,38 +905,6 @@ export default {
         }
       })
     },
-    handelSubSiteChargingProfiles(index) {
-      const item = this.updateSiteModel.siteChargingProfiles[index]
-      this.$confirm(
-        'Are you sure you want to delete this config?',
-        'Delete', {
-          confirmButtonText: 'Ok',
-          cancelButtonText: 'Cancel',
-          type: 'warning',
-        }
-      ).then(() => {
-        if (item.siteChargingProfileId) {
-          site.deleteChargingProfile(item.siteChargingProfileId).then(res => {
-            
-          })
-          this.updateSiteModel.siteChargingProfiles.splice(index, 1)
-          if (this.updateSiteModel.siteChargingProfiles.length === 0) {
-            this.handleAddSiteChargingProfiles()
-          }
-        } else {
-          this.updateSiteModel.siteChargingProfiles.splice(index, 1)
-          if (this.updateSiteModel.siteChargingProfiles.length === 0) {
-            this.handleAddSiteChargingProfiles()
-          }
-        }
-      })
-    },
-    handleAddSiteChargingProfiles() {
-      this.updateSiteModel.siteChargingProfiles.push({
-        boxInUse: '',
-        chargingProfilePk: ''
-      })
-    },
     reservationTimeLimitEnable(enable) {
       this.updateSiteModel.reservation.enable = enable
     },
@@ -970,7 +938,8 @@ export default {
               siteTypes,
               locationLatitude,
               locationLongitude,
-
+              loadBalancing,
+              staticMaxAmpere,
               enableReservation,
               timeLimit,
               address = {},
@@ -1023,10 +992,12 @@ export default {
             } else {
               this.swtSpecialRate = true;
             }
-            this.updateSiteModel.siteChargingProfiles = data.siteChargingProfiles || []
-            if (this.updateSiteModel.siteChargingProfiles.length == 0) {
+            this.balancingForm.loadBalancing = loadBalancing || 'dynamic'
+            this.balancingForm.staticMaxAmpere = staticMaxAmpere
+            this.balancingForm.siteChargingProfiles = data.siteChargingProfiles || []
+            /*if (this.updateSiteModel.siteChargingProfiles.length == 0) {
               this.handleAddSiteChargingProfiles()
-            }
+            }*/
             
             if (whitelistUser.length) {
               this.updateSiteModel.whitelistUser = whitelistUser
@@ -1386,7 +1357,7 @@ export default {
       const fleetWhitelist = this.updateSiteModel.fleetWhitelist
         .filter(({fleetCompanyId}) => (fleetCompanyId))
       const chargeProfiles = []
-      this.updateSiteModel.siteChargingProfiles.forEach(item => {
+      this.balancingForm.siteChargingProfiles.forEach(item => {
         if (item.boxInUse && item.chargingProfilePk)
           chargeProfiles.push(item)
       })
@@ -1421,6 +1392,8 @@ export default {
         whitelistUser,
         fleetWhitelist,
         siteChargingProfiles: chargeProfiles,
+        loadBalancing: this.balancingForm.loadBalancing,
+        staticMaxAmpere: this.balancingForm.staticMaxAmpere,
         ...this.updateSiteModel.idle
       };
 

+ 67 - 7
Strides-Admin/src/views/site/components/Balancing.vue

@@ -57,7 +57,7 @@
           label-width="130px">
           <el-select 
             v-model="item.chargingProfilePk"
-            v-if="balancingForm.loadBalancing == 'static'"
+            v-if="balancingForm.loadBalancing == 'static' && balancingPrifileList[index]"
             filterable
             v-loading="balancingPrifileList[index].loading">
             <el-option
@@ -100,12 +100,12 @@ export default {
   props: {
     value: {
       type: Object,
-      default: {
-        loadBalancing: 'dynamic',
-        staticMaxAmpere: 0,
-        siteChargingProfiles: []
-      },
       required: true
+    },
+    title: String,
+    isEdit: {
+      type: Boolean,
+      default: false
     }
   },
   model: {
@@ -126,7 +126,8 @@ export default {
         staticMaxAmpere: 0,
         siteChargingProfiles: [{
           boxInUse: '',
-          chargingProfilePk: ''
+          chargingProfilePk: '',
+          siteChargingProfileId: ''
         }]
       },
       oldConfig: {
@@ -135,12 +136,36 @@ export default {
       }
     }
   },
+  watch: {
+    value: {
+      deep: true,
+      handler(n, o) {
+        this.balancingForm = n;
+        this.init()
+      }
+    }
+  },
   mounted() {
     this.balancingForm = this.value
     this.getBalancingTypeOptions()
     this.getChargingProfileOptions()
   },
   methods: {
+    init() {
+      if (this.balancingForm.siteChargingProfiles.length === 0) {
+        this.handleAddSiteChargingProfiles()
+      }
+      this.$nextTick(() => {
+        if (this.isEdit && this.balancingForm.loadBalancing == "static") {
+          this.balancingForm.siteChargingProfiles.forEach((item, index) => {
+            if (this.balancingPrifileList[index] == undefined) {
+              this.addBalancingPrifileList()
+            }
+          })
+          this.getAllBalancingChargingProfiles()
+        }
+      })
+    },
     onChange() {
       //console.log(event);
       this.$emit('change', this.balancingForm);
@@ -203,6 +228,12 @@ export default {
         this.chargingProfileOptions = data
       })
     },
+    addBalancingPrifileList() {
+      this.balancingPrifileList.push({
+        options: [],
+        loading: false
+      })
+    },
     /**
      * 遍历获取均衡充电配置选项
      * @param {Object} clear 是否清除之前的选项
@@ -234,7 +265,35 @@ export default {
         })
       }
     },
+    updateSubSiteChargingProfiles(index) {
+      const item = this.balancingForm.siteChargingProfiles[index]
+      this.$confirm('Are you sure you want to delete this config?', 'Delete', {
+        confirmButtonText: 'Ok',
+        cancelButtonText: 'Cancel',
+        type: 'warning',
+      }).then(() => {
+        if (item.siteChargingProfileId) {
+          site.deleteChargingProfile(item.siteChargingProfileId).then(res => {
+            
+          })
+          this.balancingForm.siteChargingProfiles.splice(index, 1)
+          this.balancingPrifileList.splice(index, 1)
+          if (this.balancingForm.siteChargingProfiles.length === 0) {
+            this.handleAddSiteChargingProfiles()
+          }
+        } else {
+          this.balancingForm.siteChargingProfiles.splice(index, 1)
+          this.balancingPrifileList.splice(index, 1)
+          if (this.balancingForm.siteChargingProfiles.length === 0) {
+            this.handleAddSiteChargingProfiles()
+          }
+        }
+      })
+    },
     handelSubSiteChargingProfiles(index) {
+      if (this.isEdit) {
+        return this.updateSubSiteChargingProfiles(index);
+      }
       this.balancingForm.siteChargingProfiles.splice(index, 1)
       this.balancingPrifileList.splice(index, 1)
       if (this.balancingForm.siteChargingProfiles.length === 0) {
@@ -253,6 +312,7 @@ export default {
           options: [],
           loading: false
         })
+        this.addBalancingPrifileList()
         this.getAllBalancingChargingProfiles()
       }
       //this.onChange();