EMS2.0 交付文档
|  | @ -0,0 +1,18 @@ | |||
| module.exports = { | ||||
|   root: true, | ||||
|   env: { | ||||
|     es6: true, | ||||
|     node: true | ||||
|   }, | ||||
|   'extends': [ | ||||
|     'plugin:vue/essential', | ||||
|     'eslint:recommended' | ||||
|   ], | ||||
|   rules: { | ||||
|     'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', | ||||
|     'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' | ||||
|   }, | ||||
|   parserOptions: { | ||||
|     parser: 'babel-eslint' | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,21 @@ | |||
| .DS_Store | ||||
| node_modules | ||||
| /dist | ||||
| 
 | ||||
| # local env files | ||||
| .env.local | ||||
| .env.*.local | ||||
| 
 | ||||
| # Log files | ||||
| npm-debug.log* | ||||
| yarn-debug.log* | ||||
| yarn-error.log* | ||||
| 
 | ||||
| # Editor directories and files | ||||
| .idea | ||||
| .vscode | ||||
| *.suo | ||||
| *.ntvs* | ||||
| *.njsproj | ||||
| *.sln | ||||
| *.sw? | ||||
|  | @ -0,0 +1,8 @@ | |||
| { | ||||
|   "esversion": 9, | ||||
|   "asi":true, | ||||
|   "sub":true, | ||||
|   "elision":true, | ||||
|   "expr": true, | ||||
|   "evil": true | ||||
| } | ||||
|  | @ -0,0 +1,32 @@ | |||
| // https://github.com/michael-ciniawsky/postcss-load-config
 | ||||
| module.exports = { | ||||
|   plugins: { | ||||
|     // 兼容浏览器,添加前缀
 | ||||
|     'autoprefixer': { | ||||
|       overrideBrowserslist: [ | ||||
|         "Android 4.1", | ||||
|         "iOS 7.1", | ||||
|         "Chrome > 31", | ||||
|         "ff > 31", | ||||
|         "ie >= 8" | ||||
|         //'last 10 versions', // 所有主流浏览器最近10版本用
 | ||||
|       ], | ||||
|       // grid: true
 | ||||
|     }, | ||||
|     "postcss-pxtorem": { | ||||
|       rootValue: 32, //结果为:设计稿元素尺寸/75,设计稿宽 750,最终页面会换算成 10rem
 | ||||
|       unitPrecision: 5, // 允许REM单位增长的十进制数
 | ||||
|       propList: ["*"], | ||||
|       selectorBlackList: [ | ||||
|         ".el-", | ||||
|         ".van-", | ||||
|         ".zx-", | ||||
|         // ".ig-",
 | ||||
|         // ".mt-",
 | ||||
|         // ".mint-",
 | ||||
|         // ".range-"
 | ||||
|       ], //(数组)要忽略的选择器并保留为px
 | ||||
|       minPixelValue: 2 // (数字)设置要替换的最小像素值 解决 1px 问题
 | ||||
|     } | ||||
|   } | ||||
| }; | ||||
|  | @ -0,0 +1,661 @@ | |||
|                     GNU AFFERO GENERAL PUBLIC LICENSE | ||||
|                        Version 3, 19 November 2007 | ||||
| 
 | ||||
|  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | ||||
|  Everyone is permitted to copy and distribute verbatim copies | ||||
|  of this license document, but changing it is not allowed. | ||||
| 
 | ||||
|                             Preamble | ||||
| 
 | ||||
|   The GNU Affero General Public License is a free, copyleft license for | ||||
| software and other kinds of works, specifically designed to ensure | ||||
| cooperation with the community in the case of network server software. | ||||
| 
 | ||||
|   The licenses for most software and other practical works are designed | ||||
| to take away your freedom to share and change the works.  By contrast, | ||||
| our General Public Licenses are intended to guarantee your freedom to | ||||
| share and change all versions of a program--to make sure it remains free | ||||
| software for all its users. | ||||
| 
 | ||||
|   When we speak of free software, we are referring to freedom, not | ||||
| price.  Our General Public Licenses are designed to make sure that you | ||||
| have the freedom to distribute copies of free software (and charge for | ||||
| them if you wish), that you receive source code or can get it if you | ||||
| want it, that you can change the software or use pieces of it in new | ||||
| free programs, and that you know you can do these things. | ||||
| 
 | ||||
|   Developers that use our General Public Licenses protect your rights | ||||
| with two steps: (1) assert copyright on the software, and (2) offer | ||||
| you this License which gives you legal permission to copy, distribute | ||||
| and/or modify the software. | ||||
| 
 | ||||
|   A secondary benefit of defending all users' freedom is that | ||||
| improvements made in alternate versions of the program, if they | ||||
| receive widespread use, become available for other developers to | ||||
| incorporate.  Many developers of free software are heartened and | ||||
| encouraged by the resulting cooperation.  However, in the case of | ||||
| software used on network servers, this result may fail to come about. | ||||
| The GNU General Public License permits making a modified version and | ||||
| letting the public access it on a server without ever releasing its | ||||
| source code to the public. | ||||
| 
 | ||||
|   The GNU Affero General Public License is designed specifically to | ||||
| ensure that, in such cases, the modified source code becomes available | ||||
| to the community.  It requires the operator of a network server to | ||||
| provide the source code of the modified version running there to the | ||||
| users of that server.  Therefore, public use of a modified version, on | ||||
| a publicly accessible server, gives the public access to the source | ||||
| code of the modified version. | ||||
| 
 | ||||
|   An older license, called the Affero General Public License and | ||||
| published by Affero, was designed to accomplish similar goals.  This is | ||||
| a different license, not a version of the Affero GPL, but Affero has | ||||
| released a new version of the Affero GPL which permits relicensing under | ||||
| this license. | ||||
| 
 | ||||
|   The precise terms and conditions for copying, distribution and | ||||
| modification follow. | ||||
| 
 | ||||
|                        TERMS AND CONDITIONS | ||||
| 
 | ||||
|   0. Definitions. | ||||
| 
 | ||||
|   "This License" refers to version 3 of the GNU Affero General Public License. | ||||
| 
 | ||||
|   "Copyright" also means copyright-like laws that apply to other kinds of | ||||
| works, such as semiconductor masks. | ||||
| 
 | ||||
|   "The Program" refers to any copyrightable work licensed under this | ||||
| License.  Each licensee is addressed as "you".  "Licensees" and | ||||
| "recipients" may be individuals or organizations. | ||||
| 
 | ||||
|   To "modify" a work means to copy from or adapt all or part of the work | ||||
| in a fashion requiring copyright permission, other than the making of an | ||||
| exact copy.  The resulting work is called a "modified version" of the | ||||
| earlier work or a work "based on" the earlier work. | ||||
| 
 | ||||
|   A "covered work" means either the unmodified Program or a work based | ||||
| on the Program. | ||||
| 
 | ||||
|   To "propagate" a work means to do anything with it that, without | ||||
| permission, would make you directly or secondarily liable for | ||||
| infringement under applicable copyright law, except executing it on a | ||||
| computer or modifying a private copy.  Propagation includes copying, | ||||
| distribution (with or without modification), making available to the | ||||
| public, and in some countries other activities as well. | ||||
| 
 | ||||
|   To "convey" a work means any kind of propagation that enables other | ||||
| parties to make or receive copies.  Mere interaction with a user through | ||||
| a computer network, with no transfer of a copy, is not conveying. | ||||
| 
 | ||||
|   An interactive user interface displays "Appropriate Legal Notices" | ||||
| to the extent that it includes a convenient and prominently visible | ||||
| feature that (1) displays an appropriate copyright notice, and (2) | ||||
| tells the user that there is no warranty for the work (except to the | ||||
| extent that warranties are provided), that licensees may convey the | ||||
| work under this License, and how to view a copy of this License.  If | ||||
| the interface presents a list of user commands or options, such as a | ||||
| menu, a prominent item in the list meets this criterion. | ||||
| 
 | ||||
|   1. Source Code. | ||||
| 
 | ||||
|   The "source code" for a work means the preferred form of the work | ||||
| for making modifications to it.  "Object code" means any non-source | ||||
| form of a work. | ||||
| 
 | ||||
|   A "Standard Interface" means an interface that either is an official | ||||
| standard defined by a recognized standards body, or, in the case of | ||||
| interfaces specified for a particular programming language, one that | ||||
| is widely used among developers working in that language. | ||||
| 
 | ||||
|   The "System Libraries" of an executable work include anything, other | ||||
| than the work as a whole, that (a) is included in the normal form of | ||||
| packaging a Major Component, but which is not part of that Major | ||||
| Component, and (b) serves only to enable use of the work with that | ||||
| Major Component, or to implement a Standard Interface for which an | ||||
| implementation is available to the public in source code form.  A | ||||
| "Major Component", in this context, means a major essential component | ||||
| (kernel, window system, and so on) of the specific operating system | ||||
| (if any) on which the executable work runs, or a compiler used to | ||||
| produce the work, or an object code interpreter used to run it. | ||||
| 
 | ||||
|   The "Corresponding Source" for a work in object code form means all | ||||
| the source code needed to generate, install, and (for an executable | ||||
| work) run the object code and to modify the work, including scripts to | ||||
| control those activities.  However, it does not include the work's | ||||
| System Libraries, or general-purpose tools or generally available free | ||||
| programs which are used unmodified in performing those activities but | ||||
| which are not part of the work.  For example, Corresponding Source | ||||
| includes interface definition files associated with source files for | ||||
| the work, and the source code for shared libraries and dynamically | ||||
| linked subprograms that the work is specifically designed to require, | ||||
| such as by intimate data communication or control flow between those | ||||
| subprograms and other parts of the work. | ||||
| 
 | ||||
|   The Corresponding Source need not include anything that users | ||||
| can regenerate automatically from other parts of the Corresponding | ||||
| Source. | ||||
| 
 | ||||
|   The Corresponding Source for a work in source code form is that | ||||
| same work. | ||||
| 
 | ||||
|   2. Basic Permissions. | ||||
| 
 | ||||
|   All rights granted under this License are granted for the term of | ||||
| copyright on the Program, and are irrevocable provided the stated | ||||
| conditions are met.  This License explicitly affirms your unlimited | ||||
| permission to run the unmodified Program.  The output from running a | ||||
| covered work is covered by this License only if the output, given its | ||||
| content, constitutes a covered work.  This License acknowledges your | ||||
| rights of fair use or other equivalent, as provided by copyright law. | ||||
| 
 | ||||
|   You may make, run and propagate covered works that you do not | ||||
| convey, without conditions so long as your license otherwise remains | ||||
| in force.  You may convey covered works to others for the sole purpose | ||||
| of having them make modifications exclusively for you, or provide you | ||||
| with facilities for running those works, provided that you comply with | ||||
| the terms of this License in conveying all material for which you do | ||||
| not control copyright.  Those thus making or running the covered works | ||||
| for you must do so exclusively on your behalf, under your direction | ||||
| and control, on terms that prohibit them from making any copies of | ||||
| your copyrighted material outside their relationship with you. | ||||
| 
 | ||||
|   Conveying under any other circumstances is permitted solely under | ||||
| the conditions stated below.  Sublicensing is not allowed; section 10 | ||||
| makes it unnecessary. | ||||
| 
 | ||||
|   3. Protecting Users' Legal Rights From Anti-Circumvention Law. | ||||
| 
 | ||||
|   No covered work shall be deemed part of an effective technological | ||||
| measure under any applicable law fulfilling obligations under article | ||||
| 11 of the WIPO copyright treaty adopted on 20 December 1996, or | ||||
| similar laws prohibiting or restricting circumvention of such | ||||
| measures. | ||||
| 
 | ||||
|   When you convey a covered work, you waive any legal power to forbid | ||||
| circumvention of technological measures to the extent such circumvention | ||||
| is effected by exercising rights under this License with respect to | ||||
| the covered work, and you disclaim any intention to limit operation or | ||||
| modification of the work as a means of enforcing, against the work's | ||||
| users, your or third parties' legal rights to forbid circumvention of | ||||
| technological measures. | ||||
| 
 | ||||
|   4. Conveying Verbatim Copies. | ||||
| 
 | ||||
|   You may convey verbatim copies of the Program's source code as you | ||||
| receive it, in any medium, provided that you conspicuously and | ||||
| appropriately publish on each copy an appropriate copyright notice; | ||||
| keep intact all notices stating that this License and any | ||||
| non-permissive terms added in accord with section 7 apply to the code; | ||||
| keep intact all notices of the absence of any warranty; and give all | ||||
| recipients a copy of this License along with the Program. | ||||
| 
 | ||||
|   You may charge any price or no price for each copy that you convey, | ||||
| and you may offer support or warranty protection for a fee. | ||||
| 
 | ||||
|   5. Conveying Modified Source Versions. | ||||
| 
 | ||||
|   You may convey a work based on the Program, or the modifications to | ||||
| produce it from the Program, in the form of source code under the | ||||
| terms of section 4, provided that you also meet all of these conditions: | ||||
| 
 | ||||
|     a) The work must carry prominent notices stating that you modified | ||||
|     it, and giving a relevant date. | ||||
| 
 | ||||
|     b) The work must carry prominent notices stating that it is | ||||
|     released under this License and any conditions added under section | ||||
|     7.  This requirement modifies the requirement in section 4 to | ||||
|     "keep intact all notices". | ||||
| 
 | ||||
|     c) You must license the entire work, as a whole, under this | ||||
|     License to anyone who comes into possession of a copy.  This | ||||
|     License will therefore apply, along with any applicable section 7 | ||||
|     additional terms, to the whole of the work, and all its parts, | ||||
|     regardless of how they are packaged.  This License gives no | ||||
|     permission to license the work in any other way, but it does not | ||||
|     invalidate such permission if you have separately received it. | ||||
| 
 | ||||
|     d) If the work has interactive user interfaces, each must display | ||||
|     Appropriate Legal Notices; however, if the Program has interactive | ||||
|     interfaces that do not display Appropriate Legal Notices, your | ||||
|     work need not make them do so. | ||||
| 
 | ||||
|   A compilation of a covered work with other separate and independent | ||||
| works, which are not by their nature extensions of the covered work, | ||||
| and which are not combined with it such as to form a larger program, | ||||
| in or on a volume of a storage or distribution medium, is called an | ||||
| "aggregate" if the compilation and its resulting copyright are not | ||||
| used to limit the access or legal rights of the compilation's users | ||||
| beyond what the individual works permit.  Inclusion of a covered work | ||||
| in an aggregate does not cause this License to apply to the other | ||||
| parts of the aggregate. | ||||
| 
 | ||||
|   6. Conveying Non-Source Forms. | ||||
| 
 | ||||
|   You may convey a covered work in object code form under the terms | ||||
| of sections 4 and 5, provided that you also convey the | ||||
| machine-readable Corresponding Source under the terms of this License, | ||||
| in one of these ways: | ||||
| 
 | ||||
|     a) Convey the object code in, or embodied in, a physical product | ||||
|     (including a physical distribution medium), accompanied by the | ||||
|     Corresponding Source fixed on a durable physical medium | ||||
|     customarily used for software interchange. | ||||
| 
 | ||||
|     b) Convey the object code in, or embodied in, a physical product | ||||
|     (including a physical distribution medium), accompanied by a | ||||
|     written offer, valid for at least three years and valid for as | ||||
|     long as you offer spare parts or customer support for that product | ||||
|     model, to give anyone who possesses the object code either (1) a | ||||
|     copy of the Corresponding Source for all the software in the | ||||
|     product that is covered by this License, on a durable physical | ||||
|     medium customarily used for software interchange, for a price no | ||||
|     more than your reasonable cost of physically performing this | ||||
|     conveying of source, or (2) access to copy the | ||||
|     Corresponding Source from a network server at no charge. | ||||
| 
 | ||||
|     c) Convey individual copies of the object code with a copy of the | ||||
|     written offer to provide the Corresponding Source.  This | ||||
|     alternative is allowed only occasionally and noncommercially, and | ||||
|     only if you received the object code with such an offer, in accord | ||||
|     with subsection 6b. | ||||
| 
 | ||||
|     d) Convey the object code by offering access from a designated | ||||
|     place (gratis or for a charge), and offer equivalent access to the | ||||
|     Corresponding Source in the same way through the same place at no | ||||
|     further charge.  You need not require recipients to copy the | ||||
|     Corresponding Source along with the object code.  If the place to | ||||
|     copy the object code is a network server, the Corresponding Source | ||||
|     may be on a different server (operated by you or a third party) | ||||
|     that supports equivalent copying facilities, provided you maintain | ||||
|     clear directions next to the object code saying where to find the | ||||
|     Corresponding Source.  Regardless of what server hosts the | ||||
|     Corresponding Source, you remain obligated to ensure that it is | ||||
|     available for as long as needed to satisfy these requirements. | ||||
| 
 | ||||
|     e) Convey the object code using peer-to-peer transmission, provided | ||||
|     you inform other peers where the object code and Corresponding | ||||
|     Source of the work are being offered to the general public at no | ||||
|     charge under subsection 6d. | ||||
| 
 | ||||
|   A separable portion of the object code, whose source code is excluded | ||||
| from the Corresponding Source as a System Library, need not be | ||||
| included in conveying the object code work. | ||||
| 
 | ||||
|   A "User Product" is either (1) a "consumer product", which means any | ||||
| tangible personal property which is normally used for personal, family, | ||||
| or household purposes, or (2) anything designed or sold for incorporation | ||||
| into a dwelling.  In determining whether a product is a consumer product, | ||||
| doubtful cases shall be resolved in favor of coverage.  For a particular | ||||
| product received by a particular user, "normally used" refers to a | ||||
| typical or common use of that class of product, regardless of the status | ||||
| of the particular user or of the way in which the particular user | ||||
| actually uses, or expects or is expected to use, the product.  A product | ||||
| is a consumer product regardless of whether the product has substantial | ||||
| commercial, industrial or non-consumer uses, unless such uses represent | ||||
| the only significant mode of use of the product. | ||||
| 
 | ||||
|   "Installation Information" for a User Product means any methods, | ||||
| procedures, authorization keys, or other information required to install | ||||
| and execute modified versions of a covered work in that User Product from | ||||
| a modified version of its Corresponding Source.  The information must | ||||
| suffice to ensure that the continued functioning of the modified object | ||||
| code is in no case prevented or interfered with solely because | ||||
| modification has been made. | ||||
| 
 | ||||
|   If you convey an object code work under this section in, or with, or | ||||
| specifically for use in, a User Product, and the conveying occurs as | ||||
| part of a transaction in which the right of possession and use of the | ||||
| User Product is transferred to the recipient in perpetuity or for a | ||||
| fixed term (regardless of how the transaction is characterized), the | ||||
| Corresponding Source conveyed under this section must be accompanied | ||||
| by the Installation Information.  But this requirement does not apply | ||||
| if neither you nor any third party retains the ability to install | ||||
| modified object code on the User Product (for example, the work has | ||||
| been installed in ROM). | ||||
| 
 | ||||
|   The requirement to provide Installation Information does not include a | ||||
| requirement to continue to provide support service, warranty, or updates | ||||
| for a work that has been modified or installed by the recipient, or for | ||||
| the User Product in which it has been modified or installed.  Access to a | ||||
| network may be denied when the modification itself materially and | ||||
| adversely affects the operation of the network or violates the rules and | ||||
| protocols for communication across the network. | ||||
| 
 | ||||
|   Corresponding Source conveyed, and Installation Information provided, | ||||
| in accord with this section must be in a format that is publicly | ||||
| documented (and with an implementation available to the public in | ||||
| source code form), and must require no special password or key for | ||||
| unpacking, reading or copying. | ||||
| 
 | ||||
|   7. Additional Terms. | ||||
| 
 | ||||
|   "Additional permissions" are terms that supplement the terms of this | ||||
| License by making exceptions from one or more of its conditions. | ||||
| Additional permissions that are applicable to the entire Program shall | ||||
| be treated as though they were included in this License, to the extent | ||||
| that they are valid under applicable law.  If additional permissions | ||||
| apply only to part of the Program, that part may be used separately | ||||
| under those permissions, but the entire Program remains governed by | ||||
| this License without regard to the additional permissions. | ||||
| 
 | ||||
|   When you convey a copy of a covered work, you may at your option | ||||
| remove any additional permissions from that copy, or from any part of | ||||
| it.  (Additional permissions may be written to require their own | ||||
| removal in certain cases when you modify the work.)  You may place | ||||
| additional permissions on material, added by you to a covered work, | ||||
| for which you have or can give appropriate copyright permission. | ||||
| 
 | ||||
|   Notwithstanding any other provision of this License, for material you | ||||
| add to a covered work, you may (if authorized by the copyright holders of | ||||
| that material) supplement the terms of this License with terms: | ||||
| 
 | ||||
|     a) Disclaiming warranty or limiting liability differently from the | ||||
|     terms of sections 15 and 16 of this License; or | ||||
| 
 | ||||
|     b) Requiring preservation of specified reasonable legal notices or | ||||
|     author attributions in that material or in the Appropriate Legal | ||||
|     Notices displayed by works containing it; or | ||||
| 
 | ||||
|     c) Prohibiting misrepresentation of the origin of that material, or | ||||
|     requiring that modified versions of such material be marked in | ||||
|     reasonable ways as different from the original version; or | ||||
| 
 | ||||
|     d) Limiting the use for publicity purposes of names of licensors or | ||||
|     authors of the material; or | ||||
| 
 | ||||
|     e) Declining to grant rights under trademark law for use of some | ||||
|     trade names, trademarks, or service marks; or | ||||
| 
 | ||||
|     f) Requiring indemnification of licensors and authors of that | ||||
|     material by anyone who conveys the material (or modified versions of | ||||
|     it) with contractual assumptions of liability to the recipient, for | ||||
|     any liability that these contractual assumptions directly impose on | ||||
|     those licensors and authors. | ||||
| 
 | ||||
|   All other non-permissive additional terms are considered "further | ||||
| restrictions" within the meaning of section 10.  If the Program as you | ||||
| received it, or any part of it, contains a notice stating that it is | ||||
| governed by this License along with a term that is a further | ||||
| restriction, you may remove that term.  If a license document contains | ||||
| a further restriction but permits relicensing or conveying under this | ||||
| License, you may add to a covered work material governed by the terms | ||||
| of that license document, provided that the further restriction does | ||||
| not survive such relicensing or conveying. | ||||
| 
 | ||||
|   If you add terms to a covered work in accord with this section, you | ||||
| must place, in the relevant source files, a statement of the | ||||
| additional terms that apply to those files, or a notice indicating | ||||
| where to find the applicable terms. | ||||
| 
 | ||||
|   Additional terms, permissive or non-permissive, may be stated in the | ||||
| form of a separately written license, or stated as exceptions; | ||||
| the above requirements apply either way. | ||||
| 
 | ||||
|   8. Termination. | ||||
| 
 | ||||
|   You may not propagate or modify a covered work except as expressly | ||||
| provided under this License.  Any attempt otherwise to propagate or | ||||
| modify it is void, and will automatically terminate your rights under | ||||
| this License (including any patent licenses granted under the third | ||||
| paragraph of section 11). | ||||
| 
 | ||||
|   However, if you cease all violation of this License, then your | ||||
| license from a particular copyright holder is reinstated (a) | ||||
| provisionally, unless and until the copyright holder explicitly and | ||||
| finally terminates your license, and (b) permanently, if the copyright | ||||
| holder fails to notify you of the violation by some reasonable means | ||||
| prior to 60 days after the cessation. | ||||
| 
 | ||||
|   Moreover, your license from a particular copyright holder is | ||||
| reinstated permanently if the copyright holder notifies you of the | ||||
| violation by some reasonable means, this is the first time you have | ||||
| received notice of violation of this License (for any work) from that | ||||
| copyright holder, and you cure the violation prior to 30 days after | ||||
| your receipt of the notice. | ||||
| 
 | ||||
|   Termination of your rights under this section does not terminate the | ||||
| licenses of parties who have received copies or rights from you under | ||||
| this License.  If your rights have been terminated and not permanently | ||||
| reinstated, you do not qualify to receive new licenses for the same | ||||
| material under section 10. | ||||
| 
 | ||||
|   9. Acceptance Not Required for Having Copies. | ||||
| 
 | ||||
|   You are not required to accept this License in order to receive or | ||||
| run a copy of the Program.  Ancillary propagation of a covered work | ||||
| occurring solely as a consequence of using peer-to-peer transmission | ||||
| to receive a copy likewise does not require acceptance.  However, | ||||
| nothing other than this License grants you permission to propagate or | ||||
| modify any covered work.  These actions infringe copyright if you do | ||||
| not accept this License.  Therefore, by modifying or propagating a | ||||
| covered work, you indicate your acceptance of this License to do so. | ||||
| 
 | ||||
|   10. Automatic Licensing of Downstream Recipients. | ||||
| 
 | ||||
|   Each time you convey a covered work, the recipient automatically | ||||
| receives a license from the original licensors, to run, modify and | ||||
| propagate that work, subject to this License.  You are not responsible | ||||
| for enforcing compliance by third parties with this License. | ||||
| 
 | ||||
|   An "entity transaction" is a transaction transferring control of an | ||||
| organization, or substantially all assets of one, or subdividing an | ||||
| organization, or merging organizations.  If propagation of a covered | ||||
| work results from an entity transaction, each party to that | ||||
| transaction who receives a copy of the work also receives whatever | ||||
| licenses to the work the party's predecessor in interest had or could | ||||
| give under the previous paragraph, plus a right to possession of the | ||||
| Corresponding Source of the work from the predecessor in interest, if | ||||
| the predecessor has it or can get it with reasonable efforts. | ||||
| 
 | ||||
|   You may not impose any further restrictions on the exercise of the | ||||
| rights granted or affirmed under this License.  For example, you may | ||||
| not impose a license fee, royalty, or other charge for exercise of | ||||
| rights granted under this License, and you may not initiate litigation | ||||
| (including a cross-claim or counterclaim in a lawsuit) alleging that | ||||
| any patent claim is infringed by making, using, selling, offering for | ||||
| sale, or importing the Program or any portion of it. | ||||
| 
 | ||||
|   11. Patents. | ||||
| 
 | ||||
|   A "contributor" is a copyright holder who authorizes use under this | ||||
| License of the Program or a work on which the Program is based.  The | ||||
| work thus licensed is called the contributor's "contributor version". | ||||
| 
 | ||||
|   A contributor's "essential patent claims" are all patent claims | ||||
| owned or controlled by the contributor, whether already acquired or | ||||
| hereafter acquired, that would be infringed by some manner, permitted | ||||
| by this License, of making, using, or selling its contributor version, | ||||
| but do not include claims that would be infringed only as a | ||||
| consequence of further modification of the contributor version.  For | ||||
| purposes of this definition, "control" includes the right to grant | ||||
| patent sublicenses in a manner consistent with the requirements of | ||||
| this License. | ||||
| 
 | ||||
|   Each contributor grants you a non-exclusive, worldwide, royalty-free | ||||
| patent license under the contributor's essential patent claims, to | ||||
| make, use, sell, offer for sale, import and otherwise run, modify and | ||||
| propagate the contents of its contributor version. | ||||
| 
 | ||||
|   In the following three paragraphs, a "patent license" is any express | ||||
| agreement or commitment, however denominated, not to enforce a patent | ||||
| (such as an express permission to practice a patent or covenant not to | ||||
| sue for patent infringement).  To "grant" such a patent license to a | ||||
| party means to make such an agreement or commitment not to enforce a | ||||
| patent against the party. | ||||
| 
 | ||||
|   If you convey a covered work, knowingly relying on a patent license, | ||||
| and the Corresponding Source of the work is not available for anyone | ||||
| to copy, free of charge and under the terms of this License, through a | ||||
| publicly available network server or other readily accessible means, | ||||
| then you must either (1) cause the Corresponding Source to be so | ||||
| available, or (2) arrange to deprive yourself of the benefit of the | ||||
| patent license for this particular work, or (3) arrange, in a manner | ||||
| consistent with the requirements of this License, to extend the patent | ||||
| license to downstream recipients.  "Knowingly relying" means you have | ||||
| actual knowledge that, but for the patent license, your conveying the | ||||
| covered work in a country, or your recipient's use of the covered work | ||||
| in a country, would infringe one or more identifiable patents in that | ||||
| country that you have reason to believe are valid. | ||||
| 
 | ||||
|   If, pursuant to or in connection with a single transaction or | ||||
| arrangement, you convey, or propagate by procuring conveyance of, a | ||||
| covered work, and grant a patent license to some of the parties | ||||
| receiving the covered work authorizing them to use, propagate, modify | ||||
| or convey a specific copy of the covered work, then the patent license | ||||
| you grant is automatically extended to all recipients of the covered | ||||
| work and works based on it. | ||||
| 
 | ||||
|   A patent license is "discriminatory" if it does not include within | ||||
| the scope of its coverage, prohibits the exercise of, or is | ||||
| conditioned on the non-exercise of one or more of the rights that are | ||||
| specifically granted under this License.  You may not convey a covered | ||||
| work if you are a party to an arrangement with a third party that is | ||||
| in the business of distributing software, under which you make payment | ||||
| to the third party based on the extent of your activity of conveying | ||||
| the work, and under which the third party grants, to any of the | ||||
| parties who would receive the covered work from you, a discriminatory | ||||
| patent license (a) in connection with copies of the covered work | ||||
| conveyed by you (or copies made from those copies), or (b) primarily | ||||
| for and in connection with specific products or compilations that | ||||
| contain the covered work, unless you entered into that arrangement, | ||||
| or that patent license was granted, prior to 28 March 2007. | ||||
| 
 | ||||
|   Nothing in this License shall be construed as excluding or limiting | ||||
| any implied license or other defenses to infringement that may | ||||
| otherwise be available to you under applicable patent law. | ||||
| 
 | ||||
|   12. No Surrender of Others' Freedom. | ||||
| 
 | ||||
|   If conditions are imposed on you (whether by court order, agreement or | ||||
| otherwise) that contradict the conditions of this License, they do not | ||||
| excuse you from the conditions of this License.  If you cannot convey a | ||||
| covered work so as to satisfy simultaneously your obligations under this | ||||
| License and any other pertinent obligations, then as a consequence you may | ||||
| not convey it at all.  For example, if you agree to terms that obligate you | ||||
| to collect a royalty for further conveying from those to whom you convey | ||||
| the Program, the only way you could satisfy both those terms and this | ||||
| License would be to refrain entirely from conveying the Program. | ||||
| 
 | ||||
|   13. Remote Network Interaction; Use with the GNU General Public License. | ||||
| 
 | ||||
|   Notwithstanding any other provision of this License, if you modify the | ||||
| Program, your modified version must prominently offer all users | ||||
| interacting with it remotely through a computer network (if your version | ||||
| supports such interaction) an opportunity to receive the Corresponding | ||||
| Source of your version by providing access to the Corresponding Source | ||||
| from a network server at no charge, through some standard or customary | ||||
| means of facilitating copying of software.  This Corresponding Source | ||||
| shall include the Corresponding Source for any work covered by version 3 | ||||
| of the GNU General Public License that is incorporated pursuant to the | ||||
| following paragraph. | ||||
| 
 | ||||
|   Notwithstanding any other provision of this License, you have | ||||
| permission to link or combine any covered work with a work licensed | ||||
| under version 3 of the GNU General Public License into a single | ||||
| combined work, and to convey the resulting work.  The terms of this | ||||
| License will continue to apply to the part which is the covered work, | ||||
| but the work with which it is combined will remain governed by version | ||||
| 3 of the GNU General Public License. | ||||
| 
 | ||||
|   14. Revised Versions of this License. | ||||
| 
 | ||||
|   The Free Software Foundation may publish revised and/or new versions of | ||||
| the GNU Affero General Public License from time to time.  Such new versions | ||||
| will be similar in spirit to the present version, but may differ in detail to | ||||
| address new problems or concerns. | ||||
| 
 | ||||
|   Each version is given a distinguishing version number.  If the | ||||
| Program specifies that a certain numbered version of the GNU Affero General | ||||
| Public License "or any later version" applies to it, you have the | ||||
| option of following the terms and conditions either of that numbered | ||||
| version or of any later version published by the Free Software | ||||
| Foundation.  If the Program does not specify a version number of the | ||||
| GNU Affero General Public License, you may choose any version ever published | ||||
| by the Free Software Foundation. | ||||
| 
 | ||||
|   If the Program specifies that a proxy can decide which future | ||||
| versions of the GNU Affero General Public License can be used, that proxy's | ||||
| public statement of acceptance of a version permanently authorizes you | ||||
| to choose that version for the Program. | ||||
| 
 | ||||
|   Later license versions may give you additional or different | ||||
| permissions.  However, no additional obligations are imposed on any | ||||
| author or copyright holder as a result of your choosing to follow a | ||||
| later version. | ||||
| 
 | ||||
|   15. Disclaimer of Warranty. | ||||
| 
 | ||||
|   THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY | ||||
| APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT | ||||
| HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY | ||||
| OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, | ||||
| THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
| PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM | ||||
| IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF | ||||
| ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||||
| 
 | ||||
|   16. Limitation of Liability. | ||||
| 
 | ||||
|   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||
| WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | ||||
| THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY | ||||
| GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE | ||||
| USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF | ||||
| DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD | ||||
| PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), | ||||
| EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF | ||||
| SUCH DAMAGES. | ||||
| 
 | ||||
|   17. Interpretation of Sections 15 and 16. | ||||
| 
 | ||||
|   If the disclaimer of warranty and limitation of liability provided | ||||
| above cannot be given local legal effect according to their terms, | ||||
| reviewing courts shall apply local law that most closely approximates | ||||
| an absolute waiver of all civil liability in connection with the | ||||
| Program, unless a warranty or assumption of liability accompanies a | ||||
| copy of the Program in return for a fee. | ||||
| 
 | ||||
|                      END OF TERMS AND CONDITIONS | ||||
| 
 | ||||
|             How to Apply These Terms to Your New Programs | ||||
| 
 | ||||
|   If you develop a new program, and you want it to be of the greatest | ||||
| possible use to the public, the best way to achieve this is to make it | ||||
| free software which everyone can redistribute and change under these terms. | ||||
| 
 | ||||
|   To do so, attach the following notices to the program.  It is safest | ||||
| to attach them to the start of each source file to most effectively | ||||
| state the exclusion of warranty; and each file should have at least | ||||
| the "copyright" line and a pointer to where the full notice is found. | ||||
| 
 | ||||
|     <one line to give the program's name and a brief idea of what it does.> | ||||
|     Copyright (C) <year>  <name of author> | ||||
| 
 | ||||
|     This program is free software: you can redistribute it and/or modify | ||||
|     it under the terms of the GNU Affero General Public License as published | ||||
|     by the Free Software Foundation, either version 3 of the License, or | ||||
|     (at your option) any later version. | ||||
| 
 | ||||
|     This program is distributed in the hope that it will be useful, | ||||
|     but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|     GNU Affero General Public License for more details. | ||||
| 
 | ||||
|     You should have received a copy of the GNU Affero General Public License | ||||
|     along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
| 
 | ||||
| Also add information on how to contact you by electronic and paper mail. | ||||
| 
 | ||||
|   If your software can interact with users remotely through a computer | ||||
| network, you should also make sure that it provides a way for users to | ||||
| get its source.  For example, if your program is a web application, its | ||||
| interface could display a "Source" link that leads users to an archive | ||||
| of the code.  There are many ways you could offer source, and different | ||||
| solutions will be better for different programs; see section 13 for the | ||||
| specific requirements. | ||||
| 
 | ||||
|   You should also get your employer (if you work as a programmer) or school, | ||||
| if any, to sign a "copyright disclaimer" for the program, if necessary. | ||||
| For more information on this, and how to apply and follow the GNU AGPL, see | ||||
| <http://www.gnu.org/licenses/>. | ||||
|  | @ -0,0 +1 @@ | |||
|  # HJ-IEMS-APP | ||||
|  | @ -0,0 +1,5 @@ | |||
| module.exports = { | ||||
|   presets: [ | ||||
|     '@vue/cli-plugin-babel/preset' | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1,8 @@ | |||
| 'use strict' | ||||
| // 测试环境
 | ||||
| const merge = require('webpack-merge') | ||||
| const prodEnv = require('./prod.env') | ||||
| 
 | ||||
| module.exports = merge(prodEnv, { | ||||
|   NODE_ENV: '"development"' | ||||
| }) | ||||
|  | @ -0,0 +1,76 @@ | |||
| "use strict"; | ||||
| // Template version: 1.3.1
 | ||||
| // see http://vuejs-templates.github.io/webpack for documentation.
 | ||||
| 
 | ||||
| const path = require("path"); | ||||
| 
 | ||||
| module.exports = { | ||||
|   dev: { | ||||
|     // Paths
 | ||||
|     assetsSubDirectory: "static", | ||||
|     assetsPublicPath: "/", | ||||
|     proxyTable: {}, | ||||
| 
 | ||||
|     // Various Dev Server settings
 | ||||
|     host: "172.18.0.16", // can be overwritten by process.env.HOST
 | ||||
|     port: 8888, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
 | ||||
|     autoOpenBrowser: true, | ||||
|     disableHostCheck: true, // 解决webpack Invalid Host/Origin header问题
 | ||||
|     errorOverlay: true, | ||||
|     notifyOnErrors: true, | ||||
|     poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
 | ||||
| 
 | ||||
|     // Use Eslint Loader?
 | ||||
|     // If true, your code will be linted during bundling and
 | ||||
|     // linting errors and warnings will be shown in the console.
 | ||||
|     useEslint: true, | ||||
|     // If true, eslint errors and warnings will also be shown in the error overlay
 | ||||
|     // in the browser.
 | ||||
|     showEslintErrorsInOverlay: false, | ||||
| 
 | ||||
|     /** | ||||
|      * Source Maps | ||||
|      */ | ||||
| 
 | ||||
|     // https://webpack.js.org/configuration/devtool/#development
 | ||||
|     devtool: "cheap-module-eval-source-map", | ||||
| 
 | ||||
|     // If you have problems debugging vue-files in devtools,
 | ||||
|     // set this to false - it *may* help
 | ||||
|     // https://vue-loader.vuejs.org/en/options.html#cachebusting
 | ||||
|     cacheBusting: true, | ||||
| 
 | ||||
|     cssSourceMap: true, | ||||
|   }, | ||||
| 
 | ||||
|   build: { | ||||
|     // Template for index.html
 | ||||
|     index: path.resolve(__dirname, "../dist/index.html"), | ||||
| 
 | ||||
|     // Paths
 | ||||
|     assetsRoot: path.resolve(__dirname, "../dist"), | ||||
|     assetsSubDirectory: "static", | ||||
|     assetsPublicPath: "./", | ||||
| 
 | ||||
|     /** | ||||
|      * Source Maps | ||||
|      */ | ||||
| 
 | ||||
|     productionSourceMap: false, | ||||
|     // https://webpack.js.org/configuration/devtool/#production
 | ||||
|     devtool: "#source-map", | ||||
| 
 | ||||
|     // Gzip off by default as many popular static hosts such as
 | ||||
|     // Surge or Netlify already gzip all static assets for you.
 | ||||
|     // Before setting to `true`, make sure to:
 | ||||
|     // npm install --save-dev compression-webpack-plugin
 | ||||
|     productionGzip: false, | ||||
|     productionGzipExtensions: ["js", "css"], | ||||
| 
 | ||||
|     // Run the build command with an extra argument to
 | ||||
|     // View the bundle analyzer report after build finishes:
 | ||||
|     // `npm run build --report`
 | ||||
|     // Set to `true` or `false` to always turn it on or off
 | ||||
|     bundleAnalyzerReport: process.env.npm_config_report, | ||||
|   }, | ||||
| }; | ||||
|  | @ -0,0 +1,5 @@ | |||
| 'use strict' | ||||
| // 生产环境
 | ||||
| module.exports = { | ||||
|   NODE_ENV: '"production"' | ||||
| } | ||||
|  | @ -0,0 +1,3 @@ | |||
| { | ||||
|      | ||||
| } | ||||
|  | @ -0,0 +1,61 @@ | |||
| { | ||||
|   "name": "svueshop", | ||||
|   "version": "0.1.0", | ||||
|   "private": true, | ||||
|   "scripts": { | ||||
|     "serve": "vue-cli-service serve", | ||||
|     "build": "vue-cli-service build", | ||||
|     "lint": "vue-cli-service lint" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "axios": "^0.19.2", | ||||
|     "core-js": "^3.15.2", | ||||
|     "echarts": "^4.7.0", | ||||
|     "echarts-gl": "^1.1.0", | ||||
|     "element-ui": "^2.12.0", | ||||
|     "jquery": "^3.7.0", | ||||
|     "js-cookie": "^2.2.1", | ||||
|     "less": "^4.2.0", | ||||
|     "less-loader": "^5.0.0", | ||||
|     "nprogress": "0.2.0", | ||||
|     "postcss-pxtorem": "^4.0.1", | ||||
|     "qs": "^6.9.4", | ||||
|     "store2": "^2.12.0", | ||||
|     "vant": "^2.12.54", | ||||
|     "vue": "^2.6.14", | ||||
|     "vue-clipboard2": "^0.3.1", | ||||
|     "vue-i18n": "^8.28.2", | ||||
|     "vue-qr": "^2.3.0", | ||||
|     "vue-router": "^3.5.2", | ||||
|     "vueg-history": "^1.6.0", | ||||
|     "vuex": "^3.6.2", | ||||
|     "weixin-js-sdk": "^1.6.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@vue/cli-plugin-babel": "^4.5.13", | ||||
|     "@vue/cli-plugin-eslint": "^4.5.13", | ||||
|     "@vue/cli-plugin-router": "^4.5.13", | ||||
|     "@vue/cli-plugin-vuex": "^4.5.13", | ||||
|     "@vue/cli-service": "^4.5.13", | ||||
|     "babel-eslint": "^10.1.0", | ||||
|     "eslint": "^5.16.0", | ||||
|     "eslint-plugin-vue": "^5.2.3", | ||||
|     "fibers": "^4.0.3", | ||||
|     "sass": "1.32.13", | ||||
|     "node-sass": "^4.14.1", | ||||
|     "sass-loader": "^8.0.2", | ||||
|     "vue-template-compiler": "^2.6.14" | ||||
|   }, | ||||
|   "browserslist": [ | ||||
|     "defaults", | ||||
|     "not ie < 11", | ||||
|     "last 2 versions", | ||||
|     "> 1%", | ||||
|     "iOS 7", | ||||
|     "last 3 iOS versions" | ||||
|   ], | ||||
|   "engines": { | ||||
|     "node": ">= 6.0.0", | ||||
|     "npm": ">= 3.0.0" | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,5 @@ | |||
| module.exports = { | ||||
|   plugins: { | ||||
|     autoprefixer: {} | ||||
|   } | ||||
| } | ||||
| After Width: | Height: | Size: 7.9 KiB | 
| After Width: | Height: | Size: 15 KiB | 
| After Width: | Height: | Size: 253 KiB | 
| After Width: | Height: | Size: 176 KiB | 
| After Width: | Height: | Size: 9.1 KiB | 
| After Width: | Height: | Size: 22 KiB | 
| After Width: | Height: | Size: 122 KiB | 
| After Width: | Height: | Size: 12 KiB | 
| After Width: | Height: | Size: 4.2 KiB | 
|  | @ -0,0 +1,39 @@ | |||
| <!DOCTYPE html> | ||||
| <html> | ||||
| 
 | ||||
| <head> | ||||
|   <meta charset="utf-8"> | ||||
|   <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=0,viewport-fit=cover"> | ||||
|   <meta http-equiv="pragma" content="no-cache"> | ||||
|   <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate"> | ||||
|   <meta http-equiv="expires" content="0"> | ||||
|   <!-- <script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?callback=initMap&key=ApPHTYzzTYmqhajRcGVNWS44SEBCBKp2F6ih95VOzvBvN2tIhogM-Di66ZpFb2C9' async defer></script> --> | ||||
|   <title>智慧能源柜</title> | ||||
| </head> | ||||
| 
 | ||||
| <body onload="backbutton()"> | ||||
|   <div id="app"></div> | ||||
|   <script> | ||||
|     // 连续点击返回按键,退出app | ||||
|     var backClick = 0;// 退出点击次数,默认为0 | ||||
|     function backbutton() { | ||||
|       var time = new Date(); // 0.5s内再次点击就退出 | ||||
|       // 监听返回按钮 | ||||
|       document.addEventListener('backbutton', function (evt) { | ||||
|         if (backClick) {  // 不为0时 | ||||
|           navigator.app.exitApp();  // app退出 | ||||
|         } else { | ||||
|           // alert('再按一次退出App');  // 提示信息 | ||||
|           if (new Date() - time < 500) {// 小于0.5s(500),退出程序 | ||||
|             backClick++; | ||||
|           } else {   // 大于0.5s,重置时间戳, | ||||
|             time = new Date(); | ||||
|             history.back();  // 不满足退出操作,,返回上一页 | ||||
|           } | ||||
|         } | ||||
|       }, false); | ||||
|     } | ||||
|   </script> | ||||
| </body> | ||||
| 
 | ||||
| </html> | ||||
| After Width: | Height: | Size: 14 KiB | 
| After Width: | Height: | Size: 7.2 KiB | 
| After Width: | Height: | Size: 6.7 KiB | 
|  | @ -0,0 +1,54 @@ | |||
| <template> | ||||
|   <div id="app"> | ||||
|     <router-view /> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { orientationRotate } from '@/utils/orientation.js' | ||||
| export default { | ||||
|   name: 'App', | ||||
|   mounted() { | ||||
|     window.addEventListener('resize', () => { | ||||
|       orientationRotate() | ||||
|     }) // 横竖屏问题 | ||||
| 
 | ||||
|     // 关闭系统侧边滑动返回 | ||||
|     document.addEventListener('plusready', () => { | ||||
|       //等待plus ready后再调用5+ API: | ||||
|       let first = null | ||||
|       // eslint-disable-next-line no-undef | ||||
|       const webview = plus.webview.currentWebview() | ||||
|       // eslint-disable-next-line no-undef | ||||
|       plus.key.addEventListener('backbutton', () => { | ||||
|         webview.canBack((e) => { | ||||
|           if (e.canBack) { | ||||
|             webview.back() | ||||
|           } else { | ||||
|             //首次按键,提示‘再按一次退出应用’ | ||||
|             if (!first) { | ||||
|               //获取第一次点击的时间戳 | ||||
|               first = new Date().getTime() | ||||
|               //通过H5+ API 调用Android 上的toast 提示框 | ||||
|               // eslint-disable-next-line no-undef | ||||
|               plus.nativeUI.toast('再按一次退出应用', { | ||||
|                 duration: 'short' | ||||
|               }) | ||||
|               setTimeout(() => { | ||||
|                 first = null | ||||
|               }, 1000) | ||||
|             } else { | ||||
|               if (new Date().getTime() - first < 1000) { | ||||
|                 //获取第二次点击的时间戳, 两次之差 小于 1000ms 说明1s点击了两次, | ||||
|                 // eslint-disable-next-line no-undef | ||||
|                 plus.runtime.quit() //退出应用 | ||||
|                 // webview.close(); //hide,quit | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         }) | ||||
|       }) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | @ -0,0 +1,735 @@ | |||
| import axios from 'axios'; | ||||
| import localStore from 'store2'; | ||||
| import cookieStore from 'js-cookie'; | ||||
| import { | ||||
|     Toast, Dialog | ||||
| } from 'vant'; | ||||
| import config from './config'; | ||||
| import utils from './utils'; | ||||
| import store from './store'; | ||||
| import router from './router'; | ||||
| import wx from 'weixin-js-sdk'; | ||||
| 
 | ||||
| function SupportStorage(){ | ||||
|     var testKey = 'test', | ||||
|     storage = window.localStorage; | ||||
|     try { | ||||
|         storage.setItem(testKey, 'testValue'); | ||||
|         storage.removeItem(testKey); | ||||
|         return true; | ||||
|     } catch (error) { | ||||
|         utils.log(error, 'error') | ||||
|         return false; | ||||
|     } | ||||
| } | ||||
| const supportStorage = SupportStorage() | ||||
| 
 | ||||
| const cookie = { | ||||
|     has(name) { | ||||
|         let val = cookieStore.get(name); | ||||
|         return val != undefined && val != null; | ||||
|     }, | ||||
|     get(name) { | ||||
|         let val = cookieStore.get(name); | ||||
|         if(val && typeof val == 'string' &&  | ||||
|             (val.indexOf('[') === 0 || val.indexOf('{') === 0)){ | ||||
|             try{ | ||||
|                 let json = JSON.parse(val) | ||||
|                 if(json)return json; | ||||
|             }catch(err){ | ||||
|                 utils.log(err, 'error') | ||||
|             } | ||||
|         } | ||||
|         return val; | ||||
|     }, | ||||
|     set(name, data) { | ||||
|         cookieStore.set(name, data) | ||||
|     }, | ||||
|     remove(name) { | ||||
|         cookieStore.remove(name) | ||||
|     }, | ||||
|     clear() { | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| function Api() { | ||||
| 
 | ||||
|     // 微信环境下使用session,防止切换账号时登录信息不改变
 | ||||
|     if(supportStorage){ | ||||
|         if(localStore.session && localStore.session.get && config.isWechat){ | ||||
|             this.store = localStore.session | ||||
|         }else{ | ||||
|             this.store = localStore | ||||
|         } | ||||
|     }else{ | ||||
|         this.store = cookie | ||||
|     } | ||||
| 
 | ||||
|     this.token = '' | ||||
|     this.refreshToken = '' | ||||
|     this.tokenTime = 0 | ||||
|     this.tokenExpire = 0 | ||||
| 
 | ||||
|     this.store_key = 'token' | ||||
| 
 | ||||
|     this.isRefreshing = false; | ||||
|     this.refreshEnd = []; | ||||
| 
 | ||||
|     this.is_authing = false | ||||
|     this.wechatAuthed = false | ||||
|     this.openid = '' | ||||
|     this.accessToken = '' | ||||
| 
 | ||||
|     this.shareSeted = false | ||||
|     this.shareData = {} | ||||
|     this.blocked = false | ||||
| } | ||||
| 
 | ||||
| Api.prototype.hasToken = function () { | ||||
|     return this.token != '' && !this.isRefreshing; | ||||
| } | ||||
| Api.prototype.getToken = function () { | ||||
|     return this.isRefreshing ? '' : this.token; | ||||
| } | ||||
| 
 | ||||
| Api.prototype.hasAccessToken = function () { | ||||
|     return this.accessToken != '' | ||||
| } | ||||
| Api.prototype.getAccessToken = function () { | ||||
|     return this.accessToken | ||||
| } | ||||
| Api.prototype.checkAccessToken = function (force = false) { | ||||
|     return new Promise((resolve, reject) => { | ||||
|         if (!force && this.accessToken) { | ||||
|             resolve(this.accessToken); | ||||
|         } else { | ||||
|             this | ||||
|                 .get("auth/token?appid=" + config.appid + '&agent=' + store.state.agent) | ||||
|                 .then(result => { | ||||
|                     if (result.code == 1) { | ||||
|                         this.accessToken = result.data; | ||||
| 
 | ||||
|                         resolve(this.accessToken); | ||||
|                     } | ||||
|                 }) | ||||
|                 .catch(err => { | ||||
|                     reject(err); | ||||
|                 }); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| // 检测登录状态
 | ||||
| Api.prototype.checkToken = function () { | ||||
|     return new Promise((resolve, reject) => { | ||||
|         if (this.token != '') { | ||||
|             if (this.isRefreshing || this.tokenExpire + this.tokenTime < new Date().getTime() / 1000 - 10) { | ||||
|                 utils.log('刷新token') | ||||
|                 this.refresh().then(() => { | ||||
|                     resolve(this) | ||||
|                 }).catch(error => { | ||||
|                     reject(error) | ||||
|                 }) | ||||
|             } else { | ||||
|                 resolve(this) | ||||
|             } | ||||
|         } else { | ||||
|             reject({ | ||||
|                 code: 0, | ||||
|                 msg: '未登录' | ||||
|             }) | ||||
|         } | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 从缓存恢复登录信息
 | ||||
| Api.prototype.restore = function () { | ||||
|     return new Promise((resolve) => { | ||||
|         if (this.store.has(this.store_key)) { | ||||
|             const info = this.store.get(this.store_key) | ||||
|             utils.log(['cache:',info],'debug') | ||||
|             if (info.token && info.refresh_token) { | ||||
|                 utils.log('从缓存恢复token') | ||||
|                 this.token = info.token | ||||
|                 this.refreshToken = info.refresh_token | ||||
|                 this.tokenTime = info.token_time | ||||
|                 this.tokenExpire = info.token_expire | ||||
| 
 | ||||
|                 this.checkToken().then(() => { | ||||
|                     store.commit('setIsLogin', true) | ||||
|                     utils.log('刷新token后授权') | ||||
|                     this.checkWechat().then(() => { | ||||
|                         resolve() | ||||
|                     }) | ||||
|                 }).catch(() => { | ||||
|                     utils.log('刷新token失败') | ||||
|                     this.checkWechat(true).then(() => { | ||||
|                         resolve() | ||||
|                     }) | ||||
|                 }) | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|         utils.log('未登录时授权') | ||||
|         this.checkWechat(true).then(() => { | ||||
|             resolve() | ||||
|         }) | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| Api.prototype.checkWechat = function (login = false) { | ||||
|     return new Promise((resolve) => { | ||||
|         let iserror = this.store.get('wechat_error') | ||||
|         if (iserror) { | ||||
|             store.commit('setWechatChecked', true) | ||||
|             utils.log('授权已出错') | ||||
|             resolve() | ||||
|             return; | ||||
|         } | ||||
|         if (this.is_authing) { | ||||
|             utils.log('已发起授权') | ||||
|             return; | ||||
|         } | ||||
|         if (!config.wxid) { | ||||
|             store.commit('setWechatChecked', true) | ||||
|             utils.log('未配置微信号') | ||||
|             resolve() | ||||
|             return; | ||||
|         } | ||||
|         if (config.isWechat && (!this.openid || login)) { | ||||
|             if (!login || this.wechatAuthed) { | ||||
|                 let openid = this.store.get('openid'); | ||||
|                 if (openid) { | ||||
|                     this.openid = openid; | ||||
|                     utils.log('从缓存中恢复openid') | ||||
|                     store.commit('setWechatChecked', true) | ||||
|                     resolve() | ||||
|                     return; | ||||
|                 } | ||||
|                 if(this.wechatAuthed){ | ||||
|                     utils.log('授权信息未正确获取') | ||||
|                     store.commit('setWechatChecked', true) | ||||
|                     resolve() | ||||
|                     return; | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|             this.is_authing = true; | ||||
|             this.blocked = true; | ||||
|             let param = utils.parseQuery(location.search) | ||||
|             if (param.code) { | ||||
|                 this.post('auth/wxlogin?code=' + param.code, { | ||||
|                     wxid: config.wxid, | ||||
|                     code: param.code, | ||||
|                     agent: store.state.agent | ||||
|                 }, true).then(json => { | ||||
|                     this.blocked = false; | ||||
|                     if (json.code == 1) { | ||||
|                         let unbinded = 1 | ||||
|                         if (!this.isLogin && json.data.token) { | ||||
|                             this.setLogin(json.data) | ||||
|                             unbinded = 0 | ||||
|                         } | ||||
|                         this.setOpenid(json.data.openid, unbinded) | ||||
|                     } | ||||
|                     store.commit('setWechatChecked', true) | ||||
|                     resolve() | ||||
|                 }).catch(err => { | ||||
|                     this.blocked = false; | ||||
|                     if (err.data && err.data.openid) { | ||||
|                         this.setOpenid(err.data.openid) | ||||
|                     }else{ | ||||
|                         this.wechatAuthError() | ||||
|                         this.restoreUrl(); | ||||
|                     } | ||||
|                     store.commit('setWechatChecked', true) | ||||
|                     resolve() | ||||
|                 }) | ||||
|             } else { | ||||
|                 this.post('auth/wxauth', { | ||||
|                     wxid: config.wxid | ||||
|                 }, true).then(json => { | ||||
|                     utils.log(json, 'debug') | ||||
|                     if (json.data.url) { | ||||
|                         if (location.hash && location.hash.length > 1) { | ||||
|                             this.store.set('backurl', location.hash.substr(1)); | ||||
|                             utils.log('跳转授权前保存url:'+ location.hash.substr(1)) | ||||
|                         } | ||||
|                         location.href = json.data.url; | ||||
|                     } | ||||
|                 }).catch(err => { | ||||
|                     utils.log(err, 'error') | ||||
|                     this.wechatAuthError() | ||||
|                     this.blocked = false; | ||||
|                     store.commit('setWechatChecked', true) | ||||
|                     resolve() | ||||
|                 }) | ||||
|             } | ||||
|         } else { | ||||
|             resolve() | ||||
|         } | ||||
| 
 | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| Api.prototype.wechatAuthError = function() { | ||||
|     this.store.session.add('wechat_error', 1); | ||||
| } | ||||
| Api.prototype.setOpenid = function (openid, unbinded=1) { | ||||
|     this.openid = openid | ||||
| 
 | ||||
|     this.store.set('openid', openid); | ||||
|     this.store.set('openid_unbind', unbinded); | ||||
| 
 | ||||
|     this.restoreUrl(); | ||||
| } | ||||
| 
 | ||||
| Api.prototype.restoreUrl = function(){ | ||||
|     let backurl = this.store.get('backurl'); | ||||
|     if (backurl) { | ||||
|         utils.log('恢复授权前url:'+ backurl) | ||||
|         this.store.remove('backurl') | ||||
|     } else { | ||||
|         backurl = '/' | ||||
|     } | ||||
|      | ||||
|     let locationurl=location.origin+location.pathname+location.search;     | ||||
|     locationurl = utils.dropParam(locationurl, 'code,state'); | ||||
| 
 | ||||
|     utils.log('restoreUrl:'+locationurl+'#'+backurl); | ||||
|     //utils.replaceState(locationurl+'#'+backurl);
 | ||||
|     history.replaceState(null, null, locationurl); | ||||
|     history.pushState(null, document.title, locationurl+'#'+backurl); | ||||
| } | ||||
| 
 | ||||
| // 保存登录数据到本地
 | ||||
| Api.prototype.save = function () { | ||||
|     if (this.token != '') { | ||||
|         utils.log('将token缓存到本地') | ||||
|         this.store.set(this.store_key, { | ||||
|             token: this.token, | ||||
|             token_time: this.tokenTime, | ||||
|             token_expire: this.tokenExpire, | ||||
|             refresh_token: this.refreshToken | ||||
|         }) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // 设置登录数据
 | ||||
| Api.prototype.setLogin = function (data) { | ||||
|     this.token = data.token; | ||||
|     this.tokenTime = Math.floor(new Date().getTime() / 1000) | ||||
|     this.refreshToken = data.refresh_token | ||||
|     this.tokenExpire = data.token_expire | ||||
|     store.commit('setIsLogin', true) | ||||
|     this.save() | ||||
| } | ||||
| 
 | ||||
| // 登录
 | ||||
| Api.prototype.login = function (username, password, verify = '') { | ||||
|     return this.post('auth/login', { | ||||
|         username: username, | ||||
|         password: password, | ||||
|         verify: verify | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 刷新队列
 | ||||
| Api.prototype.onRefreshEnd = function () { | ||||
|     var func = this.refreshEnd.shift(); | ||||
|     while (func) { | ||||
|         func(); | ||||
|         func = this.refreshEnd.shift(); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| // 刷新token
 | ||||
| Api.prototype.refresh = function () { | ||||
| 
 | ||||
|     let promise = new Promise((resolve, reject) => { | ||||
|         this.refreshEnd.push(() => { | ||||
|             utils.log('refresh 回调') | ||||
|             if (this.token) { | ||||
|                 resolve(); | ||||
|             } else { | ||||
|                 reject(); | ||||
|             } | ||||
|         }); | ||||
|     }); | ||||
|     if (!this.isRefreshing) { | ||||
|         this.isRefreshing = true; | ||||
|         let currentToken = this.refreshToken | ||||
|         utils.log('刷新 token') | ||||
|         axios.post('auth/refresh', { | ||||
|             refresh_token: currentToken, | ||||
|             agent: store.state.agent | ||||
|         }).then(res => { | ||||
|             let json = res.data | ||||
|             this.isRefreshing = false; | ||||
|             if (json.code == 1) { | ||||
|                 utils.log('刷新 token 成功') | ||||
|                 this.setLogin(json.data) | ||||
|                 this.onRefreshEnd() | ||||
|             } else { | ||||
|                 if (currentToken == this.refreshToken) { | ||||
|                     Toast.fail('登录已失效') | ||||
|                     this.clear() | ||||
|                 } | ||||
|                 this.onRefreshEnd() | ||||
|             } | ||||
|         }).catch(() => { | ||||
|             this.isRefreshing = false; | ||||
|             this.onRefreshEnd() | ||||
|         }) | ||||
|     } | ||||
|     return promise; | ||||
| } | ||||
| 
 | ||||
| Api.prototype.clear = function () { | ||||
|     this.token = '' | ||||
|     this.refreshToken = '' | ||||
|     this.tokenExpire = 0 | ||||
|     this.tokenTime = 0 | ||||
|     this.wechatAuthed = false | ||||
|     store.commit('setIsLogin', false) | ||||
|     store.dispatch('updateUserinfo') | ||||
|     this.store.remove(this.store_key) | ||||
| } | ||||
| 
 | ||||
| // 批量查询接口
 | ||||
| Api.prototype.batch = function (queries) { | ||||
|     return this.post('common/batch', queries); | ||||
| } | ||||
| 
 | ||||
| // post
 | ||||
| Api.prototype.post = function (api, param = null, force = false) { | ||||
|     return this.request({ | ||||
|         method: 'post', | ||||
|         url: api, | ||||
|         data: param | ||||
|     }, force); | ||||
| } | ||||
| 
 | ||||
| // get
 | ||||
| Api.prototype.get = function (api, force = false) { | ||||
|     return this.request({ | ||||
|         url: api | ||||
|     }, force); | ||||
| } | ||||
| 
 | ||||
| Api.prototype.needLogin = function () { | ||||
|     api.clear(); | ||||
|     if (store.state.isLogin) { | ||||
|         store.commit('setIsLogin', false); | ||||
|     } | ||||
|     this.checkWechat(true).then(() => { | ||||
|         if(!store.state.isLogin){ | ||||
|             router.replace({ | ||||
|                 path: '/login', | ||||
|                 query: { | ||||
|                     redirect: router.currentRoute.fullPath | ||||
|                 } | ||||
|             }) | ||||
|         } | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| Api.prototype.request = function (config, force = false) { | ||||
|     if (this.blocked && !force) { | ||||
|         return new Promise((resolve, reject) => { | ||||
|             reject('request has been blocked') | ||||
|         }) | ||||
|     } | ||||
|     return new Promise((resolve, reject) => { | ||||
|         if (this.isRefreshing) { | ||||
|             //加入刷新队列
 | ||||
|             this.refresh().then(() => { | ||||
|                 utils.log('重新请求:' + config.url) | ||||
|                 this.request(config).then(res => { | ||||
|                     resolve(res) | ||||
|                 }).catch(error => { | ||||
|                     reject(error) | ||||
|                 }) | ||||
|             }).catch(error => { | ||||
|                 reject(error) | ||||
|             }) | ||||
|         } else { | ||||
|             axios.request(config).then(res => { | ||||
|                 let json = res.data | ||||
|                 if (json.code == 103) { //token过期
 | ||||
|                     if (this.getToken() == res.config.headers.token) { | ||||
|                         utils.log('自动刷新token') | ||||
|                         this.refresh().then(() => { | ||||
|                             this.request(config).then(res => { | ||||
|                                 resolve(res) | ||||
|                             }).catch(error => { | ||||
|                                 reject(error) | ||||
|                             }) | ||||
|                         }).catch(error => { | ||||
|                             reject(error) | ||||
|                         }) | ||||
|                         return; | ||||
|                     } | ||||
| 
 | ||||
|                 } else if (json.code == 99) { //需要登录
 | ||||
|                     if (!this.hasToken()) { | ||||
|                         Toast.fail('请登录后操作') | ||||
|                         this.needLogin() | ||||
|                         return; | ||||
|                     } | ||||
|                 } else if (json.code == 102) { //token失效
 | ||||
|                     if (this.getToken() == res.config.headers.token) { | ||||
|                         this.clear() | ||||
|                     } | ||||
|                 } else if (json.code == 113) { //用户被禁用
 | ||||
|                     Toast.fail('您的账号已禁用') | ||||
|                     this.clear(); | ||||
|                 } | ||||
| 
 | ||||
| 
 | ||||
|                 if (json.code == 1) { | ||||
|                     if (!store.state.firstLoaded) { | ||||
|                         store.commit('setFirstLoaded', true); | ||||
|                     } | ||||
|                     resolve(json) | ||||
|                 } else if ([99, 102, 103, 113].indexOf(json.code) > -1) { | ||||
|                     this.request(config).then(res => { | ||||
|                         resolve(res) | ||||
|                     }).catch(error => { | ||||
|                         utils.log(['重复请求失败', error],'error') | ||||
|                         reject(error) | ||||
|                     }) | ||||
|                 } else { | ||||
|                     reject(json) | ||||
|                 } | ||||
|             }).catch(error => { | ||||
|                 reject(error) | ||||
|             }) | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| Api.prototype.wechatReady = function (callback = null) { | ||||
|     return new Promise((resolve, reject) => { | ||||
|         if (!config.isWechat || !config.wxid || !this.openid) { | ||||
|             reject() | ||||
|             return; | ||||
|         } | ||||
|         let url = location.href.split('#')[0] | ||||
| 
 | ||||
|         if (config.signPackage && url == config.signPackageUrl) { | ||||
|             wx.ready(function(){ | ||||
|                 if (callback) callback(wx) | ||||
|                 resolve(wx) | ||||
|             }); | ||||
|         } else { | ||||
|             utils.log('wechat config url:'+url); | ||||
|             config.signPackageUrl = url | ||||
|             this.post('auth/wxSign', { | ||||
|                 wxid: config.wxid, | ||||
|                 url: url | ||||
|             }).then(result => { | ||||
|                 config.signPackage = result.data | ||||
|                 wx.config(config.signPackage) | ||||
|                 wx.ready(function(){ | ||||
|                     if (callback) callback(wx) | ||||
|                     resolve(wx) | ||||
|                 }); | ||||
|                 wx.error(function(res){ | ||||
|                     utils.log(res, 'error') | ||||
|                     reject(res) | ||||
|                 }); | ||||
|             }).catch(error => { | ||||
|                 Toast.fail('wechat配置错误') | ||||
|                 reject(error) | ||||
|             }) | ||||
|         } | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| Api.prototype.wxShareDefault = function (siteinfo) { | ||||
|     let shareimg = siteinfo['shareimg'] | ||||
|     if(!shareimg)shareimg = siteinfo['weblogo'] | ||||
|      | ||||
|     this.wxShare({ | ||||
|         title: siteinfo['webname'], | ||||
|         desc: siteinfo['description'], | ||||
|         link: location.href.split('#')[0], | ||||
|         imgUrl: utils.fixImageUrl(shareimg) | ||||
|       }, true) | ||||
| } | ||||
| 
 | ||||
| Api.prototype.wxSetShareDefault = function () { | ||||
|     this.wxShare(this.shareData) | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * title: '', // 分享标题
 | ||||
|  * desc: '', // 分享描述
 | ||||
|  * link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
 | ||||
|  * imgUrl: '' | ||||
|  */ | ||||
| Api.prototype.wxShare = function (options, isDefault = false) { | ||||
|     if (isDefault) { | ||||
|         this.shareData = { | ||||
|             cancel: () => { | ||||
|                 Toast.fail('分享失败') | ||||
|             }, | ||||
|             ...options | ||||
|         }; | ||||
| 
 | ||||
|     } else { | ||||
|         if (!options.link) { | ||||
|             let parts = location.href.split('#') | ||||
|             parts[0] = utils.dropParam(parts[0], ['code', 'state', '_authed', 'openid']); | ||||
|             options.link = parts[0] + (parts[0].indexOf('?')>0?'&':'?') + 'path=' + encodeURIComponent(router.currentRoute.fullPath) | ||||
|         } else { | ||||
|             if (options.link.indexOf('#') > -1) { | ||||
|                 let parts = options.link.split('#') | ||||
|                 parts[0] = utils.dropParam(parts[0], ['code', 'state', '_authed', 'openid']); | ||||
|                 options.link = parts[0] + (parts[0].indexOf('?')>0?'&':'?') + 'path=' + encodeURIComponent(parts[1]) | ||||
|             } | ||||
|         } | ||||
|         options = { | ||||
|             ...this.shareData, | ||||
|             ...options | ||||
|         } | ||||
|     } | ||||
|     return new Promise((resolve, reject) => { | ||||
|         if (!config.isWechat || !config.wxid) { | ||||
|             resolve() | ||||
|             return false; | ||||
|         } | ||||
|         if (isDefault && this.shareSeted) { | ||||
|             resolve() | ||||
|             return false; | ||||
|         } | ||||
|         this.shareSeted = true | ||||
|         this.wechatReady().then(wx => { | ||||
|             let shareOptions = { | ||||
|                 success: () => { | ||||
|                     Toast.success('分享成功') | ||||
|                 }, | ||||
|                 ...options | ||||
|             } | ||||
|             if (wx.onMenuShareTimeline) { | ||||
|                 wx.onMenuShareTimeline(shareOptions); | ||||
|                 wx.onMenuShareAppMessage(shareOptions); | ||||
|                 wx.onMenuShareQQ(shareOptions); | ||||
|             } | ||||
|             wx.onMenuShareQZone(shareOptions); | ||||
|             wx.onMenuShareWeibo(shareOptions); | ||||
| 
 | ||||
|             wx.updateAppMessageShareData(options); | ||||
|             wx.updateTimelineShareData(options); | ||||
|             resolve() | ||||
|         }).catch(error => { | ||||
|             reject(error) | ||||
|         }) | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| Api.prototype.wxPay = function (order_id, type = '') { | ||||
|     return new Promise((resolve, reject) => { | ||||
|         if(!config.wxid){ | ||||
|             reject('微信ID未配置') | ||||
|             return; | ||||
|         } | ||||
|         let params = { | ||||
|             order_id: (type?type + '_':'') + order_id, | ||||
|             payid: config.wxid | ||||
|         }; | ||||
|         if (config.isWechat) { | ||||
|             params["trade_type"] = "JSAPI"; | ||||
|         } else { | ||||
|             params["trade_type"] = "MWEB"; | ||||
|         } | ||||
|         this.post("order/wechatpay", params) | ||||
|             .then(result => { | ||||
|                 if (result.code == 1) { | ||||
|                     if (result.data.mweb_url) { | ||||
|                         //todo 支付成功判断
 | ||||
|                         location.href = result.data.mweb_url; | ||||
|                     } else if (result.data.code_url) { | ||||
|                         //todo 二维码支付
 | ||||
|                         location.href = result.data.code_url; | ||||
|                     } else if (result.data.payment) { | ||||
|                         if (result.data.payment.timeStamp) { | ||||
|                             result.data.payment.timestamp = | ||||
|                                 result.data.payment.timeStamp; | ||||
|                             delete result.data.payment.timeStamp; | ||||
|                         } | ||||
|                         this.wechatReady(wx => { | ||||
|                             wx.chooseWXPay({ | ||||
|                                 ...result.data.payment, | ||||
|                                 success: res => { | ||||
|                                     utils.log(res, 'debug'); | ||||
|                                     Toast.success("支付成功"); | ||||
|                                     resolve() | ||||
|                                 }, | ||||
|                                 fail: res => { | ||||
|                                     Dialog.alert({ | ||||
|                                         message: "支付发起失败:" + res.errMsg | ||||
|                                     }); | ||||
|                                     reject() | ||||
|                                 } | ||||
|                             }); | ||||
|                         }); | ||||
|                     } else { | ||||
|                         Toast.fail(result.msg || "支付失败"); | ||||
|                         reject() | ||||
|                     } | ||||
|                 } | ||||
|             }) | ||||
|             .catch(err => { | ||||
|                 Toast.fail(err.msg || "支付失败"); | ||||
|                 reject() | ||||
|             }); | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| const api = new Api(); | ||||
| 
 | ||||
| axios.defaults.baseURL = config.server; | ||||
| 
 | ||||
| axios.interceptors.request.use( | ||||
|     request => { | ||||
|         request.headers['version'] = config.version+' '+(supportStorage?'store':'cookie'); | ||||
|         if (request.url.indexOf('auth/') === 0) { | ||||
|             if (api.hasAccessToken()) { | ||||
|                 request.headers['Access-Token'] = api.getAccessToken(); | ||||
|             } | ||||
|         } else { | ||||
|             // 判断是否存在token,如果存在的话,则每个http header都加上token
 | ||||
|             if (api.hasToken()) { | ||||
|                 request.headers.token = api.getToken(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return request; | ||||
|     }, | ||||
|     err => { | ||||
|         return Promise.reject(err); | ||||
|     }); | ||||
| 
 | ||||
| // http response 拦截器
 | ||||
| axios.interceptors.response.use( | ||||
|     response => { | ||||
|         return response; | ||||
|     }, | ||||
|     error => { | ||||
|         utils.log(error, 'error') | ||||
|         if (error.response) { | ||||
|             return Promise.reject(error.response.data) | ||||
|         } else { | ||||
|             return Promise.reject({ | ||||
|                 code: 0, | ||||
|                 msg: error | ||||
|             }) // 返回接口返回的错误信息
 | ||||
|         } | ||||
| 
 | ||||
|     }); | ||||
| 
 | ||||
| 
 | ||||
| export default api | ||||
|  | @ -0,0 +1,65 @@ | |||
| import request from "@/utils/request"; | ||||
| 
 | ||||
| // 根据告警ID获取告警历史记录/告警工单信息
 | ||||
| export function getDeptAlarmDetails(data) { | ||||
|   return request({ | ||||
|     url: "trajectory-service/deptAlarm/getTaskByAlarmId", | ||||
|     method: "get", | ||||
|     params: data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 清除告警状态
 | ||||
| export function clearAlarmStatus(alarmId) { | ||||
|   return request({ | ||||
|     url: "alarm-service/alarm/clearAlarmStatus?alarmId=" + alarmId, | ||||
|     method: "post", | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 获取告警设备类型列表
 | ||||
| export function getAlarmDeviceTypeList() { | ||||
|   return request({ | ||||
|     url: "alarm-service/alarm/getAlarmDeviceTypeList", | ||||
|     method: "get", | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 获取告警列表
 | ||||
| export function getAlarmList(data) { | ||||
|   return request({ | ||||
|     url: "alarm-service/alarm/getAlarmList", | ||||
|     method: "get", | ||||
|     params: data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 获取提示告警列表
 | ||||
| export function getTipAlarmList(data) { | ||||
|   return request({ | ||||
|     url: "alarm-service/alarm/getTipAlarmList", | ||||
|     method: "get", | ||||
|     params: data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 更新告警阅读状态
 | ||||
| export function updateAlarmReadStatus(data) { | ||||
|   return request({ | ||||
|     url: "alarm-service/alarm/updateAlarmReadStatus", | ||||
|     method: "post", | ||||
|     params: data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 根据筛选条件查询设备操作信息
 | ||||
| export function getDeviceLogList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/deviceLog/getDeviceLogList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,93 @@ | |||
| import request from '@/utils/request' | ||||
| // 综合柜详情
 | ||||
| 
 | ||||
| 
 | ||||
| // 根据筛选条件查询综合柜的列表信息
 | ||||
| export function getCabinetBeanById(data) { | ||||
|     return request({ | ||||
|         url: 'device-service/cabinetDetails/getCabinetBeanById', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 根据cabinetCode查询综合柜的柜内设备类型
 | ||||
| export function getCabinetTypesByCode(data) { | ||||
|     return request({ | ||||
|         url: 'device-service/cabinetDetails/getCabinetTypesByCode', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 根据deviceCode查询综合柜中设备的实时数据
 | ||||
| export function getDeviceDetailByCode(data) { | ||||
|     return request({ | ||||
|         url: 'snmp-service/param/getDeviceDetailByCode', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 根据deviceCode查询综合柜内设备的基本信息
 | ||||
| export function getInsideDeviceByCode(data) { | ||||
|     return request({ | ||||
|         url: 'device-service/inside/getInsideDeviceByCode', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 根据deviceCode查询综合柜中设备的实时数据
 | ||||
| export function getDeviceParamByCode(data) { | ||||
|     return request({ | ||||
|         url: 'snmp-service/param/getDeviceParamByCode', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 获取历史轨迹
 | ||||
| export function getTaskTrajectoryList(data) { | ||||
|     return request({ | ||||
|         url: "trajectory-service/trajectory/getTaskTrajectoryList", | ||||
|         method: "get", | ||||
|         params: data, | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| // 根据deviceCode和showFlag更新综合柜中设备的实时数据
 | ||||
| export function updateDeviceParamByCode(data) { | ||||
|     return request({ | ||||
|         url: 'snmp-service/param/updateDeviceParamByCode', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 获取萤石Token
 | ||||
| export function getShiYingToken() { | ||||
|     return request({ | ||||
|         url: 'camera-service/token/getShiYingToken', | ||||
|         method: 'get', | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 获取萤石播放地址
 | ||||
| export function getShiYingVideoPath(params) { | ||||
|     return request({ | ||||
|         url: 'camera-service/token/getShiYingVideoPath', | ||||
|         method: 'get', | ||||
|         params | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 获取抓拍记录
 | ||||
| export function getMonitorList(params) { | ||||
|     return request({ | ||||
|         url: 'device-service/monitor/getMonitorList', | ||||
|         method: 'get', | ||||
|         params | ||||
|     }) | ||||
| } | ||||
|  | @ -0,0 +1,64 @@ | |||
| import request from '@/utils/request' | ||||
| import qs from 'qs' | ||||
| /* | ||||
|   系统管理-区域管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 查询所有区域树
 | ||||
| export function getDepartmentList(data) { | ||||
|   return request({ | ||||
|     url: 'user-service/dept/getDeptTreeList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 查询本级节点ID-直系子级节点
 | ||||
| export function getDeptSubByDeptId(data) { | ||||
|   return request({ | ||||
|     url: 'user-service/dept/getDeptSubByDeptId', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 查询区域列表
 | ||||
| export function getDeptTreeByDeptId(data) { | ||||
|   return request({ | ||||
|     url: 'user-service/dept/getDeptTreeByDeptId', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| // 修改
 | ||||
| export function editSubmitApi(formData) { | ||||
|   const data = qs.stringify(formData) | ||||
|   return request({ | ||||
|     url: 'user-service/dept/updateDept', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新增
 | ||||
| export function addSubmitApi(formData) { | ||||
|   const data = qs.stringify(formData) | ||||
|   return request({ | ||||
|     url: 'user-service/dept/saveDept', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除
 | ||||
| export function delSubmitApi(formData) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/dept/removeDept', | ||||
|     method: 'get', | ||||
| 
 | ||||
|     params: formData | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,216 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   管理台-设备管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|   综合柜 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 根据筛选条件查询综合柜的列表信息
 | ||||
| export function getCabinetList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/cabinet/getCabinetList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入综合柜的基本信息
 | ||||
| export function addCabinet(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/cabinet/addCabinet', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改综合柜的基本信息
 | ||||
| export function updateCabinet(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/cabinet/updateCabinet', | ||||
|     method: 'put', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除综合柜的基本信息和安装信息,及柜内设备
 | ||||
| export function deleteCabinet(data) { | ||||
|   const delData = { | ||||
|     cabinetCode: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/cabinet/deleteCabinet', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 批量删除综合柜的基本信息和安装信息,及柜内设备
 | ||||
| export function deleteCabinetList(data) { | ||||
|   const delData = { | ||||
|     cabinetCodes: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/cabinet/deleteCabinetList', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据cabinetCode查询该综合柜的柜内设备(已选择的设备)
 | ||||
| export function getInsideDeviceByCabinetCode(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/cabinet/getInsideDeviceByCabinetCode', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据deptId查询未选择的设备
 | ||||
| export function getUnCheckDeviceByDeptId(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/cabinet/getUnCheckDeviceByDeptId', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入综合柜柜内设备的关系
 | ||||
| export function addCabinetInsideDevice(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/cabinet/addCabinetInsideDevice', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|   动环模块 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 根据筛选条件查询综合柜柜内动环设备的列表信息
 | ||||
| export function getMoveDeviceList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/inside/getMoveDeviceList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入综合柜柜内动环设备的基本信息
 | ||||
| export function addInsideMove(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/inside/addInsideMove', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改综合柜的柜内动环设备信息
 | ||||
| export function updateMoveDevice(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/inside/updateMoveDevice', | ||||
|     method: 'put', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| /* | ||||
|   柜内设备 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 根据筛选条件查询综合柜柜内设备的列表信息
 | ||||
| export function getInsideDeviceList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/inside/getInsideDeviceList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入综合柜柜内设备的基本信息
 | ||||
| export function addInsideDevice(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/inside/addInsideDevice', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改综合柜的柜内设备信息
 | ||||
| export function updateInsideDevice(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/inside/updateInsideDevice', | ||||
|     method: 'put', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除动环模块和柜内设备
 | ||||
| export function deleteInsideCabinet(data) { | ||||
|   const delData = { | ||||
|     deviceCode: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/inside/deleteCabinet', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 批量删除动环模块和柜内设备
 | ||||
| export function deleteInsideDeviceList(data) { | ||||
|   const delData = { | ||||
|     deviceCodes: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/inside/deleteInsideDeviceList', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 发送设备写操作命令
 | ||||
| export function sendDeviceParam(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'snmp-service/param/sendDeviceParam', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据deviceCode查询综合柜中设备的实时遥调/控数据
 | ||||
| export function getDeviceRemoteParamByCode(data) { | ||||
|   return request({ | ||||
|     url: 'snmp-service/param/getDeviceRemoteParamByCode', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,71 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   管理台-设备类型 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 根据typeId查询设备类型信息
 | ||||
| export function getTypeById(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/type/getTypeById', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据筛选项查询设备类型列表
 | ||||
| export function getTypeList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/type/getTypeList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入设备类型信息
 | ||||
| export function addType(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/type/addType', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除设备类型信息
 | ||||
| export function deleteType(data) { | ||||
|   const delData = { | ||||
|     typeById: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/type/deleteType', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 批量删除设备类型信息
 | ||||
| export function deleteTypeList(data) { | ||||
|   const delData = { | ||||
|     typeIds: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/type/deleteTypeList', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改设备类型信息
 | ||||
| export function updateType(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/type/updateType', | ||||
|     method: 'put', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,23 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   管理台-综合柜设备参数 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 根据typeCode查询综合柜内设备的参数名称信息
 | ||||
| export function getDictionaryByCode(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/dictionary/getDictionaryByCode', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 查询综合柜内设备的类型数据
 | ||||
| export function getDictionaryType(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/dictionary/getDictionaryType', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,25 @@ | |||
| 
 | ||||
| import request from "@/utils/request"; | ||||
| 
 | ||||
| // export function clearAlarmStatus(alarmId) {
 | ||||
| //   return request({
 | ||||
| //     url: "alarm-service/alarm/clearAlarmStatus?alarmId=" + alarmId,
 | ||||
| //     method: "post",
 | ||||
| //   });
 | ||||
| // }
 | ||||
| 
 | ||||
| // 获取平台状态统计
 | ||||
| export function getDeviceStatusInfo() { | ||||
|     return request({ | ||||
|         url: "device-service/home/getDeviceStatusInfo", | ||||
|         method: "get", | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| // 获取平台故障数量统计
 | ||||
| export function getDeviceAlarmInfo() { | ||||
|     return request({ | ||||
|         url: "device-service/home/getDeviceAlarmInfo", | ||||
|         method: "get", | ||||
|     }); | ||||
| } | ||||
|  | @ -0,0 +1,26 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   管理台-系统日志 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 获取日志列表
 | ||||
| export function getLogList(data) { | ||||
|   return request({ | ||||
|     url: 'user-service/log/getLogList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新增日志
 | ||||
| export function saveLog(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/log/saveLog', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,54 @@ | |||
| import request from '@/utils/request' | ||||
| import qs from 'qs' | ||||
| 
 | ||||
| // 登录
 | ||||
| export function loginByUsername(username, password) { | ||||
|   const data = qs.stringify({ | ||||
|     userName: username, | ||||
|     password, | ||||
|     isApp: true, | ||||
|   }) | ||||
|   return request({ | ||||
|     url: 'user-service/user/getUserLogin', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| export function logout() { | ||||
|   return request({ | ||||
|     url: 'user-service/user/signOut', | ||||
|     method: 'post' | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 获取用户的web菜单资源
 | ||||
| export function getUserInfo(token) { | ||||
|   const data = qs.stringify({ | ||||
|     Authorization: token | ||||
|   }) | ||||
|   return request({ | ||||
|     url: 'user-service/appPermission/getAppPermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 获取APP等参数
 | ||||
| export function getAppConfig(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/logo/getAppConfig', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 配置APP版本等参数
 | ||||
| export function setAppConfig(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/logo/setAppConfig', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,95 @@ | |||
| import request from '@/utils/request' | ||||
| import qs from 'qs' | ||||
| /* | ||||
|   系统管理-菜单管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| // 获得web当前机构的菜单树
 | ||||
| export function getMenuList() { | ||||
|   return request({ | ||||
|     url: 'user-service/permission/getDeptPermissionTree', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改web菜单
 | ||||
| export function editSubmitApi(formData) { | ||||
|   const data = JSON.stringify(formData) | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/permission/updatePermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新增web菜单
 | ||||
| export function addSubmitApi(formData) { | ||||
|   const data = JSON.stringify(formData) | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/permission/savePermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除web菜单
 | ||||
| export function delSubmitApi(delData) { | ||||
|   const data = { | ||||
|     permissionIds: delData | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'user-service/permission/removePermission', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 获得app当前机构的菜单树
 | ||||
| export function getAppMenuList() { | ||||
|   return request({ | ||||
|     url: 'user-service/appPermission/getAppDeptPermissionTree', | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改app菜单
 | ||||
| export function editAppSubmitApi(formData) { | ||||
|   const data = qs.stringify(formData) | ||||
|   return request({ | ||||
|     url: 'user-service/appPermission/updatePermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新增app菜单
 | ||||
| export function addAppSubmitApi(formData) { | ||||
|   const data = qs.stringify(formData) | ||||
|   return request({ | ||||
|     url: 'user-service/appPermission/savePermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除app菜单
 | ||||
| export function delAppSubmitApi(delData) { | ||||
|   const data = { | ||||
|     permissionIds: delData | ||||
|   } | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/appPermission/removePermission', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,105 @@ | |||
| import request from '@/utils/request' | ||||
| import qs from 'qs' | ||||
| 
 | ||||
| /* | ||||
|   系统管理-角色管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| // 查询所有角色列表
 | ||||
| export function getRoleList(data) { | ||||
|   return request({ | ||||
|     url: 'user-service/role/getRoleList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新增角色
 | ||||
| export function addSubmitApi(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/role/saveRole', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改角色
 | ||||
| export function editSubmitApi(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/role/updateRole', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除角色
 | ||||
| export function delSubmitRoleApi(dataForm) { | ||||
|   const delData = { | ||||
|     Roleids: dataForm | ||||
|   } | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/role/removeRole', | ||||
|     method: 'get', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 获取设置web角色权限的菜单信息和权限信息
 | ||||
| export function getRolePermissionTree(data) { | ||||
|   const resource = { | ||||
|     roleId: data | ||||
|   } | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/permission/getWebRolePermissionInfoByRoleId', | ||||
|     method: 'get', | ||||
|     params: resource | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 设置web角色权限
 | ||||
| export function setResourceSubmitApi(dataForm) { | ||||
|   const data = qs.stringify(dataForm) | ||||
|   return request({ | ||||
|     url: 'user-service/permission/saveWebRolePermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 获取设置app角色权限的菜单信息和权限信息
 | ||||
| export function getAppRolePermissionTree(data) { | ||||
|   const resource = { | ||||
|     roleId: data | ||||
|   } | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'user-service/appPermission/getAppRolePermissionInfoByRoleId', | ||||
|     method: 'get', | ||||
|     params: resource | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 设置app角色权限
 | ||||
| export function setAppResourceSubmitApi(dataForm) { | ||||
|   const data = qs.stringify(dataForm) | ||||
|   return request({ | ||||
|     url: 'user-service/appPermission/saveAppRolePermission', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,101 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   管理台-站址管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 根据siteId查询站址信息
 | ||||
| export function getSiteById(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/site/getSiteById', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据siteId查询站址列表
 | ||||
| export function getSiteList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/site/getSiteList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据siteId查询未选择的综合柜
 | ||||
| export function getUnChoiceDevice(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/site/getUnChoiceDevice', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据siteId查询已选择的综合柜
 | ||||
| export function getHasChoiceDevice(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/site/getHasChoiceDevice', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入站址信息
 | ||||
| export function addSite(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/site/addSite', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 录入综合柜站址关系
 | ||||
| export function addSiteDevice(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/site/addSiteDevice', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除站址信息
 | ||||
| export function deleteSite(data) { | ||||
|   const delData = { | ||||
|     siteById: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/site/deleteSite', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 批量删除站址信息
 | ||||
| export function deleteSiteList(data) { | ||||
|   const delData = { | ||||
|     siteIds: data | ||||
|   } | ||||
|   return request({ | ||||
|     url: 'device-service/site/deleteSiteList', | ||||
|     method: 'delete', | ||||
|     params: delData | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改站址信息
 | ||||
| export function updateSite(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'device-service/site/updateSite', | ||||
|     method: 'put', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,145 @@ | |||
| import request from '@/utils/request' | ||||
| import qs from 'qs' | ||||
| /* | ||||
|   工单、巡检 api | ||||
| */ | ||||
| 
 | ||||
| // 新:查询工单、巡检列表
 | ||||
| export function getTask(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/getTaskList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:查询单个工单、巡检
 | ||||
| export function getTaskInfo(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/getTask', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 获取单个任务的设备列表
 | ||||
| export function getDeviceByTaskId(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/getDeviceByTaskId', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:工单新建
 | ||||
| export function insertOrderTask(dataForm) { | ||||
|   const data = JSON.stringify(dataForm) | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/insertOrderTask', | ||||
|     method: 'post', | ||||
|     headers: { 'Content-Type': 'application/json' }, | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:工单编辑
 | ||||
| export function updateOrderTask(dataForm) { | ||||
|   const data = JSON.stringify(dataForm) | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/updateTask', | ||||
|     method: 'post', | ||||
|     headers: { 'Content-Type': 'application/json' }, | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:巡检新建
 | ||||
| export function insertInspectionTask(dataForm) { | ||||
|   const data = JSON.stringify(dataForm) | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/insertInspectionTask', | ||||
|     method: 'post', | ||||
|     headers: { 'Content-Type': 'application/json' }, | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:巡检编辑
 | ||||
| export function updateInspectionTask(dataForm) { | ||||
|   const data = JSON.stringify(dataForm) | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/updateInspectionTask', | ||||
|     method: 'post', | ||||
|     headers: { 'Content-Type': 'application/json' }, | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:申请验收任务
 | ||||
| export function applyAcceptanceTask(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/acceptance/applyAcceptanceTask', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 新:发布或中止工单
 | ||||
| export function releaseTask(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/ttask/releaseTask', | ||||
|     method: 'post', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 获取工单、巡检-历史轨迹
 | ||||
| export function getTaskTrajectoryList(data) { | ||||
|   return request({ | ||||
|     url: "trajectory-service/trajectory/getTaskTrajectoryList", | ||||
|     method: "get", | ||||
|     params: data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 新增工单、巡检-历史轨迹
 | ||||
| export function insertTrajectory(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/trajectory/insertTrajectory', | ||||
|     method: 'post', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除(工单-历史轨迹)音频、视频、图片等文件
 | ||||
| export function deleteFileByUrl(dataForm) { | ||||
|   let data = { | ||||
|     host: 'http://http://116.236.50.106:8701/', | ||||
|     fileUrl: dataForm.fileUrl | ||||
|   } | ||||
|   data = qs.stringify(data) | ||||
|   return request({ | ||||
|     url: 'trajectory-service/file/deleteFileByUrl', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据条件查询平台所有的设备列表信息
 | ||||
| export function getDeviceList(data) { | ||||
|   return request({ | ||||
|     url: 'device-service/cabinet/getDeviceList', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 删除单个任务
 | ||||
| export function deleteTask(dataForm) { | ||||
|   const data = qs.stringify(dataForm); | ||||
|   return request({ | ||||
|     url: "trajectory-service/ttask/deleteTask", | ||||
|     method: "post", | ||||
|     data, | ||||
|   }); | ||||
| } | ||||
|  | @ -0,0 +1,14 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   管理台-运营统计 权限操作api | ||||
| */ | ||||
| 
 | ||||
| // 获取个人平台任务信息
 | ||||
| export function getPersonTaskInfo(data) { | ||||
|   return request({ | ||||
|     url: 'trajectory-service/taskStatistics/getPersonTaskInfo', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,36 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from 'qs'
 | ||||
| /* | ||||
|   系统管理-菜单管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| // 根据thresholdId查询阀值信息
 | ||||
| export function getThresholdById(data) { | ||||
|   return request({ | ||||
|     url: 'alarm-service/threshold/getThresholdById', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 根据设备参数查询阀值信息
 | ||||
| export function getThresholdByDictionary(data) { | ||||
|   return request({ | ||||
|     url: 'alarm-service/threshold/getThresholdByDictionary', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 修改阀值信息
 | ||||
| export function updateThreshold(data) { | ||||
|   return request({ | ||||
|     headers: { | ||||
|       'Content-Type': 'application/json' | ||||
|     }, | ||||
|     url: 'alarm-service/threshold/updateThreshold', | ||||
|     method: 'put', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,125 @@ | |||
| import request from "@/utils/request"; | ||||
| 
 | ||||
| import qs from "qs"; | ||||
| 
 | ||||
| // 时间同步
 | ||||
| export function setTimeSync(data) { | ||||
|   data = qs.stringify(data); | ||||
|   return request({ | ||||
|     url: "platform-service/deviceInfo/setTimeSync", | ||||
|     method: "post", | ||||
|     data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 绑定xml文件
 | ||||
| export function updateDeviceInfoByXML(data) { | ||||
|   data = qs.stringify(data); | ||||
|   return request({ | ||||
|     url: "platform-service/deviceInfo/updateDeviceInfoByXML", | ||||
|     method: "post", | ||||
|     data, | ||||
|   }); | ||||
| } | ||||
| // 上传
 | ||||
| export function uploadFile(data, url) { | ||||
|   var fileData = new FormData(); | ||||
|   fileData.append("file", data); | ||||
|   fileData.append("host", url); | ||||
|   return request({ | ||||
|     headers: { | ||||
|       "Content-Type": "multipart/form-data", | ||||
|     }, | ||||
|     url: "trajectory-service/file/uploadFile", | ||||
|     method: "post", | ||||
|     data: fileData, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 删除下载地址
 | ||||
| export function deleteFile(dataForm, url) { | ||||
|   let data = { | ||||
|     host: url, | ||||
|     fileUrl: dataForm, | ||||
|   }; | ||||
|   data = qs.stringify(data); | ||||
|   return request({ | ||||
|     url: "trajectory-service/file/deleteFileByUrl", | ||||
|     method: "post", | ||||
|     data, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 上传更新设备信息
 | ||||
| export function uploadDeviceList(data) { | ||||
|   var fileData = new FormData(); | ||||
|   fileData.append("file", data); | ||||
|   return request({ | ||||
|     headers: { | ||||
|       "Content-Type": "multipart/form-data", | ||||
|     }, | ||||
|     url: "platform-service/deviceInfo/saveDeviceInfoList", | ||||
|     method: "post", | ||||
|     data: fileData, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 根据文件模板批量新增设备
 | ||||
| export function upgradeSaveDeviceList(data, deptId) { | ||||
|   var fileData = new FormData(); | ||||
|   fileData.append("file", data); | ||||
|   fileData.append("deptId", deptId); | ||||
|   return request({ | ||||
|     headers: { | ||||
|       "Content-Type": "multipart/form-data", | ||||
|     }, | ||||
|     url: "platform-service/deviceInfo/upgradeSaveDeviceList", | ||||
|     method: "post", | ||||
|     data: fileData, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // 上传更新点位属性信息
 | ||||
| export function uploadPointList(data, deptId) { | ||||
|   var fileData = new FormData(); | ||||
|   fileData.append("file", data); | ||||
|   fileData.append("deptId", deptId); | ||||
|   return request({ | ||||
|     headers: { | ||||
|       "Content-Type": "multipart/form-data", | ||||
|     }, | ||||
|     url: "platform-service/deviceInfo/updatePointPropertyInfo", | ||||
|     method: "post", | ||||
|     data: fileData, | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| // 停止Netty通讯
 | ||||
| export function closeNetty() { | ||||
|   return request({ | ||||
|     url: "platform-service/deviceInfo/closeNetty", | ||||
|     method: "post", | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 查询app版本
 | ||||
| export function getRedisByPrex(data) { | ||||
|   return request({ | ||||
|     url: 'platform-service/operate/getRedisByPrex', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| // 查询app版本
 | ||||
| export function setRedisByPrex(data) { | ||||
|   return request({ | ||||
|     url: 'platform-service/operate/setRedisByPrex', | ||||
|     method: 'get', | ||||
|     params: data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,12 @@ | |||
| import request from '@/utils/request' | ||||
| import { httpUser } from '@/utils/api' | ||||
| const https = httpUser() | ||||
| 
 | ||||
| export function editSubmitApi(data) { | ||||
|   // const data = qs.stringify(dataForm)
 | ||||
|   return request({ | ||||
|     url: https + 'user/updateSysuser', | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
|  | @ -0,0 +1,74 @@ | |||
| import request from '@/utils/request' | ||||
| // import qs from "qs";
 | ||||
| 
 | ||||
| /* | ||||
|   系统管理-用户管理 权限操作api | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| // 查询用户列表
 | ||||
| export function getUserList(data) { | ||||
|     return request({ | ||||
|         url: 'user-service/user/getUserList', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 根据userName查询用户信息
 | ||||
| export function getUserByUserName(data) { | ||||
|     return request({ | ||||
|         url: 'user-service/user/getUserByUserName', | ||||
|         method: 'get', | ||||
|         params: data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 新增
 | ||||
| export function addSubmitApi(data) { | ||||
|     return request({ | ||||
|         headers: { | ||||
|             'Content-Type': 'application/json' | ||||
|         }, | ||||
|         url: 'user-service/user/saveSysuser', | ||||
|         method: 'post', | ||||
|         data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 修改
 | ||||
| export function editSubmitApi(data) { | ||||
|     return request({ | ||||
|         headers: { | ||||
|             'Content-Type': 'application/json' | ||||
|         }, | ||||
|         url: 'user-service/user/updateSysuser', | ||||
|         method: 'post', | ||||
|         data | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| // 删除
 | ||||
| export function delSubmitUserApi(data) { | ||||
|     const delData = { | ||||
|         userIds: data | ||||
|     } | ||||
|     return request({ | ||||
|         url: 'user-service/user/removeSysuser', | ||||
|         method: 'get', | ||||
|         params: delData | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // 获取用户操作记录
 | ||||
| export function getOperationRecord(params) { | ||||
| 
 | ||||
|     return request({ | ||||
|         url: 'user-service/log/getLogList', | ||||
|         method: 'get', | ||||
|         params | ||||
|     }) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,451 @@ | |||
| @font-face { | ||||
|   font-family: "iconfont"; /* Project id 3904805 */ | ||||
|   src: url('iconfont.woff2?t=1698305604885') format('woff2'), | ||||
|        url('iconfont.woff?t=1698305604885') format('woff'), | ||||
|        url('iconfont.ttf?t=1698305604885') format('truetype'); | ||||
| } | ||||
| 
 | ||||
| .iconfont { | ||||
|   font-family: "iconfont" !important; | ||||
|   font-size: 16px; | ||||
|   font-style: normal; | ||||
|   -webkit-font-smoothing: antialiased; | ||||
|   -moz-osx-font-smoothing: grayscale; | ||||
| } | ||||
| 
 | ||||
| .icon-yuyan1:before { | ||||
|   content: "\e886"; | ||||
| } | ||||
| 
 | ||||
| .icon-yonghuleixing:before { | ||||
|   content: "\e887"; | ||||
| } | ||||
| 
 | ||||
| .icon-quanxian:before { | ||||
|   content: "\e888"; | ||||
| } | ||||
| 
 | ||||
| .icon-nicheng:before { | ||||
|   content: "\e889"; | ||||
| } | ||||
| 
 | ||||
| .icon-banben:before { | ||||
|   content: "\e88a"; | ||||
| } | ||||
| 
 | ||||
| .icon-mima:before { | ||||
|   content: "\e88b"; | ||||
| } | ||||
| 
 | ||||
| .icon-dianhua:before { | ||||
|   content: "\e88c"; | ||||
| } | ||||
| 
 | ||||
| .icon-group:before { | ||||
|   content: "\e885"; | ||||
| } | ||||
| 
 | ||||
| .icon-huijuewangluologo:before { | ||||
|   content: "\e884"; | ||||
| } | ||||
| 
 | ||||
| .icon-lixianshebei:before { | ||||
|   content: "\e880"; | ||||
| } | ||||
| 
 | ||||
| .icon-zaixianshebei:before { | ||||
|   content: "\e881"; | ||||
| } | ||||
| 
 | ||||
| .icon-guzhangshebei:before { | ||||
|   content: "\e882"; | ||||
| } | ||||
| 
 | ||||
| .icon-zongshu:before { | ||||
|   content: "\e883"; | ||||
| } | ||||
| 
 | ||||
| .icon-yingjianshengji:before { | ||||
|   content: "\e87c"; | ||||
| } | ||||
| 
 | ||||
| .icon-dianjia:before { | ||||
|   content: "\e87d"; | ||||
| } | ||||
| 
 | ||||
| .icon-wangguan:before { | ||||
|   content: "\e87e"; | ||||
| } | ||||
| 
 | ||||
| .icon-ruanjianshengji:before { | ||||
|   content: "\e87f"; | ||||
| } | ||||
| 
 | ||||
| .icon-xinbanben:before { | ||||
|   content: "\e879"; | ||||
| } | ||||
| 
 | ||||
| .icon-zidingyi:before { | ||||
|   content: "\e87b"; | ||||
| } | ||||
| 
 | ||||
| .icon-HJNE:before { | ||||
|   content: "\e87a"; | ||||
| } | ||||
| 
 | ||||
| .icon-yangan:before { | ||||
|   content: "\e877"; | ||||
| } | ||||
| 
 | ||||
| .icon-fengjifengshan:before { | ||||
|   content: "\e878"; | ||||
| } | ||||
| 
 | ||||
| .icon-you:before { | ||||
|   content: "\e875"; | ||||
| } | ||||
| 
 | ||||
| .icon-zuo:before { | ||||
|   content: "\e876"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_touxiang:before { | ||||
|   content: "\e874"; | ||||
| } | ||||
| 
 | ||||
| .icon-ditu:before { | ||||
|   content: "\e872"; | ||||
| } | ||||
| 
 | ||||
| .icon-liebiao:before { | ||||
|   content: "\e873"; | ||||
| } | ||||
| 
 | ||||
| .icon-shouye_renwutongzhi:before { | ||||
|   content: "\e871"; | ||||
| } | ||||
| 
 | ||||
| .icon-gongzuotai_gongdan:before { | ||||
|   content: "\e86f"; | ||||
| } | ||||
| 
 | ||||
| .icon-gongzuotai_xunjian:before { | ||||
|   content: "\e870"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_new:before { | ||||
|   content: "\e86e"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_yonghunicheng:before { | ||||
|   content: "\e868"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_dianhuahaoma:before { | ||||
|   content: "\e869"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_dangqianbanben:before { | ||||
|   content: "\e86a"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_yonghuleixing:before { | ||||
|   content: "\e86b"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_yonghuquanxian:before { | ||||
|   content: "\e86c"; | ||||
| } | ||||
| 
 | ||||
| .icon-wode_yuyan:before { | ||||
|   content: "\e86d"; | ||||
| } | ||||
| 
 | ||||
| .icon-appmima:before { | ||||
|   content: "\e866"; | ||||
| } | ||||
| 
 | ||||
| .icon-appyonghuming:before { | ||||
|   content: "\e867"; | ||||
| } | ||||
| 
 | ||||
| .icon-appgongzuotai:before { | ||||
|   content: "\e863"; | ||||
| } | ||||
| 
 | ||||
| .icon-appwode:before { | ||||
|   content: "\e864"; | ||||
| } | ||||
| 
 | ||||
| .icon-appshouye:before { | ||||
|   content: "\e865"; | ||||
| } | ||||
| 
 | ||||
| .icon-daoxu:before { | ||||
|   content: "\e787"; | ||||
| } | ||||
| 
 | ||||
| .icon-zhengxu:before { | ||||
|   content: "\e788"; | ||||
| } | ||||
| 
 | ||||
| .icon-chakan:before { | ||||
|   content: "\e860"; | ||||
| } | ||||
| 
 | ||||
| .icon-paifa:before { | ||||
|   content: "\e861"; | ||||
| } | ||||
| 
 | ||||
| .icon-zhongzhi:before { | ||||
|   content: "\e862"; | ||||
| } | ||||
| 
 | ||||
| .icon-yichuli:before { | ||||
|   content: "\e85e"; | ||||
| } | ||||
| 
 | ||||
| .icon-daichuli:before { | ||||
|   content: "\e85f"; | ||||
| } | ||||
| 
 | ||||
| .icon-danguiti_guzhang:before { | ||||
|   content: "\e858"; | ||||
| } | ||||
| 
 | ||||
| .icon-danguiti_zhengchang:before { | ||||
|   content: "\e859"; | ||||
| } | ||||
| 
 | ||||
| .icon-danguiti_gaojing:before { | ||||
|   content: "\e85a"; | ||||
| } | ||||
| 
 | ||||
| .icon-duoguiti_guzhang:before { | ||||
|   content: "\e85b"; | ||||
| } | ||||
| 
 | ||||
| .icon-duoguiti_zhengchang:before { | ||||
|   content: "\e85c"; | ||||
| } | ||||
| 
 | ||||
| .icon-duoguiti_gaojing:before { | ||||
|   content: "\e85d"; | ||||
| } | ||||
| 
 | ||||
| .icon-touxiang:before { | ||||
|   content: "\e855"; | ||||
| } | ||||
| 
 | ||||
| .icon-bukejian:before { | ||||
|   content: "\e856"; | ||||
| } | ||||
| 
 | ||||
| .icon-kejian:before { | ||||
|   content: "\e857"; | ||||
| } | ||||
| 
 | ||||
| .icon-wenshiduzhi:before { | ||||
|   content: "\e853"; | ||||
| } | ||||
| 
 | ||||
| .icon-wenshidukedu:before { | ||||
|   content: "\e854"; | ||||
| } | ||||
| 
 | ||||
| .icon-gaojing:before { | ||||
|   content: "\e852"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_caidanguanli:before { | ||||
|   content: "\e848"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_pingtairizhi:before { | ||||
|   content: "\e849"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_zhanzhiguanli:before { | ||||
|   content: "\e84a"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_jiaoseguanli:before { | ||||
|   content: "\e84b"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_yuzhiguanli:before { | ||||
|   content: "\e84c"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_shebeileixing:before { | ||||
|   content: "\e84d"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_shebeiguanli:before { | ||||
|   content: "\e84e"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_yonghuguanli:before { | ||||
|   content: "\e84f"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai_quyuguanli:before { | ||||
|   content: "\e850"; | ||||
| } | ||||
| 
 | ||||
| .icon-shanchu:before { | ||||
|   content: "\e851"; | ||||
| } | ||||
| 
 | ||||
| .icon-biaoti:before { | ||||
|   content: "\e847"; | ||||
| } | ||||
| 
 | ||||
| .icon-daohangsuofang:before { | ||||
|   content: "\e846"; | ||||
| } | ||||
| 
 | ||||
| .icon-a--:before { | ||||
|   content: "\e844"; | ||||
| } | ||||
| 
 | ||||
| .icon-a-:before { | ||||
|   content: "\e845"; | ||||
| } | ||||
| 
 | ||||
| .icon-xia:before { | ||||
|   content: "\e842"; | ||||
| } | ||||
| 
 | ||||
| .icon-shang:before { | ||||
|   content: "\e843"; | ||||
| } | ||||
| 
 | ||||
| .icon-danguiti:before { | ||||
|   content: "\e832"; | ||||
| } | ||||
| 
 | ||||
| .icon-duoguiti:before { | ||||
|   content: "\e833"; | ||||
| } | ||||
| 
 | ||||
| .icon-UPS:before { | ||||
|   content: "\e834"; | ||||
| } | ||||
| 
 | ||||
| .icon-dianchi:before { | ||||
|   content: "\e835"; | ||||
| } | ||||
| 
 | ||||
| .icon-guangfu:before { | ||||
|   content: "\e836"; | ||||
| } | ||||
| 
 | ||||
| .icon-fanglei:before { | ||||
|   content: "\e837"; | ||||
| } | ||||
| 
 | ||||
| .icon-shipin:before { | ||||
|   content: "\e838"; | ||||
| } | ||||
| 
 | ||||
| .icon-menjin:before { | ||||
|   content: "\e839"; | ||||
| } | ||||
| 
 | ||||
| .icon-peidian:before { | ||||
|   content: "\e83a"; | ||||
| } | ||||
| 
 | ||||
| .icon-xiaofang:before { | ||||
|   content: "\e83b"; | ||||
| } | ||||
| 
 | ||||
| .icon-wenshidu:before { | ||||
|   content: "\e83c"; | ||||
| } | ||||
| 
 | ||||
| .icon-dianyuan:before { | ||||
|   content: "\e83d"; | ||||
| } | ||||
| 
 | ||||
| .icon-qiti:before { | ||||
|   content: "\e83e"; | ||||
| } | ||||
| 
 | ||||
| .icon-shuijin:before { | ||||
|   content: "\e83f"; | ||||
| } | ||||
| 
 | ||||
| .icon-kongtiao:before { | ||||
|   content: "\e840"; | ||||
| } | ||||
| 
 | ||||
| .icon-lishiyunwei:before { | ||||
|   content: "\e841"; | ||||
| } | ||||
| 
 | ||||
| .icon-logo:before { | ||||
|   content: "\e831"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanlitai:before { | ||||
|   content: "\e826"; | ||||
| } | ||||
| 
 | ||||
| .icon-yuyan:before { | ||||
|   content: "\e827"; | ||||
| } | ||||
| 
 | ||||
| .icon-bianji:before { | ||||
|   content: "\e828"; | ||||
| } | ||||
| 
 | ||||
| .icon-tuichu:before { | ||||
|   content: "\e829"; | ||||
| } | ||||
| 
 | ||||
| .icon-yonghu:before { | ||||
|   content: "\e82a"; | ||||
| } | ||||
| 
 | ||||
| .icon-xiangqian:before { | ||||
|   content: "\e82b"; | ||||
| } | ||||
| 
 | ||||
| .icon-xianghou:before { | ||||
|   content: "\e82c"; | ||||
| } | ||||
| 
 | ||||
| .icon-tongzhi:before { | ||||
|   content: "\e82d"; | ||||
| } | ||||
| 
 | ||||
| .icon-guanbi:before { | ||||
|   content: "\e82e"; | ||||
| } | ||||
| 
 | ||||
| .icon-gengduo:before { | ||||
|   content: "\e82f"; | ||||
| } | ||||
| 
 | ||||
| .icon-sousuo:before { | ||||
|   content: "\e830"; | ||||
| } | ||||
| 
 | ||||
| .icon-shouye:before { | ||||
|   content: "\e822"; | ||||
| } | ||||
| 
 | ||||
| .icon-jiguiliebiao:before { | ||||
|   content: "\e823"; | ||||
| } | ||||
| 
 | ||||
| .icon-GIS:before { | ||||
|   content: "\e824"; | ||||
| } | ||||
| 
 | ||||
| .icon-yunwei:before { | ||||
|   content: "\e825"; | ||||
| } | ||||
| 
 | ||||
|  | @ -0,0 +1,772 @@ | |||
| { | ||||
|   "id": "3904805", | ||||
|   "name": "综合柜", | ||||
|   "font_family": "iconfont", | ||||
|   "css_prefix_text": "icon-", | ||||
|   "description": "", | ||||
|   "glyphs": [ | ||||
|     { | ||||
|       "icon_id": "37608902", | ||||
|       "name": "语言", | ||||
|       "font_class": "yuyan1", | ||||
|       "unicode": "e886", | ||||
|       "unicode_decimal": 59526 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37608901", | ||||
|       "name": "用户类型", | ||||
|       "font_class": "yonghuleixing", | ||||
|       "unicode": "e887", | ||||
|       "unicode_decimal": 59527 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37608900", | ||||
|       "name": "权限", | ||||
|       "font_class": "quanxian", | ||||
|       "unicode": "e888", | ||||
|       "unicode_decimal": 59528 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37608898", | ||||
|       "name": "昵称", | ||||
|       "font_class": "nicheng", | ||||
|       "unicode": "e889", | ||||
|       "unicode_decimal": 59529 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37608899", | ||||
|       "name": "版本", | ||||
|       "font_class": "banben", | ||||
|       "unicode": "e88a", | ||||
|       "unicode_decimal": 59530 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37608897", | ||||
|       "name": "密码", | ||||
|       "font_class": "mima", | ||||
|       "unicode": "e88b", | ||||
|       "unicode_decimal": 59531 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37608896", | ||||
|       "name": "电话", | ||||
|       "font_class": "dianhua", | ||||
|       "unicode": "e88c", | ||||
|       "unicode_decimal": 59532 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37504849", | ||||
|       "name": "group", | ||||
|       "font_class": "group", | ||||
|       "unicode": "e885", | ||||
|       "unicode_decimal": 59525 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37504835", | ||||
|       "name": "汇珏网络logo", | ||||
|       "font_class": "huijuewangluologo", | ||||
|       "unicode": "e884", | ||||
|       "unicode_decimal": 59524 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37316667", | ||||
|       "name": "离线设备", | ||||
|       "font_class": "lixianshebei", | ||||
|       "unicode": "e880", | ||||
|       "unicode_decimal": 59520 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37316666", | ||||
|       "name": "在线设备", | ||||
|       "font_class": "zaixianshebei", | ||||
|       "unicode": "e881", | ||||
|       "unicode_decimal": 59521 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37316665", | ||||
|       "name": "故障设备", | ||||
|       "font_class": "guzhangshebei", | ||||
|       "unicode": "e882", | ||||
|       "unicode_decimal": 59522 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37316664", | ||||
|       "name": "总数", | ||||
|       "font_class": "zongshu", | ||||
|       "unicode": "e883", | ||||
|       "unicode_decimal": 59523 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37193675", | ||||
|       "name": "硬件升级", | ||||
|       "font_class": "yingjianshengji", | ||||
|       "unicode": "e87c", | ||||
|       "unicode_decimal": 59516 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37193673", | ||||
|       "name": "电价", | ||||
|       "font_class": "dianjia", | ||||
|       "unicode": "e87d", | ||||
|       "unicode_decimal": 59517 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37193674", | ||||
|       "name": "网关", | ||||
|       "font_class": "wangguan", | ||||
|       "unicode": "e87e", | ||||
|       "unicode_decimal": 59518 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37193672", | ||||
|       "name": "软件升级", | ||||
|       "font_class": "ruanjianshengji", | ||||
|       "unicode": "e87f", | ||||
|       "unicode_decimal": 59519 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "37193748", | ||||
|       "name": "新版本", | ||||
|       "font_class": "xinbanben", | ||||
|       "unicode": "e879", | ||||
|       "unicode_decimal": 59513 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "36497519", | ||||
|       "name": "自定义", | ||||
|       "font_class": "zidingyi", | ||||
|       "unicode": "e87b", | ||||
|       "unicode_decimal": 59515 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "35963639", | ||||
|       "name": "HJNE", | ||||
|       "font_class": "HJNE", | ||||
|       "unicode": "e87a", | ||||
|       "unicode_decimal": 59514 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "35216418", | ||||
|       "name": "烟感", | ||||
|       "font_class": "yangan", | ||||
|       "unicode": "e877", | ||||
|       "unicode_decimal": 59511 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "35216419", | ||||
|       "name": "风机风扇", | ||||
|       "font_class": "fengjifengshan", | ||||
|       "unicode": "e878", | ||||
|       "unicode_decimal": 59512 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "35211988", | ||||
|       "name": "右", | ||||
|       "font_class": "you", | ||||
|       "unicode": "e875", | ||||
|       "unicode_decimal": 59509 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "35211989", | ||||
|       "name": "左", | ||||
|       "font_class": "zuo", | ||||
|       "unicode": "e876", | ||||
|       "unicode_decimal": 59510 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34930510", | ||||
|       "name": "我的_头像", | ||||
|       "font_class": "wode_touxiang", | ||||
|       "unicode": "e874", | ||||
|       "unicode_decimal": 59508 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34929375", | ||||
|       "name": "地图", | ||||
|       "font_class": "ditu", | ||||
|       "unicode": "e872", | ||||
|       "unicode_decimal": 59506 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34929378", | ||||
|       "name": "列表", | ||||
|       "font_class": "liebiao", | ||||
|       "unicode": "e873", | ||||
|       "unicode_decimal": 59507 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927748", | ||||
|       "name": "首页_任务通知", | ||||
|       "font_class": "shouye_renwutongzhi", | ||||
|       "unicode": "e871", | ||||
|       "unicode_decimal": 59505 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927685", | ||||
|       "name": "工作台_工单", | ||||
|       "font_class": "gongzuotai_gongdan", | ||||
|       "unicode": "e86f", | ||||
|       "unicode_decimal": 59503 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927697", | ||||
|       "name": "工作台_巡检", | ||||
|       "font_class": "gongzuotai_xunjian", | ||||
|       "unicode": "e870", | ||||
|       "unicode_decimal": 59504 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927350", | ||||
|       "name": "我的_new", | ||||
|       "font_class": "wode_new", | ||||
|       "unicode": "e86e", | ||||
|       "unicode_decimal": 59502 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927277", | ||||
|       "name": "我的_用户昵称", | ||||
|       "font_class": "wode_yonghunicheng", | ||||
|       "unicode": "e868", | ||||
|       "unicode_decimal": 59496 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927286", | ||||
|       "name": "我的_电话号码", | ||||
|       "font_class": "wode_dianhuahaoma", | ||||
|       "unicode": "e869", | ||||
|       "unicode_decimal": 59497 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927287", | ||||
|       "name": "我的_当前版本", | ||||
|       "font_class": "wode_dangqianbanben", | ||||
|       "unicode": "e86a", | ||||
|       "unicode_decimal": 59498 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927288", | ||||
|       "name": "我的_用户类型", | ||||
|       "font_class": "wode_yonghuleixing", | ||||
|       "unicode": "e86b", | ||||
|       "unicode_decimal": 59499 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927289", | ||||
|       "name": "我的_用户权限", | ||||
|       "font_class": "wode_yonghuquanxian", | ||||
|       "unicode": "e86c", | ||||
|       "unicode_decimal": 59500 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927290", | ||||
|       "name": "我的_语言", | ||||
|       "font_class": "wode_yuyan", | ||||
|       "unicode": "e86d", | ||||
|       "unicode_decimal": 59501 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927175", | ||||
|       "name": "app密码", | ||||
|       "font_class": "appmima", | ||||
|       "unicode": "e866", | ||||
|       "unicode_decimal": 59494 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927176", | ||||
|       "name": "app用户名", | ||||
|       "font_class": "appyonghuming", | ||||
|       "unicode": "e867", | ||||
|       "unicode_decimal": 59495 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927085", | ||||
|       "name": "app工作台", | ||||
|       "font_class": "appgongzuotai", | ||||
|       "unicode": "e863", | ||||
|       "unicode_decimal": 59491 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927086", | ||||
|       "name": "app我的", | ||||
|       "font_class": "appwode", | ||||
|       "unicode": "e864", | ||||
|       "unicode_decimal": 59492 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34927087", | ||||
|       "name": "app首页", | ||||
|       "font_class": "appshouye", | ||||
|       "unicode": "e865", | ||||
|       "unicode_decimal": 59493 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "26422859", | ||||
|       "name": "倒序", | ||||
|       "font_class": "daoxu", | ||||
|       "unicode": "e787", | ||||
|       "unicode_decimal": 59271 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "26422860", | ||||
|       "name": "正序", | ||||
|       "font_class": "zhengxu", | ||||
|       "unicode": "e788", | ||||
|       "unicode_decimal": 59272 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34659079", | ||||
|       "name": "查看", | ||||
|       "font_class": "chakan", | ||||
|       "unicode": "e860", | ||||
|       "unicode_decimal": 59488 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34659080", | ||||
|       "name": "派发", | ||||
|       "font_class": "paifa", | ||||
|       "unicode": "e861", | ||||
|       "unicode_decimal": 59489 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34659108", | ||||
|       "name": "终止", | ||||
|       "font_class": "zhongzhi", | ||||
|       "unicode": "e862", | ||||
|       "unicode_decimal": 59490 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34633183", | ||||
|       "name": "已处理", | ||||
|       "font_class": "yichuli", | ||||
|       "unicode": "e85e", | ||||
|       "unicode_decimal": 59486 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34633194", | ||||
|       "name": "待处理", | ||||
|       "font_class": "daichuli", | ||||
|       "unicode": "e85f", | ||||
|       "unicode_decimal": 59487 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34573227", | ||||
|       "name": "单柜体_故障", | ||||
|       "font_class": "danguiti_guzhang", | ||||
|       "unicode": "e858", | ||||
|       "unicode_decimal": 59480 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34573228", | ||||
|       "name": "单柜体_正常", | ||||
|       "font_class": "danguiti_zhengchang", | ||||
|       "unicode": "e859", | ||||
|       "unicode_decimal": 59481 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34573229", | ||||
|       "name": "单柜体_告警", | ||||
|       "font_class": "danguiti_gaojing", | ||||
|       "unicode": "e85a", | ||||
|       "unicode_decimal": 59482 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34573230", | ||||
|       "name": "多柜体_故障", | ||||
|       "font_class": "duoguiti_guzhang", | ||||
|       "unicode": "e85b", | ||||
|       "unicode_decimal": 59483 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34573231", | ||||
|       "name": "多柜体_正常", | ||||
|       "font_class": "duoguiti_zhengchang", | ||||
|       "unicode": "e85c", | ||||
|       "unicode_decimal": 59484 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34573232", | ||||
|       "name": "多柜体_告警", | ||||
|       "font_class": "duoguiti_gaojing", | ||||
|       "unicode": "e85d", | ||||
|       "unicode_decimal": 59485 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34548393", | ||||
|       "name": "头像", | ||||
|       "font_class": "touxiang", | ||||
|       "unicode": "e855", | ||||
|       "unicode_decimal": 59477 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34548402", | ||||
|       "name": "不可见", | ||||
|       "font_class": "bukejian", | ||||
|       "unicode": "e856", | ||||
|       "unicode_decimal": 59478 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34548403", | ||||
|       "name": "可见", | ||||
|       "font_class": "kejian", | ||||
|       "unicode": "e857", | ||||
|       "unicode_decimal": 59479 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34535845", | ||||
|       "name": "温湿度值", | ||||
|       "font_class": "wenshiduzhi", | ||||
|       "unicode": "e853", | ||||
|       "unicode_decimal": 59475 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34535846", | ||||
|       "name": "温湿度刻度", | ||||
|       "font_class": "wenshidukedu", | ||||
|       "unicode": "e854", | ||||
|       "unicode_decimal": 59476 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34511067", | ||||
|       "name": "告警", | ||||
|       "font_class": "gaojing", | ||||
|       "unicode": "e852", | ||||
|       "unicode_decimal": 59474 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466456", | ||||
|       "name": "管理台_菜单管理", | ||||
|       "font_class": "guanlitai_caidanguanli", | ||||
|       "unicode": "e848", | ||||
|       "unicode_decimal": 59464 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466457", | ||||
|       "name": "管理台_平台日志", | ||||
|       "font_class": "guanlitai_pingtairizhi", | ||||
|       "unicode": "e849", | ||||
|       "unicode_decimal": 59465 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466458", | ||||
|       "name": "管理台_站址管理", | ||||
|       "font_class": "guanlitai_zhanzhiguanli", | ||||
|       "unicode": "e84a", | ||||
|       "unicode_decimal": 59466 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466459", | ||||
|       "name": "管理台_角色管理", | ||||
|       "font_class": "guanlitai_jiaoseguanli", | ||||
|       "unicode": "e84b", | ||||
|       "unicode_decimal": 59467 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466460", | ||||
|       "name": "管理台_阈值管理", | ||||
|       "font_class": "guanlitai_yuzhiguanli", | ||||
|       "unicode": "e84c", | ||||
|       "unicode_decimal": 59468 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466461", | ||||
|       "name": "管理台_设备类型", | ||||
|       "font_class": "guanlitai_shebeileixing", | ||||
|       "unicode": "e84d", | ||||
|       "unicode_decimal": 59469 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466462", | ||||
|       "name": "管理台_设备管理", | ||||
|       "font_class": "guanlitai_shebeiguanli", | ||||
|       "unicode": "e84e", | ||||
|       "unicode_decimal": 59470 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466463", | ||||
|       "name": "管理台_用户管理", | ||||
|       "font_class": "guanlitai_yonghuguanli", | ||||
|       "unicode": "e84f", | ||||
|       "unicode_decimal": 59471 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466464", | ||||
|       "name": "管理台_区域管理", | ||||
|       "font_class": "guanlitai_quyuguanli", | ||||
|       "unicode": "e850", | ||||
|       "unicode_decimal": 59472 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34466469", | ||||
|       "name": "删除", | ||||
|       "font_class": "shanchu", | ||||
|       "unicode": "e851", | ||||
|       "unicode_decimal": 59473 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34433810", | ||||
|       "name": "标题", | ||||
|       "font_class": "biaoti", | ||||
|       "unicode": "e847", | ||||
|       "unicode_decimal": 59463 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34431157", | ||||
|       "name": "导航缩放", | ||||
|       "font_class": "daohangsuofang", | ||||
|       "unicode": "e846", | ||||
|       "unicode_decimal": 59462 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34429470", | ||||
|       "name": "-", | ||||
|       "font_class": "a--", | ||||
|       "unicode": "e844", | ||||
|       "unicode_decimal": 59460 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34429471", | ||||
|       "name": "+", | ||||
|       "font_class": "a-", | ||||
|       "unicode": "e845", | ||||
|       "unicode_decimal": 59461 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34419671", | ||||
|       "name": "下", | ||||
|       "font_class": "xia", | ||||
|       "unicode": "e842", | ||||
|       "unicode_decimal": 59458 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34419672", | ||||
|       "name": "上", | ||||
|       "font_class": "shang", | ||||
|       "unicode": "e843", | ||||
|       "unicode_decimal": 59459 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418798", | ||||
|       "name": "单柜体", | ||||
|       "font_class": "danguiti", | ||||
|       "unicode": "e832", | ||||
|       "unicode_decimal": 59442 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418799", | ||||
|       "name": "多柜体", | ||||
|       "font_class": "duoguiti", | ||||
|       "unicode": "e833", | ||||
|       "unicode_decimal": 59443 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418846", | ||||
|       "name": "UPS", | ||||
|       "font_class": "UPS", | ||||
|       "unicode": "e834", | ||||
|       "unicode_decimal": 59444 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418847", | ||||
|       "name": "电池", | ||||
|       "font_class": "dianchi", | ||||
|       "unicode": "e835", | ||||
|       "unicode_decimal": 59445 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418848", | ||||
|       "name": "光伏", | ||||
|       "font_class": "guangfu", | ||||
|       "unicode": "e836", | ||||
|       "unicode_decimal": 59446 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418849", | ||||
|       "name": "防雷", | ||||
|       "font_class": "fanglei", | ||||
|       "unicode": "e837", | ||||
|       "unicode_decimal": 59447 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418850", | ||||
|       "name": "视频", | ||||
|       "font_class": "shipin", | ||||
|       "unicode": "e838", | ||||
|       "unicode_decimal": 59448 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418851", | ||||
|       "name": "门禁", | ||||
|       "font_class": "menjin", | ||||
|       "unicode": "e839", | ||||
|       "unicode_decimal": 59449 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418852", | ||||
|       "name": "配电", | ||||
|       "font_class": "peidian", | ||||
|       "unicode": "e83a", | ||||
|       "unicode_decimal": 59450 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418853", | ||||
|       "name": "消防", | ||||
|       "font_class": "xiaofang", | ||||
|       "unicode": "e83b", | ||||
|       "unicode_decimal": 59451 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418854", | ||||
|       "name": "温湿度", | ||||
|       "font_class": "wenshidu", | ||||
|       "unicode": "e83c", | ||||
|       "unicode_decimal": 59452 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418855", | ||||
|       "name": "电源", | ||||
|       "font_class": "dianyuan", | ||||
|       "unicode": "e83d", | ||||
|       "unicode_decimal": 59453 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418856", | ||||
|       "name": "气体", | ||||
|       "font_class": "qiti", | ||||
|       "unicode": "e83e", | ||||
|       "unicode_decimal": 59454 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418857", | ||||
|       "name": "水浸", | ||||
|       "font_class": "shuijin", | ||||
|       "unicode": "e83f", | ||||
|       "unicode_decimal": 59455 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418858", | ||||
|       "name": "空调", | ||||
|       "font_class": "kongtiao", | ||||
|       "unicode": "e840", | ||||
|       "unicode_decimal": 59456 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34418905", | ||||
|       "name": "历史运维", | ||||
|       "font_class": "lishiyunwei", | ||||
|       "unicode": "e841", | ||||
|       "unicode_decimal": 59457 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34417686", | ||||
|       "name": "logo", | ||||
|       "font_class": "logo", | ||||
|       "unicode": "e831", | ||||
|       "unicode_decimal": 59441 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416876", | ||||
|       "name": "管理台", | ||||
|       "font_class": "guanlitai", | ||||
|       "unicode": "e826", | ||||
|       "unicode_decimal": 59430 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416877", | ||||
|       "name": "语言", | ||||
|       "font_class": "yuyan", | ||||
|       "unicode": "e827", | ||||
|       "unicode_decimal": 59431 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416882", | ||||
|       "name": "编辑", | ||||
|       "font_class": "bianji", | ||||
|       "unicode": "e828", | ||||
|       "unicode_decimal": 59432 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416883", | ||||
|       "name": "退出", | ||||
|       "font_class": "tuichu", | ||||
|       "unicode": "e829", | ||||
|       "unicode_decimal": 59433 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416884", | ||||
|       "name": "用户", | ||||
|       "font_class": "yonghu", | ||||
|       "unicode": "e82a", | ||||
|       "unicode_decimal": 59434 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416910", | ||||
|       "name": "向前", | ||||
|       "font_class": "xiangqian", | ||||
|       "unicode": "e82b", | ||||
|       "unicode_decimal": 59435 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416911", | ||||
|       "name": "向后", | ||||
|       "font_class": "xianghou", | ||||
|       "unicode": "e82c", | ||||
|       "unicode_decimal": 59436 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416912", | ||||
|       "name": "通知", | ||||
|       "font_class": "tongzhi", | ||||
|       "unicode": "e82d", | ||||
|       "unicode_decimal": 59437 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416919", | ||||
|       "name": "关闭", | ||||
|       "font_class": "guanbi", | ||||
|       "unicode": "e82e", | ||||
|       "unicode_decimal": 59438 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416920", | ||||
|       "name": "更多", | ||||
|       "font_class": "gengduo", | ||||
|       "unicode": "e82f", | ||||
|       "unicode_decimal": 59439 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416921", | ||||
|       "name": "搜索", | ||||
|       "font_class": "sousuo", | ||||
|       "unicode": "e830", | ||||
|       "unicode_decimal": 59440 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416051", | ||||
|       "name": "首页", | ||||
|       "font_class": "shouye", | ||||
|       "unicode": "e822", | ||||
|       "unicode_decimal": 59426 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416096", | ||||
|       "name": "机柜列表", | ||||
|       "font_class": "jiguiliebiao", | ||||
|       "unicode": "e823", | ||||
|       "unicode_decimal": 59427 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416097", | ||||
|       "name": "GIS", | ||||
|       "font_class": "GIS", | ||||
|       "unicode": "e824", | ||||
|       "unicode_decimal": 59428 | ||||
|     }, | ||||
|     { | ||||
|       "icon_id": "34416098", | ||||
|       "name": "运维", | ||||
|       "font_class": "yunwei", | ||||
|       "unicode": "e825", | ||||
|       "unicode_decimal": 59429 | ||||
|     } | ||||
|   ] | ||||
| } | ||||
|  | @ -0,0 +1,100 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve" width="40" height="40"> | ||||
| <style type="text/css"> | ||||
| 	.st0{opacity:0.2;fill:#040000;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st3{fill:url(#SVGID_2_);} | ||||
| 	.st4{fill:#939498;} | ||||
| 	.st5{display:none;opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st6{fill:#DD4D11;} | ||||
| </style> | ||||
| <g id="单柜体"> | ||||
| 	<g> | ||||
| 		<ellipse class="st0" cx="26.2" cy="49.2" rx="7.3" ry="2.8"/> | ||||
| 		<g> | ||||
| 			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.0795" y1="0.9059" x2="26.0795" y2="46.4513"> | ||||
| 				<stop  offset="0" style="stop-color:#F08856"/> | ||||
| 				<stop  offset="0.2108" style="stop-color:#D24D17"/> | ||||
| 				<stop  offset="0.8" style="stop-color:#D24D17"/> | ||||
| 				<stop  offset="1" style="stop-color:#A53D24"/> | ||||
| 			</linearGradient> | ||||
| 			<path class="st1" d="M41.5,15.4C41.5,6.9,34.6,0,26.1,0c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7 | ||||
| 				c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l2-17.7C36.6,28.5,41.5,22.5,41.5,15.4z"/> | ||||
| 			<path class="st2" d="M25.4,48l-2-17.7C16.8,28.5,12,22.5,12,15.4c0-8.3,6.5-15,14.7-15.4c-0.2,0-0.5,0-0.7,0 | ||||
| 				c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9L24,48c0,1.1,0.9,1.9,1.9,1.9c0.3,0,0.5-0.1,0.7-0.1 | ||||
| 				C25.9,49.5,25.4,48.8,25.4,48z"/> | ||||
| 			<path class="st0" d="M26.1,0.1c-0.2,0-0.5,0-0.7,0C33.5,0.4,40,7,40,15.2c0,7.1-4.9,13.1-11.4,14.9l-2,17.7 | ||||
| 				c0,0.8-0.5,1.5-1.2,1.8c0.2,0.1,0.5,0.1,0.7,0.1c1.1,0,1.9-0.9,1.9-1.9l2-17.7c6.6-1.8,11.4-7.7,11.4-14.9 | ||||
| 				C41.5,6.7,34.6,0.1,26.1,0.1z"/> | ||||
| 			<g> | ||||
| 				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="26.0792" y1="5.4233" x2="26.0792" y2="23.9909"> | ||||
| 					<stop  offset="0" style="stop-color:#FFFFFF"/> | ||||
| 					<stop  offset="1" style="stop-color:#FFFFFF"/> | ||||
| 				</linearGradient> | ||||
| 				<circle class="st3" cx="26.1" cy="14.9" r="11.1"/> | ||||
| 				<path class="st4" d="M26.1,26.2c-6.3,0-11.3-5.1-11.3-11.3c0-6.3,5.1-11.3,11.3-11.3c6.3,0,11.3,5.1,11.3,11.3 | ||||
| 					C37.4,21.2,32.3,26.2,26.1,26.2z M26.1,4.1c-5.9,0-10.8,4.8-10.8,10.8c0,5.9,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8 | ||||
| 					C36.9,9,32,4.1,26.1,4.1z"/> | ||||
| 			</g> | ||||
| 			<path class="st5" d="M39.9,9.8c-2.2-5.5-7.6-9.4-13.8-9.4c-7.7,0-14,5.8-14.8,13.3C15.4,14.9,26.3,16.7,39.9,9.8z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| 	<g> | ||||
| 		<g> | ||||
| 			<path class="st6" d="M21.7,8.9v12.1l2.6,2.5V6.9L21.7,8.9z M22.2,20.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 				c0.1,0,0.1,0.1,0.1,0.2S22.3,20,22.2,20.1L22.2,20.1z M22.2,19.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,19.3,22.3,19.4,22.2,19.4L22.2,19.4z M22.2,18.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,18.6,22.3,18.7,22.2,18.7L22.2,18.7z M22.2,18c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.9,22.3,18,22.2,18L22.2,18z M22.2,17.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.2,22.3,17.3,22.2,17.3L22.2,17.3z M22.2,16.7c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.2-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C22.3,16.6,22.3,16.6,22.2,16.7L22.2,16.7z M22.2,16c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.9,22.3,16,22.2,16L22.2,16z M22.2,15.3c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.2,22.3,15.3,22.2,15.3L22.2,15.3z M22.2,14.6c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,14.5,22.3,14.6,22.2,14.6L22.2,14.6z M22.2,13.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.8,22.3,13.9,22.2,13.9L22.2,13.9z M22.2,13.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.2,22.3,13.2,22.2,13.3L22.2,13.3z M22.2,12.6c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,12.5,22.3,12.6,22.2,12.6L22.2,12.6z M22.2,11.9c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.8,22.3,11.9,22.2,11.9L22.2,11.9z M22.2,11.2c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.1,22.3,11.2,22.2,11.2L22.2,11.2z M22.2,10.5c-0.1,0-0.1,0-0.2-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,10.4,22.3,10.5,22.2,10.5L22.2,10.5z M22.6,20.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,20.3,22.7,20.4,22.6,20.4L22.6,20.4z M22.6,19.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,19.6,22.7,19.7,22.6,19.7L22.6,19.7z M22.6,19.1c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.7,19,22.7,19.1,22.6,19.1L22.6,19.1z M22.6,18.4c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,18.3,22.7,18.4,22.6,18.4L22.6,18.4z M22.6,17.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,17.6,22.7,17.6,22.6,17.7L22.6,17.7z M22.6,17c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.9,22.7,17,22.6,17L22.6,17z M22.6,16.3c-0.1,0-0.1-0.1-0.1-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.2,22.7,16.3,22.6,16.3L22.6,16.3z M22.6,15.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,15.6,22.7,15.7,22.6,15.7L22.6,15.7z M22.6,15c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.8,22.7,15,22.6,15L22.6,15z M22.6,14.3c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.2,22.7,14.2,22.6,14.3L22.6,14.3z M22.6,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,13.5,22.7,13.6,22.6,13.6L22.6,13.6z M22.6,12.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.8,22.7,12.9,22.6,12.9L22.6,12.9z M22.6,12.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.2,22.7,12.3,22.6,12.3L22.6,12.3z M22.6,11.5c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,11.4,22.7,11.5,22.6,11.5L22.6,11.5z M22.6,10.9c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.7,22.7,10.8,22.6,10.9L22.6,10.9z M22.6,10.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.1,22.7,10.1,22.6,10.2L22.6,10.2z M23.1,20.6c-0.1,0-0.1-0.1-0.1-0.2c-0.1,0,0-0.1,0.1-0.1s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,20.5,23.2,20.6,23.1,20.6L23.1,20.6z M23.1,20C23,20,23,19.9,23,19.8s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,20,23.1,20L23.1,20z M23.1,19.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,19.2,23.2,19.3,23.1,19.3L23.1,19.3z M23.1,18.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,18.6,23.2,18.6,23.1,18.7L23.1,18.7z M23.1,17.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.8,23.2,17.9,23.1,17.9L23.1,17.9z M23.1,17.2C23,17.2,23,17.1,23,17s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.1,23.2,17.2,23.1,17.2L23.1,17.2z M23.1,16.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,16.5,23.2,16.6,23.1,16.6L23.1,16.6z M23.1,15.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,15.9,23.1,15.9L23.1,15.9z M23.1,15.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,15.2,23.2,15.2,23.1,15.3L23.1,15.3z M23.1,14.5c-0.1,0-0.2,0-0.2-0.1s0-0.2,0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 				c0,0.1-0.1,0.2-0.1,0.2V14.5z M23.1,13.8c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.7,23.2,13.8,23.1,13.8L23.1,13.8z M23.1,13.2c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.1,23.2,13.2,23.1,13.2L23.1,13.2z M23.1,12.5c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,12.4,23.2,12.5,23.1,12.5L23.1,12.5z M23.1,11.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,11.8,23.1,11.9L23.1,11.9z M23.1,11.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,11,23.2,11.1,23.1,11.1L23.1,11.1z M23.1,10.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1l-0.1,0.1V10.4z | ||||
| 				 M23.1,9.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.8z"/> | ||||
| 			<path class="st6" d="M30.8,10.1V7.2l-6.1-0.3v16.5l6.1-0.3V10.7h-5.2v-0.6H30.8z M29.6,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 				c0,0.3-0.2,0.5-0.5,0.5S29.1,9,29.1,8.7c0-0.1,0.1-0.3,0.2-0.4C29.3,8.2,29.5,8.1,29.6,8.1L29.6,8.1z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 8.3 KiB | 
|  | @ -0,0 +1,155 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve" width="40" height="40"> | ||||
| <style type="text/css"> | ||||
| 	.st0{opacity:0.2;fill:#040000;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st3{fill:url(#SVGID_2_);} | ||||
| 	.st4{fill:#939498;} | ||||
| 	.st5{display:none;opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st6{display:none;} | ||||
| 	.st7{display:inline;} | ||||
| 	.st8{fill:#DD4D11;} | ||||
| </style> | ||||
| <g id="单柜体"> | ||||
| 	<g> | ||||
| 		<ellipse class="st0" cx="26.2" cy="49.2" rx="7.3" ry="2.8"/> | ||||
| 		<g> | ||||
| 			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.0795" y1="0.9059" x2="26.0795" y2="46.4513"> | ||||
| 				<stop  offset="0" style="stop-color:#F08856"/> | ||||
| 				<stop  offset="0.2108" style="stop-color:#D24D17"/> | ||||
| 				<stop  offset="0.8" style="stop-color:#D24D17"/> | ||||
| 				<stop  offset="1" style="stop-color:#A53D24"/> | ||||
| 			</linearGradient> | ||||
| 			<path class="st1" d="M41.5,15.4C41.5,6.9,34.6,0,26.1,0c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7 | ||||
| 				c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l2-17.7C36.6,28.5,41.5,22.5,41.5,15.4z"/> | ||||
| 			<path class="st2" d="M25.4,48l-2-17.7C16.8,28.5,12,22.5,12,15.4c0-8.3,6.5-15,14.7-15.4c-0.2,0-0.5,0-0.7,0 | ||||
| 				c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9L24,48c0,1.1,0.9,1.9,1.9,1.9c0.3,0,0.5-0.1,0.7-0.1 | ||||
| 				C25.9,49.5,25.4,48.8,25.4,48z"/> | ||||
| 			<path class="st0" d="M26.1,0.1c-0.2,0-0.5,0-0.7,0C33.5,0.4,40,7,40,15.2c0,7.1-4.9,13.1-11.4,14.9l-2,17.7 | ||||
| 				c0,0.8-0.5,1.5-1.2,1.8c0.2,0.1,0.5,0.1,0.7,0.1c1.1,0,1.9-0.9,1.9-1.9l2-17.7c6.6-1.8,11.4-7.7,11.4-14.9 | ||||
| 				C41.5,6.7,34.6,0.1,26.1,0.1z"/> | ||||
| 			<g> | ||||
| 				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="26.0792" y1="5.4233" x2="26.0792" y2="23.9909"> | ||||
| 					<stop  offset="0" style="stop-color:#FFFFFF"/> | ||||
| 					<stop  offset="1" style="stop-color:#FFFFFF"/> | ||||
| 				</linearGradient> | ||||
| 				<circle class="st3" cx="26.1" cy="14.9" r="11.1"/> | ||||
| 				<path class="st4" d="M26.1,26.2c-6.3,0-11.3-5.1-11.3-11.3c0-6.3,5.1-11.3,11.3-11.3c6.3,0,11.3,5.1,11.3,11.3 | ||||
| 					C37.4,21.2,32.3,26.2,26.1,26.2z M26.1,4.1c-5.9,0-10.8,4.8-10.8,10.8c0,5.9,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8 | ||||
| 					C36.9,9,32,4.1,26.1,4.1z"/> | ||||
| 			</g> | ||||
| 			<path class="st5" d="M39.9,9.8c-2.2-5.5-7.6-9.4-13.8-9.4c-7.7,0-14,5.8-14.8,13.3C15.4,14.9,26.3,16.7,39.9,9.8z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| 	<g class="st6"> | ||||
| 		<g class="st7"> | ||||
| 			<path class="st8" d="M21.7,8.9v12.1l2.6,2.5V6.9L21.7,8.9z M22.2,20.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 				c0.1,0,0.1,0.1,0.1,0.2S22.3,20,22.2,20.1L22.2,20.1z M22.2,19.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,19.3,22.3,19.4,22.2,19.4L22.2,19.4z M22.2,18.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,18.6,22.3,18.7,22.2,18.7L22.2,18.7z M22.2,18c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.9,22.3,18,22.2,18L22.2,18z M22.2,17.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.2,22.3,17.3,22.2,17.3L22.2,17.3z M22.2,16.7c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.2-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C22.3,16.6,22.3,16.6,22.2,16.7L22.2,16.7z M22.2,16c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.9,22.3,16,22.2,16L22.2,16z M22.2,15.3c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.2,22.3,15.3,22.2,15.3L22.2,15.3z M22.2,14.6c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,14.5,22.3,14.6,22.2,14.6L22.2,14.6z M22.2,13.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.8,22.3,13.9,22.2,13.9L22.2,13.9z M22.2,13.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.2,22.3,13.2,22.2,13.3L22.2,13.3z M22.2,12.6c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,12.5,22.3,12.6,22.2,12.6L22.2,12.6z M22.2,11.9c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.8,22.3,11.9,22.2,11.9L22.2,11.9z M22.2,11.2c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.1,22.3,11.2,22.2,11.2L22.2,11.2z M22.2,10.5c-0.1,0-0.1,0-0.2-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,10.4,22.3,10.5,22.2,10.5L22.2,10.5z M22.6,20.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,20.3,22.7,20.4,22.6,20.4L22.6,20.4z M22.6,19.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,19.6,22.7,19.7,22.6,19.7L22.6,19.7z M22.6,19.1c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.7,19,22.7,19.1,22.6,19.1L22.6,19.1z M22.6,18.4c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,18.3,22.7,18.4,22.6,18.4L22.6,18.4z M22.6,17.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,17.6,22.7,17.6,22.6,17.7L22.6,17.7z M22.6,17c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.9,22.7,17,22.6,17L22.6,17z M22.6,16.3c-0.1,0-0.1-0.1-0.1-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.2,22.7,16.3,22.6,16.3L22.6,16.3z M22.6,15.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,15.6,22.7,15.7,22.6,15.7L22.6,15.7z M22.6,15c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.8,22.7,15,22.6,15L22.6,15z M22.6,14.3c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.2,22.7,14.2,22.6,14.3L22.6,14.3z M22.6,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,13.5,22.7,13.6,22.6,13.6L22.6,13.6z M22.6,12.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.8,22.7,12.9,22.6,12.9L22.6,12.9z M22.6,12.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.2,22.7,12.3,22.6,12.3L22.6,12.3z M22.6,11.5c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,11.4,22.7,11.5,22.6,11.5L22.6,11.5z M22.6,10.9c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.7,22.7,10.8,22.6,10.9L22.6,10.9z M22.6,10.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.1,22.7,10.1,22.6,10.2L22.6,10.2z M23.1,20.6c-0.1,0-0.1-0.1-0.1-0.2c-0.1,0,0-0.1,0.1-0.1s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,20.5,23.2,20.6,23.1,20.6L23.1,20.6z M23.1,20C23,20,23,19.9,23,19.8s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,20,23.1,20L23.1,20z M23.1,19.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,19.2,23.2,19.3,23.1,19.3L23.1,19.3z M23.1,18.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,18.6,23.2,18.6,23.1,18.7L23.1,18.7z M23.1,17.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.8,23.2,17.9,23.1,17.9L23.1,17.9z M23.1,17.2C23,17.2,23,17.1,23,17s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.1,23.2,17.2,23.1,17.2L23.1,17.2z M23.1,16.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,16.5,23.2,16.6,23.1,16.6L23.1,16.6z M23.1,15.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,15.9,23.1,15.9L23.1,15.9z M23.1,15.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,15.2,23.2,15.2,23.1,15.3L23.1,15.3z M23.1,14.5c-0.1,0-0.2,0-0.2-0.1s0-0.2,0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 				c0,0.1-0.1,0.2-0.1,0.2V14.5z M23.1,13.8c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.7,23.2,13.8,23.1,13.8L23.1,13.8z M23.1,13.2c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.1,23.2,13.2,23.1,13.2L23.1,13.2z M23.1,12.5c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,12.4,23.2,12.5,23.1,12.5L23.1,12.5z M23.1,11.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,11.8,23.1,11.9L23.1,11.9z M23.1,11.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,11,23.2,11.1,23.1,11.1L23.1,11.1z M23.1,10.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1l-0.1,0.1V10.4z | ||||
| 				 M23.1,9.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.8z"/> | ||||
| 			<path class="st8" d="M30.8,10.1V7.2l-6.1-0.3v16.5l6.1-0.3V10.7h-5.2v-0.6H30.8z M29.6,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 				c0,0.3-0.2,0.5-0.5,0.5S29.1,9,29.1,8.7c0-0.1,0.1-0.3,0.2-0.4C29.3,8.2,29.5,8.1,29.6,8.1L29.6,8.1z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| </g> | ||||
| <g> | ||||
| 	<path class="st8" d="M19.5,8.8v11.7l2.5,2.4v-16L19.5,8.8z M20,19.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,19.6,20.1,19.6,20,19.7L20,19.7z M20,19c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2C20.1,18.9,20.1,19,20,19 | ||||
| 		L20,19z M20,18.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,18.3,20,18.3L20,18.3z M20,17.7 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,17.6,20.1,17.7,20,17.7L20,17.7z M20,17 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,16.9,20.1,17,20,17L20,17z M20,16.4 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2C20.1,16.3,20.1,16.3,20,16.4L20,16.4z M20,15.7 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,15.7,20,15.7L20,15.7z M20,15c-0.1,0-0.2-0.1-0.2-0.1 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,14.9,20.1,15,20,15L20,15z M20,14.4c-0.1,0-0.1-0.1-0.1-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,14.3,20.1,14.4,20,14.4L20,14.4z M20,13.7c-0.1,0-0.1-0.1-0.1-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,13.7,20,13.7L20,13.7z M20,13.1c-0.1-0.1-0.2-0.1-0.2-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,13,20.1,13,20,13.1L20,13.1z M20,12.4c-0.1,0-0.1-0.1-0.1-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,12.3,20.1,12.4,20,12.4L20,12.4z M20,11.7c-0.1,0-0.1-0.1-0.1-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,11.7,20,11.7L20,11.7z M20,11.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.1,11,20.1,11.1,20,11.1L20,11.1z M20,10.4c-0.1,0-0.1,0-0.1-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.1,10.3,20.1,10.4,20,10.4L20,10.4z M20.5,20c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,19.9,20.5,20,20.5,20L20.5,20z M20.5,19.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,19.3,20.5,19.3L20.5,19.3z M20.5,18.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,18.6,20.5,18.7,20.5,18.7L20.5,18.7z M20.5,18c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,17.9,20.5,18,20.5,18L20.5,18z M20.5,17.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,17.3,20.5,17.3,20.5,17.4L20.5,17.4z M20.5,16.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,16.6,20.5,16.7,20.5,16.7L20.5,16.7z M20.5,16c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,15.9,20.5,16,20.5,16L20.5,16z M20.5,15.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,15.4,20.5,15.4L20.5,15.4z M20.5,14.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,14.7,20.5,14.7L20.5,14.7z M20.5,14.1c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,14,20.5,14,20.5,14.1L20.5,14.1z M20.5,13.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,13.3,20.5,13.4,20.5,13.4L20.5,13.4z M20.5,12.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,12.7,20.5,12.7L20.5,12.7z M20.5,12.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,12,20.5,12.1,20.5,12.1L20.5,12.1z M20.5,11.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,11.3,20.5,11.4,20.5,11.4L20.5,11.4z M20.5,10.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.6,10.6,20.5,10.7,20.5,10.8L20.5,10.8z M20.5,10.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.6,10,20.5,10,20.5,10.1L20.5,10.1z M20.9,20.2c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,20.1,21,20.2,20.9,20.2L20.9,20.2z M20.9,19.6c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,19.5,21,19.6,20.9,19.6L20.9,19.6z M20.9,18.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,18.8,21,18.9,20.9,18.9L20.9,18.9z M20.9,18.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,18.2,21,18.2,20.9,18.3L20.9,18.3z M20.9,17.6c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,17.5,21,17.6,20.9,17.6L20.9,17.6z M20.9,16.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,16.8,21,16.9,20.9,16.9L20.9,16.9z M20.9,16.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2 | ||||
| 		s0.2,0.1,0.2,0.2C21.1,16.2,21,16.3,20.9,16.3L20.9,16.3z M20.9,15.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S21,15.6,20.9,15.6L20.9,15.6z M20.9,15c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,14.9,21,14.9,20.9,15L20.9,15z M20.9,14.3c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.2,0.1-0.2v-0.1l0.1-0.1 | ||||
| 		c0.1,0,0.1,0,0.1,0.1V14c0,0.1-0.1,0.2-0.1,0.2V14.3z M20.9,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,13.5,21,13.6,20.9,13.6L20.9,13.6z M20.9,13c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,12.9,21,13,20.9,13L20.9,13z M20.9,12.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,12.2,21,12.3,20.9,12.3L20.9,12.3z M20.9,11.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,11.6,21,11.6,20.9,11.7L20.9,11.7z M20.9,11c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,10.9,21,11,20.9,11L20.9,11z M20.9,10.3c-0.1,0-0.2-0.1-0.1-0.2V10l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 		l-0.1,0.1V10.3z M20.9,9.7c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.7z"/> | ||||
| 	<path class="st8" d="M27.8,10.3v-3l-5.3-0.4v16l5.3-0.3V10.8l-4.5-0.2V10L27.8,10.3z M26.7,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 		c0,0.3-0.2,0.5-0.5,0.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.1,0.1-0.3,0.2-0.4C26.4,8.2,26.5,8.1,26.7,8.1L26.7,8.1z"/> | ||||
| 	<path class="st8" d="M31.9,10.5v0.6l-3.7-0.2v11.7l4.3-0.3V7.5l-4.3-0.3v3L31.9,10.5z M29.3,8.2c0.1,0,0.3,0.1,0.4,0.2 | ||||
| 		c0.1,0.1,0.2,0.2,0.2,0.4c0,0.3-0.2,0.5-0.5,0.5s-0.5-0.2-0.5-0.5C28.8,8.5,29,8.2,29.3,8.2L29.3,8.2z"/> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 14 KiB | 
|  | @ -0,0 +1,98 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve" width="40" height="40"> | ||||
| <style type="text/css"> | ||||
| 	.st0{opacity:0.2;fill:#040000;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st3{fill:url(#SVGID_2_);} | ||||
| 	.st4{fill:#939498;} | ||||
| 	.st5{display:none;opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st6{fill:#E99F28;} | ||||
| </style> | ||||
| <g id="单柜体"> | ||||
| 	<g> | ||||
| 		<ellipse class="st0" cx="26.2" cy="49.3" rx="7.3" ry="2.8"/> | ||||
| 		<g> | ||||
| 			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.0795" y1="0.9854" x2="26.0795" y2="46.5307"> | ||||
| 				<stop  offset="0" style="stop-color:#F2E636"/> | ||||
| 				<stop  offset="0.1381" style="stop-color:#ECA621"/> | ||||
| 				<stop  offset="0.7002" style="stop-color:#ECA621"/> | ||||
| 				<stop  offset="1" style="stop-color:#D67A17"/> | ||||
| 			</linearGradient> | ||||
| 			<path class="st1" d="M41.5,15.5c0-8.5-6.9-15.4-15.4-15.4c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7 | ||||
| 				c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l2-17.7C36.6,28.6,41.5,22.6,41.5,15.5z"/> | ||||
| 			<path class="st2" d="M25.4,48.1l-2-17.7C16.8,28.6,12,22.6,12,15.5c0-8.3,6.5-15,14.7-15.4c-0.2,0-0.5,0-0.7,0 | ||||
| 				c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7c0,1.1,0.9,1.9,1.9,1.9c0.3,0,0.5-0.1,0.7-0.1 | ||||
| 				C25.9,49.6,25.4,48.9,25.4,48.1z"/> | ||||
| 			<path class="st0" d="M26.1,0.1c-0.2,0-0.5,0-0.7,0C33.5,0.5,40,7.1,40,15.3c0,7.1-4.9,13.1-11.4,14.9l-2,17.7 | ||||
| 				c0,0.8-0.5,1.5-1.2,1.8c0.2,0.1,0.5,0.1,0.7,0.1c1.1,0,1.9-0.9,1.9-1.9l2-17.7c6.6-1.8,11.4-7.7,11.4-14.9 | ||||
| 				C41.5,6.8,34.6,0.1,26.1,0.1z"/> | ||||
| 			<g> | ||||
| 				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="26.0792" y1="5.5027" x2="26.0792" y2="24.0703"> | ||||
| 					<stop  offset="0" style="stop-color:#FFFFFF"/> | ||||
| 					<stop  offset="1" style="stop-color:#FFFFFF"/> | ||||
| 				</linearGradient> | ||||
| 				<circle class="st3" cx="26.1" cy="15" r="11.1"/> | ||||
| 				<path class="st4" d="M26.1,26.3c-6.3,0-11.3-5.1-11.3-11.3c0-6.3,5.1-11.3,11.3-11.3c6.3,0,11.3,5.1,11.3,11.3 | ||||
| 					C37.4,21.2,32.3,26.3,26.1,26.3z M26.1,4.2C20.1,4.2,15.3,9,15.3,15c0,5.9,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8 | ||||
| 					C36.9,9,32,4.2,26.1,4.2z"/> | ||||
| 			</g> | ||||
| 			<path class="st5" d="M39.9,9.9c-2.2-5.5-7.6-9.4-13.8-9.4c-7.7,0-14,5.8-14.8,13.3C15.4,15,26.3,16.8,39.9,9.9z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| 	<g> | ||||
| 		<path class="st6" d="M21.7,8.9V21l2.6,2.5V7L21.7,8.9z M22.2,20.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,20.1,22.3,20.1,22.2,20.2L22.2,20.2z M22.2,19.5c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.3,19.4,22.3,19.5,22.2,19.5L22.2,19.5z M22.2,18.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,18.6,22.3,18.7,22.2,18.7L22.2,18.7z M22.2,18.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,18,22.3,18.1,22.2,18.1L22.2,18.1z M22.2,17.4c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,17.3,22.3,17.4,22.2,17.4L22.2,17.4z M22.2,16.8c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.2-0.2 | ||||
| 			s0.1,0.1,0.1,0.2C22.3,16.7,22.3,16.7,22.2,16.8L22.2,16.8z M22.2,16.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,16,22.3,16.1,22.2,16.1L22.2,16.1z M22.2,15.3c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,15.2,22.3,15.3,22.2,15.3L22.2,15.3z M22.2,14.7c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,14.6,22.3,14.7,22.2,14.7L22.2,14.7z M22.2,14c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,13.9,22.3,14,22.2,14L22.2,14z M22.2,13.4c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,13.3,22.3,13.3,22.2,13.4L22.2,13.4z M22.2,12.7c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,12.6,22.3,12.7,22.2,12.7L22.2,12.7z M22.2,11.9c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,11.8,22.3,11.9,22.2,11.9L22.2,11.9z M22.2,11.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,11.2,22.3,11.3,22.2,11.3L22.2,11.3z M22.2,10.6c-0.1,0-0.1,0-0.2-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.3,10.5,22.3,10.6,22.2,10.6L22.2,10.6z M22.6,20.5c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,20.4,22.7,20.5,22.6,20.5L22.6,20.5z M22.6,19.8c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,19.7,22.7,19.8,22.6,19.8L22.6,19.8z M22.6,19.2c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2S22.7,19.2,22.6,19.2L22.6,19.2z M22.6,18.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,18.3,22.7,18.4,22.6,18.4L22.6,18.4z M22.6,17.8c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,17.7,22.7,17.7,22.6,17.8L22.6,17.8z M22.6,17.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,17,22.7,17.1,22.6,17.1L22.6,17.1z M22.6,16.4c-0.1,0-0.1-0.1-0.1-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,16.3,22.7,16.4,22.6,16.4L22.6,16.4z M22.6,15.8c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,15.6,22.7,15.8,22.6,15.8L22.6,15.8z M22.6,15c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,14.9,22.7,15,22.6,15L22.6,15z M22.6,14.4c-0.1-0.1-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,14.3,22.7,14.3,22.6,14.4L22.6,14.4z M22.6,13.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,13.6,22.7,13.7,22.6,13.7L22.6,13.7z M22.6,13c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,12.9,22.7,13,22.6,13L22.6,13z M22.6,12.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,12.2,22.7,12.4,22.6,12.4L22.6,12.4z M22.6,11.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,11.5,22.7,11.6,22.6,11.6L22.6,11.6z M22.6,11c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.7,10.8,22.7,10.9,22.6,11L22.6,11z M22.6,10.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.7,10.2,22.7,10.2,22.6,10.3L22.6,10.3z M23.1,20.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1,0,0-0.1,0.1-0.1 | ||||
| 			s0.1,0.1,0.1,0.2C23.2,20.6,23.2,20.7,23.1,20.7L23.1,20.7z M23.1,20.1C23,20.1,23,20,23,19.9c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2S23.2,20.1,23.1,20.1L23.1,20.1z M23.1,19.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C23.2,19.3,23.2,19.4,23.1,19.4L23.1,19.4z M23.1,18.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.2,0.1-0.2 | ||||
| 			s0.1,0.1,0.1,0.2C23.2,18.6,23.2,18.6,23.1,18.7L23.1,18.7z M23.1,18C23,18,23,17.9,23,17.8s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2S23.2,18,23.1,18L23.1,18z M23.1,17.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			S23.2,17.3,23.1,17.3L23.1,17.3z M23.1,16.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 			C23.2,16.6,23.2,16.7,23.1,16.7L23.1,16.7z M23.1,16C23,16,23,15.9,23,15.8c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			S23.2,16,23.1,16L23.1,16z M23.1,15.3c-0.1-0.1-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,15.2,23.2,15.2,23.1,15.3L23.1,15.3z M23.1,14.6c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.2,0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1 | ||||
| 			v0.1c0,0.1-0.1,0.2-0.1,0.2V14.6z M23.1,13.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,13.8,23.2,13.9,23.1,13.9L23.1,13.9z M23.1,13.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,13.2,23.2,13.3,23.1,13.3L23.1,13.3z M23.1,12.6c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			S23.2,12.6,23.1,12.6L23.1,12.6z M23.1,11.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,11.8,23.2,11.8,23.1,11.9L23.1,11.9z M23.1,11.2c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,11.1,23.2,11.2,23.1,11.2L23.1,11.2z M23.1,10.5c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1l-0.1,0.1V10.5z | ||||
| 			 M23.1,9.9c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.9z"/> | ||||
| 		<path class="st6" d="M30.8,10.2V7.3L24.7,7v16.5l6.1-0.3V10.8h-5.2v-0.6H30.8z M29.6,8.2c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 			c0,0.3-0.2,0.5-0.5,0.5s-0.5-0.2-0.5-0.5c0-0.1,0.1-0.3,0.2-0.4C29.3,8.3,29.5,8.2,29.6,8.2L29.6,8.2z"/> | ||||
| 	</g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 8.2 KiB | 
|  | @ -0,0 +1,153 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve" width="40" height="40"> | ||||
| <style type="text/css"> | ||||
| 	.st0{opacity:0.2;fill:#040000;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st3{fill:url(#SVGID_2_);} | ||||
| 	.st4{fill:#939498;} | ||||
| 	.st5{display:none;opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st6{display:none;} | ||||
| 	.st7{display:inline;fill:#E99F28;} | ||||
| 	.st8{fill:#E99F28;} | ||||
| </style> | ||||
| <g id="单柜体"> | ||||
| 	<g> | ||||
| 		<ellipse class="st0" cx="26.2" cy="49.3" rx="7.3" ry="2.8"/> | ||||
| 		<g> | ||||
| 			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.0795" y1="0.9854" x2="26.0795" y2="46.5307"> | ||||
| 				<stop  offset="0" style="stop-color:#F2E636"/> | ||||
| 				<stop  offset="0.1381" style="stop-color:#ECA621"/> | ||||
| 				<stop  offset="0.7002" style="stop-color:#ECA621"/> | ||||
| 				<stop  offset="1" style="stop-color:#D67A17"/> | ||||
| 			</linearGradient> | ||||
| 			<path class="st1" d="M41.5,15.5c0-8.5-6.9-15.4-15.4-15.4c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7 | ||||
| 				c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l2-17.7C36.6,28.6,41.5,22.6,41.5,15.5z"/> | ||||
| 			<path class="st2" d="M25.4,48.1l-2-17.7C16.8,28.6,12,22.6,12,15.5c0-8.3,6.5-15,14.7-15.4c-0.2,0-0.5,0-0.7,0 | ||||
| 				c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7c0,1.1,0.9,1.9,1.9,1.9c0.3,0,0.5-0.1,0.7-0.1 | ||||
| 				C25.9,49.6,25.4,48.9,25.4,48.1z"/> | ||||
| 			<path class="st0" d="M26.1,0.1c-0.2,0-0.5,0-0.7,0C33.5,0.5,40,7.1,40,15.3c0,7.1-4.9,13.1-11.4,14.9l-2,17.7 | ||||
| 				c0,0.8-0.5,1.5-1.2,1.8c0.2,0.1,0.5,0.1,0.7,0.1c1.1,0,1.9-0.9,1.9-1.9l2-17.7c6.6-1.8,11.4-7.7,11.4-14.9 | ||||
| 				C41.5,6.8,34.6,0.1,26.1,0.1z"/> | ||||
| 			<g> | ||||
| 				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="26.0792" y1="5.5027" x2="26.0792" y2="24.0703"> | ||||
| 					<stop  offset="0" style="stop-color:#FFFFFF"/> | ||||
| 					<stop  offset="1" style="stop-color:#FFFFFF"/> | ||||
| 				</linearGradient> | ||||
| 				<circle class="st3" cx="26.1" cy="15" r="11.1"/> | ||||
| 				<path class="st4" d="M26.1,26.3c-6.3,0-11.3-5.1-11.3-11.3c0-6.3,5.1-11.3,11.3-11.3c6.3,0,11.3,5.1,11.3,11.3 | ||||
| 					C37.4,21.2,32.3,26.3,26.1,26.3z M26.1,4.2C20.1,4.2,15.3,9,15.3,15c0,5.9,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8 | ||||
| 					C36.9,9,32,4.2,26.1,4.2z"/> | ||||
| 			</g> | ||||
| 			<path class="st5" d="M39.9,9.9c-2.2-5.5-7.6-9.4-13.8-9.4c-7.7,0-14,5.8-14.8,13.3C15.4,15,26.3,16.8,39.9,9.9z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| 	<g class="st6"> | ||||
| 		<path class="st7" d="M21.7,8.9V21l2.6,2.5V7L21.7,8.9z M22.2,20.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,20.1,22.3,20.1,22.2,20.2L22.2,20.2z M22.2,19.5c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.3,19.4,22.3,19.5,22.2,19.5L22.2,19.5z M22.2,18.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,18.6,22.3,18.7,22.2,18.7L22.2,18.7z M22.2,18.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,18,22.3,18.1,22.2,18.1L22.2,18.1z M22.2,17.4c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,17.3,22.3,17.4,22.2,17.4L22.2,17.4z M22.2,16.8c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.2-0.2 | ||||
| 			s0.1,0.1,0.1,0.2C22.3,16.7,22.3,16.7,22.2,16.8L22.2,16.8z M22.2,16.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,16,22.3,16.1,22.2,16.1L22.2,16.1z M22.2,15.3c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,15.2,22.3,15.3,22.2,15.3L22.2,15.3z M22.2,14.7c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,14.6,22.3,14.7,22.2,14.7L22.2,14.7z M22.2,14c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,13.9,22.3,14,22.2,14L22.2,14z M22.2,13.4c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,13.3,22.3,13.3,22.2,13.4L22.2,13.4z M22.2,12.7c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,12.6,22.3,12.7,22.2,12.7L22.2,12.7z M22.2,11.9c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,11.8,22.3,11.9,22.2,11.9L22.2,11.9z M22.2,11.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.3,11.2,22.3,11.3,22.2,11.3L22.2,11.3z M22.2,10.6c-0.1,0-0.1,0-0.2-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.3,10.5,22.3,10.6,22.2,10.6L22.2,10.6z M22.6,20.5c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,20.4,22.7,20.5,22.6,20.5L22.6,20.5z M22.6,19.8c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,19.7,22.7,19.8,22.6,19.8L22.6,19.8z M22.6,19.2c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2S22.7,19.2,22.6,19.2L22.6,19.2z M22.6,18.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,18.3,22.7,18.4,22.6,18.4L22.6,18.4z M22.6,17.8c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,17.7,22.7,17.7,22.6,17.8L22.6,17.8z M22.6,17.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,17,22.7,17.1,22.6,17.1L22.6,17.1z M22.6,16.4c-0.1,0-0.1-0.1-0.1-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,16.3,22.7,16.4,22.6,16.4L22.6,16.4z M22.6,15.8c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,15.6,22.7,15.8,22.6,15.8L22.6,15.8z M22.6,15c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,14.9,22.7,15,22.6,15L22.6,15z M22.6,14.4c-0.1-0.1-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,14.3,22.7,14.3,22.6,14.4L22.6,14.4z M22.6,13.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,13.6,22.7,13.7,22.6,13.7L22.6,13.7z M22.6,13c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,12.9,22.7,13,22.6,13L22.6,13z M22.6,12.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,12.2,22.7,12.4,22.6,12.4L22.6,12.4z M22.6,11.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C22.8,11.5,22.7,11.6,22.6,11.6L22.6,11.6z M22.6,11c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.7,10.8,22.7,10.9,22.6,11L22.6,11z M22.6,10.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.2,0.1,0.1,0.2C22.7,10.2,22.7,10.2,22.6,10.3L22.6,10.3z M23.1,20.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1,0,0-0.1,0.1-0.1 | ||||
| 			s0.1,0.1,0.1,0.2C23.2,20.6,23.2,20.7,23.1,20.7L23.1,20.7z M23.1,20.1C23,20.1,23,20,23,19.9c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2S23.2,20.1,23.1,20.1L23.1,20.1z M23.1,19.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2C23.2,19.3,23.2,19.4,23.1,19.4L23.1,19.4z M23.1,18.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.2,0.1-0.2 | ||||
| 			s0.1,0.1,0.1,0.2C23.2,18.6,23.2,18.6,23.1,18.7L23.1,18.7z M23.1,18C23,18,23,17.9,23,17.8s0.1-0.2,0.1-0.2 | ||||
| 			c0.1,0,0.1,0.1,0.1,0.2S23.2,18,23.1,18L23.1,18z M23.1,17.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			S23.2,17.3,23.1,17.3L23.1,17.3z M23.1,16.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 			C23.2,16.6,23.2,16.7,23.1,16.7L23.1,16.7z M23.1,16C23,16,23,15.9,23,15.8c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			S23.2,16,23.1,16L23.1,16z M23.1,15.3c-0.1-0.1-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,15.2,23.2,15.2,23.1,15.3L23.1,15.3z M23.1,14.6c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.2,0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1 | ||||
| 			v0.1c0,0.1-0.1,0.2-0.1,0.2V14.6z M23.1,13.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,13.8,23.2,13.9,23.1,13.9L23.1,13.9z M23.1,13.3c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,13.2,23.2,13.3,23.1,13.3L23.1,13.3z M23.1,12.6c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			S23.2,12.6,23.1,12.6L23.1,12.6z M23.1,11.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,11.8,23.2,11.8,23.1,11.9L23.1,11.9z M23.1,11.2c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 			C23.2,11.1,23.2,11.2,23.1,11.2L23.1,11.2z M23.1,10.5c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1l-0.1,0.1V10.5z | ||||
| 			 M23.1,9.9c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.9z"/> | ||||
| 		<path class="st7" d="M30.8,10.2V7.3L24.7,7v16.5l6.1-0.3V10.8h-5.2v-0.6H30.8z M29.6,8.2c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 			c0,0.3-0.2,0.5-0.5,0.5s-0.5-0.2-0.5-0.5c0-0.1,0.1-0.3,0.2-0.4C29.3,8.3,29.5,8.2,29.6,8.2L29.6,8.2z"/> | ||||
| 	</g> | ||||
| </g> | ||||
| <g> | ||||
| 	<path class="st8" d="M19.5,8.8v11.7l2.5,2.4v-16L19.5,8.8z M20,19.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.1,19.6,20.1,19.6,20,19.7L20,19.7z M20,19c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 		C20.1,18.9,20.1,19,20,19L20,19z M20,18.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,18.2,20.1,18.3,20,18.3L20,18.3z M20,17.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,17.6,20.1,17.7,20,17.7L20,17.7z M20,17c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,16.9,20.1,17,20,17L20,17z M20,16.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 		C20.1,16.3,20.1,16.3,20,16.4L20,16.4z M20,15.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		S20.1,15.7,20,15.7L20,15.7z M20,15c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,14.9,20.1,15,20,15 | ||||
| 		L20,15z M20,14.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,14.3,20.1,14.4,20,14.4L20,14.4z | ||||
| 		 M20,13.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,13.7,20,13.7L20,13.7z M20,13.1 | ||||
| 		c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,13,20.1,13,20,13.1L20,13.1z M20,12.4 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,12.3,20.1,12.4,20,12.4L20,12.4z M20,11.7 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,11.7,20,11.7L20,11.7z M20,11.1c-0.1,0-0.2-0.1-0.2-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,11,20.1,11.1,20,11.1L20,11.1z M20,10.4c-0.1,0-0.1,0-0.1-0.1v-0.1 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2C20.1,10.3,20.1,10.4,20,10.4L20,10.4z M20.5,20c-0.1,0-0.1-0.1-0.1-0.2 | ||||
| 		s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.6,19.9,20.5,20,20.5,20L20.5,20z M20.5,19.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,19.2,20.5,19.3,20.5,19.3L20.5,19.3z M20.5,18.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,18.6,20.5,18.7,20.5,18.7L20.5,18.7z M20.5,18c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,17.9,20.5,18,20.5,18L20.5,18z M20.5,17.4c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,17.3,20.5,17.3,20.5,17.4L20.5,17.4z M20.5,16.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,16.6,20.5,16.7,20.5,16.7L20.5,16.7z M20.5,16c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,15.9,20.5,16,20.5,16L20.5,16z M20.5,15.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,15.4,20.5,15.4L20.5,15.4z M20.5,14.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,14.7,20.5,14.7L20.5,14.7z M20.5,14.1c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,14,20.5,14,20.5,14.1L20.5,14.1z M20.5,13.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,13.3,20.5,13.4,20.5,13.4L20.5,13.4z M20.5,12.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,12.7,20.5,12.7L20.5,12.7z M20.5,12.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,12,20.5,12.1,20.5,12.1L20.5,12.1z M20.5,11.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,11.3,20.5,11.4,20.5,11.4L20.5,11.4z M20.5,10.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.6,10.6,20.5,10.7,20.5,10.8L20.5,10.8z M20.5,10.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.6,10,20.5,10,20.5,10.1L20.5,10.1z M20.9,20.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,20.1,21,20.2,20.9,20.2L20.9,20.2z M20.9,19.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,19.5,21,19.6,20.9,19.6L20.9,19.6z M20.9,18.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,18.8,21,18.9,20.9,18.9L20.9,18.9z M20.9,18.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,18.2,21,18.2,20.9,18.3L20.9,18.3z M20.9,17.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,17.5,21,17.6,20.9,17.6L20.9,17.6z M20.9,16.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,16.8,21,16.9,20.9,16.9L20.9,16.9z M20.9,16.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2 | ||||
| 		s0.2,0.1,0.2,0.2C21.1,16.2,21,16.3,20.9,16.3L20.9,16.3z M20.9,15.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S21,15.6,20.9,15.6L20.9,15.6z M20.9,15c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,14.9,21,14.9,20.9,15L20.9,15z M20.9,14.3c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.2,0.1-0.2v-0.1l0.1-0.1 | ||||
| 		c0.1,0,0.1,0,0.1,0.1V14c0,0.1-0.1,0.2-0.1,0.2V14.3z M20.9,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,13.5,21,13.6,20.9,13.6L20.9,13.6z M20.9,13c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,12.9,21,13,20.9,13L20.9,13z M20.9,12.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,12.2,21,12.3,20.9,12.3L20.9,12.3z M20.9,11.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,11.6,21,11.6,20.9,11.7L20.9,11.7z M20.9,11c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,10.9,21,11,20.9,11L20.9,11z M20.9,10.3c-0.1,0-0.2-0.1-0.1-0.2V10l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 		l-0.1,0.1V10.3z M20.9,9.7c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.7z"/> | ||||
| 	<path class="st8" d="M27.8,10.3v-3l-5.3-0.4v16l5.3-0.3V10.8l-4.5-0.2V10L27.8,10.3z M26.7,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 		c0,0.3-0.2,0.5-0.5,0.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.1,0.1-0.3,0.2-0.4C26.4,8.2,26.5,8.1,26.7,8.1L26.7,8.1z"/> | ||||
| 	<path class="st8" d="M31.9,10.5v0.6l-3.7-0.2v11.7l4.3-0.3V7.5l-4.3-0.3v3L31.9,10.5z M29.3,8.2c0.1,0,0.3,0.1,0.4,0.2 | ||||
| 		c0.1,0.1,0.2,0.2,0.2,0.4c0,0.3-0.2,0.5-0.5,0.5s-0.5-0.2-0.5-0.5C28.8,8.5,29,8.2,29.3,8.2L29.3,8.2z"/> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 14 KiB | 
|  | @ -0,0 +1,93 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve" width="40" height="40"> | ||||
| <style type="text/css"> | ||||
| 	.st0{opacity:0.2;fill:#040000;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st3{fill:url(#SVGID_2_);} | ||||
| 	.st4{fill:#939498;} | ||||
| 	.st5{fill:#69B82D;} | ||||
| </style> | ||||
| <g id="单柜体"> | ||||
| 	<ellipse class="st0" cx="26.2" cy="49.2" rx="7.3" ry="2.8"/> | ||||
| 	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.0795" y1="0.9059" x2="26.0795" y2="46.4513"> | ||||
| 		<stop  offset="0" style="stop-color:#94C865"/> | ||||
| 		<stop  offset="0.1135" style="stop-color:#51A336"/> | ||||
| 		<stop  offset="0.8" style="stop-color:#51A336"/> | ||||
| 		<stop  offset="1" style="stop-color:#346E35"/> | ||||
| 	</linearGradient> | ||||
| 	<path class="st1" d="M41.5,15.4C41.5,6.9,34.6,0,26.1,0c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7 | ||||
| 		c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l2-17.7C36.6,28.5,41.5,22.5,41.5,15.4z"/> | ||||
| 	<path class="st2" d="M25.4,48l-2-17.7C16.8,28.5,12,22.5,12,15.4c0-8.3,6.5-15,14.7-15.4c-0.2,0-0.5,0-0.7,0 | ||||
| 		c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9L24,48c0,1.1,0.9,1.9,1.9,1.9c0.3,0,0.5-0.1,0.7-0.1 | ||||
| 		C25.9,49.5,25.4,48.8,25.4,48z"/> | ||||
| 	<path class="st0" d="M26.1,0c-0.2,0-0.5,0-0.7,0C33.5,0.4,40,7,40,15.2c0,7.1-4.9,13.1-11.4,14.9l-2,17.7c0,0.8-0.5,1.5-1.2,1.8 | ||||
| 		c0.2,0.1,0.5,0.1,0.7,0.1c1.1,0,1.9-0.9,1.9-1.9l2-17.7c6.6-1.8,11.4-7.7,11.4-14.9C41.5,6.7,34.6,0,26.1,0z"/> | ||||
| 	<g> | ||||
| 		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="26.0792" y1="5.4233" x2="26.0792" y2="23.9909"> | ||||
| 			<stop  offset="0" style="stop-color:#FFFFFF"/> | ||||
| 			<stop  offset="1" style="stop-color:#FFFFFF"/> | ||||
| 		</linearGradient> | ||||
| 		<circle class="st3" cx="26.1" cy="14.9" r="11.1"/> | ||||
| 		<path class="st4" d="M26.1,26.2c-6.3,0-11.3-5.1-11.3-11.3c0-6.3,5.1-11.3,11.3-11.3c6.3,0,11.3,5.1,11.3,11.3 | ||||
| 			C37.4,21.2,32.3,26.2,26.1,26.2z M26.1,4.1c-5.9,0-10.8,4.8-10.8,10.8c0,5.9,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8 | ||||
| 			C36.9,9,32,4.1,26.1,4.1z"/> | ||||
| 	</g> | ||||
| 	<g> | ||||
| 		<g> | ||||
| 			<path class="st5" d="M21.7,8.9v12.1l2.6,2.5V6.9L21.7,8.9z M22.2,20.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 				c0.1,0,0.1,0.1,0.1,0.2S22.3,20,22.2,20.1L22.2,20.1z M22.2,19.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,19.3,22.3,19.4,22.2,19.4L22.2,19.4z M22.2,18.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,18.6,22.3,18.7,22.2,18.7L22.2,18.7z M22.2,18c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.9,22.3,18,22.2,18L22.2,18z M22.2,17.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.2,22.3,17.3,22.2,17.3L22.2,17.3z M22.2,16.7c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.2-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C22.3,16.6,22.3,16.6,22.2,16.7L22.2,16.7z M22.2,16c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.9,22.3,16,22.2,16L22.2,16z M22.2,15.3c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.2,22.3,15.3,22.2,15.3L22.2,15.3z M22.2,14.6c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,14.5,22.3,14.6,22.2,14.6L22.2,14.6z M22.2,13.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.8,22.3,13.9,22.2,13.9L22.2,13.9z M22.2,13.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.2,22.3,13.2,22.2,13.3L22.2,13.3z M22.2,12.6c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,12.5,22.3,12.6,22.2,12.6L22.2,12.6z M22.2,11.9c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.8,22.3,11.9,22.2,11.9L22.2,11.9z M22.2,11.2c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.1,22.3,11.2,22.2,11.2L22.2,11.2z M22.2,10.5c-0.1,0-0.1,0-0.2-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,10.4,22.3,10.5,22.2,10.5L22.2,10.5z M22.6,20.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,20.3,22.7,20.4,22.6,20.4L22.6,20.4z M22.6,19.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,19.6,22.7,19.7,22.6,19.7L22.6,19.7z M22.6,19.1c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.7,19,22.7,19.1,22.6,19.1L22.6,19.1z M22.6,18.4c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,18.3,22.7,18.4,22.6,18.4L22.6,18.4z M22.6,17.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,17.6,22.7,17.6,22.6,17.7L22.6,17.7z M22.6,17c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.9,22.7,17,22.6,17L22.6,17z M22.6,16.3c-0.1,0-0.1-0.1-0.1-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.2,22.7,16.3,22.6,16.3L22.6,16.3z M22.6,15.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,15.6,22.7,15.7,22.6,15.7L22.6,15.7z M22.6,15c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.8,22.7,15,22.6,15L22.6,15z M22.6,14.3c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.2,22.7,14.2,22.6,14.3L22.6,14.3z M22.6,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,13.5,22.7,13.6,22.6,13.6L22.6,13.6z M22.6,12.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.8,22.7,12.9,22.6,12.9L22.6,12.9z M22.6,12.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.2,22.7,12.3,22.6,12.3L22.6,12.3z M22.6,11.5c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,11.4,22.7,11.5,22.6,11.5L22.6,11.5z M22.6,10.9c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.7,22.7,10.8,22.6,10.9L22.6,10.9z M22.6,10.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.1,22.7,10.1,22.6,10.2L22.6,10.2z M23.1,20.6c-0.1,0-0.1-0.1-0.1-0.2c-0.1,0,0-0.1,0.1-0.1s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,20.5,23.2,20.6,23.1,20.6L23.1,20.6z M23.1,20C23,20,23,19.9,23,19.8s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,20,23.1,20L23.1,20z M23.1,19.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,19.2,23.2,19.3,23.1,19.3L23.1,19.3z M23.1,18.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,18.6,23.2,18.6,23.1,18.7L23.1,18.7z M23.1,17.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.8,23.2,17.9,23.1,17.9L23.1,17.9z M23.1,17.2C23,17.2,23,17.1,23,17s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.1,23.2,17.2,23.1,17.2L23.1,17.2z M23.1,16.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,16.5,23.2,16.6,23.1,16.6L23.1,16.6z M23.1,15.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,15.9,23.1,15.9L23.1,15.9z M23.1,15.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,15.2,23.2,15.2,23.1,15.3L23.1,15.3z M23.1,14.5c-0.1,0-0.2,0-0.2-0.1s0-0.2,0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 				c0,0.1-0.1,0.2-0.1,0.2V14.5z M23.1,13.8c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.7,23.2,13.8,23.1,13.8L23.1,13.8z M23.1,13.2c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.1,23.2,13.2,23.1,13.2L23.1,13.2z M23.1,12.5c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,12.4,23.2,12.5,23.1,12.5L23.1,12.5z M23.1,11.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,11.8,23.1,11.9L23.1,11.9z M23.1,11.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,11,23.2,11.1,23.1,11.1L23.1,11.1z M23.1,10.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1l-0.1,0.1V10.4z | ||||
| 				 M23.1,9.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.8z"/> | ||||
| 			<path class="st5" d="M30.8,10.1V7.2l-6.1-0.3v16.5l6.1-0.3V10.7h-5.2v-0.6H30.8z M29.6,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 				c0,0.3-0.2,0.5-0.5,0.5S29.1,9,29.1,8.7c0-0.1,0.1-0.3,0.2-0.4C29.3,8.2,29.5,8.1,29.6,8.1L29.6,8.1z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 8.0 KiB | 
|  | @ -0,0 +1,148 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 52 52" style="enable-background:new 0 0 52 52;" xml:space="preserve" width="40" height="40"> | ||||
| <style type="text/css"> | ||||
| 	.st0{opacity:0.2;fill:#040000;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{opacity:0.3;fill:#FFFFFF;} | ||||
| 	.st3{fill:url(#SVGID_2_);} | ||||
| 	.st4{fill:#939498;} | ||||
| 	.st5{display:none;} | ||||
| 	.st6{display:inline;} | ||||
| 	.st7{fill:#69B82D;} | ||||
| </style> | ||||
| <g id="单柜体"> | ||||
| 	<ellipse class="st0" cx="26.2" cy="49.2" rx="7.3" ry="2.8"/> | ||||
| 	<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="26.0795" y1="0.9059" x2="26.0795" y2="46.4513"> | ||||
| 		<stop  offset="0" style="stop-color:#94C865"/> | ||||
| 		<stop  offset="0.1135" style="stop-color:#51A336"/> | ||||
| 		<stop  offset="0.8" style="stop-color:#51A336"/> | ||||
| 		<stop  offset="1" style="stop-color:#346E35"/> | ||||
| 	</linearGradient> | ||||
| 	<path class="st1" d="M41.5,15.4C41.5,6.9,34.6,0,26.1,0c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9l2,17.7 | ||||
| 		c0,1.1,0.9,1.9,1.9,1.9c1.1,0,1.9-0.9,1.9-1.9l2-17.7C36.6,28.5,41.5,22.5,41.5,15.4z"/> | ||||
| 	<path class="st2" d="M25.4,48l-2-17.7C16.8,28.5,12,22.5,12,15.4c0-8.3,6.5-15,14.7-15.4c-0.2,0-0.5,0-0.7,0 | ||||
| 		c-8.5,0-15.4,6.9-15.4,15.4c0,7.1,4.9,13.1,11.4,14.9L24,48c0,1.1,0.9,1.9,1.9,1.9c0.3,0,0.5-0.1,0.7-0.1 | ||||
| 		C25.9,49.5,25.4,48.8,25.4,48z"/> | ||||
| 	<path class="st0" d="M26.1,0c-0.2,0-0.5,0-0.7,0C33.5,0.4,40,7,40,15.2c0,7.1-4.9,13.1-11.4,14.9l-2,17.7c0,0.8-0.5,1.5-1.2,1.8 | ||||
| 		c0.2,0.1,0.5,0.1,0.7,0.1c1.1,0,1.9-0.9,1.9-1.9l2-17.7c6.6-1.8,11.4-7.7,11.4-14.9C41.5,6.7,34.6,0,26.1,0z"/> | ||||
| 	<g> | ||||
| 		<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="26.0792" y1="5.4233" x2="26.0792" y2="23.9909"> | ||||
| 			<stop  offset="0" style="stop-color:#FFFFFF"/> | ||||
| 			<stop  offset="1" style="stop-color:#FFFFFF"/> | ||||
| 		</linearGradient> | ||||
| 		<circle class="st3" cx="26.1" cy="14.9" r="11.1"/> | ||||
| 		<path class="st4" d="M26.1,26.2c-6.3,0-11.3-5.1-11.3-11.3c0-6.3,5.1-11.3,11.3-11.3c6.3,0,11.3,5.1,11.3,11.3 | ||||
| 			C37.4,21.2,32.3,26.2,26.1,26.2z M26.1,4.1c-5.9,0-10.8,4.8-10.8,10.8c0,5.9,4.8,10.8,10.8,10.8c5.9,0,10.8-4.8,10.8-10.8 | ||||
| 			C36.9,9,32,4.1,26.1,4.1z"/> | ||||
| 	</g> | ||||
| 	<g class="st5"> | ||||
| 		<g class="st6"> | ||||
| 			<path class="st7" d="M21.7,8.9v12.1l2.6,2.5V6.9L21.7,8.9z M22.2,20.1c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 				c0.1,0,0.1,0.1,0.1,0.2S22.3,20,22.2,20.1L22.2,20.1z M22.2,19.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,19.3,22.3,19.4,22.2,19.4L22.2,19.4z M22.2,18.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,18.6,22.3,18.7,22.2,18.7L22.2,18.7z M22.2,18c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.9,22.3,18,22.2,18L22.2,18z M22.2,17.3c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,17.2,22.3,17.3,22.2,17.3L22.2,17.3z M22.2,16.7c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.2-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C22.3,16.6,22.3,16.6,22.2,16.7L22.2,16.7z M22.2,16c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.9,22.3,16,22.2,16L22.2,16z M22.2,15.3c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,15.2,22.3,15.3,22.2,15.3L22.2,15.3z M22.2,14.6c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,14.5,22.3,14.6,22.2,14.6L22.2,14.6z M22.2,13.9c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.8,22.3,13.9,22.2,13.9L22.2,13.9z M22.2,13.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,13.2,22.3,13.2,22.2,13.3L22.2,13.3z M22.2,12.6c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,12.5,22.3,12.6,22.2,12.6L22.2,12.6z M22.2,11.9c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.8,22.3,11.9,22.2,11.9L22.2,11.9z M22.2,11.2c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.3,11.1,22.3,11.2,22.2,11.2L22.2,11.2z M22.2,10.5c-0.1,0-0.1,0-0.2-0.1v-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.3,10.4,22.3,10.5,22.2,10.5L22.2,10.5z M22.6,20.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,20.3,22.7,20.4,22.6,20.4L22.6,20.4z M22.6,19.7c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,19.6,22.7,19.7,22.6,19.7L22.6,19.7z M22.6,19.1c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.7,19,22.7,19.1,22.6,19.1L22.6,19.1z M22.6,18.4c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,18.3,22.7,18.4,22.6,18.4L22.6,18.4z M22.6,17.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,17.6,22.7,17.6,22.6,17.7L22.6,17.7z M22.6,17c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.9,22.7,17,22.6,17L22.6,17z M22.6,16.3c-0.1,0-0.1-0.1-0.1-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,16.2,22.7,16.3,22.6,16.3L22.6,16.3z M22.6,15.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,15.6,22.7,15.7,22.6,15.7L22.6,15.7z M22.6,15c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.8,22.7,15,22.6,15L22.6,15z M22.6,14.3c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,14.2,22.7,14.2,22.6,14.3L22.6,14.3z M22.6,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,13.5,22.7,13.6,22.6,13.6L22.6,13.6z M22.6,12.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.8,22.7,12.9,22.6,12.9L22.6,12.9z M22.6,12.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,12.2,22.7,12.3,22.6,12.3L22.6,12.3z M22.6,11.5c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C22.8,11.4,22.7,11.5,22.6,11.5L22.6,11.5z M22.6,10.9c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.7,22.7,10.8,22.6,10.9L22.6,10.9z M22.6,10.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 				C22.7,10.1,22.7,10.1,22.6,10.2L22.6,10.2z M23.1,20.6c-0.1,0-0.1-0.1-0.1-0.2c-0.1,0,0-0.1,0.1-0.1s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,20.5,23.2,20.6,23.1,20.6L23.1,20.6z M23.1,20C23,20,23,19.9,23,19.8s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,20,23.1,20L23.1,20z M23.1,19.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,19.2,23.2,19.3,23.1,19.3L23.1,19.3z M23.1,18.7c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,18.6,23.2,18.6,23.1,18.7L23.1,18.7z M23.1,17.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.8,23.2,17.9,23.1,17.9L23.1,17.9z M23.1,17.2C23,17.2,23,17.1,23,17s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,17.1,23.2,17.2,23.1,17.2L23.1,17.2z M23.1,16.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 				C23.2,16.5,23.2,16.6,23.1,16.6L23.1,16.6z M23.1,15.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,15.9,23.1,15.9L23.1,15.9z M23.1,15.3c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,15.2,23.2,15.2,23.1,15.3L23.1,15.3z M23.1,14.5c-0.1,0-0.2,0-0.2-0.1s0-0.2,0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 				c0,0.1-0.1,0.2-0.1,0.2V14.5z M23.1,13.8c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.7,23.2,13.8,23.1,13.8L23.1,13.8z M23.1,13.2c-0.1,0-0.2-0.1-0.2-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,13.1,23.2,13.2,23.1,13.2L23.1,13.2z M23.1,12.5c-0.1,0-0.1-0.1-0.1-0.2c-0.1-0.1,0-0.1,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,12.4,23.2,12.5,23.1,12.5L23.1,12.5z M23.1,11.9c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				S23.2,11.8,23.1,11.9L23.1,11.9z M23.1,11.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 				C23.2,11,23.2,11.1,23.1,11.1L23.1,11.1z M23.1,10.4c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1l-0.1,0.1V10.4z | ||||
| 				 M23.1,9.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.8z"/> | ||||
| 			<path class="st7" d="M30.8,10.1V7.2l-6.1-0.3v16.5l6.1-0.3V10.7h-5.2v-0.6H30.8z M29.6,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 				c0,0.3-0.2,0.5-0.5,0.5S29.1,9,29.1,8.7c0-0.1,0.1-0.3,0.2-0.4C29.3,8.2,29.5,8.1,29.6,8.1L29.6,8.1z"/> | ||||
| 		</g> | ||||
| 	</g> | ||||
| </g> | ||||
| <g> | ||||
| 	<path class="st7" d="M19.5,8.8v11.7l2.5,2.4v-16L19.5,8.8z M20,19.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.1,19.6,20.1,19.6,20,19.7L20,19.7z M20,19c-0.1,0-0.2-0.1-0.1-0.2v-0.1l0.1-0.1c0.1,0,0.2,0.1,0.1,0.2 | ||||
| 		C20.1,18.9,20.1,19,20,19L20,19z M20,18.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,18.2,20.1,18.3,20,18.3L20,18.3z M20,17.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,17.6,20.1,17.7,20,17.7L20,17.7z M20,17c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		C20.1,16.9,20.1,17,20,17L20,17z M20,16.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2s0.1,0.1,0.1,0.2 | ||||
| 		C20.1,16.3,20.1,16.3,20,16.4L20,16.4z M20,15.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2 | ||||
| 		S20.1,15.7,20,15.7L20,15.7z M20,15c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,14.9,20.1,15,20,15 | ||||
| 		L20,15z M20,14.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,14.3,20.1,14.4,20,14.4L20,14.4z | ||||
| 		 M20,13.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,13.7,20,13.7L20,13.7z M20,13.1 | ||||
| 		c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,13,20.1,13,20,13.1L20,13.1z M20,12.4 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,12.3,20.1,12.4,20,12.4L20,12.4z M20,11.7 | ||||
| 		c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2S20.1,11.7,20,11.7L20,11.7z M20,11.1c-0.1,0-0.2-0.1-0.2-0.2 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.1,11,20.1,11.1,20,11.1L20,11.1z M20,10.4c-0.1,0-0.1,0-0.1-0.1v-0.1 | ||||
| 		c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2C20.1,10.3,20.1,10.4,20,10.4L20,10.4z M20.5,20c-0.1,0-0.1-0.1-0.1-0.2 | ||||
| 		s0.1-0.2,0.1-0.2c0.1,0,0.1,0.1,0.1,0.2C20.6,19.9,20.5,20,20.5,20L20.5,20z M20.5,19.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,19.2,20.5,19.3,20.5,19.3L20.5,19.3z M20.5,18.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,18.6,20.5,18.7,20.5,18.7L20.5,18.7z M20.5,18c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,17.9,20.5,18,20.5,18L20.5,18z M20.5,17.4c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,17.3,20.5,17.3,20.5,17.4L20.5,17.4z M20.5,16.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,16.6,20.5,16.7,20.5,16.7L20.5,16.7z M20.5,16c-0.1,0-0.2-0.1-0.2-0.1c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,15.9,20.5,16,20.5,16L20.5,16z M20.5,15.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,15.4,20.5,15.4L20.5,15.4z M20.5,14.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,14.7,20.5,14.7L20.5,14.7z M20.5,14.1c-0.1-0.1-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,14,20.5,14,20.5,14.1L20.5,14.1z M20.5,13.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,13.3,20.5,13.4,20.5,13.4L20.5,13.4z M20.5,12.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S20.5,12.7,20.5,12.7L20.5,12.7z M20.5,12.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,12,20.5,12.1,20.5,12.1L20.5,12.1z M20.5,11.4c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C20.6,11.3,20.5,11.4,20.5,11.4L20.5,11.4z M20.5,10.8c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.6,10.6,20.5,10.7,20.5,10.8L20.5,10.8z M20.5,10.1c-0.1,0-0.2-0.1-0.2-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.2,0.1,0.1,0.2C20.6,10,20.5,10,20.5,10.1L20.5,10.1z M20.9,20.2c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,20.1,21,20.2,20.9,20.2L20.9,20.2z M20.9,19.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,19.5,21,19.6,20.9,19.6L20.9,19.6z M20.9,18.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,18.8,21,18.9,20.9,18.9L20.9,18.9z M20.9,18.3c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,18.2,21,18.2,20.9,18.3L20.9,18.3z M20.9,17.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,17.5,21,17.6,20.9,17.6L20.9,17.6z M20.9,16.9c-0.1,0-0.1-0.1-0.1-0.2s0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,16.8,21,16.9,20.9,16.9L20.9,16.9z M20.9,16.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0-0.2,0.1-0.2 | ||||
| 		s0.2,0.1,0.2,0.2C21.1,16.2,21,16.3,20.9,16.3L20.9,16.3z M20.9,15.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2S21,15.6,20.9,15.6L20.9,15.6z M20.9,15c-0.1-0.1-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,14.9,21,14.9,20.9,15L20.9,15z M20.9,14.3c-0.1,0-0.2,0-0.2-0.1c0-0.1,0-0.2,0.1-0.2v-0.1l0.1-0.1 | ||||
| 		c0.1,0,0.1,0,0.1,0.1V14c0,0.1-0.1,0.2-0.1,0.2V14.3z M20.9,13.6c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,13.5,21,13.6,20.9,13.6L20.9,13.6z M20.9,13c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,12.9,21,13,20.9,13L20.9,13z M20.9,12.3c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,12.2,21,12.3,20.9,12.3L20.9,12.3z M20.9,11.7c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,11.6,21,11.6,20.9,11.7L20.9,11.7z M20.9,11c-0.1,0-0.1-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2 | ||||
| 		c0.1,0,0.1,0.1,0.1,0.2C21.1,10.9,21,11,20.9,11L20.9,11z M20.9,10.3c-0.1,0-0.2-0.1-0.1-0.2V10l0.1-0.1c0,0,0.1,0,0.1,0.1v0.1 | ||||
| 		l-0.1,0.1V10.3z M20.9,9.7c-0.1,0-0.2-0.1-0.1-0.2c0-0.1,0.1-0.2,0.1-0.2c0.1,0,0.2,0.1,0.1,0.2c0,0-0.1,0.1-0.1,0V9.7z"/> | ||||
| 	<path class="st7" d="M27.8,10.3v-3l-5.3-0.4v16l5.3-0.3V10.8l-4.5-0.2V10L27.8,10.3z M26.7,8.1c0.3,0,0.5,0.2,0.5,0.5 | ||||
| 		c0,0.3-0.2,0.5-0.5,0.5c-0.3,0-0.5-0.2-0.5-0.5c0-0.1,0.1-0.3,0.2-0.4C26.4,8.2,26.5,8.1,26.7,8.1L26.7,8.1z"/> | ||||
| 	<path class="st7" d="M31.9,10.5v0.6l-3.7-0.2v11.7l4.3-0.3V7.5l-4.3-0.3v3L31.9,10.5z M29.3,8.2c0.1,0,0.3,0.1,0.4,0.2 | ||||
| 		c0.1,0.1,0.2,0.2,0.2,0.4c0,0.3-0.2,0.5-0.5,0.5s-0.5-0.2-0.5-0.5C28.8,8.5,29,8.2,29.3,8.2L29.3,8.2z"/> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 14 KiB | 
| After Width: | Height: | Size: 72 KiB | 
| After Width: | Height: | Size: 6.7 KiB | 
| After Width: | Height: | Size: 6.8 KiB | 
| After Width: | Height: | Size: 53 KiB | 
| After Width: | Height: | Size: 27 KiB | 
| After Width: | Height: | Size: 6.6 KiB | 
| After Width: | Height: | Size: 13 KiB | 
| After Width: | Height: | Size: 12 KiB | 
| After Width: | Height: | Size: 31 KiB | 
| After Width: | Height: | Size: 6.6 KiB | 
| After Width: | Height: | Size: 3.3 KiB | 
| After Width: | Height: | Size: 6.3 KiB | 
|  | @ -0,0 +1,31 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 108 32" style="enable-background:new 0 0 108 32;" xml:space="preserve"> | ||||
| <style type="text/css"> | ||||
| 	.st0{fill:none;} | ||||
| 	.st1{fill:#2CD04A;} | ||||
| 	.st2{fill:url(#SVGID_1_);} | ||||
| </style> | ||||
| <g> | ||||
| 	<g> | ||||
| 		<rect x="0" class="st0" width="32" height="32"/> | ||||
| 		<path class="st1" d="M61.3,12.6H74v2.8H43.1v-2.8h14V8.8h-8.3c-0.8,1.2-1.5,2.1-2.2,2.8h-3.2c1.8-2.9,3-5.5,3.7-7.5h4.5 | ||||
| 			c-0.3,0.6-0.6,1.2-1,2h6.5V3.4h4.2V6h11v2.8h-11V12.6z M71.8,17.8v11.3H45.4V17.8H71.8z M49.6,26.4h18v-6h-18V26.4z"/> | ||||
| 		<path class="st1" d="M93.2,7.7v3.2c0,1.5-0.6,2.6-1.7,3.2c-0.8,0.4-2.1,0.6-3.7,0.6v-1.9c0.5,0,0.9-0.2,1.2-0.4 | ||||
| 			c0.2-0.3,0.4-0.7,0.4-1.2V9.6h-8c-0.3,0.3-0.5,0.6-0.8,0.9h6.6v3.9h-8.7v-3.1H77c0.9-1.2,1.6-2.6,2-4.1h4.2 | ||||
| 			c-0.1,0.2-0.2,0.4-0.3,0.5H93.2z M94.8,15.6H108v2.1H77.1v-2.1h13.4v-1h4.4V15.6z M91.1,6.1v1.2h-3.7V6.1h-3.2v0.7h-3.8V6.1h-3.1 | ||||
| 			V4.2h3.1V3.4h3.8v0.9h3.2V3.4h3.7v0.9h3v1.8H91.1z M105.3,18.7v1.6H79.6v-1.6H105.3z M105.3,21.3v1.6H79.6v-1.6H105.3z | ||||
| 			 M105.3,23.9v5.2H79.6v-5.2H105.3z M81.6,12.9h2.5v-1.1h-2.5V12.9z M83.8,27.2h17.4v-1.4H83.8V27.2z M106.3,6.7 | ||||
| 			c-0.4,2-1.4,3.6-3,4.7c1.4,0.5,2.9,0.8,4.7,0.9v2.5c-2.9-0.3-5.3-1-7.3-1.9c-1.8,0.7-4.1,1.2-6.9,1.5v-2.4c1.6-0.2,3-0.4,4.1-0.7 | ||||
| 			c-0.7-0.5-1.4-1.3-2.1-2.1h-2.5c1-1.7,1.9-3.6,2.6-5.7h4.1c-0.2,0.4-0.4,0.8-0.6,1.2h8.3v2.2H106.3z M102.6,6.7h-4.8 | ||||
| 			c-0.4,0.5-0.6,0.8-0.8,1h1.8c0.4,0.9,0.9,1.6,1.7,2.2C101.6,9.1,102.3,8.1,102.6,6.7z"/> | ||||
| 		<radialGradient id="SVGID_1_" cx="16.0017" cy="16" r="16" gradientUnits="userSpaceOnUse"> | ||||
| 			<stop  offset="0" style="stop-color:#FFDD98"/> | ||||
| 			<stop  offset="1" style="stop-color:#FFC255"/> | ||||
| 		</radialGradient> | ||||
| 		<path class="st2" d="M16,0C7.2,0,0,7.2,0,16c0,8.8,7.2,16,16,16c8.8,0,16-7.2,16-16C32,7.2,24.8,0,16,0L16,0z M18.2,26.7h-4.4 | ||||
| 			v-2.6h4.4V26.7z M18.2,21.3h-4.4v-16h4.4V21.3z M18.2,21.3"/> | ||||
| 	</g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.0 KiB | 
|  | @ -0,0 +1 @@ | |||
| <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1685343108233" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11230" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M604.633441 511.693258l399.903417-399.871348a66.511603 66.511603 0 0 0 0-92.038717 65.485387 65.485387 0 0 0-93.738387 0L511.664716 418.852809 111.793369 19.751124a63.561233 63.561233 0 0 0-92.038717 0 63.561233 63.561233 0 0 0 0 92.070786l399.101685 399.903417L19.722582 910.794943a65.485387 65.485387 0 0 0 0 93.706318 66.511603 66.511603 0 0 0 92.070787 0l399.903416-399.871347L910.766402 1004.565399a66.255049 66.255049 0 0 0 93.706317-93.738387z" p-id="11231"></path></svg> | ||||
| After Width: | Height: | Size: 812 B | 
|  | @ -0,0 +1,37 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  --> | ||||
| <svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | ||||
| 	 viewBox="0 0 108 32" style="enable-background:new 0 0 108 32;" xml:space="preserve"> | ||||
| <style type="text/css"> | ||||
| 	.st0{display:none;fill:#606060;} | ||||
| 	.st1{fill:url(#SVGID_1_);} | ||||
| 	.st2{fill:#2CD04A;} | ||||
| </style> | ||||
| <g> | ||||
| 	<g> | ||||
| 		<g> | ||||
| 			<rect x="-0.1" class="st0" width="32" height="32"/> | ||||
| 			<radialGradient id="SVGID_1_" cx="15.9063" cy="16" r="14.8543" gradientUnits="userSpaceOnUse"> | ||||
| 				<stop  offset="0" style="stop-color:#70FA61"/> | ||||
| 				<stop  offset="1" style="stop-color:#34C649"/> | ||||
| 			</radialGradient> | ||||
| 			<path class="st1" d="M16.1,32c-2.2,0-4-1.8-4-4h8.1C20.1,30.2,18.3,32,16.1,32L16.1,32z M28.2,26.1H3.6c-0.7,0-1.3-0.6-1.3-1.3 | ||||
| 				v-0.4c0-0.7,0.5-1.4,1.1-1.5c0.8-0.7,1.3-1.9,1.3-3.2c0-0.1,0-0.2,0-0.3h0v-6.1c0-5.4,3.8-9.9,8.8-11c0,0,0-0.1,0-0.1 | ||||
| 				c0-1.3,1.1-2.4,2.4-2.4s2.4,1.1,2.4,2.4c0,0,0,0.1,0,0.1c5.1,1.1,8.8,5.6,8.8,11v6.3h0c0,0.1,0,0.2,0,0.3c0,1.4,0.5,2.6,1.3,3.2 | ||||
| 				c0.6,0.1,1.1,0.6,1.1,1.3v0.4C29.5,25.5,28.9,26.1,28.2,26.1L28.2,26.1z M28.2,26.1"/> | ||||
| 			<g> | ||||
| 				<path class="st2" d="M48.3,10.6h2.1v19h-4.1V12.5c-0.1,0.1-0.3,0.2-0.6,0.4h-3.2c3-3.3,5.1-6.5,6.2-9.6h4.7 | ||||
| 					C52.1,6,50.4,8.4,48.3,10.6z M65.2,25.9h7.6v2.7H53.3v-2.7H61v-8.8h-8.5v-2.8H61V7.6h-7.5V4.8h12.1c2.9,0,5.2-0.3,7-0.9v2.7 | ||||
| 					c-1.8,0.6-4.1,0.9-7,0.9h-0.4v6.8h8.4v2.8h-8.4V25.9z"/> | ||||
| 				<path class="st2" d="M96.8,12.7c2.4,0.5,6,0.9,10.8,1.3v2.9c-4.6-0.5-7.4-0.8-8.3-1c-2.8-0.4-5.2-0.9-7.2-1.5 | ||||
| 					c-3.9,1.1-9,1.9-15.4,2.5V14c4.1-0.2,7.8-0.7,11-1.4c-1.9-0.9-3.6-2-5.2-3.2c-0.8,0.7-1.5,1.2-2.1,1.7h-3.3 | ||||
| 					c2.8-2.5,4.8-5.1,6-7.8h4.7c-0.5,0.8-0.9,1.3-1.2,1.7h18v2.8C102.5,9.8,99.9,11.4,96.8,12.7z M90.4,18.1h14.5v5.3 | ||||
| 					c0,2.4-0.6,4.1-1.8,5c-1,0.7-2.8,1.1-5.3,1.2v-2.5c1.1-0.1,1.9-0.4,2.3-0.8c0.5-0.5,0.7-1.2,0.7-2.3v-3.2H89.2 | ||||
| 					c-0.9,1.8-2,3.4-3.3,5c-1.3,1.6-2.7,2.8-4,3.7h-4c3-2.5,5.3-5.4,7-8.7h-6.4v-2.8H86c0.3-1,0.5-1.7,0.6-2.2h4.5 | ||||
| 					C91,16.6,90.7,17.3,90.4,18.1z M92.1,11.5c2.9-1,5.4-2.2,7.7-3.7H84.3c-0.4,0.4-0.7,0.7-1,0.9h3.2C88.3,9.9,90.2,10.8,92.1,11.5 | ||||
| 					z"/> | ||||
| 			</g> | ||||
| 		</g> | ||||
| 	</g> | ||||
| </g> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 2.2 KiB | 
|  | @ -0,0 +1,56 @@ | |||
| <template> | ||||
|   <div class="address-list"> | ||||
|     <van-radio-group v-model="address_id" @change="onChange"> | ||||
|       <van-cell v-for="(item, idx) in lists" :key="item.address_id" class="address-item" @click="setAddress(idx)"> | ||||
|         <van-radio :name="idx"> | ||||
|           <div class="address-name">{{item.receive_name}}, {{item.mobile}}</div> | ||||
|           <div class="address-vice">{{item.province}} {{item.city}} {{item.area}} {{item.address}}</div> | ||||
|         </van-radio> | ||||
|         <div slot="right-icon" @click="editAddress(item.address_id)"><van-icon  name="edit" /></div> | ||||
|       </van-cell> | ||||
|     </van-radio-group> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import utils from '../utils'; | ||||
| 
 | ||||
| export default { | ||||
|   props: { | ||||
|     lists: { type: Array, required: true }, | ||||
|     selectedId:{type: Number, default: 0} | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       address_id: 0 | ||||
|     }; | ||||
|   }, | ||||
|   mouted() { | ||||
|     if(this.selectedId>0){ | ||||
|       this.address_id = this.selectedId | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
|     onChange(idx) { | ||||
|       utils.log(idx) | ||||
|       //this.$emit('pick',this.lists[idx]) | ||||
|     }, | ||||
|     setAddress(idx) { | ||||
|       this.$emit('pick',this.lists[idx]) | ||||
|     }, | ||||
|     editAddress(id) { | ||||
|       this.$router.push('/member/address/detail?id='+id) | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .address-item { | ||||
|   .address-name { | ||||
|     font-size: 16px; | ||||
|   } | ||||
|   .address-vice { | ||||
|     font-size: 13px; | ||||
|     color: #666; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,145 @@ | |||
| <template> | ||||
|   <div  ref="listRoot"> | ||||
|   <van-grid class="goods-list" :column-num="columnNum" :gutter="gutter" :border="false"> | ||||
|     <van-grid-item v-for="goods in lists" :key="goods.id" :to="'/credit/detail/'+goods.id"> | ||||
|       <div class="goods-item" :style="'width:'+itemSize+'px'"> | ||||
|         <img fit="scale-down" :width="itemSize" :height="itemSize" v-lazy="goods.image" /> | ||||
|         <h4 class="card-title van-multi-ellipsis--l2">{{goods.title}}</h4> | ||||
|         <div class="prodinfo"> | ||||
|           <div class="price">{{coculate(goods,  percent, credit_rate)}} + {{credit(goods,  percent, credit_rate)}}<van-icon name="diamond-o"></van-icon></div> | ||||
|           <div class="buybtn"> | ||||
|           <van-icon name="cart-o"></van-icon> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </van-grid-item> | ||||
|   </van-grid> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| export default { | ||||
|   props: { | ||||
|     lists: { type: Array, required: true }, | ||||
|     gutter: { type: Number, default: 10 }, | ||||
|     boxWidth: { type: Number, default: 0 }, | ||||
|     columnNum: { type: Number, default: 2 } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       origWidth:0 | ||||
|     }; | ||||
|   }, | ||||
|   computed: { | ||||
|     itemSize() { | ||||
|       let width = this.boxWidth > 0 ? | ||||
|         this.boxWidth : | ||||
|         this.origWidth; | ||||
|       if (width > 0) { | ||||
|         return ( | ||||
|           (width - | ||||
|             (this.columnNum + 1) * this.gutter) / | ||||
|           this.columnNum | ||||
|         ); | ||||
|       } | ||||
|       return 200; | ||||
|     }, | ||||
|     credit_rate() { | ||||
|       if(!this.$store.state.config){ | ||||
|         return 1; | ||||
|       } | ||||
|       if(!this.$store.state.config.credit_rate){ | ||||
|         return 1; | ||||
|       } | ||||
|       return this.$store.state.config.credit_rate | ||||
|     }, | ||||
|     percent() { | ||||
|       if(!this.$store.state.config){ | ||||
|         return 0; | ||||
|       } | ||||
|       if(!this.$store.state.config.deduction){ | ||||
|         return 0; | ||||
|       } | ||||
|       return this.$store.state.config.deduction | ||||
|     } | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.origWidth = this.$refs.listRoot.offsetWidth; | ||||
|   }, | ||||
|   methods: { | ||||
|     coculate(goods, percent, credit_rate) { | ||||
|       if(goods.credit_rate){ | ||||
|         credit_rate = goods.credit_rate | ||||
|       } | ||||
|       return goods.price - Math.round(this.credit(goods, percent, credit_rate)*100/credit_rate)*0.01 | ||||
|     }, | ||||
|     credit(goods, percent, credit_rate) { | ||||
|       if(goods.credit_rate){ | ||||
|         credit_rate = goods.credit_rate | ||||
|       } | ||||
|       return Math.round(goods.price*percent*0.01*credit_rate) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .goods-list{ | ||||
|   .van-grid-item{ | ||||
|     .van-grid-item__content{ | ||||
|     padding:0; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| .goods-item { | ||||
|   background: #fff; | ||||
|   border-radius:5px; | ||||
|   overflow: hidden; | ||||
| 
 | ||||
|   .card-title { | ||||
|     font-size: 14px; | ||||
|     text-align: left; | ||||
|     padding:0 5px; | ||||
|     box-sizing: border-box; | ||||
|     margin:5px 0; | ||||
|     width: 100%; | ||||
|   } | ||||
|   .prodinfo{ | ||||
|     display:flex; | ||||
|     flex-direction: row; | ||||
|     line-height:32px; | ||||
|     .price{ | ||||
|       flex:1; | ||||
|       color:#b18856; | ||||
|       font-size:14px; | ||||
|       width:40%; | ||||
|       font-weight:bold; | ||||
|       white-space: nowrap; | ||||
|       &:before{ | ||||
|         content:"¥"; | ||||
|         font-size:10px; | ||||
|       } | ||||
|       .van-icon{ | ||||
|         vertical-align: middle; | ||||
|       } | ||||
|     } | ||||
|     .buybtn{ | ||||
|       padding-top:5px; | ||||
|       padding-right:5px; | ||||
|     } | ||||
|   } | ||||
|   .my-btn{ | ||||
|     flex:0 0 80px; | ||||
|     border:0; | ||||
|     background:url(/static/home/img_fillet_rectangle_three.png) center center no-repeat; | ||||
|     color:#fff; | ||||
|     background-size:contain; | ||||
|     line-height:32px; | ||||
|     height:32px; | ||||
|     width: 80px; | ||||
|     .van-icon{ | ||||
|       vertical-align: middle; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| </style> | ||||
|  | @ -0,0 +1,50 @@ | |||
| <template> | ||||
|     <div class="info-block"> | ||||
|       <div v-if="title != ''" class="info-head"> | ||||
|         <div class="info-head-text">{{title}}</div> | ||||
|       </div> | ||||
|       <slot name="header"></slot> | ||||
|       <div class="info-content"> | ||||
|         <slot /> | ||||
|       </div> | ||||
|     </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| export default { | ||||
|   props: { | ||||
|     title: { type: String, default: '' } | ||||
|   }, | ||||
|   data() { | ||||
|     return {}; | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .info-block{ | ||||
|     border-radius:5px; | ||||
|     background:#fff; | ||||
|     box-shadow: 1px 1px 5px 2px rgba(0,0,0,.02); | ||||
|     .info-head{ | ||||
|         padding-top:20px; | ||||
|         .info-head-text{ | ||||
|             background:url(/static/home/img_fillet_rectangle.png) right center no-repeat; | ||||
|             background-size:cover; | ||||
|             line-height: 2em; | ||||
|             color: #fff; | ||||
|             text-indent: 1em; | ||||
|             padding-right:1.5em; | ||||
|             float: left; | ||||
|         } | ||||
|         &:after{ | ||||
|             content:""; | ||||
|             display: block; | ||||
|             height:0; | ||||
|             clear:both; | ||||
|         } | ||||
|     } | ||||
|     .info-content{ | ||||
|         padding:20px; | ||||
|     } | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,119 @@ | |||
| <template> | ||||
| <div  ref="listRoot"> | ||||
|   <van-grid class="product-list" :column-num="columnNum" :gutter="gutter" :border="false"> | ||||
|     <van-grid-item v-for="product in lists" :key="product.id" :to="'/product/detail/'+product.id"> | ||||
|       <div class="product-item" :style="{width:itemSize+'px'}"> | ||||
|         <img fit="scale-down" :width="itemSize" :height="itemSize" v-lazy="product.image" /> | ||||
|         <h4 class="card-title van-ellipsis">{{product.title}}</h4> | ||||
|         <div class="prodinfo"> | ||||
|           <div class="price-group"> | ||||
|             <div class="price">{{product.min_price}}</div> | ||||
|           </div> | ||||
|           <van-button class="my-btn"><van-icon name="cart-o"></van-icon></van-button> | ||||
|         </div> | ||||
|       </div> | ||||
|     </van-grid-item> | ||||
|   </van-grid> | ||||
| </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| export default { | ||||
|   props: { | ||||
|     lists: { type: Array, required: true }, | ||||
|     gutter: { type: Number, default: 10 }, | ||||
|     boxWidth: { type: Number, default: 0 }, | ||||
|     columnNum: { type: Number, default: 2 } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       origWidth:0 | ||||
|     }; | ||||
|   }, | ||||
|   computed: { | ||||
|     itemSize() { | ||||
|       let width = this.boxWidth > 0 ? | ||||
|         this.boxWidth : | ||||
|         this.origWidth; | ||||
|       if (width > 0) { | ||||
|         return ( | ||||
|           (width - | ||||
|             (this.columnNum + 1) * this.gutter) / | ||||
|           this.columnNum | ||||
|         ); | ||||
|       } | ||||
|       return 200; | ||||
|     } | ||||
|   }, | ||||
|   mounted() { | ||||
|     //utils.log(this.$refs.listRoot) | ||||
|     this.origWidth = this.$refs.listRoot.offsetWidth; | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| <style lang="scss"> | ||||
| .product-list{ | ||||
|   .van-grid-item{ | ||||
|     .van-grid-item__content{ | ||||
|     padding:0; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| .product-item { | ||||
|   background: #fff; | ||||
|   border-radius:5px; | ||||
|   overflow: hidden; | ||||
| 
 | ||||
|   .card-title { | ||||
|     width: 100%; | ||||
|     font-size: 14px; | ||||
|     text-align: left; | ||||
|     margin: 5px; | ||||
|   } | ||||
|   .prodinfo{ | ||||
|     display:flex; | ||||
|     flex-direction: row; | ||||
|     line-height:32px; | ||||
|     .price-group{ | ||||
|       flex:1; | ||||
|     } | ||||
|     .price{ | ||||
|       color:#b18856; | ||||
|       font-size:16px; | ||||
|       line-height: 40px; | ||||
|       width:40%; | ||||
|       font-weight:bold; | ||||
|       white-space: nowrap; | ||||
|       &:before{ | ||||
|         content:"¥"; | ||||
|         font-size:10px; | ||||
|       } | ||||
|     } | ||||
|     .market-price{ | ||||
|       color:#999999; | ||||
|       font-size:12px; | ||||
|       line-height: 14px; | ||||
|       width:10%; | ||||
|       white-space: nowrap; | ||||
|       text-align: left; | ||||
|       text-decoration: line-through; | ||||
|       &:before{ | ||||
|         content:"¥"; | ||||
|         font-size:8px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .my-btn{ | ||||
|     flex:0 0 80px; | ||||
|     border:0; | ||||
|     background-size:contain; | ||||
|     line-height:32px; | ||||
|     height:32px; | ||||
|     width: 80px; | ||||
|     .van-icon{ | ||||
|       vertical-align: middle; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| </style> | ||||
|  | @ -0,0 +1,317 @@ | |||
| <template> | ||||
|     <div class="register"> | ||||
|       <div class="banner"> | ||||
|         <van-swipe :autoplay="3000"> | ||||
|         <van-swipe-item v-for="(image, index) in banners" :key="index" @click="gotoUrl(image.url)"> | ||||
|           <van-image :src="image.image" fit="cover" /> | ||||
|         </van-swipe-item> | ||||
|       </van-swipe> | ||||
|       </div> | ||||
|       <div class="register-form"> | ||||
|           <van-cell-group> | ||||
|               <van-field v-model="nickname" left-icon="contact" placeholder="请填写昵称"  /> | ||||
|             <van-field v-model="mobile" left-icon="phone-o" placeholder="请输入手机号"  /> | ||||
|             <van-field v-model="smsCode" center clearable left-icon="passed" placeholder="请输入短信验证码"> | ||||
|               <van-button slot="button" size="small" :disabled="iscounting > 0" type="info" @click="sendSMS(mobile)">发送验证码<span v-if="iscounting>0">({{iscounting}})</span></van-button> | ||||
|             </van-field> | ||||
|             <van-field v-model="password" left-icon="bag-o" placeholder="请填写密码"  /> | ||||
|             <van-cell icon="location-o" is-link @click="pickAddress" :value="areas" /> | ||||
|           </van-cell-group> | ||||
|           <div class="submit-btn"> | ||||
|             <van-button type="danger" size="large" @click="bindMobile">立即注册</van-button> | ||||
|             <van-button class="margin-top" type="default" block  @click="onCloseRegister">暂不注册</van-button> | ||||
|           </div> | ||||
|       </div> | ||||
|        | ||||
|       <van-popup v-model="showAddressPicker" position="bottom"> | ||||
|       <van-picker | ||||
|         ref="addPicker" | ||||
|         :loading="addressLoading" | ||||
|         :show-toolbar="true" | ||||
|         :columns="addressColumns" | ||||
|         @cancel="areaCancel" | ||||
|         @change="areaChange" | ||||
|         @confirm="setAddress" | ||||
|       /> | ||||
|     </van-popup> | ||||
|      <van-popup class="transbackground" :close-on-click-overlay="false" v-model="showRewardSend"> | ||||
|       <div class="popimgbox"> | ||||
|         <van-image | ||||
|           width="20rem" | ||||
|           height="20rem" | ||||
|           fit="contain" | ||||
|           :src="rewardImage" | ||||
|           @click="hideRewardSend" | ||||
|         /> | ||||
|       </div> | ||||
|     </van-popup> | ||||
|     </div> | ||||
| </template> | ||||
| <script> | ||||
| import axios from "axios"; | ||||
| import utils from '../utils'; | ||||
| 
 | ||||
| 
 | ||||
| let areaList = null; | ||||
| let areaTree = {}; | ||||
| let loaded = false; | ||||
| let areaDelay = 0; | ||||
| let interval=0; | ||||
| export default { | ||||
|   props: { | ||||
|     lists: { type: Array } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|         banners:[], | ||||
|         nickname:'', | ||||
|         smsCode: "", | ||||
|         mobile: "", | ||||
|         password: "", | ||||
|         pickedAreas: [], | ||||
|         iscounting:0, | ||||
|         addressLoading: true, | ||||
|         showAddressPicker: false, | ||||
|         addressColumns: [ | ||||
|             { | ||||
|             values: [], | ||||
|             defaultIndex: 0 | ||||
|             }, | ||||
|             { | ||||
|             values: [], | ||||
|             defaultIndex: 0 | ||||
|             }, | ||||
|             { | ||||
|             values: [], | ||||
|             defaultIndex: 0 | ||||
|             } | ||||
|         ], | ||||
|         showRewardSend: false, | ||||
|         rewardImage: '/static/red-packet.png', | ||||
|         isSubmiting: false | ||||
|     }; | ||||
|   }, | ||||
|   computed: { | ||||
|     member() { | ||||
|       return this.$store.state.userinfo; | ||||
|     }, | ||||
|     areas() { | ||||
|       let vals = this.pickedAreas; | ||||
|       return vals.length > 0 ? vals.join("/") : "请选择地区"; | ||||
|     }, | ||||
|   }, | ||||
|   mounted() { | ||||
|       this.loadData(); | ||||
|       interval = setInterval(()=>{ | ||||
|         if(this.iscounting>0){ | ||||
|             this.iscounting -= 1; | ||||
|         } | ||||
|         if(this.member && this.member.nickname && !this.nickname){ | ||||
|             this.nickname = this.member.nickname.substring(0,8) | ||||
|           } | ||||
|       },1000); | ||||
|   }, | ||||
|   destroyed() { | ||||
|     loaded = false; | ||||
|     areaList = null; | ||||
|     areaTree = {}; | ||||
|     clearInterval(interval) | ||||
|   }, | ||||
|   methods: { | ||||
|       loadData() { | ||||
|           this.$api.post('common/advs',{flag:'register'}).then(json=>{ | ||||
|               this.banners = utils.fixListImage(json.data); | ||||
|           }) | ||||
|       }, | ||||
|       closeRegister(){ | ||||
|         this.$store.commit('setRegisterState',0) | ||||
|       }, | ||||
|     loadAddress() { | ||||
|       loaded = true; | ||||
|       axios | ||||
|         .get("static/area.json", { baseURL: "/" }) | ||||
|         .then(res => { | ||||
|           areaList = res.data; | ||||
|           this.initAddress(); | ||||
|           this.addressLoading = false; | ||||
|         }) | ||||
|         .catch(() => { | ||||
|           //console.log(err) | ||||
|           this.$toast.fail("地区信息加载失败"); | ||||
|           loaded = false; | ||||
|         }); | ||||
|     }, | ||||
|     initAddress() { | ||||
|       areaTree = utils.sortAddressTree(areaList); | ||||
| 
 | ||||
|       this.$refs.addPicker.setColumnValues(0, areaTree["00"]); | ||||
| 
 | ||||
|       const areas = []; | ||||
|       if (this.member.province && areaTree[this.member.province]) { | ||||
|         this.$refs.addPicker.setColumnValue(0, this.member.province); | ||||
|       } | ||||
| 
 | ||||
|       let province = this.$refs.addPicker.getColumnValue(0); | ||||
|       if (province && areaTree[province]) { | ||||
|         this.$refs.addPicker.setColumnValues(1, areaTree[province]); | ||||
|         areas.push(province) | ||||
|       } | ||||
|       if (this.member.city) { | ||||
|         this.$refs.addPicker.setColumnValue(1, this.member.city); | ||||
|       } | ||||
|       let city = this.$refs.addPicker.getColumnValue(1); | ||||
|       if (city && areaTree[city]) { | ||||
|         this.$refs.addPicker.setColumnValues(2, areaTree[city]); | ||||
|         areas.push(city) | ||||
|       }else{ | ||||
|         this.$refs.addPicker.setColumnValues(2, []); | ||||
|       } | ||||
|       if (this.member.county) { | ||||
|         this.$refs.addPicker.setColumnValue(2, this.member.county); | ||||
|         areas.push(this.member.county) | ||||
|       } | ||||
|       this.pickedAreas = areas; | ||||
|     }, | ||||
|     areaCancel() { | ||||
|       this.showAddressPicker = false; | ||||
|     }, | ||||
|     pickAddress() { | ||||
|       this.showAddressPicker = true; | ||||
|       if (!loaded) { | ||||
|         this.loadAddress(); | ||||
|       } | ||||
|     }, | ||||
|     areaChange(picker, values, idx) { | ||||
|       if (!loaded) return; | ||||
|       clearTimeout(areaDelay); | ||||
|       areaDelay = setTimeout(() => { | ||||
|         if (idx < 1 && areaTree[values[0]]) { | ||||
|           picker.setColumnValues(1, areaTree[values[0]]); | ||||
|         } | ||||
|         if (idx < 2 && areaTree[values[1]]) { | ||||
|           picker.setColumnValues(2, areaTree[values[1]]); | ||||
|         } | ||||
|       }, 400); | ||||
|     }, | ||||
|     setAddress(values) { | ||||
|       this.showAddressPicker = false; | ||||
|       this.pickedAreas = values; | ||||
|     }, | ||||
|     bindMobile() { | ||||
|       if(this.isSubmiting)return; | ||||
|       if(!this.nickname){ | ||||
|         this.$toast.fail('请填写昵称') | ||||
|         return | ||||
|       } | ||||
|       if(!this.mobile){ | ||||
|         this.$toast.fail('请填写手机号码') | ||||
|         return | ||||
|       } | ||||
|       if(this.member.mobile_bind && this.mobile ==  this.member.mobile){ | ||||
|         this.$toast.fail('手机号码未变更') | ||||
|         return | ||||
|       } | ||||
|       if(!this.mobile.match(/^1[3-9]\d{9}$/)){ | ||||
|         this.$toast.fail('手机号码格式错误') | ||||
|         return | ||||
|       } | ||||
|       if(!this.smsCode){ | ||||
|         this.$toast.fail('请填写验证码') | ||||
|         return | ||||
|       } | ||||
|       if(!this.password){ | ||||
|         this.$toast.fail('请填写密码') | ||||
|         return | ||||
|       } | ||||
|       if(!this.pickedAreas.length){ | ||||
|         //this.$toast.fail('请选择地区') | ||||
|         //return | ||||
|       } | ||||
|       this.isSubmiting=true | ||||
|       this.$api.post('member/mobile_register', | ||||
|       { | ||||
|           nickname:this.nickname, | ||||
|           mobile:this.mobile, | ||||
|           code:this.smsCode, | ||||
|           password:this.password, | ||||
|           areas: this.pickedAreas.join('/') | ||||
|       }).then(result=>{ | ||||
|         this.isSubmiting=false | ||||
|         this.$toast.success(result.msg||'注册成功'); | ||||
|          | ||||
|         if(result.data && result.data.is_set_agent){ | ||||
|           if(result.data.image){ | ||||
|             this.rewardImage = utils.fixImageUrl(result.data.image) | ||||
|           } | ||||
|           this.showRewardSend=true | ||||
|         }else{ | ||||
|           this.$store.dispatch("updateUserinfo"); | ||||
|           this.$store.commit('setRegisterState',0) | ||||
|         } | ||||
|       }).catch(err=>{ | ||||
|         this.isSubmiting=false | ||||
|         this.$toast.fail(err.msg||'注册失败'); | ||||
|         this.smsCode = '' | ||||
|       }) | ||||
|     }, | ||||
|     hideRewardSend(){ | ||||
|       this.showRewardSend = false | ||||
|        | ||||
|       this.$store.dispatch("updateUserinfo"); | ||||
|        this.$store.commit('setRegisterState',0) | ||||
|       this.$router.push('/member/agent') | ||||
|     }, | ||||
|     sendSMS(mobile) { | ||||
|       if(!mobile){ | ||||
|         this.$toast.fail('请填写手机号码') | ||||
|         return | ||||
|       } | ||||
|       if(!mobile.match(/^1[3-9]\d{9}$/)){ | ||||
|         this.$toast.fail('手机号码格式错误') | ||||
|         return | ||||
|       } | ||||
|       this.$api.post('member/smscode',{mobile:mobile}).then(result=>{ | ||||
|         this.$toast.success(result.msg||'发送成功'); | ||||
|         this.iscounting = 60 | ||||
|       }).catch(err=>{ | ||||
|         this.$toast.fail(err.msg||'发送失败'); | ||||
|       }) | ||||
|     }, | ||||
|     onCloseRegister(){ | ||||
|       this.$store.commit('setRegisterState',0) | ||||
|     } | ||||
|   } | ||||
|    | ||||
| } | ||||
| </script> | ||||
| <style lang="scss" scpoed> | ||||
| .register{ | ||||
|   background: rgba(0,0,0,.5); | ||||
|   .banner{ | ||||
|       min-height: 100px; | ||||
|   } | ||||
|   .register-form{ | ||||
|       margin:30px 20px; | ||||
|       padding: 10px; | ||||
|       background: #fff; | ||||
|       border-radius: 5px; | ||||
|       .submit-btn{ | ||||
|         margin:20px 0; | ||||
|         width:auto; | ||||
|       } | ||||
|   } | ||||
| 
 | ||||
|   .van-cell-group{ | ||||
|     .van-cell{ | ||||
|       border:0; | ||||
|       border-radius:5px; | ||||
|       background:#eee; | ||||
|       margin:10px 0; | ||||
|     } | ||||
|   } | ||||
|    .popimgbox,.transbackground{ | ||||
|     background:transparent; | ||||
|     text-align: center; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,37 @@ | |||
| <template> | ||||
|   <!-- symbol方式引用彩色图标,就得这么写 --> | ||||
|   <!-- :class="iconClass" ===》图标的基础样式,一般用于规定大小之类的,可以不要 | ||||
|   <use :xlink:href="whatName"></use> ===》设置图标名称,不同名称的图标不一样 | ||||
|    --> | ||||
|   <svg class="icon" :class="iconClass" aria-hidden="true"> | ||||
|     <use :xlink:href="whatName"></use> | ||||
|   </svg> | ||||
| </template> | ||||
|   | ||||
| <script> | ||||
| export default { | ||||
|   name: "cjIcon", | ||||
|   // 传入组件的参数 | ||||
|   props: { | ||||
|     // 基础类名 一般为icon、iconfont之类的,用于规定图标基础大小 | ||||
|     iconClass: String, | ||||
|     // 图标名称 | ||||
|     iconName: String, | ||||
|   }, | ||||
|   computed: { | ||||
|     //   通过计算属性,给传进来的图表名前面加上 # ,然后显示在上面 | ||||
|     whatName() { | ||||
|       return `#${this.iconName}`; | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script>  | ||||
| <style scoped> | ||||
| .icon { | ||||
|   width: 1em; | ||||
|   height: 1em; | ||||
|   vertical-align: -0.15em; | ||||
|   fill: currentColor; | ||||
|   overflow: hidden; | ||||
| } | ||||
| </style> | ||||
|  | @ -0,0 +1,31 @@ | |||
| 
 | ||||
| const BASE_URL = process.env.NODE_ENV == 'production' ? | ||||
|                 'http://cms.qisosoft.net/' :  | ||||
|                 'http://cms.test.com/'; | ||||
| 
 | ||||
| const USER_AGENT = navigator.userAgent; | ||||
| 
 | ||||
| export default { | ||||
|     root: process.env.NODE_ENV == 'production' ?'/':'/', | ||||
| 
 | ||||
|     debugLevel: process.env.NODE_ENV == 'production' ? 2 : 0, | ||||
| 
 | ||||
|     version: '20200624', | ||||
| 
 | ||||
|     server : '/api/', | ||||
| 
 | ||||
|     imgServer : BASE_URL, | ||||
| 
 | ||||
|     appid : 'web', | ||||
| 
 | ||||
|     wxid: 'uH7bPMGXHr', | ||||
| 
 | ||||
|     isWechat: USER_AGENT.indexOf('MicroMessenger')>-1, | ||||
| 
 | ||||
|     signPackageUrl: '', | ||||
|     signPackage: null, | ||||
| 
 | ||||
|     mobileRegexp: /^1[3-9]\d{9}$/, | ||||
| 
 | ||||
|     emailRegexp: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/ | ||||
| }; | ||||
|  | @ -0,0 +1,13 @@ | |||
| import permission from './permission' | ||||
| 
 | ||||
| const install = function(Vue) { | ||||
|   Vue.directive('permission', permission) | ||||
| } | ||||
| 
 | ||||
| if (window.Vue) { | ||||
|   window['permission'] = permission | ||||
|   Vue.use(install); // eslint-disable-line
 | ||||
| } | ||||
| 
 | ||||
| permission.install = install | ||||
| export default permission | ||||
|  | @ -0,0 +1,47 @@ | |||
| import store from '@/store' | ||||
| import { Notification } from 'element-ui' | ||||
| import { i18n } from '@/lang/index'; | ||||
| 
 | ||||
| export default { | ||||
|   inserted(el, binding, vnode) { | ||||
|     console.log(vnode); | ||||
|     const { value } = binding | ||||
|     // const roles = store.getters && store.getters.roles
 | ||||
|     const roles = store.getters && store.getters.butPermission | ||||
| 
 | ||||
|     // console.log(store)
 | ||||
|     if (value && value instanceof Array && value.length > 0) { | ||||
|       const permissionRoles = value | ||||
|       // console.log(value)
 | ||||
|       // console.log(permissionRoles);
 | ||||
|       const hasPermission = roles.some(role => { | ||||
|         return permissionRoles.includes(role) | ||||
|       }) | ||||
| 
 | ||||
|       if (!hasPermission) { | ||||
|         // console.log(hasPermission);
 | ||||
|         // el.parentNode && el.parentNode.removeChild(el)
 | ||||
| 
 | ||||
|         // store.state.user.permissionFlag[permissionRoles] = true
 | ||||
|         // $(el).wrap(
 | ||||
|         //   "<div style='cursor:not-allowed;display:inline-block'></div>"
 | ||||
|         // )  
 | ||||
|         el.style.pointerEvents = 'none' | ||||
|         el.style.color = '#e5e3e3' | ||||
|         el.addEventListener('click', () => { | ||||
|           Notification({ | ||||
|             title: i18n.t('title.fail'), | ||||
|             message: i18n.t('permission'), | ||||
|             type: 'error', | ||||
|             duration: 3000 | ||||
|           }) | ||||
|         }) | ||||
|       } | ||||
|       // else {
 | ||||
|       //   store.state.user.permissionFlag[permissionRoles] = false
 | ||||
|       // }
 | ||||
|     } else { | ||||
|       throw new Error(`need roles! Like v-permission="['admin','editor']"`) | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,13 @@ | |||
| import waves from './waves' | ||||
| 
 | ||||
| const install = function(Vue) { | ||||
|   Vue.directive('waves', waves) | ||||
| } | ||||
| 
 | ||||
| if (window.Vue) { | ||||
|   window.waves = waves | ||||
|   Vue.use(install); // eslint-disable-line
 | ||||
| } | ||||
| 
 | ||||
| waves.install = install | ||||
| export default waves | ||||
|  | @ -0,0 +1,26 @@ | |||
| .waves-ripple { | ||||
|     position: absolute; | ||||
|     border-radius: 100%; | ||||
|     background-color: rgba(0, 0, 0, 0.15); | ||||
|     background-clip: padding-box; | ||||
|     pointer-events: none; | ||||
|     -webkit-user-select: none; | ||||
|     -moz-user-select: none; | ||||
|     -ms-user-select: none; | ||||
|     user-select: none; | ||||
|     -webkit-transform: scale(0); | ||||
|     -ms-transform: scale(0); | ||||
|     transform: scale(0); | ||||
|     opacity: 1; | ||||
| } | ||||
| 
 | ||||
| .waves-ripple.z-active { | ||||
|     opacity: 0; | ||||
|     -webkit-transform: scale(2); | ||||
|     -ms-transform: scale(2); | ||||
|     transform: scale(2); | ||||
|     -webkit-transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; | ||||
|     transition: opacity 1.2s ease-out, -webkit-transform 0.6s ease-out; | ||||
|     transition: opacity 1.2s ease-out, transform 0.6s ease-out; | ||||
|     transition: opacity 1.2s ease-out, transform 0.6s ease-out, -webkit-transform 0.6s ease-out; | ||||
| } | ||||
|  | @ -0,0 +1,73 @@ | |||
| import './waves.css' | ||||
| 
 | ||||
| const context = '@@wavesContext' | ||||
| 
 | ||||
| function handleClick(el, binding) { | ||||
|   function handle(e) { | ||||
|     const customOpts = Object.assign({}, binding.value) | ||||
|     const opts = Object.assign( | ||||
|       { | ||||
|         ele: el, // 波纹作用元素
 | ||||
|         type: 'hit', // hit 点击位置扩散 center中心点扩展
 | ||||
|         color: 'rgba(0, 0, 0, 0.15)' // 波纹颜色
 | ||||
|       }, | ||||
|       customOpts | ||||
|     ) | ||||
|     const target = opts.ele | ||||
|     if (target) { | ||||
|       target.style.position = 'relative' | ||||
|       target.style.overflow = 'hidden' | ||||
|       const rect = target.getBoundingClientRect() | ||||
|       let ripple = target.querySelector('.waves-ripple') | ||||
|       if (!ripple) { | ||||
|         ripple = document.createElement('span') | ||||
|         ripple.className = 'waves-ripple' | ||||
|         ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px' | ||||
|         target.appendChild(ripple) | ||||
|       } else { | ||||
|         ripple.className = 'waves-ripple' | ||||
|       } | ||||
|       switch (opts.type) { | ||||
|         case 'center': | ||||
|           ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px' | ||||
|           ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px' | ||||
|           break | ||||
|         default: | ||||
|           ripple.style.top = | ||||
|             (e.pageY - rect.top - ripple.offsetHeight / 2 - document.documentElement.scrollTop || | ||||
|               document.body.scrollTop) + 'px' | ||||
|           ripple.style.left = | ||||
|             (e.pageX - rect.left - ripple.offsetWidth / 2 - document.documentElement.scrollLeft || | ||||
|               document.body.scrollLeft) + 'px' | ||||
|       } | ||||
|       ripple.style.backgroundColor = opts.color | ||||
|       ripple.className = 'waves-ripple z-active' | ||||
|       return false | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   if (!el[context]) { | ||||
|     el[context] = { | ||||
|       removeHandle: handle | ||||
|     } | ||||
|   } else { | ||||
|     el[context].removeHandle = handle | ||||
|   } | ||||
| 
 | ||||
|   return handle | ||||
| } | ||||
| 
 | ||||
| export default { | ||||
|   bind(el, binding) { | ||||
|     el.addEventListener('click', handleClick(el, binding), false) | ||||
|   }, | ||||
|   update(el, binding) { | ||||
|     el.removeEventListener('click', el[context].removeHandle, false) | ||||
|     el.addEventListener('click', handleClick(el, binding), false) | ||||
|   }, | ||||
|   unbind(el) { | ||||
|     el.removeEventListener('click', el[context].removeHandle, false) | ||||
|     el[context] = null | ||||
|     delete el[context] | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,77 @@ | |||
| 
 | ||||
| import utils from "./utils"; | ||||
| 
 | ||||
| const transGoods = (product)=>{ | ||||
| 
 | ||||
|     product.image=utils.fixImageUrl(product.image); | ||||
|     product.picture=product.image; | ||||
| 
 | ||||
|     product.has_spec = utils.countObject( product.spec_data ) > 0; | ||||
|     product.has_prop = utils.countObject( product.prop_data ) > 0; | ||||
|     product.content = utils.parseHtml(product.content) | ||||
|      | ||||
|     if(product.levels && product.levels instanceof Array){ | ||||
|         product.levels = product.levels.map(item=>{ | ||||
|             return parseInt(item) | ||||
|         }) | ||||
|     } | ||||
| 
 | ||||
|     return product; | ||||
| } | ||||
| 
 | ||||
| const transSku = (skus, product)=>{ | ||||
|     var sku={ | ||||
|         tree:[], | ||||
|         list:[], | ||||
|         price: product.min_price, | ||||
|         stock_num: product.storage, // 商品总库存
 | ||||
|         collection_id: 0,  | ||||
|         none_sku: true, | ||||
|         messages:[], | ||||
|         hide_stock: false  | ||||
|     } | ||||
|     if(skus && skus.length > 0){ | ||||
|         skus = utils.fixListImage(skus) | ||||
|         skus.forEach(item=>{ | ||||
|             var skuitem={ | ||||
|                 id: item.sku_id, | ||||
|                 price: item.price * 100, | ||||
|                 stock_num: item.storage  | ||||
|             } | ||||
|             if(item.specs){ | ||||
|                 for(var k in item.specs){ | ||||
|                     skuitem[k]=item.specs[k]; | ||||
|                 } | ||||
|             } | ||||
|             sku.list.push(skuitem) | ||||
|         }) | ||||
|         if(product.has_spec){ | ||||
|             sku.none_sku=false; | ||||
|             for(var k in product.spec_data){ | ||||
|                 var treeItem={ | ||||
|                     k:product.spec_data[k].title, | ||||
|                     k_s:k, | ||||
|                     v:product.spec_data[k].data.map(dataItem=>{ | ||||
|                         return { | ||||
|                             id: dataItem, | ||||
|                             name: dataItem | ||||
|                         } | ||||
|                     }) | ||||
|                 } | ||||
|                 sku.tree.push(treeItem); | ||||
|             } | ||||
| 
 | ||||
|         }else{ | ||||
|             sku.collection_id=skus[0].sku_id; | ||||
|             sku.price = parseFloat(skus[0].price); | ||||
|             sku.none_sku=true; | ||||
|         } | ||||
|     } | ||||
|     utils.log(sku,'debug') | ||||
|     return sku; | ||||
| } | ||||
| 
 | ||||
| export default { | ||||
|     transGoods:transGoods, | ||||
|     transSku:transSku | ||||
| } | ||||
|  | @ -0,0 +1,6 @@ | |||
| 
 | ||||
| export default { | ||||
|     credit:'积分', | ||||
|     money:'余额', | ||||
|     reward:'佣金' | ||||
| } | ||||
|  | @ -0,0 +1,617 @@ | |||
| export default { | ||||
|   name: 'HJ-Intelligent Energy Management System', | ||||
|   deskName: 'HJ-Intelligent Energy Management Console', | ||||
|   // 通用
 | ||||
|   currency: { | ||||
|     staging: 'Staging', | ||||
|     home: 'Home', | ||||
|     settings: 'Settings', | ||||
|     alarm: 'Alarm', | ||||
|     device: 'Device', | ||||
|     map: 'Map', | ||||
|     video: 'Live', | ||||
|     playback: 'Playback', | ||||
|     record: 'Snap Record', | ||||
|   }, | ||||
|   title: { | ||||
|     success: 'Succese', | ||||
|     warning: 'Warning', | ||||
|     error: 'Error', | ||||
|     fail: 'Failure', | ||||
|     pointOut: 'Prompt', // Prompt/Hint/Information
 | ||||
|     delete: 'Remove', | ||||
|     cancel: 'Cancel', | ||||
|     confirm: 'Confirm', | ||||
|     addSuccess: 'Add Successfully', | ||||
|     editSuccess: 'Edit Successfully', | ||||
|     deleteSuccess: 'Remove Successfully', | ||||
|     setUpSuccess: 'Set Successfully', | ||||
|     releaseSuccess: 'Release Success', | ||||
|     notBeen: 'The function has not been launched yet~', | ||||
|     signOut: 'Confirm logout?', | ||||
|     oneData: 'Select a data record please', | ||||
|     delPointOut: 'Please comfirm to remove that route permanently?', | ||||
|     delPointOutDeviceType: 'Please comfirm to remove that device information permanently?', | ||||
|     delPointOutDepartment: 'Please comfirm to remove that that area information permanently?', | ||||
|     delPointOutSite: 'Please comfirm to remove that site information permanently?', | ||||
|     delPointOutRole: 'Please comfirm to remove that role information permanently?', | ||||
|     delPointOutUser: 'Please comfirm to remove that user information permanently?', | ||||
|     publish: 'Whether to publish', | ||||
|     delPointOutWork: 'Please comfirm to remove that WorkCard information permanently?', | ||||
|     delPointOutPatrol: 'Please comfirm to remove that Inspect information permanently?', | ||||
|     fullTime: 'Select Full Time', | ||||
|     timeContrast: 'The start time should be less than the end time', | ||||
|     relistTip: 'You have been logged out, you can cancel staying on this page or log in again', | ||||
|   }, | ||||
|   // 通用按钮
 | ||||
|   btn: { | ||||
|     save: 'Save', | ||||
|     cancel: 'Cancel', | ||||
|     define: 'OK', | ||||
|     search: 'Search', | ||||
|     resetting: 'Reset', | ||||
|     add: 'Add', | ||||
|     leadingOut: 'Export', | ||||
|     delete: 'Remove', | ||||
|     addDevice: 'New Device', | ||||
|     relist: 'Relist', | ||||
|   }, | ||||
|   // 表单
 | ||||
|   table: { | ||||
|     index: '', | ||||
|     operate: 'Operation', | ||||
|     moreOperate: 'More', | ||||
|     edit: 'Edit', | ||||
|     create: 'New', | ||||
|     delete: 'Remove', | ||||
|     change: 'Update', | ||||
|     check: 'Check', | ||||
|     release: 'Release', | ||||
|     checkAll: 'CheckAll', | ||||
|     optional: 'Options', | ||||
|     selected: 'Selected', | ||||
|     longitude: 'Longitude', | ||||
|     latitude: 'Latitude', | ||||
|     address: 'Address', | ||||
|     datetime: 'choose a date', | ||||
|     noMore: `There's no more`, | ||||
|     notMandatory: '(Not mandatory)', | ||||
|   }, | ||||
|   // 通用类型
 | ||||
|   type: { | ||||
|     fu: 'parent', | ||||
|     zi: 'Child', | ||||
|     yes: 'Yes', | ||||
|     no: 'No', | ||||
|     open: 'Switch On', | ||||
|     close: 'Switch Off', | ||||
|     cache: 'Cache', | ||||
|     noCache: 'no Cache', | ||||
|     read: 'Read', | ||||
|     write: 'Read', | ||||
|     dispose: 'Configure', | ||||
|     notHave: 'none', // none/no,
 | ||||
|     processed: 'Processed', | ||||
|     processing: 'Processing', | ||||
|     untreated: 'Untreated', | ||||
|     Initiate: 'Initiate', | ||||
|   }, | ||||
|   // 校验
 | ||||
|   validate: { | ||||
|     phone: 'Please input the mobile phone number', | ||||
|     phoneFormat: 'incorrect format of mobile phone number', | ||||
|     pswLimit: 'please Enter a 6-8 digit and alpha passcode', | ||||
|     pswConfirm: 'please confirm the passcode', | ||||
|     pswError: 'mismached passcode', | ||||
|     limitValue: 'please enter the lower limit', | ||||
|     limitValueFormat: 'The lower limit cannot be greater than the upper limit', | ||||
|     long1and20: 'Between 1 and 20 characters in length', | ||||
|   }, | ||||
|   // 图片上传
 | ||||
|   photoUp: { | ||||
|     pDel: 'please remove the old image first!', | ||||
|     format: 'Error image format!', | ||||
|     size: 'image size can notHave greater than 5 MB!', | ||||
|   }, | ||||
|   // 通用查询
 | ||||
|   listQuery: { | ||||
|     deptId: 'Area', | ||||
|     siteCode: 'Site', | ||||
|     cabinetCode: 'Cabinet', | ||||
|   }, | ||||
|   //登录模块语言
 | ||||
|   login: { | ||||
|     title: 'Welcome to login', | ||||
|     username: 'User', | ||||
|     password: 'Password', | ||||
|     imageStr: 'Verification code', | ||||
|     signOut: 'Logout', | ||||
|     welcome: 'Welcome! ', | ||||
|     login: 'Sign in', // Login
 | ||||
|     logining: 'Logging in ...', | ||||
|     desk: 'Management Console', | ||||
|     replace: 'Next', | ||||
|   }, | ||||
|   home: { | ||||
|     hello: 'Hello', | ||||
|     overview: 'Equipment Overview', | ||||
|     notify: 'Notify', | ||||
|     index: 'Home', | ||||
|     gisMap: 'GIS Resource', | ||||
|     cabinetList: 'Cabinet Lists', | ||||
|     deviceManage: 'Device (Manage)', | ||||
|     integrated: 'Cabinet', | ||||
|     movingRing: 'FSU Module', | ||||
|     insideCabinet: 'Devices in Cabinet', | ||||
|     deviceType: 'Device Type', | ||||
|     threshold: 'Threshold', | ||||
|     area: 'Area', | ||||
|     site: 'Sites', | ||||
|     user: 'Users', | ||||
|     role: 'Roles', | ||||
|     menu: 'Menu', | ||||
|     platformLog: 'Logging', | ||||
|     operation: 'Maintenance', | ||||
|     alarm: 'Alarm', | ||||
|     deviceLog: 'Log', | ||||
|     personal: 'Personal Info.', | ||||
|     refresh: 'Refresh', | ||||
|     close: 'Close', | ||||
|     closeOthers: 'Close others', | ||||
|     closeAll: 'Close all', | ||||
|     onlineRate: 'Online Rate', | ||||
|     devTotal: 'Total', | ||||
|     devFaulty: 'Faulty', | ||||
|     onlineQuantity: 'Online', | ||||
|     offlineQuantity: 'Offline', | ||||
|     devAlarm: 'Alarm', | ||||
|     noNews: 'No new news', | ||||
|     passEdit: 'Edit PassWord', | ||||
|   }, | ||||
|   personal: { | ||||
|     tasks: 'Personal tasks', | ||||
|     completedOrder: 'Completed WorkCard', | ||||
|     unfinishedOrders: 'Unfinished WorkCard', | ||||
|     completedPatrol: 'Completed Inspect', | ||||
|     unfinishedPatrol: 'Unfinished Inspect', | ||||
|     rate: 'online rate', | ||||
|     log: 'log', | ||||
|     time: 'time', | ||||
|   }, | ||||
|   // 设备
 | ||||
|   device: { | ||||
|     deviceId: 'Device ID', | ||||
|     deviceCode: 'Device SN.', | ||||
|     deviceName: 'Device Name', | ||||
|     typeName: 'Device Type', | ||||
|     typeCode: 'Type Code', | ||||
|     cabinetId: 'Cabinet ID', | ||||
|     cabinetType: 'Cabinet Type', | ||||
|     cabinetType1: 'Single-Cabinet', | ||||
|     cabinetType2: 'Double-Cabinet', | ||||
|     data: 'Basic Information', | ||||
|     device: 'Devices in Cabinet', | ||||
|     // 综合柜
 | ||||
|     assetNum: 'Asset Code.', | ||||
|     serialNum: 'SN.', | ||||
|     sysNum: 'System Code', | ||||
|     installTime: 'Installation time', | ||||
|     proTime: 'Production Date', | ||||
|     photo: 'Photo', | ||||
|     factory: 'Manufacturer', | ||||
|     // 柜内设备
 | ||||
|     cabinetCode: 'Cabinet', | ||||
|     model: 'Model', | ||||
|     director: 'Responsor', | ||||
|     phone: 'Mobile', | ||||
|     owner: 'Owner', | ||||
|     // 动环模块
 | ||||
|     online: 'Status', | ||||
|     onLine: 'Online', | ||||
|     outLine: 'Offline', | ||||
|     rssi: 'RSSI', | ||||
|     operator: 'Operator', | ||||
|     software: 'Software', | ||||
|     hardware: 'Hardware Info.', | ||||
|     power: 'Power', | ||||
|     network: 'Network', | ||||
|     portCount: 'Interface count', | ||||
|     company: 'Maintainer', | ||||
|     agent: 'Personnel', | ||||
|     agentPhone: 'Mobile', | ||||
|     logonTime: 'Registration Date', | ||||
|     host: 'IP Address', | ||||
|     port: 'Port' | ||||
| 
 | ||||
|   }, | ||||
|   // 设备详情
 | ||||
|   deviceInfo: { | ||||
|     switchInfo: 'Switch Info', | ||||
|     noneDevice: 'None Device', | ||||
|     teleadjusting: 'Tuning', | ||||
|     telecommand: 'Telecommand', | ||||
|     onOff: 'On/off', | ||||
|     monitor: 'Monitor', | ||||
|   }, | ||||
|   // 设备类型
 | ||||
|   deviceType: { | ||||
|     typeName: 'Device Type', | ||||
|     typeCode: 'Type Code', | ||||
|     icon: 'Icon', | ||||
|     uploadIcon: 'Upload Icon', | ||||
| 
 | ||||
|     addAType: 'Create root type', | ||||
|     addSon: 'Create child type', | ||||
|     delSon: 'Please remove child type first', | ||||
|   }, | ||||
|   // 阀值管理页
 | ||||
|   threshold: { | ||||
|     parameterName: 'Parameter', | ||||
|     setting: 'Threshold', | ||||
|     paramType: 'Parameter type', | ||||
|     paramType1: 'Anolog Signal', | ||||
|     paramType2: 'Digital Signal', | ||||
|     maxVal: 'Upper limit', | ||||
|     minVal: 'Lower limit', | ||||
|     alarm: 'Alarm value', | ||||
|     timeGap: 'Interval(min)', | ||||
|     alarmLevel: 'Alarm Level', | ||||
|     one: 'Level-A', | ||||
|     two: 'Level-B', | ||||
|     three: 'Level-C', | ||||
|     alarmInfo: 'Detail', | ||||
|   }, | ||||
|   // 区域管理
 | ||||
|   department: { | ||||
|     deptName: 'Area', | ||||
|     deptCode: 'Area code', | ||||
|     deptType: 'Area type', | ||||
|     deptPid: 'Parent area', | ||||
|     province: 'Province', | ||||
|     city: 'City', | ||||
|     district: 'District', | ||||
|     street: 'Street', | ||||
|   }, | ||||
|   // 站点管理页
 | ||||
|   site: { | ||||
|     siteId: 'Site ID', | ||||
|     siteName: 'Site name', | ||||
|     siteCode: 'Site code', | ||||
|     picture: 'Picture', | ||||
|     createTime: 'Create time', | ||||
|     director: 'Responsor', | ||||
|     associated: 'Associated-device', | ||||
|     addSite: 'Add site', | ||||
|   }, | ||||
|   // 菜单管理页
 | ||||
|   menu: { | ||||
|     addToplevel: 'New Root item', | ||||
|     addChild: 'New Child item', | ||||
|     permissionName: 'Item name', | ||||
|     permissionType: 'Permission', | ||||
|     permissionNameEn: 'English name', | ||||
|     path: 'Path', | ||||
|     component: 'Component', | ||||
|     icon: 'Icon', | ||||
|     code: 'Authority code', | ||||
|     buttonCode: 'Authority for button', | ||||
|     alwaysShow: 'Visible', | ||||
|     noCache: 'PageCache', | ||||
|     route: 'Route-level', | ||||
|     nameKey: 'Key-Name', | ||||
|     oneData: 'One Record', | ||||
|   }, | ||||
|   // 角色管理页
 | ||||
|   role: { | ||||
|     roleId: 'Role id', | ||||
|     roleName: 'Role name', | ||||
|     roleDescript: 'Role description', | ||||
|     roleCode: 'Role Code', | ||||
|     userName: 'User name', | ||||
|     setResources: 'Resource', | ||||
|     setWeb: 'Web Resource', | ||||
|     setApp: 'APP resource', | ||||
|   }, | ||||
|   // 用户管理页
 | ||||
|   user: { | ||||
|     user: 'User', | ||||
|     userName: 'User name', | ||||
|     nickName: 'Nick name', | ||||
|     phone: 'Mobile', | ||||
|     userType: 'User type', | ||||
|     permissionLevel: 'Permission', | ||||
|     remark: 'Memo', | ||||
|     roleName: 'Role', | ||||
|     enabled: 'Activation status', | ||||
|     password: 'User password', | ||||
|     pswAgain: 'Confirm', | ||||
|     createRole: 'Please create a role first', | ||||
|     admin: 'Normal', | ||||
|     superAdmin: 'Super administator', | ||||
|   }, | ||||
|   // 菜单类型
 | ||||
|   permissionType: { | ||||
|     list: 'list', | ||||
|     menu: 'menu', | ||||
|     button: 'button', | ||||
|     joggle: 'interface', | ||||
|   }, | ||||
|   // 平台日志
 | ||||
|   platformLog: { | ||||
|     userName: 'Operator', | ||||
|     ip: 'IP address', | ||||
|     createDate: 'Operare time', | ||||
|   }, | ||||
|   // 机柜弹窗
 | ||||
|   cabinet: { | ||||
|     details: 'details', | ||||
|     basicInfo: 'Basic', // Basic information
 | ||||
|     installInfo: 'Install', // Install information
 | ||||
|     moveDevice: 'FSU module', | ||||
|     cabinetInfo: 'Cabinet information', | ||||
|     history: 'History', | ||||
|     more: 'More', | ||||
|     info: { | ||||
|       // 基本信息
 | ||||
|       assetNum: 'Assst code', | ||||
|       sysNum: 'System code', | ||||
|       serialNum: 'SN.', | ||||
|       factory: 'Manufacturer', | ||||
|       proTime: 'Production date', | ||||
|       // 安装信息
 | ||||
|       longitude: 'Longitude', | ||||
|       siteName: 'Site name', | ||||
|       latitude: 'Latitude', | ||||
|       siteCode: 'Site id', | ||||
|       director: 'Responsor', | ||||
|       address: 'Address', | ||||
|       // 动环信息
 | ||||
|       software: 'Software', | ||||
|       imei: 'IMEI', | ||||
|       operator: 'Operator', | ||||
|       hardware: 'Hardware', | ||||
|       imsi: 'IMSI', | ||||
|       company: 'Maintainer', | ||||
|       power: 'Power', | ||||
|       logonTime: 'Registration time', | ||||
|       agent: 'personnel', | ||||
|       rssi: 'RSSI', | ||||
|       network: 'Network Status', | ||||
|       phone: 'Mobile', | ||||
|       portCount: 'Interface count', | ||||
|       online: 'Status', | ||||
|       onLine: 'Online', | ||||
|       outLine: 'Offline', | ||||
|     }, | ||||
|     sensor: { | ||||
|       deviceName: 'Device Name', | ||||
|       model: 'Model', | ||||
|       factory: 'Manufacturer', | ||||
|       director: 'Responsor', | ||||
|       phone: 'Mobile', | ||||
|       owner: 'Owner', | ||||
|       // 温湿度监控
 | ||||
|       monitoring: 'Temperature & Humidity', | ||||
|       temperature: 'Temperature', | ||||
|       humidity: 'Humidity', | ||||
|       status: 'Sensor Status', | ||||
|       noData: 'No data', | ||||
|     }, | ||||
|     UPS: { | ||||
|       monitor: 'UPS monitoring', | ||||
|       data1: 'Input Power voltage', | ||||
|       data2: 'Power voltage', | ||||
|       data3: 'Output Power voltage', | ||||
|       data4: 'Load voltage', // Working voltage
 | ||||
|       data5: 'Fault voltage', | ||||
|       data6: 'Bypass Mode', | ||||
|       data7: 'Ouput load', | ||||
|       data8: 'UPS Fault', | ||||
|       data9: 'Battery Voltage', | ||||
|       data10: 'Model', | ||||
|       data11: 'Battery load %', | ||||
|       data12: 'UPS Mode', | ||||
|       data13: 'Environment Temperature', | ||||
|       data14: 'UPS Status', | ||||
|       data15: 'Input power frequency', | ||||
|       data16: 'Buzzer', // Alarm
 | ||||
|     }, | ||||
|     battery: { | ||||
|       monitor: 'Battery monitoring', | ||||
|       data1: 'Measure Address', | ||||
|       data2: 'Voltage', | ||||
|       data3: 'Internal resistance', | ||||
|       data4: 'Temperature', | ||||
|       data5: 'Working state', | ||||
|       data6: 'Battery charging', | ||||
|       data7: 'Battery discharging', | ||||
|     }, | ||||
|     powerSupply: { | ||||
|       monitor: 'Power monitoring', | ||||
|       voltage: 'Voltage', | ||||
|       current: 'Current', | ||||
|       activePower: 'Active Power', | ||||
|       reactivePower: 'Reactive Power', | ||||
|       apparentPower: 'Apparent Power', | ||||
|       powerFactor: 'Power Factor', | ||||
|       data1: 'A Phase', | ||||
|       data2: 'B Phase', | ||||
|       data3: 'C Phase', | ||||
|       data4: 'A-Phase Voltage', | ||||
|       data5: 'B-Phase Voltage', | ||||
|       data6: 'C-Phase Voltage', | ||||
|       data7: 'A-Phase Current', | ||||
|       data8: 'B-Phase Current', | ||||
|       data9: 'C-Phase Current', | ||||
|       data10: 'A-Phase Active Power', | ||||
|       data11: 'B-Phase Active Power', | ||||
|       data12: 'C-Phase Active Power', | ||||
|       data13: 'A-Phase Reactive Power', | ||||
|       data14: 'B-Phase Reactive Power', | ||||
|       data15: 'C-Phase Reactive Power', | ||||
|       data16: 'A-Phase Apparent Power', | ||||
|       data17: 'B-Phase Apparent Power', | ||||
|       data18: 'C-Phase Apparent Power', | ||||
|       data19: 'A-Phase Power Factor', | ||||
|       data20: 'B-Phase Power Factor', | ||||
|       data21: 'C-Phase Power Factor', | ||||
|       data22: 'remote regulating', | ||||
|       data23: 'On/oFF', | ||||
|     }, | ||||
|     air: { | ||||
|       data1: 'Status', | ||||
|       data2: 'Upper Temperature', | ||||
|       data3: 'lower Temperature', | ||||
|       data4: 'Setting Temperature', | ||||
|       data5: 'Upper current', | ||||
|       data6: 'Lower current', | ||||
|       data7: 'Current Current', | ||||
|       data8: 'Temperature of air inlet', | ||||
|       data9: 'Temperature of air outlet', | ||||
|       data10: 'Apeed', | ||||
|       data11: 'Low', | ||||
|       data12: 'Middle', | ||||
|       data13: 'High', | ||||
|       data14: 'Mode', | ||||
|       data15: 'Cooling', | ||||
|       data16: 'Heating', | ||||
|       data17: 'Fresh', | ||||
|     }, | ||||
|     electric: { | ||||
|       data1: 'branch', | ||||
|       data2: 'voltage', | ||||
|       data3: 'current', | ||||
|       data4: 'Switch', | ||||
|       data5: 'on', | ||||
|       data6: 'off', | ||||
|     }, | ||||
|     video: { | ||||
|       data5: 'live', | ||||
|       data6: 'playback', | ||||
|       data7: 'PTZ', | ||||
|       data1: 'Zoom', | ||||
|       data2: 'focal length', | ||||
|       data3: 'Aperture', | ||||
|     }, | ||||
|     water: { | ||||
|       monitor: 'monitoring', | ||||
|     } | ||||
|   }, | ||||
|   // 机柜列表
 | ||||
|   cabinetList: { | ||||
|     deviceCode: 'Code', | ||||
|     typeName: 'Type', | ||||
|     siteName: 'Site', | ||||
|     serialNum: 'Site Code', // Site ID
 | ||||
|     deptName: 'Area', | ||||
|   }, | ||||
|   //告警
 | ||||
|   alarm: { | ||||
|     alarmInfo: 'Alarm Info.', | ||||
|     alarmLevel: 'Alarm level', | ||||
|     uploadTime: 'Alarm time', | ||||
|     notification: 'Alarm notification', | ||||
|     status: 'Alarm status', | ||||
|     reset: 'reset', | ||||
|     leve1: 'Level 1', // alarm
 | ||||
|     leve2: 'Level 2', // alarm
 | ||||
|     leve3: 'Level 3', // alarm
 | ||||
|     normal: 'normal', | ||||
|     fault: 'fault', | ||||
|     on: 'on', | ||||
|     off: 'off', | ||||
|     yes: 'yes', | ||||
|     no: 'no', | ||||
|   }, | ||||
|   task: { | ||||
|     unpublished: 'Unpublished', | ||||
|     notStarted: 'NotStarted', | ||||
|     inProgress: 'InProgress', | ||||
|     suspend: 'Suspend', | ||||
|     complete: 'Complete', | ||||
|     failed: 'Failed', | ||||
|     toBeAccepted: 'ToBeAccepted', | ||||
|     timedOut: 'TimeOut', | ||||
|     receive: 'Receive', | ||||
|     release: 'Release', | ||||
| 
 | ||||
|     install: 'Install', | ||||
|     dismantle: 'Dismantle', | ||||
|     fault: 'Fault', | ||||
|     other: 'Other', | ||||
| 
 | ||||
|     workOrder: 'WorkCard', | ||||
|     patrol: 'Inspect', | ||||
|     sonPatrol: 'Sub-task', | ||||
|     workOrderName: 'Name', | ||||
|     patrolName: 'Name', | ||||
|     workOrderDevice: 'Devices', | ||||
|     patrolDevice: 'Device', | ||||
|     addWorkOrder: 'Add WorkCard', | ||||
|     addPatrol: 'Add Task', | ||||
|     editWorkOrder: 'Edit WorkCard', | ||||
|     editPatrol: 'Edit Task', | ||||
|     checkWorkOrder: 'Check', | ||||
|     checkPatrol: 'Check', | ||||
|     sonCheckPatrol: 'Sub-Check', | ||||
|     workOrderInfo: 'Info', | ||||
|     patrolInfo: 'Info', | ||||
|     sonPatrolInfo: 'Sub-Info', | ||||
|     workOrderIllustrate: 'Instructions', | ||||
|     patrolIllustrate: 'Instructions', | ||||
|     workOrderStatus: 'Status', | ||||
|     patrolStatus: 'Status', | ||||
|     cycle: 'Cycle', | ||||
|     sendReceive: 'Send-Receive', | ||||
|     workOrderType: 'Types', | ||||
|     workOrderTypeOther: "When the WorkCard type is 'Other'", | ||||
|     description: ', Please enter a type description', | ||||
|     receivePhone: 'Receive Phone', | ||||
|     receiveName: 'Recipient', | ||||
|     checkName: 'Inspector', | ||||
|     applicationForAcceptance: 'Submit', | ||||
|     deviceNotEntered: 'Note: Some devices have not been recorded yet', | ||||
|     checkSuccess: 'Successfully applied for acceptance', | ||||
|     notDevHistorical: 'There are still devices that have not entered history records!', | ||||
|     leastOneDevice: 'Please select at least one device', | ||||
|     entry: 'Entry', | ||||
|     entrySuccess: 'Entry Success', | ||||
|   }, | ||||
|   upload: { | ||||
|     targetDevice: 'Target Device', | ||||
|     operatorPosition: 'Operator Position', | ||||
|     distanceDevice: 'Distance Device', | ||||
|     photo: 'Photo', | ||||
|     video: 'Video', | ||||
|     audio: 'Audio', | ||||
|     characters: 'Characters', | ||||
|     uploadFile: 'Upload File', | ||||
|     uploading: 'File upload in progress', | ||||
|     uploadFail: 'Upload Failed', | ||||
|     doNotOperate: 'Do not perform other operations', | ||||
|     locationFile: 'Failed to obtain the current location', | ||||
|     refuseToLocate: 'User rejects geolocation request', | ||||
|     imageFormat: 'Please upload a file in image format', | ||||
|     videoFormat: 'Please upload a file in video format', | ||||
|     audioFormat: 'Please upload a file in audio format', | ||||
|   }, | ||||
|   historical: { | ||||
|     source: 'source', | ||||
|     name: 'name', | ||||
|     originator: 'Original', | ||||
|     userName: 'Operator', | ||||
|     Nohistoricaldata: 'No data', | ||||
|     historicalTrajectory: 'Trace', | ||||
|     positiveRequence: 'positive requence', | ||||
|     ReverseOrder: 'Reverse order', | ||||
|   }, | ||||
|   pSelect: 'Please choose ', | ||||
|   pEnter: 'Please enter ', | ||||
|   lang: 'Lang', | ||||
|   changelangtip: 'Language switched', | ||||
|   currentVersion: 'Current version', | ||||
|   updateVersion: 'Update', | ||||
|   startTime: 'Start Time', | ||||
|   endTime: 'End Time', | ||||
|   permission: 'No permission' | ||||
| } | ||||
|  | @ -0,0 +1,36 @@ | |||
| import Vue from 'vue' | ||||
| import VueI18n from 'vue-i18n' | ||||
| import { Locale } from 'vant' | ||||
| import enUS from 'vant/lib/locale/lang/en-US' | ||||
| import zhCN from 'vant/lib/locale/lang/zh-CN' | ||||
| import enLocale from './en' | ||||
| import zhLocale from './zh' | ||||
| 
 | ||||
| Vue.use(VueI18n) | ||||
| 
 | ||||
| const messages = { | ||||
|   en: { | ||||
|     ...enUS, | ||||
|     ...enLocale | ||||
|   }, | ||||
|   zh: { | ||||
|     ...zhCN, | ||||
|     ...zhLocale | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| const i18n = new VueI18n({ | ||||
|   locale: 'en',  // 设置默认语言
 | ||||
|   messages: messages // 设置资源文件对象
 | ||||
| }) | ||||
| 
 | ||||
| // 更新vant组件库本身的语言变化,支持国际化
 | ||||
| function vantLocales(lang) { | ||||
|   if (lang === 'en') { | ||||
|     Locale.use(lang, enUS) | ||||
|   } else if (lang === 'zh') { | ||||
|     Locale.use(lang, zhCN) | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export { i18n, vantLocales } | ||||
|  | @ -0,0 +1,618 @@ | |||
| export default { | ||||
|   name: '汇珏智慧能源管控系统', | ||||
|   deskName: '汇珏智慧能源管理台', | ||||
|   // 通用
 | ||||
|   currency: { | ||||
|     staging: '工作台', | ||||
|     home: '首页', | ||||
|     settings: '我的', | ||||
|     alarm: '告警', | ||||
|     device: '设备', | ||||
|     map: '地图', | ||||
|     video: '实时监控', | ||||
|     playback: '回放', | ||||
|     record: '抓拍记录', | ||||
|     startTime: '开始时间' | ||||
|   }, | ||||
|   title: { | ||||
|     success: '成功', | ||||
|     warning: '警告', | ||||
|     error: '错误', | ||||
|     fail: '失败', | ||||
|     pointOut: '提示', | ||||
|     delete: '删除', | ||||
|     cancel: '取消', | ||||
|     confirm: '确认', | ||||
|     addSuccess: '添加成功', | ||||
|     editSuccess: '编辑成功', | ||||
|     deleteSuccess: '删除成功', | ||||
|     setUpSuccess: '设置成功', | ||||
|     releaseSuccess: '发布成功', | ||||
|     notBeen: '功能暂未上线~', | ||||
|     signOut: '确定退出登录?', | ||||
|     oneData: '请选择一条数据', | ||||
|     delPointOut: '此操作将永久删除该路由, 是否继续?', | ||||
|     delPointOutDeviceType: '此操作将永久删除该设备类型信息, 是否继续?', | ||||
|     delPointOutDepartment: '此操作将永久删除该区域信息, 是否继续?', | ||||
|     delPointOutSite: '此操作将永久删除该站点信息, 是否继续?', | ||||
|     delPointOutRole: '此操作将永久删除该角色信息, 是否继续?', | ||||
|     delPointOutUser: '此操作将永久删除该用户信息, 是否继续?', | ||||
|     publish: '是否发布', | ||||
|     delPointOutWork: '此操作将永久删除该工单信息, 是否继续?', | ||||
|     delPointOutPatrol: '此操作将永久删除该巡检信息, 是否继续?', | ||||
|     fullTime: '选择完整时间', | ||||
|     timeContrast: '开始时间要小于结束时间', | ||||
|     relistTip: '你已被登出,可以取消继续留在该页面,或者重新登录', | ||||
|   }, | ||||
|   // 通用按钮
 | ||||
|   btn: { | ||||
|     save: '保 存', | ||||
|     cancel: '取 消', | ||||
|     define: '确 定', | ||||
|     search: '搜 索', | ||||
|     resetting: '重 置', | ||||
|     add: '添 加', | ||||
|     leadingOut: '导 出', | ||||
|     delete: '删 除', | ||||
|     addDevice: '创建设备', | ||||
|     relist: '重新登录', | ||||
|   }, | ||||
|   // 表单
 | ||||
|   table: { | ||||
|     index: '序号', | ||||
|     operate: '操作', | ||||
|     moreOperate: '更多操作', | ||||
|     edit: '编辑', | ||||
|     create: '新增', | ||||
|     delete: '删除', | ||||
|     change: '更改', | ||||
|     check: '查看', | ||||
|     release: '发布', | ||||
|     checkAll: '全选', | ||||
|     optional: '可选项', | ||||
|     selected: '已选项', | ||||
|     longitude: '经度', | ||||
|     latitude: '纬度', | ||||
|     address: '地址', | ||||
|     datetime: '选择日期', | ||||
|     noMore: '没有更多了', | ||||
|     notMandatory: '(非必填)', | ||||
|   }, | ||||
|   // 通用类型
 | ||||
|   type: { | ||||
|     fu: '父级', | ||||
|     zi: '子级', | ||||
|     yes: '是', | ||||
|     no: '否', | ||||
|     open: '开', | ||||
|     close: '关', | ||||
|     cache: '缓存', | ||||
|     noCache: '不缓存', | ||||
|     read: '读', | ||||
|     write: '写', | ||||
|     dispose: '配置', | ||||
|     notHave: '无', | ||||
|     processed: '已处理', | ||||
|     processing: '处理中', | ||||
|     untreated: '未处理', | ||||
|     Initiate: '发起工单' | ||||
|   }, | ||||
|   // 校验
 | ||||
|   validate: { | ||||
|     phone: '请输入手机号码', | ||||
|     phoneFormat: '手机号码格式不对', | ||||
|     pswLimit: '请输入6~8位用户密码', | ||||
|     pswConfirm: '请再次输入密码', | ||||
|     pswError: '两次输入密码不一致!', | ||||
|     limitValue: '请输入下限值', | ||||
|     limitValueFormat: '下限值不能大于上限值', | ||||
|     long1and20: '长度在 1 到 20 个字符', | ||||
|   }, | ||||
|   // 图片上传
 | ||||
|   photoUp: { | ||||
|     pDel: '请先删除原来的图片!', | ||||
|     format: '上传图片格式不对!', | ||||
|     size: '上传图片大小不能超过 5MB!', | ||||
|   }, | ||||
|   // 通用查询
 | ||||
|   listQuery: { | ||||
|     deptId: '所属区域', | ||||
|     siteCode: '所属站址', | ||||
|     cabinetCode: '所属综合柜', | ||||
|   }, | ||||
|   //登录模块语言
 | ||||
|   login: { | ||||
|     title: '欢迎登录', | ||||
|     username: '用户名', | ||||
|     password: '密码', | ||||
|     imageStr: '验证码', | ||||
|     signOut: '退出登录', | ||||
|     welcome: '欢迎您!', | ||||
|     login: '登 录', | ||||
|     logining: '登 录 中...', | ||||
|     desk: '管理台', | ||||
|     replace: '看不清?换一张', | ||||
|   }, | ||||
|   home: { | ||||
|     hello: '你好', | ||||
|     overview: '设备概况', | ||||
|     notify: '消息通知', | ||||
|     index: '首页', | ||||
|     gisMap: 'GIS资源', | ||||
|     cabinetList: '机柜列表', | ||||
|     deviceManage: '设备管理', | ||||
|     integrated: '综合柜', | ||||
|     movingRing: '动环模块', | ||||
|     insideCabinet: '柜内设备', | ||||
|     deviceType: '设备类型', | ||||
|     threshold: '阀值管理', | ||||
|     area: '区域管理', | ||||
|     site: '站址管理', | ||||
|     user: '用户管理', | ||||
|     role: '角色管理', | ||||
|     menu: '菜单管理', | ||||
|     platformLog: '平台日志', | ||||
|     operation: '运维', | ||||
|     alarm: '告警', | ||||
|     deviceLog: '设备运行日志', | ||||
|     personal: '个人中心', | ||||
|     refresh: '刷新', | ||||
|     close: '关闭', | ||||
|     closeOthers: '关闭其他', | ||||
|     closeAll: '关闭所有', | ||||
|     devAlarm: '告警设备数', | ||||
|     onlineRate: '在线率', | ||||
|     devTotal: '设备总数', | ||||
|     devFaulty: '故障设备', | ||||
|     onlineQuantity: '在线设备', | ||||
|     offlineQuantity: '离线设备', | ||||
|     noNews: '暂无新消息', | ||||
|     passEdit: '修改密码', | ||||
|   }, | ||||
|   personal: { | ||||
|     tasks: '个人任务', | ||||
|     completedOrder: '已完成工单', | ||||
|     unfinishedOrders: '未完成工单', | ||||
|     completedPatrol: '已完成巡检', | ||||
|     unfinishedPatrol: '未完成巡检', | ||||
|     rate: '在线率', | ||||
|     log: '操作日志', | ||||
|     time: '时间', | ||||
|   }, | ||||
|   // 设备
 | ||||
|   device: { | ||||
|     deviceId: '设备ID', | ||||
|     deviceCode: '设备编号', | ||||
|     deviceName: '设备名称', | ||||
|     typeName: '设备类型', | ||||
|     typeCode: '所创设备类型', | ||||
|     cabinetId: '机柜ID', | ||||
|     cabinetType: '柜体类型', | ||||
|     cabinetType1: '单柜体', | ||||
|     cabinetType2: '多柜体', | ||||
|     data: '基础信息', | ||||
|     device: '柜内设备', | ||||
|     // 综合柜
 | ||||
|     assetNum: '资产编号', | ||||
|     serialNum: '序列号', | ||||
|     sysNum: '系统编号', | ||||
|     installTime: '安装时间', | ||||
|     proTime: '生产日期', | ||||
|     photo: '照片', | ||||
|     factory: '厂家', | ||||
|     // 柜内设备
 | ||||
|     cabinetCode: '所属综合柜', | ||||
|     model: '型号', | ||||
|     director: '负责人', | ||||
|     phone: '联系方式', | ||||
|     owner: '业主', | ||||
|     // 动环模块
 | ||||
|     online: '在线状态', | ||||
|     onLine: '在线', | ||||
|     outLine: '离线', | ||||
|     rssi: '信号强度', | ||||
|     operator: '运营商', | ||||
|     software: '软件信息', | ||||
|     hardware: '硬件信息', | ||||
|     power: '功率', | ||||
|     network: '网络状态', | ||||
|     portCount: '接口数量', | ||||
|     company: '代维公司', | ||||
|     agent: '代维人姓名', | ||||
|     agentPhone: '代维人电话', | ||||
|     logonTime: '注册时间', | ||||
|     host: 'IP地址', | ||||
|     port: '端口号' | ||||
| 
 | ||||
|   }, | ||||
|   // 设备详情
 | ||||
|   deviceInfo: { | ||||
|     switchInfo: '切换信息', | ||||
|     noneDevice: '暂无设备', | ||||
|     teleadjusting: '遥调', | ||||
|     telecommand: '遥控', | ||||
|     onOff: '开/关', | ||||
|     monitor: '监控', | ||||
|   }, | ||||
|   // 设备类型
 | ||||
|   deviceType: { | ||||
|     typeName: '设备类型', | ||||
|     typeCode: '类型编码', | ||||
|     icon: '图标', | ||||
|     uploadIcon: '上传图标', | ||||
| 
 | ||||
|     addAType: '创建一级类型', | ||||
|     addSon: '添加子级', | ||||
|     delSon: '请先删除子级', | ||||
|   }, | ||||
|   // 阀值管理页
 | ||||
|   threshold: { | ||||
|     parameterName: '参数名称', | ||||
|     setting: '阀值设置', | ||||
|     paramType: '参数类型', | ||||
|     paramType1: '模拟量', | ||||
|     paramType2: '开关量', | ||||
|     maxVal: '上限值', | ||||
|     minVal: '下限值', | ||||
|     alarm: '告警值', | ||||
|     timeGap: '时间间隔(min)', | ||||
|     alarmLevel: '告警等级', | ||||
|     one: '1级', | ||||
|     two: '2级', | ||||
|     three: '3级', | ||||
|     alarmInfo: '告警明细', | ||||
|   }, | ||||
|   // 区域管理
 | ||||
|   department: { | ||||
|     deptName: '区域名称', | ||||
|     deptCode: '区域编号', | ||||
|     deptType: '区域级别', | ||||
|     deptPid: '上级区域', | ||||
|     province: '省', | ||||
|     city: '市', | ||||
|     district: '区/县', | ||||
|     street: '街道', | ||||
|   }, | ||||
|   // 站点管理页
 | ||||
|   site: { | ||||
|     siteId: '站点ID', | ||||
|     siteName: '站点名称', | ||||
|     siteCode: '站点编号', | ||||
|     picture: '图片', | ||||
|     createTime: '创建时间', | ||||
|     director: '负责人', | ||||
|     associated: '关联设备', | ||||
|     addSite: '创建站址', | ||||
|   }, | ||||
|   // 菜单管理页
 | ||||
|   menu: { | ||||
|     addToplevel: '新增顶级', | ||||
|     addChild: '新增子级', | ||||
|     permissionName: '菜单名称', | ||||
|     permissionType: '权限类型', | ||||
|     permissionNameEn: '菜单英文名称', | ||||
|     path: '路径', | ||||
|     component: '组件名', | ||||
|     icon: '图标', | ||||
|     code: '权限码', | ||||
|     buttonCode: '按钮权限码', | ||||
|     alwaysShow: '始终显示', | ||||
|     noCache: '页面缓存', | ||||
|     route: '路由等级', | ||||
|     nameKey: '名称KEY值', | ||||
|     oneData: '一条数据' | ||||
|   }, | ||||
|   // 角色管理页
 | ||||
|   role: { | ||||
|     roleId: '角色ID', | ||||
|     roleName: '角色名称', | ||||
|     roleDescript: '角色描述', | ||||
|     roleCode: '角色标识', | ||||
|     userName: '用户名称', | ||||
|     setResources: '设置资源', | ||||
|     setWeb: '设置web资源', | ||||
|     setApp: '设置app资源' | ||||
|   }, | ||||
|   // 用户管理页
 | ||||
|   user: { | ||||
|     user: '用户', | ||||
|     userName: '用户名称', | ||||
|     nickName: '用户昵称', | ||||
|     phone: '用户电话', | ||||
|     userType: '用户类型', | ||||
|     permissionLevel: '用户权限', | ||||
|     remark: '用户备注', | ||||
|     roleName: '用户角色', | ||||
|     enabled: '激活状态', | ||||
|     password: '用户密码', | ||||
|     pswAgain: '确认密码', | ||||
|     createRole: '请先创建角色', | ||||
|     admin: '普通管理员', | ||||
|     superAdmin: '超级管理员' | ||||
|   }, | ||||
|   // 菜单类型
 | ||||
|   permissionType: { | ||||
|     list: '列表', | ||||
|     menu: '菜单', | ||||
|     button: '按钮', | ||||
|     joggle: '接口' | ||||
|   }, | ||||
|   // 平台日志
 | ||||
|   platformLog: { | ||||
|     userName: '操作人', | ||||
|     ip: 'IP地址', | ||||
|     createDate: '操作时间', | ||||
|   }, | ||||
|   // 机柜弹窗
 | ||||
|   cabinet: { | ||||
|     details: '机柜详情', | ||||
|     basicInfo: '基本信息', | ||||
|     installInfo: '安装信息', | ||||
|     moveDevice: '动环模块', | ||||
|     cabinetInfo: '机柜信息', | ||||
|     history: '历史运维', | ||||
|     more: '更多', | ||||
|     info: { | ||||
|       // 基本信息
 | ||||
|       assetNum: '资产编号', | ||||
|       sysNum: '系统编号', | ||||
|       serialNum: '序列号', | ||||
|       factory: '厂家', | ||||
|       proTime: '出厂日期', | ||||
|       // 安装信息
 | ||||
|       longitude: '经度', | ||||
|       siteName: '站址名称', | ||||
|       latitude: '纬度', | ||||
|       siteCode: '站址ID', | ||||
|       director: '代维负责人', | ||||
|       address: '地址', | ||||
|       // 动环信息
 | ||||
|       software: '软件信息', | ||||
|       imei: 'IMEI', | ||||
|       operator: '运营商', | ||||
|       hardware: '硬件信息', | ||||
|       imsi: 'IMSI', | ||||
|       company: '代维公司', | ||||
|       power: '功率', | ||||
|       logonTime: '注册时间', | ||||
|       agent: '代维人姓名', | ||||
|       rssi: '信号强度', | ||||
|       network: '网络状态', | ||||
|       phone: '代维人电话', | ||||
|       portCount: '接口数量', | ||||
|       online: '在线状态', | ||||
|       onLine: '在线', | ||||
|       outLine: '离线', | ||||
|     }, | ||||
|     sensor: { | ||||
|       deviceName: '设备名称', | ||||
|       model: '型号', | ||||
|       factory: '厂家', | ||||
|       director: '负责人', | ||||
|       phone: '联系方式', | ||||
|       owner: '业主信息', | ||||
|       // 温湿度监控
 | ||||
|       monitoring: '温湿度监控', | ||||
|       temperature: '温度', | ||||
|       humidity: '湿度', | ||||
|       status: '传感器状态', | ||||
|       noData: '暂无' | ||||
|     }, | ||||
|     UPS: { | ||||
|       monitor: 'UPS监控', | ||||
|       data1: '输入市电电压', | ||||
|       data2: '市电电压', | ||||
|       data3: '输出工作电压', | ||||
|       data4: '工作电压', | ||||
|       data5: '故障电压', | ||||
|       data6: '旁路模式', | ||||
|       data7: '输出负载', | ||||
|       data8: 'UPS故障', | ||||
|       data9: '电池电压', | ||||
|       data10: '机型属性', | ||||
|       data11: '电池负载百分比', | ||||
|       data12: 'UPS模式', | ||||
|       data13: '环境温度', | ||||
|       data14: 'UPS状态', | ||||
|       data15: '输入市电频率', | ||||
|       data16: '蜂鸣器', | ||||
|     }, | ||||
|     battery: { | ||||
|       monitor: '电池监控', | ||||
|       data1: '测量地址', | ||||
|       data2: '电压', | ||||
|       data3: '内阻', | ||||
|       data4: '温度', | ||||
|       data5: '工作状态', | ||||
|       data6: '充电', | ||||
|       data7: '放电', | ||||
|     }, | ||||
|     powerSupply: { | ||||
|       monitor: '电源监测', | ||||
|       data1: 'A相', | ||||
|       data2: 'B相', | ||||
|       data3: 'C相', | ||||
|       voltage: '电压', | ||||
|       current: '电流', | ||||
|       activePower: '有功功率', | ||||
|       reactivePower: '无功功率', | ||||
|       apparentPower: '视在功率', | ||||
|       powerFactor: '功率因子', | ||||
|       data4: 'A相电压', | ||||
|       data5: 'B相电压', | ||||
|       data6: 'C相电压', | ||||
|       data7: 'A相电流', | ||||
|       data8: 'B相电流', | ||||
|       data9: 'C相电流', | ||||
|       data10: 'A相有功功率', | ||||
|       data11: 'B相有功功率', | ||||
|       data12: 'C相有功功率', | ||||
|       data13: 'A相无功功率', | ||||
|       data14: 'B相无功功率', | ||||
|       data15: 'C相无功功率', | ||||
|       data16: 'A相视在功率', | ||||
|       data17: 'B相视在功率', | ||||
|       data18: 'C相视在功率', | ||||
|       data19: 'A相功率因子', | ||||
|       data20: 'B相功率因子', | ||||
|       data21: 'C相功率因子', | ||||
|       data22: '遥 调', | ||||
|       data23: '开 / 关', | ||||
|     }, | ||||
|     air: { | ||||
|       data1: '空调状态', | ||||
|       data2: '上限温度', | ||||
|       data3: '下限温度', | ||||
|       data4: '当前温度设置', | ||||
|       data5: '上限电流', | ||||
|       data6: '下限电流', | ||||
|       data7: '当前电流', | ||||
|       data8: '进风口温度', | ||||
|       data9: '出风口温度', | ||||
|       data10: '风速', | ||||
|       data11: '低', | ||||
|       data12: '中', | ||||
|       data13: '高', | ||||
|       data14: '模式', | ||||
|       data15: '制冷', | ||||
|       data16: '制热', | ||||
|       data17: '通风', | ||||
|     }, | ||||
|     electric: { | ||||
|       data1: '支路', | ||||
|       data2: '电压', | ||||
|       data3: '电流', | ||||
|       data4: '开关', | ||||
|       data5: '开', | ||||
|       data6: '关', | ||||
|     }, | ||||
|     video: { | ||||
|       data5: '实 况', | ||||
|       data6: '回 放', | ||||
|       data7: '云台', | ||||
|       data1: '变焦', | ||||
|       data2: '焦距', | ||||
|       data3: '光圈', | ||||
|     }, | ||||
|     water: { | ||||
|       monitor: 'monitoring', | ||||
|     }, | ||||
|   }, | ||||
|   // 机柜列表
 | ||||
|   cabinetList: { | ||||
|     deviceCode: '机柜编号', | ||||
|     typeName: '机柜类型', | ||||
|     siteName: '站址名称', | ||||
|     serialNum: '站址ID', | ||||
|     deptName: '区域', | ||||
|   }, | ||||
|   //告警
 | ||||
|   alarm: { | ||||
|     alarmInfo: '告警信息', | ||||
|     alarmLevel: '告警等级', | ||||
|     uploadTime: '告警时间', | ||||
|     notification: '告警通知', | ||||
|     status: '告警状态', | ||||
|     reset: '恢复', | ||||
|     leve1: '一级告警', | ||||
|     leve2: '二级告警', | ||||
|     leve3: '三级告警', | ||||
|     normal: '正常', | ||||
|     fault: '故障', | ||||
|     on: '开', | ||||
|     off: '关', | ||||
|     yes: '是', | ||||
|     no: '否', | ||||
|   }, | ||||
|   task: { | ||||
|     unpublished: '未发布', | ||||
|     notStarted: '未开始', | ||||
|     inProgress: '进行中', | ||||
|     suspend: '中止', | ||||
|     complete: '完成', | ||||
|     failed: '未通过', | ||||
|     toBeAccepted: '待验收', | ||||
|     timedOut: '已超时', | ||||
|     receive: '接收', | ||||
|     release: '发起', | ||||
| 
 | ||||
|     install: '安装', | ||||
|     dismantle: '拆除', | ||||
|     fault: '故障', | ||||
|     other: '其他', | ||||
| 
 | ||||
|     workOrder: '工单', | ||||
|     patrol: '巡检', | ||||
|     sonPatrol: '子巡检', | ||||
|     workOrderName: '工单名称', | ||||
|     patrolName: '巡检名称', | ||||
|     workOrderDevice: '工单设备', | ||||
|     patrolDevice: '巡检设备', | ||||
|     addWorkOrder: '新建工单', | ||||
|     addPatrol: '新建巡检', | ||||
|     editWorkOrder: '编辑工单', | ||||
|     editPatrol: '编辑巡检', | ||||
|     checkWorkOrder: '查看工单', | ||||
|     checkPatrol: '查看巡检', | ||||
|     sonCheckPatrol: '子巡检查看', | ||||
|     workOrderInfo: '工单信息', | ||||
|     patrolInfo: '巡检信息', | ||||
|     sonPatrolInfo: '子巡检信息', | ||||
|     workOrderIllustrate: '工单说明', | ||||
|     patrolIllustrate: '巡检说明', | ||||
|     workOrderStatus: '工单状态', | ||||
|     patrolStatus: '巡检状态', | ||||
|     cycle: '巡检周期', | ||||
|     sendReceive: '收发方式', | ||||
|     workOrderType: '工单类型', | ||||
|     workOrderTypeOther: "工单类型为'其他'时", | ||||
|     description: ', 请输入类型描述', | ||||
|     receivePhone: '接收人电话', | ||||
|     receiveName: '接收人', | ||||
|     checkName: '验收人', | ||||
|     applicationForAcceptance: '申请验收', | ||||
|     deviceNotEntered: '尚有设备未录入', | ||||
|     checkSuccess: '申请验收成功', | ||||
|     notDevHistorical: '还有设备没有录入历史记录!', | ||||
|     leastOneDevice: '请选择至少一个设备', | ||||
|     entry: '录入', | ||||
|     entrySuccess: '录入成功' | ||||
|   }, | ||||
|   upload: { | ||||
|     targetDevice: '目标设备', | ||||
|     operatorPosition: '操作人位置', | ||||
|     distanceDevice: '距离设备', | ||||
|     photo: '照片', | ||||
|     video: '视频', | ||||
|     audio: '音频', | ||||
|     characters: '文字', | ||||
|     uploadFile: '点击上传文件', | ||||
|     uploading: '文件上传中', | ||||
|     uploadFail: '上传失败', | ||||
|     doNotOperate: '请勿进行其他操作', | ||||
|     locationFile: '获取当前位置失败', | ||||
|     refuseToLocate: '用户拒绝地理定位请求', | ||||
|     imageFormat: '请上传图片格式的文件', | ||||
|     videoFormat: '请上传视频格式的文件', | ||||
|     audioFormat: '请上传音频格式的文件', | ||||
|   }, | ||||
|   historical: { | ||||
|     source: '信息来源', | ||||
|     name: '名称', | ||||
|     originator: '发起人', | ||||
|     userName: '操作人', | ||||
|     Nohistoricaldata: '无历史数据', | ||||
|     historicalTrajectory: '历史轨迹', | ||||
|     positiveRequence: '正序', | ||||
|     ReverseOrder: '倒序', | ||||
|   }, | ||||
|   pSelect: '请选择', | ||||
|   pEnter: '请输入', | ||||
|   lang: '语言', | ||||
|   changelangtip: '语言已切换', | ||||
|   currentVersion: '当前版本', | ||||
|   updateVersion: '更新版本', | ||||
|   startTime: '开始日期', | ||||
|   endTime: '结束日期', | ||||
|   permission: '暂无此权限' | ||||
| } | ||||
|  | @ -0,0 +1,63 @@ | |||
| import Vue from "vue" | ||||
| import Vant from "vant" | ||||
| import { Lazyload } from 'vant'; | ||||
| import "vant/lib/index.css" | ||||
| import 'vant/lib/index.less' | ||||
| 
 | ||||
| 
 | ||||
| import router from "./router" | ||||
| import store from "./store" | ||||
| 
 | ||||
| import App from "./App.vue" | ||||
| import InfoBlock from "./components/InfoBlock.vue" | ||||
| import ProductList from "./components/ProductList.vue" | ||||
| import GoodsList from "./components/GoodsList.vue" | ||||
| import AddressList from "./components/AddressList.vue" | ||||
| import Register from "./components/Register.vue" | ||||
| import Splash from "./views/Splash.vue" | ||||
| 
 | ||||
| Vue.use(Vant) | ||||
| Vue.use(Lazyload) | ||||
| Vue.component("info-block", InfoBlock) | ||||
| Vue.component("product-list", ProductList) | ||||
| Vue.component("goods-list", GoodsList) | ||||
| Vue.component("address-list", AddressList) | ||||
| Vue.component("register", Register) | ||||
| Vue.component("v-splash", Splash) | ||||
| 
 | ||||
| // 引入element
 | ||||
| import Element from "element-ui" | ||||
| Vue.use(Element) | ||||
| 
 | ||||
| // 阿里巴巴图标库
 | ||||
| import "@/assets/fonts/iconfont.css" | ||||
| import "@/assets/fonts/iconfont.js" | ||||
| // 公共样式
 | ||||
| import "@/styles/index.scss" // global css
 | ||||
| 
 | ||||
| // 引入中英文
 | ||||
| import { i18n, vantLocales } from "./lang/index" | ||||
| // vant-ui组件国际化
 | ||||
| vantLocales(i18n.locale) | ||||
| // permission control
 | ||||
| import "./utils/permission" | ||||
| 
 | ||||
| Vue.config.productionTip = false | ||||
| 
 | ||||
| /* 路由异常错误处理,尝试解析一个异步组件时发生错误,重新渲染目标页面 */ | ||||
| // router.onError((error) => {
 | ||||
| //   const pattern = /Loading chunk (\d)+ failed/g;
 | ||||
| //   const isChunkLoadFailed = error.message.match(pattern);
 | ||||
| //   const targetPath = router.history.pending.fullPath;
 | ||||
| //   console.log(targetPath)
 | ||||
| //   if (isChunkLoadFailed) {
 | ||||
| //     router.replace(targetPath);
 | ||||
| //   }
 | ||||
| // });
 | ||||
| 
 | ||||
| new Vue({ | ||||
|   router, | ||||
|   store, | ||||
|   i18n, | ||||
|   render: (h) => h(App) | ||||
| }).$mount("#app") | ||||
|  | @ -0,0 +1,110 @@ | |||
| import Vue from "vue" | ||||
| import Router from "vue-router" | ||||
| import Index from '@/views/Index.vue' | ||||
| 
 | ||||
| Vue.use(Router) | ||||
| 
 | ||||
| /* Layout */ | ||||
| 
 | ||||
| export const constantRoutes = [{ | ||||
|   path: '/', | ||||
|   component: Index, | ||||
|   children: [ | ||||
|     { | ||||
|       path: 'home', | ||||
|       name: 'index', | ||||
|       component: () => import("@/views/home/Index"), | ||||
|     }, | ||||
|     //   {
 | ||||
|     //     path: "/404",
 | ||||
|     //     component: () => import("@/views/errorPage/404"),
 | ||||
|     //     hidden: true,
 | ||||
|     //   },
 | ||||
|     //   {
 | ||||
|     //     path: "/401",
 | ||||
|     //     component: () => import("@/views/errorPage/401"),
 | ||||
|     //     hidden: true,
 | ||||
|     //   },
 | ||||
|     { | ||||
|       path: "/homePage", | ||||
|       component: () => import('@/views/homePage/Index.vue'), | ||||
|       hidden: true, | ||||
|       meta: { | ||||
|         title: "工作台", | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       path: "/setUp", | ||||
|       component: () => import("@/views/setUp/Index"), | ||||
|       hidden: true, | ||||
|       meta: { | ||||
|         title: "我的", | ||||
|       } | ||||
|     }, | ||||
|     // {
 | ||||
|     //   path: 'credit',
 | ||||
|     //   name: 'index-credit',
 | ||||
|     //   component: () => import( /* webpackChunkName: "product" */ '@/views/credit/Index.vue')
 | ||||
|     // },
 | ||||
|     // {
 | ||||
|     //   path: 'cart',
 | ||||
|     //   name: 'index-cart',
 | ||||
|     //   component: () => import( /* webpackChunkName: "product" */ '@/views/order/Cart.vue')
 | ||||
|     // },
 | ||||
|     // {
 | ||||
|     //   path: 'member',
 | ||||
|     //   name: 'index-member',
 | ||||
|     //   component: () => import( /* webpackChunkName: "member" */ '@/views/member/Index.vue')
 | ||||
|     // }
 | ||||
|   ] | ||||
| }, | ||||
| { | ||||
|   path: '/playblack', | ||||
|   name: 'playblack', | ||||
|   component: () => import( /* webpackChunkName: "product" */ '@/views/device/playblack'), | ||||
|   hidden: true, | ||||
|   meta: { | ||||
|     title: "playblack", | ||||
|   } | ||||
| }, | ||||
| { | ||||
|   path: '/record', | ||||
|   name: 'record', | ||||
|   component: () => import( /* webpackChunkName: "product" */ '@/views/device/record'), | ||||
|   hidden: true, | ||||
|   meta: { | ||||
|     title: "record", | ||||
|   } | ||||
| }, | ||||
| { | ||||
|   path: "/login", | ||||
|   component: () => import("@/views/login/Index"), | ||||
|   hidden: true, | ||||
| }, | ||||
| // {
 | ||||
| //   path: '/pass',
 | ||||
| //   name: 'setUp-pass',
 | ||||
| //   component: () => import( /* webpackChunkName: "member" */ '@/views/setUp/passWord.vue')
 | ||||
| // },
 | ||||
| 
 | ||||
| 
 | ||||
| { | ||||
|   path: '/deviceInfo', | ||||
|   name: 'deviceInfo', | ||||
|   component: () => import( /* webpackChunkName: "member" */ '@/views/device/Info.vue') | ||||
| }, | ||||
| 
 | ||||
| 
 | ||||
| ] | ||||
| const originalPush = Router.prototype.push | ||||
| //修改原型对象中的push方法
 | ||||
| Router.prototype.push = function push(location) { | ||||
|   return originalPush.call(this, location).catch((err) => err) | ||||
| } | ||||
| export default new Router({ | ||||
|   mode: "hash", | ||||
|   scrollBehavior: () => ({ | ||||
|     y: 0, | ||||
|   }), | ||||
|   routes: constantRoutes, | ||||
| }) | ||||
|  | @ -0,0 +1,15 @@ | |||
| const getters = { | ||||
|   sidebar: state => state.app.sidebar, | ||||
|   token: state => state.user.token, | ||||
|   userName: state => state.user.userName, | ||||
|   visitedViews: state => state.tagsView.visitedViews, | ||||
|   cachedViews: state => state.tagsView.cachedViews, | ||||
|   roles: state => state.user.roles, | ||||
|   butPermission: state => state.user.butPermission, | ||||
|   permissionList: state => state.user.permissionList, | ||||
|   permissionLevel: state => state.user.permissionLevel, | ||||
|   permission_routes: state => state.permission.routes, | ||||
|   admin_routes: state => state.permission.adminRoutes, | ||||
|   urls: state => state.user.urls, | ||||
| } | ||||
| export default getters  | ||||
|  | @ -0,0 +1,30 @@ | |||
| import Vue from "vue" | ||||
| import Vuex from "vuex" | ||||
| import getters from "./getters" | ||||
| import app from "./modules/app" | ||||
| import gis from "./modules/gis" | ||||
| import user from "./modules/user" | ||||
| import map from "./modules/map" | ||||
| import permission from "./modules/permission" | ||||
| import tagsView from "./modules/tagsView" | ||||
| import alarm from "./modules/alarm" | ||||
| import device from "./modules/device" | ||||
| 
 | ||||
| Vue.use(Vuex) | ||||
| 
 | ||||
| export default new Vuex.Store({ | ||||
|   modules: { | ||||
|     app, | ||||
|     user, | ||||
|     gis, | ||||
|     permission, | ||||
|     tagsView, | ||||
|     map, | ||||
|     alarm, | ||||
|     device, | ||||
|   }, | ||||
|   getters, | ||||
|   state: {}, | ||||
|   mutations: {}, | ||||
|   actions: {}, | ||||
| }) | ||||
|  | @ -0,0 +1,7 @@ | |||
| const alarm = { | ||||
|   state: { | ||||
|     workForm: null, | ||||
|     workDialog: false | ||||
|   } | ||||
| }; | ||||
| export default alarm; | ||||
|  | @ -0,0 +1,24 @@ | |||
| import Cookies from "js-cookie" | ||||
| 
 | ||||
| const app = { | ||||
|   state: { | ||||
|     isCollapse: Cookies.get("isCollapse") ? !!+Cookies.get("isCollapse") : false, | ||||
|   }, | ||||
|   mutations: { | ||||
|     TOGGLE_SIDEBAR: (state) => { | ||||
|       state.isCollapse = !state.isCollapse | ||||
|       if (state.isCollapse) { | ||||
|         Cookies.set("isCollapse", 1) | ||||
|       } else { | ||||
|         Cookies.set("isCollapse", 0) | ||||
|       } | ||||
|     }, | ||||
|   }, | ||||
|   actions: { | ||||
|     toggleSideBar({ commit }) { | ||||
|       commit("TOGGLE_SIDEBAR") | ||||
|     }, | ||||
|   }, | ||||
| } | ||||
| 
 | ||||
| export default app | ||||
|  | @ -0,0 +1,26 @@ | |||
| const device = { | ||||
|   state: { | ||||
|     deviceId: null, | ||||
|     deviceName: null, | ||||
|     deviceCode: null, | ||||
|     regulatCode: null, | ||||
|     signType: null, | ||||
|     actionType: null, | ||||
|     action: { | ||||
|       text: null, | ||||
|       value: null | ||||
|     }, | ||||
|     dispatcherName: 'receiveName', // 工单默认方式 接收'receiveName' 发起'releaseName'
 | ||||
|     orderForm: {}, // 新建工单选择设备时,回显已填写的工单信息
 | ||||
|     patrolForm: {}, // 新建巡检选择设备时,回显已填写的巡检信息
 | ||||
|     addDeviceList: [], // 工单、巡检用 新添加的设备列表
 | ||||
|     checkedDeviceList: [], // 工单、巡检用: 已经选中的设备列表
 | ||||
|     orderType: null, // 工单状态 新增修改
 | ||||
|     patrolType: null, // 工单状态 新增修改
 | ||||
|     alarmOrder: 'normal', // alarm 告警工单  normal 正常工单 
 | ||||
|     moveCode: null, | ||||
|     deviceSerial: null, | ||||
|     channelNo: null, | ||||
|   } | ||||
| }; | ||||
| export default device; | ||||
|  | @ -0,0 +1,8 @@ | |||
| const alarm = { | ||||
|     state: { | ||||
|         form: null, | ||||
|         deviceId: '', | ||||
|         deviceName: 'HJ0001' | ||||
|     } | ||||
| }; | ||||
| export default alarm; | ||||