├── .gitattributes ├── .idea ├── .gitignore ├── EIS.iml ├── modules.xml └── vcs.xml ├── LICENSE ├── README.md ├── eis ├── eis_64 ├── go.mod ├── go.sum ├── install.sh ├── main.go ├── model └── model.go ├── service └── eip.go ├── static ├── layui.css └── result │ └── placeholder └── views └── index.html /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # Editor-based HTTP Client requests 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | -------------------------------------------------------------------------------- /.idea/EIS.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Easy Input Shaper UI 2 | 3 | It provide a web-ui for running `SHAPER_CALIBRATE` and generate charts. 4 | 5 | ![image-20230426104629163](https://img.mpx.wiki/i/2023/04/26/6448908838c9c.webp) 6 | 7 | ![image-20230426105049366](https://img.mpx.wiki/i/2023/04/26/6448918c644f5.webp) 8 | 9 | 10 | 11 | ## Usage 12 | 13 | ### Install 14 | 15 | > The current executable only works on ARM. If you use it on x86, you need to compile it yourself. 16 | 17 | ```shell 18 | cd ~ 19 | git clone https://github.com/MagicPhoenix/EIS 20 | cd EIS 21 | chmod +x ./eis 22 | chmod +x install.sh 23 | sudo ./install.sh 24 | nohup ./eis & 25 | ``` 26 | 27 | Open http://\:8080 28 | 29 | Set Socket Config and Path Config 30 | 31 | > Only need to set them once, and it will be saved automatically. 32 | 33 | You can see socket address here 34 | 35 | ![image-20230426111842338](https://img.mpx.wiki/i/2023/04/26/64489814881e9.webp) 36 | 37 | ![image-20230426111854094](https://img.mpx.wiki/i/2023/04/26/6448981fb07cf.webp) 38 | 39 | ![image-20230426112046247](https://img.mpx.wiki/i/2023/04/26/64489890f037c.webp) 40 | 41 | Path is your klipper path, usually it's `/home/pi/klipper`, for CB1 it's `/home/biqu/klipper` 42 | 43 | ![image-20230426112136416](https://img.mpx.wiki/i/2023/04/26/644898c2c4d69.webp) 44 | 45 | That's all, now you can click ` +New Test` , when it shows 100% Command completed, just refresh the webpage. 46 | 47 | ** Must home and qgl before test 48 | 49 | 50 | 51 | ### Compile 52 | 53 | If the stock binary file does not work, you can try compiling it 54 | 55 | ```shell 56 | cd ~ 57 | git clone https://github.com/MagicPhoenix/EIS 58 | cd EIS 59 | wget -qO- https://raw.githubusercontent.com/voidint/g/master/install.sh | bash 60 | source /home/pi/.g/env 61 | g install 1.18 62 | go mod tidy 63 | rm eis 64 | go build -o eis main.go 65 | chmod +x eis 66 | 67 | ``` 68 | 69 | Then follow `Install` above 70 | 71 | ## PR 72 | 73 | Welcome any PR. -------------------------------------------------------------------------------- /eis: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicPhoenix/EIS/8ad3f6a4c937e1246797a564f7cf788f6ea994bb/eis -------------------------------------------------------------------------------- /eis_64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicPhoenix/EIS/8ad3f6a4c937e1246797a564f7cf788f6ea994bb/eis_64 -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module EIP 2 | 3 | go 1.18 4 | 5 | require ( 6 | github.com/kataras/iris/v12 v12.2.0 7 | gorm.io/driver/sqlite v1.5.0 8 | gorm.io/gorm v1.25.0 9 | ) 10 | 11 | require ( 12 | github.com/BurntSushi/toml v1.2.1 // indirect 13 | github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect 14 | github.com/CloudyKit/jet/v6 v6.2.0 // indirect 15 | github.com/Joker/jade v1.1.3 // indirect 16 | github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 // indirect 17 | github.com/andybalholm/brotli v1.0.5 // indirect 18 | github.com/aymerick/douceur v0.2.0 // indirect 19 | github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 // indirect 20 | github.com/fatih/structs v1.1.0 // indirect 21 | github.com/flosch/pongo2/v4 v4.0.2 // indirect 22 | github.com/gobwas/httphead v0.1.0 // indirect 23 | github.com/gobwas/pool v0.2.1 // indirect 24 | github.com/gobwas/ws v1.1.0 // indirect 25 | github.com/golang/snappy v0.0.4 // indirect 26 | github.com/google/uuid v1.3.0 // indirect 27 | github.com/gorilla/css v1.0.0 // indirect 28 | github.com/gorilla/websocket v1.5.0 // indirect 29 | github.com/iris-contrib/go.uuid v2.0.0+incompatible // indirect 30 | github.com/iris-contrib/schema v0.0.6 // indirect 31 | github.com/jinzhu/inflection v1.0.0 // indirect 32 | github.com/jinzhu/now v1.1.5 // indirect 33 | github.com/josharian/intern v1.0.0 // indirect 34 | github.com/kataras/blocks v0.0.7 // indirect 35 | github.com/kataras/golog v0.1.8 // indirect 36 | github.com/kataras/neffos v0.0.21 // indirect 37 | github.com/kataras/pio v0.0.11 // indirect 38 | github.com/kataras/sitemap v0.0.6 // indirect 39 | github.com/kataras/tunnel v0.0.4 // indirect 40 | github.com/klauspost/compress v1.16.0 // indirect 41 | github.com/kr/pretty v0.1.0 // indirect 42 | github.com/mailgun/raymond/v2 v2.0.48 // indirect 43 | github.com/mailru/easyjson v0.7.7 // indirect 44 | github.com/mattn/go-sqlite3 v1.14.15 // indirect 45 | github.com/mediocregopher/radix/v3 v3.8.1 // indirect 46 | github.com/microcosm-cc/bluemonday v1.0.23 // indirect 47 | github.com/nats-io/nats.go v1.23.0 // indirect 48 | github.com/nats-io/nkeys v0.3.0 // indirect 49 | github.com/nats-io/nuid v1.0.1 // indirect 50 | github.com/russross/blackfriday/v2 v2.1.0 // indirect 51 | github.com/schollz/closestmatch v2.1.0+incompatible // indirect 52 | github.com/sergi/go-diff v1.1.0 // indirect 53 | github.com/sirupsen/logrus v1.8.1 // indirect 54 | github.com/tdewolff/minify/v2 v2.12.4 // indirect 55 | github.com/tdewolff/parse/v2 v2.6.4 // indirect 56 | github.com/valyala/bytebufferpool v1.0.0 // indirect 57 | github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect 58 | github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect 59 | github.com/yosssi/ace v0.0.5 // indirect 60 | golang.org/x/crypto v0.7.0 // indirect 61 | golang.org/x/net v0.8.0 // indirect 62 | golang.org/x/sys v0.6.0 // indirect 63 | golang.org/x/text v0.8.0 // indirect 64 | golang.org/x/time v0.3.0 // indirect 65 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect 66 | google.golang.org/protobuf v1.29.0 // indirect 67 | gopkg.in/ini.v1 v1.67.0 // indirect 68 | gopkg.in/yaml.v3 v3.0.1 // indirect 69 | ) 70 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= 2 | github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= 3 | github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= 4 | github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= 5 | github.com/CloudyKit/jet/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= 6 | github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= 7 | github.com/Joker/hpp v1.0.0 h1:65+iuJYdRXv/XyN62C1uEmmOx3432rNG/rKlX6V7Kkc= 8 | github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= 9 | github.com/Joker/jade v1.1.3 h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk= 10 | github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= 11 | github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0= 12 | github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM= 13 | github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= 14 | github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= 15 | github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= 16 | github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= 17 | github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= 18 | github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= 19 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 20 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 21 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 22 | github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE= 23 | github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= 24 | github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o= 25 | github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= 26 | github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= 27 | github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= 28 | github.com/flosch/pongo2/v4 v4.0.2 h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw= 29 | github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= 30 | github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= 31 | github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= 32 | github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= 33 | github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= 34 | github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= 35 | github.com/gobwas/ws v1.1.0 h1:7RFti/xnNkMJnrK7D1yQ/iCIB5OrrY/54/H930kIbHA= 36 | github.com/gobwas/ws v1.1.0/go.mod h1:nzvNcVha5eUziGrbxFCo6qFIojQHjJV5cLYIbezhfL0= 37 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 38 | github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= 39 | github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= 40 | github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 41 | github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= 42 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 43 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= 44 | github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= 45 | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 46 | github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= 47 | github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= 48 | github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= 49 | github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 50 | github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= 51 | github.com/iris-contrib/go.uuid v2.0.0+incompatible h1:XZubAYg61/JwnJNbZilGjf3b3pB80+OQg2qf6c8BfWE= 52 | github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= 53 | github.com/iris-contrib/httpexpect/v2 v2.12.1 h1:3cTZSyBBen/kfjCtgNFoUKi1u0FVXNaAjyRJOo6AVS4= 54 | github.com/iris-contrib/schema v0.0.6 h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw= 55 | github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= 56 | github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= 57 | github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= 58 | github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= 59 | github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= 60 | github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= 61 | github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= 62 | github.com/kataras/blocks v0.0.7 h1:cF3RDY/vxnSRezc7vLFlQFTYXG/yAr1o7WImJuZbzC4= 63 | github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I= 64 | github.com/kataras/golog v0.1.8 h1:isP8th4PJH2SrbkciKnylaND9xoTtfxv++NB+DF0l9g= 65 | github.com/kataras/golog v0.1.8/go.mod h1:rGPAin4hYROfk1qT9wZP6VY2rsb4zzc37QpdPjdkqVw= 66 | github.com/kataras/iris/v12 v12.2.0 h1:WzDY5nGuW/LgVaFS5BtTkW3crdSKJ/FEgWnxPnIVVLI= 67 | github.com/kataras/iris/v12 v12.2.0/go.mod h1:BLzBpEunc41GbE68OUaQlqX4jzi791mx5HU04uPb90Y= 68 | github.com/kataras/neffos v0.0.21 h1:UwN/F44jlqdtgFI29y3VhA7IlJ4JbK3UjCbTDg1pYoo= 69 | github.com/kataras/neffos v0.0.21/go.mod h1:FeGka8lu8cjD2H+0OpBvW8c6xXawy3fj5VX6xcIJ1Fg= 70 | github.com/kataras/pio v0.0.11 h1:kqreJ5KOEXGMwHAWHDwIl+mjfNCPhAwZPa8gK7MKlyw= 71 | github.com/kataras/pio v0.0.11/go.mod h1:38hH6SWH6m4DKSYmRhlrCJ5WItwWgCVrTNU62XZyUvI= 72 | github.com/kataras/sitemap v0.0.6 h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY= 73 | github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4= 74 | github.com/kataras/tunnel v0.0.4 h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA= 75 | github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= 76 | github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= 77 | github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= 78 | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 79 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 80 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 81 | github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= 82 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 83 | github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= 84 | github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= 85 | github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= 86 | github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= 87 | github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= 88 | github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= 89 | github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= 90 | github.com/mediocregopher/radix/v3 v3.8.1 h1:rOkHflVuulFKlwsLY01/M2cM2tWCjDoETcMqKbAWu1M= 91 | github.com/mediocregopher/radix/v3 v3.8.1/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= 92 | github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= 93 | github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= 94 | github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= 95 | github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= 96 | github.com/nats-io/jwt/v2 v2.3.0 h1:z2mA1a7tIf5ShggOFlR1oBPgd6hGqcDYsISxZByUzdI= 97 | github.com/nats-io/nats-server/v2 v2.9.11 h1:4y5SwWvWI59V5mcqtuoqKq6L9NDUydOP3Ekwuwl8cZI= 98 | github.com/nats-io/nats.go v1.23.0 h1:lR28r7IX44WjYgdiKz9GmUeW0uh/m33uD3yEjLZ2cOE= 99 | github.com/nats-io/nats.go v1.23.0/go.mod h1:ki/Scsa23edbh8IRZbCuNXR9TDcbvfaSijKtaqQgw+Q= 100 | github.com/nats-io/nkeys v0.3.0 h1:cgM5tL53EvYRU+2YLXIK0G2mJtK12Ft9oeooSZMA2G8= 101 | github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= 102 | github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= 103 | github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= 104 | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 105 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 106 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 107 | github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= 108 | github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= 109 | github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= 110 | github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= 111 | github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= 112 | github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= 113 | github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= 114 | github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= 115 | github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= 116 | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 117 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 118 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 119 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 120 | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 121 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 122 | github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= 123 | github.com/tdewolff/minify/v2 v2.12.4 h1:kejsHQMM17n6/gwdw53qsi6lg0TGddZADVyQOz1KMdE= 124 | github.com/tdewolff/minify/v2 v2.12.4/go.mod h1:h+SRvSIX3kwgwTFOpSckvSxgax3uy8kZTSF1Ojrr3bk= 125 | github.com/tdewolff/parse/v2 v2.6.4 h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ= 126 | github.com/tdewolff/parse/v2 v2.6.4/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs= 127 | github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM= 128 | github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= 129 | github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= 130 | github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 131 | github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= 132 | github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= 133 | github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= 134 | github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= 135 | github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= 136 | github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= 137 | github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= 138 | github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= 139 | github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA= 140 | github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= 141 | github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= 142 | github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= 143 | github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= 144 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 145 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 146 | golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= 147 | golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= 148 | golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= 149 | golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= 150 | golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 151 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 152 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 153 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 154 | golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 155 | golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= 156 | golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= 157 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 158 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 159 | golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= 160 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 161 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 162 | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 163 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 164 | golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 165 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 166 | golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 167 | golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 168 | golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= 169 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 170 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 171 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 172 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 173 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 174 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 175 | golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= 176 | golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= 177 | golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= 178 | golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 179 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 180 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 181 | golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= 182 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 183 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 184 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 185 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= 186 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 187 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= 188 | google.golang.org/protobuf v1.29.0 h1:44S3JjaKmLEE4YIkjzexaP+NzZsudE3Zin5Njn/pYX0= 189 | google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 190 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 191 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 192 | gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 193 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= 194 | gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= 195 | gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= 196 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 197 | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 198 | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 199 | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 200 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 201 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 202 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 203 | gorm.io/driver/sqlite v1.5.0 h1:zKYbzRCpBrT1bNijRnxLDJWPjVfImGEn0lSnUY5gZ+c= 204 | gorm.io/driver/sqlite v1.5.0/go.mod h1:kDMDfntV9u/vuMmz8APHtHF0b4nyBB7sfCieC6G8k8I= 205 | gorm.io/gorm v1.24.7-0.20230306060331-85eaf9eeda11/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= 206 | gorm.io/gorm v1.25.0 h1:+KtYtb2roDz14EQe4bla8CbQlmb9dN3VejSai3lprfU= 207 | gorm.io/gorm v1.25.0/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= 208 | moul.io/http2curl/v2 v2.3.0 h1:9r3JfDzWPcbIklMOs2TnIFzDYvfAZvjeavG6EzP7jYs= 209 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rc_local_file="/etc/rc.local" 4 | actual_user=$(logname) 5 | user_home=$(eval echo ~${actual_user}) 6 | eis_command="cd $user_home/eis && nohup ./eis &" 7 | 8 | if [ -f "$rc_local_file" ]; then 9 | if ! grep -q "$eis_command" "$rc_local_file"; then 10 | sed -i "/^exit 0/i $eis_command" "$rc_local_file" 11 | echo "Added Done" 12 | else 13 | echo "EIS command already exists in $rc_local_file" 14 | fi 15 | else 16 | echo -e "#!/bin/sh -e\n$eis_command\nexit 0" > "$rc_local_file" 17 | chmod +x "$rc_local_file" 18 | echo "Created $rc_local_file with EIS command" 19 | fi 20 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "EIP/model" 5 | "EIP/service" 6 | "github.com/kataras/iris/v12" 7 | "github.com/kataras/iris/v12/websocket" 8 | "log" 9 | "strconv" 10 | "strings" 11 | "time" 12 | ) 13 | 14 | var unixSocket string 15 | var klipperPath string 16 | var messageChan = make(chan string) 17 | var conns []*websocket.Conn 18 | 19 | func main() { 20 | getConfig() 21 | 22 | ws := websocket.New(websocket.DefaultGorillaUpgrader, websocket.Events{ 23 | websocket.OnNativeMessage: func(nsConn *websocket.NSConn, msg websocket.Message) error { 24 | return nil 25 | }, 26 | }) 27 | 28 | ws.OnConnect = func(c *websocket.Conn) error { 29 | conns = append(conns, c) 30 | for { 31 | message := <-messageChan 32 | mg := websocket.Message{ 33 | Body: []byte(message), 34 | IsNative: true, 35 | } 36 | for _, conn := range conns { 37 | go conn.Write(mg) 38 | } 39 | } 40 | return nil 41 | } 42 | 43 | app := iris.New() 44 | tmpl := iris.HTML("./views", ".html") 45 | // Set custom delimeters. 46 | tmpl.Delims("{{", "}}") 47 | //tmpl.Reload(true) 48 | 49 | app.RegisterView(tmpl) 50 | 51 | app.Get("/", home) 52 | app.Get("/report/{ctime:int64}", report) 53 | 54 | app.Get("/ws", websocket.Handler(ws)) 55 | app.Post("/config/socket", socketConfig) 56 | app.Post("/config/path", pathConfig) 57 | app.Post("/report/rename", reName) 58 | app.Post("/report/del", del) 59 | app.Post("/newCalibrate", calibrate) 60 | 61 | app.HandleDir("/static", iris.Dir("./static")) 62 | 63 | app.Listen(":8080") 64 | } 65 | 66 | func home(ctx iris.Context) { 67 | 68 | records := model.GetRecords() 69 | if len(records) > 0 { 70 | ctx.ViewData("records", records) 71 | ctx.ViewData("cTime", records[len(records)-1].Time) 72 | 73 | } 74 | 75 | if err := ctx.View("index.html"); err != nil { 76 | ctx.HTML("

%s

", err.Error()) 77 | 78 | } 79 | } 80 | 81 | func report(ctx iris.Context) { 82 | cTime, err := ctx.Params().GetInt64("ctime") 83 | if err != nil { 84 | ctx.StatusCode(500) 85 | } 86 | // query 87 | records := model.GetRecords() 88 | 89 | new := true 90 | for i := range records { 91 | if records[i].Time == cTime { 92 | new = false 93 | break 94 | } 95 | } 96 | 97 | ctx.ViewData("records", records) 98 | ctx.ViewData("cTime", cTime) 99 | 100 | ctx.ViewData("cTimeStr", time.Unix(cTime, 0).Format("2006-01-02 15:04")) 101 | ctx.ViewData("new", new) 102 | if err := ctx.View("index.html"); err != nil { 103 | ctx.HTML("

%s

", err.Error()) 104 | 105 | } 106 | } 107 | 108 | func socketConfig(ctx iris.Context) { 109 | unixSocket = ctx.PostValue("input") 110 | log.Println(unixSocket) 111 | model.UpdateSocket(unixSocket) 112 | ctx.JSON(iris.Map{"message": "OK"}) 113 | } 114 | func pathConfig(ctx iris.Context) { 115 | klipperPath = ctx.PostValue("input") 116 | 117 | klipperPath = strings.TrimRight(klipperPath, "/") 118 | if !strings.HasSuffix(klipperPath, "/") { 119 | klipperPath += "/" 120 | } 121 | 122 | log.Println(klipperPath) 123 | model.UpdatePath(klipperPath) 124 | ctx.JSON(iris.Map{"message": "OK"}) 125 | } 126 | func reName(ctx iris.Context) { 127 | newName := ctx.PostValue("name") 128 | cTime, _ := ctx.PostValueInt64("ctime") 129 | model.UpdateName(newName, cTime) 130 | //ctx.Redirect("/record/" + strconv.FormatInt(cTime, 10)) 131 | ctx.JSON(iris.Map{"message": "OK"}) 132 | 133 | } 134 | 135 | func del(ctx iris.Context) { 136 | cTime, _ := ctx.PostValueInt64("ctime") 137 | model.DelRecord(cTime) 138 | ctx.Redirect("/") 139 | } 140 | 141 | func calibrate(ctx iris.Context) { 142 | cTime := time.Now().Unix() 143 | service.NewCalibrate(unixSocket, klipperPath, messageChan, cTime) 144 | ctx.Redirect("/report/"+strconv.FormatInt(cTime, 10), iris.StatusFound) 145 | 146 | } 147 | 148 | func getConfig() { 149 | unixSocket, klipperPath = model.GetConfig() 150 | } -------------------------------------------------------------------------------- /model/model.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import ( 4 | "gorm.io/driver/sqlite" 5 | "gorm.io/gorm" 6 | "log" 7 | ) 8 | 9 | var db *gorm.DB 10 | 11 | type Record struct { 12 | gorm.Model 13 | XAxis string 14 | YAxis string 15 | Time int64 16 | Name string 17 | } 18 | type Setting struct { 19 | gorm.Model 20 | Socket string 21 | Path string 22 | } 23 | 24 | func init() { 25 | var err error 26 | db, err = gorm.Open(sqlite.Open("data.db"), &gorm.Config{}) 27 | if err != nil { 28 | log.Fatalln(err) 29 | } 30 | 31 | // Migrate the schema 32 | err = db.AutoMigrate(&Record{}, &Setting{}) 33 | if err != nil { 34 | log.Fatalln(err) 35 | } 36 | log.Println("db connected") 37 | // Create 38 | //db.Create(&Product{Code: "D42", Price: 100}) 39 | 40 | //// Read 41 | //var product Product 42 | //, 1db.First(&product) // find product with integer primary key 43 | //db.First(&product, "code = ?", "D42") // find product with code D42 44 | // 45 | //// Update - update product's price to 200 46 | //db.Model(&product).Update("Price", 200) 47 | //// Update - update multiple fields 48 | //db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fields 49 | //db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"}) 50 | // 51 | //// Delete - delete product 52 | //db.Delete(&product, 1) 53 | } 54 | 55 | func UpdateSocket(addr string) { 56 | var setting Setting 57 | db.First(&setting) 58 | setting.Socket = addr 59 | if setting.ID < 0 { 60 | db.Create(&setting) 61 | } 62 | db.Save(&setting) 63 | } 64 | 65 | func UpdatePath(path string) { 66 | var setting Setting 67 | db.First(&setting) 68 | setting.Path = path 69 | if setting.ID < 0 { 70 | db.Create(&setting) 71 | } 72 | db.Save(&setting) 73 | } 74 | 75 | func GetConfig() (string, string) { 76 | var setting Setting 77 | db.First(&setting) 78 | if setting.ID > 0 { 79 | return setting.Socket, setting.Path 80 | } 81 | return "", "" 82 | } 83 | 84 | func NewRecord(nRecord Record) { 85 | db.Save(&nRecord) 86 | } 87 | 88 | func GetRecords() []Record { 89 | var records []Record 90 | db.Order("time desc").Find(&records) 91 | return records 92 | 93 | } 94 | 95 | func UpdateName(newName string, cTime int64) { 96 | db.Model(&Record{}).Where("time = ?", cTime).Update("name", newName) 97 | 98 | //if record.ID > 0 { 99 | // record.Name = newName 100 | // db.Save(&record) 101 | //} 102 | } 103 | 104 | func DelRecord(cTime int64) { 105 | db.Unscoped().Delete(&Record{}, "time = ?", cTime) 106 | 107 | } 108 | -------------------------------------------------------------------------------- /service/eip.go: -------------------------------------------------------------------------------- 1 | package service 2 | 3 | import ( 4 | "EIP/model" 5 | "bufio" 6 | "encoding/json" 7 | "gorm.io/gorm" 8 | "log" 9 | "net" 10 | "os/exec" 11 | "strconv" 12 | "strings" 13 | "time" 14 | ) 15 | 16 | func NewCalibrate(unixAddr, klipperPath string, messageChan chan string, cTime int64) (bool, string) { 17 | // new input shaper calibrate 18 | log.Println("start calibrate") 19 | conn, err := net.DialTimeout("unix", unixAddr, 2*time.Second) 20 | if err != nil { 21 | 22 | messageChan <- "0% " + err.Error() 23 | return false, "Can't Connect to Socket!" 24 | } 25 | // Reader 26 | go func() { 27 | reader := bufio.NewReader(conn) 28 | // totally 292 lines 29 | line := 0 30 | xFilename := "" 31 | yFilename := "" 32 | scriptPath := klipperPath + "scripts/calibrate_shaper.py" 33 | for { 34 | line = line + 1 35 | currentPercent := strconv.Itoa(line * 100 / 300) 36 | message, err := reader.ReadString('\x03') 37 | if err != nil { 38 | log.Println("error reading:", err) 39 | conn.Close() 40 | return 41 | } 42 | clearMessage := strings.TrimRight(message, "\x03") 43 | 44 | var response map[string]interface{} 45 | err = json.Unmarshal([]byte(clearMessage), &response) 46 | if err != nil { 47 | messageChan <- "0% " + err.Error() 48 | conn.Close() 49 | return 50 | } 51 | 52 | if errorData, ok := response["error"]; ok { 53 | errorMessage := errorData.(map[string]interface{})["message"].(string) 54 | messageChan <- "0% " + errorMessage 55 | conn.Close() 56 | return 57 | } else if paramsData, ok := response["params"]; ok { 58 | responseMessage := paramsData.(map[string]interface{})["response"].(string) 59 | messageChan <- currentPercent + "% " + responseMessage 60 | 61 | // find csv and save_config str 62 | if xFilename == "" { 63 | xFilename = getFileName(responseMessage) 64 | } else { 65 | if yFilename == "" { 66 | yFilename = getFileName(responseMessage) 67 | 68 | } else { 69 | messageChan <- "100% Shaper Calibrate Complete, Generate Img Now..." 70 | // Generate x image 71 | outPath := "./static/result/" + int64ToStr(cTime) + "x.png" 72 | cmd := exec.Command(scriptPath, xFilename, "-o", outPath, "-c", "-v") 73 | stdoutPipe, err := cmd.StdoutPipe() 74 | err = cmd.Start() 75 | if err != nil { 76 | messageChan <- "0% " + err.Error() 77 | log.Println(err) 78 | return 79 | } 80 | reader := bufio.NewReader(stdoutPipe) 81 | for { 82 | line, err := reader.ReadString('\n') 83 | if err != nil { 84 | break 85 | } 86 | messageChan <- "100%... " + line 87 | } 88 | err = cmd.Wait() 89 | if err != nil { 90 | messageChan <- "0% " + err.Error() 91 | log.Println(err) 92 | return 93 | } 94 | // Generate y image 95 | outPath = "./static/result/" + int64ToStr(cTime) + "y.png" 96 | cmd = exec.Command(scriptPath, yFilename, "-o", outPath, "-c", "-v") 97 | stdoutPipe, err = cmd.StdoutPipe() 98 | err = cmd.Start() 99 | if err != nil { 100 | messageChan <- err.Error() 101 | return 102 | } 103 | reader = bufio.NewReader(stdoutPipe) 104 | for { 105 | line, err := reader.ReadString('\n') 106 | if err != nil { 107 | break 108 | } 109 | messageChan <- "100%... " + line 110 | } 111 | err = cmd.Wait() 112 | if err != nil { 113 | messageChan <- "0% " + err.Error() 114 | return 115 | } 116 | messageChan <- "100% Command completed" 117 | nRecord := model.Record{ 118 | Model: gorm.Model{}, 119 | XAxis: xFilename, 120 | YAxis: yFilename, 121 | Time: cTime, 122 | Name: time.Unix(cTime, 0).Format("2006-01-02 15:04"), 123 | } 124 | model.NewRecord(nRecord) 125 | conn.Close() 126 | return 127 | } 128 | 129 | } 130 | 131 | } else { 132 | messageChan <- "0% " + message 133 | } 134 | 135 | } 136 | }() 137 | 138 | // reg endpoint 139 | message := `{"id": 1, "method": "gcode/subscribe_output", "params": {"response_template":{}}}` 140 | data := []byte(message) 141 | // 向服务器发送消息 142 | _, err = conn.Write(append(data, 0x03)) 143 | if err != nil { 144 | return false, "Send Message Fail!" 145 | } 146 | // Run SHAPER_CALIBRATE 147 | message = `{"id": 2, "method": "gcode/script", "params": {"script": "SHAPER_CALIBRATE"}}` 148 | data = []byte(message) 149 | // 向服务器发送消息 150 | _, err = conn.Write(append(data, 0x03)) 151 | if err != nil { 152 | return false, "Send Message Fail!" 153 | } 154 | return true, "" 155 | } 156 | 157 | func getFileName(str string) string { 158 | filePrefix := "/tmp/" 159 | fileName := "" 160 | 161 | if strings.Contains(str, filePrefix) { 162 | responseParts := strings.Split(str, " ") 163 | for _, part := range responseParts { 164 | if strings.HasPrefix(part, filePrefix) { 165 | fileName = part 166 | break 167 | } 168 | } 169 | } 170 | 171 | if fileName != "" { 172 | return fileName 173 | } else { 174 | return "" 175 | } 176 | 177 | } 178 | 179 | func int64ToStr(input int64) string { 180 | str := strconv.FormatInt(input, 10) 181 | return str 182 | } 183 | -------------------------------------------------------------------------------- /static/layui.css: -------------------------------------------------------------------------------- 1 | .layui-inline, 2 | img { 3 | display: inline-block; 4 | vertical-align: middle 5 | } 6 | 7 | h1, 8 | h2, 9 | h3, 10 | h4, 11 | h5, 12 | h6 { 13 | font-weight: 400 14 | } 15 | 16 | a, 17 | body { 18 | color: #333 19 | } 20 | 21 | .layui-edge, 22 | .layui-header, 23 | .layui-inline, 24 | .layui-main { 25 | position: relative 26 | } 27 | 28 | .layui-edge, 29 | hr { 30 | height: 0; 31 | overflow: hidden 32 | } 33 | 34 | .layui-layout-body, 35 | .layui-side, 36 | .layui-side-scroll { 37 | overflow-x: hidden 38 | } 39 | 40 | .layui-edge, 41 | .layui-elip, 42 | hr { 43 | overflow: hidden 44 | } 45 | 46 | .layui-btn, 47 | .layui-edge, 48 | .layui-inline, 49 | img { 50 | vertical-align: middle 51 | } 52 | 53 | .layui-btn, 54 | .layui-disabled, 55 | .layui-icon, 56 | .layui-unselect { 57 | -moz-user-select: none; 58 | -webkit-user-select: none; 59 | -ms-user-select: none 60 | } 61 | 62 | blockquote, 63 | body, 64 | button, 65 | dd, 66 | div, 67 | dl, 68 | dt, 69 | form, 70 | h1, 71 | h2, 72 | h3, 73 | h4, 74 | h5, 75 | h6, 76 | input, 77 | li, 78 | ol, 79 | p, 80 | pre, 81 | td, 82 | textarea, 83 | th, 84 | ul { 85 | margin: 0; 86 | padding: 0; 87 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0) 88 | } 89 | 90 | a:active, 91 | a:hover { 92 | outline: 0 93 | } 94 | 95 | img { 96 | border: none 97 | } 98 | 99 | li { 100 | list-style: none 101 | } 102 | 103 | table { 104 | border-collapse: collapse; 105 | border-spacing: 0 106 | } 107 | 108 | h4, 109 | h5, 110 | h6 { 111 | font-size: 100% 112 | } 113 | 114 | button, 115 | input, 116 | optgroup, 117 | option, 118 | select, 119 | textarea { 120 | font-family: inherit; 121 | font-size: inherit; 122 | font-style: inherit; 123 | font-weight: inherit; 124 | outline: 0 125 | } 126 | 127 | pre { 128 | white-space: pre-wrap; 129 | white-space: -moz-pre-wrap; 130 | white-space: -pre-wrap; 131 | white-space: -o-pre-wrap; 132 | word-wrap: break-word 133 | } 134 | 135 | body { 136 | line-height: 1.6; 137 | color: rgba(0, 0, 0, .85); 138 | font: 14px Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif 139 | } 140 | 141 | hr { 142 | line-height: 0; 143 | margin: 10px 0; 144 | padding: 0; 145 | border: none!important; 146 | border-bottom: 1px solid #eee!important; 147 | clear: both; 148 | background: 0 0 149 | } 150 | 151 | a { 152 | text-decoration: none 153 | } 154 | 155 | a:hover { 156 | color: #777 157 | } 158 | 159 | a cite { 160 | font-style: normal; 161 | *cursor: pointer 162 | } 163 | 164 | .layui-border-box, 165 | .layui-border-box * { 166 | box-sizing: border-box 167 | } 168 | 169 | .layui-box, 170 | .layui-box * { 171 | box-sizing: content-box 172 | } 173 | 174 | .layui-clear { 175 | clear: both; 176 | *zoom: 1 177 | } 178 | 179 | .layui-clear:after { 180 | content: '\20'; 181 | clear: both; 182 | *zoom: 1; 183 | display: block; 184 | height: 0 185 | } 186 | 187 | .layui-inline { 188 | *display: inline; 189 | *zoom: 1 190 | } 191 | 192 | .layui-btn, 193 | .layui-btn-group, 194 | .layui-edge { 195 | display: inline-block 196 | } 197 | 198 | .layui-edge { 199 | width: 0; 200 | border-width: 6px; 201 | border-style: dashed; 202 | border-color: transparent 203 | } 204 | 205 | .layui-edge-top { 206 | top: -4px; 207 | border-bottom-color: #999; 208 | border-bottom-style: solid 209 | } 210 | 211 | .layui-edge-right { 212 | border-left-color: #999; 213 | border-left-style: solid 214 | } 215 | 216 | .layui-edge-bottom { 217 | top: 2px; 218 | border-top-color: #999; 219 | border-top-style: solid 220 | } 221 | 222 | .layui-edge-left { 223 | border-right-color: #999; 224 | border-right-style: solid 225 | } 226 | 227 | .layui-elip { 228 | text-overflow: ellipsis; 229 | white-space: nowrap 230 | } 231 | 232 | .layui-disabled, 233 | .layui-disabled:hover { 234 | color: #d2d2d2!important; 235 | cursor: not-allowed!important 236 | } 237 | 238 | .layui-circle { 239 | border-radius: 100% 240 | } 241 | 242 | .layui-show { 243 | display: block!important 244 | } 245 | 246 | .layui-hide { 247 | display: none!important 248 | } 249 | 250 | .layui-show-v { 251 | visibility: visible!important 252 | } 253 | 254 | .layui-hide-v { 255 | visibility: hidden!important 256 | } 257 | 258 | @font-face { 259 | font-family: layui-icon; 260 | src: url(../font/iconfont.eot); 261 | src: url(../font/iconfont.eot#iefix) format('embedded-opentype'), url(../font/iconfont.woff2) format('woff2'), url(../font/iconfont.woff) format('woff'), url(../font/iconfont.ttf) format('truetype'), url(https:../layui/dist/font/iconfont.svg?v=256#layui-icon) format('svg') 262 | } 263 | 264 | .layui-icon { 265 | font-family: layui-icon!important; 266 | font-size: 16px; 267 | font-style: normal; 268 | -webkit-font-smoothing: antialiased; 269 | -moz-osx-font-smoothing: grayscale 270 | } 271 | 272 | .layui-icon-reply-fill:before { 273 | content: "\e611" 274 | } 275 | 276 | .layui-icon-set-fill:before { 277 | content: "\e614" 278 | } 279 | 280 | .layui-icon-menu-fill:before { 281 | content: "\e60f" 282 | } 283 | 284 | .layui-icon-search:before { 285 | content: "\e615" 286 | } 287 | 288 | .layui-icon-share:before { 289 | content: "\e641" 290 | } 291 | 292 | .layui-icon-set-sm:before { 293 | content: "\e620" 294 | } 295 | 296 | .layui-icon-engine:before { 297 | content: "\e628" 298 | } 299 | 300 | .layui-icon-close:before { 301 | content: "\1006" 302 | } 303 | 304 | .layui-icon-close-fill:before { 305 | content: "\1007" 306 | } 307 | 308 | .layui-icon-chart-screen:before { 309 | content: "\e629" 310 | } 311 | 312 | .layui-icon-star:before { 313 | content: "\e600" 314 | } 315 | 316 | .layui-icon-circle-dot:before { 317 | content: "\e617" 318 | } 319 | 320 | .layui-icon-chat:before { 321 | content: "\e606" 322 | } 323 | 324 | .layui-icon-release:before { 325 | content: "\e609" 326 | } 327 | 328 | .layui-icon-list:before { 329 | content: "\e60a" 330 | } 331 | 332 | .layui-icon-chart:before { 333 | content: "\e62c" 334 | } 335 | 336 | .layui-icon-ok-circle:before { 337 | content: "\1005" 338 | } 339 | 340 | .layui-icon-layim-theme:before { 341 | content: "\e61b" 342 | } 343 | 344 | .layui-icon-table:before { 345 | content: "\e62d" 346 | } 347 | 348 | .layui-icon-right:before { 349 | content: "\e602" 350 | } 351 | 352 | .layui-icon-left:before { 353 | content: "\e603" 354 | } 355 | 356 | .layui-icon-cart-simple:before { 357 | content: "\e698" 358 | } 359 | 360 | .layui-icon-face-cry:before { 361 | content: "\e69c" 362 | } 363 | 364 | .layui-icon-face-smile:before { 365 | content: "\e6af" 366 | } 367 | 368 | .layui-icon-survey:before { 369 | content: "\e6b2" 370 | } 371 | 372 | .layui-icon-tree:before { 373 | content: "\e62e" 374 | } 375 | 376 | .layui-icon-ie:before { 377 | content: "\e7bb" 378 | } 379 | 380 | .layui-icon-upload-circle:before { 381 | content: "\e62f" 382 | } 383 | 384 | .layui-icon-add-circle:before { 385 | content: "\e61f" 386 | } 387 | 388 | .layui-icon-download-circle:before { 389 | content: "\e601" 390 | } 391 | 392 | .layui-icon-templeate-1:before { 393 | content: "\e630" 394 | } 395 | 396 | .layui-icon-util:before { 397 | content: "\e631" 398 | } 399 | 400 | .layui-icon-face-surprised:before { 401 | content: "\e664" 402 | } 403 | 404 | .layui-icon-edit:before { 405 | content: "\e642" 406 | } 407 | 408 | .layui-icon-speaker:before { 409 | content: "\e645" 410 | } 411 | 412 | .layui-icon-down:before { 413 | content: "\e61a" 414 | } 415 | 416 | .layui-icon-file:before { 417 | content: "\e621" 418 | } 419 | 420 | .layui-icon-layouts:before { 421 | content: "\e632" 422 | } 423 | 424 | .layui-icon-rate-half:before { 425 | content: "\e6c9" 426 | } 427 | 428 | .layui-icon-add-circle-fine:before { 429 | content: "\e608" 430 | } 431 | 432 | .layui-icon-prev-circle:before { 433 | content: "\e633" 434 | } 435 | 436 | .layui-icon-read:before { 437 | content: "\e705" 438 | } 439 | 440 | .layui-icon-404:before { 441 | content: "\e61c" 442 | } 443 | 444 | .layui-icon-carousel:before { 445 | content: "\e634" 446 | } 447 | 448 | .layui-icon-help:before { 449 | content: "\e607" 450 | } 451 | 452 | .layui-icon-code-circle:before { 453 | content: "\e635" 454 | } 455 | 456 | .layui-icon-windows:before { 457 | content: "\e67f" 458 | } 459 | 460 | .layui-icon-water:before { 461 | content: "\e636" 462 | } 463 | 464 | .layui-icon-username:before { 465 | content: "\e66f" 466 | } 467 | 468 | .layui-icon-find-fill:before { 469 | content: "\e670" 470 | } 471 | 472 | .layui-icon-about:before { 473 | content: "\e60b" 474 | } 475 | 476 | .layui-icon-location:before { 477 | content: "\e715" 478 | } 479 | 480 | .layui-icon-up:before { 481 | content: "\e619" 482 | } 483 | 484 | .layui-icon-pause:before { 485 | content: "\e651" 486 | } 487 | 488 | .layui-icon-date:before { 489 | content: "\e637" 490 | } 491 | 492 | .layui-icon-layim-uploadfile:before { 493 | content: "\e61d" 494 | } 495 | 496 | .layui-icon-delete:before { 497 | content: "\e640" 498 | } 499 | 500 | .layui-icon-play:before { 501 | content: "\e652" 502 | } 503 | 504 | .layui-icon-top:before { 505 | content: "\e604" 506 | } 507 | 508 | .layui-icon-firefox:before { 509 | content: "\e686" 510 | } 511 | 512 | .layui-icon-friends:before { 513 | content: "\e612" 514 | } 515 | 516 | .layui-icon-refresh-3:before { 517 | content: "\e9aa" 518 | } 519 | 520 | .layui-icon-ok:before { 521 | content: "\e605" 522 | } 523 | 524 | .layui-icon-layer:before { 525 | content: "\e638" 526 | } 527 | 528 | .layui-icon-face-smile-fine:before { 529 | content: "\e60c" 530 | } 531 | 532 | .layui-icon-dollar:before { 533 | content: "\e659" 534 | } 535 | 536 | .layui-icon-group:before { 537 | content: "\e613" 538 | } 539 | 540 | .layui-icon-layim-download:before { 541 | content: "\e61e" 542 | } 543 | 544 | .layui-icon-picture-fine:before { 545 | content: "\e60d" 546 | } 547 | 548 | .layui-icon-link:before { 549 | content: "\e64c" 550 | } 551 | 552 | .layui-icon-diamond:before { 553 | content: "\e735" 554 | } 555 | 556 | .layui-icon-log:before { 557 | content: "\e60e" 558 | } 559 | 560 | .layui-icon-key:before { 561 | content: "\e683" 562 | } 563 | 564 | .layui-icon-rate-solid:before { 565 | content: "\e67a" 566 | } 567 | 568 | .layui-icon-fonts-del:before { 569 | content: "\e64f" 570 | } 571 | 572 | .layui-icon-unlink:before { 573 | content: "\e64d" 574 | } 575 | 576 | .layui-icon-fonts-clear:before { 577 | content: "\e639" 578 | } 579 | 580 | .layui-icon-triangle-r:before { 581 | content: "\e623" 582 | } 583 | 584 | .layui-icon-circle:before { 585 | content: "\e63f" 586 | } 587 | 588 | .layui-icon-radio:before { 589 | content: "\e643" 590 | } 591 | 592 | .layui-icon-align-center:before { 593 | content: "\e647" 594 | } 595 | 596 | .layui-icon-align-right:before { 597 | content: "\e648" 598 | } 599 | 600 | .layui-icon-align-left:before { 601 | content: "\e649" 602 | } 603 | 604 | .layui-icon-loading-1:before { 605 | content: "\e63e" 606 | } 607 | 608 | .layui-icon-return:before { 609 | content: "\e65c" 610 | } 611 | 612 | .layui-icon-fonts-strong:before { 613 | content: "\e62b" 614 | } 615 | 616 | .layui-icon-upload:before { 617 | content: "\e67c" 618 | } 619 | 620 | .layui-icon-dialogue:before { 621 | content: "\e63a" 622 | } 623 | 624 | .layui-icon-video:before { 625 | content: "\e6ed" 626 | } 627 | 628 | .layui-icon-headset:before { 629 | content: "\e6fc" 630 | } 631 | 632 | .layui-icon-cellphone-fine:before { 633 | content: "\e63b" 634 | } 635 | 636 | .layui-icon-add-1:before { 637 | content: "\e654" 638 | } 639 | 640 | .layui-icon-face-smile-b:before { 641 | content: "\e650" 642 | } 643 | 644 | .layui-icon-fonts-html:before { 645 | content: "\e64b" 646 | } 647 | 648 | .layui-icon-screen-full:before { 649 | content: "\e622" 650 | } 651 | 652 | .layui-icon-form:before { 653 | content: "\e63c" 654 | } 655 | 656 | .layui-icon-cart:before { 657 | content: "\e657" 658 | } 659 | 660 | .layui-icon-camera-fill:before { 661 | content: "\e65d" 662 | } 663 | 664 | .layui-icon-tabs:before { 665 | content: "\e62a" 666 | } 667 | 668 | .layui-icon-heart-fill:before { 669 | content: "\e68f" 670 | } 671 | 672 | .layui-icon-fonts-code:before { 673 | content: "\e64e" 674 | } 675 | 676 | .layui-icon-ios:before { 677 | content: "\e680" 678 | } 679 | 680 | .layui-icon-at:before { 681 | content: "\e687" 682 | } 683 | 684 | .layui-icon-fire:before { 685 | content: "\e756" 686 | } 687 | 688 | .layui-icon-set:before { 689 | content: "\e716" 690 | } 691 | 692 | .layui-icon-fonts-u:before { 693 | content: "\e646" 694 | } 695 | 696 | .layui-icon-triangle-d:before { 697 | content: "\e625" 698 | } 699 | 700 | .layui-icon-tips:before { 701 | content: "\e702" 702 | } 703 | 704 | .layui-icon-picture:before { 705 | content: "\e64a" 706 | } 707 | 708 | .layui-icon-more-vertical:before { 709 | content: "\e671" 710 | } 711 | 712 | .layui-icon-bluetooth:before { 713 | content: "\e689" 714 | } 715 | 716 | .layui-icon-flag:before { 717 | content: "\e66c" 718 | } 719 | 720 | .layui-icon-loading:before { 721 | content: "\e63d" 722 | } 723 | 724 | .layui-icon-fonts-i:before { 725 | content: "\e644" 726 | } 727 | 728 | .layui-icon-refresh-1:before { 729 | content: "\e666" 730 | } 731 | 732 | .layui-icon-rmb:before { 733 | content: "\e65e" 734 | } 735 | 736 | .layui-icon-addition:before { 737 | content: "\e624" 738 | } 739 | 740 | .layui-icon-home:before { 741 | content: "\e68e" 742 | } 743 | 744 | .layui-icon-time:before { 745 | content: "\e68d" 746 | } 747 | 748 | .layui-icon-user:before { 749 | content: "\e770" 750 | } 751 | 752 | .layui-icon-notice:before { 753 | content: "\e667" 754 | } 755 | 756 | .layui-icon-chrome:before { 757 | content: "\e68a" 758 | } 759 | 760 | .layui-icon-edge:before { 761 | content: "\e68b" 762 | } 763 | 764 | .layui-icon-login-weibo:before { 765 | content: "\e675" 766 | } 767 | 768 | .layui-icon-voice:before { 769 | content: "\e688" 770 | } 771 | 772 | .layui-icon-upload-drag:before { 773 | content: "\e681" 774 | } 775 | 776 | .layui-icon-login-qq:before { 777 | content: "\e676" 778 | } 779 | 780 | .layui-icon-snowflake:before { 781 | content: "\e6b1" 782 | } 783 | 784 | .layui-icon-heart:before { 785 | content: "\e68c" 786 | } 787 | 788 | .layui-icon-logout:before { 789 | content: "\e682" 790 | } 791 | 792 | .layui-icon-file-b:before { 793 | content: "\e655" 794 | } 795 | 796 | .layui-icon-template:before { 797 | content: "\e663" 798 | } 799 | 800 | .layui-icon-transfer:before { 801 | content: "\e691" 802 | } 803 | 804 | .layui-icon-auz:before { 805 | content: "\e672" 806 | } 807 | 808 | .layui-icon-console:before { 809 | content: "\e665" 810 | } 811 | 812 | .layui-icon-app:before { 813 | content: "\e653" 814 | } 815 | 816 | .layui-icon-prev:before { 817 | content: "\e65a" 818 | } 819 | 820 | .layui-icon-website:before { 821 | content: "\e7ae" 822 | } 823 | 824 | .layui-icon-next:before { 825 | content: "\e65b" 826 | } 827 | 828 | .layui-icon-component:before { 829 | content: "\e857" 830 | } 831 | 832 | .layui-icon-android:before { 833 | content: "\e684" 834 | } 835 | 836 | .layui-icon-more:before { 837 | content: "\e65f" 838 | } 839 | 840 | .layui-icon-login-wechat:before { 841 | content: "\e677" 842 | } 843 | 844 | .layui-icon-shrink-right:before { 845 | content: "\e668" 846 | } 847 | 848 | .layui-icon-spread-left:before { 849 | content: "\e66b" 850 | } 851 | 852 | .layui-icon-camera:before { 853 | content: "\e660" 854 | } 855 | 856 | .layui-icon-note:before { 857 | content: "\e66e" 858 | } 859 | 860 | .layui-icon-refresh:before { 861 | content: "\e669" 862 | } 863 | 864 | .layui-icon-female:before { 865 | content: "\e661" 866 | } 867 | 868 | .layui-icon-male:before { 869 | content: "\e662" 870 | } 871 | 872 | .layui-icon-screen-restore:before { 873 | content: "\e758" 874 | } 875 | 876 | .layui-icon-password:before { 877 | content: "\e673" 878 | } 879 | 880 | .layui-icon-senior:before { 881 | content: "\e674" 882 | } 883 | 884 | .layui-icon-theme:before { 885 | content: "\e66a" 886 | } 887 | 888 | .layui-icon-tread:before { 889 | content: "\e6c5" 890 | } 891 | 892 | .layui-icon-praise:before { 893 | content: "\e6c6" 894 | } 895 | 896 | .layui-icon-star-fill:before { 897 | content: "\e658" 898 | } 899 | 900 | .layui-icon-rate:before { 901 | content: "\e67b" 902 | } 903 | 904 | .layui-icon-template-1:before { 905 | content: "\e656" 906 | } 907 | 908 | .layui-icon-vercode:before { 909 | content: "\e679" 910 | } 911 | 912 | .layui-icon-service:before { 913 | content: "\e626" 914 | } 915 | 916 | .layui-icon-cellphone:before { 917 | content: "\e678" 918 | } 919 | 920 | .layui-icon-print:before { 921 | content: "\e66d" 922 | } 923 | 924 | .layui-icon-cols:before { 925 | content: "\e610" 926 | } 927 | 928 | .layui-icon-wifi:before { 929 | content: "\e7e0" 930 | } 931 | 932 | .layui-icon-export:before { 933 | content: "\e67d" 934 | } 935 | 936 | .layui-icon-rss:before { 937 | content: "\e808" 938 | } 939 | 940 | .layui-icon-slider:before { 941 | content: "\e714" 942 | } 943 | 944 | .layui-icon-email:before { 945 | content: "\e618" 946 | } 947 | 948 | .layui-icon-subtraction:before { 949 | content: "\e67e" 950 | } 951 | 952 | .layui-icon-mike:before { 953 | content: "\e6dc" 954 | } 955 | 956 | .layui-icon-light:before { 957 | content: "\e748" 958 | } 959 | 960 | .layui-icon-gift:before { 961 | content: "\e627" 962 | } 963 | 964 | .layui-icon-mute:before { 965 | content: "\e685" 966 | } 967 | 968 | .layui-icon-reduce-circle:before { 969 | content: "\e616" 970 | } 971 | 972 | .layui-icon-music:before { 973 | content: "\e690" 974 | } 975 | 976 | .layui-main { 977 | width: 1140px; 978 | margin: 0 auto 979 | } 980 | 981 | .layui-header { 982 | z-index: 1000; 983 | height: 60px 984 | } 985 | 986 | .layui-header a:hover { 987 | transition: all .5s; 988 | -webkit-transition: all .5s 989 | } 990 | 991 | .layui-side { 992 | position: fixed; 993 | left: 0; 994 | top: 0; 995 | bottom: 0; 996 | z-index: 999; 997 | width: 200px 998 | } 999 | 1000 | .layui-side-scroll { 1001 | position: relative; 1002 | width: 220px; 1003 | height: 100% 1004 | } 1005 | 1006 | .layui-body { 1007 | position: relative; 1008 | left: 200px; 1009 | right: 0; 1010 | top: 0; 1011 | bottom: 0; 1012 | z-index: 900; 1013 | width: auto; 1014 | box-sizing: border-box 1015 | } 1016 | 1017 | .layui-layout-admin .layui-header { 1018 | position: fixed; 1019 | top: 0; 1020 | left: 0; 1021 | right: 0; 1022 | background-color: #23262E 1023 | } 1024 | 1025 | .layui-layout-admin .layui-side { 1026 | top: 60px; 1027 | width: 200px; 1028 | overflow-x: hidden 1029 | } 1030 | 1031 | .layui-layout-admin .layui-body { 1032 | position: absolute; 1033 | top: 60px; 1034 | padding-bottom: 44px 1035 | } 1036 | 1037 | .layui-layout-admin .layui-main { 1038 | width: auto; 1039 | margin: 0 15px 1040 | } 1041 | 1042 | .layui-layout-admin .layui-footer { 1043 | position: fixed; 1044 | left: 200px; 1045 | right: 0; 1046 | bottom: 0; 1047 | z-index: 990; 1048 | height: 44px; 1049 | line-height: 44px; 1050 | padding: 0 15px; 1051 | box-shadow: -1px 0 4px rgb(0 0 0 / 12%); 1052 | background-color: #FAFAFA 1053 | } 1054 | 1055 | .layui-layout-admin .layui-logo { 1056 | position: absolute; 1057 | left: 0; 1058 | top: 0; 1059 | width: 200px; 1060 | height: 100%; 1061 | line-height: 60px; 1062 | text-align: center; 1063 | color: #009688; 1064 | font-size: 16px; 1065 | box-shadow: 0 1px 2px 0 rgb(0 0 0 / 15%) 1066 | } 1067 | 1068 | .layui-layout-admin .layui-header .layui-nav { 1069 | background: 0 0 1070 | } 1071 | 1072 | .layui-layout-left { 1073 | position: absolute!important; 1074 | left: 200px; 1075 | top: 0 1076 | } 1077 | 1078 | .layui-layout-right { 1079 | position: absolute!important; 1080 | right: 0; 1081 | top: 0 1082 | } 1083 | 1084 | .layui-container { 1085 | position: relative; 1086 | margin: 0 auto; 1087 | padding: 0 15px; 1088 | box-sizing: border-box 1089 | } 1090 | 1091 | .layui-fluid { 1092 | position: relative; 1093 | margin: 0 auto; 1094 | padding: 0 15px 1095 | } 1096 | 1097 | .layui-row:after, 1098 | .layui-row:before { 1099 | content: ""; 1100 | display: block; 1101 | clear: both 1102 | } 1103 | 1104 | .layui-col-lg1, 1105 | .layui-col-lg10, 1106 | .layui-col-lg11, 1107 | .layui-col-lg12, 1108 | .layui-col-lg2, 1109 | .layui-col-lg3, 1110 | .layui-col-lg4, 1111 | .layui-col-lg5, 1112 | .layui-col-lg6, 1113 | .layui-col-lg7, 1114 | .layui-col-lg8, 1115 | .layui-col-lg9, 1116 | .layui-col-md1, 1117 | .layui-col-md10, 1118 | .layui-col-md11, 1119 | .layui-col-md12, 1120 | .layui-col-md2, 1121 | .layui-col-md3, 1122 | .layui-col-md4, 1123 | .layui-col-md5, 1124 | .layui-col-md6, 1125 | .layui-col-md7, 1126 | .layui-col-md8, 1127 | .layui-col-md9, 1128 | .layui-col-sm1, 1129 | .layui-col-sm10, 1130 | .layui-col-sm11, 1131 | .layui-col-sm12, 1132 | .layui-col-sm2, 1133 | .layui-col-sm3, 1134 | .layui-col-sm4, 1135 | .layui-col-sm5, 1136 | .layui-col-sm6, 1137 | .layui-col-sm7, 1138 | .layui-col-sm8, 1139 | .layui-col-sm9, 1140 | .layui-col-xs1, 1141 | .layui-col-xs10, 1142 | .layui-col-xs11, 1143 | .layui-col-xs12, 1144 | .layui-col-xs2, 1145 | .layui-col-xs3, 1146 | .layui-col-xs4, 1147 | .layui-col-xs5, 1148 | .layui-col-xs6, 1149 | .layui-col-xs7, 1150 | .layui-col-xs8, 1151 | .layui-col-xs9 { 1152 | position: relative; 1153 | display: block; 1154 | box-sizing: border-box 1155 | } 1156 | 1157 | .layui-col-xs1, 1158 | .layui-col-xs10, 1159 | .layui-col-xs11, 1160 | .layui-col-xs12, 1161 | .layui-col-xs2, 1162 | .layui-col-xs3, 1163 | .layui-col-xs4, 1164 | .layui-col-xs5, 1165 | .layui-col-xs6, 1166 | .layui-col-xs7, 1167 | .layui-col-xs8, 1168 | .layui-col-xs9 { 1169 | float: left 1170 | } 1171 | 1172 | .layui-col-xs1 { 1173 | width: 8.33333333% 1174 | } 1175 | 1176 | .layui-col-xs2 { 1177 | width: 16.66666667% 1178 | } 1179 | 1180 | .layui-col-xs3 { 1181 | width: 25% 1182 | } 1183 | 1184 | .layui-col-xs4 { 1185 | width: 33.33333333% 1186 | } 1187 | 1188 | .layui-col-xs5 { 1189 | width: 41.66666667% 1190 | } 1191 | 1192 | .layui-col-xs6 { 1193 | width: 50% 1194 | } 1195 | 1196 | .layui-col-xs7 { 1197 | width: 58.33333333% 1198 | } 1199 | 1200 | .layui-col-xs8 { 1201 | width: 66.66666667% 1202 | } 1203 | 1204 | .layui-col-xs9 { 1205 | width: 75% 1206 | } 1207 | 1208 | .layui-col-xs10 { 1209 | width: 83.33333333% 1210 | } 1211 | 1212 | .layui-col-xs11 { 1213 | width: 91.66666667% 1214 | } 1215 | 1216 | .layui-col-xs12 { 1217 | width: 100% 1218 | } 1219 | 1220 | .layui-col-xs-offset1 { 1221 | margin-left: 8.33333333% 1222 | } 1223 | 1224 | .layui-col-xs-offset2 { 1225 | margin-left: 16.66666667% 1226 | } 1227 | 1228 | .layui-col-xs-offset3 { 1229 | margin-left: 25% 1230 | } 1231 | 1232 | .layui-col-xs-offset4 { 1233 | margin-left: 33.33333333% 1234 | } 1235 | 1236 | .layui-col-xs-offset5 { 1237 | margin-left: 41.66666667% 1238 | } 1239 | 1240 | .layui-col-xs-offset6 { 1241 | margin-left: 50% 1242 | } 1243 | 1244 | .layui-col-xs-offset7 { 1245 | margin-left: 58.33333333% 1246 | } 1247 | 1248 | .layui-col-xs-offset8 { 1249 | margin-left: 66.66666667% 1250 | } 1251 | 1252 | .layui-col-xs-offset9 { 1253 | margin-left: 75% 1254 | } 1255 | 1256 | .layui-col-xs-offset10 { 1257 | margin-left: 83.33333333% 1258 | } 1259 | 1260 | .layui-col-xs-offset11 { 1261 | margin-left: 91.66666667% 1262 | } 1263 | 1264 | .layui-col-xs-offset12 { 1265 | margin-left: 100% 1266 | } 1267 | 1268 | @media screen and (max-width:768px) { 1269 | .layui-hide-xs { 1270 | display: none!important 1271 | } 1272 | .layui-show-xs-block { 1273 | display: block!important 1274 | } 1275 | .layui-show-xs-inline { 1276 | display: inline!important 1277 | } 1278 | .layui-show-xs-inline-block { 1279 | display: inline-block!important 1280 | } 1281 | } 1282 | 1283 | @media screen and (min-width:768px) { 1284 | .layui-container { 1285 | width: 750px 1286 | } 1287 | .layui-hide-sm { 1288 | display: none!important 1289 | } 1290 | .layui-show-sm-block { 1291 | display: block!important 1292 | } 1293 | .layui-show-sm-inline { 1294 | display: inline!important 1295 | } 1296 | .layui-show-sm-inline-block { 1297 | display: inline-block!important 1298 | } 1299 | .layui-col-sm1, 1300 | .layui-col-sm10, 1301 | .layui-col-sm11, 1302 | .layui-col-sm12, 1303 | .layui-col-sm2, 1304 | .layui-col-sm3, 1305 | .layui-col-sm4, 1306 | .layui-col-sm5, 1307 | .layui-col-sm6, 1308 | .layui-col-sm7, 1309 | .layui-col-sm8, 1310 | .layui-col-sm9 { 1311 | float: left 1312 | } 1313 | .layui-col-sm1 { 1314 | width: 8.33333333% 1315 | } 1316 | .layui-col-sm2 { 1317 | width: 16.66666667% 1318 | } 1319 | .layui-col-sm3 { 1320 | width: 25% 1321 | } 1322 | .layui-col-sm4 { 1323 | width: 33.33333333% 1324 | } 1325 | .layui-col-sm5 { 1326 | width: 41.66666667% 1327 | } 1328 | .layui-col-sm6 { 1329 | width: 50% 1330 | } 1331 | .layui-col-sm7 { 1332 | width: 58.33333333% 1333 | } 1334 | .layui-col-sm8 { 1335 | width: 66.66666667% 1336 | } 1337 | .layui-col-sm9 { 1338 | width: 75% 1339 | } 1340 | .layui-col-sm10 { 1341 | width: 83.33333333% 1342 | } 1343 | .layui-col-sm11 { 1344 | width: 91.66666667% 1345 | } 1346 | .layui-col-sm12 { 1347 | width: 100% 1348 | } 1349 | .layui-col-sm-offset1 { 1350 | margin-left: 8.33333333% 1351 | } 1352 | .layui-col-sm-offset2 { 1353 | margin-left: 16.66666667% 1354 | } 1355 | .layui-col-sm-offset3 { 1356 | margin-left: 25% 1357 | } 1358 | .layui-col-sm-offset4 { 1359 | margin-left: 33.33333333% 1360 | } 1361 | .layui-col-sm-offset5 { 1362 | margin-left: 41.66666667% 1363 | } 1364 | .layui-col-sm-offset6 { 1365 | margin-left: 50% 1366 | } 1367 | .layui-col-sm-offset7 { 1368 | margin-left: 58.33333333% 1369 | } 1370 | .layui-col-sm-offset8 { 1371 | margin-left: 66.66666667% 1372 | } 1373 | .layui-col-sm-offset9 { 1374 | margin-left: 75% 1375 | } 1376 | .layui-col-sm-offset10 { 1377 | margin-left: 83.33333333% 1378 | } 1379 | .layui-col-sm-offset11 { 1380 | margin-left: 91.66666667% 1381 | } 1382 | .layui-col-sm-offset12 { 1383 | margin-left: 100% 1384 | } 1385 | } 1386 | 1387 | @media screen and (min-width:992px) { 1388 | .layui-container { 1389 | width: 970px 1390 | } 1391 | .layui-hide-md { 1392 | display: none!important 1393 | } 1394 | .layui-show-md-block { 1395 | display: block!important 1396 | } 1397 | .layui-show-md-inline { 1398 | display: inline!important 1399 | } 1400 | .layui-show-md-inline-block { 1401 | display: inline-block!important 1402 | } 1403 | .layui-col-md1, 1404 | .layui-col-md10, 1405 | .layui-col-md11, 1406 | .layui-col-md12, 1407 | .layui-col-md2, 1408 | .layui-col-md3, 1409 | .layui-col-md4, 1410 | .layui-col-md5, 1411 | .layui-col-md6, 1412 | .layui-col-md7, 1413 | .layui-col-md8, 1414 | .layui-col-md9 { 1415 | float: left 1416 | } 1417 | .layui-col-md1 { 1418 | width: 8.33333333% 1419 | } 1420 | .layui-col-md2 { 1421 | width: 16.66666667% 1422 | } 1423 | .layui-col-md3 { 1424 | width: 25% 1425 | } 1426 | .layui-col-md4 { 1427 | width: 33.33333333% 1428 | } 1429 | .layui-col-md5 { 1430 | width: 41.66666667% 1431 | } 1432 | .layui-col-md6 { 1433 | width: 50% 1434 | } 1435 | .layui-col-md7 { 1436 | width: 58.33333333% 1437 | } 1438 | .layui-col-md8 { 1439 | width: 66.66666667% 1440 | } 1441 | .layui-col-md9 { 1442 | width: 75% 1443 | } 1444 | .layui-col-md10 { 1445 | width: 83.33333333% 1446 | } 1447 | .layui-col-md11 { 1448 | width: 91.66666667% 1449 | } 1450 | .layui-col-md12 { 1451 | width: 100% 1452 | } 1453 | .layui-col-md-offset1 { 1454 | margin-left: 8.33333333% 1455 | } 1456 | .layui-col-md-offset2 { 1457 | margin-left: 16.66666667% 1458 | } 1459 | .layui-col-md-offset3 { 1460 | margin-left: 25% 1461 | } 1462 | .layui-col-md-offset4 { 1463 | margin-left: 33.33333333% 1464 | } 1465 | .layui-col-md-offset5 { 1466 | margin-left: 41.66666667% 1467 | } 1468 | .layui-col-md-offset6 { 1469 | margin-left: 50% 1470 | } 1471 | .layui-col-md-offset7 { 1472 | margin-left: 58.33333333% 1473 | } 1474 | .layui-col-md-offset8 { 1475 | margin-left: 66.66666667% 1476 | } 1477 | .layui-col-md-offset9 { 1478 | margin-left: 75% 1479 | } 1480 | .layui-col-md-offset10 { 1481 | margin-left: 83.33333333% 1482 | } 1483 | .layui-col-md-offset11 { 1484 | margin-left: 91.66666667% 1485 | } 1486 | .layui-col-md-offset12 { 1487 | margin-left: 100% 1488 | } 1489 | } 1490 | 1491 | @media screen and (min-width:1200px) { 1492 | .layui-container { 1493 | width: 1170px 1494 | } 1495 | .layui-hide-lg { 1496 | display: none!important 1497 | } 1498 | .layui-show-lg-block { 1499 | display: block!important 1500 | } 1501 | .layui-show-lg-inline { 1502 | display: inline!important 1503 | } 1504 | .layui-show-lg-inline-block { 1505 | display: inline-block!important 1506 | } 1507 | .layui-col-lg1, 1508 | .layui-col-lg10, 1509 | .layui-col-lg11, 1510 | .layui-col-lg12, 1511 | .layui-col-lg2, 1512 | .layui-col-lg3, 1513 | .layui-col-lg4, 1514 | .layui-col-lg5, 1515 | .layui-col-lg6, 1516 | .layui-col-lg7, 1517 | .layui-col-lg8, 1518 | .layui-col-lg9 { 1519 | float: left 1520 | } 1521 | .layui-col-lg1 { 1522 | width: 8.33333333% 1523 | } 1524 | .layui-col-lg2 { 1525 | width: 16.66666667% 1526 | } 1527 | .layui-col-lg3 { 1528 | width: 25% 1529 | } 1530 | .layui-col-lg4 { 1531 | width: 33.33333333% 1532 | } 1533 | .layui-col-lg5 { 1534 | width: 41.66666667% 1535 | } 1536 | .layui-col-lg6 { 1537 | width: 50% 1538 | } 1539 | .layui-col-lg7 { 1540 | width: 58.33333333% 1541 | } 1542 | .layui-col-lg8 { 1543 | width: 66.66666667% 1544 | } 1545 | .layui-col-lg9 { 1546 | width: 75% 1547 | } 1548 | .layui-col-lg10 { 1549 | width: 83.33333333% 1550 | } 1551 | .layui-col-lg11 { 1552 | width: 91.66666667% 1553 | } 1554 | .layui-col-lg12 { 1555 | width: 100% 1556 | } 1557 | .layui-col-lg-offset1 { 1558 | margin-left: 8.33333333% 1559 | } 1560 | .layui-col-lg-offset2 { 1561 | margin-left: 16.66666667% 1562 | } 1563 | .layui-col-lg-offset3 { 1564 | margin-left: 25% 1565 | } 1566 | .layui-col-lg-offset4 { 1567 | margin-left: 33.33333333% 1568 | } 1569 | .layui-col-lg-offset5 { 1570 | margin-left: 41.66666667% 1571 | } 1572 | .layui-col-lg-offset6 { 1573 | margin-left: 50% 1574 | } 1575 | .layui-col-lg-offset7 { 1576 | margin-left: 58.33333333% 1577 | } 1578 | .layui-col-lg-offset8 { 1579 | margin-left: 66.66666667% 1580 | } 1581 | .layui-col-lg-offset9 { 1582 | margin-left: 75% 1583 | } 1584 | .layui-col-lg-offset10 { 1585 | margin-left: 83.33333333% 1586 | } 1587 | .layui-col-lg-offset11 { 1588 | margin-left: 91.66666667% 1589 | } 1590 | .layui-col-lg-offset12 { 1591 | margin-left: 100% 1592 | } 1593 | } 1594 | 1595 | .layui-col-space1 { 1596 | margin: -.5px 1597 | } 1598 | 1599 | .layui-col-space1>* { 1600 | padding: .5px 1601 | } 1602 | 1603 | .layui-col-space2 { 1604 | margin: -1px 1605 | } 1606 | 1607 | .layui-col-space2>* { 1608 | padding: 1px 1609 | } 1610 | 1611 | .layui-col-space4 { 1612 | margin: -2px 1613 | } 1614 | 1615 | .layui-col-space4>* { 1616 | padding: 2px 1617 | } 1618 | 1619 | .layui-col-space5 { 1620 | margin: -2.5px 1621 | } 1622 | 1623 | .layui-col-space5>* { 1624 | padding: 2.5px 1625 | } 1626 | 1627 | .layui-col-space6 { 1628 | margin: -3px 1629 | } 1630 | 1631 | .layui-col-space6>* { 1632 | padding: 3px 1633 | } 1634 | 1635 | .layui-col-space8 { 1636 | margin: -4px 1637 | } 1638 | 1639 | .layui-col-space8>* { 1640 | padding: 4px 1641 | } 1642 | 1643 | .layui-col-space10 { 1644 | margin: -5px 1645 | } 1646 | 1647 | .layui-col-space10>* { 1648 | padding: 5px 1649 | } 1650 | 1651 | .layui-col-space12 { 1652 | margin: -6px 1653 | } 1654 | 1655 | .layui-col-space12>* { 1656 | padding: 6px 1657 | } 1658 | 1659 | .layui-col-space14 { 1660 | margin: -7px 1661 | } 1662 | 1663 | .layui-col-space14>* { 1664 | padding: 7px 1665 | } 1666 | 1667 | .layui-col-space15 { 1668 | margin: -7.5px 1669 | } 1670 | 1671 | .layui-col-space15>* { 1672 | padding: 7.5px 1673 | } 1674 | 1675 | .layui-col-space16 { 1676 | margin: -8px 1677 | } 1678 | 1679 | .layui-col-space16>* { 1680 | padding: 8px 1681 | } 1682 | 1683 | .layui-col-space18 { 1684 | margin: -9px 1685 | } 1686 | 1687 | .layui-col-space18>* { 1688 | padding: 9px 1689 | } 1690 | 1691 | .layui-col-space20 { 1692 | margin: -10px 1693 | } 1694 | 1695 | .layui-col-space20>* { 1696 | padding: 10px 1697 | } 1698 | 1699 | .layui-col-space22 { 1700 | margin: -11px 1701 | } 1702 | 1703 | .layui-col-space22>* { 1704 | padding: 11px 1705 | } 1706 | 1707 | .layui-col-space24 { 1708 | margin: -12px 1709 | } 1710 | 1711 | .layui-col-space24>* { 1712 | padding: 12px 1713 | } 1714 | 1715 | .layui-col-space25 { 1716 | margin: -12.5px 1717 | } 1718 | 1719 | .layui-col-space25>* { 1720 | padding: 12.5px 1721 | } 1722 | 1723 | .layui-col-space26 { 1724 | margin: -13px 1725 | } 1726 | 1727 | .layui-col-space26>* { 1728 | padding: 13px 1729 | } 1730 | 1731 | .layui-col-space28 { 1732 | margin: -14px 1733 | } 1734 | 1735 | .layui-col-space28>* { 1736 | padding: 14px 1737 | } 1738 | 1739 | .layui-col-space30 { 1740 | margin: -15px 1741 | } 1742 | 1743 | .layui-col-space30>* { 1744 | padding: 15px 1745 | } 1746 | 1747 | .layui-btn, 1748 | .layui-input, 1749 | .layui-select, 1750 | .layui-textarea, 1751 | .layui-upload-button { 1752 | outline: 0; 1753 | -webkit-appearance: none; 1754 | transition: all .3s; 1755 | -webkit-transition: all .3s; 1756 | box-sizing: border-box 1757 | } 1758 | 1759 | .layui-elem-quote { 1760 | margin-bottom: 10px; 1761 | padding: 15px; 1762 | line-height: 1.6; 1763 | border-left: 5px solid #5FB878; 1764 | border-radius: 0 2px 2px 0; 1765 | background-color: #FAFAFA 1766 | } 1767 | 1768 | .layui-quote-nm { 1769 | border-style: solid; 1770 | border-width: 1px 1px 1px 5px; 1771 | background: 0 0 1772 | } 1773 | 1774 | .layui-elem-field { 1775 | margin-bottom: 10px; 1776 | padding: 0; 1777 | border-width: 1px; 1778 | border-style: solid 1779 | } 1780 | 1781 | .layui-elem-field legend { 1782 | margin-left: 20px; 1783 | padding: 0 10px; 1784 | font-size: 20px; 1785 | font-weight: 300 1786 | } 1787 | 1788 | .layui-field-title { 1789 | margin: 10px 0 20px; 1790 | border-width: 1px 0 0 1791 | } 1792 | 1793 | .layui-field-box { 1794 | padding: 15px 1795 | } 1796 | 1797 | .layui-field-title .layui-field-box { 1798 | padding: 10px 0 1799 | } 1800 | 1801 | .layui-progress { 1802 | position: relative; 1803 | height: 6px; 1804 | border-radius: 20px; 1805 | background-color: #eee 1806 | } 1807 | 1808 | .layui-progress-bar { 1809 | position: absolute; 1810 | left: 0; 1811 | top: 0; 1812 | width: 0; 1813 | max-width: 100%; 1814 | height: 6px; 1815 | border-radius: 20px; 1816 | text-align: right; 1817 | background-color: #5FB878; 1818 | transition: all .3s; 1819 | -webkit-transition: all .3s 1820 | } 1821 | 1822 | .layui-progress-big, 1823 | .layui-progress-big .layui-progress-bar { 1824 | height: 18px; 1825 | line-height: 18px 1826 | } 1827 | 1828 | .layui-progress-text { 1829 | position: relative; 1830 | top: -20px; 1831 | line-height: 18px; 1832 | font-size: 12px; 1833 | color: #666 1834 | } 1835 | 1836 | .layui-progress-big .layui-progress-text { 1837 | position: static; 1838 | padding: 0 10px; 1839 | color: #fff 1840 | } 1841 | 1842 | .layui-collapse { 1843 | border-width: 1px; 1844 | border-style: solid; 1845 | border-radius: 2px 1846 | } 1847 | 1848 | .layui-colla-content, 1849 | .layui-colla-item { 1850 | border-top-width: 1px; 1851 | border-top-style: solid 1852 | } 1853 | 1854 | .layui-colla-item:first-child { 1855 | border-top: none 1856 | } 1857 | 1858 | .layui-colla-title { 1859 | position: relative; 1860 | height: 42px; 1861 | line-height: 42px; 1862 | padding: 0 15px 0 35px; 1863 | color: #333; 1864 | background-color: #FAFAFA; 1865 | cursor: pointer; 1866 | font-size: 14px; 1867 | overflow: hidden 1868 | } 1869 | 1870 | .layui-colla-content { 1871 | display: none; 1872 | padding: 10px 15px; 1873 | line-height: 1.6; 1874 | color: #666 1875 | } 1876 | 1877 | .layui-colla-icon { 1878 | position: absolute; 1879 | left: 15px; 1880 | top: 0; 1881 | font-size: 14px 1882 | } 1883 | 1884 | .layui-card-body, 1885 | .layui-card-header, 1886 | .layui-form-label, 1887 | .layui-form-mid, 1888 | .layui-form-select, 1889 | .layui-input-block, 1890 | .layui-input-inline, 1891 | .layui-panel, 1892 | .layui-textarea { 1893 | position: relative 1894 | } 1895 | 1896 | .layui-card { 1897 | margin-bottom: 15px; 1898 | border-radius: 2px; 1899 | background-color: #fff; 1900 | box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05) 1901 | } 1902 | 1903 | .layui-form-select dl, 1904 | .layui-panel { 1905 | box-shadow: 1px 1px 4px rgb(0 0 0 / 8%) 1906 | } 1907 | 1908 | .layui-card:last-child { 1909 | margin-bottom: 0 1910 | } 1911 | 1912 | .layui-card-header { 1913 | height: 42px; 1914 | line-height: 42px; 1915 | padding: 0 15px; 1916 | border-bottom: 1px solid #f6f6f6; 1917 | color: #333; 1918 | border-radius: 2px 2px 0 0; 1919 | font-size: 14px 1920 | } 1921 | 1922 | .layui-card-body { 1923 | padding: 10px 15px; 1924 | line-height: 24px 1925 | } 1926 | 1927 | .layui-card-body[pad15] { 1928 | padding: 15px 1929 | } 1930 | 1931 | .layui-card-body[pad20] { 1932 | padding: 20px 1933 | } 1934 | 1935 | .layui-card-body .layui-table { 1936 | margin: 5px 0 1937 | } 1938 | 1939 | .layui-card .layui-tab { 1940 | margin: 0 1941 | } 1942 | 1943 | .layui-panel { 1944 | border-width: 1px; 1945 | border-style: solid; 1946 | border-radius: 2px; 1947 | background-color: #fff; 1948 | color: #666 1949 | } 1950 | 1951 | .layui-bg-black, 1952 | .layui-bg-blue, 1953 | .layui-bg-cyan, 1954 | .layui-bg-green, 1955 | .layui-bg-orange, 1956 | .layui-bg-red { 1957 | color: #fff!important 1958 | } 1959 | 1960 | .layui-panel-window { 1961 | position: relative; 1962 | padding: 15px; 1963 | border-radius: 0; 1964 | border-top: 5px solid #eee; 1965 | background-color: #fff 1966 | } 1967 | 1968 | .layui-border, 1969 | .layui-border-black, 1970 | .layui-border-blue, 1971 | .layui-border-cyan, 1972 | .layui-border-green, 1973 | .layui-border-orange, 1974 | .layui-border-red { 1975 | border-width: 1px; 1976 | border-style: solid 1977 | } 1978 | 1979 | .layui-auxiliar-moving { 1980 | position: fixed; 1981 | left: 0; 1982 | right: 0; 1983 | top: 0; 1984 | bottom: 0; 1985 | width: 100%; 1986 | height: 100%; 1987 | background: 0 0; 1988 | z-index: 9999999999 1989 | } 1990 | 1991 | .layui-bg-red { 1992 | background-color: #FF5722!important 1993 | } 1994 | 1995 | .layui-bg-orange { 1996 | background-color: #FFB800!important 1997 | } 1998 | 1999 | .layui-bg-green { 2000 | background-color: #009688!important 2001 | } 2002 | 2003 | .layui-bg-cyan { 2004 | background-color: #2F4056!important 2005 | } 2006 | 2007 | .layui-bg-blue { 2008 | background-color: #1E9FFF!important 2009 | } 2010 | 2011 | .layui-bg-black { 2012 | background-color: #393D49!important 2013 | } 2014 | 2015 | .layui-bg-gray { 2016 | background-color: #FAFAFA!important; 2017 | color: #666!important 2018 | } 2019 | 2020 | .layui-badge-rim, 2021 | .layui-border, 2022 | .layui-colla-content, 2023 | .layui-colla-item, 2024 | .layui-collapse, 2025 | .layui-elem-field, 2026 | .layui-form-pane .layui-form-item[pane], 2027 | .layui-form-pane .layui-form-label, 2028 | .layui-input, 2029 | .layui-layedit, 2030 | .layui-layedit-tool, 2031 | .layui-panel, 2032 | .layui-quote-nm, 2033 | .layui-select, 2034 | .layui-tab-bar, 2035 | .layui-tab-card, 2036 | .layui-tab-title, 2037 | .layui-tab-title .layui-this:after, 2038 | .layui-textarea { 2039 | border-color: #eee 2040 | } 2041 | 2042 | .layui-border { 2043 | color: #666!important 2044 | } 2045 | 2046 | .layui-border-red { 2047 | border-color: #FF5722!important; 2048 | color: #FF5722!important 2049 | } 2050 | 2051 | .layui-border-orange { 2052 | border-color: #FFB800!important; 2053 | color: #FFB800!important 2054 | } 2055 | 2056 | .layui-border-green { 2057 | border-color: #009688!important; 2058 | color: #009688!important 2059 | } 2060 | 2061 | .layui-border-cyan { 2062 | border-color: #2F4056!important; 2063 | color: #2F4056!important 2064 | } 2065 | 2066 | .layui-border-blue { 2067 | border-color: #1E9FFF!important; 2068 | color: #1E9FFF!important 2069 | } 2070 | 2071 | .layui-border-black { 2072 | border-color: #393D49!important; 2073 | color: #393D49!important 2074 | } 2075 | 2076 | .layui-timeline-item:before { 2077 | background-color: #eee 2078 | } 2079 | 2080 | .layui-text { 2081 | line-height: 1.6; 2082 | font-size: 14px; 2083 | color: #666 2084 | } 2085 | 2086 | .layui-text h1, 2087 | .layui-text h2, 2088 | .layui-text h3 { 2089 | font-weight: 500; 2090 | color: #333 2091 | } 2092 | 2093 | .layui-text h1 { 2094 | font-size: 30px 2095 | } 2096 | 2097 | .layui-text h2 { 2098 | font-size: 24px 2099 | } 2100 | 2101 | .layui-text h3 { 2102 | font-size: 18px 2103 | } 2104 | 2105 | .layui-text a:not(.layui-btn) { 2106 | color: #01AAED 2107 | } 2108 | 2109 | .layui-text a:not(.layui-btn):hover { 2110 | text-decoration: underline 2111 | } 2112 | 2113 | .layui-text ul { 2114 | padding: 5px 0 5px 15px 2115 | } 2116 | 2117 | .layui-text ul li { 2118 | margin-top: 5px; 2119 | list-style-type: disc 2120 | } 2121 | 2122 | .layui-text em, 2123 | .layui-word-aux { 2124 | color: #999!important; 2125 | padding-left: 5px!important; 2126 | padding-right: 5px!important 2127 | } 2128 | 2129 | .layui-text p { 2130 | margin: 10px 0 2131 | } 2132 | 2133 | .layui-text p:first-child { 2134 | margin-top: 0 2135 | } 2136 | 2137 | .layui-font-12 { 2138 | font-size: 12px!important 2139 | } 2140 | 2141 | .layui-font-14 { 2142 | font-size: 14px!important 2143 | } 2144 | 2145 | .layui-font-16 { 2146 | font-size: 16px!important 2147 | } 2148 | 2149 | .layui-font-18 { 2150 | font-size: 18px!important 2151 | } 2152 | 2153 | .layui-font-20 { 2154 | font-size: 20px!important 2155 | } 2156 | 2157 | .layui-font-red { 2158 | color: #FF5722!important 2159 | } 2160 | 2161 | .layui-font-orange { 2162 | color: #FFB800!important 2163 | } 2164 | 2165 | .layui-font-green { 2166 | color: #009688!important 2167 | } 2168 | 2169 | .layui-font-cyan { 2170 | color: #2F4056!important 2171 | } 2172 | 2173 | .layui-font-blue { 2174 | color: #01AAED!important 2175 | } 2176 | 2177 | .layui-font-black { 2178 | color: #000!important 2179 | } 2180 | 2181 | .layui-font-gray { 2182 | color: #c2c2c2!important 2183 | } 2184 | 2185 | .layui-btn { 2186 | height: 38px; 2187 | line-height: 38px; 2188 | border: 1px solid transparent; 2189 | padding: 0 18px; 2190 | background-color: #009688; 2191 | color: #fff; 2192 | white-space: nowrap; 2193 | text-align: center; 2194 | font-size: 14px; 2195 | border-radius: 2px; 2196 | cursor: pointer 2197 | } 2198 | 2199 | .layui-btn:hover { 2200 | opacity: .8; 2201 | filter: alpha(opacity=80); 2202 | color: #fff 2203 | } 2204 | 2205 | .layui-btn:active { 2206 | opacity: 1; 2207 | filter: alpha(opacity=100) 2208 | } 2209 | 2210 | .layui-btn+.layui-btn { 2211 | margin-left: 10px 2212 | } 2213 | 2214 | .layui-btn-container { 2215 | font-size: 0 2216 | } 2217 | 2218 | .layui-btn-container .layui-btn { 2219 | margin-right: 10px; 2220 | margin-bottom: 10px 2221 | } 2222 | 2223 | .layui-btn-container .layui-btn+.layui-btn { 2224 | margin-left: 0 2225 | } 2226 | 2227 | .layui-table .layui-btn-container .layui-btn { 2228 | margin-bottom: 9px 2229 | } 2230 | 2231 | .layui-btn-radius { 2232 | border-radius: 100px 2233 | } 2234 | 2235 | .layui-btn .layui-icon { 2236 | padding: 0 2px; 2237 | vertical-align: middle\9; 2238 | vertical-align: bottom 2239 | } 2240 | 2241 | .layui-btn-primary { 2242 | border-color: #d2d2d2; 2243 | background: 0 0; 2244 | color: #666 2245 | } 2246 | 2247 | .layui-btn-primary:hover { 2248 | border-color: #009688; 2249 | color: #333 2250 | } 2251 | 2252 | .layui-btn-normal { 2253 | background-color: #1E9FFF 2254 | } 2255 | 2256 | .layui-btn-warm { 2257 | background-color: #FFB800 2258 | } 2259 | 2260 | .layui-btn-danger { 2261 | background-color: #FF5722 2262 | } 2263 | 2264 | .layui-btn-checked { 2265 | background-color: #5FB878 2266 | } 2267 | 2268 | .layui-btn-disabled, 2269 | .layui-btn-disabled:active, 2270 | .layui-btn-disabled:hover { 2271 | border-color: #eee!important; 2272 | background-color: #FBFBFB!important; 2273 | color: #d2d2d2!important; 2274 | cursor: not-allowed!important; 2275 | opacity: 1 2276 | } 2277 | 2278 | .layui-btn-lg { 2279 | height: 44px; 2280 | line-height: 44px; 2281 | padding: 0 25px; 2282 | font-size: 16px 2283 | } 2284 | 2285 | .layui-btn-sm { 2286 | height: 30px; 2287 | line-height: 30px; 2288 | padding: 0 10px; 2289 | font-size: 12px 2290 | } 2291 | 2292 | .layui-btn-xs { 2293 | height: 22px; 2294 | line-height: 22px; 2295 | padding: 0 5px; 2296 | font-size: 12px 2297 | } 2298 | 2299 | .layui-btn-xs i { 2300 | font-size: 12px!important 2301 | } 2302 | 2303 | .layui-btn-group { 2304 | vertical-align: middle; 2305 | font-size: 0 2306 | } 2307 | 2308 | .layui-btn-group .layui-btn { 2309 | margin-left: 0!important; 2310 | margin-right: 0!important; 2311 | border-left: 1px solid rgba(255, 255, 255, .5); 2312 | border-radius: 0 2313 | } 2314 | 2315 | .layui-btn-group .layui-btn-primary { 2316 | border-left: none 2317 | } 2318 | 2319 | .layui-btn-group .layui-btn-primary:hover { 2320 | border-color: #d2d2d2; 2321 | color: #009688 2322 | } 2323 | 2324 | .layui-btn-group .layui-btn:first-child { 2325 | border-left: none; 2326 | border-radius: 2px 0 0 2px 2327 | } 2328 | 2329 | .layui-btn-group .layui-btn-primary:first-child { 2330 | border-left: 1px solid #d2d2d2 2331 | } 2332 | 2333 | .layui-btn-group .layui-btn:last-child { 2334 | border-radius: 0 2px 2px 0 2335 | } 2336 | 2337 | .layui-btn-group .layui-btn+.layui-btn { 2338 | margin-left: 0 2339 | } 2340 | 2341 | .layui-btn-group+.layui-btn-group { 2342 | margin-left: 10px 2343 | } 2344 | 2345 | .layui-btn-fluid { 2346 | width: 100% 2347 | } 2348 | 2349 | .layui-input, 2350 | .layui-select, 2351 | .layui-textarea { 2352 | height: 38px; 2353 | line-height: 1.3; 2354 | line-height: 38px\9; 2355 | border-width: 1px; 2356 | border-style: solid; 2357 | background-color: #fff; 2358 | color: rgba(0, 0, 0, .85); 2359 | border-radius: 2px 2360 | } 2361 | 2362 | .layui-input::-webkit-input-placeholder, 2363 | .layui-select::-webkit-input-placeholder, 2364 | .layui-textarea::-webkit-input-placeholder { 2365 | line-height: 1.3 2366 | } 2367 | 2368 | .layui-input, 2369 | .layui-textarea { 2370 | display: block; 2371 | width: 100%; 2372 | padding-left: 10px 2373 | } 2374 | 2375 | .layui-input:hover, 2376 | .layui-textarea:hover { 2377 | border-color: #eee!important 2378 | } 2379 | 2380 | .layui-input:focus, 2381 | .layui-textarea:focus { 2382 | border-color: #d2d2d2!important 2383 | } 2384 | 2385 | .layui-textarea { 2386 | min-height: 100px; 2387 | height: auto; 2388 | line-height: 20px; 2389 | padding: 6px 10px; 2390 | resize: vertical 2391 | } 2392 | 2393 | .layui-select { 2394 | padding: 0 10px 2395 | } 2396 | 2397 | .layui-form input[type=checkbox], 2398 | .layui-form input[type=radio], 2399 | .layui-form select { 2400 | display: none 2401 | } 2402 | 2403 | .layui-form [lay-ignore] { 2404 | display: initial 2405 | } 2406 | 2407 | .layui-form-item { 2408 | margin-bottom: 15px; 2409 | clear: both; 2410 | *zoom: 1 2411 | } 2412 | 2413 | .layui-form-item:after { 2414 | content: '\20'; 2415 | clear: both; 2416 | *zoom: 1; 2417 | display: block; 2418 | height: 0 2419 | } 2420 | 2421 | .layui-form-label { 2422 | float: left; 2423 | display: block; 2424 | padding: 9px 15px; 2425 | width: 80px; 2426 | font-weight: 400; 2427 | line-height: 20px; 2428 | text-align: right 2429 | } 2430 | 2431 | .layui-form-label-col { 2432 | display: block; 2433 | float: none; 2434 | padding: 9px 0; 2435 | line-height: 20px; 2436 | text-align: left 2437 | } 2438 | 2439 | .layui-form-item .layui-inline { 2440 | margin-bottom: 5px; 2441 | margin-right: 10px 2442 | } 2443 | 2444 | .layui-input-block { 2445 | margin-left: 110px; 2446 | min-height: 36px 2447 | } 2448 | 2449 | .layui-input-inline { 2450 | display: inline-block; 2451 | vertical-align: middle 2452 | } 2453 | 2454 | .layui-form-item .layui-input-inline { 2455 | float: left; 2456 | width: 190px; 2457 | margin-right: 10px 2458 | } 2459 | 2460 | .layui-form-text .layui-input-inline { 2461 | width: auto 2462 | } 2463 | 2464 | .layui-form-mid { 2465 | float: left; 2466 | display: block; 2467 | padding: 9px 0!important; 2468 | line-height: 20px; 2469 | margin-right: 10px 2470 | } 2471 | 2472 | .layui-form-danger+.layui-form-select .layui-input, 2473 | .layui-form-danger:focus { 2474 | border-color: #FF5722!important 2475 | } 2476 | 2477 | .layui-form-select .layui-input { 2478 | padding-right: 30px; 2479 | cursor: pointer 2480 | } 2481 | 2482 | .layui-form-select .layui-edge { 2483 | position: absolute; 2484 | right: 10px; 2485 | top: 50%; 2486 | margin-top: -3px; 2487 | cursor: pointer; 2488 | border-width: 6px; 2489 | border-top-color: #c2c2c2; 2490 | border-top-style: solid; 2491 | transition: all .3s; 2492 | -webkit-transition: all .3s 2493 | } 2494 | 2495 | .layui-form-select dl { 2496 | display: none; 2497 | position: absolute; 2498 | left: 0; 2499 | top: 42px; 2500 | padding: 5px 0; 2501 | z-index: 899; 2502 | min-width: 100%; 2503 | border: 1px solid #eee; 2504 | max-height: 300px; 2505 | overflow-y: auto; 2506 | background-color: #fff; 2507 | border-radius: 2px; 2508 | box-sizing: border-box 2509 | } 2510 | 2511 | .layui-form-select dl dd, 2512 | .layui-form-select dl dt { 2513 | padding: 0 10px; 2514 | line-height: 36px; 2515 | white-space: nowrap; 2516 | overflow: hidden; 2517 | text-overflow: ellipsis 2518 | } 2519 | 2520 | .layui-form-select dl dt { 2521 | font-size: 12px; 2522 | color: #999 2523 | } 2524 | 2525 | .layui-form-select dl dd { 2526 | cursor: pointer 2527 | } 2528 | 2529 | .layui-form-select dl dd:hover { 2530 | background-color: #F6F6F6; 2531 | -webkit-transition: .5s all; 2532 | transition: .5s all 2533 | } 2534 | 2535 | .layui-form-select .layui-select-group dd { 2536 | padding-left: 20px 2537 | } 2538 | 2539 | .layui-form-select dl dd.layui-select-tips { 2540 | padding-left: 10px!important; 2541 | color: #999 2542 | } 2543 | 2544 | .layui-form-select dl dd.layui-this { 2545 | background-color: #5FB878; 2546 | color: #fff 2547 | } 2548 | 2549 | .layui-form-checkbox, 2550 | .layui-form-select dl dd.layui-disabled { 2551 | background-color: #fff 2552 | } 2553 | 2554 | .layui-form-selected dl { 2555 | display: block 2556 | } 2557 | 2558 | .layui-form-checkbox, 2559 | .layui-form-checkbox *, 2560 | .layui-form-switch { 2561 | display: inline-block; 2562 | vertical-align: middle 2563 | } 2564 | 2565 | .layui-form-selected .layui-edge { 2566 | margin-top: -9px; 2567 | -webkit-transform: rotate(180deg); 2568 | transform: rotate(180deg); 2569 | margin-top: -3px\9 2570 | } 2571 | 2572 | :root .layui-form-selected .layui-edge { 2573 | margin-top: -9px\0/IE9 2574 | } 2575 | 2576 | .layui-form-selectup dl { 2577 | top: auto; 2578 | bottom: 42px 2579 | } 2580 | 2581 | .layui-select-none { 2582 | margin: 5px 0; 2583 | text-align: center; 2584 | color: #999 2585 | } 2586 | 2587 | .layui-select-disabled .layui-disabled { 2588 | border-color: #eee!important 2589 | } 2590 | 2591 | .layui-select-disabled .layui-edge { 2592 | border-top-color: #d2d2d2 2593 | } 2594 | 2595 | .layui-form-checkbox { 2596 | position: relative; 2597 | height: 30px; 2598 | line-height: 30px; 2599 | margin-right: 10px; 2600 | padding-right: 30px; 2601 | cursor: pointer; 2602 | font-size: 0; 2603 | -webkit-transition: .1s linear; 2604 | transition: .1s linear; 2605 | box-sizing: border-box 2606 | } 2607 | 2608 | .layui-form-checkbox span { 2609 | padding: 0 10px; 2610 | height: 100%; 2611 | font-size: 14px; 2612 | border-radius: 2px 0 0 2px; 2613 | background-color: #d2d2d2; 2614 | color: #fff; 2615 | overflow: hidden; 2616 | white-space: nowrap; 2617 | text-overflow: ellipsis 2618 | } 2619 | 2620 | .layui-form-checkbox:hover span { 2621 | background-color: #c2c2c2 2622 | } 2623 | 2624 | .layui-form-checkbox i { 2625 | position: absolute; 2626 | right: 0; 2627 | top: 0; 2628 | width: 30px; 2629 | height: 28px; 2630 | border: 1px solid #d2d2d2; 2631 | border-left: none; 2632 | border-radius: 0 2px 2px 0; 2633 | color: #fff; 2634 | font-size: 20px; 2635 | text-align: center 2636 | } 2637 | 2638 | .layui-form-checkbox:hover i { 2639 | border-color: #c2c2c2; 2640 | color: #c2c2c2 2641 | } 2642 | 2643 | .layui-form-checked, 2644 | .layui-form-checked:hover { 2645 | border-color: #5FB878 2646 | } 2647 | 2648 | .layui-form-checked span, 2649 | .layui-form-checked:hover span { 2650 | background-color: #5FB878 2651 | } 2652 | 2653 | .layui-form-checked i, 2654 | .layui-form-checked:hover i { 2655 | color: #5FB878 2656 | } 2657 | 2658 | .layui-form-item .layui-form-checkbox { 2659 | margin-top: 4px 2660 | } 2661 | 2662 | .layui-form-checkbox[lay-skin=primary] { 2663 | height: auto!important; 2664 | line-height: normal!important; 2665 | min-width: 18px; 2666 | min-height: 18px; 2667 | border: none!important; 2668 | margin-right: 0; 2669 | padding-left: 28px; 2670 | padding-right: 0; 2671 | background: 0 0 2672 | } 2673 | 2674 | .layui-form-checkbox[lay-skin=primary] span { 2675 | padding-left: 0; 2676 | padding-right: 15px; 2677 | line-height: 18px; 2678 | background: 0 0; 2679 | color: #666 2680 | } 2681 | 2682 | .layui-form-checkbox[lay-skin=primary] i { 2683 | right: auto; 2684 | left: 0; 2685 | width: 16px; 2686 | height: 16px; 2687 | line-height: 16px; 2688 | border: 1px solid #d2d2d2; 2689 | font-size: 12px; 2690 | border-radius: 2px; 2691 | background-color: #fff; 2692 | -webkit-transition: .1s linear; 2693 | transition: .1s linear 2694 | } 2695 | 2696 | .layui-form-checkbox[lay-skin=primary]:hover i { 2697 | border-color: #5FB878; 2698 | color: #fff 2699 | } 2700 | 2701 | .layui-form-checked[lay-skin=primary] i { 2702 | border-color: #5FB878!important; 2703 | background-color: #5FB878; 2704 | color: #fff 2705 | } 2706 | 2707 | .layui-checkbox-disabled[lay-skin=primary] span { 2708 | background: 0 0!important; 2709 | color: #c2c2c2!important 2710 | } 2711 | 2712 | .layui-checkbox-disabled[lay-skin=primary]:hover i { 2713 | border-color: #d2d2d2 2714 | } 2715 | 2716 | .layui-form-item .layui-form-checkbox[lay-skin=primary] { 2717 | margin-top: 10px 2718 | } 2719 | 2720 | .layui-form-switch { 2721 | position: relative; 2722 | height: 22px; 2723 | line-height: 22px; 2724 | min-width: 35px; 2725 | padding: 0 5px; 2726 | margin-top: 8px; 2727 | border: 1px solid #d2d2d2; 2728 | border-radius: 20px; 2729 | cursor: pointer; 2730 | background-color: #fff; 2731 | -webkit-transition: .1s linear; 2732 | transition: .1s linear 2733 | } 2734 | 2735 | .layui-form-switch i { 2736 | position: absolute; 2737 | left: 5px; 2738 | top: 3px; 2739 | width: 16px; 2740 | height: 16px; 2741 | border-radius: 20px; 2742 | background-color: #d2d2d2; 2743 | -webkit-transition: .1s linear; 2744 | transition: .1s linear 2745 | } 2746 | 2747 | .layui-form-switch em { 2748 | position: relative; 2749 | top: 0; 2750 | width: 25px; 2751 | margin-left: 21px; 2752 | padding: 0!important; 2753 | text-align: center!important; 2754 | color: #999!important; 2755 | font-style: normal!important; 2756 | font-size: 12px 2757 | } 2758 | 2759 | .layui-form-onswitch { 2760 | border-color: #5FB878; 2761 | background-color: #5FB878 2762 | } 2763 | 2764 | .layui-checkbox-disabled, 2765 | .layui-checkbox-disabled i { 2766 | border-color: #eee!important 2767 | } 2768 | 2769 | .layui-form-onswitch i { 2770 | left: 100%; 2771 | margin-left: -21px; 2772 | background-color: #fff 2773 | } 2774 | 2775 | .layui-form-onswitch em { 2776 | margin-left: 5px; 2777 | margin-right: 21px; 2778 | color: #fff!important 2779 | } 2780 | 2781 | .layui-checkbox-disabled span { 2782 | background-color: #eee!important 2783 | } 2784 | 2785 | .layui-checkbox-disabled em { 2786 | color: #d2d2d2!important 2787 | } 2788 | 2789 | .layui-checkbox-disabled:hover i { 2790 | color: #fff!important 2791 | } 2792 | 2793 | [lay-radio] { 2794 | display: none 2795 | } 2796 | 2797 | .layui-form-radio, 2798 | .layui-form-radio * { 2799 | display: inline-block; 2800 | vertical-align: middle 2801 | } 2802 | 2803 | .layui-form-radio { 2804 | line-height: 28px; 2805 | margin: 6px 10px 0 0; 2806 | padding-right: 10px; 2807 | cursor: pointer; 2808 | font-size: 0 2809 | } 2810 | 2811 | .layui-form-radio * { 2812 | font-size: 14px 2813 | } 2814 | 2815 | .layui-form-radio>i { 2816 | margin-right: 8px; 2817 | font-size: 22px; 2818 | color: #c2c2c2 2819 | } 2820 | 2821 | .layui-form-radio:hover *, 2822 | .layui-form-radioed, 2823 | .layui-form-radioed>i { 2824 | color: #5FB878 2825 | } 2826 | 2827 | .layui-radio-disabled>i { 2828 | color: #eee!important 2829 | } 2830 | 2831 | .layui-radio-disabled * { 2832 | color: #c2c2c2!important 2833 | } 2834 | 2835 | .layui-form-pane .layui-form-label { 2836 | width: 110px; 2837 | padding: 8px 15px; 2838 | height: 38px; 2839 | line-height: 20px; 2840 | border-width: 1px; 2841 | border-style: solid; 2842 | border-radius: 2px 0 0 2px; 2843 | text-align: center; 2844 | background-color: #FAFAFA; 2845 | overflow: hidden; 2846 | white-space: nowrap; 2847 | text-overflow: ellipsis; 2848 | box-sizing: border-box 2849 | } 2850 | 2851 | .layui-form-pane .layui-input-inline { 2852 | margin-left: -1px 2853 | } 2854 | 2855 | .layui-form-pane .layui-input-block { 2856 | margin-left: 110px; 2857 | left: -1px 2858 | } 2859 | 2860 | .layui-form-pane .layui-input { 2861 | border-radius: 0 2px 2px 0 2862 | } 2863 | 2864 | .layui-form-pane .layui-form-text .layui-form-label { 2865 | float: none; 2866 | width: 100%; 2867 | border-radius: 2px; 2868 | box-sizing: border-box; 2869 | text-align: left 2870 | } 2871 | 2872 | .layui-form-pane .layui-form-text .layui-input-inline { 2873 | display: block; 2874 | margin: 0; 2875 | top: -1px; 2876 | clear: both 2877 | } 2878 | 2879 | .layui-form-pane .layui-form-text .layui-input-block { 2880 | margin: 0; 2881 | left: 0; 2882 | top: -1px 2883 | } 2884 | 2885 | .layui-form-pane .layui-form-text .layui-textarea { 2886 | min-height: 100px; 2887 | border-radius: 0 0 2px 2px 2888 | } 2889 | 2890 | .layui-form-pane .layui-form-checkbox { 2891 | margin: 4px 0 4px 10px 2892 | } 2893 | 2894 | .layui-form-pane .layui-form-radio, 2895 | .layui-form-pane .layui-form-switch { 2896 | margin-top: 6px; 2897 | margin-left: 10px 2898 | } 2899 | 2900 | .layui-form-pane .layui-form-item[pane] { 2901 | position: relative; 2902 | border-width: 1px; 2903 | border-style: solid 2904 | } 2905 | 2906 | .layui-form-pane .layui-form-item[pane] .layui-form-label { 2907 | position: absolute; 2908 | left: 0; 2909 | top: 0; 2910 | height: 100%; 2911 | border-width: 0 1px 0 0 2912 | } 2913 | 2914 | .layui-form-pane .layui-form-item[pane] .layui-input-inline { 2915 | margin-left: 110px 2916 | } 2917 | 2918 | @media screen and (max-width:450px) { 2919 | .layui-form-item .layui-form-label { 2920 | text-overflow: ellipsis; 2921 | overflow: hidden; 2922 | white-space: nowrap 2923 | } 2924 | .layui-form-item .layui-inline { 2925 | display: block; 2926 | margin-right: 0; 2927 | margin-bottom: 20px; 2928 | clear: both 2929 | } 2930 | .layui-form-item .layui-inline:after { 2931 | content: '\20'; 2932 | clear: both; 2933 | display: block; 2934 | height: 0 2935 | } 2936 | .layui-form-item .layui-input-inline { 2937 | display: block; 2938 | float: none; 2939 | left: -3px; 2940 | width: auto!important; 2941 | margin: 0 0 10px 112px 2942 | } 2943 | .layui-form-item .layui-input-inline+.layui-form-mid { 2944 | margin-left: 110px; 2945 | top: -5px; 2946 | padding: 0 2947 | } 2948 | .layui-form-item .layui-form-checkbox { 2949 | margin-right: 5px; 2950 | margin-bottom: 5px 2951 | } 2952 | } 2953 | 2954 | .layui-layedit { 2955 | border-width: 1px; 2956 | border-style: solid; 2957 | border-radius: 2px 2958 | } 2959 | 2960 | .layui-layedit-tool { 2961 | padding: 3px 5px; 2962 | border-bottom-width: 1px; 2963 | border-bottom-style: solid; 2964 | font-size: 0 2965 | } 2966 | 2967 | .layedit-tool-fixed { 2968 | position: fixed; 2969 | top: 0; 2970 | border-top: 1px solid #eee 2971 | } 2972 | 2973 | .layui-layedit-tool .layedit-tool-mid, 2974 | .layui-layedit-tool .layui-icon { 2975 | display: inline-block; 2976 | vertical-align: middle; 2977 | text-align: center; 2978 | font-size: 14px 2979 | } 2980 | 2981 | .layui-layedit-tool .layui-icon { 2982 | position: relative; 2983 | width: 32px; 2984 | height: 30px; 2985 | line-height: 30px; 2986 | margin: 3px 5px; 2987 | color: #777; 2988 | cursor: pointer; 2989 | border-radius: 2px 2990 | } 2991 | 2992 | .layui-layedit-tool .layui-icon:hover { 2993 | color: #393D49 2994 | } 2995 | 2996 | .layui-layedit-tool .layui-icon:active { 2997 | color: #000 2998 | } 2999 | 3000 | .layui-layedit-tool .layedit-tool-active { 3001 | background-color: #eee; 3002 | color: #000 3003 | } 3004 | 3005 | .layui-layedit-tool .layui-disabled, 3006 | .layui-layedit-tool .layui-disabled:hover { 3007 | color: #d2d2d2; 3008 | cursor: not-allowed 3009 | } 3010 | 3011 | .layui-layedit-tool .layedit-tool-mid { 3012 | width: 1px; 3013 | height: 18px; 3014 | margin: 0 10px; 3015 | background-color: #d2d2d2 3016 | } 3017 | 3018 | .layedit-tool-html { 3019 | width: 50px!important; 3020 | font-size: 30px!important 3021 | } 3022 | 3023 | .layedit-tool-b, 3024 | .layedit-tool-code, 3025 | .layedit-tool-help { 3026 | font-size: 16px!important 3027 | } 3028 | 3029 | .layedit-tool-d, 3030 | .layedit-tool-face, 3031 | .layedit-tool-image, 3032 | .layedit-tool-unlink { 3033 | font-size: 18px!important 3034 | } 3035 | 3036 | .layedit-tool-image input { 3037 | position: absolute; 3038 | font-size: 0; 3039 | left: 0; 3040 | top: 0; 3041 | width: 100%; 3042 | height: 100%; 3043 | opacity: .01; 3044 | filter: Alpha(opacity=1); 3045 | cursor: pointer 3046 | } 3047 | 3048 | .layui-layedit-iframe iframe { 3049 | display: block; 3050 | width: 100% 3051 | } 3052 | 3053 | #LAY_layedit_code { 3054 | overflow: hidden 3055 | } 3056 | 3057 | .layui-laypage { 3058 | display: inline-block; 3059 | *display: inline; 3060 | *zoom: 1; 3061 | vertical-align: middle; 3062 | margin: 10px 0; 3063 | font-size: 0 3064 | } 3065 | 3066 | .layui-laypage>a:first-child, 3067 | .layui-laypage>a:first-child em { 3068 | border-radius: 2px 0 0 2px 3069 | } 3070 | 3071 | .layui-laypage>a:last-child, 3072 | .layui-laypage>a:last-child em { 3073 | border-radius: 0 2px 2px 0 3074 | } 3075 | 3076 | .layui-laypage>:first-child { 3077 | margin-left: 0!important 3078 | } 3079 | 3080 | .layui-laypage>:last-child { 3081 | margin-right: 0!important 3082 | } 3083 | 3084 | .layui-laypage a, 3085 | .layui-laypage button, 3086 | .layui-laypage input, 3087 | .layui-laypage select, 3088 | .layui-laypage span { 3089 | border: 1px solid #eee 3090 | } 3091 | 3092 | .layui-laypage a, 3093 | .layui-laypage span { 3094 | display: inline-block; 3095 | *display: inline; 3096 | *zoom: 1; 3097 | vertical-align: middle; 3098 | padding: 0 15px; 3099 | height: 28px; 3100 | line-height: 28px; 3101 | margin: 0 -1px 5px 0; 3102 | background-color: #fff; 3103 | color: #333; 3104 | font-size: 12px 3105 | } 3106 | 3107 | .layui-flow-more a *, 3108 | .layui-laypage input, 3109 | .layui-table-view select[lay-ignore] { 3110 | display: inline-block 3111 | } 3112 | 3113 | .layui-laypage a:hover { 3114 | color: #009688 3115 | } 3116 | 3117 | .layui-laypage em { 3118 | font-style: normal 3119 | } 3120 | 3121 | .layui-laypage .layui-laypage-spr { 3122 | color: #999; 3123 | font-weight: 700 3124 | } 3125 | 3126 | .layui-laypage a { 3127 | text-decoration: none 3128 | } 3129 | 3130 | .layui-laypage .layui-laypage-curr { 3131 | position: relative 3132 | } 3133 | 3134 | .layui-laypage .layui-laypage-curr em { 3135 | position: relative; 3136 | color: #fff 3137 | } 3138 | 3139 | .layui-laypage .layui-laypage-curr .layui-laypage-em { 3140 | position: absolute; 3141 | left: -1px; 3142 | top: -1px; 3143 | padding: 1px; 3144 | width: 100%; 3145 | height: 100%; 3146 | background-color: #009688 3147 | } 3148 | 3149 | .layui-laypage-em { 3150 | border-radius: 2px 3151 | } 3152 | 3153 | .layui-laypage-next em, 3154 | .layui-laypage-prev em { 3155 | font-family: Sim sun; 3156 | font-size: 16px 3157 | } 3158 | 3159 | .layui-laypage .layui-laypage-count, 3160 | .layui-laypage .layui-laypage-limits, 3161 | .layui-laypage .layui-laypage-refresh, 3162 | .layui-laypage .layui-laypage-skip { 3163 | margin-left: 10px; 3164 | margin-right: 10px; 3165 | padding: 0; 3166 | border: none 3167 | } 3168 | 3169 | .layui-laypage .layui-laypage-limits, 3170 | .layui-laypage .layui-laypage-refresh { 3171 | vertical-align: top 3172 | } 3173 | 3174 | .layui-laypage .layui-laypage-refresh i { 3175 | font-size: 18px; 3176 | cursor: pointer 3177 | } 3178 | 3179 | .layui-laypage select { 3180 | height: 22px; 3181 | padding: 3px; 3182 | border-radius: 2px; 3183 | cursor: pointer 3184 | } 3185 | 3186 | .layui-laypage .layui-laypage-skip { 3187 | height: 30px; 3188 | line-height: 30px; 3189 | color: #999 3190 | } 3191 | 3192 | .layui-laypage button, 3193 | .layui-laypage input { 3194 | height: 30px; 3195 | line-height: 30px; 3196 | border-radius: 2px; 3197 | vertical-align: top; 3198 | background-color: #fff; 3199 | box-sizing: border-box 3200 | } 3201 | 3202 | .layui-laypage input { 3203 | width: 40px; 3204 | margin: 0 10px; 3205 | padding: 0 3px; 3206 | text-align: center 3207 | } 3208 | 3209 | .layui-laypage input:focus, 3210 | .layui-laypage select:focus { 3211 | border-color: #009688!important 3212 | } 3213 | 3214 | .layui-laypage button { 3215 | margin-left: 10px; 3216 | padding: 0 10px; 3217 | cursor: pointer 3218 | } 3219 | 3220 | .layui-table, 3221 | .layui-table-view { 3222 | margin: 10px 0 3223 | } 3224 | 3225 | .layui-flow-more { 3226 | margin: 10px 0; 3227 | text-align: center; 3228 | color: #999; 3229 | font-size: 14px 3230 | } 3231 | 3232 | .layui-flow-more a { 3233 | height: 32px; 3234 | line-height: 32px 3235 | } 3236 | 3237 | .layui-flow-more a * { 3238 | vertical-align: top 3239 | } 3240 | 3241 | .layui-flow-more a cite { 3242 | padding: 0 20px; 3243 | border-radius: 3px; 3244 | background-color: #eee; 3245 | color: #333; 3246 | font-style: normal 3247 | } 3248 | 3249 | .layui-flow-more a cite:hover { 3250 | opacity: .8 3251 | } 3252 | 3253 | .layui-flow-more a i { 3254 | font-size: 30px; 3255 | color: #737383 3256 | } 3257 | 3258 | .layui-table { 3259 | width: 100%; 3260 | background-color: #fff; 3261 | color: #666 3262 | } 3263 | 3264 | .layui-table tr { 3265 | transition: all .3s; 3266 | -webkit-transition: all .3s 3267 | } 3268 | 3269 | .layui-table th { 3270 | text-align: left; 3271 | font-weight: 400 3272 | } 3273 | 3274 | .layui-table tbody tr:hover, 3275 | .layui-table thead tr, 3276 | .layui-table-click, 3277 | .layui-table-header, 3278 | .layui-table-hover, 3279 | .layui-table-mend, 3280 | .layui-table-patch, 3281 | .layui-table-tool, 3282 | .layui-table-total, 3283 | .layui-table-total tr, 3284 | .layui-table[lay-even] tr:nth-child(even) { 3285 | background-color: #FAFAFA 3286 | } 3287 | 3288 | .layui-table td, 3289 | .layui-table th, 3290 | .layui-table-col-set, 3291 | .layui-table-fixed-r, 3292 | .layui-table-grid-down, 3293 | .layui-table-header, 3294 | .layui-table-page, 3295 | .layui-table-tips-main, 3296 | .layui-table-tool, 3297 | .layui-table-total, 3298 | .layui-table-view, 3299 | .layui-table[lay-skin=line], 3300 | .layui-table[lay-skin=row] { 3301 | border-width: 1px; 3302 | border-style: solid; 3303 | border-color: #eee 3304 | } 3305 | 3306 | .layui-table td, 3307 | .layui-table th { 3308 | position: relative; 3309 | padding: 9px 15px; 3310 | min-height: 20px; 3311 | line-height: 20px; 3312 | font-size: 14px 3313 | } 3314 | 3315 | .layui-table[lay-skin=line] td, 3316 | .layui-table[lay-skin=line] th { 3317 | border-width: 0 0 1px 3318 | } 3319 | 3320 | .layui-table[lay-skin=row] td, 3321 | .layui-table[lay-skin=row] th { 3322 | border-width: 0 1px 0 0 3323 | } 3324 | 3325 | .layui-table[lay-skin=nob] td, 3326 | .layui-table[lay-skin=nob] th { 3327 | border: none 3328 | } 3329 | 3330 | .layui-table img { 3331 | max-width: 100px 3332 | } 3333 | 3334 | .layui-table[lay-size=lg] td, 3335 | .layui-table[lay-size=lg] th { 3336 | padding: 15px 30px 3337 | } 3338 | 3339 | .layui-table-view .layui-table[lay-size=lg] .layui-table-cell { 3340 | height: 40px; 3341 | line-height: 40px 3342 | } 3343 | 3344 | .layui-table[lay-size=sm] td, 3345 | .layui-table[lay-size=sm] th { 3346 | font-size: 12px; 3347 | padding: 5px 10px 3348 | } 3349 | 3350 | .layui-table-view .layui-table[lay-size=sm] .layui-table-cell { 3351 | height: 20px; 3352 | line-height: 20px 3353 | } 3354 | 3355 | .layui-table[lay-data] { 3356 | display: none 3357 | } 3358 | 3359 | .layui-table-box { 3360 | position: relative; 3361 | overflow: hidden 3362 | } 3363 | 3364 | .layui-table-view .layui-table { 3365 | position: relative; 3366 | width: auto; 3367 | margin: 0 3368 | } 3369 | 3370 | .layui-table-view .layui-table[lay-skin=line] { 3371 | border-width: 0 1px 0 0 3372 | } 3373 | 3374 | .layui-table-view .layui-table[lay-skin=row] { 3375 | border-width: 0 0 1px 3376 | } 3377 | 3378 | .layui-table-view .layui-table td, 3379 | .layui-table-view .layui-table th { 3380 | padding: 5px 0; 3381 | border-top: none; 3382 | border-left: none 3383 | } 3384 | 3385 | .layui-table-view .layui-table th.layui-unselect .layui-table-cell span { 3386 | cursor: pointer 3387 | } 3388 | 3389 | .layui-table-view .layui-table td { 3390 | cursor: default 3391 | } 3392 | 3393 | .layui-table-view .layui-table td[data-edit=text] { 3394 | cursor: text 3395 | } 3396 | 3397 | .layui-table-view .layui-form-checkbox[lay-skin=primary] i { 3398 | width: 18px; 3399 | height: 18px 3400 | } 3401 | 3402 | .layui-table-view .layui-form-radio { 3403 | line-height: 0; 3404 | padding: 0 3405 | } 3406 | 3407 | .layui-table-view .layui-form-radio>i { 3408 | margin: 0; 3409 | font-size: 20px 3410 | } 3411 | 3412 | .layui-table-init { 3413 | position: absolute; 3414 | left: 0; 3415 | top: 0; 3416 | width: 100%; 3417 | height: 100%; 3418 | text-align: center; 3419 | z-index: 110 3420 | } 3421 | 3422 | .layui-table-init .layui-icon { 3423 | position: absolute; 3424 | left: 50%; 3425 | top: 50%; 3426 | margin: -15px 0 0 -15px; 3427 | font-size: 30px; 3428 | color: #c2c2c2 3429 | } 3430 | 3431 | .layui-table-header { 3432 | border-width: 0 0 1px; 3433 | overflow: hidden 3434 | } 3435 | 3436 | .layui-table-header .layui-table { 3437 | margin-bottom: -1px 3438 | } 3439 | 3440 | .layui-table-tool .layui-inline[lay-event] { 3441 | position: relative; 3442 | width: 26px; 3443 | height: 26px; 3444 | padding: 5px; 3445 | line-height: 16px; 3446 | margin-right: 10px; 3447 | text-align: center; 3448 | color: #333; 3449 | border: 1px solid #ccc; 3450 | cursor: pointer; 3451 | -webkit-transition: .5s all; 3452 | transition: .5s all 3453 | } 3454 | 3455 | .layui-table-tool .layui-inline[lay-event]:hover { 3456 | border: 1px solid #999 3457 | } 3458 | 3459 | .layui-table-tool-temp { 3460 | padding-right: 120px 3461 | } 3462 | 3463 | .layui-table-tool-self { 3464 | position: absolute; 3465 | right: 17px; 3466 | top: 10px 3467 | } 3468 | 3469 | .layui-table-tool .layui-table-tool-self .layui-inline[lay-event] { 3470 | margin: 0 0 0 10px 3471 | } 3472 | 3473 | .layui-table-tool-panel { 3474 | position: absolute; 3475 | top: 29px; 3476 | left: -1px; 3477 | padding: 5px 0; 3478 | min-width: 150px; 3479 | min-height: 40px; 3480 | border: 1px solid #d2d2d2; 3481 | text-align: left; 3482 | overflow-y: auto; 3483 | background-color: #fff; 3484 | box-shadow: 0 2px 4px rgba(0, 0, 0, .12) 3485 | } 3486 | 3487 | .layui-table-cell, 3488 | .layui-table-tool-panel li { 3489 | overflow: hidden; 3490 | text-overflow: ellipsis; 3491 | white-space: nowrap 3492 | } 3493 | 3494 | .layui-table-tool-panel li { 3495 | padding: 0 10px; 3496 | line-height: 30px; 3497 | -webkit-transition: .5s all; 3498 | transition: .5s all 3499 | } 3500 | 3501 | .layui-menu li, 3502 | .layui-menu-body-title a:hover, 3503 | .layui-menu-body-title>.layui-icon:hover { 3504 | transition: all .3s 3505 | } 3506 | 3507 | .layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] { 3508 | width: 100%; 3509 | padding-left: 28px 3510 | } 3511 | 3512 | .layui-table-tool-panel li:hover { 3513 | background-color: #F6F6F6 3514 | } 3515 | 3516 | .layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i { 3517 | position: absolute; 3518 | left: 0; 3519 | top: 0 3520 | } 3521 | 3522 | .layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span { 3523 | padding: 0 3524 | } 3525 | 3526 | .layui-table-tool .layui-table-tool-self .layui-table-tool-panel { 3527 | left: auto; 3528 | right: -1px 3529 | } 3530 | 3531 | .layui-table-col-set { 3532 | position: absolute; 3533 | right: 0; 3534 | top: 0; 3535 | width: 20px; 3536 | height: 100%; 3537 | border-width: 0 0 0 1px; 3538 | background-color: #fff 3539 | } 3540 | 3541 | .layui-table-sort { 3542 | width: 10px; 3543 | height: 20px; 3544 | margin-left: 5px; 3545 | cursor: pointer!important 3546 | } 3547 | 3548 | .layui-table-sort .layui-edge { 3549 | position: absolute; 3550 | left: 5px; 3551 | border-width: 5px 3552 | } 3553 | 3554 | .layui-table-sort .layui-table-sort-asc { 3555 | top: 3px; 3556 | border-top: none; 3557 | border-bottom-style: solid; 3558 | border-bottom-color: #b2b2b2 3559 | } 3560 | 3561 | .layui-table-sort .layui-table-sort-asc:hover { 3562 | border-bottom-color: #666 3563 | } 3564 | 3565 | .layui-table-sort .layui-table-sort-desc { 3566 | bottom: 5px; 3567 | border-bottom: none; 3568 | border-top-style: solid; 3569 | border-top-color: #b2b2b2 3570 | } 3571 | 3572 | .layui-table-sort .layui-table-sort-desc:hover { 3573 | border-top-color: #666 3574 | } 3575 | 3576 | .layui-table-sort[lay-sort=asc] .layui-table-sort-asc { 3577 | border-bottom-color: #000 3578 | } 3579 | 3580 | .layui-table-sort[lay-sort=desc] .layui-table-sort-desc { 3581 | border-top-color: #000 3582 | } 3583 | 3584 | .layui-table-cell { 3585 | height: 28px; 3586 | line-height: 28px; 3587 | padding: 0 15px; 3588 | position: relative; 3589 | box-sizing: border-box 3590 | } 3591 | 3592 | .layui-table-cell .layui-form-checkbox[lay-skin=primary] { 3593 | top: -1px; 3594 | padding: 0 3595 | } 3596 | 3597 | .layui-table-cell .layui-table-link { 3598 | color: #01AAED 3599 | } 3600 | 3601 | .laytable-cell-checkbox, 3602 | .laytable-cell-numbers, 3603 | .laytable-cell-radio, 3604 | .laytable-cell-space { 3605 | padding: 0; 3606 | text-align: center 3607 | } 3608 | 3609 | .layui-table-body { 3610 | position: relative; 3611 | overflow: auto; 3612 | margin-right: -1px; 3613 | margin-bottom: -1px 3614 | } 3615 | 3616 | .layui-table-body .layui-none { 3617 | line-height: 26px; 3618 | padding: 30px 15px; 3619 | text-align: center; 3620 | color: #999 3621 | } 3622 | 3623 | .layui-table-fixed { 3624 | position: absolute; 3625 | left: 0; 3626 | top: 0; 3627 | z-index: 101 3628 | } 3629 | 3630 | .layui-table-fixed .layui-table-body { 3631 | overflow: hidden 3632 | } 3633 | 3634 | .layui-table-fixed-l { 3635 | box-shadow: 1px 0 8px rgba(0, 0, 0, .08) 3636 | } 3637 | 3638 | .layui-table-fixed-r { 3639 | left: auto; 3640 | right: -1px; 3641 | border-width: 0 0 0 1px; 3642 | box-shadow: -1px 0 8px rgba(0, 0, 0, .08) 3643 | } 3644 | 3645 | .layui-table-fixed-r .layui-table-header { 3646 | position: relative; 3647 | overflow: visible 3648 | } 3649 | 3650 | .layui-table-mend { 3651 | position: absolute; 3652 | right: -49px; 3653 | top: 0; 3654 | height: 100%; 3655 | width: 50px 3656 | } 3657 | 3658 | .layui-table-tool { 3659 | position: relative; 3660 | z-index: 890; 3661 | width: 100%; 3662 | min-height: 50px; 3663 | line-height: 30px; 3664 | padding: 10px 15px; 3665 | border-width: 0 0 1px 3666 | } 3667 | 3668 | .layui-table-tool .layui-btn-container { 3669 | margin-bottom: -10px 3670 | } 3671 | 3672 | .layui-table-page, 3673 | .layui-table-total { 3674 | border-width: 1px 0 0; 3675 | margin-bottom: -1px; 3676 | overflow: hidden 3677 | } 3678 | 3679 | .layui-table-page { 3680 | position: relative; 3681 | width: 100%; 3682 | padding: 7px 7px 0; 3683 | height: 41px; 3684 | font-size: 12px; 3685 | white-space: nowrap 3686 | } 3687 | 3688 | .layui-table-page>div { 3689 | height: 26px 3690 | } 3691 | 3692 | .layui-table-page .layui-laypage { 3693 | margin: 0 3694 | } 3695 | 3696 | .layui-table-page .layui-laypage a, 3697 | .layui-table-page .layui-laypage span { 3698 | height: 26px; 3699 | line-height: 26px; 3700 | margin-bottom: 10px; 3701 | border: none; 3702 | background: 0 0 3703 | } 3704 | 3705 | .layui-table-page .layui-laypage a, 3706 | .layui-table-page .layui-laypage span.layui-laypage-curr { 3707 | padding: 0 12px 3708 | } 3709 | 3710 | .layui-table-page .layui-laypage span { 3711 | margin-left: 0; 3712 | padding: 0 3713 | } 3714 | 3715 | .layui-table-page .layui-laypage .layui-laypage-prev { 3716 | margin-left: -7px!important 3717 | } 3718 | 3719 | .layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em { 3720 | left: 0; 3721 | top: 0; 3722 | padding: 0 3723 | } 3724 | 3725 | .layui-table-page .layui-laypage button, 3726 | .layui-table-page .layui-laypage input { 3727 | height: 26px; 3728 | line-height: 26px 3729 | } 3730 | 3731 | .layui-table-page .layui-laypage input { 3732 | width: 40px 3733 | } 3734 | 3735 | .layui-table-page .layui-laypage button { 3736 | padding: 0 10px 3737 | } 3738 | 3739 | .layui-table-page select { 3740 | height: 18px 3741 | } 3742 | 3743 | .layui-table-patch .layui-table-cell { 3744 | padding: 0; 3745 | width: 30px 3746 | } 3747 | 3748 | .layui-table-edit { 3749 | position: absolute; 3750 | left: 0; 3751 | top: 0; 3752 | width: 100%; 3753 | height: 100%; 3754 | padding: 0 14px 1px; 3755 | border-radius: 0; 3756 | box-shadow: 1px 1px 20px rgba(0, 0, 0, .15) 3757 | } 3758 | 3759 | .layui-table-edit:focus { 3760 | border-color: #5FB878!important 3761 | } 3762 | 3763 | select.layui-table-edit { 3764 | padding: 0 0 0 10px; 3765 | border-color: #d2d2d2 3766 | } 3767 | 3768 | .layui-table-view .layui-form-checkbox, 3769 | .layui-table-view .layui-form-radio, 3770 | .layui-table-view .layui-form-switch { 3771 | top: 0; 3772 | margin: 0; 3773 | box-sizing: content-box 3774 | } 3775 | 3776 | .layui-colorpicker-alpha-slider, 3777 | .layui-colorpicker-side-slider, 3778 | .layui-menu, 3779 | .layui-menu *, 3780 | .layui-nav { 3781 | box-sizing: border-box 3782 | } 3783 | 3784 | .layui-table-view .layui-form-checkbox { 3785 | top: -1px; 3786 | height: 26px; 3787 | line-height: 26px 3788 | } 3789 | 3790 | .layui-table-view .layui-form-checkbox i { 3791 | height: 26px 3792 | } 3793 | 3794 | .layui-table-grid .layui-table-cell { 3795 | overflow: visible 3796 | } 3797 | 3798 | .layui-table-grid-down { 3799 | position: absolute; 3800 | top: 0; 3801 | right: 0; 3802 | width: 26px; 3803 | height: 100%; 3804 | padding: 5px 0; 3805 | border-width: 0 0 0 1px; 3806 | text-align: center; 3807 | background-color: #fff; 3808 | color: #999; 3809 | cursor: pointer 3810 | } 3811 | 3812 | .layui-table-grid-down .layui-icon { 3813 | position: absolute; 3814 | top: 50%; 3815 | left: 50%; 3816 | margin: -8px 0 0 -8px 3817 | } 3818 | 3819 | .layui-table-grid-down:hover { 3820 | background-color: #fbfbfb 3821 | } 3822 | 3823 | body .layui-table-tips .layui-layer-content { 3824 | background: 0 0; 3825 | padding: 0; 3826 | box-shadow: 0 1px 6px rgba(0, 0, 0, .12) 3827 | } 3828 | 3829 | .layui-table-tips-main { 3830 | margin: -44px 0 0 -1px; 3831 | max-height: 150px; 3832 | padding: 8px 15px; 3833 | font-size: 14px; 3834 | overflow-y: scroll; 3835 | background-color: #fff; 3836 | color: #666 3837 | } 3838 | 3839 | .layui-table-tips-c { 3840 | position: absolute; 3841 | right: -3px; 3842 | top: -13px; 3843 | width: 20px; 3844 | height: 20px; 3845 | padding: 3px; 3846 | cursor: pointer; 3847 | background-color: #666; 3848 | border-radius: 50%; 3849 | color: #fff 3850 | } 3851 | 3852 | .layui-table-tips-c:hover { 3853 | background-color: #777 3854 | } 3855 | 3856 | .layui-table-tips-c:before { 3857 | position: relative; 3858 | right: -2px 3859 | } 3860 | 3861 | .layui-upload-file { 3862 | display: none!important; 3863 | opacity: .01; 3864 | filter: Alpha(opacity=1) 3865 | } 3866 | 3867 | .layui-upload-drag, 3868 | .layui-upload-form, 3869 | .layui-upload-wrap { 3870 | display: inline-block 3871 | } 3872 | 3873 | .layui-upload-list { 3874 | margin: 10px 0 3875 | } 3876 | 3877 | .layui-upload-choose { 3878 | max-width: 200px; 3879 | padding: 0 10px; 3880 | color: #999; 3881 | font-size: 14px; 3882 | text-overflow: ellipsis; 3883 | overflow: hidden; 3884 | white-space: nowrap 3885 | } 3886 | 3887 | .layui-upload-drag { 3888 | position: relative; 3889 | padding: 30px; 3890 | border: 1px dashed #e2e2e2; 3891 | background-color: #fff; 3892 | text-align: center; 3893 | cursor: pointer; 3894 | color: #999 3895 | } 3896 | 3897 | .layui-upload-drag .layui-icon { 3898 | font-size: 50px; 3899 | color: #009688 3900 | } 3901 | 3902 | .layui-upload-drag[lay-over] { 3903 | border-color: #009688 3904 | } 3905 | 3906 | .layui-upload-iframe { 3907 | position: absolute; 3908 | width: 0; 3909 | height: 0; 3910 | border: 0; 3911 | visibility: hidden 3912 | } 3913 | 3914 | .layui-upload-wrap { 3915 | position: relative; 3916 | vertical-align: middle 3917 | } 3918 | 3919 | .layui-upload-wrap .layui-upload-file { 3920 | display: block!important; 3921 | position: absolute; 3922 | left: 0; 3923 | top: 0; 3924 | z-index: 10; 3925 | font-size: 100px; 3926 | width: 100%; 3927 | height: 100%; 3928 | opacity: .01; 3929 | filter: Alpha(opacity=1); 3930 | cursor: pointer 3931 | } 3932 | 3933 | .layui-btn-container .layui-upload-choose { 3934 | padding-left: 0 3935 | } 3936 | 3937 | .layui-menu { 3938 | position: relative; 3939 | margin: 5px 0; 3940 | background-color: #fff 3941 | } 3942 | 3943 | .layui-menu li, 3944 | .layui-menu-body-title a { 3945 | padding: 5px 15px 3946 | } 3947 | 3948 | .layui-menu li { 3949 | position: relative; 3950 | margin: 1px 0; 3951 | width: calc(100% + 1px); 3952 | line-height: 26px; 3953 | color: rgba(0, 0, 0, .8); 3954 | font-size: 14px; 3955 | white-space: nowrap; 3956 | cursor: pointer 3957 | } 3958 | 3959 | .layui-menu li:hover { 3960 | background-color: #F6F6F6 3961 | } 3962 | 3963 | .layui-menu-item-parent:hover>.layui-menu-body-panel { 3964 | display: block; 3965 | animation-name: layui-fadein; 3966 | animation-duration: .3s; 3967 | animation-fill-mode: both; 3968 | animation-delay: .2s 3969 | } 3970 | 3971 | .layui-menu-item-group .layui-menu-body-title, 3972 | .layui-menu-item-parent .layui-menu-body-title { 3973 | padding-right: 25px 3974 | } 3975 | 3976 | .layui-menu .layui-menu-item-divider:hover, 3977 | .layui-menu .layui-menu-item-group:hover, 3978 | .layui-menu .layui-menu-item-none:hover { 3979 | background: 0 0; 3980 | cursor: default 3981 | } 3982 | 3983 | .layui-menu .layui-menu-item-group>ul { 3984 | margin: 5px 0 -5px 3985 | } 3986 | 3987 | .layui-menu .layui-menu-item-group>.layui-menu-body-title { 3988 | color: rgba(0, 0, 0, .35); 3989 | user-select: none 3990 | } 3991 | 3992 | .layui-menu .layui-menu-item-none { 3993 | color: rgba(0, 0, 0, .35); 3994 | cursor: default; 3995 | text-align: center 3996 | } 3997 | 3998 | .layui-menu .layui-menu-item-divider { 3999 | margin: 5px 0; 4000 | padding: 0; 4001 | height: 0; 4002 | line-height: 0; 4003 | border-bottom: 1px solid #eee; 4004 | overflow: hidden 4005 | } 4006 | 4007 | .layui-menu .layui-menu-item-down:hover, 4008 | .layui-menu .layui-menu-item-up:hover { 4009 | cursor: pointer 4010 | } 4011 | 4012 | .layui-menu .layui-menu-item-up>.layui-menu-body-title { 4013 | color: rgba(0, 0, 0, .8) 4014 | } 4015 | 4016 | .layui-menu .layui-menu-item-up>ul { 4017 | visibility: hidden; 4018 | height: 0; 4019 | overflow: hidden 4020 | } 4021 | 4022 | .layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon, 4023 | .layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon { 4024 | color: rgba(0, 0, 0, 1) 4025 | } 4026 | 4027 | .layui-menu .layui-menu-item-down>ul { 4028 | visibility: visible; 4029 | height: auto 4030 | } 4031 | 4032 | .layui-breadcrumb, 4033 | .layui-tree-btnGroup { 4034 | visibility: hidden 4035 | } 4036 | 4037 | .layui-menu .layui-menu-item-checked, 4038 | .layui-menu .layui-menu-item-checked2 { 4039 | background-color: #F6F6F6!important; 4040 | color: #5FB878 4041 | } 4042 | 4043 | .layui-menu .layui-menu-item-checked a, 4044 | .layui-menu .layui-menu-item-checked2 a { 4045 | color: #5FB878 4046 | } 4047 | 4048 | .layui-menu .layui-menu-item-checked:after { 4049 | position: absolute; 4050 | right: 0; 4051 | top: 0; 4052 | bottom: 0; 4053 | border-right: 3px solid #5FB878; 4054 | content: "" 4055 | } 4056 | 4057 | .layui-menu-body-title { 4058 | position: relative; 4059 | overflow: hidden; 4060 | text-overflow: ellipsis 4061 | } 4062 | 4063 | .layui-menu-body-title a { 4064 | display: block; 4065 | margin: -5px -15px; 4066 | color: rgba(0, 0, 0, .8) 4067 | } 4068 | 4069 | .layui-menu-body-title>.layui-icon { 4070 | position: absolute; 4071 | right: 0; 4072 | top: 0; 4073 | font-size: 14px 4074 | } 4075 | 4076 | .layui-menu-body-title>.layui-icon-right { 4077 | right: -1px 4078 | } 4079 | 4080 | .layui-menu-body-panel { 4081 | display: none; 4082 | position: absolute; 4083 | top: -7px; 4084 | left: 100%; 4085 | z-index: 1000; 4086 | margin-left: 13px; 4087 | padding: 5px 0 4088 | } 4089 | 4090 | .layui-menu-body-panel:before { 4091 | content: ""; 4092 | position: absolute; 4093 | width: 20px; 4094 | left: -16px; 4095 | top: 0; 4096 | bottom: 0 4097 | } 4098 | 4099 | .layui-menu-body-panel-left { 4100 | left: auto; 4101 | right: 100%; 4102 | margin: 0 13px 4103 | } 4104 | 4105 | .layui-menu-body-panel-left:before { 4106 | left: auto; 4107 | right: -16px 4108 | } 4109 | 4110 | .layui-menu-lg li { 4111 | line-height: 32px 4112 | } 4113 | 4114 | .layui-menu-lg .layui-menu-body-title a:hover, 4115 | .layui-menu-lg li:hover { 4116 | background: 0 0; 4117 | color: #5FB878 4118 | } 4119 | 4120 | .layui-menu-lg li .layui-menu-body-panel { 4121 | margin-left: 14px 4122 | } 4123 | 4124 | .layui-menu-lg li .layui-menu-body-panel-left { 4125 | margin: 0 15px 4126 | } 4127 | 4128 | .layui-dropdown { 4129 | position: absolute; 4130 | left: -999999px; 4131 | top: -999999px; 4132 | z-index: 66666666; 4133 | margin: 5px 0; 4134 | min-width: 100px 4135 | } 4136 | 4137 | .layui-dropdown:before { 4138 | content: ""; 4139 | position: absolute; 4140 | width: 100%; 4141 | height: 6px; 4142 | left: 0; 4143 | top: -6px 4144 | } 4145 | 4146 | .layui-nav { 4147 | position: relative; 4148 | padding: 0 20px; 4149 | background-color: #393D49; 4150 | color: #fff; 4151 | border-radius: 2px; 4152 | font-size: 0 4153 | } 4154 | 4155 | .layui-nav * { 4156 | font-size: 14px 4157 | } 4158 | 4159 | .layui-nav .layui-nav-item { 4160 | position: relative; 4161 | display: inline-block; 4162 | *display: inline; 4163 | *zoom: 1; 4164 | vertical-align: middle; 4165 | line-height: 60px 4166 | } 4167 | 4168 | .layui-nav .layui-nav-item a { 4169 | display: block; 4170 | padding: 0 20px; 4171 | color: #fff; 4172 | color: rgba(255, 255, 255, .7); 4173 | transition: all .3s; 4174 | -webkit-transition: all .3s 4175 | } 4176 | 4177 | .layui-nav .layui-this:after, 4178 | .layui-nav-bar { 4179 | content: ""; 4180 | position: absolute; 4181 | left: 0; 4182 | top: 0; 4183 | width: 0; 4184 | height: 5px; 4185 | background-color: #5FB878; 4186 | transition: all .2s; 4187 | -webkit-transition: all .2s; 4188 | pointer-events: none 4189 | } 4190 | 4191 | .layui-nav-bar { 4192 | z-index: 1000 4193 | } 4194 | 4195 | .layui-nav[lay-bar=disabled] .layui-nav-bar { 4196 | display: none 4197 | } 4198 | 4199 | .layui-nav .layui-nav-item a:hover, 4200 | .layui-nav .layui-this a { 4201 | color: #fff 4202 | } 4203 | 4204 | .layui-nav .layui-this:after { 4205 | top: auto; 4206 | bottom: 0; 4207 | width: 100% 4208 | } 4209 | 4210 | .layui-nav-img { 4211 | width: 30px; 4212 | height: 30px; 4213 | margin-right: 10px; 4214 | border-radius: 50% 4215 | } 4216 | 4217 | .layui-nav .layui-nav-more { 4218 | position: absolute; 4219 | top: 0; 4220 | right: 3px; 4221 | left: auto!important; 4222 | margin-top: 0; 4223 | font-size: 12px; 4224 | cursor: pointer; 4225 | transition: all .2s; 4226 | -webkit-transition: all .2s 4227 | } 4228 | 4229 | .layui-nav .layui-nav-mored, 4230 | .layui-nav-itemed>a .layui-nav-more { 4231 | transform: rotate(180deg) 4232 | } 4233 | 4234 | .layui-nav-child { 4235 | display: none; 4236 | position: absolute; 4237 | left: 0; 4238 | top: 65px; 4239 | min-width: 100%; 4240 | line-height: 36px; 4241 | padding: 5px 0; 4242 | box-shadow: 0 2px 4px rgba(0, 0, 0, .12); 4243 | border: 1px solid #eee; 4244 | background-color: #fff; 4245 | z-index: 100; 4246 | border-radius: 2px; 4247 | white-space: nowrap 4248 | } 4249 | 4250 | .layui-nav .layui-nav-child a { 4251 | color: #666; 4252 | color: rgba(0, 0, 0, .8) 4253 | } 4254 | 4255 | .layui-nav .layui-nav-child a:hover { 4256 | background-color: #F6F6F6; 4257 | color: rgba(0, 0, 0, .8) 4258 | } 4259 | 4260 | .layui-nav-child dd { 4261 | margin: 1px 0; 4262 | position: relative 4263 | } 4264 | 4265 | .layui-nav-child dd.layui-this { 4266 | background-color: #F6F6F6; 4267 | color: #000 4268 | } 4269 | 4270 | .layui-nav-child dd.layui-this:after { 4271 | display: none 4272 | } 4273 | 4274 | .layui-nav-child-r { 4275 | left: auto; 4276 | right: 0 4277 | } 4278 | 4279 | .layui-nav-child-c { 4280 | text-align: center 4281 | } 4282 | 4283 | .layui-nav-tree { 4284 | width: 200px; 4285 | padding: 0 4286 | } 4287 | 4288 | .layui-nav-tree .layui-nav-item { 4289 | display: block; 4290 | width: 100%; 4291 | line-height: 40px 4292 | } 4293 | 4294 | .layui-nav-tree .layui-nav-item a { 4295 | position: relative; 4296 | height: 40px; 4297 | line-height: 40px; 4298 | text-overflow: ellipsis; 4299 | overflow: hidden; 4300 | white-space: nowrap 4301 | } 4302 | 4303 | .layui-nav-tree .layui-nav-item>a { 4304 | padding-top: 5px; 4305 | padding-bottom: 5px 4306 | } 4307 | 4308 | .layui-nav-tree .layui-nav-more { 4309 | right: 15px 4310 | } 4311 | 4312 | .layui-nav-tree .layui-nav-item>a .layui-nav-more { 4313 | padding: 5px 0 4314 | } 4315 | 4316 | .layui-nav-tree .layui-nav-bar { 4317 | width: 5px; 4318 | height: 0; 4319 | background-color: #009688 4320 | } 4321 | 4322 | .layui-side .layui-nav-tree .layui-nav-bar { 4323 | width: 2px 4324 | } 4325 | 4326 | .layui-nav-tree .layui-nav-child dd.layui-this, 4327 | .layui-nav-tree .layui-nav-child dd.layui-this a, 4328 | .layui-nav-tree .layui-this, 4329 | .layui-nav-tree .layui-this>a, 4330 | .layui-nav-tree .layui-this>a:hover { 4331 | background-color: #009688; 4332 | color: #fff 4333 | } 4334 | 4335 | .layui-nav-tree .layui-this:after { 4336 | display: none 4337 | } 4338 | 4339 | .layui-nav-itemed>a, 4340 | .layui-nav-tree .layui-nav-title a, 4341 | .layui-nav-tree .layui-nav-title a:hover { 4342 | color: #fff!important 4343 | } 4344 | 4345 | .layui-nav-tree .layui-nav-child { 4346 | position: relative; 4347 | z-index: 0; 4348 | top: 0; 4349 | border: none; 4350 | box-shadow: none 4351 | } 4352 | 4353 | .layui-nav-tree .layui-nav-child dd { 4354 | margin: 0 4355 | } 4356 | 4357 | .layui-nav-tree .layui-nav-child a { 4358 | color: #fff; 4359 | color: rgba(255, 255, 255, .7) 4360 | } 4361 | 4362 | .layui-nav-tree .layui-nav-child, 4363 | .layui-nav-tree .layui-nav-child a:hover { 4364 | background: 0 0; 4365 | color: #fff 4366 | } 4367 | 4368 | .layui-nav-itemed>.layui-nav-child { 4369 | display: block; 4370 | background-color: rgba(0, 0, 0, .3)!important 4371 | } 4372 | 4373 | .layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child { 4374 | display: block 4375 | } 4376 | 4377 | .layui-nav-side { 4378 | position: fixed; 4379 | top: 0; 4380 | bottom: 0; 4381 | left: 0; 4382 | overflow-x: hidden; 4383 | z-index: 999 4384 | } 4385 | 4386 | .layui-breadcrumb { 4387 | font-size: 0 4388 | } 4389 | 4390 | .layui-breadcrumb>* { 4391 | font-size: 14px 4392 | } 4393 | 4394 | .layui-breadcrumb a { 4395 | color: #999!important 4396 | } 4397 | 4398 | .layui-breadcrumb a:hover { 4399 | color: #5FB878!important 4400 | } 4401 | 4402 | .layui-breadcrumb a cite { 4403 | color: #666; 4404 | font-style: normal 4405 | } 4406 | 4407 | .layui-breadcrumb span[lay-separator] { 4408 | margin: 0 10px; 4409 | color: #999 4410 | } 4411 | 4412 | .layui-tab { 4413 | margin: 10px 0; 4414 | text-align: left!important 4415 | } 4416 | 4417 | .layui-tab[overflow]>.layui-tab-title { 4418 | overflow: hidden 4419 | } 4420 | 4421 | .layui-tab-title { 4422 | position: relative; 4423 | left: 0; 4424 | height: 40px; 4425 | white-space: nowrap; 4426 | font-size: 0; 4427 | border-bottom-width: 1px; 4428 | border-bottom-style: solid; 4429 | transition: all .2s; 4430 | -webkit-transition: all .2s 4431 | } 4432 | 4433 | .layui-tab-title li { 4434 | display: inline-block; 4435 | *display: inline; 4436 | *zoom: 1; 4437 | vertical-align: middle; 4438 | font-size: 14px; 4439 | transition: all .2s; 4440 | -webkit-transition: all .2s; 4441 | position: relative; 4442 | line-height: 40px; 4443 | min-width: 65px; 4444 | padding: 0 15px; 4445 | text-align: center; 4446 | cursor: pointer 4447 | } 4448 | 4449 | .layui-tab-title li a { 4450 | display: block; 4451 | padding: 0 15px; 4452 | margin: 0 -15px 4453 | } 4454 | 4455 | .layui-tab-title .layui-this { 4456 | color: #000 4457 | } 4458 | 4459 | .layui-tab-title .layui-this:after { 4460 | position: absolute; 4461 | left: 0; 4462 | top: 0; 4463 | content: ""; 4464 | width: 100%; 4465 | height: 41px; 4466 | border-width: 1px; 4467 | border-style: solid; 4468 | border-bottom-color: #fff; 4469 | border-radius: 2px 2px 0 0; 4470 | box-sizing: border-box; 4471 | pointer-events: none 4472 | } 4473 | 4474 | .layui-tab-bar { 4475 | position: absolute; 4476 | right: 0; 4477 | top: 0; 4478 | z-index: 10; 4479 | width: 30px; 4480 | height: 39px; 4481 | line-height: 39px; 4482 | border-width: 1px; 4483 | border-style: solid; 4484 | border-radius: 2px; 4485 | text-align: center; 4486 | background-color: #fff; 4487 | cursor: pointer 4488 | } 4489 | 4490 | .layui-tab-bar .layui-icon { 4491 | position: relative; 4492 | display: inline-block; 4493 | top: 3px; 4494 | transition: all .3s; 4495 | -webkit-transition: all .3s 4496 | } 4497 | 4498 | .layui-tab-item { 4499 | display: none 4500 | } 4501 | 4502 | .layui-tab-more { 4503 | padding-right: 30px; 4504 | height: auto!important; 4505 | white-space: normal!important 4506 | } 4507 | 4508 | .layui-tab-more li.layui-this:after { 4509 | border-bottom-color: #eee; 4510 | border-radius: 2px 4511 | } 4512 | 4513 | .layui-tab-more .layui-tab-bar .layui-icon { 4514 | top: -2px; 4515 | top: 3px\9; 4516 | -webkit-transform: rotate(180deg); 4517 | transform: rotate(180deg) 4518 | } 4519 | 4520 | :root .layui-tab-more .layui-tab-bar .layui-icon { 4521 | top: -2px\0/IE9 4522 | } 4523 | 4524 | .layui-tab-content { 4525 | padding: 15px 0 4526 | } 4527 | 4528 | .layui-tab-title li .layui-tab-close { 4529 | position: relative; 4530 | display: inline-block; 4531 | width: 18px; 4532 | height: 18px; 4533 | line-height: 20px; 4534 | margin-left: 8px; 4535 | top: 1px; 4536 | text-align: center; 4537 | font-size: 14px; 4538 | color: #c2c2c2; 4539 | transition: all .2s; 4540 | -webkit-transition: all .2s 4541 | } 4542 | 4543 | .layui-tab-title li .layui-tab-close:hover { 4544 | border-radius: 2px; 4545 | background-color: #FF5722; 4546 | color: #fff 4547 | } 4548 | 4549 | .layui-tab-brief>.layui-tab-title .layui-this { 4550 | color: #009688 4551 | } 4552 | 4553 | .layui-tab-brief>.layui-tab-more li.layui-this:after, 4554 | .layui-tab-brief>.layui-tab-title .layui-this:after { 4555 | border: none; 4556 | border-radius: 0; 4557 | border-bottom: 2px solid #5FB878 4558 | } 4559 | 4560 | .layui-tab-brief[overflow]>.layui-tab-title .layui-this:after { 4561 | top: -1px 4562 | } 4563 | 4564 | .layui-tab-card { 4565 | border-width: 1px; 4566 | border-style: solid; 4567 | border-radius: 2px; 4568 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) 4569 | } 4570 | 4571 | .layui-tab-card>.layui-tab-title { 4572 | background-color: #FAFAFA 4573 | } 4574 | 4575 | .layui-tab-card>.layui-tab-title li { 4576 | margin-right: -1px; 4577 | margin-left: -1px 4578 | } 4579 | 4580 | .layui-tab-card>.layui-tab-title .layui-this { 4581 | background-color: #fff 4582 | } 4583 | 4584 | .layui-tab-card>.layui-tab-title .layui-this:after { 4585 | border-top: none; 4586 | border-width: 1px; 4587 | border-bottom-color: #fff 4588 | } 4589 | 4590 | .layui-tab-card>.layui-tab-title .layui-tab-bar { 4591 | height: 40px; 4592 | line-height: 40px; 4593 | border-radius: 0; 4594 | border-top: none; 4595 | border-right: none 4596 | } 4597 | 4598 | .layui-tab-card>.layui-tab-more .layui-this { 4599 | background: 0 0; 4600 | color: #5FB878 4601 | } 4602 | 4603 | .layui-tab-card>.layui-tab-more .layui-this:after { 4604 | border: none 4605 | } 4606 | 4607 | .layui-timeline { 4608 | padding-left: 5px 4609 | } 4610 | 4611 | .layui-timeline-item { 4612 | position: relative; 4613 | padding-bottom: 20px 4614 | } 4615 | 4616 | .layui-timeline-axis { 4617 | position: absolute; 4618 | left: -5px; 4619 | top: 0; 4620 | z-index: 10; 4621 | width: 20px; 4622 | height: 20px; 4623 | line-height: 20px; 4624 | background-color: #fff; 4625 | color: #5FB878; 4626 | border-radius: 50%; 4627 | text-align: center; 4628 | cursor: pointer 4629 | } 4630 | 4631 | .layui-timeline-axis:hover { 4632 | color: #FF5722 4633 | } 4634 | 4635 | .layui-timeline-item:before { 4636 | content: ""; 4637 | position: absolute; 4638 | left: 5px; 4639 | top: 0; 4640 | z-index: 0; 4641 | width: 1px; 4642 | height: 100% 4643 | } 4644 | 4645 | .layui-timeline-item:first-child:before { 4646 | display: block 4647 | } 4648 | 4649 | .layui-timeline-item:last-child:before { 4650 | display: none 4651 | } 4652 | 4653 | .layui-timeline-content { 4654 | padding-left: 25px 4655 | } 4656 | 4657 | .layui-timeline-title { 4658 | position: relative; 4659 | margin-bottom: 10px; 4660 | line-height: 22px 4661 | } 4662 | 4663 | .layui-badge, 4664 | .layui-badge-dot, 4665 | .layui-badge-rim { 4666 | position: relative; 4667 | display: inline-block; 4668 | padding: 0 6px; 4669 | font-size: 12px; 4670 | text-align: center; 4671 | background-color: #FF5722; 4672 | color: #fff; 4673 | border-radius: 2px 4674 | } 4675 | 4676 | .layui-badge { 4677 | height: 18px; 4678 | line-height: 18px 4679 | } 4680 | 4681 | .layui-badge-dot { 4682 | width: 8px; 4683 | height: 8px; 4684 | padding: 0; 4685 | border-radius: 50% 4686 | } 4687 | 4688 | .layui-badge-rim { 4689 | height: 18px; 4690 | line-height: 18px; 4691 | border-width: 1px; 4692 | border-style: solid; 4693 | background-color: #fff; 4694 | color: #666 4695 | } 4696 | 4697 | .layui-btn .layui-badge, 4698 | .layui-btn .layui-badge-dot { 4699 | margin-left: 5px 4700 | } 4701 | 4702 | .layui-nav .layui-badge, 4703 | .layui-nav .layui-badge-dot { 4704 | position: absolute; 4705 | top: 50%; 4706 | margin: -5px 6px 0 4707 | } 4708 | 4709 | .layui-nav .layui-badge { 4710 | margin-top: -10px 4711 | } 4712 | 4713 | .layui-tab-title .layui-badge, 4714 | .layui-tab-title .layui-badge-dot { 4715 | left: 5px; 4716 | top: -2px 4717 | } 4718 | 4719 | .layui-carousel { 4720 | position: relative; 4721 | left: 0; 4722 | top: 0; 4723 | background-color: #f8f8f8 4724 | } 4725 | 4726 | .layui-carousel>[carousel-item] { 4727 | position: relative; 4728 | width: 100%; 4729 | height: 100%; 4730 | overflow: hidden 4731 | } 4732 | 4733 | .layui-carousel>[carousel-item]:before { 4734 | position: absolute; 4735 | content: '\e63d'; 4736 | left: 50%; 4737 | top: 50%; 4738 | width: 100px; 4739 | line-height: 20px; 4740 | margin: -10px 0 0 -50px; 4741 | text-align: center; 4742 | color: #c2c2c2; 4743 | font-family: layui-icon!important; 4744 | font-size: 30px; 4745 | font-style: normal; 4746 | -webkit-font-smoothing: antialiased; 4747 | -moz-osx-font-smoothing: grayscale 4748 | } 4749 | 4750 | .layui-carousel>[carousel-item]>* { 4751 | display: none; 4752 | position: absolute; 4753 | left: 0; 4754 | top: 0; 4755 | width: 100%; 4756 | height: 100%; 4757 | background-color: #f8f8f8; 4758 | transition-duration: .3s; 4759 | -webkit-transition-duration: .3s 4760 | } 4761 | 4762 | .layui-carousel-updown>* { 4763 | -webkit-transition: .3s ease-in-out up; 4764 | transition: .3s ease-in-out up 4765 | } 4766 | 4767 | .layui-carousel-arrow { 4768 | display: none\9; 4769 | opacity: 0; 4770 | position: absolute; 4771 | left: 10px; 4772 | top: 50%; 4773 | margin-top: -18px; 4774 | width: 36px; 4775 | height: 36px; 4776 | line-height: 36px; 4777 | text-align: center; 4778 | font-size: 20px; 4779 | border: 0; 4780 | border-radius: 50%; 4781 | background-color: rgba(0, 0, 0, .2); 4782 | color: #fff; 4783 | -webkit-transition-duration: .3s; 4784 | transition-duration: .3s; 4785 | cursor: pointer 4786 | } 4787 | 4788 | .layui-carousel-arrow[lay-type=add] { 4789 | left: auto!important; 4790 | right: 10px 4791 | } 4792 | 4793 | .layui-carousel:hover .layui-carousel-arrow[lay-type=add], 4794 | .layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add] { 4795 | right: 20px 4796 | } 4797 | 4798 | .layui-carousel[lay-arrow=always] .layui-carousel-arrow { 4799 | opacity: 1; 4800 | left: 20px 4801 | } 4802 | 4803 | .layui-carousel[lay-arrow=none] .layui-carousel-arrow { 4804 | display: none 4805 | } 4806 | 4807 | .layui-carousel-arrow:hover, 4808 | .layui-carousel-ind ul:hover { 4809 | background-color: rgba(0, 0, 0, .35) 4810 | } 4811 | 4812 | .layui-carousel:hover .layui-carousel-arrow { 4813 | display: block\9; 4814 | opacity: 1; 4815 | left: 20px 4816 | } 4817 | 4818 | .layui-carousel-ind { 4819 | position: relative; 4820 | top: -35px; 4821 | width: 100%; 4822 | line-height: 0!important; 4823 | text-align: center; 4824 | font-size: 0 4825 | } 4826 | 4827 | .layui-carousel[lay-indicator=outside] { 4828 | margin-bottom: 30px 4829 | } 4830 | 4831 | .layui-carousel[lay-indicator=outside] .layui-carousel-ind { 4832 | top: 10px 4833 | } 4834 | 4835 | .layui-carousel[lay-indicator=outside] .layui-carousel-ind ul { 4836 | background-color: rgba(0, 0, 0, .5) 4837 | } 4838 | 4839 | .layui-carousel[lay-indicator=none] .layui-carousel-ind { 4840 | display: none 4841 | } 4842 | 4843 | .layui-carousel-ind ul { 4844 | display: inline-block; 4845 | padding: 5px; 4846 | background-color: rgba(0, 0, 0, .2); 4847 | border-radius: 10px; 4848 | -webkit-transition-duration: .3s; 4849 | transition-duration: .3s 4850 | } 4851 | 4852 | .layui-carousel-ind li { 4853 | display: inline-block; 4854 | width: 10px; 4855 | height: 10px; 4856 | margin: 0 3px; 4857 | font-size: 14px; 4858 | background-color: #eee; 4859 | background-color: rgba(255, 255, 255, .5); 4860 | border-radius: 50%; 4861 | cursor: pointer; 4862 | -webkit-transition-duration: .3s; 4863 | transition-duration: .3s 4864 | } 4865 | 4866 | .layui-carousel-ind li:hover { 4867 | background-color: rgba(255, 255, 255, .7) 4868 | } 4869 | 4870 | .layui-carousel-ind li.layui-this { 4871 | background-color: #fff 4872 | } 4873 | 4874 | .layui-carousel>[carousel-item]>.layui-carousel-next, 4875 | .layui-carousel>[carousel-item]>.layui-carousel-prev, 4876 | .layui-carousel>[carousel-item]>.layui-this { 4877 | display: block 4878 | } 4879 | 4880 | .layui-carousel>[carousel-item]>.layui-this { 4881 | left: 0 4882 | } 4883 | 4884 | .layui-carousel>[carousel-item]>.layui-carousel-prev { 4885 | left: -100% 4886 | } 4887 | 4888 | .layui-carousel>[carousel-item]>.layui-carousel-next { 4889 | left: 100% 4890 | } 4891 | 4892 | .layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left, 4893 | .layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right { 4894 | left: 0 4895 | } 4896 | 4897 | .layui-carousel>[carousel-item]>.layui-this.layui-carousel-left { 4898 | left: -100% 4899 | } 4900 | 4901 | .layui-carousel>[carousel-item]>.layui-this.layui-carousel-right { 4902 | left: 100% 4903 | } 4904 | 4905 | .layui-carousel[lay-anim=updown] .layui-carousel-arrow { 4906 | left: 50%!important; 4907 | top: 20px; 4908 | margin: 0 0 0 -18px 4909 | } 4910 | 4911 | .layui-carousel[lay-anim=updown]>[carousel-item]>*, 4912 | .layui-carousel[lay-anim=fade]>[carousel-item]>* { 4913 | left: 0!important 4914 | } 4915 | 4916 | .layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add] { 4917 | top: auto!important; 4918 | bottom: 20px 4919 | } 4920 | 4921 | .layui-carousel[lay-anim=updown] .layui-carousel-ind { 4922 | position: absolute; 4923 | top: 50%; 4924 | right: 20px; 4925 | width: auto; 4926 | height: auto 4927 | } 4928 | 4929 | .layui-carousel[lay-anim=updown] .layui-carousel-ind ul { 4930 | padding: 3px 5px 4931 | } 4932 | 4933 | .layui-carousel[lay-anim=updown] .layui-carousel-ind li { 4934 | display: block; 4935 | margin: 6px 0 4936 | } 4937 | 4938 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this { 4939 | top: 0 4940 | } 4941 | 4942 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev { 4943 | top: -100% 4944 | } 4945 | 4946 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next { 4947 | top: 100% 4948 | } 4949 | 4950 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left, 4951 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right { 4952 | top: 0 4953 | } 4954 | 4955 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left { 4956 | top: -100% 4957 | } 4958 | 4959 | .layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right { 4960 | top: 100% 4961 | } 4962 | 4963 | .layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next, 4964 | .layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev { 4965 | opacity: 0 4966 | } 4967 | 4968 | .layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left, 4969 | .layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right { 4970 | opacity: 1 4971 | } 4972 | 4973 | .layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left, 4974 | .layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right { 4975 | opacity: 0 4976 | } 4977 | 4978 | .layui-fixbar { 4979 | position: fixed; 4980 | right: 15px; 4981 | bottom: 15px; 4982 | z-index: 999999 4983 | } 4984 | 4985 | .layui-fixbar li { 4986 | width: 50px; 4987 | height: 50px; 4988 | line-height: 50px; 4989 | margin-bottom: 1px; 4990 | text-align: center; 4991 | cursor: pointer; 4992 | font-size: 30px; 4993 | background-color: #9F9F9F; 4994 | color: #fff; 4995 | border-radius: 2px; 4996 | opacity: .95 4997 | } 4998 | 4999 | .layui-fixbar li:hover { 5000 | opacity: .85 5001 | } 5002 | 5003 | .layui-fixbar li:active { 5004 | opacity: 1 5005 | } 5006 | 5007 | .layui-fixbar .layui-fixbar-top { 5008 | display: none; 5009 | font-size: 40px 5010 | } 5011 | 5012 | body .layui-util-face { 5013 | border: none; 5014 | background: 0 0 5015 | } 5016 | 5017 | body .layui-util-face .layui-layer-content { 5018 | padding: 0; 5019 | background-color: #fff; 5020 | color: #666; 5021 | box-shadow: none 5022 | } 5023 | 5024 | .layui-util-face .layui-layer-TipsG { 5025 | display: none 5026 | } 5027 | 5028 | .layui-transfer-active, 5029 | .layui-transfer-box { 5030 | display: inline-block; 5031 | vertical-align: middle 5032 | } 5033 | 5034 | .layui-util-face ul { 5035 | position: relative; 5036 | width: 372px; 5037 | padding: 10px; 5038 | border: 1px solid #D9D9D9; 5039 | background-color: #fff; 5040 | box-shadow: 0 0 20px rgba(0, 0, 0, .2) 5041 | } 5042 | 5043 | .layui-util-face ul li { 5044 | cursor: pointer; 5045 | float: left; 5046 | border: 1px solid #e8e8e8; 5047 | height: 22px; 5048 | width: 26px; 5049 | overflow: hidden; 5050 | margin: -1px 0 0 -1px; 5051 | padding: 4px 2px; 5052 | text-align: center 5053 | } 5054 | 5055 | .layui-util-face ul li:hover { 5056 | position: relative; 5057 | z-index: 2; 5058 | border: 1px solid #eb7350; 5059 | background: #fff9ec 5060 | } 5061 | 5062 | .layui-code { 5063 | position: relative; 5064 | margin: 10px 0; 5065 | padding: 15px; 5066 | line-height: 20px; 5067 | border: 1px solid #eee; 5068 | border-left-width: 6px; 5069 | background-color: #FAFAFA; 5070 | color: #333; 5071 | font-family: Courier New; 5072 | font-size: 12px 5073 | } 5074 | 5075 | .layui-transfer-box, 5076 | .layui-transfer-header, 5077 | .layui-transfer-search { 5078 | border-width: 0; 5079 | border-style: solid; 5080 | border-color: #eee 5081 | } 5082 | 5083 | .layui-transfer-box { 5084 | position: relative; 5085 | border-width: 1px; 5086 | width: 200px; 5087 | height: 360px; 5088 | border-radius: 2px; 5089 | background-color: #fff 5090 | } 5091 | 5092 | .layui-transfer-box .layui-form-checkbox { 5093 | width: 100%; 5094 | margin: 0!important 5095 | } 5096 | 5097 | .layui-transfer-header { 5098 | height: 38px; 5099 | line-height: 38px; 5100 | padding: 0 10px; 5101 | border-bottom-width: 1px 5102 | } 5103 | 5104 | .layui-transfer-search { 5105 | position: relative; 5106 | padding: 10px; 5107 | border-bottom-width: 1px 5108 | } 5109 | 5110 | .layui-transfer-search .layui-input { 5111 | height: 32px; 5112 | padding-left: 30px; 5113 | font-size: 12px 5114 | } 5115 | 5116 | .layui-transfer-search .layui-icon-search { 5117 | position: absolute; 5118 | left: 20px; 5119 | top: 50%; 5120 | margin-top: -8px; 5121 | color: #666 5122 | } 5123 | 5124 | .layui-transfer-active { 5125 | margin: 0 15px 5126 | } 5127 | 5128 | .layui-transfer-active .layui-btn { 5129 | display: block; 5130 | margin: 0; 5131 | padding: 0 15px; 5132 | background-color: #5FB878; 5133 | border-color: #5FB878; 5134 | color: #fff 5135 | } 5136 | 5137 | .layui-transfer-active .layui-btn-disabled { 5138 | background-color: #FBFBFB; 5139 | border-color: #eee; 5140 | color: #d2d2d2 5141 | } 5142 | 5143 | .layui-transfer-active .layui-btn:first-child { 5144 | margin-bottom: 15px 5145 | } 5146 | 5147 | .layui-transfer-active .layui-btn .layui-icon { 5148 | margin: 0; 5149 | font-size: 14px!important 5150 | } 5151 | 5152 | .layui-transfer-data { 5153 | padding: 5px 0; 5154 | overflow: auto 5155 | } 5156 | 5157 | .layui-transfer-data li { 5158 | height: 32px; 5159 | line-height: 32px; 5160 | padding: 0 10px 5161 | } 5162 | 5163 | .layui-transfer-data li:hover { 5164 | background-color: #F6F6F6; 5165 | transition: .5s all 5166 | } 5167 | 5168 | .layui-transfer-data .layui-none { 5169 | padding: 15px 10px; 5170 | text-align: center; 5171 | color: #999 5172 | } 5173 | 5174 | .layui-rate, 5175 | .layui-rate * { 5176 | display: inline-block; 5177 | vertical-align: middle 5178 | } 5179 | 5180 | .layui-rate { 5181 | padding: 10px 5px 10px 0; 5182 | font-size: 0 5183 | } 5184 | 5185 | .layui-rate li i.layui-icon { 5186 | font-size: 20px; 5187 | color: #FFB800; 5188 | margin-right: 5px; 5189 | transition: all .3s; 5190 | -webkit-transition: all .3s 5191 | } 5192 | 5193 | .layui-rate li i:hover { 5194 | cursor: pointer; 5195 | transform: scale(1.12); 5196 | -webkit-transform: scale(1.12) 5197 | } 5198 | 5199 | .layui-rate[readonly] li i:hover { 5200 | cursor: default; 5201 | transform: scale(1) 5202 | } 5203 | 5204 | .layui-colorpicker { 5205 | width: 26px; 5206 | height: 26px; 5207 | border: 1px solid #eee; 5208 | padding: 5px; 5209 | border-radius: 2px; 5210 | line-height: 24px; 5211 | display: inline-block; 5212 | cursor: pointer; 5213 | transition: all .3s; 5214 | -webkit-transition: all .3s 5215 | } 5216 | 5217 | .layui-colorpicker:hover { 5218 | border-color: #d2d2d2 5219 | } 5220 | 5221 | .layui-colorpicker.layui-colorpicker-lg { 5222 | width: 34px; 5223 | height: 34px; 5224 | line-height: 32px 5225 | } 5226 | 5227 | .layui-colorpicker.layui-colorpicker-sm { 5228 | width: 24px; 5229 | height: 24px; 5230 | line-height: 22px 5231 | } 5232 | 5233 | .layui-colorpicker.layui-colorpicker-xs { 5234 | width: 22px; 5235 | height: 22px; 5236 | line-height: 20px 5237 | } 5238 | 5239 | .layui-colorpicker-trigger-bgcolor { 5240 | display: block; 5241 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); 5242 | border-radius: 2px 5243 | } 5244 | 5245 | .layui-colorpicker-trigger-span { 5246 | display: block; 5247 | height: 100%; 5248 | box-sizing: border-box; 5249 | border: 1px solid rgba(0, 0, 0, .15); 5250 | border-radius: 2px; 5251 | text-align: center 5252 | } 5253 | 5254 | .layui-colorpicker-trigger-i { 5255 | display: inline-block; 5256 | color: #FFF; 5257 | font-size: 12px 5258 | } 5259 | 5260 | .layui-colorpicker-trigger-i.layui-icon-close { 5261 | color: #999 5262 | } 5263 | 5264 | .layui-colorpicker-main { 5265 | position: absolute; 5266 | left: -999999px; 5267 | top: -999999px; 5268 | z-index: 66666666; 5269 | width: 280px; 5270 | margin: 5px 0; 5271 | padding: 7px; 5272 | background: #FFF; 5273 | border: 1px solid #d2d2d2; 5274 | border-radius: 2px; 5275 | box-shadow: 0 2px 4px rgba(0, 0, 0, .12) 5276 | } 5277 | 5278 | .layui-colorpicker-main-wrapper { 5279 | height: 180px; 5280 | position: relative 5281 | } 5282 | 5283 | .layui-colorpicker-basis { 5284 | width: 260px; 5285 | height: 100%; 5286 | position: relative 5287 | } 5288 | 5289 | .layui-colorpicker-basis-white { 5290 | width: 100%; 5291 | height: 100%; 5292 | position: absolute; 5293 | top: 0; 5294 | left: 0; 5295 | background: linear-gradient(90deg, #FFF, hsla(0, 0%, 100%, 0)) 5296 | } 5297 | 5298 | .layui-colorpicker-basis-black { 5299 | width: 100%; 5300 | height: 100%; 5301 | position: absolute; 5302 | top: 0; 5303 | left: 0; 5304 | background: linear-gradient(0deg, #000, transparent) 5305 | } 5306 | 5307 | .layui-colorpicker-basis-cursor { 5308 | width: 10px; 5309 | height: 10px; 5310 | border: 1px solid #FFF; 5311 | border-radius: 50%; 5312 | position: absolute; 5313 | top: -3px; 5314 | right: -3px; 5315 | cursor: pointer 5316 | } 5317 | 5318 | .layui-colorpicker-side { 5319 | position: absolute; 5320 | top: 0; 5321 | right: 0; 5322 | width: 12px; 5323 | height: 100%; 5324 | background: linear-gradient(red, #FF0, #0F0, #0FF, #00F, #F0F, red) 5325 | } 5326 | 5327 | .layui-colorpicker-side-slider { 5328 | width: 100%; 5329 | height: 5px; 5330 | box-shadow: 0 0 1px #888; 5331 | background: #FFF; 5332 | border-radius: 1px; 5333 | border: 1px solid #f0f0f0; 5334 | cursor: pointer; 5335 | position: absolute; 5336 | left: 0 5337 | } 5338 | 5339 | .layui-colorpicker-main-alpha { 5340 | display: none; 5341 | height: 12px; 5342 | margin-top: 7px; 5343 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) 5344 | } 5345 | 5346 | .layui-colorpicker-alpha-bgcolor { 5347 | height: 100%; 5348 | position: relative 5349 | } 5350 | 5351 | .layui-colorpicker-alpha-slider { 5352 | width: 5px; 5353 | height: 100%; 5354 | box-shadow: 0 0 1px #888; 5355 | background: #FFF; 5356 | border-radius: 1px; 5357 | border: 1px solid #f0f0f0; 5358 | cursor: pointer; 5359 | position: absolute; 5360 | top: 0 5361 | } 5362 | 5363 | .layui-colorpicker-main-pre { 5364 | padding-top: 7px; 5365 | font-size: 0 5366 | } 5367 | 5368 | .layui-colorpicker-pre { 5369 | width: 20px; 5370 | height: 20px; 5371 | border-radius: 2px; 5372 | display: inline-block; 5373 | margin-left: 6px; 5374 | margin-bottom: 7px; 5375 | cursor: pointer 5376 | } 5377 | 5378 | .layui-colorpicker-pre:nth-child(11n+1) { 5379 | margin-left: 0 5380 | } 5381 | 5382 | .layui-colorpicker-pre-isalpha { 5383 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) 5384 | } 5385 | 5386 | .layui-colorpicker-pre.layui-this { 5387 | box-shadow: 0 0 3px 2px rgba(0, 0, 0, .15) 5388 | } 5389 | 5390 | .layui-colorpicker-pre>div { 5391 | height: 100%; 5392 | border-radius: 2px 5393 | } 5394 | 5395 | .layui-colorpicker-main-input { 5396 | text-align: right; 5397 | padding-top: 7px 5398 | } 5399 | 5400 | .layui-colorpicker-main-input .layui-btn-container .layui-btn { 5401 | margin: 0 0 0 10px 5402 | } 5403 | 5404 | .layui-colorpicker-main-input div.layui-inline { 5405 | float: left; 5406 | margin-right: 10px; 5407 | font-size: 14px 5408 | } 5409 | 5410 | .layui-colorpicker-main-input input.layui-input { 5411 | width: 150px; 5412 | height: 30px; 5413 | color: #666 5414 | } 5415 | 5416 | .layui-slider { 5417 | height: 4px; 5418 | background: #eee; 5419 | border-radius: 3px; 5420 | position: relative; 5421 | cursor: pointer 5422 | } 5423 | 5424 | .layui-slider-bar { 5425 | border-radius: 3px; 5426 | position: absolute; 5427 | height: 100% 5428 | } 5429 | 5430 | .layui-slider-step { 5431 | position: absolute; 5432 | top: 0; 5433 | width: 4px; 5434 | height: 4px; 5435 | border-radius: 50%; 5436 | background: #FFF; 5437 | -webkit-transform: translateX(-50%); 5438 | transform: translateX(-50%) 5439 | } 5440 | 5441 | .layui-slider-wrap { 5442 | width: 36px; 5443 | height: 36px; 5444 | position: absolute; 5445 | top: -16px; 5446 | -webkit-transform: translateX(-50%); 5447 | transform: translateX(-50%); 5448 | z-index: 10; 5449 | text-align: center 5450 | } 5451 | 5452 | .layui-slider-wrap-btn { 5453 | width: 12px; 5454 | height: 12px; 5455 | border-radius: 50%; 5456 | background: #FFF; 5457 | display: inline-block; 5458 | vertical-align: middle; 5459 | cursor: pointer; 5460 | transition: .3s 5461 | } 5462 | 5463 | .layui-slider-wrap:after { 5464 | content: ""; 5465 | height: 100%; 5466 | display: inline-block; 5467 | vertical-align: middle 5468 | } 5469 | 5470 | .layui-slider-wrap-btn.layui-slider-hover, 5471 | .layui-slider-wrap-btn:hover { 5472 | transform: scale(1.2) 5473 | } 5474 | 5475 | .layui-slider-wrap-btn.layui-disabled:hover { 5476 | transform: scale(1)!important 5477 | } 5478 | 5479 | .layui-slider-tips { 5480 | position: absolute; 5481 | top: -42px; 5482 | z-index: 66666666; 5483 | white-space: nowrap; 5484 | display: none; 5485 | -webkit-transform: translateX(-50%); 5486 | transform: translateX(-50%); 5487 | color: #FFF; 5488 | background: #000; 5489 | border-radius: 3px; 5490 | height: 25px; 5491 | line-height: 25px; 5492 | padding: 0 10px 5493 | } 5494 | 5495 | .layui-slider-tips:after { 5496 | content: ""; 5497 | position: absolute; 5498 | bottom: -12px; 5499 | left: 50%; 5500 | margin-left: -6px; 5501 | width: 0; 5502 | height: 0; 5503 | border-width: 6px; 5504 | border-style: solid; 5505 | border-color: #000 transparent transparent 5506 | } 5507 | 5508 | .layui-slider-input { 5509 | width: 70px; 5510 | height: 32px; 5511 | border: 1px solid #eee; 5512 | border-radius: 3px; 5513 | font-size: 16px; 5514 | line-height: 32px; 5515 | position: absolute; 5516 | right: 0; 5517 | top: -14px 5518 | } 5519 | 5520 | .layui-slider-input-btn { 5521 | position: absolute; 5522 | top: 0; 5523 | right: 0; 5524 | width: 20px; 5525 | height: 100%; 5526 | border-left: 1px solid #eee 5527 | } 5528 | 5529 | .layui-slider-input-btn i { 5530 | cursor: pointer; 5531 | position: absolute; 5532 | right: 0; 5533 | bottom: 0; 5534 | width: 20px; 5535 | height: 50%; 5536 | font-size: 12px; 5537 | line-height: 16px; 5538 | text-align: center; 5539 | color: #999 5540 | } 5541 | 5542 | .layui-slider-input-btn i:first-child { 5543 | top: 0; 5544 | border-bottom: 1px solid #eee 5545 | } 5546 | 5547 | .layui-slider-input-txt { 5548 | height: 100%; 5549 | font-size: 14px 5550 | } 5551 | 5552 | .layui-slider-input-txt input { 5553 | height: 100%; 5554 | border: none 5555 | } 5556 | 5557 | .layui-slider-input-btn i:hover { 5558 | color: #009688 5559 | } 5560 | 5561 | .layui-slider-vertical { 5562 | width: 4px; 5563 | margin-left: 33px 5564 | } 5565 | 5566 | .layui-slider-vertical .layui-slider-bar { 5567 | width: 4px 5568 | } 5569 | 5570 | .layui-slider-vertical .layui-slider-step { 5571 | top: auto; 5572 | left: 0; 5573 | -webkit-transform: translateY(50%); 5574 | transform: translateY(50%) 5575 | } 5576 | 5577 | .layui-slider-vertical .layui-slider-wrap { 5578 | top: auto; 5579 | left: -16px; 5580 | -webkit-transform: translateY(50%); 5581 | transform: translateY(50%) 5582 | } 5583 | 5584 | .layui-slider-vertical .layui-slider-tips { 5585 | top: auto; 5586 | left: 2px 5587 | } 5588 | 5589 | @media \0screen { 5590 | .layui-slider-wrap-btn { 5591 | margin-left: -20px 5592 | } 5593 | .layui-slider-vertical .layui-slider-wrap-btn { 5594 | margin-left: 0; 5595 | margin-bottom: -20px 5596 | } 5597 | .layui-slider-vertical .layui-slider-tips { 5598 | margin-left: -8px 5599 | } 5600 | .layui-slider>span { 5601 | margin-left: 8px 5602 | } 5603 | } 5604 | 5605 | .layui-tree { 5606 | line-height: 22px 5607 | } 5608 | 5609 | .layui-tree .layui-form-checkbox { 5610 | margin: 0!important 5611 | } 5612 | 5613 | .layui-tree-set { 5614 | width: 100%; 5615 | position: relative 5616 | } 5617 | 5618 | .layui-tree-pack { 5619 | display: none; 5620 | padding-left: 20px; 5621 | position: relative 5622 | } 5623 | 5624 | .layui-tree-iconClick, 5625 | .layui-tree-main { 5626 | display: inline-block; 5627 | vertical-align: middle 5628 | } 5629 | 5630 | .layui-tree-line .layui-tree-pack { 5631 | padding-left: 27px 5632 | } 5633 | 5634 | .layui-tree-line .layui-tree-set .layui-tree-set:after { 5635 | content: ""; 5636 | position: absolute; 5637 | top: 14px; 5638 | left: -9px; 5639 | width: 17px; 5640 | height: 0; 5641 | border-top: 1px dotted #c0c4cc 5642 | } 5643 | 5644 | .layui-tree-entry { 5645 | position: relative; 5646 | padding: 3px 0; 5647 | height: 20px; 5648 | white-space: nowrap 5649 | } 5650 | 5651 | .layui-tree-entry:hover { 5652 | background-color: #eee 5653 | } 5654 | 5655 | .layui-tree-line .layui-tree-entry:hover { 5656 | background-color: rgba(0, 0, 0, 0) 5657 | } 5658 | 5659 | .layui-tree-line .layui-tree-entry:hover .layui-tree-txt { 5660 | color: #999; 5661 | text-decoration: underline; 5662 | transition: .3s 5663 | } 5664 | 5665 | .layui-tree-main { 5666 | cursor: pointer; 5667 | padding-right: 10px 5668 | } 5669 | 5670 | .layui-tree-line .layui-tree-set:before { 5671 | content: ""; 5672 | position: absolute; 5673 | top: 0; 5674 | left: -9px; 5675 | width: 0; 5676 | height: 100%; 5677 | border-left: 1px dotted #c0c4cc 5678 | } 5679 | 5680 | .layui-tree-line .layui-tree-set.layui-tree-setLineShort:before { 5681 | height: 13px 5682 | } 5683 | 5684 | .layui-tree-line .layui-tree-set.layui-tree-setHide:before { 5685 | height: 0 5686 | } 5687 | 5688 | .layui-tree-iconClick { 5689 | position: relative; 5690 | height: 20px; 5691 | line-height: 20px; 5692 | margin: 0 10px; 5693 | color: #c0c4cc 5694 | } 5695 | 5696 | .layui-tree-icon { 5697 | height: 12px; 5698 | line-height: 12px; 5699 | width: 12px; 5700 | text-align: center; 5701 | border: 1px solid #c0c4cc 5702 | } 5703 | 5704 | .layui-tree-iconClick .layui-icon { 5705 | font-size: 18px 5706 | } 5707 | 5708 | .layui-tree-icon .layui-icon { 5709 | font-size: 12px; 5710 | color: #666 5711 | } 5712 | 5713 | .layui-tree-iconArrow { 5714 | padding: 0 5px 5715 | } 5716 | 5717 | .layui-tree-iconArrow:after { 5718 | content: ""; 5719 | position: absolute; 5720 | left: 4px; 5721 | top: 3px; 5722 | z-index: 100; 5723 | width: 0; 5724 | height: 0; 5725 | border-width: 5px; 5726 | border-style: solid; 5727 | border-color: transparent transparent transparent #c0c4cc; 5728 | transition: .5s 5729 | } 5730 | 5731 | .layui-tree-btnGroup, 5732 | .layui-tree-editInput { 5733 | position: relative; 5734 | vertical-align: middle; 5735 | display: inline-block 5736 | } 5737 | 5738 | .layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after { 5739 | transform: rotate(90deg) translate(3px, 4px) 5740 | } 5741 | 5742 | .layui-tree-txt { 5743 | display: inline-block; 5744 | vertical-align: middle; 5745 | color: #555 5746 | } 5747 | 5748 | .layui-tree-search { 5749 | margin-bottom: 15px; 5750 | color: #666 5751 | } 5752 | 5753 | .layui-tree-btnGroup .layui-icon { 5754 | display: inline-block; 5755 | vertical-align: middle; 5756 | padding: 0 2px; 5757 | cursor: pointer 5758 | } 5759 | 5760 | .layui-tree-btnGroup .layui-icon:hover { 5761 | color: #999; 5762 | transition: .3s 5763 | } 5764 | 5765 | .layui-tree-entry:hover .layui-tree-btnGroup { 5766 | visibility: visible 5767 | } 5768 | 5769 | .layui-tree-editInput { 5770 | height: 20px; 5771 | line-height: 20px; 5772 | padding: 0 3px; 5773 | border: none; 5774 | background-color: rgba(0, 0, 0, .05) 5775 | } 5776 | 5777 | .layui-tree-emptyText { 5778 | text-align: center; 5779 | color: #999 5780 | } 5781 | 5782 | .layui-anim { 5783 | -webkit-animation-duration: .3s; 5784 | -webkit-animation-fill-mode: both; 5785 | animation-duration: .3s; 5786 | animation-fill-mode: both 5787 | } 5788 | 5789 | .layui-anim.layui-icon { 5790 | display: inline-block 5791 | } 5792 | 5793 | .layui-anim-loop { 5794 | -webkit-animation-iteration-count: infinite; 5795 | animation-iteration-count: infinite 5796 | } 5797 | 5798 | .layui-trans, 5799 | .layui-trans a { 5800 | transition: all .2s; 5801 | -webkit-transition: all .2s 5802 | } 5803 | 5804 | @-webkit-keyframes layui-rotate { 5805 | from { 5806 | -webkit-transform: rotate(0) 5807 | } 5808 | to { 5809 | -webkit-transform: rotate(360deg) 5810 | } 5811 | } 5812 | 5813 | @keyframes layui-rotate { 5814 | from { 5815 | transform: rotate(0) 5816 | } 5817 | to { 5818 | transform: rotate(360deg) 5819 | } 5820 | } 5821 | 5822 | .layui-anim-rotate { 5823 | -webkit-animation-name: layui-rotate; 5824 | animation-name: layui-rotate; 5825 | -webkit-animation-duration: 1s; 5826 | animation-duration: 1s; 5827 | -webkit-animation-timing-function: linear; 5828 | animation-timing-function: linear 5829 | } 5830 | 5831 | @-webkit-keyframes layui-up { 5832 | from { 5833 | -webkit-transform: translate3d(0, 100%, 0); 5834 | opacity: .3 5835 | } 5836 | to { 5837 | -webkit-transform: translate3d(0, 0, 0); 5838 | opacity: 1 5839 | } 5840 | } 5841 | 5842 | @keyframes layui-up { 5843 | from { 5844 | transform: translate3d(0, 100%, 0); 5845 | opacity: .3 5846 | } 5847 | to { 5848 | transform: translate3d(0, 0, 0); 5849 | opacity: 1 5850 | } 5851 | } 5852 | 5853 | .layui-anim-up { 5854 | -webkit-animation-name: layui-up; 5855 | animation-name: layui-up 5856 | } 5857 | 5858 | @-webkit-keyframes layui-upbit { 5859 | from { 5860 | -webkit-transform: translate3d(0, 15px, 0); 5861 | opacity: .3 5862 | } 5863 | to { 5864 | -webkit-transform: translate3d(0, 0, 0); 5865 | opacity: 1 5866 | } 5867 | } 5868 | 5869 | @keyframes layui-upbit { 5870 | from { 5871 | transform: translate3d(0, 15px, 0); 5872 | opacity: .3 5873 | } 5874 | to { 5875 | transform: translate3d(0, 0, 0); 5876 | opacity: 1 5877 | } 5878 | } 5879 | 5880 | .layui-anim-upbit { 5881 | -webkit-animation-name: layui-upbit; 5882 | animation-name: layui-upbit 5883 | } 5884 | 5885 | @keyframes layui-down { 5886 | 0% { 5887 | opacity: .3; 5888 | transform: translate3d(0, -100%, 0) 5889 | } 5890 | 100% { 5891 | opacity: 1; 5892 | transform: translate3d(0, 0, 0) 5893 | } 5894 | } 5895 | 5896 | .layui-anim-down { 5897 | animation-name: layui-down 5898 | } 5899 | 5900 | @keyframes layui-downbit { 5901 | 0% { 5902 | opacity: .3; 5903 | transform: translate3d(0, -5px, 0) 5904 | } 5905 | 100% { 5906 | opacity: 1; 5907 | transform: translate3d(0, 0, 0) 5908 | } 5909 | } 5910 | 5911 | .layui-anim-downbit { 5912 | animation-name: layui-downbit 5913 | } 5914 | 5915 | @-webkit-keyframes layui-scale { 5916 | 0% { 5917 | opacity: .3; 5918 | -webkit-transform: scale(.5) 5919 | } 5920 | 100% { 5921 | opacity: 1; 5922 | -webkit-transform: scale(1) 5923 | } 5924 | } 5925 | 5926 | @keyframes layui-scale { 5927 | 0% { 5928 | opacity: .3; 5929 | -ms-transform: scale(.5); 5930 | transform: scale(.5) 5931 | } 5932 | 100% { 5933 | opacity: 1; 5934 | -ms-transform: scale(1); 5935 | transform: scale(1) 5936 | } 5937 | } 5938 | 5939 | .layui-anim-scale { 5940 | -webkit-animation-name: layui-scale; 5941 | animation-name: layui-scale 5942 | } 5943 | 5944 | @-webkit-keyframes layui-scale-spring { 5945 | 0% { 5946 | opacity: .5; 5947 | -webkit-transform: scale(.5) 5948 | } 5949 | 80% { 5950 | opacity: .8; 5951 | -webkit-transform: scale(1.1) 5952 | } 5953 | 100% { 5954 | opacity: 1; 5955 | -webkit-transform: scale(1) 5956 | } 5957 | } 5958 | 5959 | @keyframes layui-scale-spring { 5960 | 0% { 5961 | opacity: .5; 5962 | transform: scale(.5) 5963 | } 5964 | 80% { 5965 | opacity: .8; 5966 | transform: scale(1.1) 5967 | } 5968 | 100% { 5969 | opacity: 1; 5970 | transform: scale(1) 5971 | } 5972 | } 5973 | 5974 | .layui-anim-scaleSpring { 5975 | -webkit-animation-name: layui-scale-spring; 5976 | animation-name: layui-scale-spring 5977 | } 5978 | 5979 | @keyframes layui-scalesmall { 5980 | 0% { 5981 | opacity: .3; 5982 | transform: scale(1.5) 5983 | } 5984 | 100% { 5985 | opacity: 1; 5986 | transform: scale(1) 5987 | } 5988 | } 5989 | 5990 | .layui-anim-scalesmall { 5991 | animation-name: layui-scalesmall 5992 | } 5993 | 5994 | @keyframes layui-scalesmall-spring { 5995 | 0% { 5996 | opacity: .3; 5997 | transform: scale(1.5) 5998 | } 5999 | 80% { 6000 | opacity: .8; 6001 | transform: scale(.9) 6002 | } 6003 | 100% { 6004 | opacity: 1; 6005 | transform: scale(1) 6006 | } 6007 | } 6008 | 6009 | .layui-anim-scalesmall-spring { 6010 | animation-name: layui-scalesmall-spring 6011 | } 6012 | 6013 | @-webkit-keyframes layui-fadein { 6014 | 0% { 6015 | opacity: 0 6016 | } 6017 | 100% { 6018 | opacity: 1 6019 | } 6020 | } 6021 | 6022 | @keyframes layui-fadein { 6023 | 0% { 6024 | opacity: 0 6025 | } 6026 | 100% { 6027 | opacity: 1 6028 | } 6029 | } 6030 | 6031 | .layui-anim-fadein { 6032 | -webkit-animation-name: layui-fadein; 6033 | animation-name: layui-fadein 6034 | } 6035 | 6036 | @-webkit-keyframes layui-fadeout { 6037 | 0% { 6038 | opacity: 1 6039 | } 6040 | 100% { 6041 | opacity: 0 6042 | } 6043 | } 6044 | 6045 | @keyframes layui-fadeout { 6046 | 0% { 6047 | opacity: 1 6048 | } 6049 | 100% { 6050 | opacity: 0 6051 | } 6052 | } 6053 | 6054 | .layui-anim-fadeout { 6055 | -webkit-animation-name: layui-fadeout; 6056 | animation-name: layui-fadeout 6057 | } -------------------------------------------------------------------------------- /static/result/placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicPhoenix/EIS/8ad3f6a4c937e1246797a564f7cf788f6ea994bb/static/result/placeholder -------------------------------------------------------------------------------- /views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Easy Input Shaper 7 | 50 | 75 | 76 | 77 | 96 | 97 | 98 |
99 |
100 | 101 | 117 |
118 |
119 | 120 |
121 |
122 | 123 | 100% 124 |
125 |
126 | X 127 | y 128 |
129 |
130 | 131 | 132 | 133 |
134 |
135 | 246 | 247 | 248 | --------------------------------------------------------------------------------